2021-11-23 09:45:38 +00:00
package commands
import (
2022-06-14 12:40:00 +00:00
"fmt"
"strings"
2021-11-23 09:45:38 +00:00
"github.com/spf13/cobra"
2022-04-07 23:01:01 +00:00
"github.com/authelia/authelia/v4/internal/configuration/schema"
2021-11-23 09:45:38 +00:00
)
2022-12-22 00:21:29 +00:00
func newStorageCmd ( ctx * CmdCtx ) ( cmd * cobra . Command ) {
2021-11-23 09:45:38 +00:00
cmd = & cobra . Command {
2022-12-22 00:21:29 +00:00
Use : "storage" ,
Short : cmdAutheliaStorageShort ,
Long : cmdAutheliaStorageLong ,
Example : cmdAutheliaStorageExample ,
PersistentPreRunE : ctx . ChainRunE (
2022-12-23 04:00:23 +00:00
ctx . ConfigStorageCommandLineConfigRunE ,
2022-12-22 00:21:29 +00:00
ctx . ConfigLoadRunE ,
2022-12-23 04:00:23 +00:00
ctx . ConfigValidateStorageRunE ,
2022-12-22 00:21:29 +00:00
ctx . LoadProvidersStorageRunE ,
) ,
2022-12-23 04:00:23 +00:00
Args : cobra . NoArgs ,
2022-09-01 02:24:47 +00:00
DisableAutoGenTag : true ,
2021-11-23 09:45:38 +00:00
}
2022-11-25 12:44:55 +00:00
cmd . PersistentFlags ( ) . String ( cmdFlagNameEncryptionKey , "" , "the storage encryption key to use" )
cmd . PersistentFlags ( ) . String ( cmdFlagNameSQLite3Path , "" , "the SQLite database path" )
cmd . PersistentFlags ( ) . String ( cmdFlagNameMySQLHost , "" , "the MySQL hostname" )
cmd . PersistentFlags ( ) . Int ( cmdFlagNameMySQLPort , 3306 , "the MySQL port" )
cmd . PersistentFlags ( ) . String ( cmdFlagNameMySQLDatabase , "authelia" , "the MySQL database name" )
cmd . PersistentFlags ( ) . String ( cmdFlagNameMySQLUsername , "authelia" , "the MySQL username" )
cmd . PersistentFlags ( ) . String ( cmdFlagNameMySQLPassword , "" , "the MySQL password" )
cmd . PersistentFlags ( ) . String ( cmdFlagNamePostgreSQLHost , "" , "the PostgreSQL hostname" )
cmd . PersistentFlags ( ) . Int ( cmdFlagNamePostgreSQLPort , 5432 , "the PostgreSQL port" )
cmd . PersistentFlags ( ) . String ( cmdFlagNamePostgreSQLDatabase , "authelia" , "the PostgreSQL database name" )
cmd . PersistentFlags ( ) . String ( cmdFlagNamePostgreSQLSchema , "public" , "the PostgreSQL schema name" )
cmd . PersistentFlags ( ) . String ( cmdFlagNamePostgreSQLUsername , "authelia" , "the PostgreSQL username" )
cmd . PersistentFlags ( ) . String ( cmdFlagNamePostgreSQLPassword , "" , "the PostgreSQL password" )
2021-12-02 05:36:03 +00:00
cmd . PersistentFlags ( ) . String ( "postgres.ssl.mode" , "disable" , "the PostgreSQL ssl mode" )
cmd . PersistentFlags ( ) . String ( "postgres.ssl.root_certificate" , "" , "the PostgreSQL ssl root certificate file location" )
cmd . PersistentFlags ( ) . String ( "postgres.ssl.certificate" , "" , "the PostgreSQL ssl certificate file location" )
cmd . PersistentFlags ( ) . String ( "postgres.ssl.key" , "" , "the PostgreSQL ssl key file location" )
2021-11-23 09:45:38 +00:00
cmd . AddCommand (
2022-12-22 00:21:29 +00:00
newStorageMigrateCmd ( ctx ) ,
newStorageSchemaInfoCmd ( ctx ) ,
newStorageEncryptionCmd ( ctx ) ,
newStorageUserCmd ( ctx ) ,
2022-04-09 07:13:19 +00:00
)
return cmd
}
2022-12-22 00:21:29 +00:00
func newStorageEncryptionCmd ( ctx * CmdCtx ) ( cmd * cobra . Command ) {
2022-04-09 07:13:19 +00:00
cmd = & cobra . Command {
2022-06-14 12:40:00 +00:00
Use : "encryption" ,
Short : cmdAutheliaStorageEncryptionShort ,
Long : cmdAutheliaStorageEncryptionLong ,
Example : cmdAutheliaStorageEncryptionExample ,
2022-12-23 04:00:23 +00:00
Args : cobra . NoArgs ,
2022-09-01 02:24:47 +00:00
DisableAutoGenTag : true ,
2022-04-09 07:13:19 +00:00
}
cmd . AddCommand (
2022-12-22 00:21:29 +00:00
newStorageEncryptionChangeKeyCmd ( ctx ) ,
newStorageEncryptionCheckCmd ( ctx ) ,
2021-11-25 01:56:58 +00:00
)
return cmd
}
2022-12-22 00:21:29 +00:00
func newStorageEncryptionCheckCmd ( ctx * CmdCtx ) ( cmd * cobra . Command ) {
2022-04-09 07:13:19 +00:00
cmd = & cobra . Command {
2022-06-14 12:40:00 +00:00
Use : "check" ,
Short : cmdAutheliaStorageEncryptionCheckShort ,
Long : cmdAutheliaStorageEncryptionCheckLong ,
Example : cmdAutheliaStorageEncryptionCheckExample ,
2022-12-22 00:21:29 +00:00
RunE : ctx . StorageSchemaEncryptionCheckRunE ,
2022-12-23 04:00:23 +00:00
Args : cobra . NoArgs ,
2022-09-01 02:24:47 +00:00
DisableAutoGenTag : true ,
2022-04-09 07:13:19 +00:00
}
2022-11-25 12:44:55 +00:00
cmd . Flags ( ) . Bool ( cmdFlagNameVerbose , false , "enables verbose checking of every row of encrypted data" )
2022-04-09 07:13:19 +00:00
return cmd
}
2022-12-22 00:21:29 +00:00
func newStorageEncryptionChangeKeyCmd ( ctx * CmdCtx ) ( cmd * cobra . Command ) {
2022-04-09 07:13:19 +00:00
cmd = & cobra . Command {
2022-06-14 12:40:00 +00:00
Use : "change-key" ,
Short : cmdAutheliaStorageEncryptionChangeKeyShort ,
Long : cmdAutheliaStorageEncryptionChangeKeyLong ,
Example : cmdAutheliaStorageEncryptionChangeKeyExample ,
2022-12-22 00:21:29 +00:00
RunE : ctx . StorageSchemaEncryptionChangeKeyRunE ,
2022-12-23 04:00:23 +00:00
Args : cobra . NoArgs ,
2022-09-01 02:24:47 +00:00
DisableAutoGenTag : true ,
2022-04-09 07:13:19 +00:00
}
2022-11-25 12:44:55 +00:00
cmd . Flags ( ) . String ( cmdFlagNameNewEncryptionKey , "" , "the new key to encrypt the data with" )
2022-04-09 07:13:19 +00:00
return cmd
}
2022-12-22 00:21:29 +00:00
func newStorageUserCmd ( ctx * CmdCtx ) ( cmd * cobra . Command ) {
2022-04-09 07:13:19 +00:00
cmd = & cobra . Command {
2022-06-14 12:40:00 +00:00
Use : "user" ,
Short : cmdAutheliaStorageUserShort ,
Long : cmdAutheliaStorageUserLong ,
Example : cmdAutheliaStorageUserExample ,
2022-12-23 04:00:23 +00:00
Args : cobra . NoArgs ,
2022-09-01 02:24:47 +00:00
DisableAutoGenTag : true ,
2022-04-09 07:13:19 +00:00
}
2022-06-14 12:40:00 +00:00
cmd . AddCommand (
2022-12-22 00:21:29 +00:00
newStorageUserIdentifiersCmd ( ctx ) ,
newStorageUserTOTPCmd ( ctx ) ,
2022-12-23 04:00:23 +00:00
newStorageUserWebauthnCmd ( ctx ) ,
2022-06-14 12:40:00 +00:00
)
2022-04-09 07:13:19 +00:00
return cmd
}
2022-12-22 00:21:29 +00:00
func newStorageUserIdentifiersCmd ( ctx * CmdCtx ) ( cmd * cobra . Command ) {
2022-04-25 08:49:18 +00:00
cmd = & cobra . Command {
2022-06-14 12:40:00 +00:00
Use : "identifiers" ,
Short : cmdAutheliaStorageUserIdentifiersShort ,
Long : cmdAutheliaStorageUserIdentifiersLong ,
Example : cmdAutheliaStorageUserIdentifiersExample ,
2022-12-23 04:00:23 +00:00
Args : cobra . NoArgs ,
2022-09-01 02:24:47 +00:00
DisableAutoGenTag : true ,
2022-04-25 08:49:18 +00:00
}
2022-06-14 12:40:00 +00:00
cmd . AddCommand (
2022-12-22 00:21:29 +00:00
newStorageUserIdentifiersExportCmd ( ctx ) ,
newStorageUserIdentifiersImportCmd ( ctx ) ,
newStorageUserIdentifiersGenerateCmd ( ctx ) ,
newStorageUserIdentifiersAddCmd ( ctx ) ,
2022-06-14 12:40:00 +00:00
)
2022-04-25 08:49:18 +00:00
return cmd
}
2022-12-22 00:21:29 +00:00
func newStorageUserIdentifiersExportCmd ( ctx * CmdCtx ) ( cmd * cobra . Command ) {
2022-04-09 07:13:19 +00:00
cmd = & cobra . Command {
2022-12-23 04:00:23 +00:00
Use : cmdUseExport ,
2022-06-14 12:40:00 +00:00
Short : cmdAutheliaStorageUserIdentifiersExportShort ,
Long : cmdAutheliaStorageUserIdentifiersExportLong ,
Example : cmdAutheliaStorageUserIdentifiersExportExample ,
2022-12-22 00:21:29 +00:00
RunE : ctx . StorageUserIdentifiersExportRunE ,
2022-12-23 04:00:23 +00:00
Args : cobra . NoArgs ,
2022-09-01 02:24:47 +00:00
DisableAutoGenTag : true ,
2022-04-09 07:13:19 +00:00
}
2022-12-23 04:00:23 +00:00
cmd . Flags ( ) . StringP ( cmdFlagNameFile , "f" , "authelia.export.opaque-identifiers.yml" , "The file name for the YAML export" )
2022-04-09 07:13:19 +00:00
return cmd
}
2022-12-22 00:21:29 +00:00
func newStorageUserIdentifiersImportCmd ( ctx * CmdCtx ) ( cmd * cobra . Command ) {
2021-11-25 01:56:58 +00:00
cmd = & cobra . Command {
2022-12-23 04:00:23 +00:00
Use : cmdUseImportFileName ,
2022-06-14 12:40:00 +00:00
Short : cmdAutheliaStorageUserIdentifiersImportShort ,
Long : cmdAutheliaStorageUserIdentifiersImportLong ,
Example : cmdAutheliaStorageUserIdentifiersImportExample ,
2022-12-22 00:21:29 +00:00
RunE : ctx . StorageUserIdentifiersImportRunE ,
2022-12-23 04:00:23 +00:00
Args : cobra . ExactArgs ( 1 ) ,
2022-09-01 02:24:47 +00:00
DisableAutoGenTag : true ,
2021-11-25 01:56:58 +00:00
}
2021-11-23 09:45:38 +00:00
return cmd
}
2022-12-22 00:21:29 +00:00
func newStorageUserIdentifiersGenerateCmd ( ctx * CmdCtx ) ( cmd * cobra . Command ) {
2021-11-25 01:56:58 +00:00
cmd = & cobra . Command {
2022-06-14 12:40:00 +00:00
Use : "generate" ,
Short : cmdAutheliaStorageUserIdentifiersGenerateShort ,
Long : cmdAutheliaStorageUserIdentifiersGenerateLong ,
Example : cmdAutheliaStorageUserIdentifiersGenerateExample ,
2022-12-22 00:21:29 +00:00
RunE : ctx . StorageUserIdentifiersGenerateRunE ,
2022-12-23 04:00:23 +00:00
Args : cobra . NoArgs ,
2022-09-01 02:24:47 +00:00
DisableAutoGenTag : true ,
2021-11-25 01:56:58 +00:00
}
2022-11-25 12:44:55 +00:00
cmd . Flags ( ) . StringSlice ( cmdFlagNameUsers , nil , "The list of users to generate the opaque identifiers for" )
cmd . Flags ( ) . StringSlice ( cmdFlagNameServices , [ ] string { identifierServiceOpenIDConnect } , fmt . Sprintf ( "The list of services to generate the opaque identifiers for, valid values are: %s" , strings . Join ( validIdentifierServices , ", " ) ) )
cmd . Flags ( ) . StringSlice ( cmdFlagNameSectors , [ ] string { "" } , "The list of sectors to generate identifiers for" )
2021-11-25 01:56:58 +00:00
return cmd
}
2022-12-22 00:21:29 +00:00
func newStorageUserIdentifiersAddCmd ( ctx * CmdCtx ) ( cmd * cobra . Command ) {
2021-11-25 01:56:58 +00:00
cmd = & cobra . Command {
2022-06-14 12:40:00 +00:00
Use : "add <username>" ,
Short : cmdAutheliaStorageUserIdentifiersAddShort ,
Long : cmdAutheliaStorageUserIdentifiersAddLong ,
Example : cmdAutheliaStorageUserIdentifiersAddExample ,
2022-12-22 00:21:29 +00:00
RunE : ctx . StorageUserIdentifiersAddRunE ,
2022-12-23 04:00:23 +00:00
Args : cobra . ExactArgs ( 1 ) ,
2022-09-01 02:24:47 +00:00
DisableAutoGenTag : true ,
2021-11-25 01:56:58 +00:00
}
2022-11-25 12:44:55 +00:00
cmd . Flags ( ) . String ( cmdFlagNameIdentifier , "" , "The optional version 4 UUID to use, if not set a random one will be used" )
cmd . Flags ( ) . String ( cmdFlagNameService , identifierServiceOpenIDConnect , fmt . Sprintf ( "The service to add the identifier for, valid values are: %s" , strings . Join ( validIdentifierServices , ", " ) ) )
cmd . Flags ( ) . String ( cmdFlagNameSector , "" , "The sector identifier to use (should usually be blank)" )
2021-11-25 01:56:58 +00:00
return cmd
}
2022-12-23 04:00:23 +00:00
func newStorageUserWebauthnCmd ( ctx * CmdCtx ) ( cmd * cobra . Command ) {
2022-10-19 07:17:55 +00:00
cmd = & cobra . Command {
Use : "webauthn" ,
2022-12-23 04:00:23 +00:00
Short : cmdAutheliaStorageUserWebauthnShort ,
Long : cmdAutheliaStorageUserWebauthnLong ,
Example : cmdAutheliaStorageUserWebauthnExample ,
Args : cobra . NoArgs ,
2022-10-19 07:17:55 +00:00
DisableAutoGenTag : true ,
}
cmd . AddCommand (
2022-12-23 04:00:23 +00:00
newStorageUserWebauthnListCmd ( ctx ) ,
newStorageUserWebauthnDeleteCmd ( ctx ) ,
newStorageUserWebauthnExportCmd ( ctx ) ,
newStorageUserWebauthnImportCmd ( ctx ) ,
2022-10-19 07:17:55 +00:00
)
return cmd
}
2022-12-23 04:00:23 +00:00
func newStorageUserWebauthnImportCmd ( ctx * CmdCtx ) ( cmd * cobra . Command ) {
cmd = & cobra . Command {
Use : cmdUseImportFileName ,
Short : cmdAutheliaStorageUserWebauthnImportShort ,
Long : cmdAutheliaStorageUserWebauthnImportLong ,
Example : cmdAutheliaStorageUserWebauthnImportExample ,
RunE : ctx . StorageUserWebauthnImportRunE ,
Args : cobra . ExactArgs ( 1 ) ,
DisableAutoGenTag : true ,
}
return cmd
}
func newStorageUserWebauthnExportCmd ( ctx * CmdCtx ) ( cmd * cobra . Command ) {
cmd = & cobra . Command {
Use : cmdUseExport ,
Short : cmdAutheliaStorageUserWebauthnExportShort ,
Long : cmdAutheliaStorageUserWebauthnExportLong ,
Example : cmdAutheliaStorageUserWebauthnExportExample ,
RunE : ctx . StorageUserWebauthnExportRunE ,
Args : cobra . NoArgs ,
DisableAutoGenTag : true ,
}
cmd . Flags ( ) . StringP ( cmdFlagNameFile , "f" , "authelia.export.webauthn.yaml" , "The file name for the YAML export" )
return cmd
}
func newStorageUserWebauthnListCmd ( ctx * CmdCtx ) ( cmd * cobra . Command ) {
2022-10-19 07:17:55 +00:00
cmd = & cobra . Command {
Use : "list [username]" ,
2022-12-23 04:00:23 +00:00
Short : cmdAutheliaStorageUserWebauthnListShort ,
Long : cmdAutheliaStorageUserWebauthnListLong ,
Example : cmdAutheliaStorageUserWebauthnListExample ,
RunE : ctx . StorageUserWebauthnListRunE ,
2022-10-19 07:17:55 +00:00
Args : cobra . MaximumNArgs ( 1 ) ,
DisableAutoGenTag : true ,
}
return cmd
}
2022-12-23 04:00:23 +00:00
func newStorageUserWebauthnDeleteCmd ( ctx * CmdCtx ) ( cmd * cobra . Command ) {
2022-10-19 07:17:55 +00:00
cmd = & cobra . Command {
Use : "delete [username]" ,
2022-12-23 04:00:23 +00:00
Short : cmdAutheliaStorageUserWebauthnDeleteShort ,
Long : cmdAutheliaStorageUserWebauthnDeleteLong ,
Example : cmdAutheliaStorageUserWebauthnDeleteExample ,
RunE : ctx . StorageUserWebauthnDeleteRunE ,
2022-10-19 07:17:55 +00:00
Args : cobra . MaximumNArgs ( 1 ) ,
DisableAutoGenTag : true ,
}
2022-11-25 12:44:55 +00:00
cmd . Flags ( ) . Bool ( cmdFlagNameAll , false , "delete all of the users webauthn devices" )
cmd . Flags ( ) . String ( cmdFlagNameDescription , "" , "delete a users webauthn device by description" )
cmd . Flags ( ) . String ( cmdFlagNameKeyID , "" , "delete a users webauthn device by key id" )
2022-10-19 07:17:55 +00:00
return cmd
}
2022-12-22 00:21:29 +00:00
func newStorageUserTOTPCmd ( ctx * CmdCtx ) ( cmd * cobra . Command ) {
2021-11-25 01:56:58 +00:00
cmd = & cobra . Command {
2022-06-14 12:40:00 +00:00
Use : "totp" ,
Short : cmdAutheliaStorageUserTOTPShort ,
Long : cmdAutheliaStorageUserTOTPLong ,
Example : cmdAutheliaStorageUserTOTPExample ,
2022-12-23 04:00:23 +00:00
Args : cobra . NoArgs ,
2022-09-01 02:24:47 +00:00
DisableAutoGenTag : true ,
2021-11-25 01:56:58 +00:00
}
2021-12-01 12:11:29 +00:00
cmd . AddCommand (
2022-12-22 00:21:29 +00:00
newStorageUserTOTPGenerateCmd ( ctx ) ,
newStorageUserTOTPDeleteCmd ( ctx ) ,
newStorageUserTOTPExportCmd ( ctx ) ,
2022-12-23 04:00:23 +00:00
newStorageUserTOTPImportCmd ( ctx ) ,
2021-12-01 12:11:29 +00:00
)
2021-11-25 01:56:58 +00:00
return cmd
}
2022-12-22 00:21:29 +00:00
func newStorageUserTOTPGenerateCmd ( ctx * CmdCtx ) ( cmd * cobra . Command ) {
2021-11-25 01:56:58 +00:00
cmd = & cobra . Command {
2022-06-14 12:40:00 +00:00
Use : "generate <username>" ,
Short : cmdAutheliaStorageUserTOTPGenerateShort ,
Long : cmdAutheliaStorageUserTOTPGenerateLong ,
Example : cmdAutheliaStorageUserTOTPGenerateExample ,
2022-12-23 04:00:23 +00:00
RunE : ctx . StorageUserTOTPGenerateRunE ,
2022-06-14 12:40:00 +00:00
Args : cobra . ExactArgs ( 1 ) ,
2022-09-01 02:24:47 +00:00
DisableAutoGenTag : true ,
2021-12-01 12:11:29 +00:00
}
2022-11-25 12:44:55 +00:00
cmd . Flags ( ) . String ( cmdFlagNameSecret , "" , "set the shared secret as base32 encoded bytes (no padding), it's recommended that you do not use this option unless you're restoring a configuration" )
cmd . Flags ( ) . Uint ( cmdFlagNameSecretSize , schema . TOTPSecretSizeDefault , "set the secret size" )
cmd . Flags ( ) . Uint ( cmdFlagNamePeriod , 30 , "set the period between rotations" )
cmd . Flags ( ) . Uint ( cmdFlagNameDigits , 6 , "set the number of digits" )
cmd . Flags ( ) . String ( cmdFlagNameAlgorithm , "SHA1" , "set the algorithm to either SHA1 (supported by most applications), SHA256, or SHA512" )
cmd . Flags ( ) . String ( cmdFlagNameIssuer , "Authelia" , "set the issuer description" )
cmd . Flags ( ) . BoolP ( cmdFlagNameForce , "f" , false , "forces the configuration to be generated regardless if it exists or not" )
cmd . Flags ( ) . StringP ( cmdFlagNamePath , "p" , "" , "path to a file to create a PNG file with the QR code (optional)" )
2021-12-01 12:11:29 +00:00
return cmd
}
2022-12-22 00:21:29 +00:00
func newStorageUserTOTPDeleteCmd ( ctx * CmdCtx ) ( cmd * cobra . Command ) {
2021-12-01 12:11:29 +00:00
cmd = & cobra . Command {
2022-06-14 12:40:00 +00:00
Use : "delete <username>" ,
Short : cmdAutheliaStorageUserTOTPDeleteShort ,
Long : cmdAutheliaStorageUserTOTPDeleteLong ,
Example : cmdAutheliaStorageUserTOTPDeleteExample ,
2022-12-23 04:00:23 +00:00
RunE : ctx . StorageUserTOTPDeleteRunE ,
Args : cobra . ExactArgs ( 1 ) ,
DisableAutoGenTag : true ,
}
return cmd
}
func newStorageUserTOTPImportCmd ( ctx * CmdCtx ) ( cmd * cobra . Command ) {
cmd = & cobra . Command {
Use : cmdUseImportFileName ,
Short : cmdAutheliaStorageUserTOTPImportShort ,
Long : cmdAutheliaStorageUserTOTPImportLong ,
Example : cmdAutheliaStorageUserTOTPImportExample ,
RunE : ctx . StorageUserTOTPImportRunE ,
2022-06-14 12:40:00 +00:00
Args : cobra . ExactArgs ( 1 ) ,
2022-09-01 02:24:47 +00:00
DisableAutoGenTag : true ,
2021-12-01 12:11:29 +00:00
}
return cmd
}
2022-12-22 00:21:29 +00:00
func newStorageUserTOTPExportCmd ( ctx * CmdCtx ) ( cmd * cobra . Command ) {
2021-12-01 12:11:29 +00:00
cmd = & cobra . Command {
2022-12-23 04:00:23 +00:00
Use : cmdUseExport ,
2022-06-14 12:40:00 +00:00
Short : cmdAutheliaStorageUserTOTPExportShort ,
Long : cmdAutheliaStorageUserTOTPExportLong ,
Example : cmdAutheliaStorageUserTOTPExportExample ,
2022-12-23 04:00:23 +00:00
RunE : ctx . StorageUserTOTPExportRunE ,
Args : cobra . NoArgs ,
2022-09-01 02:24:47 +00:00
DisableAutoGenTag : true ,
2021-11-25 01:56:58 +00:00
}
2022-12-23 04:00:23 +00:00
cmd . AddCommand (
newStorageUserTOTPExportCSVCmd ( ctx ) ,
newStorageUserTOTPExportPNGCmd ( ctx ) ,
newStorageUserTOTPExportURICmd ( ctx ) ,
)
cmd . Flags ( ) . StringP ( cmdFlagNameFile , "f" , "authelia.export.totp.yaml" , "The file name for the YAML export" )
return cmd
}
func newStorageUserTOTPExportURICmd ( ctx * CmdCtx ) ( cmd * cobra . Command ) {
cmd = & cobra . Command {
Use : "uri" ,
Short : cmdAutheliaStorageUserTOTPExportURIShort ,
Long : cmdAutheliaStorageUserTOTPExportURILong ,
Example : cmdAutheliaStorageUserTOTPExportURIExample ,
RunE : ctx . StorageUserTOTPExportURIRunE ,
Args : cobra . NoArgs ,
DisableAutoGenTag : true ,
}
return cmd
}
func newStorageUserTOTPExportCSVCmd ( ctx * CmdCtx ) ( cmd * cobra . Command ) {
cmd = & cobra . Command {
Use : "csv" ,
Short : cmdAutheliaStorageUserTOTPExportCSVShort ,
Long : cmdAutheliaStorageUserTOTPExportCSVLong ,
Example : cmdAutheliaStorageUserTOTPExportCSVExample ,
RunE : ctx . StorageUserTOTPExportCSVRunE ,
Args : cobra . NoArgs ,
DisableAutoGenTag : true ,
}
cmd . Flags ( ) . StringP ( cmdFlagNameFile , "f" , "authelia.export.totp.csv" , "The file name for the CSV export" )
return cmd
}
func newStorageUserTOTPExportPNGCmd ( ctx * CmdCtx ) ( cmd * cobra . Command ) {
cmd = & cobra . Command {
Use : "png" ,
Short : cmdAutheliaStorageUserTOTPExportPNGShort ,
Long : cmdAutheliaStorageUserTOTPExportPNGLong ,
Example : cmdAutheliaStorageUserTOTPExportPNGExample ,
RunE : ctx . StorageUserTOTPExportPNGRunE ,
Args : cobra . NoArgs ,
DisableAutoGenTag : true ,
}
cmd . Flags ( ) . String ( cmdFlagNameDirectory , "" , "The directory where all exported png files will be saved to" )
2021-11-25 01:56:58 +00:00
return cmd
}
2022-12-22 00:21:29 +00:00
func newStorageSchemaInfoCmd ( ctx * CmdCtx ) ( cmd * cobra . Command ) {
2021-11-23 09:45:38 +00:00
cmd = & cobra . Command {
2022-06-14 12:40:00 +00:00
Use : "schema-info" ,
Short : cmdAutheliaStorageSchemaInfoShort ,
Long : cmdAutheliaStorageSchemaInfoLong ,
Example : cmdAutheliaStorageSchemaInfoExample ,
2022-12-22 00:21:29 +00:00
RunE : ctx . StorageSchemaInfoRunE ,
2022-12-23 04:00:23 +00:00
Args : cobra . NoArgs ,
2022-09-01 02:24:47 +00:00
DisableAutoGenTag : true ,
2021-11-23 09:45:38 +00:00
}
return cmd
}
// NewMigrationCmd returns a new Migration Cmd.
2022-12-22 00:21:29 +00:00
func newStorageMigrateCmd ( ctx * CmdCtx ) ( cmd * cobra . Command ) {
2021-11-23 09:45:38 +00:00
cmd = & cobra . Command {
2022-06-14 12:40:00 +00:00
Use : "migrate" ,
Short : cmdAutheliaStorageMigrateShort ,
Long : cmdAutheliaStorageMigrateLong ,
Example : cmdAutheliaStorageMigrateExample ,
Args : cobra . NoArgs ,
2022-09-01 02:24:47 +00:00
DisableAutoGenTag : true ,
2021-11-23 09:45:38 +00:00
}
cmd . AddCommand (
2022-12-22 00:21:29 +00:00
newStorageMigrateUpCmd ( ctx ) , newStorageMigrateDownCmd ( ctx ) ,
newStorageMigrateListUpCmd ( ctx ) , newStorageMigrateListDownCmd ( ctx ) ,
newStorageMigrateHistoryCmd ( ctx ) ,
2021-11-23 09:45:38 +00:00
)
return cmd
}
2022-12-22 00:21:29 +00:00
func newStorageMigrateHistoryCmd ( ctx * CmdCtx ) ( cmd * cobra . Command ) {
2021-11-23 09:45:38 +00:00
cmd = & cobra . Command {
2022-06-14 12:40:00 +00:00
Use : "history" ,
Short : cmdAutheliaStorageMigrateHistoryShort ,
Long : cmdAutheliaStorageMigrateHistoryLong ,
Example : cmdAutheliaStorageMigrateHistoryExample ,
2022-12-22 00:21:29 +00:00
RunE : ctx . StorageMigrateHistoryRunE ,
2022-12-23 04:00:23 +00:00
Args : cobra . NoArgs ,
2022-09-01 02:24:47 +00:00
DisableAutoGenTag : true ,
2021-11-23 09:45:38 +00:00
}
return cmd
}
2022-12-22 00:21:29 +00:00
func newStorageMigrateListUpCmd ( ctx * CmdCtx ) ( cmd * cobra . Command ) {
2021-11-23 09:45:38 +00:00
cmd = & cobra . Command {
2022-06-14 12:40:00 +00:00
Use : "list-up" ,
Short : cmdAutheliaStorageMigrateListUpShort ,
Long : cmdAutheliaStorageMigrateListUpLong ,
Example : cmdAutheliaStorageMigrateListUpExample ,
2022-12-22 00:21:29 +00:00
RunE : ctx . NewStorageMigrateListRunE ( true ) ,
2022-12-23 04:00:23 +00:00
Args : cobra . NoArgs ,
2022-09-01 02:24:47 +00:00
DisableAutoGenTag : true ,
2021-11-23 09:45:38 +00:00
}
return cmd
}
2022-12-22 00:21:29 +00:00
func newStorageMigrateListDownCmd ( ctx * CmdCtx ) ( cmd * cobra . Command ) {
2021-11-23 09:45:38 +00:00
cmd = & cobra . Command {
2022-06-14 12:40:00 +00:00
Use : "list-down" ,
Short : cmdAutheliaStorageMigrateListDownShort ,
Long : cmdAutheliaStorageMigrateListDownLong ,
Example : cmdAutheliaStorageMigrateListDownExample ,
2022-12-22 00:21:29 +00:00
RunE : ctx . NewStorageMigrateListRunE ( false ) ,
2022-12-23 04:00:23 +00:00
Args : cobra . NoArgs ,
2022-09-01 02:24:47 +00:00
DisableAutoGenTag : true ,
2021-11-23 09:45:38 +00:00
}
return cmd
}
2022-12-22 00:21:29 +00:00
func newStorageMigrateUpCmd ( ctx * CmdCtx ) ( cmd * cobra . Command ) {
2021-11-23 09:45:38 +00:00
cmd = & cobra . Command {
2022-06-14 12:40:00 +00:00
Use : storageMigrateDirectionUp ,
Short : cmdAutheliaStorageMigrateUpShort ,
Long : cmdAutheliaStorageMigrateUpLong ,
Example : cmdAutheliaStorageMigrateUpExample ,
2022-12-22 00:21:29 +00:00
RunE : ctx . NewStorageMigrationRunE ( true ) ,
2022-12-23 04:00:23 +00:00
Args : cobra . NoArgs ,
2022-09-01 02:24:47 +00:00
DisableAutoGenTag : true ,
2021-11-23 09:45:38 +00:00
}
2022-11-25 12:44:55 +00:00
cmd . Flags ( ) . IntP ( cmdFlagNameTarget , "t" , 0 , "sets the version to migrate to, by default this is the latest version" )
2021-11-23 09:45:38 +00:00
return cmd
}
2022-12-22 00:21:29 +00:00
func newStorageMigrateDownCmd ( ctx * CmdCtx ) ( cmd * cobra . Command ) {
2021-11-23 09:45:38 +00:00
cmd = & cobra . Command {
2022-06-14 12:40:00 +00:00
Use : storageMigrateDirectionDown ,
Short : cmdAutheliaStorageMigrateDownShort ,
Long : cmdAutheliaStorageMigrateDownLong ,
Example : cmdAutheliaStorageMigrateDownExample ,
2022-12-22 00:21:29 +00:00
RunE : ctx . NewStorageMigrationRunE ( false ) ,
2022-12-23 04:00:23 +00:00
Args : cobra . NoArgs ,
2022-09-01 02:24:47 +00:00
DisableAutoGenTag : true ,
2021-11-23 09:45:38 +00:00
}
2022-11-25 12:44:55 +00:00
cmd . Flags ( ) . IntP ( cmdFlagNameTarget , "t" , 0 , "sets the version to migrate to" )
cmd . Flags ( ) . Bool ( cmdFlagNameDestroyData , false , "confirms you want to destroy data with this migration" )
2021-11-23 09:45:38 +00:00
return cmd
}