diff options
Diffstat (limited to 'src/squark-auth-ip.c')
-rw-r--r-- | src/squark-auth-ip.c | 20 |
1 files changed, 14 insertions, 6 deletions
diff --git a/src/squark-auth-ip.c b/src/squark-auth-ip.c index 08adca9..ec6a44d 100644 --- a/src/squark-auth-ip.c +++ b/src/squark-auth-ip.c @@ -23,6 +23,7 @@ #define DO_OVERRIDE -2 #define DO_PRINT -3 #define DO_LOGOUT -4 +#define DO_REFRESH -5 static int running = 1; static struct sqdb db; @@ -48,7 +49,7 @@ static void handle_line(blob_t line) if (addr_parse(ipaddr, &addr)) { token = authdb_get(&adb, &addr, &entry, 1); - if (authdb_check_login(token, &entry, BLOB_NULL, now)) + if (authdb_check_login(token, &entry, BLOB_NULL, now, &adbc)) auth_ok = 1; } @@ -118,7 +119,7 @@ int main(int argc, char **argv) sockaddr_any ipaddr = { .any.sa_family = AF_UNSPEC }; blob_t ip = BLOB_NULL, username = BLOB_NULL; - while ((opt = getopt(argc, argv, "Vi:u:olpL")) != -1) { + while ((opt = getopt(argc, argv, "Vi:u:olpLr")) != -1) { switch (opt) { case 'V': fprintf(stderr, "squark-auth-ip %s\n", squark_version); @@ -146,6 +147,9 @@ int main(int argc, char **argv) case 'L': running = DO_LOGOUT; break; + case 'r': + running = DO_REFRESH; + break; } } @@ -160,6 +164,7 @@ int main(int argc, char **argv) goto err_adb; } + rc = 0; if (running < 0) { struct authdb_entry entry; void *token; @@ -185,8 +190,12 @@ int main(int argc, char **argv) memcpy(entry.p.login_name, username.ptr, username.len); authdb_commit_login(token, &entry, now, &adbc); break; + case DO_REFRESH: + if (!authdb_check_login(token, &entry, username, now, &adbc)) + rc = 3; + break; case DO_OVERRIDE: - if (authdb_check_login(token, &entry, username, now)) + if (authdb_check_login(token, &entry, username, now, &adbc)) authdb_commit_override(token, &entry, now); break; case DO_PRINT: { @@ -213,9 +222,9 @@ int main(int argc, char **argv) b = blob_pushed(BLOB_BUF(buf), b); fwrite(b.ptr, b.len, 1, stdout); break; - } + } case DO_LOGOUT: - if (authdb_check_login(token, &entry, username, now)) + if (authdb_check_login(token, &entry, username, now, &adbc)) authdb_commit_logout(token); break; } @@ -223,7 +232,6 @@ int main(int argc, char **argv) while (running) read_input(); } - rc = 0; authdb_close(&adb); err_adb: |