summaryrefslogtreecommitdiffstats
path: root/src/squark-auth-ip.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/squark-auth-ip.c')
-rw-r--r--src/squark-auth-ip.c20
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: