บุรินทร์ รุจจนพันธุ์ « แลกเปลี่ยนเรียนรู้:km tool

author page

บันทึกของผู้เขียน

สร้างบริการตรวจข้อมูลบน ldap

โดย บุรินทร์ รุจจนพันธุ์ เมื่อ Thursday, September 29th, 2011
ldap checking

ldap checking

29 ก.ย.54 มีโอกาสต้องสืบค้นข้อมูลบน ldap server เดิมทีจะใช้ ldap client ติดต่อเข้าไป ซึ่งเป็นซอฟท์แวร์ที่ต้องมีการติดตั้ง หากต้องการตรวจสอบผ่านเว็บเพจก็ต้องเขียน script ขึ้น เพื่อให้สามารถใช้บริการจากเครื่องใดก็ได้ในระบบ LAN ที่มีไอพีขึ้นต้นด้วย 172 (ตาม script)
มีตัวอย่าง php script ดังนี้
<?
// config
$host = "ldap://xxx.xxx.xxx";
$domain = "xxxxx";
$pass = "xxx";
// form
if (!isset($_POST["act"]) && substr($_SERVER["REMOTE_ADDR"],0,3) == "172"){
?>
<form action="" method="post">uid <input name=uid><br>
<select name=ou size=8>
<option value="ou=MANAGER,ou=SALE">Manager</option>
<option value="ou=STAFF,ou=SALE">Staff</option>
</select>
<br>form password <input name=fpass type=password>
<br><input type=submit name=act value=check>
</form>
<? exit; }
if ($_POST["fpass"] != "xxxx") { echo "invalid"; exit; }
//
$baseDn2 = 'uid='.$_POST["uid"].','.$_POST["ou"].',dc='.$domain.',dc=com';
$baseDn1 = 'cn=Manager,dc='.$domain.',dc=com';
//
$ldap = ldap_connect($host);
ldap_set_option($ldap, LDAP_OPT_PROTOCOL_VERSION, 3);
$b = ldap_bind($ldap,$baseDn1,$pass) or die("bind died");
if($b) echo "<pre>{$_POST["uid"]} \n";
$result = ldap_search($ldap, $baseDn2,"(cn=*)");
$rec = ldap_get_entries($ldap,$result);
if (!isset($rec[0]["data"][0]))
echo "not found"; else echo $rec[0]["data"][0];
ldap_unbind($ldap);
?>

contact list ของ gmail

โดย บุรินทร์ รุจจนพันธุ์ เมื่อ Wednesday, September 28th, 2011
contacts of gmail.com

contacts of gmail.com

28 ก.ย.54 มีโอกาสต้องทำ contact list ให้กับเพื่อนในกลุ่มเดียวกัน
1. เริ่มต้นด้วยการ export contact list จาก email ของตนเอง จนได้โครงสร้างแบบ csv
2. เปิดด้วย excel แล้วนำข้อมูลอีเมล ใส่เข้าไปใน group.csv แล้วก็จัดเก็บ
3. หาแหล่งเผยแพร่ ให้เพื่อน download นำไป import ด้วยตนเอง หรือส่ง attach ก็ได้
4. เพื่อนจะเข้าอีเมลของ gmail.com แล้วคลิ๊ก Contacts ในเมนูทางด้านซ้าย
5. คลิ๊ก More ในเมนูบาร์จะพบ Dropdown list แล้วเลือก import…
6. เลือกแฟ้ม group.csv ที่ท่านดาวน์โหลดจากข้อ 3 แล้วกดปุ่ม import
7. เมื่อเพื่อน compose mail แล้วพิมพ์ A ก็จะมีรายชื่อของเพื่อนที่ชื่อขึ้นต้นด้วย A มาทันที

กรณีศึกษา moodle ล่ม

โดย บุรินทร์ รุจจนพันธุ์ เมื่อ Monday, September 26th, 2011
moodle space error

moodle space error

