View Single Post
  #1  
Old 12-24-2013, 12:36 AM
Akkadius's Avatar
Akkadius
Administrator
 
Join Date: Feb 2009
Location: MN
Posts: 2,071
Default Plugin::LoadMysql()

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

Code:
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

Code:
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);
}
Reply With Quote