Un pequeño controlador CGI para Phoenix.
Agregue PhoenixCGI a su deps en mix.exs :
defp deps do
[
{ :phoenix_cgi , "~> 0.1" } ,
...
]
end Entonces, y eso es realmente importante, en su endpoint.ex , agregue el siguiente body_reader en su plug Plug.Parsers :
plug Plug.Parsers ,
body_reader: { PhoenixCGI.CacheRawBody , :read_body , [ ] } ,
...Esto hará que el cuerpo de su solicitud se guarde en un campo privado, para que podamos pasarlo a los scripts CGI.
Luego podrá usar PhoenixCGI como cualquier controlador. Por ejemplo, si desea servir git-http-backend en a /git/ para servir a todos los repositorios en /opt/git/repos/ , puede configurar de la siguiente manera:
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"
} También puede definir un enchufe que definirá, por ejemplo, que proyecte servir, con assign/3 .
defp set_repo ( conn ) do
assign ( conn , :extra_env , % {
GIT_PROJECT_ROOT: "/opt/git/repos/demo.git" ,
GIT_HTTP_EXPORT_ALL: "1"
} )
endY luego úsalo
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 La documentación está disponible en hexdocs.
Copyright (c) 2020 David Baumgartner
Este programa es un software gratuito: puede redistribuirlo y/o modificarlo bajo los términos de la Licencia Pública General de GNU publicada por Free Software Foundation, ya sea la versión 3 de la licencia o (a su opción) cualquier versión posterior.
Este programa se distribuye con la esperanza de que sea útil, pero sin ninguna garantía; Sin siquiera la garantía implícita de comerciabilidad o estado físico para un propósito particular. Vea la Licencia Pública General de GNU para más detalles.
Debería haber recibido una copia de la Licencia Pública General de GNU junto con este programa. Si no, consulte http://www.gnu.org/licenses/.
Con suerte, acepto solicitudes de extracción a través de GitHub.