Bash Web 服务器
一个纯Bash编写的Web服务器,无需socat、netcat等。
要求
- Bash 5.2版本(该补丁将包含在Bash 5.2版本-Alpha版已经包含该补丁)
- 如果Bash版本低于5.2,需要使用已打补丁的loadable accept内置命令(http://git.savannah.gnu.org/cgit/bash.git/tree/examples/loadables/accept.c),需要将accept.patch应用到现有的Bash源码中的loadable accept.c文件,并构建并安装到
bash-server.sh
中指定的BASH_LOADABLE_PATH中。
如何使用
可以通过环境变量HTTP_PORT设置端口。
可以通过BASH_LOADABLES_PATH(参见man bash)设置accept的路径(目录)。
服务器方法:
- serveHtml (需要DOCUMENT_ROOT环境变量) - 用于提供静态文件服务
- script文件 - 需要以文件作为第一个参数来源,文件中需要有一个名为runner的函数来处理每个请求
可以通过环境变量BASIC_AUTH启用基本认证,账户和密码保存在$BASIC_AUTH_FILE指定的文件中。
使用
各种可用函数的简单说明。
会话处理
变量:
SESSION_COOKIE
cookie的名称:默认为BASHSESSID
函数:
sessionStart
启动新会话或重用现有会话
sessionSet $1 $2
设置会话变量
sessionGet $1
获取指定变量的值
Cookie处理
函数:
cookieSet $1
发送cookie
例如: cookieSet "BASHSESSID=12345; max-age=5000"
HTTP处理
函数:
httpSendStatus $1
发送指定的HTTP状态码
例如: httpSendStatus 200
设置Header时,需要在关联数组HTTP_RESPONSE_HEADERS中添加条目
HTTP_RESPONSE_HEADERS["ExampleHeader"]="Header的值"
Websocket
!!! 注意: 这仍然是试验性质的,只能发送数据,无法接收!
函数: websocketStart FUNCTION 启动Websocket服务器
websocketStop
在函数内停止Websocket服务器