mirror of
				https://github.com/bestnite/sub2clash.git
				synced 2025-11-04 04:40:36 +00:00 
			
		
		
		
	Compare commits
	
		
			2 Commits
		
	
	
		
			v0.0.13-be
			...
			v1.0.1
		
	
	| Author | SHA1 | Date | |
|---|---|---|---|
| f5686561f9 | |||
| 83c24170a0 | 
							
								
								
									
										41
									
								
								API.md
									
									
									
									
									
								
							
							
						
						
									
										41
									
								
								API.md
									
									
									
									
									
								
							@@ -1,21 +1,48 @@
 | 
			
		||||
# `GET /clash`, `GET /meta`
 | 
			
		||||
# `GET /convert/:config`
 | 
			
		||||
 | 
			
		||||
获取 Clash/Clash.Meta 配置链接
 | 
			
		||||
 | 
			
		||||
| Path 参数 | 类型   | 说明                                           |
 | 
			
		||||
| --------- | ------ | ---------------------------------------------- |
 | 
			
		||||
| config    | string | Base64 URL Safe 编码后的 JSON 字符串,格式如下 |
 | 
			
		||||
 | 
			
		||||
## `config` JSON 结构
 | 
			
		||||
 | 
			
		||||
| Query 参数         | 类型              | 是否必须                 | 默认值    | 说明                                                                              |
 | 
			
		||||
| ------------ | ------ | ------------------------ | --------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
 | 
			
		||||
| sub          | string | sub/proxy 至少有一项存在 | -         | 订阅链接,可以在链接结尾加上`#名称`,来给订阅中的节点加上统一前缀(可以输入多个,用 `,` 分隔)                                                                                                                                            |
 | 
			
		||||
| proxy        | string | sub/proxy 至少有一项存在 | -         | 节点分享链接(可以输入多个,用 `,` 分隔)                                                                                                                                                                                                 |
 | 
			
		||||
| ------------------ | ----------------- | ------------------------ | --------- | --------------------------------------------------------------------------------- |
 | 
			
		||||
| clashType          | int               | 是                       | 1         | 配置文件类型 (1: Clash, 2: Clash.Meta)                                            |
 | 
			
		||||
| subscriptions      | []string          | sub/proxy 至少有一项存在 | -         | 订阅链接,可以在链接结尾加上`#名称`,来给订阅中的节点加上统一前缀(可以输入多个) |
 | 
			
		||||
| proxies            | []string          | sub/proxy 至少有一项存在 | -         | 节点分享链接(可以输入多个)                                                      |
 | 
			
		||||
| refresh            | bool              | 否                       | `false`   | 强制刷新配置(默认缓存 5 分钟)                                                   |
 | 
			
		||||
| template           | string            | 否                       | -         | 外部模板链接或内部模板名称                                                        |
 | 
			
		||||
| ruleProvider | string | 否                       | -         | 格式 `[Behavior,Url,Group,Prepend,Name],[Behavior,Url,Group,Prepend,Name]...`,其中 `Group` 是该规则集使用的策略组名,`Prepend` 为 bool 类型,如果为 `true` 规则将被添加到规则列表顶部,否则添加到规则列表底部(会调整到 MATCH 规则之前) |
 | 
			
		||||
| rule         | string | 否                       | -         | 格式 `[Rule,Prepend],[Rule,Prepend]...`,其中 `Prepend` 为 bool 类型,如果为 `true` 规则将被添加到规则列表顶部,否则添加到规则列表底部(会调整到 MATCH 规则之前)                                                                         |
 | 
			
		||||
| ruleProviders      | []RuleProvider    | 否                       | -         | 规则                                                                              |
 | 
			
		||||
| rules              | []Rule            | 否                       | -         | 规则                                                                              |
 | 
			
		||||
| autoTest           | bool              | 否                       | `false`   | 国家策略组是否自动测速                                                            |
 | 
			
		||||
| lazy               | bool              | 否                       | `false`   | 自动测速是否启用 lazy                                                             |
 | 
			
		||||
| sort               | string            | 否                       | `nameasc` | 国家策略组排序策略,可选值 `nameasc`、`namedesc`、`sizeasc`、`sizedesc`           |
 | 
			
		||||
