]> git.donarmstrong.com Git - infobot.git/blob - setup/setup.pl
dunno
[infobot.git] / setup / setup.pl
1 #!/usr/bin/perl
2 # setup_tables: setup MYSQL/PGSQL side of things for infobot.
3 # written by the xk.
4 ###
5
6 require "src/logger.pl";
7 require "src/core.pl";
8 require "src/modules.pl";
9 require "src/Misc.pl";
10 require "src/CLI/Support.pl";
11
12 $bot_src_dir = "src/";
13
14 # read param stuff from infobot.config.
15 &loadConfig("files/infobot.config");
16
17 &loadDBModules();
18 my $dbname = $param{'DBName'};
19 my $query;
20
21 if ( $dbname eq "" ) {
22     print "error: appears that the config file was not loaded properly.\n";
23     exit 1;
24 }
25
26 if ( $param{'DBType'} =~ /mysql/i ) {
27     use DBI;
28
29     print "Enter root information...\n";
30
31     # username.
32     print "Username: ";
33     chop( my $adminuser = <STDIN> );
34
35     # passwd.
36     system "stty -echo";
37     print "Password: ";
38     chop( my $adminpass = <STDIN> );
39     print "\n";
40     system "stty echo";
41
42     if ( $adminuser eq "" or $adminpass eq "" ) {
43         &ERROR("error: adminuser || adminpass is NULL.");
44         exit 1;
45     }
46
47     &sqlOpenDB( "mysql", "mysql", $adminuser, $adminpass );
48
49     my $database_exists = 0;
50     foreach $database ( &sqlRawReturn("SHOW DATABASES") ) {
51         $database_exists++ if $database eq $param{DBName};
52     }
53     if ($database_exists) {
54         &status("Database '$param{DBName}' already exists. Continuing...");
55     }
56     else {
57         &status("Creating db ...");
58         &sqlRaw( "create(database)", "CREATE DATABASE $param{DBName}" );
59     }
60
61     &status("--- Adding user information for user '$param{'SQLUser'}'");
62
63     if (
64         !&sqlSelect(
65             "user", "user", { 'user' => &sqlQuote( $param{'SQLUser'} ) }
66         )
67       )
68     {
69         &status("--- Adding user '$param{'SQLUser'}' $dbname/user table...");
70
71         $query =
72             "INSERT INTO user VALUES "
73           . "('localhost', '$param{'SQLUser'}', "
74           . "password('$param{'SQLPass'}'), ";
75
76         $query .= "'Y','Y','Y','Y','Y','Y','N','N','N','N','N','N','N','N')";
77
78         &sqlRaw( "create(user)", $query );
79     }
80     else {
81         &status("... user information already present.");
82     }
83
84     if ( !&sqlSelect( "db", "db", { 'db' => &sqlQuote( $param{'SQLUser'} ) } ) )
85     {
86         &status("--- Adding database information for database '$dbname'.");
87
88         $query =
89             "INSERT INTO db VALUES "
90           . "('localhost', '$dbname', "
91           . "'$param{'SQLUser'}', ";
92
93         $query .= "'Y','Y','Y','Y','Y','Y','Y','N','N','N')";
94
95         &sqlRaw( "create(db)", $query );
96     }
97     else {
98         &status("... db info already present.");
99     }
100
101     # flush.
102     &status("Flushing privileges...");
103     $query = "FLUSH PRIVILEGES";
104     &sqlRaw( "mysql(flush)", $query );
105 }
106
107 &status("Done.");
108
109 &sqlCloseDB();
110
111 # vim:ts=4:sw=4:expandtab:tw=80