وحدة تحكم صغيرة CGI لفينيكس.
أضف PhoenixCGI إلى deps in mix.exs :
defp deps do
[
{ :phoenix_cgi , "~> 0.1" } ,
...
]
end بعد ذلك ، وهذا أمر مهم حقًا ، body_reader endpoint.ex 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 العامة العامة كما تم نشرها من قبل مؤسسة البرمجيات المجانية ، إما الإصدار 3 من الترخيص ، أو (في خيارك) أي إصدار لاحق.
يتم توزيع هذا البرنامج على أمل أن يكون مفيدًا ، ولكن بدون أي ضمان ؛ بدون حتى الضمان الضمني للتسويق أو اللياقة لغرض معين. راجع رخصة GNU العامة لمزيد من التفاصيل.
يجب أن تكون قد تلقيت نسخة من رخصة GNU العامة العامة مع هذا البرنامج. إذا لم يكن الأمر كذلك ، راجع http://www.gnu.org/licenses/.
أنا أقبل بسعادة طلبات السحب من خلال جيثب.