วิธีเรียกข้อมูล ข้าม Database บน Postgresql

บน Postgresql สามารถเรียกข้อมูลข้าม Database ได้ แต่ต้องสั่งติดตั้ง dblink extension ก่อน ด้วยคำสั่ง จากนั้น ใช้คำสั่ง dblink() ใน FROM clause ซึ่ง Function นี้ จะต้อง return records มา ซึ่งเราจะต้องกำหนดชนิดของข้อมูลด้วย ดังตัวอย่างนี้ เป็นการเรียกไปยัง Database ชื่อ otherdatabase, Schema ชื่อ schema_name และเรียกข้อมูลจาก Table ชื่อ sometable โดยมี field ชื่อ id, fullname, dob หลังคำสั่ง dblink ต้องกำหนด้วยว่า records ที่ได้กลับมา มี Datatype เป็นอะไรบ้าง ในตัวอย่างข้างต้น กำหนด id เป็น Integer, fullname เป็น Text และ dob (วันเกิด — Date of birth) เป็น Date แต่ถ้าอีก Database นั้น ให้สิทธิ์ user ที่ติดต่อเข้าไป ไม่ใช่ super user จะต้องระบุ username, password ดังตัวอย่างนี้ เป็นการติดต่อ Database: otherdatabase, User: db_username, Password: db_password, Schema: schema_name หวังว่าจะเป็นประโยชน์ครับ

Read More »

วิธี Bypass หน้า Privacy Error เนื่องจาก NET::ERR_CERT_INVALID บน Google Chrome

Google Chrome พยายามปกป้องเราจาก Website ที่อาจจะมีความเสี่ยง ใช่ ดี แต่ว่า บางทีก็จำเป็น แบบว่า เป็นเครื่องทดสอบไรงี้ ยังไม่ได้ติดตั้ง Certificate จริงจัง ถ้าเจอหน้านี้ … คลิก Advanced บางทีก็จะเจอปุ่ม Proceed to website ก็จะเข้าได้ แต่ถ้าไม่มีปุ่มนั้นหล่ะ ?!?! วิธีการง่ายสุด คือ พิมพ์คำว่า thisisunsafe พิมพ์ไปเลย ไม่ต้องเคาะ Enter ก็จะเข้าเว็บไซต์ได้เลย *** ใช้ในกรณีเป็น เว็บไซต์ทดสอบของตัวเองเท่านั้นนะ ***

Read More »

วิธีติดตั้ง HTTPS ด้วย Certificate ของ Let’s Encrypt แบบ wildcard สำหรับ Intranet ที่ไม่สามารถเข้าถึงได้จาก Internet

ความเดิมตอนที่แล้ว ต่อจาก วิธีติดตั้ง HTTPS ด้วย Certificate ของ Let’s Encrypt ซึ่ง เครื่องที่จะขอใช้ Certificate นั้น ต้องสามารถ “เข้าถึงได้” จาก Internet เพราะ จะต้องสร้าง File ไปวางในตำแหน่งที่ Let’s Encrypt CA สามารถเข้ามาตรวจสอบได้ว่าเป็น ผู้ที่มีสิทธิ์ในการจัดการ Domain Name นั้นจริง ปัญหาคือ ในองค์กร ถ้าจะให้มีเซิร์ฟเวอร์ ที่สามารถเข้าถึงได้ จาก Internet ต้องเปิด Firewall ขององค์กร ซึ่ง ซับซ้อน และ มีความเสี่ยง แล้ว ถ้ามีเครื่องภายใต้โดเมนเดียวกันอีกหลายเครื่อง ต้องทำทุกเครื่อง ซึ่งไม่สะดวกเลย ต้องเข้าใจก่อน Let’s encrypt มีวิธีการตรวจสอบความเป็นเจ้าของ Domain Name หรือที่เรียกว่า “Challenge” หลายวิธี ได้แก่ HTTP-01 Challenge DNS-01 Challenge TLS-SNI-01 Challenge TLS-ALPN-01 Challenge วิธีที่ง่าย และทำกันทั่วไป คือ HTTP-01 คือ เมื่อ certbot client รับคำสั่งขอ certificate สำหรับโดเมนที่ต้องการแล้ว จะต้องเอาไฟล์ ไปวางที่ ซึ่ง ชื่อต้องตรงกับที่กำหนด และในไฟล์ จะเป็น Token และ Thumbprint ของ account key (ในทางเทคนิค อาจจะให้มีสักเครื่องในองค์กรที่เปิดให้เข้าถึงจาก Internet ได้ ทำหน้าที่ร้องขอ Certificate ได้ แล้วทำ HTTP-01 Challenge ให้ผ่าน ก็จะสามารถขอ Certificate ให้กับ Subdomain อื่น ๆ ได้) แต่มีอีกวิธีหนึ่ง คือ DNS-01 Challenge ซึ่ง ไม่จำเป็นต้องมีเครื่องที่เข้าถึงได้จาก Internet (แต่สามารถ ออก Internet ได้) แต่อาศัยการสร้าง TXT Record ตามที่กำหนดแทน ประมาณนี้ วิธีการมีดังนี้ 0. เราจะขอ wildcard certificate โดเมนของ abc.ijk.xyz.psu.ac.th โดยการติดตั้ง Let’s Encrypts certbot client บน Ubuntu 20.04 ซึ่งเครื่องนี้ สามารถต่อ Internet ได้ แต่ไม่สามารถเข้าถึงได้จาก Internet 1.ติดตั้ง Let’s Encrypts certbot client (ยุ่งยากหน่อย แต่จะได้ certbot version 1.19) หรือสั้นๆ ทำอย่างนี้ก็ได้ (ไม่ต้องใช้ snap แต่จะได้ certbot version 0.40) 2. สั่ง certbot ให้ไปขอเฉพาะ certificate จากนั้นบอกว่าจะติดตั้งเอง (manual) และ ขอใช้ DNS-01 Challenge 3. กรอกข้อมูล โดเมนเนม ที่ต้องการ ในที่นี้ จะขอใช้ wildcard คือ *.abc.ijk.xyz.psu.ac.th **** ตรงนี้ อย่าเพิ่งเคาะ Enter เด็ดขาด จนกว่า DNS admin จะดำเนินการเสร็จ ***** 4. แจ้งผู้ดูแล DNS ขององค์กร ว่า ให้เพิ่ม TXT Record ส่งข้อความตามนี้ไปให้เค้าก็น่าจะได้ หรือจะให้ดี

Read More »

[บันทึกกันลืม] วิธีติดตั้ง django-auth-ldap

การจะใช้ ldap backend บน django นั้น จะต้องติดตั้ง django-auth-ldap ซึ่งจะใช้คำสั่ง แต่ว่า อาจจะเจอ Error ประมาณนี้ เหตุเพราะ ใน container ที่ใช้ อาจจะไม่มีเครื่องมือในการ build วิธีแก้ไขคือ (ใน docker python:3.8) ให้ติดตั้ง package แล้วจึงค่อยติดตั้งผ่าน pip ก็จะเรียบร้อยครับ

Read More »