<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>www.GunnarD.se &#187; ejabberd</title>
	<atom:link href="http://www.gunnard.se/tag/ejabberd/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.gunnard.se</link>
	<description>GunnarD - Diverse info och blogg.</description>
	<lastBuildDate>Wed, 28 Dec 2011 16:46:22 +0000</lastBuildDate>
	<language>en-US</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.4-alpha-19861</generator>
		<item>
		<title>Authenticate eJabberd against MySQL with Perl</title>
		<link>http://www.gunnard.se/2009/03/08/authenticate-ejabberd-against-mysql-with-perl/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=authenticate-ejabberd-against-mysql-with-perl</link>
		<comments>http://www.gunnard.se/2009/03/08/authenticate-ejabberd-against-mysql-with-perl/#comments</comments>
		<pubDate>Sun, 08 Mar 2009 09:57:14 +0000</pubDate>
		<dc:creator>GunnarD</dc:creator>
				<category><![CDATA[Tips&Trix]]></category>
		<category><![CDATA[ejabberd]]></category>

		<guid isPermaLink="false">http://www.gunnard.se/?p=219</guid>
		<description><![CDATA[I have modified Alejandro Grijalba perl script check_mysql.pl so i does not spawn other program when it needs to communicate with mysql, now i use DBI::MySQL instedd. #!/usr/bin/perl # Mysql external auth script # Features: auth and isUser work, but setPass doesn&#039;t. # Restrictions: Username or passwords may not contain some special characters: $&#039;&#34;` #nor [...]]]></description>
			<content:encoded><![CDATA[<p>I have modified Alejandro Grijalba perl script check_mysql.pl so i does not spawn other program when it needs to communicate with mysql, now i use DBI::MySQL instedd.<br />
<span id="more-219"></span></p>
<pre class="brush: perl; ">

#!/usr/bin/perl
# Mysql external auth script
# Features: auth and isUser work, but setPass doesn&#039;t.
# Restrictions: Username or passwords may not contain some special characters: $&#039;&quot;`
#nor line breaks

# 2005-1-24 Modified by Alejandro Grijalba (SuD) http://www.latinsud.com
# Based on check_pass_null.pl script
# 2009-3-6 Modified by Gunnar Dahlström http://www.gunnard.se
# Based on check_mysql.pl

my $dbHost=&quot;localhost&quot;;
my $dbUser=&quot;username&quot;;
my $dbPass=&quot;password&quot;;
my $dbName=&quot;database&quot;;
my $dbTable=&quot;Users&quot;;
my $fieldUser=&quot;username&quot;;
my $fieldPass=&quot;password&quot;;

use Unix::Syslog qw(:macros :subs);
use DBI;

my $domain = $ARGV[0] || &quot;localhost&quot;;

while(1) {
my $buf = &quot;&quot;;
syslog LOG_INFO,&quot;waiting for packet&quot;;
my $nread = sysread STDIN,$buf,2;
do { syslog LOG_INFO,&quot;port closed&quot;; exit; } unless $nread == 2;
my $len = unpack &quot;n&quot;,$buf;
my $nread = sysread STDIN,$buf,$len;
my ($op,$user,$host,$password) = split /:/,$buf;

# Filter dangerous characters
$user =~ s/[.&quot;\n\r&#039;\$`]//g;
$password =~ s/[.&quot;\n\r&#039;\$`]//g;

my $jid = &quot;$user\@$domain&quot;;
my $result;

syslog(LOG_INFO,&quot;request (%s)&quot;, $op);

SWITCH: {
$op eq &#039;auth&#039; and do {
$result = 0;
$dbh = DBI-&gt;connect(&quot;DBI:mysql:database=$dbName;host=$dbHost&quot;, $dbUser, $dbPass);
$sql = &quot;SELECT COUNT(*) AS nr FROM $dbTable WHERE  $fieldUser=&#039;$user&#039; AND $fieldPass=Password(&#039;$password&#039;)&quot;;
$sth = $dbh-&gt;prepare($sql);
$sth-&gt;execute();
$row = $sth-&gt;fetchrow_hashref();
$orden=$row-&gt;{&#039;nr&#039;};
$sth-&gt;finish();
$result = $orden;
},last SWITCH;

$op eq &#039;setpass&#039; and do {
$result = 0;
},last SWITCH;

$op eq &#039;isuser&#039; and do {
# password is null. Return 1 if the user $user\@$domain exitst.
$result = 0;
$dbh = DBI-&gt;connect(&quot;DBI:mysql:database=$dbName;host=$dbHost&quot;, $dbUser, $dbPass);
$sql = &quot;SELECT COUNT(*) AS nr FROM $dbTable WHERE  $fieldUser=&#039;$user&#039;&quot;;
$sth = $dbh-&gt;prepare($sql);
$sth-&gt;execute();
$row = $sth-&gt;fetchrow_hashref();
$orden=$row-&gt;{&#039;nr&#039;};
$sth-&gt;finish();
$result = $orden;
},last SWITCH;
};
my $out = pack &quot;nn&quot;,2,$result ? 1 : 0;
syswrite STDOUT,$out;
}

closelog;
</pre>
]]></content:encoded>
			<wfw:commentRss>http://www.gunnard.se/2009/03/08/authenticate-ejabberd-against-mysql-with-perl/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

