当前位置: 首页 > news >正文

ARM64 汇编编写的 Web 服务器 ymawky:功能特性、安全措施与配置说明

导航菜单

切换导航。可进行登录操作,还能进行外观设置。

平台

  • AI 代码创作:包括 GitHub Copilot、GitHub Spark、GitHub Models、MCP Registry(新)等工具,各有其功能特点。
  • 开发者工作流:有 Actions、Codespaces、Issues、Code Review 等,用于自动化工作流、提供开发环境、规划跟踪工作和管理代码变更等。
  • 应用安全:涵盖 GitHub Advanced Security、代码安全、密钥保护等方面,可发现修复漏洞、保障代码安全和阻止信息泄露。
  • 探索:包含为何选择 GitHub、文档、博客、更新日志、市场等内容。还可查看所有功能。

解决方案

  • 按公司规模划分:有企业版、中小团队版、初创公司版、非营利组织版。
  • 按用例划分:包括应用现代化、DevSecOps、DevOps、CI/CD 等用例,还能查看所有用例。
  • 按行业划分:涉及医疗保健、金融服务、制造业、政府部门等行业,也可查看所有行业。还可查看所有解决方案。

资源

  • 按主题探索:有人工智能、软件开发、DevOps、安全等主题,可查看所有主题。
  • 按类型探索:包括客户案例、活动与网络研讨会、电子书与报告、商业洞察、GitHub Skills。
  • 支持与服务:有文档、客户支持、社区论坛、信任中心、合作伙伴。还可查看所有资源。

开源

  • 社区:有 GitHub Sponsors 用于资助开源开发者。
  • 项目:包括安全实验室、维护者社区、加速器、GitHub Stars、存档项目。
  • 仓库:涵盖主题、热门趋势、集合。

企业版

  • 企业解决方案:有企业平台,由 AI 驱动的开发者平台。
  • 可用附加组件:包括 GitHub Advanced Security、Copilot for Business、高级支持。

定价

可查看定价信息,还可进行搜索或跳转操作,提供搜索代码、仓库、用户等功能,有搜索语法提示,还能进行反馈提交。此外还有保存的搜索功能。

其他导航选项

有代码、问题、拉取请求、操作、项目、安全与质量、洞察等导航项。

imtomt/ymawky

主分支,可进行分支和标签操作,能转到文件查看代码,还有文件夹和文件展示,包括最新提交和历史记录等内容。仓库文件导航包括 README、GPL - 3.0 许可证等。

_ymawky_ —— 用 ARM 汇编编写的 Web 服务器

这是 _ymawky_,一个完全用 ARM64 汇编语言编写的 Web 服务器。它仅使用系统调用、不依赖 libc 库、采用每个连接一个进程的方式,代码均为手动编写,虽为 MacOS 开发,但开发者尽力使其具备可移植性,不过在 Linux 或其他 Unix 系统上运行可能需调整。

构建

需要安装 Xcode 命令行工具,可使用 `xcode - select --install` 安装。ymawky 仅支持苹果硅芯片(arm64)。运行 `make` 命令进行构建,要确保 `ymawky` 可执行文件旁边存在 `www/` 目录,这是文档根目录,当请求的 `GET` 为空文件名时,会搜索 `www/index.html`。当客户端请求出错时,_ymawky_ 会尝试提供静态错误页面,需确保 `err/` 目录与 `ymawky` 和 `www/` 目录处于同一层级,可通过配置修改默认文件和文档根目录。

运行

  • `./ymawky`:在 `127.0.0.1:8080` 上启动 Web 服务器。
  • `./ymawky [端口号]`:在 `127.0.0.1:[端口号]` 上启动 Web 服务器。
  • `./ymawky [非 0 - 9 的任意字符]`:以调试模式在 `127.0.0.1:8080` 上启动 Web 服务器,调试模式会禁用多进程,使 ymawky 仅处理一个请求。目前 ymawky 只能在 `127.0.0.1` 上运行,若要体验可启动服务器后访问相应地址。

功能特性

  • 支持的 HTTP 方法:包括 GET、PUT、DELETE、OPTIONS、HEAD。
  • 基本防护:可抵御类似 Slowloris 的拒绝服务攻击。
  • 编码解码:支持对 % 十六进制编码进行解码。
  • 路径遍历检测与防范:能智能检测并阻止路径遍历,防止 `..` 用于路径穿越,但不禁止文件名中包含多个点的情况。
  • 自动前缀:自动在请求的文件前添加 `www/`。
  • 默认请求:空的 `GET /` 请求默认指向 `GET www/index.html`。
  • PUT 请求:支持上传最大 1GiB 的文件,也可配置支持更大文件,PUT 操作是原子性的,可支持并发 PUT 请求,会对 `PUT` 请求中的 `Content - Length` 进行解析和验证。
  • MIME 类型检测:能检测文件的 MIME 类型,并在响应头中给出相应的 `Content - Type`。
  • 范围请求:支持在 `GET` 请求中使用 `Range: bytes=` 范围,对视频拖动播放有良好支持。
  • HTTP 版本解析:基本的 HTTP 版本解析,请求需指定 `HTTP/1.1` 或 `HTTP/1.0`,请求 `HTTP/1.1` 时请求头中必须包含 `Host:` 字段。
  • 错误页面:为错误代码提供自定义 HTML 页面,可在 `err/` 目录中查看示例。
  • 目录列表:若请求的资源是目录,会列出该目录下的所有文件和子目录,`GET /` 若未指定文件,始终会搜索 `index.html`。