26 ก.ย.54 ได้พบกับเครื่องบริการที่แจ้งว่ามีข้อผิดพลาดเกิดขึ้น ว่า Error: Database connection failed. It is possible that the database is overloaded or otherwise not running properly. The site administrator should also check that the database details have been correctly specified in config.php ก็เริ่มต้นด้วยการเข้าเครื่องบริการเครื่องหนึ่งใน Server farm ผ่าน ATen Master View (KVM) ด้วยการกดปุ่ม Scroll lock 2 ครั้ง ก่อนที่หน้าจอรับรหัสจะปรากฎขึ้น เมื่อเข้าได้แล้วก็พบว่า Harddisk ขนาด 35 GB แบ่งเป็น 2 Drive คือ C drive = program (15 GB) และ D drive = data (20 GB) แล้วขนาดที่เหลือคือ C Drive = 100 MB และ D Drive = 10 GB
จากข้อมูลข้างต้นก็คาดว่าปัญหาเกิดจาก C Drive ไม่เหลือพื้นที่แล้ว จึงเข้าไปตรวจว่ามีอะไรแปลกปลอมเข้ามาในเครื่องหรือไม่ แต่ก็ไม่พบ เมื่อใช้ search หาแฟ้ม over 1 MB ก็พบห้อง c:\windows\system32\logfiles มีแฟ้มบันทึกการจราจรของผู้ใช้ จึงได้คัดลอกข้อมูลทั้งหมดออกไปไว้ใน external harddisk สอดรับกับตาม พรบ.ว่าด้วยการกระทำความผิดเกี่ยวกับคอมพิวเตอร์ ปี 2550 แล้วจึง clear พื้นที่ และได้พื้นที่เหลือใน C Drive กว่า 5 GB เพื่อตรวจสอบว่าการแก้ไขข้างต้นปลด error ออกจากระบบอีเลินนิ่งที่ใช้ moodle ได้หรือไม่ จึง restart computer (ถ้า restart แล้วยังพบปัญหา ก็จะตรวจฐานข้อมูล เพราะจากข้อความท ทำให้คาดว่า mysql น่าจะมีปัญหา แต่ไม่ทันได้เข้าไปตรวจ ปัญหาก็หมดไปซะก่อน)
ผลการตรวจสอบหลังแก้ไข พบว่าระบบอีเลินนิ่งทำงานได้ตามปกติ

ยกเลิก deepfreeze แบบไม่มีรหัสผ่าน

โดย บุรินทร์ รุจจนพันธุ์ เมื่อ Friday, September 23rd, 2011
deepfreeze

deepfreeze

23 ก.ย.54 ครั้งหนึ่งซื้อเครื่องคอมพิวเตอร์มือสอง (windows xp + office 2000) จากเพื่อน แต่ในเครื่องติดตั้ง deepfreeze 1.6 เมื่อติดต่อกลับไปหาเพื่อนก็ไม่ได้รับคำตอบ เพราะเพื่อนปิดโทรศัพท์ หากไม่ยกเลิกโปรแกรม หรือติดตั้งโปรแกรมเพิ่มได้ จึงใช้โปรแกรม deep unfreeze (ข้ามการถามรหัสผ่าน) เข้าไปยกเลิกการ freeze แล้ว restart เมื่อบูทเครื่องใหม่อีกครั้งก็ใช้หลุดจาก deepfreeze แล้ว
http://www.thaiall.com/downloadx/deepunfreezeru16.zip

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

โดย บุรินทร์ รุจจนพันธุ์ เมื่อ Thursday, September 22nd, 2011

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);
?>

เข้ารหัส และถอดรหัส

โดย บุรินทร์ รุจจนพันธุ์ เมื่อ Tuesday, September 20th, 2011
ciphertext

ciphertext

มีโอกาสสอนนักศึกษาเข้ารหัสข้อมูล (Encryption) และถอดรหัสข้อมูล (Decryption) โดยใช้โปรแกรมของ Kailas Jagtap ที่เขียนด้วยภาษา Assembly ใช้เทคนิคเพิ่มบิทข้อมูลเฉพาะตัวอักษรอย่างง่าย ..
จำลองให้นักศึกษาเขียนจดหมาย (Plain text) แล้วเข้ารหัสข้อมูลด้วยโปรแกรม ก็จะได้แฟ้มจดหมายที่เข้ารหัส (Ciphertext) จากนั้นก็ส่งไปให้เพื่อน ..  หากเพื่อนจะเปิดอ่านต้องถอดรหัสด้วยโปรแกรมเดียวกัน
ขั้นตอนเข้ารหัสและถอดรหัส มีดังนี้
1. สร้างแฟ้มจดหมายด้วย
DOS> echo abc>i.txt
2. ดำเนินการสร้างจดหมายที่เข้ารหัส (encryption)
DOS> secure
e
i.txt
o.txt
3. ส่งจดหมาย o.txt เป็น attach file ไปให้เพื่อนทาง facebook message
4. เพื่อนได้รับ secure.exe และ o.txt ดำเนินการถอดรหัสจดหมาย
DOS> secure
d
o.txt
in.txt
5. เพื่อนเปิด in.txt มาอ่านได้อย่างเข้าใจ
แหล่งข้อมูล
http://www.thaiall.com/assembly/macrobasic.htm
http://www.thaiall.com/assembly/secure_kailas.zip
http://etutorials.org/Programming/Programming+.net+security/

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

