Squid บน OpenWrt: การตรวจสอบ UCI ล้มเหลวก่อนเริ่มทำงาน
ติดตามข้อความ “validation failed” ของ Squid บน OpenWrt ไปยังชั้นเริ่มต้นของ UCI ก่อนแก้ไขการกำหนดค่า Squid ดั้งเดิม
แพ็กเกจ Squid ของ OpenWrt อาจปฏิเสธการกำหนดค่า UCI ของตนก่อนที่จะเริ่มคำสั่ง Squid ด้วยซ้ำ ดังนั้น “validation failed” ทั่วไปจากสคริปต์ init จึงไม่ใช่เหตุผลที่เพียงพอจะแก้ไข squid.conf
อ่านข้อความระดับฟิลด์ที่อยู่ก่อนหน้านั้นและเทียบกับกฎการตรวจสอบของแพ็กเกจที่ติดตั้งไว้ ตัวอย่างเช่น การใช้งานตอนเริ่มทำงานประกาศให้ http_port เป็นชนิดพอร์ต ช่องว่างท้ายบรรทัดอาจทำให้การตรวจสอบนั้นล้มเหลวแม้ตัวเลขจะดูถูกต้อง ผลการตรวจสอบที่ล้มเหลวจะหยุด callback ก่อนการลงทะเบียนคำสั่ง
สำหรับส่วนที่ชื่อ squid จริง ๆ ให้ตรวจสอบค่าที่แคบลง:
uci get squid.squid.http_port
ใช้ชื่อส่วนที่มีอยู่ในการติดตั้ง แหล่งที่มาของแพ็กเกจโดยปกติคือ /etc/config/squid; หากไม่มีข้อความ ให้ตรวจสอบว่ามีอยู่และอ่านได้หรือไม่ ฉบับอื่นอาจแสดงฟิลด์ที่แตกต่างออกไป
หลังการตรวจสอบ UCI ให้ติดตามไฟล์ดั้งเดิมที่ส่งให้ Squid ตัวห่ออาจเลือกไฟล์ที่ระบุชัดเจนหรือสร้างขึ้นจากอินพุตที่รองรับ การแก้ไขไฟล์ที่ไม่ได้ใช้ไม่สามารถเปลี่ยนผลลัพธ์ที่สร้างขึ้นได้
ไวยากรณ์ดั้งเดิม ตัวช่วย สิทธิ์ และการตรวจสอบผู้รับฟังจะตามมาทีหลัง รายงานว่า “UCI ปฏิเสธ http_port” หรือ “Squid ปฏิเสธการกำหนดค่าดั้งเดิมที่เลือกไว้” พร้อมหลักฐาน การลบการกำหนดค่าของแพ็กเกจเพียงเพื่อระงับข้อผิดพลาดแรกอาจทำให้ตัวห่อไม่สามารถทำงานของตนได้