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