diff --git a/src/client/distren.c b/src/client/distren.c --- a/src/client/distren.c +++ b/src/client/distren.c @@ -23,38 +23,63 @@ #include "execio.h" #include /* Happy fun XML time */ #include - +#include +#include // for strcat int main(int argc, char *argv[]) { -/* Mneh variable goodness */ -int isusername; -char *host = "protofusion.org"; -char *username = "guest"; -char *nameemail; -/* */ + + +// parseconf(); /* calls the confuse parser from options.c */ +// So I couldn't figure out how to get a function to return multiple variables, so +// I tossed the code from options.c right in here to save me the trouble. Fix if you wish, if possible... :D + + -/* put some code here to parse for a username, set isusername=0 if no username in the xml file or if no xml file exists. if no file, drop a warning */ +/* Conf File Parser */ + cfg_opt_t opts[] = + { + CFG_STR("username", "guest", CFGF_NONE), + CFG_STR("hostname", "protofusion.org", CFGF_NONE), + CFG_STR("name", "Guest", CFGF_NONE), + CFG_STR("email", "guest@protofusion.org", CFGF_NONE), + CFG_END() + }; + cfg_t *cfg; + cfg = cfg_init(opts, CFGF_NONE); + if(cfg_parse(cfg, "distren.conf") == CFG_PARSE_ERROR) + return 1; + /* End Conf File Parser */ + -if(isusername = 0){ + + +int x = 1; // hehe for testing -char buf[10]; +// Please find a better way of doing this :( you can't strcat multiple strings.. meh +char *username = cfg_getstr(cfg, "username"); +char *hostname = cfg_getstr(cfg, "hostname"); +strcat(username, "@"); +strcat(username, hostname); + + +if( x == 1 ){ +// Create new account on the server if no username exists +// THIS no longer SEGFAULTS!! YAY + char buf[10]; struct execio *testrem; char *execargv[] = { "ssh", - host, + username, //cfg_getstr(cfg, "username") . "@" . cfg_getstr(cfg, "hostname"), + "-i guest.rsa", //yeaaaah enay better ideas? "sh", "-c", - "\"useradd -M -c", - nameemail, - "-d /home/distren --gid 537", - username, - "\"", + "\"echo hello from ${HOSTNAME}\"", // "\"useradd -M -c" strcat( cfg_getstr(cfg, "name") cfg_getstr(cfg, "email")) "-d /home/distren --gid 537" cfg_getstr(cfg, "username") "\"", (char *)NULL }; @@ -77,10 +102,13 @@ char buf[10]; else { -/* put code here to ssh to zserver2 w/ execio as the user from the xml file */ + printf("Well now, you must have registered!\n"); +/* put code here to ssh to zserver2 w/ execio as the user from the conf file */ +return 0; } +cfg_free(cfg); }; diff --git a/src/client/distren.conf b/src/client/distren.conf new file mode 100644 --- /dev/null +++ b/src/client/distren.conf @@ -0,0 +1,1 @@ +hostname = "zserver2" diff --git a/src/common/options.c b/src/common/options.c --- a/src/common/options.c +++ b/src/common/options.c @@ -30,13 +30,13 @@ int execlisten() return 0; } -int genericfunc() +int parseconf() { - /* Conf File Parser */ +/* Conf File Parser */ cfg_opt_t opts[] = { - CFG_STR("test", "mneh", CFGF_NONE), + CFG_STR("username", "guest", CFGF_NONE), CFG_END() }; cfg_t *cfg; @@ -45,18 +45,8 @@ int genericfunc() return 1; /* End Conf File Parser */ - +// Testing code: + printf("Client Username: %s\n", cfg_getstr(cfg, "username")); cfg_free(cfg); - - cfg = cfg_init(opts, CFGF_NONE); - if(cfg_parse(cfg, "distrend.conf") == CFG_PARSE_ERROR) - return 1; -/* End Conf File Parser */ - - printf("Conf File Test: %s\n", cfg_getstr(cfg, "test")); - - - cfg_free(cfg); - return 0; }