]> git.donarmstrong.com Git - infobot.git/blob - scripts/setup_users.pl
Initial revision
[infobot.git] / scripts / setup_users.pl
1 #!/usr/bin/perl
2 # setup_users: setup MYSQL/PGSQL side of things for blootbot.
3 # written by the xk.
4 ###
5
6 require "src/core.pl";
7 require "src/Misc.pl";
8 require "src/logger.pl";
9
10 &loadConfig("files/infobot.config");
11 my $dbname = $param{'DBName'};
12 my $query;
13
14 if ($dbname eq "") {
15   print "error: appears that teh config file was not loaded properly.\n";
16   exit 1;
17 }
18
19 if ($param{'DBType'} =~ /mysql/i) {
20     if (!scalar @ARGV) {
21         print "hi there.\n\n";
22
23         print "if you're running a new version of mysql (debian potato), run\n";
24         print "this script with the '1' parameter while '0' for older versions\n";
25         print "(debian slink).\n";
26         exit 0;
27     }
28
29     my $mysqlversion;
30     if ($ARGV[0] =~ /^\d+$/) {
31         if ($ARGV[0] == 0) {
32             $mysqlversion = 0;
33         } elsif ($ARGV[0] == 1) {
34             $mysqlversion = 1;
35         } else {
36             print "error: wrong integer?\n";
37         }
38     } else {
39         print "error: wrong argument?\n";
40         exit 1;
41     }
42
43     print "Enter root information...\n";
44     # username.
45     print "Username: ";
46     chop (my $adminuser = <STDIN>);
47
48     # passwd.
49     system "stty -echo";
50     print "Password: ";
51     chop(my $adminpass = <STDIN>);
52     print "\n";
53     system "stty echo";
54
55     if ($adminuser eq "" or $adminpass eq "") {
56         print "error: adminuser || adminpass is NULL.\n";
57         exit 1;
58     }
59
60     # Step 1.
61     print "Step 1: Adding user information.\n";
62
63     # open the db.
64     &openDB();
65
66     # Step 2.
67     if (!&sqlGet("user","user",$param{'mysqlUser'},"user")) {
68         print "  Adding user $param{'mysqlUser'} $dbname/user table...\n";
69
70         $query = "INSERT INTO user VALUES ".
71                 "('localhost', '$param{'mysqlUser'}', ".
72                 "password('$param{'mysqlPass'}'), ";
73
74         if ($mysqlversion) {
75             $query .= "'Y','Y','Y','Y','N','N','N','N','N','N','N','N','N','N')";
76         } else {
77             $query .= "'Y','Y','Y','Y','N','N','N','N','N','N')";
78         }
79
80         &dbRaw("create(user)", $query);
81     }
82
83     # Step 3. what's this for?
84     if (!&sqlGet("db","db",$param{'mysqlUser'},"db")) {
85         print "  Adding 'db' entry\n";
86
87         $query = "INSERT INTO db VALUES ".
88                 "('localhost', '$dbname', ".
89                 "'$param{'mysqlUser'}', ";
90
91         if ($mysqlversion) {
92             $query .= "'Y','Y','Y','Y','Y','N','N','N','N','N')";
93         } else {
94             $query .= "'Y','Y','Y','Y','Y','N')";
95         }
96
97         &dbRaw("create(db)", $query);
98     }
99
100     # grant.
101     print "  Granting user access to table.\n";
102     $query = "GRANT SELECT,INSERT,UPDATE,DELETE ON $dbname TO $param{'mysqlUser'}";
103     &dbRaw($query);
104
105     # flush.
106     print "Flushing privileges...\n";
107     $query = "FLUSH PRIVILEGES";                # DOES NOT WORK on slink?
108     &dbRaw("mysql(flush)", $query);
109
110     # create database.
111     print "Creating database $param{'DBName'}...\n";
112     $query = "CREATE DATABASE $param{'DBName'}";
113     &dbRaw("create(db $param{'DBName'})", $query);
114 } elsif ($param{'DBType'} =~ /pg|postgres/i) {
115     use Pg;
116     &openDB();
117
118     print "FIXME\n";
119 }
120
121 &closeDB();