#!/bin/sh set -eu GREEN="\033[1;32m" RED="\033[1;31m" NC="\033[0m" IN="/root/WARP.conf" OUT="/etc/mihomo/config.yaml" TMP="$(mktemp)" [ -r "$IN" ] || { echo -e "\n${RED}Файл ${NC}$IN ${RED}отсутвтвует!${NC}"; exit 1; } awk -v OUT="$TMP" ' function trim(s){ gsub(/^[ \t\r\n]+|[ \t\r\n]+$/, "", s); return s } function lc(s){ return tolower(s) } function yaml_quote(s){ gsub(/\\/,"\\\\",s) gsub(/"/,"\\\"",s) gsub(/\r/,"",s) return "\"" s "\"" } function split_endpoint(s, a,n){ s=trim(s) n=split(s,a,":") if(n<2){ host=s; port="" } else { port=a[n] host=a[1] for(i=2;i OUT print "allow-lan: false" >> OUT print "tcp-concurrent: true" >> OUT print "mode: rule" >> OUT print "log-level: error" >> OUT print "ipv6: false" >> OUT print "external-controller: 0.0.0.0:9090" >> OUT print "external-ui: ./ui" >> OUT print "secret:" >> OUT print "unified-delay: true" >> OUT print "profile:" >> OUT print " store-selected: true" >> OUT print " store-fake-ip: true" >> OUT print "" >> OUT print "proxy-groups:" >> OUT print " - name: GLOBAL" >> OUT print " type: select" >> OUT print " proxies:" >> OUT print " - WARP" >> OUT print " - DIRECT" >> OUT print "" >> OUT print "rules:" >> OUT print " - \"MATCH,GLOBAL\"" >> OUT print "" >> OUT print "proxies:" >> OUT print " - name: WARP" >> OUT print " type: wireguard" >> OUT print " server: " host >> OUT if(port!="") print " port: " port >> OUT print " private-key: " yaml_quote(priv) >> OUT print " udp: true" >> OUT if(ip!="") print " ip: " ip >> OUT if(ipv6!="") print " ipv6: " ipv6 >> OUT print " public-key: " yaml_quote(pub) >> OUT if(psk!="") print " pre-shared-key: " yaml_quote(psk) >> OUT print " allowed-ips:" >> OUT printf "%s", allowed_block >> OUT if(mtu!="") print " mtu: " mtu >> OUT if(keep!="") print " persistent-keepalive: " keep >> OUT if(s1!="" || s2!="" || s3!="" || s4!="" || jc!="" || jmin!="" || jmax!="" || h1!="" || h2!="" || h3!="" || h4!="" || i1!="" || i2!="" || i3!="" || i4!="" || i5!=""){ print " amnezia-wg-option:" >> OUT if(s1!="") print " s1: " s1 >> OUT if(s2!="") print " s2: " s2 >> OUT if(s3!="") print " s3: " s3 >> OUT if(s4!="") print " s4: " s4 >> OUT if(jc!="") print " jc: " jc >> OUT if(jmin!="")print " jmin: " jmin >> OUT if(jmax!="")print " jmax: " jmax >> OUT if(h1!="") print " h1: " h1 >> OUT if(h2!="") print " h2: " h2 >> OUT if(h3!="") print " h3: " h3 >> OUT if(h4!="") print " h4: " h4 >> OUT if(i1!="") print " i1: " yaml_quote(i1) >> OUT if(i2!="") print " i2: " yaml_quote(i2) >> OUT if(i3!="") print " i3: " yaml_quote(i3) >> OUT if(i4!="") print " i4: " yaml_quote(i4) >> OUT if(i5!="") print " i5: " yaml_quote(i5) >> OUT } } ' "$IN" chmod 600 "$TMP" mkdir -p "$(dirname "$OUT")" mv -f "$TMP" "$OUT" /etc/init.d/mihomo reload /etc/init.d/mihomo restart echo -e "\n${NC}WARP${GREEN} интегрирован в ${NC}Mihomo${GREEN}!${NC}"