summaryrefslogtreecommitdiffstats
path: root/eurephiadm
diff options
context:
space:
mode:
authorDavid Sommerseth <dazo@users.sourceforge.net>2008-12-06 21:24:05 +0100
committerDavid Sommerseth <dazo@users.sourceforge.net>2008-12-06 21:24:05 +0100
commitd919ea0f5d4d8e6241beaf936d598f4ee2e0adb0 (patch)
treed11331592acf9b6b44f04d62470d07a5ab5f913c /eurephiadm
parent60e847c330420ac5029ac5ed6580776c26a52282 (diff)
downloadeurephia-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.c70
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;
}
-