คอนโทรลเลอร์ CGI ขนาดเล็กสำหรับฟีนิกซ์
เพิ่ม PhoenixCGI ลงใน deps ของคุณใน mix.exs :
defp deps do
[
{ :phoenix_cgi , "~> 0.1" } ,
...
]
end จากนั้นและนั่นเป็นสิ่งสำคัญจริงๆใน endpoint.ex ของคุณเพิ่ม body_reader ต่อไปนี้ใน plug Plug.Parsers ของคุณ:
plug Plug.Parsers ,
body_reader: { PhoenixCGI.CacheRawBody , :read_body , [ ] } ,
...สิ่งนี้จะทำให้ร่างกายของคำขอของคุณได้รับการบันทึกในสาขาเอกชนเพื่อให้เราสามารถส่งผ่านไปยังสคริปต์ CGI
จากนั้นคุณจะสามารถใช้ PhoenixCGI เป็นคอนโทรลเลอร์ใด ๆ ตัวอย่างเช่นหากคุณต้องการให้บริการ git-http-backend บน A /git/ เพื่อให้บริการที่เก็บทั้งหมดใน /opt/git/repos/ คุณสามารถตั้งค่าได้ดังนี้:
match :* , "/git/*path" , PhoenixCGI ,
binary: "/usr/lib/git-core/git-http-backend" ,
extra_env: % {
GIT_PROJECT_ROOT: "/opt/git/repos/" ,
GIT_HTTP_EXPORT_ALL: "1"
} นอกจากนี้คุณยังสามารถกำหนดปลั๊กที่จะกำหนดตัวอย่างเช่นโครงการที่จะให้บริการด้วย assign/3
defp set_repo ( conn ) do
assign ( conn , :extra_env , % {
GIT_PROJECT_ROOT: "/opt/git/repos/demo.git" ,
GIT_HTTP_EXPORT_ALL: "1"
} )
endจากนั้นใช้มัน
pipeline :git do
plug :set_repo
end
scope "/" do
pipe_through :git
match :* , "/git/*path" , PhoenixCGI ,
binary: "/usr/lib/git-core/git-http-backend"
end เอกสารมีอยู่ใน hexdocs
ลิขสิทธิ์ (c) 2020 David Baumgartner
โปรแกรมนี้เป็นซอฟต์แวร์ฟรี: คุณสามารถแจกจ่ายใหม่และ/หรือแก้ไขภายใต้ข้อกำหนดของใบอนุญาตสาธารณะ GNU ทั่วไปที่เผยแพร่โดย Free Software Foundation ไม่ว่าจะเป็นเวอร์ชัน 3 ของใบอนุญาตหรือ (ตามตัวเลือกของคุณ) รุ่นใหม่ ๆ
โปรแกรมนี้มีการแจกจ่ายด้วยความหวังว่าจะมีประโยชน์ แต่ไม่มีการรับประกันใด ๆ โดยไม่มีการรับประกันโดยนัยเกี่ยวกับความสามารถในการค้าหรือความเหมาะสมสำหรับวัตถุประสงค์เฉพาะ ดูใบอนุญาตสาธารณะ GNU ทั่วไปสำหรับรายละเอียดเพิ่มเติม
คุณควรได้รับสำเนาใบอนุญาตสาธารณะ GNU ทั่วไปพร้อมกับโปรแกรมนี้ ถ้าไม่ดู http://www.gnu.org/licenses/
ฉันยอมรับคำขอดึงผ่าน GitHub อย่างมีความสุข