diff options
author | David Sommerseth <dazo@users.sourceforge.net> | 2008-12-06 21:24:05 +0100 |
---|---|---|
committer | David Sommerseth <dazo@users.sourceforge.net> | 2008-12-06 21:24:05 +0100 |
commit | d919ea0f5d4d8e6241beaf936d598f4ee2e0adb0 (patch) | |
tree | d11331592acf9b6b44f04d62470d07a5ab5f913c /eurephiadm | |
parent | 60e847c330420ac5029ac5ed6580776c26a52282 (diff) | |
download | eurephia-d919ea0f5d4d8e6241beaf936d598f4ee2e0adb0.tar.gz eurephia-d919ea0f5d4d8e6241beaf936d598f4ee2e0adb0.tar.xz eurephia-d919ea0f5d4d8e6241beaf936d598f4ee2e0adb0.zip |
users command: Added framework for activation and deactivation of an account
Diffstat (limited to 'eurephiadm')
-rw-r--r-- | eurephiadm/commands/users.c | 70 |
1 files changed, 65 insertions, 5 deletions
diff --git a/eurephiadm/commands/users.c b/eurephiadm/commands/users.c index 4c1a449..bb9ef76 100644 --- a/eurephiadm/commands/users.c +++ b/eurephiadm/commands/users.c @@ -105,6 +105,7 @@ void help_Users() { display_users_help(0); } + int list_users(eurephiaCTX *ctx, eurephiaSESSION *sess, eurephiaVALUES *cfg, int argc, char **argv) { eurephiaUSERLIST *list = NULL; eurephiaUSERINFO *user = NULL; @@ -113,6 +114,7 @@ int list_users(eurephiaCTX *ctx, eurephiaSESSION *sess, eurephiaVALUES *cfg, int e_options listargs[] = { {"--sort", "-S", 1}, + {"--help", "-h", 0}, {NULL, NULL, 0} }; @@ -122,8 +124,13 @@ int list_users(eurephiaCTX *ctx, eurephiaSESSION *sess, eurephiaVALUES *cfg, int switch( eurephia_getopt(&i, argc, argv, listargs) ) { case 'S': sortkeys = optargs[0]; + i++; break; + case 'h': + display_users_help('l'); + return 0; + default: fprintf(stderr, "%s Unkown argument: %s\n", MODULE, argv[i]); return 1; @@ -155,14 +162,68 @@ int list_users(eurephiaCTX *ctx, eurephiaSESSION *sess, eurephiaVALUES *cfg, int return 0; } + +// This function handles both activation and deactivation of an account int activate_user(eurephiaCTX *ctx, eurephiaSESSION *sess, eurephiaVALUES *cfg, int argc, char **argv) { - return 0; -} + char *uname = NULL; + int i, uid = 0, actmode = 0; + + e_options activargs[] = { + {"--uid", "-i", 1}, + {"--username", "-n", 1}, + {"--help", "-h", 0}, + {NULL, NULL, 0} + }; + + assert((ctx != NULL) && (ctx->dbc != NULL) && (ctx->dbc->config != NULL)); + + actmode = ((strcmp(argv[0], "--activate") == 0) || (strcmp(argv[0], "-a") == 0)) ? 'a' : 'd'; + + for( i = 1; i < argc; i++ ) { + switch( eurephia_getopt(&i, argc, argv, activargs) ) { + case 'i': + uid = atoi_nullsafe(optargs[0]); + if( uid == 0 ) { + fprintf(stderr, "%s: Invalid user id\n", MODULE); + return 1; + } + break; + + case 'n': + uname = strdup_nullsafe(optargs[0]); + if( strlen_nullsafe(uname) < 3 ) { + fprintf(stderr, "%s: User name too short\n", MODULE); + return 1; + } + break; + + case 'h': + display_users_help(actmode); + return 0; + + default: + fprintf(stderr, "%s Unkown argument: %s\n", MODULE, argv[i]); + return 1; + } + } + if( (uid == 0) && (uname == NULL) ){ + fprintf(stderr, + "%s: Missing required parameter. You must provide either user id or user name\n", + MODULE); + return 1; + } + + if( (uid > 0) && (uname != NULL) ) { + fprintf(stderr, + "%s: You cannot use both user id and user name, only one of them.\n", + MODULE); + return 1; + } -int deactivate_user(eurephiaCTX *ctx, eurephiaSESSION *sess, eurephiaVALUES *cfg, int argc, char **argv) { return 0; } + int cmd_Users(eurephiaCTX *ctx, eurephiaSESSION *sess, eurephiaVALUES *cfg, int argc, char **argv) { char **mode_argv; int i, mode_argc = 0, rc = 0; @@ -192,7 +253,7 @@ int cmd_Users(eurephiaCTX *ctx, eurephiaSESSION *sess, eurephiaVALUES *cfg, int break; case 'd': - mode_fnc = deactivate_user; + mode_fnc = activate_user; break; case 'h': @@ -226,4 +287,3 @@ int cmd_Users(eurephiaCTX *ctx, eurephiaSESSION *sess, eurephiaVALUES *cfg, int return rc; } - |