phoenix_cgi
1.0.0
Phoenix的小型CGI控制器。
将PhoenixCGI添加到您的deps中mix.exs :
defp deps do
[
{ :phoenix_cgi , "~> 0.1" } ,
...
]
end然后,这真的很重要,在您的endpoint.ex中,在plug Plug.Parsers中添加以下body_reader :parsers:
plug Plug.Parsers ,
body_reader: { PhoenixCGI.CacheRawBody , :read_body , [ ] } ,
...这将导致您的请求正文保存在私有字段中,以便我们能够将其传递给CGI脚本。
然后,您将能够将PhoenixCGI用作任何控制器。例如,如果您想在A /git/上使用git-http-backend ,以服务于/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/。
我很高兴地接受通过Github的拉力请求。