php code สำหรับติดต่อ ldap server

22 ก.ย.54 มีโอกาสเรียนรู้การเขียนโปรแกรมด้วยภาษา PHP ติดต่อกับ LDAP Server โดยมี engineer ติดตั้ง server ตัวนี้ไว้ แล้วผมมีหน้าที่เข้าไปใช้งาน ก็คิดว่าจะใช้ php (ใช้ phpinfo ตรวจแล้วพบว่า php สามารถใช้ ldap ได้) เข้าไปอ่านข้อมูลผู้ใช้ เพื่อทำ authentication ตรวจผู้ใช้งานระบบ และ code ชุดนี้เป็นตัวอย่างที่ผมใช้ติดต่อกับ ldap server การติดต่อนั้นอาจใช้ browser

พิมพ์ ldap://www.domain.com:389
/uid=BURIN_R,ou=CLERK,ou=OFFICE1,dc=domain,dc=com

ก็จะเปิดด้วยโปรแกรม Windows Contact ขึ้นมาอัตโนมัติ

<?
$host = “ldap://www.domain.com“;
$baseDn1 = ‘cn=Manager,dc=domain,dc=com‘;
$baseDn2 = ‘uid=BURIN_R,ou=CLERK,ou=OFFICE1,dc=domain,dc=com‘;
$password = “your password“;
$ldap = ldap_connect($host);
ldap_set_option($ldap, LDAP_OPT_PROTOCOL_VERSION, 3);
$b = ldap_bind($ldap,$baseDn1,$password) or die(“bind died”);
echo “<pre>bind :”;
if($b) echo “pass”; else echo “fail”;
$result = ldap_search($ldap, $baseDn2,”(cn=*)”);
$rec = ldap_get_entries($ldap,$result);
echo ldap_count_entries($ldap,$result);
echo $rec[0][“cn”][0];
echo $rec[0][“userpassword”][0];
echo $rec[0][0][0];
print_r($rec);
ldap_unbind($ldap);
?>

โปรแกรมแก้วสารพัดนึกรุ่น 7.0

thaiabc 7.0
thaiabc 7.0

โปรแกรม thaiabc หรือที่ผมเรียกว่า โปรแกรมแก้วสารพัดนึก ปรับรุ่นเป็น 7.0 แล้ว โดยมีการปรับปรุงที่สำคัญต่อจากรุ่น 6.5 ดังนี้
1. เพิ่ม LDAP และ PDO Extension ใน php.ini
2. upgrade MySQL เป็นรุ่น 5.5.16
3. upgrade phpMyadmin เป็นรุ่น 3.4.5
4. upgrade WordPress เป็นรุ่น 3.2.1
5. upgrade Drupal เป็นรุ่น 7.8
6. เพิ่ม บทความ itinlife เป็น 308 บทความ
7. download บันทึกทั้งหมดจาก thaiall.com/blog

สิ่งที่คาดหวัง
1. ช่วยให้ คนไทย เรียนรู้ Web Server, Database, Programming, e-Commerce, e-Learning, CMS, Blog และระบบต่าง ๆ จากในเครื่องคอมพิวเตอร์ของตนเอง ทั้งแบบ Online และ Offline
2. ช่วยให้ ครู นักเรียน และนักพัฒนา สามารถติดตั้ง หรือสร้างตัวติดตั้งโปรแกรมของตนเอง และใช้งานได้ในเวลาที่รวดเร็ว ใช้งานจริงได้ทั้งใน Stand Alone, Intranet และ Internet

โปรแกรมเผยแพร่ไว้ 2 site
http://www.4shared.com/file/-GUaqgqy/thaiabc70.html
http://www.4shared.com/file/izAeFHam/thaiabc70.html

ทดสอบ moodle ใน hypermart server

guest allowed
guest allowed

12 ก.ค.54 ติดตั้ง moodle 1.9.12 สำเร็จ ด้วยคำแนะนำของ server ที่บอกว่าห้องเก็บข้อมูลแท้จริงของ hypermart.net คืออะไร หลังติดตั้งเสร็จ ก็สร้างวิชา โดยต้องการให้ guest สามารถเข้ามาเรียนรู้ได้ มี option ของวิชาที่กำหนด default เป็น Do not allow get in แล้วผมก็เปลี่ยนเป็น Allow guest without the key เพียงเท่านี้ แขกที่ไม่มีกุญแจ ก็เรามาร่วมเรียนรู้ได้ครับ

เมื่อเข้ามาก็เปลี่ยน theme เป็น wood ส่วนข้อผิดพลาดที่เปลี่ยนรหัสผ่านในเครื่องบริการตัวเก่า ไม่พบปัญหานี้ใน server ของ hypermart

