
哈维尔·萨格雷多的相关链接哈维尔·萨格雷多Javier Sagredo有博客、项目、杂项、关于我等相关链接。主页与项目有主页和项目相关页面。Sula简介Sula阅读需3分钟有498个单词由哈维尔·萨格雷多Javier Sagredo创作。其目录包含要求、运行命令行选项、停止服务器、特性、架构、计划特性。/su.la/ 是西班牙语中“胶囊”Cápsula一词的后缀。Sula有对应的标志还有Git链接。Sula是一个用Scryer Prolog编写的Gemini协议服务器。要求sula依赖一个打了补丁的Scryer Prolog可在指定处js/fixes 分支找到。所需补丁包括一个原生的 $copy_stream/2 内置函数对 library(pio) 的 buffer_prepare_for_n/5 进行修复在 socket_server_accept/4 中添加非阻塞轮询循环移植到 rustls修改 tls_server_negotiate 以包含可选的客户端证书。构建并安装打了补丁的Scryer有相应命令。openssl(1) 也必须在 PATH 中服务器启动时会调用它从配置的身份证书中读取 CN并验证其是否与配置的主机名匹配。运行运行命令为 ./sula.pl --addr HOST:PORT --hostname NAME --content DIR --certs DIRsula.pl 是多语言脚本bash 会检测 PATH 中的 scryer-prolog并以 sula:run, halt 作为入口目标来执行它。还有运行示例。命令行选项所有选项可任意顺序输入未识别的选项将被静默忽略。选项包括 --addr HOST:PORT、--hostname NAME、--content DIR、--certs DIR并分别说明了其含义和默认值。停止服务器按下 CtrlC 会触发干净的关闭流程关闭监听套接字顶级捕获日志记录 Shutting down然后进程以状态码 0 退出。特性特性包括通过 rustls 实现 TLS支持 PKCS#12 身份文件主机名验证通过 mime/2 按文件扩展名进行内容协商文本响应通过 format/3 发送二进制响应通过 copy_stream/2 在原生代码中流式传输每个连接的错误处理通过打补丁的 Scryer socket_server_accept/4 实现 SIGINT 时的优雅关闭。架构架构包含 sula.pl多语言启动器 主要的 sula 模块、config.pl命令行解析和配置访问器、cert.pl证书加载 主机名与 CN 检查、mime.pl/etc/mime.types 解析器和 mime/2 事实、request.pl请求行读取器、gemini_uri.plGemini URI DCG、ip.plIP 地址识别、response.pl响应状态码 DCG、log.pl带标签的 log_msg/3、banner.pl读取 banner.txt 并逐行输出。计划特性计划特性包括使用密钥和证书代替 identity.p12、支持客户端证书、从配置文件加载配置、保存和加载用户、运行 CGI 脚本、支持所有状态码、速率限制、虚拟主机、文件日志记录、多线程或类似功能、热重载。