# LuaWebURL
**Repository Path**: xiaohuenh345_admin/lua-web-url
## Basic Information
- **Project Name**: LuaWebURL
- **Description**: 一个将lua脚本应用在web开发中并作为url
- **Primary Language**: Java
- **License**: AGPL-3.0
- **Default Branch**: master
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 0
- **Forks**: 0
- **Created**: 2026-05-07
- **Last Updated**: 2026-05-25
## Categories & Tags
**Categories**: Uncategorized
**Tags**: None
## README
|文档|下载链接|
|---|---|
|base64教程.md|[下载](./base64教程.md)|
|json教程.md|[下载](./json教程.md)|
|chineseId教程.md|[下载](./chineseId教程.md)|
|hash教程.md|[下载](./hash教程.md)|
|http教程.md|[下载](./http教程.md)|
|token教程.md|[下载](./token教程.md)|
|task教程.md|[下载](./task教程.md)|
|xml教程.md|[下载](./xml教程.md)|
|dump教程.md|[下载](./dump教程.md)|
|importluaj教程.md|[下载](./importluaj教程.md)|
|print教程.md|[下载](./print教程.md)|
|bilang教程.md|[下载](./bilang教程.md)|
|webServer教程.md|[下载](./README.md)|
|serverMassage教程.md|[下载](./README.md)|
# Lua-Web-URL
> 一个基于 自研 HTTP 服务 的高性能动态 Web 服务器,支持 Lua 和 BiLang 双脚本引擎驱动,同时集成 FTP 服务。通过 `git clone http://gitee.com/xiaohuenh345_admin/lua-web-url.git` 获取源码,使用 `bash in.sh` 打包部署。
## 项目架构
```mermaid
graph LR
A[ServerMassage
主入口] --> B[WebServer
HTTP/HTTPS
自研 HTTP 服务]
A --> C[SimpleFTPServer
FTP]
B --> D[.lua / .luaj]
B --> E[.bi]
D --> F[Lua 引擎
LuaJ]
E --> G[BiLang 引擎
自定义]
```
## 核心模块
1. ServerMassage(服务管理器)
> 命令行交互式服务管理,通过 `init.json` 配置多服务器实例。
|命令|说明|
|---|---|
|`start`|启动所有配置的服务器|
|`start `|启动指定端口的服务器|
|`stop`|停止所有运行中的服务器|
|`stop `|停止指定端口的服务器|
|`list`|列出所有运行中的服务器|
> 启动协议:首次运行需同意 `agreement.rule` 条款(设置 `S = true`)。
## `init.json` 配置示例:
```json
{
"servers": [
{
"port": 8080,
"hostPath": "/path/to/webroot",
"jksPath": "/path/to/ssl.jks",
"password": "passwd",
"serverType": "web"
},
{
"port": 2121,
"ftpUser": "admin",
"ftpPass": "admin",
"ftpDir": "/path/to/ftpdir",
"serverType": "ftp"
}
]
}
```
2. WebServer(自研 HTTP 服务)
> 自研 HTTP 服务,非第三方框架。支持 `.lua`/`.luaj`(Lua 引擎)和 `.bi`(BiLang 引擎)动态脚本,以及 `.jar` 可执行包和静态文件托管。
|特性|说明|
|---|---|
|HTTP 服务|自研实现,非 NanoHTTPD 等第三方框架|
|动态脚本|`.lua`/`.luaj` → LuaJ 引擎;`.bi` → BiLang 引擎|
|静态文件|自动识别 MIME 类型,支持目录索引|
|默认页|`index.lua` → `index.bi` → `index.json` → `index.html` → `index.htm`|
|SSL/TLS|通过 JKS 密钥库配置 HTTPS|
|安全|路径遍历防护、响应防重复发送|
## 启动参数:
```bash
java WebServer [port] [rootDir] [jksPath] [password]
# 默认: 8080 webroot ssl.jks ""
```
3. Lua 脚本环境
> 每个 HTTP 请求创建独立的 Lua 全局环境,预置以下模块:
|模块|说明|
|---|---|
|`_WEBRequest`|HTTP 请求信息(method/uri/headers/params/body/remote_addr)|
|`_METHOD`|请求方法布尔判断(get/post/put/delete/head)|
|`response`|响应控制(send/sendHtml/sendJson/setHeader/status/sendCustom)|
|`http`|HTTP 客户端(get/post/put/delete/head)|
|`json`|JSON 编解码|
|`xml`|XML 编解码|
|`base64`|Base64 编解码|
|`hash`|MD5/SHA-1/SHA-256/SHA-512/HMAC/CRC32|
|`token`|JWT/API Key/签名/时间戳/UUID/密码哈希/访问令牌等|
|`chineseId`|中国身份证解析与行政区划查询|
|`task`|任务调度(同步/延迟执行)|
|`dump`|数据格式化打印|
|`map` / `list`|Java 集合 ↔ Lua Table 转换|
|`javatools`|Java 反射与对象操作|
|`sql` / `sqlx`|SQL 执行与连接管理|
|`print`|重定向至服务器日志|
|`loglist`|日志缓冲区引用|
|`getLuaDir`|获取当前脚本目录|
|`importLuaJ`|动态加载 Java Lua 模块|
|`luajava.astable`|Java List/Map → Lua Table|
|`null`|Java null 值|
4. BiLang 脚本环境
> BiLang 是一种轻量级面向对象脚本语言,同样支持 Web 请求处理。
|内置对象|说明|
|---|---|
|`request`|HTTP 请求信息(method/uri/headers/params/body)|
|`_METHOD`|请求方法布尔判断|
|`response`|响应控制(同 Lua)|
|`http`|简化 HTTP 客户端(get/post)|
|`base64`|Base64 编解码|
|`md5`|MD5 哈希|
|`sql`|SQL 执行|
|`getScriptDir`|获取当前脚本目录|
|`print`|日志打印|
|`loglist`|日志缓冲区|
|
BiLang 语言特性:数字/布尔/字符串/列表/映射/函数/Lambda/类/继承/接口/`@local`/`fixed`/代码编译保护。
5. FTP 服务(SimpleFTPServer)
|配置项|说明|
|---|---|
|`port`|监听端口|
|`ftpDir`|根目录|
|`ftpUser` / `ftpPass`|认证信息(默认 admin/admin)|
## 快速开始
```bash
# 克隆项目
git clone http://gitee.com/xiaohuenh345_admin/lua-web-url.git
cd lua-web-url
# 打包
bash in.sh
# 运行(需先同意协议条款)
java -jar target/lua-web-url.jar
```
## 脚本示例
### Lua (index.lua)
```lua
if _METHOD.post then
local name = _WEBRequest.body.name or "Guest"
response.sendJson('{"message":"Hello, ' .. name .. '"}')
else
response.sendHtml("Welcome
")
end
```
### BiLang (index.bi)
```bi
if _METHOD.post {
name = get(request, "body").name
if name == nil { name = "Guest" }
response.sendJson("{\"message\":\"Hello, " + name + "\"}")
} else {
response.sendHtml("Welcome
")
}
```
## 模块文档索引
|文档|状态|
|---|---|
|[base64教程.md](base64教程.md)|✅|
|[json教程.md](json教程.md)|✅|
|[chineseId教程.md](chineseId教程.md)|✅|
|[hash教程.md](hash教程.md)|✅|
|[http教程.md](http教程.md)|✅|
|[token教程.md](token教程.md)|✅|
|[task教程.md](task教程.md)|✅|
|[xml教程.md](xml教程.md)|✅|
|[dump教程.md](dump教程.md)|✅|
|[importluaj教程.md](importluaj教程.md)|✅|
|[print教程.md](print教程.md)|✅|
|[bilang教程.md](bilang教程.md)|✅|
|[webServer教程.md](README.md)|✘|
|[serverMassage教程.md](README.md)|✘|