summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--data.c4
-rw-r--r--main.c5
-rw-r--r--snac.c2
-rw-r--r--snac.h2
-rw-r--r--upgrade.c10
-rw-r--r--utils.c12
6 files changed, 21 insertions, 14 deletions
diff --git a/data.c b/data.c
index ad5304a..7b57003 100644
--- a/data.c
+++ b/data.c
@@ -88,7 +88,7 @@ int srv_open(char *basedir, int auto_upgrade)
88 88
89 /* create the queue/ subdir, just in case */ 89 /* create the queue/ subdir, just in case */
90 xs *qdir = xs_fmt("%s/queue", srv_basedir); 90 xs *qdir = xs_fmt("%s/queue", srv_basedir);
91 mkdir(qdir, 0755); 91 mkdir(qdir, DIR_PERM);
92 92
93#ifdef __OpenBSD__ 93#ifdef __OpenBSD__
94 char *v = xs_dict_get(srv_config, "disable_openbsd_security"); 94 char *v = xs_dict_get(srv_config, "disable_openbsd_security");
@@ -434,7 +434,7 @@ d_char *_object_fn_by_md5(const char *md5)
434{ 434{
435 xs *bfn = xs_fmt("%s/object/%c%c", srv_basedir, md5[0], md5[1]); 435 xs *bfn = xs_fmt("%s/object/%c%c", srv_basedir, md5[0], md5[1]);
436 436
437 mkdir(bfn, 0755); 437 mkdir(bfn, DIR_PERM);
438 438
439 return xs_fmt("%s/%s.json", bfn, md5); 439 return xs_fmt("%s/%s.json", bfn, md5);
440} 440}
diff --git a/main.c b/main.c
index fbb16b4..4f9722b 100644
--- a/main.c
+++ b/main.c
@@ -8,6 +8,8 @@
8 8
9#include "snac.h" 9#include "snac.h"
10 10
11#include <sys/stat.h>
12
11int usage(void) 13int usage(void)
12{ 14{
13 printf("snac " VERSION " - A simple, minimalistic ActivityPub instance\n"); 15 printf("snac " VERSION " - A simple, minimalistic ActivityPub instance\n");
@@ -55,6 +57,9 @@ int main(int argc, char *argv[])
55 int argi = 1; 57 int argi = 1;
56 snac snac; 58 snac snac;
57 59
60 /* ensure group has write access */
61 umask(0007);
62
58 if ((cmd = GET_ARGV()) == NULL) 63 if ((cmd = GET_ARGV()) == NULL)
59 return usage(); 64 return usage();
60 65
diff --git a/snac.c b/snac.c
index c15a74a..3cf146a 100644
--- a/snac.c
+++ b/snac.c
@@ -149,7 +149,7 @@ void srv_archive(const char *direction, xs_dict *req,
149 xs *dir = xs_fmt("%s/archive/%s_%s", srv_basedir, date, direction); 149 xs *dir = xs_fmt("%s/archive/%s_%s", srv_basedir, date, direction);
150 FILE *f; 150 FILE *f;
151 151
152 if (mkdir(dir, 0755) != -1) { 152 if (mkdir(dir, DIR_PERM) != -1) {
153 xs *meta_fn = xs_fmt("%s/_META", dir); 153 xs *meta_fn = xs_fmt("%s/_META", dir);
154 154
155 if ((f = fopen(meta_fn, "w")) != NULL) { 155 if ((f = fopen(meta_fn, "w")) != NULL) {
diff --git a/snac.h b/snac.h
index da964ab..ab8bf3a 100644
--- a/snac.h
+++ b/snac.h
@@ -5,6 +5,8 @@
5 5
6#define USER_AGENT "snac/" VERSION 6#define USER_AGENT "snac/" VERSION
7 7
8#define DIR_PERM 02770
9
8extern double disk_layout; 10extern double disk_layout;
9extern d_char *srv_basedir; 11extern d_char *srv_basedir;
10extern d_char *srv_config; 12extern d_char *srv_config;
diff --git a/upgrade.c b/upgrade.c
index 1b735c2..639dcda 100644
--- a/upgrade.c
+++ b/upgrade.c
@@ -36,7 +36,7 @@ int snac_upgrade(xs_str **error)
36 else 36 else
37 if (f < 2.1) { 37 if (f < 2.1) {
38 xs *dir = xs_fmt("%s/object", srv_basedir); 38 xs *dir = xs_fmt("%s/object", srv_basedir);
39 mkdir(dir, 0755); 39 mkdir(dir, DIR_PERM);
40 40
41 nf = 2.1; 41 nf = 2.1;
42 } 42 }
@@ -61,7 +61,7 @@ int snac_upgrade(xs_str **error)
61 xs *dir = xs_fmt("%s/object/%c%c", srv_basedir, b[0], b[1]); 61 xs *dir = xs_fmt("%s/object/%c%c", srv_basedir, b[0], b[1]);
62 xs *nfn = xs_fmt("%s/%s", dir, b); 62 xs *nfn = xs_fmt("%s/%s", dir, b);
63 63
64 mkdir(dir, 0755); 64 mkdir(dir, DIR_PERM);
65 rename(fn, nfn); 65 rename(fn, nfn);
66 } 66 }
67 67
@@ -88,7 +88,7 @@ int snac_upgrade(xs_str **error)
88 xs *dir = xs_fmt("%s/hidden", snac.basedir); 88 xs *dir = xs_fmt("%s/hidden", snac.basedir);
89 89
90 /* create the hidden directory */ 90 /* create the hidden directory */
91 mkdir(dir, 0755); 91 mkdir(dir, DIR_PERM);
92 92
93 /* rename all muted files incorrectly named .json */ 93 /* rename all muted files incorrectly named .json */
94 xs *spec = xs_fmt("%s/muted/" "*.json", snac.basedir); 94 xs *spec = xs_fmt("%s/muted/" "*.json", snac.basedir);
@@ -117,10 +117,10 @@ int snac_upgrade(xs_str **error)
117 117
118 if (user_open(&snac, v)) { 118 if (user_open(&snac, v)) {
119 xs *dir = xs_fmt("%s/public", snac.basedir); 119 xs *dir = xs_fmt("%s/public", snac.basedir);
120 mkdir(dir, 0755); 120 mkdir(dir, DIR_PERM);
121 121
122 dir = xs_replace_i(dir, "public", "private"); 122 dir = xs_replace_i(dir, "public", "private");
123 mkdir(dir, 0755); 123 mkdir(dir, DIR_PERM);
124 124
125 user_free(&snac); 125 user_free(&snac);
126 } 126 }
diff --git a/utils.c b/utils.c
index 11b0799..48b2e74 100644
--- a/utils.c
+++ b/utils.c
@@ -143,19 +143,19 @@ int snac_init(const char *basedir)
143 } 143 }
144 } 144 }
145 145
146 if (mkdir(srv_basedir, 0755) == -1) { 146 if (mkdir(srv_basedir, 0775) == -1) {
147 printf("ERROR: cannot create directory '%s'\n", srv_basedir); 147 printf("ERROR: cannot create directory '%s'\n", srv_basedir);
148 return 1; 148 return 1;
149 } 149 }
150 150
151 xs *udir = xs_fmt("%s/user", srv_basedir); 151 xs *udir = xs_fmt("%s/user", srv_basedir);
152 mkdir(udir, 0755); 152 mkdir(udir, DIR_PERM);
153 153
154 xs *odir = xs_fmt("%s/object", srv_basedir); 154 xs *odir = xs_fmt("%s/object", srv_basedir);
155 mkdir(odir, 0755); 155 mkdir(odir, DIR_PERM);
156 156
157 xs *qdir = xs_fmt("%s/queue", srv_basedir); 157 xs *qdir = xs_fmt("%s/queue", srv_basedir);
158 mkdir(qdir, 0755); 158 mkdir(qdir, DIR_PERM);
159 159
160 xs *gfn = xs_fmt("%s/greeting.html", srv_basedir); 160 xs *gfn = xs_fmt("%s/greeting.html", srv_basedir);
161 if ((f = fopen(gfn, "w")) == NULL) { 161 if ((f = fopen(gfn, "w")) == NULL) {
@@ -243,7 +243,7 @@ int adduser(const char *uid)
243 243
244 xs *basedir = xs_fmt("%s/user/%s", srv_basedir, uid); 244 xs *basedir = xs_fmt("%s/user/%s", srv_basedir, uid);
245 245
246 if (mkdir(basedir, 0755) == -1) { 246 if (mkdir(basedir, DIR_PERM) == -1) {
247 printf("ERROR: cannot create directory '%s'\n", basedir); 247 printf("ERROR: cannot create directory '%s'\n", basedir);
248 return 0; 248 return 0;
249 } 249 }
@@ -256,7 +256,7 @@ int adduser(const char *uid)
256 256
257 for (n = 0; dirs[n]; n++) { 257 for (n = 0; dirs[n]; n++) {
258 xs *d = xs_fmt("%s/%s", basedir, dirs[n]); 258 xs *d = xs_fmt("%s/%s", basedir, dirs[n]);
259 mkdir(d, 0755); 259 mkdir(d, DIR_PERM);
260 } 260 }
261 261
262 xs *scssfn = xs_fmt("%s/style.css", srv_basedir); 262 xs *scssfn = xs_fmt("%s/style.css", srv_basedir);