commit 19b9998

default  ·  2024-11-12 08:01:30 +0000 UTC
parent 50fa2ae
The proxy token seed is created on startup and never stored.
4 files changed,  +7, -14
M data.c
M html.c
M snac.c
M snac.h
M data.c
+4, -13
 1@@ -165,21 +165,12 @@ int srv_open(const char *basedir, int auto_upgrade)
 2         write_default_css();
 3     }
 4 
 5-    /* if proxy_media is set but there is no token seed, create one */
 6-    if (xs_is_true(xs_dict_get(srv_config, "proxy_media")) &&
 7-        xs_is_null(xs_dict_get(srv_config, "proxy_token_seed"))) {
 8+    /* create the proxy token seed */
 9+    {
10         char rnd[16];
11         xs_rnd_buf(rnd, sizeof(rnd));
12-        xs *pts = xs_hex_enc(rnd, sizeof(rnd));
13-
14-        xs_dict_set(srv_config, "proxy_token_seed", pts);
15 
16-        if ((f = fopen(cfg_file, "w")) != NULL) {
17-            xs_json_dump(srv_config, 4, f);
18-            fclose(f);
19-
20-            srv_log(xs_fmt("Created proxy_token_seed"));
21-        }
22+        srv_proxy_token_seed = xs_hex_enc(rnd, sizeof(rnd));
23     }
24 
25     return ret;
26@@ -3679,7 +3670,7 @@ xs_str *make_url(const char *href, const char *proxy, int by_token)
27         xs *p = NULL;
28 
29         if (by_token) {
30-            xs *tks = xs_fmt("%s:%s", xs_dict_get(srv_config, "proxy_token_seed"), proxy);
31+            xs *tks = xs_fmt("%s:%s", srv_proxy_token_seed, proxy);
32             xs *tk = xs_md5_hex(tks, strlen(tks));
33 
34             p = xs_fmt("%s/y/%s/", proxy, tk);
M html.c
+1, -1
1@@ -3208,7 +3208,7 @@ int html_get_handler(const xs_dict *req, const char *q_path,
2         }
3         else {
4             /* proxy usage authorized by proxy_token */
5-            xs *tks = xs_fmt("%s:%s", xs_dict_get(srv_config, "proxy_token_seed"), snac.actor);
6+            xs *tks = xs_fmt("%s:%s", srv_proxy_token_seed, snac.actor);
7             xs *tk = xs_md5_hex(tks, strlen(tks));
8             xs *p = xs_fmt("y/%s/", tk);
9 
M snac.c
+1, -0
1@@ -33,6 +33,7 @@
2 xs_str *srv_basedir = NULL;
3 xs_dict *srv_config = NULL;
4 xs_str *srv_baseurl = NULL;
5+xs_str *srv_proxy_token_seed = NULL;
6 
7 int dbglevel = 0;
8 
M snac.h
+1, -0
1@@ -26,6 +26,7 @@ extern double disk_layout;
2 extern xs_str *srv_basedir;
3 extern xs_dict *srv_config;
4 extern xs_str *srv_baseurl;
5+extern xs_str *srv_proxy_token_seed;
6 
7 extern int dbglevel;
8