피닉스를위한 작은 CGI 컨트롤러.
mix.exs 의 deps 에 PhoenixCGI 추가하십시오.
defp deps do
[
{ :phoenix_cgi , "~> 0.1" } ,
...
]
end 그런 다음 endpoint.ex 에서는 plug Plug.Parsers 에 다음 body_reader 추가합니다.
plug Plug.Parsers ,
body_reader: { PhoenixCGI.CacheRawBody , :read_body , [ ] } ,
...이로 인해 요청 본문은 개인 분야에 저장되므로 CGI 스크립트에 전달할 수 있습니다.
그런 다음 PhoenixCGI 컨트롤러로 사용할 수 있습니다. 예를 들어, /opt/git/repos/ 의 모든 저장소를 제공하기 위해 A /git/ 에서 git-http-backend 제공하려면 다음과 같이 설정할 수 있습니다.
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
이 프로그램은 무료 소프트웨어입니다. Free Software Foundation, 라이센스의 버전 3 또는 이후 버전에서 게시 한 GNU 일반 공개 라이센스의 조건에 따라 재분배 및/또는 수정할 수 있습니다.
이 프로그램은 유용 할 것이지만 보증이 없다는 희망으로 배포됩니다. 상업성 또는 특정 목적에 대한 적합성에 대한 묵시적 보증조차 없습니다. 자세한 내용은 GNU 일반 공개 라이센스를 참조하십시오.
이 프로그램과 함께 GNU 일반 공개 라이센스 사본을 받았어야합니다. 그렇지 않은 경우 http://www.gnu.org/licenses/를 참조하십시오.
나는 Github를 통해 풀 요청을 행복하게 받아들입니다.