Month: April 2015

  • Shell Script : Grouping and Summation

    มี Log ขนาดใหญ่ แล้ว ต้องการจะวิเคราะห์ข้อมูลของนาทีที่ผ่านมา เลือกเฉพาะรูปแบบที่ต้องการด้วยคำสั่ง

    grep 'Apr 28 10:59' /var/log/mail.log | grep 'postfix/qmgr' |grep 'nrcpt=' |grep -v 'from=<>'

    ได้ผลมาประมาณนี้

    01

    ต้องการเอาข้อมูล X และ Y จากรูปแบบนี้ from=<X> และ nrcpt=Y ใช้ความรู้จาก Shell Script: Extract exact pattern from string ใช้คำสั่งต่อไปนี้

    grep 'Apr 28 10:59' /var/log/mail.log | grep 'postfix/qmgr' |grep 'nrcpt=' |grep -v 'from=<>'|sed -n 's/.*\sfrom=<\(.*\)>.*\snrcpt=\(.*\)\s(.*/\1:\2/p'

    ได้ผลมาประมาณนี้

    02

    ต้องการจับกลุ่มตาม คอลัมน์ที่ 1 แล้วหาผลรวมของคอลัมน์ที่ 2 ในแต่ละกลุ่ม ใช้คำสั่ง

    grep 'Apr 28 10:59' /var/log/mail.log | grep 'postfix/qmgr' |grep 'nrcpt=' |grep -v 'from=<>'|sed -n 's/.*\sfrom=<\(.*\)>.*\snrcpt=\(.*\)\s(.*/\1:\2/p' | awk 'BEGIN{FS=OFS=":"}{a[$1]+=$2}END{ for (i in a) print i,a[i]}'

    ได้ผลดังนี้

    03

    Reference:

    http://unix.stackexchange.com/questions/169215/group-by-and-sum-in-shell-script-without-awk

  • Shell Script : Extract exact pattern from string

    มี string ดังนี้ ในตัวแปร line

    line=’Apr 18 06:04:57 webmail squirrelmail: Message sent via webmail: by username.s (psu.ac.th) at 41.203.69.5 on 04/17/2015 23:04:57: Message-ID: 98f9739438686e127bcb8547fea7ed82.squirrel@webmail.psu.ac.th Total 9 recipients Message-ID: 98f9739438686e127bcb8547fea7ed82.squirrel@webmail.psu.ac.th’

    ต้องการค่าที่อยู่ระหว่าง Total … recipients

    ใช้คำสั่งนี้

    total=$(echo $line | sed -n ‘s/.*Total \([[:digit:]]*\) recipients.*/\1/p’)

    ตัวแปร $total จะมีค่า 9 ตามที่ต้องการ

    อธิบาย
    คำสั่ง
    sed -n ‘s/PATTERN/&/p’
    จะแสดงข้อความที่ตรงกับ Pattern เท่านั้น ไม่แสดงข้อความอย่างอื่่น

    Reference:
    http://www.grymoire.com/Unix/Sed.html#uh-15

  • Spam-20150420-01

    หากท่านได้รับ Email ในลักษณะดังภาพต่อไปนี้ … นี่เป็นจดหมายหลอกลวง !!!

    สิ่งที่ต้องทำ !

    • ห้ามคลิกลิงค์ใดๆ: เพราะมันจะนำไปสู่เว็บไซต์หลอกลวงเอาข้อมูลส่วนตัว รหัสผ่าน และข้อมูลทางการเงินได้ หรือ อาจจะถูกฝังโปรแกรมดักจับข้อมูลในเครื่องของท่านได้ โดยไม่มีการเตือน
    • ห้าม Reply, Forward : เพราะท่านกำลังทำให้เกิดการแพร่กระจาย และ ตกเป็นเป้าหมายต่อไปทันที
    • ให้ลบทิ้งทันที

    หากคลิก หรือ พลาดบอกรหัสผ่านไปแล้ว

    • ให้ตั้งรหัสผ่านใหม่ทันที !!! และต้องแตกต่างจากเดิมโดยสิ้นเชิง
    • หาก Reply ไปตอบโต้กับผู้ส่ง ท่านต้องระวังตัวมากขึ้น เพราะจะมีจดหมายหลอกลวงอื่นๆจำนวนมากที่จะวิ่งเข้ามาหาท่าน

    ทางมหาวิทยาลัย จะไม่ส่งจดหมายแจ้งเตือน/สอบถามรหัสผ่านจากท่านเด็ดขาด
    ดูลักษณะ จดหมายหลอกลวงได้ที่นี่ http://sysadmin.psu.ac.th/tag/spamtoday/

    11016090_825810207484219_4181677015922385492_n 11133880_979914218687413_6070345264068726966_o 11168077_10206042289793579_6477794721261486887_n

     

    Screenshot_2015-05-19-10-04-57

  • การตรวจสอบการบุกรุกพื้นที่ป่าสงวน เบื้องต้นด้วยตัวเอง

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

    หมายเหตุ เพื่อความถูกต้องของข้อมูลที่สุด ควรตรวจสอบที่หน่วยงานราชการที่ให้บริการ

    หลักการ คือ การนำชั้นข้อมูล (Layer) ในแต่ละข้อมูล มาซ้อนทับกัน(Overlay) เพื่อแสดงผล ในตัวอย่างจะประกอบด้วย 3 ชั้นข้อมูลคือ ชั้นข้อมูลแผนที่ฐาน (base map) , ชั้นข้อมูล พื้นที่สปก. และชั้นข้อมูล เขตป่าสงวน

    มีขั้นตอนดังนี้

    1. เปิดหน้าเว็บ dsi-map > เลือกพื้นที่ที่ต้องการจะตรวจสอบ
    01

    ลองขยายชัดๆ จะเห็นสนามแข่งรถได้อย่างชัดเจน
    02

    2. ติ๊กถูกที่เลเยอร์ พื้นที่สปก. > จะเห็นได้ว่า มีแสดงพื้นที่สีขาวโปร่งแสง ซึ่งจะเป็นการแสดงอาณาเขตพื้นที่ส.ป.ก.
    *** ตามภาพคือ สนามแข่งรถอยู่ในพื้นที่ ส.ป.ก. แน่ๆ

    03

    3. ลองคลิกดูที่เลเยอร์ เขตป่าสงวน > จะเห็นได้ว่า มีแสดงพื้นที่สีเขียวโปร่งแสง ซึ่งจะเป็นการแสดงอาณาเขตพื้นที่ป่าสงวน
    04

    4. ลองคลิกเลือกทั้ง 2 เลเยอร์ พร้อมกัน คือ พื้นที่สปก. และ เขตป่าสงวน
    05

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

     

     

     

  • การเก็บพิกัด GPS ด้วย Android device

    เป็นแอพสาหรับการออกพื้นที่ภาคสนามเพื่อเก็บพิกัด สามารถใช้ GPS ได้โดยไม่ต้องต่อเน็ต แต่หากจะ share to Maps ต้องอาศัยอินเตอร์เน็ตครับ ชื่อแอพ GPS Status & Toolbox ที่ใช้ฟรี บน Android device เลยคิดว่านำมาแชร์ สำหรับใครที่ต้องการเก็บพิกัด GPS แบบง่ายๆ เพื่อนำมาใช้งานต่อในด้านอื่นๆต่อไป

    เกริ่นก่อนนิดนึงว่า ปกติแล้วนักภูมิสารสนเทศ หรือผู้ที่ทำงานด้านภูมิสารสนเทศ จะใช้เครื่อง GPS ที่เฉพาะเหมาะกับงาน ซึ่งมีหลายรุ่น หลายยี่ห้อ ทั้งแบบธรรมดาและแบบถ่ายรูปพร้อมฝังพิกัดได้ด้วย ก็มีราคาที่แตกต่างกันไปตามรุ่นและฟังก์ชั่น ดูเพิ่มเติม
    10927839_760991123990934_745730649596261186_o

    มาเริ่มต้นใช้งานคร่าวๆ กันเลยดีกว่าคับ

    1. เข้า Play Store บน Android ของท่าน > ค้นหา GPS Status & Toolbox > คลิก install
    01

    2. เมื่อติดตั้งและเปิดแอพแล้วจะมีหน้าตาแบบนี้
    02

    3. ก่อนใช้แอพ ต้องเปิด GPS ทุกครั้ง
    03

    4. เปิดแอพขึ้นมาแล้ว สังเกตว่าระบบจะ loading location เพราะต้องรอให้จับสัญญาณดาวเทียมได้ก่อน *** ส่วนกลมๆที่เห็นเป็นจุดๆ จะแสดงการจับสัญญาณดาวเทียมได้กี่ดวง ความเข้มของสัญญาณแค่ไหน (ยิ่งเยอะดวงก็ยิ่งแม่นยำในการระบุพิกัดมากยิ่งขึ้น)
    04

    5. การตั้งค่าต่างๆ ที่จำเป็นของแอพ ไปที่ menu > setting
    05

    6. Distance ตั้งค่าหน่วยระยะทาง ใช้เป็น เมตร, กิโลเมตร
    06

    7. Speed จะปรับค่าตามการเดินหรือเวลาที่เรานั่งอยู่ในรถ หน่วยเป็น กิโลเมตรต่อชั่วโมง
    07

    8. Select format จะให้แสดงค่าเป็น Latitude, Longitude หรือตั้งค่าเป็น UTM เพื่อเอาไปใช้ในโปรแกรม ArcGIS ก็ได้
    08

    9. กลับมาที่หน้าจอหลัก จะแสดงค่าต่างๆ ตามที่ตั้งค่าไว้
    09

    10. ทำการเก็บค่าพิกัด lat, long โดยการแชร์ ให้เปิด menu > share
    10

    11. เลือก share ตามที่มือถือเราลงแอพไว้ หรือเลือกส่งออกไปยัง Maps ได้เลย (ในหน้าจอไม่เห็นเพราะอยู่ด้านล่างสุด)
    11

    12. สามารถ share พิกัด to email ได้ ซึ่งลิงค์ที่ได้ สามารถเปิดที่เว็บบราวเซอร์ได้เลย โดยจะเป็น Google Map
    12

    13. โหมด Radar มีคาสั่ง Mark Location ด้วย และยังสามารถ save target (ค่าแลต-ลอง)ได้อีกด้วย
    13

    14. มีคาสั่ง Show on Map ไปยัง Google maps บนมือถือเราได้ด้วย
    14

    15. ปรับการแสดงแผนที่เป็นแบบ Satellite *** ได้ภาพที่คมชัดมาก
    15

    16. นอกจากนี้ยังสามารถวัดระยะทางได้ *** ตามตัวอย่าง วัดระยะจากถนนปากซอยไปยังจุดพิกัด จะได้ระยะทาง 45 เมตร
    16

     

    นอกจากนี้ แอพยังมีการแสดงต่างๆ อีกมากมาย อาทิเช่น ความสูง-ต่ำของพื้นที่(จากระดับน้ำทะเล) เข็มทิศ เป็นต้น ก็ลองเล่นเพิ่มเติมดูนะคับ ไม่ยาก ^^

    หมายเหตุ ความแม่นยำของการระบุค่าพิกัด ขึ้นอยู่กับอุปกรณ์ และพื้นที่ๆ เปิดใช้งาน (ควรอยู่ในที่โล่งแจ้ง เพื่อสะดวกในการจับสัญญาณดาวเทียม

     

  • วิธีทำระบบกล้องวงจรปิดที่บ้านแบบประหยัด + ดูผ่าน Internet โดยไม่ต้องทำ Port Forward

    อยากมีกล้องวงจรปิดที่บ้านแบบประหยัดงบ เชิญอ่าน …

    แนวคิด: ใช้งานสิ่งที่มีอยู่ ซื้อเท่าที่จำเป็น บันทึกวิดีโอได้ตามช่วงเวลาที่กำหนด (06:00-18:00) นอกช่วงเวลาบันทึกเฉพาะเมื่อมีความเคลื่อนไหว (Motion Detection) (00:00-06:00) ระบบสามารถลบวิดีโอที่อายุเกินกำหนดได้ และสามารถดูได้จาก Internet โดยไม่ต้องทำ Port Forward (บ้านที่มี ADSL ไม่สามารถ Fix IP ได้ แถมบางค่ายให้ NAT IP มาที่ Router อีก ยิ่งทำยาก)

    สิ่งที่มีอยู่แล้ว:

    กล้อง: สามารถใช้งาน Smart Phone เก่าๆ เช่น Samsung Galaxy Mini + ติดตั้งโปรแกรม IPCamera โดย Fix IP: 192.168.2.21

       

     

    PC: Notebook เครื่องเก่า เป็น Windows 7 ติดตั้งโปรแกรม Open Source ชื่อ iSpy หรือ จะใช้ VLC ก็ได้ (ค่อยเขียนบทความต่อไป สำหรับคนที่จะใช้ Linux Server)

    Wireless Network:

    TP-Link TD-W8961ND

    ซื้อเพิ่ม:

    กล้อง Network Camera: D-Link DCS-930L ราคา 1,290 บาท โดย Fix IP: 192.168.2.22

    เลือกรุ่นนี้เพราะ พื้นที่ที่ต้องการจับภาพไม่จำเป็นต้องมี Infrared ไว้ดูตอนกลางคืน สามารถตั้งเวลาที่จะเชื่อมต่อจาก Internet ได้ (เพื่อความปลอดภัย) ,มี Motion Detect ซึ่งเพียงพอต่อความต้องการแล้ว และ กล้องของ D-Link มีสิ่งที่เรียกว่า mydlink Cloud Access ทำให้สามารถเชื่อมต่อกล้องจาก Internet ได้โดยไม่ต้องทำ Port Forward (หากใครไม่ชอบ ก็ปิดได้)

    การติดตั้ง:

    กล้องของ Android ที่ติดตั้ง IPCamera Apps ไป จะสามารถเข้าถึงวิดีโอได้ที่ http://a.b.c.d:8080/video โดยสามารถตั้ง Username/Password ได้ตามต้องการ

    กล้องของ D-Link DCS-930L เมื่อแกะกล่อง ก็เสียบสายไฟ แล้วไปกดปุ่ม WPS ที่ Router ระบบก็จะเชื่อมต่อกล้องเข้ากับระบบแล้ว หรือถ้าไม่มี WPS ก็ต่อสาย LAN เข้ากับ Port ของกล้อง และ Fix IP ของ Network Card ของคอมพิวเตอร์ ให้เป็น 192.168.0.2 แล้วเปิดเว็บไปที่ http://192.168.0.20 เพื่อเข้าไปบริหารจัดการกล้อง จากนั้น เมื่อจะเข้าถึงวิดีโอได้ที่ http://a.b.c.d/video/mjpeg.cgi โดยสามารถตั้ง Username/Password ได้ตามต้องการ

    ที่ Router ให้เข้าไปใน Router Configuration เพื่อ Fix IP กับ MAC Address ของกล้อง เป็นอันเรียบร้อย

    โปรแกรม iSpy: กดปุม Add กล้องตาม URL ที่กล่าวข้างต้น จากนั้น ตั้งค่า Schedule เพื่อกำหนดว่า เวลา 06:00-18:00 ของทุกวัน ให้บันทึกวิดีโอต่อเนื่อง ค่าเริ่มต้นจะบันทึกวิดีโอเป็นไฟล์ ความยาว 15 นาที (900 วินาที) ซึ่งสามารถปรับแต่งได้ตามต้องการ ส่วนเวลา 00:00-06:00 ก็สั่งให้ทำ Motion Detect จับภาพเฉพาะเมื่อมีการเคลื่อนไหว (สามารถระบายตำแหน่งที่ต้องการให้จับความเคลื่อนไหวได้ด้วย) แล้วก็ Save … จบ โปรแกรมนี้สามารถเพิ่มกล้องได้ 32 ตัว ไม่จำกัดว่ายี่ห้อกล้อง ขอให้สามารถเข้าถึงวิดีโอได้ผ่าน Network ก็พอแล้ว

    การเข้าถึงกล้องจาก Internet:

    สำหรับ D-Link Network Camera ก็ให้ติดตั้ง Clients แล้วใส่ Username/Password ของ mydlink Account ก็สามารถดูได้แล้วผ่าน Cloud Access

    ส่วน iSpy นั้น ถ้าจะเข้าถึงจากภายนอก ก็ต้องจ่ายเงินนิดหน่อย และต้องทำการ Port Forward (พอดีไม่ได้ทำตรงนี้)

    เดี๋ยวค่อยเล่ารายละเอียดโปรแกรม iSpy และ การใช้ VLC เพื่อบันทึกวิดีโอจากล้องในตอนต่อไป

     

     

     

     

     

  • วิธีการใช้งาน ADSL ร่วมกันกับข้างบ้าน

    ใครใช้ ADSL หรือ ซื้อ Internet ไว้ใช้งานที่บ้านบ้าง ??? มีราคาตั้งแต่ 590 บาทต่อเดือน (ไม่รวม VAT) ขึ้นไป เมื่อมีแล้วก็ใช้งานได้รวดเร็วทันใจ … แต่คำถามคือ … ใช้งานคุ้มค่าหรือไม่ ??? แล้วจะดีไม๊ ถ้ารู้ว่า ยังใช้ไม่คุ้มค่า แล้วสามารถหารค่าใช้จ่ายร่วมกับข้างบ้านได้ หรือ กรณีบ้านเดียวกันนี่แหล่ะ แต่เป็นบ้านทรงสูงเช่น บ้านเป็นตึกหลายชั้น จะเดินสาย LAN ไปชั้นบนๆก็ไม่สะดวก ไม่สวยงาม สามารถใช้ Solution นี้ได้ (แบ่งสัดส่วนกันตามสะดวกใจ)

    โจทย์: บ้าน A พบว่า ตัวเองใช้งาน ADSL 10Mbps ไม่ค่อยคุ้ม เลยคุยกับบ้าน B ว่า แบ่งใช้งานกันไม๊ ? บ้าน B ก็พบว่า ตัวเองถ้าติดตั้ง ADSL ใหม่ก็ใช้ไม่คุ้มเช่นกัน จึงหาทางออกร่วมกัน บ้าน A และ B คั่นด้วยถนนหมู่บ้าน กว้าง 10 เมตร ไม่สามารถลากสาย LAN ข้ามมาได้ ส่วน ADSL Router ของ A อยู่กลางบ้าน และปล่อยสัญญาณ WiFi เต็มพิกัด

    ที่กลางบ้าน B วัดความแรง WiFi ของบ้าน A ได้ -88 dB แต่ถ้ามาที่หน้าบ้านของ B จะวัดได้ -65 dB ซึ่งพอจะไหว

    แนวคิด: จะใช้เทคนิค WiFi Repeater ด้วย ADSL Router ตัวเก่ารับสัญญาณ WiFi มาแล้วกระจายผ่าน LAN ส่งให้ ใช้ WiFi Router อีกตัว ทำหน้าที่เป็น Access Point

    อุปกรณ์ที่ใช้ และการตั้งค่า:
    บ้าน A: 3BB ADSL WiFi Router (Router IP: 192.168.1.1) ตั้ง SSID เป็น AHOME

    บ้าน B:
    1. Xyzel NBG-419N ทำงานในโหมด WISP (Wireless Internet Service Provider) ทำหน้าที่รับสัญญาณ WiFi มากระจายผ่าน LAN (Router IP: 192.168.2.1) และเปิด DHCP Range 192.168.2.2 – 192.168.2.99 จากนั้น เสียบสาย LAN เข้าที่ Port 1 (ถ้าจะให้ตัว Router อยู่ภายในบ้าน ควรซื้อสาย Antenna ยาวสัก 3 เมตร ราคาประมาณ 199 บาท เพื่อให้เสาอากาศไปอยู่นอกบ้าน แล้วเชื่อมสายสัญญาณเข้ามาที่ตัว Router)

    2. TP-Link TD-W8961ND เปลี่ยนเป็น Access Point Mode  (Router IP: 192.168.2.100) ตั้ง SSID เป็น BHOME ปิด DHCP Server แล้วเสียบสาย LAN เข้ามาที่ Port 1

    ผลการทำงาน: 

    บ้าน B: เมื่อเชื่อมกับ BHOME จะได้สัญญาณความแรง -50dB ทั้งบ้าน สามารถทดสอบ Speed Test ได้ 7 Mbps

     

  • มาติดตั้ง ADLdap เพื่อใช้ยืนยันตัวตนให้กับ Owncloud 8.0 กันดีกว่า

    การติดตั้ง ADLdap เพื่อใช้ยืนยันตัวตนกับ Owncloud 8.0 นี้จะไม่อธิบายการติดตั้ง owncloud ครับ ซึ่งสามารถเข้าไปดูการติดตั้งได้ที่นี้
    How to: install Owncloud (Easy method) – เกรียงไกร หนูทองคำ
    หรือ
    ติดตั้ง ownCloud เลือกใช้ user PSU Passport หรือ ftp server หรือ RADIUS Server – วิบูลย์ วราสิทธิชัย
    การแบ่งปันความรู้ครั้งนี้จะแนะนำวิธีการนำเอา ADLdap (PHP Library) มาใช้งานร่วมกับ Owncloud เท่านั้นครับ ว่ามีวิธีการและขั้นตอนอย่างไร ซึ่งไม่ยากเกินไปครับ ^^


    ภาพรวมเมื่อทำการติดตั้ง/ตั้งค่า ADLdap สำเร็จ

    1. ลดขั้นตอนการยืนยันตัวตน ซึ่งขั้นตอนนั้นจากเริ่มจาก เซิร์ฟเวอร์ที่ติดตั้ง Owncloud ไปยัง เซิร์ฟเวอร์ Ldap โดยตรง ทำให้ไม่จำเป็นต้องติดตั้งระบบ Authen ในเซิร์ฟเวอร์ Owncloud นี้
    2. สามารถจำกัดบุคลากรที่จะเข้ามาใช้งานได้ ตามคณะ/หน่วยนั้นๆ


    ซอร์ฟแวร์ที่นำมาใช้งาน

    – ubuntu server 14.04.02 (x64)
    – Owncloud 8.0.2
    – PHP 5.5
    – ADLdap 4.0.4 – ดาวน์โหลดได้ที่นี้

    คำแนะนำ หากมีการอัพเดทจาก เวอร์ชั่น 8.0.2 ไปเป็น 8.0.3 หรือเวอร์ชั่นที่สูงกว่า เรียบร้อยแล้ว
    จะต้องทำตามขั้นตอนที่ 4 อีกครั้งครับ 

    ขั้นตอนการติดตั้ง
    1. เข้าสู่ระบบด้วย username ของ admin จากนั้นให้ไปเปิดใช้งาน App โดยคลิ๊กที่เมนู Apps จากนั้นเลือก +Apps ให้คลิ๊กเมนู not enable ดูที่ชื่อ App External user support ให้คลิ๊ก Enable

    12
    ** ขั้นตอนที่ 2-5 จะต้องทำการ ssh ไปยังเซิร์ฟเวอร์ที่ติดตั้ง owncloud ครับ
    ** path ที่ใช้ติดตั้ง owncloud ของบทความนี้ /var/www/owncloud/ ครับ

    2. ให้แตกไฟล์  adLDAP_4.0.4r2.zip จากนั้นให้ Rename ชื่อแฟ้มเป็น adldap (จะ Rename หรือไม่ก็ได้ แต่ต้องอ้างเส้นทางและชื่อแฟ้มให้ถูกต้อง) แล้วไปวางไว้ตำแหน่งนี้ /var/www/owncloud/3rdparty/

    3. เพิ่ม code โดยเข้าไปที่ไฟล์ /var/www/owncloud/config/config.php

    /// AD LDAP ///
    ‘user_backends’ => array(
    0 => array(
    ‘class’ => ‘OC_User_ADLDAP’,
    ‘arguments’ => array(
    0 => ‘dc7.psu.ac.th’,
    ),
    ),
    ),
    /// END /// 

    เมื่อเพิ่มแล้วจะได้ตามนี้

    <?php
    $CONFIG = array (
    ‘instanceid’ => ”,
    ‘passwordsalt’ => ”,
    ‘secret’ => ”,
    ‘trusted_domains’ =>
    array (
    0 => ‘xxx.xxx.psu.ac.th’,
    ),
    ‘datadirectory’ => ‘/var/www/owncloud/data’,
    ‘overwrite.cli.url’ => ‘https://xxx.xxx.psu.ac.th/owncloud’,
    ‘dbtype’ => ‘mysql’,
    ‘version’ => ‘8.0.2.0’,
    ‘dbname’ => ‘owncloud_db’,
    ‘dbhost’ => ‘localhost’,
    ‘dbtableprefix’ => ‘oc_’,
    ‘dbuser’ => ‘xxxxx’,
    ‘dbpassword’ => ‘xxxxx’,
    ‘installed’ => true,
    ‘ldapIgnoreNamingRules’ => false,
    ‘theme’ => ”,
    ‘maintenance’ => false,
    ‘mail_smtpmode’ => ‘smtp’,

    /// AD LDAP ///
    ‘user_backends’ => array(
    0 => array(
    ‘class’ => ‘OC_User_ADLDAP’,
    ‘arguments’ => array(
    0 => ‘dc7.psu.ac.th’,
    ),
    ),
    ),
    /// END ///
    );

     

    4.เพิ่ม code โดยเข้าไปที่ไฟล์ /var/www/owncloud/apps/user_external/appinfo/app.php ไว้บรรทัดล่างสุด

    OC::$CLASSPATH[‘OC_User_ADLDAP’]=’user_external/lib/adldap.php’;

    เมื่อเพิ่มแล้วจะได้ตามนี้

    <?php
    OC::$CLASSPATH[‘OC_User_IMAP’]=’user_external/lib/imap.php’;
    OC::$CLASSPATH[‘OC_User_SMB’]=’user_external/lib/smb.php’;
    OC::$CLASSPATH[‘OC_User_FTP’]=’user_external/lib/ftp.php’;
    OC::$CLASSPATH[‘OC_User_ADLDAP’]=’user_external/lib/adldap.php’;

     

    5. สร้างไฟล์ชื่อ adldap.php นำไปไว้ที่ /var/www/owncloud/apps/user_external/lib/
    จากนั้นให้ทำการเพิ่ม code เข้าไปดังนี้

    หมายเหตุ สำหรับท่านใดที่นำไปใช้งาน ก่อนวันที่ 10-04-58 ขอให้ copy php code ทั้งหมดไปแทนของเดิมด้วยนะครับ

    <?php
    /*
    | ——————————————————————————
    | Owncloud 8 Authentication With ADLDAP 
    | ——————————————————————————
    |
    | Create Date : 08-04-2015
    | Update : 18-10-2016

    | Developer : Aussadayut Ubonkan
    | e-mail : aussadayut.u@psu.ac.th
    | Khunying Long Athakravisunthorn Learning Resources Center, Prince of Songkla University
    |
    */
    require_once(‘3rdparty/adldap/src/adLDAP.php’);

    class OC_User_ADLDAP extends \OCA\user_external\Base{

    private $ad_ldap;

    public $authUser = NULL;
    public $user_authen = NULL;
    public $port = NULL;
    public $basedn = NULL;
    public $ssl = NULL;
    public $account_suffix = NULL;
    public $attribute_mapping = NULL;
    public $addgroup = NULL;
    public $departid = NULL;
    public $set_quota = NULL;


    public function checkPassword($uid,$password){

    $this->set_quota = ‘5 GB’; // Ex. ’12 GB’ , ‘100 MB’
    $this->addgroup = ‘Staffs’; // Group Name
    $this->departid = ‘294’; // Department id , 294 = clib psu

    $this->port = ‘636’; // ldap = 389 , ldaps = 636
    $this->basedn = ‘dc=psu,dc=ac,dc=th’;
    $this->ssl = true;
    $this->account_suffix = ‘@psu.ac.th’;
    $this->attribute_mapping = array(
    “cn”, “dn”, “samaccountname”, “employeeid”, “citizenid”, “company”,
    “campusid”, “department”, “departmentid”, “physicaldeliveryofficename”, “positionid”,
    “description”, “displayname”, “title”, “personaltitle”, “personaltitleid”, “givenname”,
    “sn”, “sex”, “userprincipalname”,”mail”);

    $this->ad_ldap = new adLDAP(
    array(
    ‘domain_controllers’ => array(‘dc7.psu.ac.th’,’dc5.psu.ac.th’),
    ‘ad_port’ => $this->port,
    ‘base_dn’ => $this->basedn,
    ‘use_ssl’ => $this->ssl,
    ‘account_suffix’ => $this->account_suffix,
    )
    );

     

    $this->authUser = $this->ad_ldap->user()->authenticate($uid , $password);
    $this->user_authen = $this->ad_ldap->user()->info($uid,$this->attribute_mapping);

    $check_departid = $this->user_authen[0][“departmentid”][0]; // department id
    $uid = $this->user_authen[0][“samaccountname”][0]; // username
    $uemail = $this->user_authen[0][“userprincipalname”][0]; // e-mail

    /*
    | Print User information
    */
    //echo “<pre>”;
    //print_r($this->user_authen);
    //exit;
    if($check_departid == $this->departid){

    if(!$this->user_Exists($uid)){

    $this->storeUser($uid);

    OC_Group::addToGroup($uid, $this->addgroup); // Add User to Group
    OC_DB::executeAudited(
    ‘INSERT INTO `*PREFIX*preferences` ( `userid`, `appid` , `configkey` ,`configvalue`)’
    . ‘ VALUES( ?, ? , ? ,?)’,
    array($uid, ‘files’, ‘quota’ , $this->set_quota)
    );
    OC_DB::executeAudited(
    ‘INSERT INTO `*PREFIX*preferences` ( `userid`, `appid` , `configkey` ,`configvalue`)’
    . ‘ VALUES( ?, ? , ? ,?)’,
    //array($uid, ‘files’, ‘quota’ , $this->set_quota),
    array($uid, ‘settings’, ’email’ , $uemail)
    ); // Set E-Mail

    return $uid;

    }else{

    $this->storeUser($uid);
    return $uid;
    }
    }else{

    return false;

    }

    } // End checkPassword
    public function user_Exists($uid) {
    $result = OC_DB::executeAudited(
    ‘SELECT COUNT(*) FROM `*PREFIX*users_external`’
    . ‘ WHERE LOWER(`uid`) = LOWER(?)’,
    array($uid)
    );
    return $result->fetchOne() > 0;
    } // user_Exists
    } // End extends \OCA\user_external\Base

    ในที่นี้ขออธิบายเพิ่มเติมสำหรับ adldap.php แค่ 4 ส่วน คือ

    สวนที่ 1. require_once(‘3rdparty/adldap/src/adLDAP.php’);  เส้นทางที่ใช้อ้างอิงไฟล์ ADLdap (PHP Libray) เพื่อนำมาใช้ร่วมกับ owncloud

    สวนที่ 2. $this->set_quota = ‘5 GB’;  กำหนดเนื้อที่เริ่มต้นของของผู้ใช้งาน

    ส่วนที่ 3. $this->addgroup = ‘Staffs’;  ใส่ชื่อกลุ่มที่ต้องการ เพื่อใช้สำหรับเพิ่มกลุ่มให้กับผู้ใช้งานโดยอัตโนมัติ
    เงื่อนไข จะต้องการสร้างชื่อกลุ่มไว้ก่อนจึงจะใช้งานได้ โดยเข้าไปที่เมนู Admin จากนั้นกดเมนูด้านซ้าย Add Group แล้วใส่ชื่อกลุ่มที่ต้องการ จากนั้นกด ปุ่ม +

    ส่วนที่ 4. $this->departid = ‘294’; กำหนดหมายเลขของหน่วยงาน เพื่อใช้กรองว่าต้องการให้หน่วนงานใด สามารถเข้าสู่ระบบมาใช้งานได้ ในที่นี้ 294 คือ หมายเลขของห้องสมุดครับ

    ผลลัพธ์ที่เกิดขึ้น
    เมื่อติดตั้งตามขั้นตอนดังกล่าวครบแล้วนั้น เมื่อมีการเข้าระบบ owncloud ด้วย psu passport หากเป็นบุคลากร ของคณะ/หน่วยงาน ตามหมายเลขกำหนด ก็จะสามารถเข้ามาใช้งานได้และ username นั้น ก็จะถูกเพิ่มเข้าไปในกลุ่มที่กำหนดโดยอัตโนมัติ ครับ

    ขอขอบคุณทุกท่าน ที่อ่านมาถึงตรงนี้ครับ 

    ^_^

  • อัพ PHP 5.2 to 5.3

    ไม่แน่ใจว่าจะเอามะพร้าวมาขายสวนหรือเปล่านะคับ แต่ก็เผื่อว่าบางท่านเจอปัญหาเดียวกันแล้วแก้ไม่ได้สักที (แบบไม่ต้องติดตั้งโปรแกรมใหม่หมด)

    ด้วยตัวเองก่อนหน้านี้ติดตั้ง Apache 2.2 + PHP 5.2 + phpMyAdmin on Windows 8.1 เพื่อใช้งาน Joomla 2.5 แต่เมื่อต้องการจะติดตั้ง Joomla 3 และ Moodle ระบบกลับฟ้องว่าไม่ support PHP 5.2 จะต้องติดตั้ง PHP 5.3.10 ขึ้นไป[1] ด้วยความที่ไม่อยากติดตั้งใหม่ทั้งหมด เลยค้นหาวิธีการอัพ php 5.2 เป็น php 5.3 แต่ก็ไม่ประสบผลสำเร็จ -_-‘ หลายเว็บมีความซับซ้อนและยุ่งยากสำหรับผมมาก แต่ไปเจอมาเว็บนึง[2] ซึ่งมีวิธีการที่ง่ายมากๆ เลยอยากนำมาแชร์ให้สำหรับท่านไหนที่ประสบปัญหาเหมือนอย่างผม

    ขั้นตอนการ upgrade 

    1. เข้าเว็บ http://windows.php.net/downloads/releases/archives/  แล้วคลิกดาวน์โหลด

    php-5.3.29-Win32-VC9-x86.zip

    01

    2. เมื่อดาวน์โหลดไฟล์เสร็จแล้ว ก็ทำการ unzip

    3. เปลี่ยนชื่อโฟลเดอร์ เป็น php5

    4. copy โฟลเดอร์ php5

    5. ไปที่โฟลเดอร์ php5 เวอร์ชั่นก่อนหน้านี้ที่เราเคยติดตั้งไว้ โดยให้ทำการ rename เป็น php5_old    ในที่นี้จะอยู่ที่ C:\AppServ\

    6. past โฟลเดอร์ php5 ที่ได้จากการ ข้อ 2 และ 3

    02

    7. เข้าไปที่ Control Panel > Computer Management> Service เพื่อคลิก restart service ของ Apache2.2  หรือจะคลิกขวาที่ My Computer > Manage > Service ก็ได้เหมือนกันคับ

    03

    8. ทำการทดสอบการใช้งานโดย เปิดเว็บเบราเซอร์ แล้วพิมพ์ url : localhost/phpinfo.php จะปรากฏรายละเอียดเกี่ยวกับ php 5.3.29 ที่เราได้ทำการติดตั้ง

    04

    9. เสร็จสิ้นกระบวนการ ^^

    ปล. Joomla 1.5 และ 2.5 ที่ได้เคยติดตั้งไว้ ก็ยังสามารถใช้งานได้ปกติดีคับ

    Refer :
    [1] http://www.joomla.org/technical-requirements.html
    [2] http://www.websiteadministrator.com.au/articles/install_guides/installing_php535.html