“安全性”

ymawky 是手动编写的 Web 服务器,可能存在漏洞,但开发者已采取安全措施,如拒绝特定长度和包含特定内容的请求、限制访问范围、使用特定文件操作方式、设置接收数据超时时间等。

HTTP 状态码

ymawky 目前支持并可返回多种状态码,错误代码(400 以上)会附带自定义 HTML 页面,可使用 `build_err_pages.sh` 为每个错误代码创建页面,并可根据需要修改文本。

MIME 类型

  • 与 Web 相关的文件:如 `.html` 对应 `text/html; charset=utf - 8` 等多种类型。
  • 图像文件:如 `.png` 对应 `image/png` 等多种类型。
  • 字体文件:如 `.woff` 对应 `font/woff` 等多种类型。
  • 文档文件:如 `.txt` 对应 `text/plain; charset=utf - 8` 等多种类型。
  • 视频文件:如 `.mp4` 对应 `video/mp4` 等多种类型。
  • 音频文件:如 `.mp3` 对应 `audio/mpeg` 等多种类型。
  • 存档文件:如 `.zip` 对应 `application/zip` 等多种类型。

配置

可使用 `config.S` 文件对 ymawky 进行配置,包括文档根目录、错误页面目录、默认文件、接收数据超时时间、请求头接收超时时间、PUT 操作宽限期、最小字节每秒数、最大请求体大小、最大并发进程数等选项。

实现说明

ymawky 为 MacOS 编写,代码中有特定于 MacOS 的内容,不具备可移植性,如系统调用、错误报告、`fork()` 函数、特定选项和函数、结构体布局和偏移量、重定位操作符、信号处理等方面在不同系统存在差异。

特别感谢

感谢 _Bob Johnson_ 和 _Bob Johnson 的治疗师_。

关于

这是一个完全用 ARM64 汇编编写的 MacOS Web 服务器。

资源

有 README 资源。

许可证

采用 GPL - 3.0 许可证。

哎呀!

加载时出现错误,可重新加载此页面。还展示了活动、收藏数、关注者、复刻数等信息,可举报仓库,有版本发布、包、贡献者等内容,也存在加载错误情况,还展示了语言占比信息。页脚有相关导航和声明,此时可能无法执行某些操作。

http://www.jsqmd.com/news/790804/

相关文章:

  • Vue项目引入vue-particles插件避坑指南:从安装到性能优化的全流程
  • taotoken多模型聚合与路由能力提升服务稳定性实践
  • 为什么Elasticvue是Elasticsearch集群管理复杂性的最佳解决方案
  • 5分钟上手:Translumo实时屏幕翻译工具完全指南
  • OBS模糊插件完全指南:5种专业特效提升直播和视频品质
  • 第52篇:Vibe Coding时代:LangGraph + 审计日志实战,解决 Agent 做了什么无人可追的问题
  • QKeyMapper完全指南:Windows平台终极按键映射解决方案
  • 用DAIN算法修复老视频,从安装到实战的保姆级教程(附字幕场景避坑指南)
  • 抖音内容批量下载工具深度解析:为什么你需要一个专业的内容管理方案?
  • 宏裕塑胶一级代理三星SDI化学产品服务全览,优质材料解决方案
  • 行业首创空间3D显示,还能主动提醒和帮忙叫车,千问AI眼镜这操作真把我看愣了
  • 母亲节随笔愿母爱天长-来自AI们的问候,献给大家
  • 席卷千万级俱乐部生态!《三角洲游戏》霸榜背后的印钞机,全开源游戏电竞护航陪玩源码系统小程序重塑超级接单平台,顶配游戏护航系统与电竞护航系统管理中枢深度揭秘 - 壹软科技
  • WeChatMsg:微信聊天记录永久保存与智能分析的完整解决方案
  • Qobuz-DL:从命令行到高保真音乐库的完整构建指南
  • 为什么你的LLM+运维总在POC阶段停滞?SITS 2026揭晓:AI原生运维的3个硬性准入门槛与2个不可妥协的基线标准
  • SingleFile终极指南:如何一键保存完整网页到单个HTML文件
  • 2025网盘直链下载助手:八大平台一站式高速下载解决方案
  • 2025届毕业生推荐的六大降重复率助手实测分析
  • 山姆小程序云函数网关hook调用
  • 对比直接调用与通过 Taotoken 聚合调用在简单任务上的响应速度
  • 如何用applera1n在iOS 15-16设备上绕过激活锁?完整操作指南
  • 谷歌「AI联合数学家」来了!刷新最难数学AI基准SOTA,牛津教授用它解开群论悬案
  • 项目介绍 MATLAB实现基于蚁群优化算法(ACO)进行锂电池剩余寿命(RUL)预测(含模型描述及部分示例代码)专栏近期有大量优惠 还请多多点一下关注 加油 谢谢 你的鼓励是我前行的动力 谢谢支持 加
  • 基于ASR与LLM的视频字幕翻译:ChatGPT-Subtitle-Translator实战指南
  • 别再只会用LineRenderer了!用Unity粒子系统(Particle System)打造超炫技能闪电,从材质到参数保姆级教程
  • 开源多模型API网关One API:统一管理GPT-4、Claude等大模型调用
  • 5个步骤彻底告别3D打印工作流中的格式转换烦恼
  • 从零解析ST FOC库2.0:基于霍尔传感器的矢量控制实战
  • 不止于导航:手把手教你用AI Habitat提取并分析3D室内场景的语义分割信息