mailo支持新版clash并兼容ssr

写在前面

之前写了一次网站订阅中增加对新版clash的支持,同时支持旧版本,但是并没有写完,现在很多人在使用malio,clash也更新很久了。
所以本篇文章不再考虑是否支持旧版本,直接修改配置文件以支持新版
我在文章中标注了具体的行数,如果你是最后一版的malio,应该是一致的。

正文

一、修改配置模板

打开resources/conf/clash.tpl

定位到59行:

找到

Proxy:

修改为:

proxies:

定位到64行:

找到

Proxy Group:

修改为:

proxy-groups:

二、修改规则文件

打开resources/conf/rule/lhie1_Rule.yaml

修改第一行

Rule:

修改为:

rules:

三、修改节点参数模板

新版clash把ssr的obfsparam和protocolparam两个参数改成了obfs-param和protocol-param。修改 /app/Utils/AppURI.php,找到名为 getClashURI 的函数(175行)

找到(240行)

$return = [
    'name' => $item['remark'],
    'type' => 'ssr',
    'server' => $item['address'],
    'port' => $item['port'],
    'cipher' => $item['method'],
    'password' => $item['passwd'],
    'protocol' => $item['protocol'],
    'protocolparam' => $item['protocol_param'],
    'obfs' => $item['obfs'],
    'obfsparam' => $item['obfs_param']
];
break;

修改为

$return = [
     'name' => $item['remark'],
     'type' => 'ssr', 'server' => $item['address'],
     'port' => $item['port'],
     'cipher' => $item['method'],
     'password' => $item['passwd'],
     'protocol' => $item['protocol'],
     'protocol-param' => $item['protocol_param'],
     'obfs' => $item['obfs'],
     'obfs-param' => $item['obfs_param']
];
break;

四、修改控制配置函数

打开app/Controllers/ConfController.php

将$tmp的键Proxy Group和Proxy改为proxy-groups和Proxies,或者直接替换下面的代码块(359行)

public static function getNewClashConfs($User, $AllProxys, $Configs, $local = false)
{
    if (isset($Configs['Proxy']) || count($Configs['Proxy']) != 0) {
        $tmpProxys = array_merge($AllProxys, $Configs['Proxy']);
    } else {
        $tmpProxys = $AllProxys;
    }
    $Proxys = [];
    foreach ($tmpProxys as $Proxy) {
        unset($Proxy['class']);
        $Proxys[] = $Proxy;
    }
    $tmp = self::getClashConfGeneral($Configs['General']);
    $tmp['Proxies'] = $Proxys;
    if (isset($Configs['ProxyGroup'])) {
        $tmp['proxy-groups'] = self::getClashConfProxyGroup(
            $AllProxys,
            $Configs['ProxyGroup']
        );
    } else {
        $tmp['proxy-groups'] = self::getClashConfProxyGroup(
            $AllProxys,
            $Configs['Proxy Group']
        );
    }
    $Conf = '#!MANAGED-CONFIG '
        . Config::get('baseUrl') . $_SERVER['REQUEST_URI'] .
        "\n\n#---------------------------------------------------#" .
        "\n## 上次更新于:" . date("Y-m-d h:i:s") .
        "\n#---------------------------------------------------#" .
        "\n\n"
        . Yaml::dump($tmp, 4, 2) .
        "\n\n"
        . self::getClashConfRule($Configs['Rule'], $local);

    return $Conf;
}

五、修改控制文件

打开 app/Controllers/LinkController.php 文件

找到getClash代码块(在919行)

找到

$ssr_support = ($clash == 2 ? true : false);

修改为

$ssr_support = ($clash == 1 ? true : false);

小尾巴

教程结束。本人测试没有发现问题,如有问题可评论区补充

发表新评论