ichinose9372 / 42-webserv

c++でnginxを作る課題
2 stars 0 forks source link

CGI追加(.php/.pyなど) #18

Closed snemoto-42 closed 10 months ago

snemoto-42 commented 10 months ago

[Mandatory] Execute CGI based on certain file extension (for example .php). Your server should work with one CGI (php-CGI, Python, and so forth). [Bonus] Handle multiple CGI.

snemoto-42 commented 10 months ago

sample CGI for python https://qiita.com/pythonista/items/82fb537688e0f2be4915

snemoto-42 commented 10 months ago

app.pyを実行するには、ExecCgi.cppにて、execve(path.c_str(), NULL, NULL);の修正が必要

// コマンドライン引数 char pythonScript = "/path/to/your/script.py"; char argv[] = {"python", pythonScript, NULL}; // execve() 関数を呼び出す if (execve("/usr/bin/python", argv, NULL)

snemoto-42 commented 10 months ago

pritnt("test")はブラウザに表示されるが、import cgi/codecsを活用したコードだと、app.py内で処理が終了しなくなるため、ExecCgiを修正

snemoto-42 commented 10 months ago

TODO ・CGIの無限ループのプログラム、タイムアウトやレスポンス返却 ・python:ページ遷移に対応していない(http://localhost:8080/python/app.py?button=SUBMIT) ・perl:実行できるようにする https://www.tohoho-web.com/wwwcgi4.htm ・php:実行できるようにする

(レビュー用) ・コンテナ内でプログラムの実行(DockerFileの用意) マイPCで試す、COPYではなくmountで実行ファイル等を参照する Error response from daemon: failed to create task for container: failed to create shim task: OCI runtime create failed: runc create failed: unable to start container process: exec: "./webserv configrations/default.conf": stat ./webserv configrations/default.conf: no such file or directory: unknown https://qiita.com/okmt_okmt_/items/9397a870869042fec5b4

・レビュワーが必要なライブラリをインストールできるようにする(PythonならMakefileにてpip install -r requirements.txt) ・校舎macはDocker dameonが起動していないので、レビュワーは別の環境が必要そう

snemoto-42 commented 10 months ago

CGIスクリプト.pyを実行できるように反映したため、一旦クローズ

snemoto-42 commented 10 months ago

ExecCgiにてexecveの処理を分岐する必要があるため、再オープン

snemoto-42 commented 10 months ago

ExecCgiはterabuさんの修正により修正不要 他コミットして.pyが動作したため、一旦クローズ