แก้ปัญหา child died เมื่อใช้ ftp ติดต่อกับ vsftp server

basic to ftp using
basic to ftp using
12 ก.ค.54 ใน ftp server ของ fedora 15 หลังจากติดตั้ง เปิดบริการ และสร้างสมาชิกเรียบร้อยแล้ว แต่เข้าระบบผ่าน client หรือใน server แล้วก็ถูกปฏิเสธหลังจากผ่านการ account authentication ซึ่งก่อนหน้านี้ปิด firewall ไปแล้ว แต่ก็ยังพบข้อความว่า
500 OOPS: cannot change directory:/home/someuser
500 OOPS: child died
ผมแก้ไขโดยการสั่ง (ใช้ -P ต้องรอหน่อย ช้า  อย่าใจร้อน)
#setsebool ftp_home_dir 1
#setsebool allow_ftpd_full_access
1
#setsebool httpd_read_user_content 1
#setsebool httpd_enable_homedirs 1
ถ้าต้องการทราบว่าแต่ละค่ากำหนดอะไรไว้ ก็ใช้ #getsebool
แฟ้ม config คือ /etc/selinux/targeted/modules/active/booleans.local
แต่อย่าแก้แฟ้ม config นะครับ เพราะไม่ได้ผล ต้องใช้ #setsebool -P  …

http://rackerhacker.com/2007/06/14/500-oops-error-from-vsftpd/
http://www.thaiall.com/learn/useftp.htm
http://www.thaiall.com/downloadx/ws_ftp32.exe
http://www.thaiall.com/downloadx/putty.exe
http://fedoraproject.org/wiki/SELinux/apache
http://www.thaiall.com/downloadx/putty.exe

เปิด port ด้วย VNC แล้วหนาว ๆ ชอบกล

vnc port
vnc port

ศุกร์ที่ 1 ก.ค.54 เกิดเห็นร้ายจากการเปิด port 21 (FTP) ในเครื่องอันนี่พอต (Honey pot : web server) แล้วมีการโจมตีเข้ามา เพราะไม่ได้เปิดแบบ secure port และรหัสผ่านไม่ได้มาตรฐาน ทำให้การโจมตีของสคริ๊ปประสงค์ร้าย (Intruder Script) สำเร็จ .. แล้วผลของการถูกบุกรุกเข้าสู่ระบบ คือ เกิดการลบแฟ้มทีละแฟ้มทีละโฟร์เดอร์ มาทราบผลตอนได้รับแจ้งจากผู้ใช้ (Monitor) ว่าเข้าข้อมูลที่เขาต้องการไม่พบ เมื่อหยุดระบบถึงทราบว่าห้องเก็บข้อมูลหายไปเกือบร้อยกว่าห้อง เมื่อกู้ด้วย recuva ก็ได้มาไม่ครบ ส่วนระบบสำรองข้อมูลก็ทำมาแล้ว 6 เดือน  (Innovation) แต่มีคำปลอบใจว่าโจรขึ้นบ้านสิบครั้งไม่เท่าไฟไหม้ครั้งเดียว (Awareness)

มาวันนี้ติดตั้ง RealVNC เพื่อทดสอบการ Remote Control เข้ามาดูแล ก็พบว่าหลังติดตั้งจะเปิด Port 5800 และ 5900 แล้วนึกได้ว่าไม่เปิดดีกว่า ถ้าจะใช้เมื่อไรก็ค่อยเปิด เพราะเปิดไว้มีปัญหา 2 เรื่อง คือ เครื่องทำงานมากขึ้นเพราะต้องรอให้บริการ และถ้าผู้ไม่ประสงค์ดียิงเข้ามาอาจมีสักวันที่ Hack Password ได้สำเร็จ เหมือนที่เคยถูกกระทำมาแล้ว

http://www.realvnc.com/products/download.html

facebook app of developers

canvas facebook
canvas facebook

9 ก.ค.54 ก้าวที่ 1 ในส่วนของ facebook app of developers สร้างได้เรียบร้อย .. เสียเวลาไปประมาณ 2 ชั่วโมงกว่าจะรู้ว่า linux server ของ godaddy.com ที่ผมใช้มีปัญหา แต่ตัวที่เป็น windows server ใช้งานได้ทันที .. ปัญหาคือ code หยุดทำงานตั้งแต่ require_once ‘../lib/src/facebook.php’;
การสร้าง facebook app
1. เริ่มจาก เข้าเว็บไซต์ https://www.facebook.com/developers/ กรอกข้อมูลให้เรียบร้อย
2. เมื่อสร้างเสร็จใน my app : your app มีคำว่า example code คลิ๊ก แล้วคัดลอกไว้
3. เข้า https://github.com/facebook/php-sdk/ แล้ว down & up เข้า server
4. ส่งห้อง facebook-php-sdk-afa1534 ในห้อง yourapp เห็นว่ายาว จึงเปลี่ยนเป็นห้อง lib
5. สร้างแฟ้ม index.php เรียกใช้ facebook.php โดยนำ code ข้อ 2 มาแทนส่วนหัว
6. ทดสอบ http://yourdomain.com/yourapp/index.php
7. ไปแก้ไข my app ใน https://www.facebook.com/developers/ ตาม url ของ server
8. ใน app profile พบคำว่า go to app
http://apps.facebook.com/th_comment/
http://www.facebook.com/apps/application.php?id=169861339715833
http://www.facebook.com/apps/directory.php
http://developers.facebook.com/docs/guides/canvas/

