自制asciinema server替代脚本未捕获会话数据排查问询
排查asciinema会话数据上传失败的方向
背景
在性能有限的开发机上,需要使用asciinema保存终端会话,但无法安装官方asciinema-server。于是编写了一个小型PHP脚本用于捕获asciinema发送到服务器的数据并保存,同时修改了~/.config/asciinema/config配置文件,将API地址设置为本地地址。
捕获脚本
编写的PHP捕获脚本如下:
<?php session_start(); $i = []; $i['post'] = $_POST; $i['get'] = $_GET; $i['request'] = $_REQUEST; $i['server'] = $_SERVER; $i['cookie'] = $_COOKIE; $i['env'] = $_ENV; $i['files'] = $_FILES; $i['session'] = $_SESSION; $i['body'] = file_get_contents('php://input'); $j = json_encode($i); $n = mt_rand(100000000, 999999999); file_put_contents(__DIR__ . "/$n.json", $j);
捕获到的请求信息
执行ls -la命令后上传会话,捕获到的请求信息如下:
{ "post": [], "get": [], "request": [], "server": { "USER": "********", "HOME": "/home/********", "HTTP_CONNECTION": "close", "HTTP_AUTHORIZATION": "Basic dXNlcm5hbWU6cGFzc3dvcmQK", "HTTP_USER_AGENT": "asciinema/2.0.0 CPython/3.6.9 Linux/5.4.0-144-generic-x86_64-with-Ubuntu-18.04-bionic", "HTTP_HOST": "test.dev", "HTTP_ACCEPT_ENCODING": "identity", "SCRIPT_FILENAME": "/var/www/testbench/asciinema/api/asciicasts/index.php", "REDIRECT_STATUS": "200", "SERVER_NAME": "test.dev", "SERVER_PORT": "80", "SERVER_ADDR": "127.0.0.1", "REMOTE_PORT": "51626", "REMOTE_ADDR": "127.0.0.1", "SERVER_SOFTWARE": "nginx/1.14.0", "GATEWAY_INTERFACE": "CGI/1.1", "REQUEST_SCHEME": "http", "SERVER_PROTOCOL": "HTTP/1.1", "DOCUMENT_ROOT": "/var/www/testbench", "DOCUMENT_URI": "/asciinema/api/asciicasts/index.php", "REQUEST_URI": "/asciinema/api/asciicasts/", "SCRIPT_NAME": "/asciinema/api/asciicasts/index.php", "CONTENT_LENGTH": "", "CONTENT_TYPE": "", "REQUEST_METHOD": "GET", "QUERY_STRING": "", "FCGI_ROLE": "RESPONDER", "PHP_SELF": "/asciinema/api/asciicasts/index.php", "PHP_AUTH_USER": "********", "PHP_AUTH_PW": "********", "REQUEST_TIME_FLOAT": 1678396966.030703, "REQUEST_TIME": 1678396966 }, "cookie": [], "env": [], "files": [], "session": [], "body": "" }
相关实现参考
上传会话的功能对应asciinema源码中api.py的第40行逻辑。
疑问
还应从哪些方向排查会话数据的去向?
内容的提问来源于stack exchange,提问作者Majid Fouladpour
相关产品推荐
相关产品推荐

