2022-06-11 07:24:29 +02:00
|
|
|
#[derive(Debug, Args)]
|
2021-02-13 04:46:22 +01:00
|
|
|
struct CommonOpt {
|
|
|
|
/// Path to the server's configuration file. If it does not exist, it will be created.
|
2023-07-13 04:19:28 +02:00
|
|
|
#[clap(short, long = "config", env = "KANIDM_CONFIG")]
|
2023-07-24 02:05:10 +02:00
|
|
|
config_path: Option<PathBuf>,
|
2022-06-26 10:02:16 +02:00
|
|
|
/// Log format (still in very early development)
|
|
|
|
#[clap(short, long = "output", env = "KANIDM_OUTPUT", default_value="text")]
|
|
|
|
output_mode: String,
|
2021-02-13 04:46:22 +01:00
|
|
|
}
|
|
|
|
|
2022-06-11 07:24:29 +02:00
|
|
|
#[derive(Debug, Args)]
|
2021-02-13 04:46:22 +01:00
|
|
|
struct BackupOpt {
|
2023-07-13 04:19:28 +02:00
|
|
|
#[clap(value_parser)]
|
2021-02-13 04:46:22 +01:00
|
|
|
/// Output path for the backup content.
|
|
|
|
path: PathBuf,
|
2022-06-11 07:24:29 +02:00
|
|
|
#[clap(flatten)]
|
2021-02-13 04:46:22 +01:00
|
|
|
commonopts: CommonOpt,
|
|
|
|
}
|
|
|
|
|
2022-06-11 07:24:29 +02:00
|
|
|
#[derive(Debug, Args)]
|
2021-02-13 04:46:22 +01:00
|
|
|
struct RestoreOpt {
|
2023-07-13 04:19:28 +02:00
|
|
|
#[clap(value_parser)]
|
2021-05-09 14:06:58 +02:00
|
|
|
/// Restore from this path. Should be created with "backup".
|
2021-02-13 04:46:22 +01:00
|
|
|
path: PathBuf,
|
2022-06-11 07:24:29 +02:00
|
|
|
#[clap(flatten)]
|
2021-02-13 04:46:22 +01:00
|
|
|
commonopts: CommonOpt,
|
|
|
|
}
|
|
|
|
|
2022-07-07 05:03:08 +02:00
|
|
|
#[derive(Debug, Subcommand)]
|
|
|
|
enum DomainSettingsCmds {
|
|
|
|
#[clap(name = "rename")]
|
|
|
|
/// Change the IDM domain name
|
|
|
|
DomainChange(CommonOpt),
|
|
|
|
}
|
|
|
|
|
|
|
|
#[derive(Debug, Subcommand)]
|
|
|
|
enum DbCommands {
|
|
|
|
#[clap(name = "vacuum")]
|
|
|
|
/// Vacuum the database to reclaim space or change db_fs_type/page_size (offline)
|
|
|
|
Vacuum(CommonOpt),
|
|
|
|
#[clap(name = "backup")]
|
|
|
|
/// Backup the database content (offline)
|
|
|
|
Backup(BackupOpt),
|
|
|
|
#[clap(name = "restore")]
|
|
|
|
/// Restore the database content (offline)
|
|
|
|
Restore(RestoreOpt),
|
|
|
|
#[clap(name = "verify")]
|
|
|
|
/// Verify database and entity consistency.
|
|
|
|
Verify(CommonOpt),
|
|
|
|
#[clap(name = "reindex")]
|
|
|
|
/// Reindex the database (offline)
|
|
|
|
Reindex(CommonOpt),
|
|
|
|
}
|
|
|
|
|
2022-06-11 07:24:29 +02:00
|
|
|
#[derive(Debug, Args)]
|
2021-07-01 06:51:25 +02:00
|
|
|
struct DbScanListIndex {
|
|
|
|
/// The name of the index to list
|
|
|
|
index_name: String,
|
2022-06-11 07:24:29 +02:00
|
|
|
#[clap(flatten)]
|
2021-07-01 06:51:25 +02:00
|
|
|
commonopts: CommonOpt,
|
|
|
|
}
|
|
|
|
|
2023-01-23 10:58:13 +01:00
|
|
|
|
|
|
|
#[derive(Debug,Parser)]
|
|
|
|
struct HealthCheckArgs {
|
|
|
|
/// Disable TLS verification
|
|
|
|
#[clap(short, long, action)]
|
2023-06-28 11:41:24 +02:00
|
|
|
verify_tls: bool,
|
|
|
|
/// Check the 'origin' URL from the server configuration file, instead of the 'address'
|
|
|
|
#[clap(short='O', long, action)]
|
|
|
|
check_origin: bool,
|
2023-01-23 10:58:13 +01:00
|
|
|
#[clap(flatten)]
|
|
|
|
commonopts: CommonOpt,
|
|
|
|
}
|
|
|
|
|
2022-06-11 07:24:29 +02:00
|
|
|
#[derive(Debug, Args)]
|
2021-07-01 06:51:25 +02:00
|
|
|
struct DbScanGetId2Entry {
|
|
|
|
/// The id of the entry to display
|
|
|
|
id: u64,
|
2022-06-11 07:24:29 +02:00
|
|
|
#[clap(flatten)]
|
2021-07-01 06:51:25 +02:00
|
|
|
commonopts: CommonOpt,
|
|
|
|
}
|
|
|
|
|
2022-06-11 07:24:29 +02:00
|
|
|
#[derive(Debug, Subcommand)]
|
2021-07-01 06:51:25 +02:00
|
|
|
enum DbScanOpt {
|
2023-03-02 03:47:23 +01:00
|
|
|
#[clap(name = "list-all-indexes")]
|
2021-07-01 06:51:25 +02:00
|
|
|
/// List all index tables that exist on the system.
|
|
|
|
ListIndexes(CommonOpt),
|
2023-03-02 03:47:23 +01:00
|
|
|
#[clap(name = "list-index")]
|
2021-07-01 06:51:25 +02:00
|
|
|
/// List all content of a named index
|
|
|
|
ListIndex(DbScanListIndex),
|
|
|
|
// #[structopt(name = "get_index")]
|
|
|
|
// /// Display the content of a single index key
|
|
|
|
// GetIndex(DbScanGetIndex),
|
2023-03-02 03:47:23 +01:00
|
|
|
#[clap(name = "list-id2entry")]
|
2021-07-01 06:51:25 +02:00
|
|
|
/// List all id2entry values with reduced entry content
|
|
|
|
ListId2Entry(CommonOpt),
|
2023-03-02 03:47:23 +01:00
|
|
|
#[clap(name = "get-id2entry")]
|
2021-07-01 06:51:25 +02:00
|
|
|
/// View the data of a specific entry from id2entry
|
|
|
|
GetId2Entry(DbScanGetId2Entry),
|
2023-03-02 03:47:23 +01:00
|
|
|
#[clap(name = "list-index-analysis")]
|
2021-07-01 06:51:25 +02:00
|
|
|
/// List all content of index analysis
|
|
|
|
ListIndexAnalysis(CommonOpt),
|
2023-08-17 07:52:12 +02:00
|
|
|
#[clap(name = "quarantine-id2entry")]
|
|
|
|
/// Given an entry id, quarantine the entry in a hidden db partition
|
|
|
|
QuarantineId2Entry {
|
|
|
|
/// The id of the entry to display
|
|
|
|
id: u64,
|
|
|
|
#[clap(flatten)]
|
|
|
|
commonopts: CommonOpt,
|
|
|
|
},
|
|
|
|
#[clap(name = "list-quarantined")]
|
|
|
|
/// List the entries in quarantine
|
|
|
|
ListQuarantined {
|
|
|
|
#[clap(flatten)]
|
|
|
|
commonopts: CommonOpt,
|
|
|
|
},
|
|
|
|
#[clap(name = "restore-quarantined")]
|
|
|
|
/// Given an entry id, restore the entry from the hidden db partition
|
|
|
|
RestoreQuarantined {
|
|
|
|
/// The id of the entry to display
|
|
|
|
id: u64,
|
|
|
|
#[clap(flatten)]
|
|
|
|
commonopts: CommonOpt,
|
|
|
|
},
|
2021-07-01 06:51:25 +02:00
|
|
|
}
|
|
|
|
|
2022-06-11 07:24:29 +02:00
|
|
|
#[derive(Debug, Parser)]
|
2023-07-13 04:19:28 +02:00
|
|
|
#[command(name="kanidmd")]
|
2022-06-11 07:24:29 +02:00
|
|
|
struct KanidmdParser {
|
2023-07-13 04:19:28 +02:00
|
|
|
#[command(subcommand)]
|
2022-06-11 07:24:29 +02:00
|
|
|
commands: KanidmdOpt,
|
|
|
|
}
|
|
|
|
|
|
|
|
#[derive(Debug, Subcommand)]
|
2021-02-13 04:46:22 +01:00
|
|
|
enum KanidmdOpt {
|
2022-06-11 07:24:29 +02:00
|
|
|
#[clap(name = "server")]
|
2021-02-13 04:46:22 +01:00
|
|
|
/// Start the IDM Server
|
|
|
|
Server(CommonOpt),
|
2022-06-11 07:24:29 +02:00
|
|
|
#[clap(name = "configtest")]
|
2022-02-15 07:17:43 +01:00
|
|
|
/// Test the IDM Server configuration, without starting network listeners.
|
|
|
|
ConfigTest(CommonOpt),
|
2023-06-19 12:51:44 +02:00
|
|
|
#[clap(name = "cert-generate")]
|
|
|
|
/// Create a self-signed ca and tls certificate in the locations listed from the
|
|
|
|
/// configuration. These certificates should *not* be used in production, they
|
|
|
|
/// are for testing and evaluation only!
|
|
|
|
CertGenerate(CommonOpt),
|
2023-03-02 03:47:23 +01:00
|
|
|
#[clap(name = "recover-account")]
|
2021-02-13 04:46:22 +01:00
|
|
|
/// Recover an account's password
|
2023-07-24 02:05:10 +02:00
|
|
|
RecoverAccount {
|
|
|
|
#[clap(value_parser)]
|
|
|
|
/// The account name to recover credentials for.
|
|
|
|
name: String,
|
|
|
|
#[clap(flatten)]
|
|
|
|
commonopts: CommonOpt,
|
|
|
|
},
|
2023-09-29 04:02:13 +02:00
|
|
|
/// Display this server's replication certificate
|
|
|
|
ShowReplicationCertificate {
|
|
|
|
#[clap(flatten)]
|
|
|
|
commonopts: CommonOpt,
|
|
|
|
},
|
|
|
|
/// Renew this server's replication certificate
|
|
|
|
RenewReplicationCertificate {
|
|
|
|
#[clap(flatten)]
|
|
|
|
commonopts: CommonOpt,
|
|
|
|
},
|
2022-06-11 07:24:29 +02:00
|
|
|
// #[clap(name = "reset_server_id")]
|
2021-02-13 04:46:22 +01:00
|
|
|
// ResetServerId(CommonOpt),
|
2023-03-02 03:47:23 +01:00
|
|
|
#[clap(name = "db-scan")]
|
2021-07-01 06:51:25 +02:00
|
|
|
/// Inspect the internal content of the database datastructures.
|
2022-06-11 07:24:29 +02:00
|
|
|
DbScan {
|
|
|
|
#[clap(subcommand)]
|
|
|
|
commands: DbScanOpt,
|
|
|
|
},
|
2022-07-07 05:03:08 +02:00
|
|
|
/// Database maintenance, backups, restoration etc.
|
|
|
|
#[clap(name = "database")]
|
|
|
|
Database {
|
|
|
|
#[clap(subcommand)]
|
|
|
|
commands: DbCommands,
|
|
|
|
},
|
|
|
|
/// Change domain settings
|
|
|
|
#[clap(name = "domain")]
|
|
|
|
DomainSettings {
|
|
|
|
#[clap(subcommand)]
|
|
|
|
commands: DomainSettingsCmds,
|
|
|
|
},
|
2023-07-24 02:05:10 +02:00
|
|
|
|
2023-01-23 10:58:13 +01:00
|
|
|
/// Load the server config and check services are listening
|
|
|
|
#[clap(name = "healthcheck")]
|
|
|
|
HealthCheck(HealthCheckArgs),
|
|
|
|
|
2022-08-18 02:36:45 +02:00
|
|
|
/// Print the program version and exit
|
|
|
|
#[clap(name="version")]
|
|
|
|
Version(CommonOpt)
|
2021-02-13 04:46:22 +01:00
|
|
|
}
|