โดย บุรินทร์ รุจจนพันธุ์ เมื่อ Sunday, September 18th, 2011
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

ldap client admin

โดย บุรินทร์ รุจจนพันธุ์ เมื่อ Friday, September 16th, 2011
ldap admin

ldap admin

มีโอกาสได้ใช้โปรแกรม ldapadmin-4.6.11111.0-x86-eng ซึ่ง download ได้จาก http://www.ldapadministrator.com เกี่ยวกับการบริหาร account ใน LDAP Server มีผลจากการเรียนรู้ ดังนี้
1. การ export data สามารถทำได้ครั้งละไม่เกิน 50 ระเบียน (รุ่นทดลอง)
2. เมื่อ export data ออกไปเป็นแบบ csv หากแก้ไขแล้ว ต้องลบ 2 บรรทัดแรกก่อน import
3. ถ้า import ทับข้อมูลเพิ่ม ก็ต้องลบข้อมูลเดิมก่อนที่จะ import
4. สามารถเลือกระเบียนที่ต้องการ export data ได้ตามที่ต้องการ แต่ไม่เกินครั้งละ 50 ระเบียน
5. ค่าที่ export เป็นแบบ csv ออกไปสามารถแก้ไขด้วย notepad หรือ excel ก็ได้
6. ถ้าเชื่อมต่อ ldap server พร้อมกัน 2 เครื่อง สามารถสำรองข้อมูลด้วยการกดปุ่ม ctrl-c แล้ว ctrl-v ได้เลย โดยไม่ต้องใช้เทคนิค import + export และไม่จำกัดจำนวนระเบียน
$ldaphost = “x500.bund.de”;
$ldapconn = ldap_connect($ldaphost,”389″) or die(“Could not connect to yn1″); // {$ldaphost}
if ($ldapconn) {
ldap_set_option($ldapconn, LDAP_OPT_PROTOCOL_VERSION, 3);
$ldapbind = ldap_bind($ldapconn,”o=Bund,c=DE”);
if ($ldapbind) {
echo “anonymous successful…”;
} else {
echo “anonymous failed…”;
}
} else {
echo “connect fail”;
}
// ldapsearch -h localhost -b “dc=domain,dc=com” -s sub “objectclass=*” -x
// add libeay32.dll, ssleay32.dll in system32 and checking by phpinfo()
// http://www.keutel.de/directory/public_ldap_servers.html
// http://www.emailman.com/ldap/public.html

ซะป๊ะกับคำอธิบายรายวิชา

โดย บุรินทร์ รุจจนพันธุ์ เมื่อ Sunday, September 11th, 2011
course description

course description

11 ก.ย.54 มีอะไรเกี่ยวพันกันไปหมดกับคำว่า คำอธิบายรายวิชา มีขั้นตอนที่ทำให้เกิดการเกี่ยวพันกันดังนี้
1. เริ่มต้นด้วยการ download แฟ้ม .doc ที่บีบอัดไว้
จาก http://www.thaiall.com/tqf/tqf2_cs_kmutt.zip
ซึ่งเป็นร่าง มคอ.2 สาขาวิทยาการคอมพิวเตอร์ ที่ยกร่างโดย มหาวิทยาลัยเทคโนโลยีพระจอมเกล้าธนบุรี
2. นำมาตัดให้เหลือ ข้อมูลเฉพาะคำอธิบายรายวิชา และเป็นวิชาทางสาขาที่ขึ้นต้นด้วย CSC โดยมีรูปแบบวิชาละ 7 บรรทัด ประกอบด้วย 1) รหัสวิชา 2) ชื่อภาษาไทย 3) ชื่อภาษาอังกฤษ 4)หน่วยกิต 5)อธิบายภาษาไทย 6)อธิบายภาษาอังกฤษ 7)บรรทัดว่าง
อยู่ใน http://www.thaiall.com/tqf/tqf2_cs_kmutt.txt
3. เขียน code อ่านแฟ้ม .txt ไปแสดงผลในตาราง และใส่สี ตามแบบที่ต้องการ

