X-Git-Url: https://git.donarmstrong.com/?a=blobdiff_plain;f=setup%2Fsetup.pl;h=89393bd1fc1039e92cd98107d01e277e81b70e22;hb=45e51047c2df703229843193e49fb9829489170f;hp=049122af8d94104a3a4189a2a28b5bfbec95a48f;hpb=0ef144e783640f511679d091e5371567bea14d8f;p=infobot.git diff --git a/setup/setup.pl b/setup/setup.pl index 049122a..89393bd 100755 --- a/setup/setup.pl +++ b/setup/setup.pl @@ -1,218 +1,111 @@ #!/usr/bin/perl -# setup_tables: setup MYSQL/PGSQL side of things for blootbot. +# setup_tables: setup MYSQL/PGSQL side of things for infobot. # written by the xk. ### -require "src/core.pl"; require "src/logger.pl"; +require "src/core.pl"; require "src/modules.pl"; require "src/Misc.pl"; -require "src/interface.pl"; +require "src/CLI/Support.pl"; + +$bot_src_dir = "src/"; -$bot_src_dir = "./src/"; +# read param stuff from infobot.config. +&loadConfig("files/infobot.config"); -# read param stuff from blootbot.config. -&loadConfig("files/blootbot.config"); &loadDBModules(); my $dbname = $param{'DBName'}; my $query; -if ($dbname eq "") { - print "error: appears that teh config file was not loaded properly.\n"; - exit 1; +if ( $dbname eq "" ) { + print "error: appears that the config file was not loaded properly.\n"; + exit 1; } -if ($param{'DBType'} =~ /mysql/i) { +if ( $param{'DBType'} =~ /mysql/i ) { use DBI; print "Enter root information...\n"; + # username. print "Username: "; - chop (my $adminuser = ); + chop( my $adminuser = ); # passwd. system "stty -echo"; print "Password: "; - chop(my $adminpass = ); + chop( my $adminpass = ); print "\n"; system "stty echo"; - if ($adminuser eq "" or $adminpass eq "") { - &ERROR("error: adminuser || adminpass is NULL."); - exit 1; - } - - &openDB("mysql", $adminuser, $adminpass); - - &status("Creating db ..."); - &dbRaw("CREATE DATABASE $param{'DBName'}"); - - # Step 1. - &status("Step 1: Adding user information."); - - # Step 2. - if (!&dbGet("user","user",$param{'SQLUser'},"user")) { - &status(" Adding user $param{'SQLUser'} $dbname/user table..."); - - $query = "INSERT INTO user VALUES ". - "('localhost', '$param{'SQLUser'}', ". - "password('$param{'SQLPass'}'), "; - - $query .= "'Y','Y','Y','Y','Y','Y','N','N','N','N','N','N','N','N')"; -### $query .= "'Y','Y','Y','Y','N','N','N','N','N','N')"; - - &dbRaw("create(user)", $query); + if ( $adminuser eq "" or $adminpass eq "" ) { + &ERROR("error: adminuser || adminpass is NULL."); + exit 1; } - # Step 3. what's this for? - if (!&dbGet("db","db",$param{'SQLUser'},"db")) { - &status(" Adding 'db' entry"); - - $query = "INSERT INTO db VALUES ". - "('localhost', '$dbname', ". - "'$param{'SQLUser'}', "; - - $query .= "'Y','Y','Y','Y','Y','Y','Y','N','N','N')"; -### $query .= "'Y','Y','Y','Y','Y','N')"; + &sqlOpenDB( "mysql", "mysql", $adminuser, $adminpass ); - &dbRaw("create(db)", $query); + my $database_exists = 0; + foreach $database ( &sqlRawReturn("SHOW DATABASES") ) { + $database_exists++ if $database eq $param{DBName}; } - - # grant. - &status(" Granting user access to table."); - foreach ("factoids","seen","freshmeat") { - $query = "GRANT SELECT,INSERT,UPDATE,DELETE ON $dbname.$_ TO $param{'SQLUser'}"; - &dbRaw("GRANT", $query); - } - - # flush. - &status("Flushing privileges..."); - $query = "FLUSH PRIVILEGES"; # DOES NOT WORK on slink? - &dbRaw("mysql(flush)", $query); - -} elsif ($param{'DBType'} =~ /pgsql|postgres/i) { - if ($param{'DBType'} =~ /pgsql|postgres/i) { use Pg; } # for runtime. - my $dbh = Pg::connectdb("dbname=$dbname"); - - if (PGRES_CONNECTION_OK eq $conn->status) { - print " opened mysql connection to $param{'mysqlHost'}\n"; - } else { - print " error: cannot connect to $param{'mysqlHost'}.\n"; - print " $conn->errorMessage\n"; - exit 1; + if ($database_exists) { + &status("Database '$param{DBName}' already exists. Continuing..."); } - - # retrieve a list of db's from the server. - my %db; - foreach ($dbh->func('_ListTables')) { - $db{$_} = 1; + else { + &status("Creating db ..."); + &sqlRaw( "create(database)", "CREATE DATABASE $param{DBName}" ); } - # Step 4. - print "Step 4: Creating the tables.\n"; - - # factoid db. - if (!exists $db{'factoids'}) { - print " creating new table factoids...\n"; - - $query = "CREATE TABLE factoids (". - "factoid_key varying(64) NOT NULL,". - - "requested_by varying(64),". - "requested_time numeric(11,0),". - "requested_count numeric(5,0),". - "created_by varying(64),". - "created_time numeric(11,0),". + &status("--- Adding user information for user '$param{'SQLUser'}'"); - "modified_by character varying(192),". - "modified_time numeric(11,0),". + if ( + !&sqlSelect( + "user", "user", { 'user' => &sqlQuote( $param{'SQLUser'} ) } + ) + ) + { + &status("--- Adding user '$param{'SQLUser'}' $dbname/user table..."); - "locked_by character varying(64),". - "locked_time numeric(11,0),". + $query = + "INSERT INTO user VALUES " + . "('localhost', '$param{'SQLUser'}', " + . "password('$param{'SQLPass'}'), "; - "factoid_value text NOT NULL,". + $query .= "'Y','Y','Y','Y','Y','Y','N','N','N','N','N','N','N','N')"; - "PRIMARY KEY (factoid_key)". - ")"; - - &dbRaw("create(factoids)", $query); + &sqlRaw( "create(user)", $query ); } - - # freshmeat. - if (!exists $db{'freshmeat'}) { - print " creating new table freshmeat...\n"; - - $query = "CREATE TABLE freshmeat (". - "name charcter varying(64) NOT NULL,". - "stable character varying(32),". - "devel character varying(32),". - "section character varying(40),". - "license character varying(32),". - "homepage character varying(128),". - "download character varying(128),". - "changelog character varying(128),". - "deb character varying(128),". - "rpm character varying(128),". - "link character varying(55),". - "oneliner character varying(96) NOT NULL,". - - "PRIMARY KEY (name)". - ")"; - - &dbRaw("create(freshmeat)", $query); + else { + &status("... user information already present."); } - # karma. - if (!exists $db{'karma'}) { - print " creating new table karma...\n"; + if ( !&sqlSelect( "db", "db", { 'db' => &sqlQuote( $param{'SQLUser'} ) } ) ) + { + &status("--- Adding database information for database '$dbname'."); - $query = "CREATE TABLE karma (". - "nick character varying(20) NOT NULL,". - "karma numeric(5,0),". + $query = + "INSERT INTO db VALUES " + . "('localhost', '$dbname', " + . "'$param{'SQLUser'}', "; - "PRIMARY KEY (nick)". - ")"; + $query .= "'Y','Y','Y','Y','Y','Y','Y','N','N','N')"; - &dbRaw("create(karma)", $query); + &sqlRaw( "create(db)", $query ); } - - # rootwarn. - if (!exists $db{'rootwarn'}) { - print " creating new table rootwarn...\n"; - - $query = "CREATE TABLE rootwarn (". - "nick character varying(20) NOT NULL,". - "attempt numeric(5,0),". - "time numeric(11,0) NOT NULL,". - "host character varying(80) NOT NULL,". - "channel character varying(20) NOT NULL,". - - "PRIMARY KEY (nick)". - ")"; - - &dbRaw("create(rootwarn)", $query); + else { + &status("... db info already present."); } - # seen. - if (!exists $db{'seen'}) { - print " creating new table seen...\n"; - - $query = "CREATE TABLE seen (". - "nick character varying(20) NOT NULL,". - "time numeric(11,0) NOT NULL,". - "channel character varying(20) NOT NULL,". - "host character varying(80) NOT NULL,". - "messagecount numeric(5,0),". - "hehcount numeric(5,0),". - "message text NOT NULL,". - - "PRIMARY KEY (nick)". - ")"; - - &dbRaw("create(seen)", $query); - } + # flush. + &status("Flushing privileges..."); + $query = "FLUSH PRIVILEGES"; + &sqlRaw( "mysql(flush)", $query ); } -print "Done.\n"; +&status("Done."); + +&sqlCloseDB(); -&closeDB(); +# vim:ts=4:sw=4:expandtab:tw=80