mirror of
				https://github.com/v2board/v2board.git
				synced 2025-11-01 01:41:47 +08:00 
			
		
		
		
	update: add clash regex filter
This commit is contained in:
		| @@ -52,7 +52,19 @@ class Clash | |||||||
|         $config['proxies'] = array_merge($config['proxies'] ? $config['proxies'] : [], $proxy); |         $config['proxies'] = array_merge($config['proxies'] ? $config['proxies'] : [], $proxy); | ||||||
|         foreach ($config['proxy-groups'] as $k => $v) { |         foreach ($config['proxy-groups'] as $k => $v) { | ||||||
|             if (!is_array($config['proxy-groups'][$k]['proxies'])) continue; |             if (!is_array($config['proxy-groups'][$k]['proxies'])) continue; | ||||||
|             $config['proxy-groups'][$k]['proxies'] = array_merge($config['proxy-groups'][$k]['proxies'], $proxies); |             $isFilter = false; | ||||||
|  |             foreach ($config['proxy-groups'][$k]['proxies'] as $srcProxie) { | ||||||
|  |                 foreach ($proxies as $dstProxie) { | ||||||
|  |                     if ($this->isMatch($srcProxie, $dstProxie)) { | ||||||
|  |                         $isFilter = true; | ||||||
|  |                         $config['proxy-groups'][$k]['proxies'] = array_diff($config['proxy-groups'][$k]['proxies'], [$srcProxie]); | ||||||
|  |                         array_push($config['proxy-groups'][$k]['proxies'], $dstProxie); | ||||||
|  |                     } | ||||||
|  |                 } | ||||||
|  |             } | ||||||
|  |             if (!$isFilter) { | ||||||
|  |                 $config['proxy-groups'][$k]['proxies'] = array_merge($config['proxy-groups'][$k]['proxies'], $proxies); | ||||||
|  |             } | ||||||
|         } |         } | ||||||
|         // Force the current subscription domain to be a direct rule |         // Force the current subscription domain to be a direct rule | ||||||
|         $subsDomain = $_SERVER['SERVER_NAME']; |         $subsDomain = $_SERVER['SERVER_NAME']; | ||||||
| @@ -134,4 +146,13 @@ class Clash | |||||||
|         if (!empty($server['allow_insecure'])) $array['skip-cert-verify'] = ($server['allow_insecure'] ? true : false); |         if (!empty($server['allow_insecure'])) $array['skip-cert-verify'] = ($server['allow_insecure'] ? true : false); | ||||||
|         return $array; |         return $array; | ||||||
|     } |     } | ||||||
|  |  | ||||||
|  |     private function isMatch($exp, $str) | ||||||
|  |     { | ||||||
|  |         try { | ||||||
|  |             return preg_match($exp, $str); | ||||||
|  |         } catch (\Exception $e) { | ||||||
|  |             return false; | ||||||
|  |         } | ||||||
|  |     } | ||||||
| } | } | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user