diff options
| author | Franklin Wei <git@fwei.tk> | 2016-01-09 12:37:26 -0500 |
|---|---|---|
| committer | Franklin Wei <git@fwei.tk> | 2016-01-09 12:37:26 -0500 |
| commit | 06880048df2202b1828e5367b1697aee305a2358 (patch) | |
| tree | 78bf00f71ee90cb43e84896a81e01180aa15c213 /src | |
| parent | 50134c46dc337c35b8ecf78b3c5b4308cf8fb791 (diff) | |
| download | netcosm-06880048df2202b1828e5367b1697aee305a2358.zip netcosm-06880048df2202b1828e5367b1697aee305a2358.tar.gz netcosm-06880048df2202b1828e5367b1697aee305a2358.tar.bz2 netcosm-06880048df2202b1828e5367b1697aee305a2358.tar.xz | |
finish refactor into userdb
Diffstat (limited to 'src')
| -rw-r--r-- | src/client.c | 20 | ||||
| -rw-r--r-- | src/server_reqs.c | 25 |
2 files changed, 37 insertions, 8 deletions
diff --git a/src/client.c b/src/client.c index 3eb77d4..330187d 100644 --- a/src/client.c +++ b/src/client.c @@ -233,10 +233,22 @@ void sig_rt_0_handler(int s, siginfo_t *info, void *v) } struct userdata_t *user = &returned_reqdata.userdata; - read_string_max(from_parent, user->username, sizeof(user->username)); - read_string_max(from_parent, user->salt, sizeof(user->salt)); - read_string_max(from_parent, user->passhash, sizeof(user->passhash)); - read(from_parent, &user->priv, sizeof(user->priv)); + if(read(from_parent, user, sizeof(*user)) != sizeof(*user)) + error("user data too short"); + break; + } + case REQ_DELUSERDATA: + { + reqdata_type = TYPE_BOOLEAN; + if(read(from_parent, &returned_reqdata.boolean, sizeof(bool)) != sizeof(bool)) + error("error reading bool"); + break; + } + case REQ_ADDUSERDATA: + { + reqdata_type = TYPE_BOOLEAN; + if(read(from_parent, &returned_reqdata.boolean, sizeof(bool)) != sizeof(bool)) + error("error reading bool"); break; } case REQ_NOP: diff --git a/src/server_reqs.c b/src/server_reqs.c index 1501434..ac53396 100644 --- a/src/server_reqs.c +++ b/src/server_reqs.c @@ -184,10 +184,7 @@ static void req_send_user(unsigned char *data, size_t datalen, struct child_data { bool confirm = true; write(sender->outpipe[1], &confirm, sizeof(confirm)); - send_string(sender->outpipe[1], user->username); - send_string(sender->outpipe[1], user->salt); - send_string(sender->outpipe[1], user->passhash); - write(sender->outpipe[1], &user->priv, sizeof(user->priv)); + write(sender->outpipe[1], user, sizeof(*user)); return; } @@ -200,6 +197,26 @@ static void req_send_user(unsigned char *data, size_t datalen, struct child_data write(sender->outpipe[1], &fail, sizeof(fail)); } +static void req_del_user(unsigned char *data, size_t datalen, struct child_data *sender) +{ + bool success = false; + if(datalen) + { + success = userdb_remove((char*)data); + } + write(sender->outpipe[1], &success, sizeof(success)); +} + +static void req_add_user(unsigned char *data, size_t datalen, struct child_data *sender) +{ + bool success = false; + if(datalen == sizeof(struct userdata_t)) + { + success = userdb_add((struct userdata_t*)data); + } + write(sender->outpipe[1], &success, sizeof(success)); +} + static const struct child_request { unsigned char code; |