http://www.thaiall.com/tqf/tqf2_cs_kmutt.php

ในโปรแกรม tqf2_cs_kmutt.php ออกแบบให้ถูกดูดแล้วแก้ไขแบบออนไลน์ได้ง่าย
4. เขียน code อ่านแฟ้ม .php ไปแสดงผลร่วมกับ template ที่เตรียมไว้
http://www.thaiall.com/computer/cskmutt.php
จะดูด tqf2_cs_kmutt.php มาปรับรูปแบบเพิ่มเติม เพื่อส่งเข้า template คือ index.php
5. ใช้ .htaccess และ redirect.php แก้ปัญหาการส่งข้อมูลแบบ get ให้รองรับการส่งข้อมูลด้วย /
ทำให้ผลของ /xxx กับ /file=xxx มีผลเหมือนกัน

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /computer/
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /computer/redirect.php [L]
</IfModule>

<?
$r = split(“/”,$_SERVER["REQUEST_URI"]);
$ar = file(“http://www.thaiall.com/computer/?file=”. $r[2]);
foreach($ar as $v) echo $v;
?>

http://www.thaiall.com/computer/?file=cskmutt

http://www.thaiall.com/computer/cskmutt

กรณีศึกษาการย้ายโดเมนเนม

โดย บุรินทร์ รุจจนพันธุ์ เมื่อ Friday, September 9th, 2011

เล่าสู่กันฟังเรื่องการย้ายโดเมนเนมหนึ่งที่เคยจดไว้เมื่อ 20-Dec-1998 (ปีที่แล้วเกือบหลุดไป) เดิมฝากไว้กับ networksolutions.com ไปไว้กับ godaddy.com มีการดำเนินการดังนี้
1. ตรวจค่าใช้จ่าย พบว่า promotion ของ godaddy.com
Transfer Your Domain
From only $7.49/yr* & Free 1-yr extension.

2. เข้า godaddy.com แล้ว login แล้วคลิ๊กที่ Domains, Transfer Domain, [put domain name] , Proceed to Checkout
3. ตัวเลือก Nameservers ของผมเลื่อก change มาที่ godaddy.com ซึ่งอยู่ในขั้นตอนที่ 2/4
4. จ่าย $15.34 สำหรับ 2 ปี
5. มีอีเมลถึงของเจ้าของโดเมนเนม พบรหัสผ่านสำหรับยืนยัน ให้กดลิงค์นั้น ก็จะมีรายละเอียดให้ดำเนินการ หัวข้ออีเมลคือ Transfer of [domain name] – Action Required‏
6. เข้า My Products ของ godaddy.com แล้วคลิ๊ก Domain Manager

7. เข้า nsi.com แล้ว login แล้วคลิ๊ก MANAGE ACCOUNT แล้วคลิ๊ก My Domain Names
8. หัวข้อ Details for [domain name] พบคำว่า Domain Protect : on (Turn Off or Request Authorization Code)
9. ทำเครื่องหมายหน้า Leave Domain Protect off และ Request Authorization Code แล้ว Authorization Code จะส่งไปทางอีเมลใน 15 นาที
10. networksolutions.com ส่งอีเมลมาให้มีหัวข้อว่า Your Authorization Code Request‏ จากนั้นก็คัดลอก Authorization code ไว้

11. กลับเข้า godaddy.com เพื่อทำขั้นตอนที่ 2
12. เข้า Domains menu, select Pending Transfers. แล้วคลิ๊ก  Authorization,  Begin Transfer Authorization แล้วนำ Transaction ID และ Security Code ในอีเมล มากรอกใน 2 ช่องนี้
13. กรอก Authorization Code ที่ได้มาจาก networksolutions.com

14. เข้า mailbox เพื่อทำขั้นตอนที่ 3
15. รออีเมลจาก networksolutions.com แล้วเข้าไปเลือก Transfer Status : Confirm หรือ Reject