961
command , shell script ,tool , crontab / Script php ช่วย generate ldif file ใช้ในการ import ข้อมูลเข้า ldap server ครับ
« on: มีนาคม 30, 2011, 04:31:02 PM »
#### Script php ช่วย generate ldif file ใช้ในการ import ข้อมูลเข้า ldap server ครับ ####
ก่อนจะใช้ script นี้ควรเตรียมไฟล์ข้อมูลให้เสร็จก่อนนะครับ
แล้วทำการใช้โปรแกรม navicat ช่วยอิมพอต ไฟล์ข้อมูลที่เตรียมไว้แล้ว ใส่ฐานข้อมูลแล้วให้ สคิปนี้ ช่วย generate อีกทีนะครัย
cherry# less get_data_to_ldap.php
<?php
//Connect confiG
$host = "localhost";
$rootadmin = "root";
$rootpassword = "zzzzz";
$dbname = "new_mail2";
//Connect
$link=mysql_connect($host,$rootadmin,$rootpassword) or die (mysql_error());
$select=mysql_select_db($dbname) or die (mysql_error());
// Query for table 'mailbox'
//$sqlgu="SELECT username, password, name, maildir, quota, domain FROM mailbox";
//Query for table 'new_mail'
$sqlgu="SELECT mail, password, CN, SN, mailautoreply, mailbox, quota, domain, username FROM new_mail";
$db_query=mysql_db_query($dbname,$sqlgu) or die(mysql_error());
$num_rows=mysql_num_rows($db_query);
$a=0;
while($a < $num_rows )
{
$result = mysql_fetch_array($db_query);
$mail=$result[mail];
$password=$result[password];
$CN=$result[CN];
$SN=$result[SN];
$mailbox=$result[mailbox];
$quota=$result[quota];
$domain=$result[domain];
$username=$result[username];
$mailautoreply=$result[mailautoreply];
$password_hash = '';
$md5_hash = md5($password);
for ( $i = 0; $i < 32; $i += 2 )
$password_hash .= chr( hexdec( $md5_hash{ $i + 1 } ) + hexdec( $md5_hash{ $i } ) * 16 );
$password_hash = '{MD5}'.base64_encode($password_hash);
#$md5pass=md5($password);
echo "dn: mail=$mail,vd=$domain,o=hosting,dc=xxx,dc=xxx,dc=th\n";
echo "objectClass: top\n";
echo "objectClass: VirtualMailAccount\n";
echo "objectClass: Vacation\n";
echo "objectClass: VirtualForward\n";
echo "objectClass: amavisAccount\n";
echo "mail: $mail\n";
echo "userPassword: $password_hash\n";
echo "cn: $CN\n";
echo "sn: $SN\n";
echo "smtpAuth: TRUE\n";
echo "quota: $quota\n";
echo "accountActive: TRUE\n";
echo "vdHome: /mbox\n";
echo "mailbox: $mailbox\n";
echo "uid: $username\n";
echo "mailAutoreply: $mailautoreply\n";
echo "delete: FALSE\n";
echo "otherTransport: phamm:\n";
echo "forwardActive: FALSE\n";
echo "amavisBypassVirusChecks: FALSE\n";
echo "amavisBypassSpamChecks: FALSE\n";
echo "amavisSpamKillLevel: 6.0\n";
echo "amavisSpamTag2Level: 6.0\n";
echo "amavisSpamTagLevel: 6.0\n";
echo "creationDate: 20101013\n";
echo "lastChange: 1225772978\n";
echo "vacationActive: FALSE\n";
echo "\n";
echo "\n";
$a++;
}
//echo "<center><br> All Record = $num_rows</center>";
mysql_close();
?>
ก่อนจะใช้ script นี้ควรเตรียมไฟล์ข้อมูลให้เสร็จก่อนนะครับ
แล้วทำการใช้โปรแกรม navicat ช่วยอิมพอต ไฟล์ข้อมูลที่เตรียมไว้แล้ว ใส่ฐานข้อมูลแล้วให้ สคิปนี้ ช่วย generate อีกทีนะครัย
cherry# less get_data_to_ldap.php
<?php
//Connect confiG
$host = "localhost";
$rootadmin = "root";
$rootpassword = "zzzzz";
$dbname = "new_mail2";
//Connect
$link=mysql_connect($host,$rootadmin,$rootpassword) or die (mysql_error());
$select=mysql_select_db($dbname) or die (mysql_error());
// Query for table 'mailbox'
//$sqlgu="SELECT username, password, name, maildir, quota, domain FROM mailbox";
//Query for table 'new_mail'
$sqlgu="SELECT mail, password, CN, SN, mailautoreply, mailbox, quota, domain, username FROM new_mail";
$db_query=mysql_db_query($dbname,$sqlgu) or die(mysql_error());
$num_rows=mysql_num_rows($db_query);
$a=0;
while($a < $num_rows )
{
$result = mysql_fetch_array($db_query);
$mail=$result[mail];
$password=$result[password];
$CN=$result[CN];
$SN=$result[SN];
$mailbox=$result[mailbox];
$quota=$result[quota];
$domain=$result[domain];
$username=$result[username];
$mailautoreply=$result[mailautoreply];
$password_hash = '';
$md5_hash = md5($password);
for ( $i = 0; $i < 32; $i += 2 )
$password_hash .= chr( hexdec( $md5_hash{ $i + 1 } ) + hexdec( $md5_hash{ $i } ) * 16 );
$password_hash = '{MD5}'.base64_encode($password_hash);
#$md5pass=md5($password);
echo "dn: mail=$mail,vd=$domain,o=hosting,dc=xxx,dc=xxx,dc=th\n";
echo "objectClass: top\n";
echo "objectClass: VirtualMailAccount\n";
echo "objectClass: Vacation\n";
echo "objectClass: VirtualForward\n";
echo "objectClass: amavisAccount\n";
echo "mail: $mail\n";
echo "userPassword: $password_hash\n";
echo "cn: $CN\n";
echo "sn: $SN\n";
echo "smtpAuth: TRUE\n";
echo "quota: $quota\n";
echo "accountActive: TRUE\n";
echo "vdHome: /mbox\n";
echo "mailbox: $mailbox\n";
echo "uid: $username\n";
echo "mailAutoreply: $mailautoreply\n";
echo "delete: FALSE\n";
echo "otherTransport: phamm:\n";
echo "forwardActive: FALSE\n";
echo "amavisBypassVirusChecks: FALSE\n";
echo "amavisBypassSpamChecks: FALSE\n";
echo "amavisSpamKillLevel: 6.0\n";
echo "amavisSpamTag2Level: 6.0\n";
echo "amavisSpamTagLevel: 6.0\n";
echo "creationDate: 20101013\n";
echo "lastChange: 1225772978\n";
echo "vacationActive: FALSE\n";
echo "\n";
echo "\n";
$a++;
}
//echo "<center><br> All Record = $num_rows</center>";
mysql_close();
?>