From 2c1c17b16f731c75cbc120fa0ff9f1c3e688d4f4 Mon Sep 17 00:00:00 2001 From: onefang Date: Wed, 18 Mar 2020 23:41:08 +1000 Subject: Include all stuff in a session file. --- src/sledjchisl/sledjchisl.c | 44 ++++++++++++++++++++++++++++---------------- 1 file changed, 28 insertions(+), 16 deletions(-) (limited to 'src/sledjchisl/sledjchisl.c') diff --git a/src/sledjchisl/sledjchisl.c b/src/sledjchisl/sledjchisl.c index 5d14eb1..06c6187 100644 --- a/src/sledjchisl/sledjchisl.c +++ b/src/sledjchisl/sledjchisl.c @@ -2811,37 +2811,49 @@ static void setToken_n_munchie(reqData *Rd, boolean linky) cookie *ck = setCookie(Rd, "toke_n_munchie", shs->toke_n_munchie); cookie *ckh = setCookie(Rd, "hashish", shs->hashish); } - char *tnm = xmprintf( "toke_n_munchie = \n" + char *tnm0 = xmprintf( "toke_n_munchie = \n" "{\n" " ['IP']='%s',\n" - " ['name']='%s',\n" - " ['level']='%s',\n" - " ['passwordSalt']='%s',\n" - " ['passwordHash']='%s',\n" " ['salt']='%s',\n" " ['seshID']='%s',\n" - " ['UUID']='%s',\n" - " ['linky-hashish']='%s',\n" - "}\n" - "return toke_n_munchie\n", + " ['linky-hashishy']='%s',\n", getStrH(Rd->headers, "REMOTE_ADDR"), - getStrH(Rd->stuff, "name"), - getStrH(Rd->stuff, "level"), - getStrH(Rd->stuff, "passwordSalt"), - getStrH(Rd->stuff, "passwordHash"), shs->salt, shs->seshID, - getStrH(Rd->stuff, "UUID"), link ); + char *tnm1 = xmprintf("}\n" + "return toke_n_munchie\n"); int fd = notstdio(xcreate_stdio(file, O_CREAT | O_WRONLY | O_TRUNC | O_CLOEXEC, S_IRUSR | S_IWUSR)); - size_t l = strlen(tnm); + size_t l = strlen(tnm0); if (s) I("Creating session %s.", file); else C("Updating session %s.", file); // I don't think updates can occur now. - if (l != writeall(fd, tnm, l)) + if (l != writeall(fd, tnm0, l)) + { + perror_msg("Writing %s", file); + freeSesh(Rd, linky, TRUE); + } + + qhashtbl_obj_t obj; + + memset((void*)&obj, 0, sizeof(obj)); + Rd->stuff->lock(Rd->stuff); + while(Rd->stuff->getnext(Rd->stuff, &obj, false) == true) + { +t("stuff %s = %s", obj.name, (char *) obj.data); + if (dprintf(fd, " ['%s'] = '%s',\n", obj.name, (char *) obj.data) < 0) + { + perror_msg("Writing %s", file); + freeSesh(Rd, linky, TRUE); + } + } + Rd->stuff->unlock(Rd->stuff); + + l = strlen(tnm1); + if (l != writeall(fd, tnm1, l)) { perror_msg("Writing %s", file); freeSesh(Rd, linky, TRUE); -- cgit v1.1