Um pequeno controlador CGI para Phoenix.
Adicione PhoenixCGI aos seus deps no mix.exs :
defp deps do
[
{ :phoenix_cgi , "~> 0.1" } ,
...
]
end Então, e isso é realmente importante, no seu endpoint.ex , adicione o seguinte body_reader no seu plug Plug.Parsers :
plug Plug.Parsers ,
body_reader: { PhoenixCGI.CacheRawBody , :read_body , [ ] } ,
...Isso fará com que o corpo da sua solicitação seja salvo em um campo privado, para que possamos passar para os scripts CGI.
Você poderá usar PhoenixCGI como qualquer controlador. Por exemplo, se você deseja servir git-http-backend em A /git/ para servir todos os repositórios em /opt/git/repos/ , você pode configurar da seguinte maneira:
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"
} Você também pode definir um plugue que definirá, por exemplo, qual projeto servir, com assign/3 .
defp set_repo ( conn ) do
assign ( conn , :extra_env , % {
GIT_PROJECT_ROOT: "/opt/git/repos/demo.git" ,
GIT_HTTP_EXPORT_ALL: "1"
} )
ende então use -o
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 A documentação está disponível no HexDocs.
Copyright (c) 2020 David Baumgartner
Este programa é um software livre: você pode redistribuí -lo e/ou modificá -lo nos termos da licença pública geral da GNU, conforme publicado pela Free Software Foundation, versão 3 da licença ou (por sua opção) qualquer versão posterior.
Este programa é distribuído na esperança de que seja útil, mas sem garantia; sem a garantia implícita de comercialização ou aptidão para uma finalidade específica. Veja a licença pública geral da GNU para obter mais detalhes.
Você deveria ter recebido uma cópia da licença pública geral da GNU junto com este programa. Caso contrário, consulte http://www.gnu.org/license/.
Felizmente, aceito pedidos de puxar através do Github.