เครื่องบริการฝากแฟ้มขององค์กร (itinlife296)

e-document
e-document

2 ก.ค.54 ในกลุ่มคนที่ต้องทำงานร่วมกันตั้งแต่ 2 คนขึ้นไป และต้องการใช้เทคโนโลยีให้เกิดประโยชน์ การมีเครื่องบริการฝากแฟ้มเอกสารอิเล็กทรอนิกส์ (e-Document Server) เพื่อให้เป็นแหล่งรวมทรัพยากรที่ถูกใช้สนับสนุนการแลกเปลี่ยนเรียนรู้ (Learning Exchange) ระหว่างสมาชิก อาทิ รายงานการประชุม ผลการประเมินโครงการ ภาพถ่าย หรือวิดีโอคลิ๊ป ซึ่งสมาชิกทุกคนสามารถเข้าถึงเอกสารร่วมกันได้จากทุกที่ทุกเวลา โดยมีเครื่องบริการที่มีเจ้าหน้าที่รับผิดชอบดูแลให้อยู่ในสภาพพร้อมใช้ และอำนวยความสะดวก ย่อมสนับสนุนให้การดำเนินงานบรรลุเป้าหมายขององค์กรตามแผนที่วางไว้

แฟ้มเอกสารอิเล็กทรอนิกส์มักเป็นสำเนาจากเอกสารต้นฉบับที่เจ้าของสามารถส่งเข้าสู่เครื่องบริการฝากแฟ้ม และสำเนาไปเพื่อเผยแพร่ต่อได้ อาทิ ส่งเป็นเอกสารให้เลขานุการใช้เป็นหลักฐาน ส่งอีเมลให้กับตนเอง หรือส่งเข้าเว็บไซต์ 4shared.com หรือ mediafire.com ที่ให้บริการรับฝากแฟ้มทั่วไป ยิ่งทำสำเนามากเท่าใด ก็ยิ่งลดความเสี่ยงต่อการสูญเสียแฟ้มเอกสารเท่านั้น เพราะโลกแห่งการสื่อสาร จำเป็นต้องสื่อสารด้วยแฟ้มดิจิทอล ถ้ามีการสื่อสารเพิ่มขึ้นก็ต้องใช้จำนวนแฟ้มเพิ่มขึ้น แล้วจำนวนสำเนาก็จะเพิ่มเป็นเงาตามตัว ทั้งนี้ต้องมีการวางระบบที่เกี่ยวข้องไม่ให้การจัดเก็บ เรียกใช้ หรือปรับปรุงเกิดความผิดพลาดล่าช้า

เครื่องบริการฝากแฟ้มเอกสารอิเล็กทรอนิกส์ ก็เหมือนกับอุปกรณ์อิเล็กทรอนิกส์ทั่วไปที่ไม่อาจวางใจได้โดยสมบูรณ์ เหมือนกับรถยนต์ที่อาจยางแตก หรือคอมพิวเตอร์ที่อาจเปิดไม่ออกกระทันหัน เพราะอุบัติเหตุทางซอฟท์แวร์ ฮาร์ดแวร์ และพีเพิลแวร์เกิดขึ้นได้เสมอ ดังนั้นผู้ใช้บริการต้องมีแผนสองรองรับในกรณีเกิดปัญหาขึ้น เนื่องจากเป็นเครื่องบริการก็ย่อมมีโอกาสติดไวรัสหรือถูกโจมตีจากภายนอก  อุปกรณ์อิเล็กทรอนิกส์เป็นเครื่องใช้ไฟฟ้าที่มีความร้อนย่อมมีการเสื่อมสภาพไปตามกาลเวลาหรือชำรุดจากไฟตกหรือไฟดับได้ ส่วนการดูแลโดยบุคลากรด้านเทคโนโลยี ซึ่งเป็นมนุษย์ที่อาจดำเนินการผิดพลาด ละเลยต่อหน้าที่ เลือกดำเนินการอย่างรู้เท่าไม่ถึงการณ์ ทั้งหมดคือสิ่งที่อาจเกิดขึ้น และเป็นหน้าที่ของผู้เป็นเจ้าของแฟ้มที่ต้องเตรียมรับมือกับปัญหาที่ไม่คาดคิด

