]> git.treefish.org Git - fex.git/blob - bin/mksgkeys
Original release 20160104
[fex.git] / bin / mksgkeys
1 #!/usr/bin/perl -w
2
3 # helper script to regenerate missing SKEYs and GKEYs
4
5 use Digest::MD5 qw(md5_hex);
6
7 @pw = getpwnam('fex');
8 $spool = $pw[7].'/spool';
9 chdir $spool or die "$spool - $!";
10
11 foreach $suf (glob "*/\@SUBUSER") {
12   if (-f $suf and open $suf,$suf) {
13     $to = $user = $suf;
14     $to =~ s:/.*::;
15     $user =~ s:/.*::;
16     while (<$suf>) {
17       chomp;
18       s/#.*//;
19       if (/(.+):(.+)/) {
20         $from = $1;
21         $id = $2;
22         $skey = md5_hex("$user:$from:$id");
23         unless (-f ".skeys/$skey") {
24           if (open $skey,">.skeys/$skey") {
25             warn "creating $spool/.skeys/$skey\n";
26             print {$skey} "from=$from\n";
27             print {$skey} "to=$to\n";
28             print {$skey} "id=$id\n";
29             close $skey;
30           }
31         }
32       }
33     }
34     close $suf;
35   }
36 }
37
38 foreach $guf (glob "*/\@GROUP/*") {
39   if (-f $guf and not -l $guf and open $guf,$guf) {
40     $group = $user = $guf;
41     $group =~ s:.*/::;
42     $user =~ s:/.*::;
43     while (<$guf>) {
44       chomp;
45       s/#.*//;
46       if (/(.+):(.+)/) {
47         $from = $1;
48         $id = $2;
49         $gkey = md5_hex("$user:$group:$from:$id");
50         unless (-f ".gkeys/$gkey") {
51           if (open $gkey,">.gkeys/$gkey") {
52             warn "creating $spool/.gkeys/$gkey\n";
53             print {$gkey} "from=$from\n";
54             print {$gkey} "to=\@$group\n";
55             print {$gkey} "user=$user\n";
56             print {$gkey} "id=$id\n";
57             close $gkey;
58           }
59         }
60       }
61     }
62     close $guf;
63   }
64 }