更新 'clash.js'
This commit is contained in:
		
							
								
								
									
										41
									
								
								clash.js
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										41
									
								
								clash.js
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,41 @@
 | 
				
			|||||||
 | 
					// https://docs.cfw.lbyczf.com/contents/parser.html#%E8%BF%9B%E9%98%B6%E6%96%B9%E6%B3%95-javascript
 | 
				
			||||||
 | 
					module.exports.parse = async(raw, utils, meta) => {
 | 
				
			||||||
 | 
					  const { axios, yaml, notify, console } = utils
 | 
				
			||||||
 | 
					  const { name, url, interval, selected } = meta
 | 
				
			||||||
 | 
					  const obj = yaml.parse(raw)
 | 
				
			||||||
 | 
					  try {
 | 
				
			||||||
 | 
					    await configPrependRules(utils, obj)
 | 
				
			||||||
 | 
					  } catch (e) {
 | 
				
			||||||
 | 
					    throw new Error(e)
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					  return yaml.stringify(obj)
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// 配置预先规则
 | 
				
			||||||
 | 
					async function configPrependRules(utils, obj) {
 | 
				
			||||||
 | 
					  const { axios } = utils
 | 
				
			||||||
 | 
					  const proxyGroupName = getProxyGroupName(obj)
 | 
				
			||||||
 | 
					  const directGroupName = getDirectGroupName(obj)
 | 
				
			||||||
 | 
					  try {
 | 
				
			||||||
 | 
					    const directResponse = await axios.get('https://git.yevpt.com/vpt/public-data/raw/branch/master/direct')
 | 
				
			||||||
 | 
					    const directs = directResponse.data
 | 
				
			||||||
 | 
					    const prependDirectRules = directs.split(`\n`).map(item => `DOMAIN-SUFFIX,${item},${directGroupName}`)
 | 
				
			||||||
 | 
					    const proxyResponse = await axios.get('https://git.yevpt.com/vpt/public-data/raw/branch/master/proxy')
 | 
				
			||||||
 | 
					    const proxys = proxyResponse.data
 | 
				
			||||||
 | 
					    const prependProxyRules = proxys.split(`\n`).map(item => `DOMAIN-SUFFIX,${item},${proxyGroupName}`)
 | 
				
			||||||
 | 
					    const prependRules = [...prependDirectRules, ...prependProxyRules]
 | 
				
			||||||
 | 
					    obj.rules = [...prependRules, ...obj.rules]
 | 
				
			||||||
 | 
					  } catch (e) {
 | 
				
			||||||
 | 
					    throw new Error(e)
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// 获取代理组的名称
 | 
				
			||||||
 | 
					function getProxyGroupName(obj) {
 | 
				
			||||||
 | 
					  return obj['proxy-groups'].find(item => item.name.includes('节点选择')).name
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// 获取直连组的名称
 | 
				
			||||||
 | 
					function getDirectGroupName(obj) {
 | 
				
			||||||
 | 
					  return 'DIRECT'
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
		Reference in New Issue
	
	Block a user