อัพโหลดหลายไฟล์ผ่าน click เดียว

swf file upload
swf file upload

22 ม.ค.54 การ upload แฟ้มเข้าเครื่องบริการทีละแฟ้มนั้น ใช้คำสั่งไม่เกิน 5 บรรทัดก็สามารถทำได้ แต่ถ้าต้องการ upload หลายแฟ้มด้วยการ click ครั้งเดียว ต้องเขียนหลายบรรทัด .. การศึกษาเรื่องนี้เกิดจาก คุณแบงค์ (เพื่อนร่วมงาน) ถามว่า ทำอย่างไร upload หลายแฟ้มเข้าเครื่องบริการผ่าน web browser .. ผมเองก็เคยเห็นใน hi5.com หรือ facebook.com เมื่อหลายปีก่อน เมื่อสืบค้นดูก็พบว่า swfupload.org มี code จึงนำมาดัดแปลง และเปิดให้ทดสอบ
ที่ http://www.thaiall.com/php/multiupload

การแก้ไข script มีหลายจุด คือ ยกเลิก preload alert ที่แสดงว่ามีปัญหาออกไป เปลี่ยนห้องรับแฟ้มให้เป็นห้องเดียวกับ script เลือกใช้ตัวอย่างจาก multiinstanceupload

+ http://demo.swfupload.org/v250beta3/
+ http://www.thaiall.com/download/multiupload_swfupload.zip

พบปัญหาเข้าระบบ webbased mail ไม่ได้

httpd log
httpd log

18 ม.ค.54 เมื่อวานเย็น – วันนี้เช้า เกิดปัญหาไม่สามารถ login เข้าระบบ web-based mail ขององค์กร อาการคือ user & password ไม่ถูกยอมรับให้ผ่านเข้าระบบ เมื่อรำลึกถึงเหตุการณ์ในอดีต ก็มีกรณีหนึ่งที่เป็นไปได้ คือ เครื่องบริการเต็ม จึงใช้ ssh เข้าไปใช้ #df ก็พบว่าเต็มจริง จึงเข้าไปลบ log ต่าง ๆ ที่มีขนาดใหญ่ (ไม่แตะต้อง mail box ของแต่ละคน) และปรับแก้ #/etc/aliases แล้ว #newaliases เพื่อ forward อีเมลของสมาชิกเก่า แทนการลบออกจากระบบไปยัง  mail box หนึ่ง เพื่อรอเวลาตรวจสอบ และลบทิ้งบัญชีผู้ใช้ในโอกาสต่อไป เมื่อพื้นที่เหลือเพิ่มขึ้นก็ login เข้าระบบ web-based mail ได้ตามปกติ

ปัญหาส่งแฟ้มเข้าเครื่องบริการไม่สำเร็จ

31 พ.ค.53 เล่าปัญหาการส่งแฟ้มกับเครื่องบริการตัวหนึ่ง เหตุเกิดเพราะมีแฟ้มขนาด 15 MB แบบ .mdb ที่ต้องส่งเข้าเครื่องบริการตัวที่หนึ่ง เป็นระบบฐานข้อมูล จึง download ออกมาแก้ไข แต่เมื่อ upload กลับเข้าไป พบว่าเข้าไปเพียง 15 KB ถึง 30 KB ไม่ว่าจะ Upload กี่ครั้งก็ตาม โดยใช้เทคนิค Upload จากที่บ้าน 2 วิธี คือ 1. ftp 2. web upload แต่ทั้ง 2 วิธีล้มเหลว เพราะข้อมูลถูกวางสำเร็จได้ไม่เกิน 40 KB จึงใช้วิธีที่ 3 คือ zip file แล้ว upload ด้วยวิธีที่ 1 และ 2 แต่ผลที่ได้คือไม่สำเร็จเหมือนเดิม
      มาสำเร็จด้วยวิธีที่ 4 คือ upload แฟ้ม .zip ไปยังเครื่องบริการตัวที่สอง แล้วใช้ remote desktop เข้าไปที่เครื่องบริการตัวที่หนึ่ง แล้วใช้ ftp download แฟ้มจากเครื่องบริการตัวที่สองมาวางในเครื่องบริการตัวที่หนึ่ง เมื่อคลาย .zip ก็ทำให้ web server ติดต่อระบบฐานข้อมูลได้ปกติ .. บันทึกไว้ครับ โอกาสหน้าจะได้ใช้เป็นบทเรียน