diff options
Diffstat (limited to '')
| -rw-r--r-- | data.c | 4 | ||||
| -rw-r--r-- | main.c | 5 | ||||
| -rw-r--r-- | snac.c | 2 | ||||
| -rw-r--r-- | snac.h | 2 | ||||
| -rw-r--r-- | upgrade.c | 10 | ||||
| -rw-r--r-- | utils.c | 12 |
6 files changed, 21 insertions, 14 deletions
| @@ -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 | } |
| @@ -8,6 +8,8 @@ | |||
| 8 | 8 | ||
| 9 | #include "snac.h" | 9 | #include "snac.h" |
| 10 | 10 | ||
| 11 | #include <sys/stat.h> | ||
| 12 | |||
| 11 | int usage(void) | 13 | int 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 | ||
| @@ -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) { |
| @@ -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 | |||
| 8 | extern double disk_layout; | 10 | extern double disk_layout; |
| 9 | extern d_char *srv_basedir; | 11 | extern d_char *srv_basedir; |
| 10 | extern d_char *srv_config; | 12 | extern d_char *srv_config; |
| @@ -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 | } |
| @@ -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); |