diff --git a/scripts/clash.sh b/scripts/clash.sh index 5ccd73f..5e0d09c 100644 --- a/scripts/clash.sh +++ b/scripts/clash.sh @@ -1032,10 +1032,22 @@ EOF # - IP-CIDR6,2620:0:2d0:200::7/32,🚀 节点选择 # - DST-PORT,80,DIRECT # - SRC-PORT,7777,DIRECT +EOF + [ ! -f $clashdir/proxies.yaml ] && cat > $clashdir/proxies.yaml < $clashdir/proxy-groups.yaml <> $clashdir/proxies.yaml #处理换行 + while read line;do + [ -z "$(echo "$line" | grep '^proxies:')" ] && \ + [ -z "$(echo "$line" | grep '#')" ] && \ + [ -n "$(echo "$line" | grep '\-\ ')" ] && \ + line=$(echo "$line" | sed 's#/#\\/#') && \ + sed -i "/^proxies:/a\\$space$line #自定义代理" $tmpdir/config.yaml + done < $clashdir/proxies.yaml + fi + + #插入自定义策略组 + sed -i "/#自定义策略组/d" $tmpdir/config.yaml + space=$(sed -n '/^proxy-groups:/{n;p}' $tmpdir/config.yaml | grep -oE '^\ *') #获取原始配置空格数 + if [ -f $clashdir/proxy-groups.yaml ];then + c_space=$(sed -n '/^proxy-groups:/{n;p}' $clashdir/proxy-groups.yaml | grep -oE '^\ *') #获取自定义配置空格数 + sed -i "s/$c_space/$space/g" $clashdir/proxy-groups.yaml && echo >> $clashdir/proxy-groups.yaml #处理缩进空格数 + sed -i '/^$/d' $clashdir/proxy-groups.yaml && echo >> $clashdir/proxy-groups.yaml #处理换行 + cat $clashdir/proxy-groups.yaml | awk '{array[NR]=$0} END { for(i=NR;i>0;i--){print array[i];} }' | while IFS= read line;do + [ -z "$(echo "$line" | grep '^proxy-groups:')" ] && \ + [ -n "${line// /}" ] && \ + [ -z "$(echo "$line" | grep '#')" ] && \ + line=$(echo "$line" | sed 's#/#\\/#') && \ + sed -i "/^proxy-groups:/a\\$line #自定义策略组" $tmpdir/config.yaml + done + fi + #tun/fake-ip防止流量回环 if [ "$redir_mod" = "混合模式" -o "$redir_mod" = "Tun模式" -o "$dns_mod" = "fake-ip" ];then sed -i "/^rules:/a\\$space- SRC-IP-CIDR,198.18.0.0/16,REJECT #自定义规则(防止回环)" $tmpdir/config.yaml