| replace      | string | 否                       | -         | 通过正则表达式重命名节点,格式 `[<ReplaceKey>,<ReplaceTo>],[<ReplaceKey>,<ReplaceTo>]...`                                                                                                                                                 |
 | 
			
		||||
| replace            | map[string]string | 否                       | -         | 通过正则表达式重命名节点                                                          |
 | 
			
		||||
| remove             | string            | 否                       | -         | 通过正则表达式删除节点                                                            |
 | 
			
		||||
| nodeList           | bool              | 否                       | `false`   | 只输出节点                                                                        |
 | 
			
		||||
| ignoreCountryGroup | bool              | 否                       | `false`   | 是否忽略国家分组                                                                  |
 | 
			
		||||
| userAgent          | string            | 否                       | -         | 订阅 user-agent                                                                   |
 | 
			
		||||
| useUDP             | bool              | 否                       | `false`   | 是否使用 UDP                                                                      |
 | 
			
		||||
 | 
			
		||||
### `RuleProvider` 结构
 | 
			
		||||
 | 
			
		||||
| 字段     | 类型   | 说明                                                             |
 | 
			
		||||
| -------- | ------ | ---------------------------------------------------------------- |
 | 
			
		||||
| behavior | string | rule-set 的 behavior                                             |
 | 
			
		||||
| url      | string | rule-set 的 url                                                  |
 | 
			
		||||
| group    | string | 该规则集使用的策略组名                                           |
 | 
			
		||||
| prepend  | bool   | 如果为 `true` 规则将被添加到规则列表顶部,否则添加到规则列表底部 |
 | 
			
		||||
| name     | string | 该 rule-provider 的名称,不能重复                                |
 | 
			
		||||
 | 
			
		||||
### `Rule` 结构
 | 
			
		||||
 | 
			
		||||
| 字段    | 类型   | 说明                                                             |
 | 
			
		||||
| ------- | ------ | ---------------------------------------------------------------- |
 | 
			
		||||
| rule    | string | 规则                                                             |
 | 
			
		||||
| prepend | bool   | 如果为 `true` 规则将被添加到规则列表顶部,否则添加到规则列表底部 |
 | 
			
		||||
 | 
			
		||||
# `POST /short`
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -135,16 +135,16 @@ func BuildSub(clashType model.ClashType, query model.ConvertConfig, template str
 | 
			
		||||
 | 
			
		||||
	for i := range query.Subs {
 | 
			
		||||
		data, err := LoadSubscription(query.Subs[i], query.Refresh, query.UserAgent, cacheExpire, retryTimes)
 | 
			
		||||
		subName := ""
 | 
			
		||||
		if strings.Contains(query.Subs[i], "#") {
 | 
			
		||||
			subName = query.Subs[i][strings.LastIndex(query.Subs[i], "#")+1:]
 | 
			
		||||
		}
 | 
			
		||||
		if err != nil {
 | 
			
		||||
			logger.Logger.Debug(
 | 
			
		||||
				"load subscription failed", zap.String("url", query.Subs[i]), zap.Error(err),
 | 
			
		||||
			)
 | 
			
		||||
			return nil, NewSubscriptionLoadError(query.Subs[i], err)
 | 
			
		||||
		}
 | 
			
		||||
		subName := ""
 | 
			
		||||
		if strings.Contains(query.Subs[i], "#") {
 | 
			
		||||
			subName = query.Subs[i][strings.LastIndex(query.Subs[i], "#")+1:]
 | 
			
		||||
		}
 | 
			
		||||
 | 
			
		||||
		err = yaml.Unmarshal(data, &sub)
 | 
			
		||||
		var newProxies []P.Proxy
 | 
			
		||||
@@ -161,7 +161,7 @@ func BuildSub(clashType model.ClashType, query model.ConvertConfig, template str
 | 
			
		||||
				}
 | 
			
		||||
				newProxies = p
 | 
			
		||||
			} else {
 | 
			
		||||
				base64, err := utils.DecodeBase64(string(data), true)
 | 
			
		||||
				base64, err := utils.DecodeBase64(string(data), false)
 | 
			
		||||
				if err != nil {
 | 
			
		||||
					logger.Logger.Debug(
 | 
			
		||||
						"parse subscription failed", zap.String("url", query.Subs[i]),
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user