Added support for MySQL. This has the side effect of making database:format a required config value.
This commit is contained in:
1 parent
27e242bbef
commit
fe57f6df3e
3 files changed
+58
-14
No files matched your search
@@ -15,7 +15,6 @@ use Sys::Hostname;
|
|||||||
use IO::Socket;
|
use IO::Socket;
|
||||||
use IO::Select;
|
use IO::Select;
|
||||||
use DBI;
|
use DBI;
|
||||||
use DBD::SQLite;
|
|
||||||
use Class::Unload;
|
use Class::Unload;
|
||||||
use FindBin qw($Bin);
|
use FindBin qw($Bin);
|
||||||
our $Bin = $Bin; ## no critic qw(NamingConventions::Capitalization Variables::ProhibitPackageVars)
|
our $Bin = $Bin; ## no critic qw(NamingConventions::Capitalization Variables::ProhibitPackageVars)
|
||||||
@@ -144,7 +143,7 @@ if (conf_get('die')) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
# Check for required configuration values.
|
# Check for required configuration values.
|
||||||
my @REQCVALS = qw(locale expire_logs server fantasy_pf ratelimit);
|
my @REQCVALS = qw(locale expire_logs server fantasy_pf ratelimit database:format);
|
||||||
foreach my $REQCVAL (@REQCVALS) {
|
foreach my $REQCVAL (@REQCVALS) {
|
||||||
if (!conf_get($REQCVAL)) {
|
if (!conf_get($REQCVAL)) {
|
||||||
my $err = 2;
|
my $err = 2;
|
||||||
@@ -168,11 +167,50 @@ println ' Success';
|
|||||||
API::Log::expire_logs();
|
API::Log::expire_logs();
|
||||||
|
|
||||||
# Connect to database.
|
# Connect to database.
|
||||||
if (!-e "$Bin/../etc/auto.db") {
|
our $DB;
|
||||||
system "touch $Bin/../etc/auto.db";
|
given (lc((conf_get('database:format'))[0][0])) {
|
||||||
system "chmod a+x $Bin/../etc/auto.db";
|
when ('sqlite') {
|
||||||
|
# SQLite.
|
||||||
|
if ($ENFEAT !~ /sqlite/) { err(2, 'Auto not built with SQLite support. Aborting.', 1); }
|
||||||
|
if (!conf_get('database:filename')) { err(2, 'Missing required configuration value database:filename. Aborting.', 1); }
|
||||||
|
|
||||||
|
# Import DBD::SQLite.
|
||||||
|
require DBD::SQLite;
|
||||||
|
|
||||||
|
if (!-e "$Bin/../etc/".(conf_get('database:filename'))[0][0]) {
|
||||||
|
# Create <database:filename> if it's missing.
|
||||||
|
system "touch $Bin/../etc/".(conf_get('database:filename'))[0][0];
|
||||||
|
system "chmod a+x $Bin/../etc/".(conf_get('database:filename'))[0][0];
|
||||||
|
}
|
||||||
|
# Connect to database.
|
||||||
|
$DB = DBI->connect("dbi:SQLite:dbname=$Bin/../etc/".(conf_get('database:filename'))[0][0], q{}, q{});
|
||||||
|
}
|
||||||
|
when ('mysql') {
|
||||||
|
# MySQL.
|
||||||
|
if ($ENFEAT !~ /mysql/) { err(2, 'Auto not built with SQLite support. Aborting.', 1); }
|
||||||
|
my @reqcval = qw(database:host database:name database:username database:password);
|
||||||
|
foreach (@reqcval) { if (!conf_get($_)) { err(2, "Missing required configuration value $_. Aborting.", 1); } }
|
||||||
|
undef @reqcval;
|
||||||
|
|
||||||
|
# Import DBD::mysql.
|
||||||
|
require DBD::mysql;
|
||||||
|
|
||||||
|
# Connect to database.
|
||||||
|
if (conf_get('database:port')) {
|
||||||
|
# If we were given a port, connect with it.
|
||||||
|
$DB = DBI->connect('DBI:mysql:database='.(conf_get('database:name'))[0][0].';host='.(conf_get('database:host'))[0][0].';port='.(conf_get('database:port'))[0][0],
|
||||||
|
(conf_get('database:username'))[0][0], (conf_get('database:password'))[0][0]);
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
# If not, connect without specifying a port.
|
||||||
|
$DB = DBI->connect('DBI:mysql:database='.(conf_get('database:name'))[0][0].';host='.(conf_get('database:host'))[0][0],
|
||||||
|
(conf_get('database:username'))[0][0], (conf_get('database:password'))[0][0]);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
# Unknown database format.
|
||||||
|
default { err(2, 'Unknown database format \''.lc((conf_get('database:format'))[0][0]).'\'. Aborting.', 1); }
|
||||||
}
|
}
|
||||||
our $DB = DBI->connect("dbi:SQLite:dbname=$Bin/../etc/auto.db", q{}, q{});
|
|
||||||
|
|
||||||
# Ratelimit timer.
|
# Ratelimit timer.
|
||||||
Core::IRC::clear_usercmd_timer();
|
Core::IRC::clear_usercmd_timer();
|
||||||
|
|||||||
@@ -3,6 +3,8 @@ Auto IRC Bot 3.0: Change Log
|
|||||||
|
|
||||||
3.0 Indev
|
3.0 Indev
|
||||||
===============================================================================
|
===============================================================================
|
||||||
|
* database:format now a required configuration value.
|
||||||
|
* Added support for MySQL. ./install --with-mysql
|
||||||
* Added a database upgrade script for upgrading the `qdb` table in 3.0.0a3
|
* Added a database upgrade script for upgrading the `qdb` table in 3.0.0a3
|
||||||
to the new format used by 3.0.0a4.
|
to the new format used by 3.0.0a4.
|
||||||
|
|
||||||
|
|||||||
@@ -17,7 +17,7 @@ our $VERSION = 1.00;
|
|||||||
our $ERROR = 0;
|
our $ERROR = 0;
|
||||||
|
|
||||||
# Iterate through the arguments passed to us.
|
# Iterate through the arguments passed to us.
|
||||||
my $features = 'base ssl';
|
my $features = 'base ssl sqlite';
|
||||||
if (defined $ARGV[0]) {
|
if (defined $ARGV[0]) {
|
||||||
foreach (@ARGV) {
|
foreach (@ARGV) {
|
||||||
if ($_ eq '-h' or $_ eq '--help') {
|
if ($_ eq '-h' or $_ eq '--help') {
|
||||||
@@ -28,17 +28,20 @@ if (defined $ARGV[0]) {
|
|||||||
println '*** End of Help ***';
|
println '*** End of Help ***';
|
||||||
exit 1;
|
exit 1;
|
||||||
}
|
}
|
||||||
elsif ($_ eq "--enable-sasl") {
|
elsif ($_ eq '--enable-sasl') {
|
||||||
$features .= " sasl";
|
$features .= ' sasl';
|
||||||
}
|
}
|
||||||
elsif ($_ eq "--disable-ssl") {
|
elsif ($_ eq '--disable-ssl') {
|
||||||
$features =~ s/ ssl//g;
|
$features =~ s/ ssl//g;
|
||||||
}
|
}
|
||||||
elsif ($_ eq "--enable-ipv6") {
|
elsif ($_ eq '--enable-ipv6') {
|
||||||
$features .= " ipv6";
|
$features .= ' ipv6';
|
||||||
|
}
|
||||||
|
elsif ($_ eq '--with-mysql') {
|
||||||
|
$features =~ s/sqlite/mysql/;
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
println "Warning: Unknown option '".$_."'";
|
println "Warning: Unknown option '$_'";
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -97,7 +100,8 @@ println 'Checking for required CPAN modules......';
|
|||||||
println "\0";
|
println "\0";
|
||||||
#modfind("Mouse");
|
#modfind("Mouse");
|
||||||
modfind('DBI');
|
modfind('DBI');
|
||||||
modfind('DBD::SQLite');
|
modfind('DBD::SQLite') if $features =~ /sqlite/;
|
||||||
|
modfind('DBD::mysql') if $features =~ /mysql/;
|
||||||
modfind('Class::Unload');
|
modfind('Class::Unload');
|
||||||
modfind('IO::Socket::INET6') if $features =~ /ipv6/;
|
modfind('IO::Socket::INET6') if $features =~ /ipv6/;
|
||||||
modfind('IO::Socket::SSL') if $features =~ /ssl/;
|
modfind('IO::Socket::SSL') if $features =~ /ssl/;
|
||||||
|
|||||||
Reference in new issue
Block a user