diff --git a/apps/sub2clash/0.1.0-alpha.3/.env.sample b/apps/sub2clash/0.1.0-alpha.3/.env.sample new file mode 100644 index 00000000..5066ef33 --- /dev/null +++ b/apps/sub2clash/0.1.0-alpha.3/.env.sample @@ -0,0 +1,10 @@ +CONTAINER_NAME="sub2clash" +PANEL_APP_PORT_HTTP="40223" +CACHE_EXPIRE="300" +CLASH_TEMPLATE="template_clash.yaml" +LOG_LEVEL="info" +META_TEMPLATE="template_meta.yaml" +PROXY_TEMPLATE="template_clash.yaml" +REQUEST_MAX_FILE_SIZE="1048576" +REQUEST_RETRY_TIMES="3" +SHORT_LINK_LENGTH="6" diff --git a/apps/sub2clash/0.1.0-alpha.3/data.yml b/apps/sub2clash/0.1.0-alpha.3/data.yml new file mode 100644 index 00000000..56c2750b --- /dev/null +++ b/apps/sub2clash/0.1.0-alpha.3/data.yml @@ -0,0 +1,75 @@ +additionalProperties: + formFields: + - default: 40223 + edit: true + envKey: PANEL_APP_PORT_HTTP + labelEn: Port + labelZh: 端口 + required: true + rule: paramPort + type: number + - default: "template_meta.yaml" + edit: true + envKey: META_TEMPLATE + labelEn: Meta Template + labelZh: 默认 meta 模板文件名 + required: true + type: text + - default: "template_clash.yaml" + edit: true + envKey: PROXY_TEMPLATE + labelEn: Clash Template + labelZh: 默认 clash 模板文件名 + required: true + type: text + - default: "template_clash.yaml" + edit: true + envKey: CLASH_TEMPLATE + labelEn: Clash Template + labelZh: 默认 clash 模板文件名 + required: true + type: text + - default: "3" + edit: true + envKey: REQUEST_RETRY_TIMES + labelEn: Request Retry Times + labelZh: Get 请求重试次数 + required: true + type: number + - default: "1048576" + edit: true + envKey: REQUEST_MAX_FILE_SIZE + labelEn: Request Max File Size + labelZh: Get 请求订阅文件最大大小(byte) + required: true + type: number + - default: "300" + edit: true + envKey: CACHE_EXPIRE + labelEn: Cache Expire + labelZh: 订阅缓存时间(秒) + required: true + type: number + - default: "info" + edit: true + envKey: LOG_LEVEL + labelEn: Log Level + labelZh: 日志等级 + required: true + type: select + values: + - label: Debug + value: "debug" + - label: Info + value: "info" + - label: Warn + value: "warn" + - label: Error + value: "error" + - default: "6" + edit: true + envKey: SHORT_LINK_LENGTH + labelEn: Short Link Length + labelZh: 短链长度 + required: true + type: number diff --git a/apps/sub2clash/0.1.0-alpha.3/docker-compose.yml b/apps/sub2clash/0.1.0-alpha.3/docker-compose.yml new file mode 100644 index 00000000..872551bb --- /dev/null +++ b/apps/sub2clash/0.1.0-alpha.3/docker-compose.yml @@ -0,0 +1,28 @@ +version: '3' +services: + sub2clash: + image: nite07/sub2clash:0.1.0-alpha.3 + container_name: ${CONTAINER_NAME} + restart: always + networks: + - 1panel-network + ports: + - "${PANEL_APP_PORT_HTTP}:${PANEL_APP_PORT_HTTP}" + volumes: + - ./data/logs:/app/logs + - ./data/templates:/app/templates + - ./data/data:/app/data + environment: + - PORT=${PANEL_APP_PORT_HTTP} + - META_TEMPLATE=${META_TEMPLATE} + - PROXY_TEMPLATE=${PROXY_TEMPLATE} + - REQUEST_RETRY_TIMES=${REQUEST_RETRY_TIMES} + - REQUEST_MAX_FILE_SIZE=${REQUEST_MAX_FILE_SIZE} + - CACHE_EXPIRE=${CACHE_EXPIRE} + - LOG_LEVEL=${LOG_LEVEL} + labels: + createdBy: "Apps" + +networks: + 1panel-network: + external: true diff --git a/apps/sub2clash/README.md b/apps/sub2clash/README.md new file mode 100644 index 00000000..c6ab8786 --- /dev/null +++ b/apps/sub2clash/README.md @@ -0,0 +1,59 @@ +# sub2clash + +将订阅链接转换为 Clash、Clash.Meta 配置 +[预览](https://www.nite07.com/sub) + +## 特性 + +- 开箱即用的规则、策略组配置 +- 自动根据节点名称按国家划分策略组 +- 支持多订阅合并 +- 支持添加自定义 Rule Provider、Rule +- 支持多种协议 + - Shadowsocks + - ShadowsocksR + - Vmess + - Vless (Clash.Meta) + - Trojan + - Hysteria (Clash.Meta) + - Hysteria2 (Clash.Meta) + +## 使用 + +### 运行 + +- [docker compose](./docker-compose.yml) +- 运行[二进制文件](https://github.com/nitezs/sub2clash/releases/latest) + +### 配置 + +可以通过编辑 .env 文件来修改默认配置,docker 直接添加环境变量 + +| 变量名 | 说明 | 默认值 | +| --------------------- | ---------------------------------------------- | --------------------- | +| PORT | 端口 | `8011` | +| META_TEMPLATE | 默认 meta 模板文件名 | `template_meta.yaml` | +| CLASH_TEMPLATE | 默认 clash 模板文件名 | `template_clash.yaml` | +| REQUEST_RETRY_TIMES | Get 请求重试次数 | `3` | +| REQUEST_MAX_FILE_SIZE | Get 请求订阅文件最大大小(byte) | `1048576` | +| CACHE_EXPIRE | 订阅缓存时间(秒) | `300` | +| LOG_LEVEL | 日志等级,可选值 `debug`,`info`,`warn`,`error` | `info` | +| SHORT_LINK_LENGTH | 短链长度 | `6` | + +### API + +[API 文档](./API.md) + +### 模板 + +可以通过变量自定义模板中的策略组代理节点 +具体参考下方默认模板 + +- `` 为添加所有节点 +- `` 为添加所有国家策略组 +- `<地区二位字母代码>` 为添加指定地区所有节点,例如 `` 将添加所有香港节点 + +#### 默认模板 + +- [Clash](./templates/template_clash.yaml) +- [Clash.Meta](./templates/template_meta.yaml) \ No newline at end of file diff --git a/apps/sub2clash/data.yml b/apps/sub2clash/data.yml new file mode 100644 index 00000000..35c3ac27 --- /dev/null +++ b/apps/sub2clash/data.yml @@ -0,0 +1,19 @@ +name: sub2clash +tags: + - 工具 +title: 将节点和订阅转换为 clash(meta) 配置 +description: 将节点和订阅转换为 clash(meta) 配置 +additionalProperties: + key: sub2clash + name: sub2clash + tags: + - Tool + shortDescZh: 将节点和订阅转换为 clash(meta) 配置 + shortDescEn: Converting nodes and subscriptions to clash(meta) configuration + type: tool + crossVersionUpdate: true + limit: 0 + recommend: 0 + website: https://www.nite07.com/sub + github: https://github.com/nitezs/sub2clash + document: https://github.com/nitezs/sub2clash diff --git a/apps/sub2clash/latest/.env.sample b/apps/sub2clash/latest/.env.sample new file mode 100644 index 00000000..5066ef33 --- /dev/null +++ b/apps/sub2clash/latest/.env.sample @@ -0,0 +1,10 @@ +CONTAINER_NAME="sub2clash" +PANEL_APP_PORT_HTTP="40223" +CACHE_EXPIRE="300" +CLASH_TEMPLATE="template_clash.yaml" +LOG_LEVEL="info" +META_TEMPLATE="template_meta.yaml" +PROXY_TEMPLATE="template_clash.yaml" +REQUEST_MAX_FILE_SIZE="1048576" +REQUEST_RETRY_TIMES="3" +SHORT_LINK_LENGTH="6" diff --git a/apps/sub2clash/latest/data.yml b/apps/sub2clash/latest/data.yml new file mode 100644 index 00000000..56c2750b --- /dev/null +++ b/apps/sub2clash/latest/data.yml @@ -0,0 +1,75 @@ +additionalProperties: + formFields: + - default: 40223 + edit: true + envKey: PANEL_APP_PORT_HTTP + labelEn: Port + labelZh: 端口 + required: true + rule: paramPort + type: number + - default: "template_meta.yaml" + edit: true + envKey: META_TEMPLATE + labelEn: Meta Template + labelZh: 默认 meta 模板文件名 + required: true + type: text + - default: "template_clash.yaml" + edit: true + envKey: PROXY_TEMPLATE + labelEn: Clash Template + labelZh: 默认 clash 模板文件名 + required: true + type: text + - default: "template_clash.yaml" + edit: true + envKey: CLASH_TEMPLATE + labelEn: Clash Template + labelZh: 默认 clash 模板文件名 + required: true + type: text + - default: "3" + edit: true + envKey: REQUEST_RETRY_TIMES + labelEn: Request Retry Times + labelZh: Get 请求重试次数 + required: true + type: number + - default: "1048576" + edit: true + envKey: REQUEST_MAX_FILE_SIZE + labelEn: Request Max File Size + labelZh: Get 请求订阅文件最大大小(byte) + required: true + type: number + - default: "300" + edit: true + envKey: CACHE_EXPIRE + labelEn: Cache Expire + labelZh: 订阅缓存时间(秒) + required: true + type: number + - default: "info" + edit: true + envKey: LOG_LEVEL + labelEn: Log Level + labelZh: 日志等级 + required: true + type: select + values: + - label: Debug + value: "debug" + - label: Info + value: "info" + - label: Warn + value: "warn" + - label: Error + value: "error" + - default: "6" + edit: true + envKey: SHORT_LINK_LENGTH + labelEn: Short Link Length + labelZh: 短链长度 + required: true + type: number diff --git a/apps/sub2clash/latest/docker-compose.yml b/apps/sub2clash/latest/docker-compose.yml new file mode 100644 index 00000000..592a0918 --- /dev/null +++ b/apps/sub2clash/latest/docker-compose.yml @@ -0,0 +1,28 @@ +version: '3' +services: + sub2clash: + image: nite07/sub2clash:latest + container_name: ${CONTAINER_NAME} + restart: always + networks: + - 1panel-network + ports: + - "${PANEL_APP_PORT_HTTP}:${PANEL_APP_PORT_HTTP}" + volumes: + - ./data/logs:/app/logs + - ./data/templates:/app/templates + - ./data/data:/app/data + environment: + - PORT=${PANEL_APP_PORT_HTTP} + - META_TEMPLATE=${META_TEMPLATE} + - PROXY_TEMPLATE=${PROXY_TEMPLATE} + - REQUEST_RETRY_TIMES=${REQUEST_RETRY_TIMES} + - REQUEST_MAX_FILE_SIZE=${REQUEST_MAX_FILE_SIZE} + - CACHE_EXPIRE=${CACHE_EXPIRE} + - LOG_LEVEL=${LOG_LEVEL} + labels: + createdBy: "Apps" + +networks: + 1panel-network: + external: true diff --git a/apps/sub2clash/logo.png b/apps/sub2clash/logo.png new file mode 100644 index 00000000..9cec3e62 Binary files /dev/null and b/apps/sub2clash/logo.png differ