release
[hcoop/zz_old/debian/djbdns.git] / rbldns-conf.c
1 #include <unistd.h>
2 #include <pwd.h>
3 #include "strerr.h"
4 #include "exit.h"
5 #include "auto_home.h"
6 #include "generic-conf.h"
7
8 #define FATAL "rbldns-conf: fatal: "
9
10 void usage(void)
11 {
12 strerr_die1x(100,"rbldns-conf: usage: rbldns-conf acct logacct /rbldns myip base");
13 }
14
15 char *dir;
16 char *user;
17 char *loguser;
18 struct passwd *pw;
19 char *myip;
20 char *base;
21
22 int main(int argc,char **argv)
23 {
24 user = argv[1];
25 if (!user) usage();
26 loguser = argv[2];
27 if (!loguser) usage();
28 dir = argv[3];
29 if (!dir) usage();
30 if (dir[0] != '/') usage();
31 myip = argv[4];
32 if (!myip) usage();
33 base = argv[5];
34 if (!base) usage();
35
36 pw = getpwnam(loguser);
37 if (!pw)
38 strerr_die3x(111,FATAL,"unknown account ",loguser);
39
40 init(dir,FATAL);
41 makelog(loguser,pw->pw_uid,pw->pw_gid);
42
43 makedir("env");
44 perm(02755);
45 start("env/ROOT"); outs(dir); outs("/root\n"); finish();
46 perm(0644);
47 start("env/IP"); outs(myip); outs("\n"); finish();
48 perm(0644);
49 start("env/BASE"); outs(base); outs("\n"); finish();
50 perm(0644);
51
52 start("run");
53 outs("#!/bin/sh\nexec 2>&1\nexec envuidgid "); outs(user);
54 outs(" envdir ./env softlimit -d250000 ");
55 outs(auto_home); outs("/bin/rbldns\n");
56 finish();
57 perm(0755);
58
59 makedir("root");
60 perm(02755);
61 start("root/data");
62 finish();
63 perm(0644);
64 start("root/Makefile");
65 outs("data.cdb: data\n");
66 outs("\t"); outs(auto_home); outs("/bin/rbldns-data\n");
67 finish();
68 perm(0644);
69
70 _exit(0);
71 }