PDA

View Full Version : Plugin::LoadMysql()


Akkadius
12-24-2013, 12:36 AM
Purpose:

Meant as a precursor to other plugins, all it does is load a DBI session based on Mysql credentials. This plugin is extremely simple and loads a DBI session

----------------------------

You have two options for how you want to load Perl DBI, you can statically put your database username and password in the LoadMysql plugin for speed, or you can have it dynamically loaded from your eqemu_config.xml file.

Plugin File: mysql.pl

----------------------------

Load from eqemu_config.xml

sub LoadMysql{
use DBI;
use DBD::mysql;
# CONFIG VARIABLES
my $confile = "eqemu_config.xml"; #default
open(F, "<$confile") or die "Unable to open config: $confile\n";
my $indb = 0;

while(<F>) {
s/\r//g;
if(/<database>/i) {
$indb = 1;
}
next unless($indb == 1);
if(/<\/database>/i) {
$indb = 0;
last;
}
if(/<host>(.*)<\/host>/i) {
$host = $1;
} elsif(/<username>(.*)<\/username>/i) {
$user = $1;
} elsif(/<password>(.*)<\/password>/i) {
$pass = $1;
} elsif(/<db>(.*)<\/db>/i) {
$db = $1;
}
}
# DATA SOURCE NAME
$dsn = "dbi:mysql:$db:localhost:3306";
# PERL DBI CONNECT
$connect = DBI->connect($dsn, $user, $pass);
}

OR Static Load credentials

sub LoadMysql{
use DBI;
use DBD::mysql;
# CONFIG VARIABLES
$host = 127.0.0.1;
$user = "dbuser";
$pass = "dbpass";
$db = "dbname";
$dsn = "dbi:mysql:$db:localhost:3306";
return DBI->connect($dsn, $user, $pass);
}