From 66ac1d5285ef5c3dfa4dd28a2de9ff5a89725ee9 Mon Sep 17 00:00:00 2001 From: mercury Date: Fri, 20 Jan 2023 21:47:27 +0400 Subject: [PATCH] release v2 --- app/bot.php | 34 ++++++++++++++++++---------------- docker-compose.yml | 14 ++++++++++++-- scripts/start_ng.sh | 2 -- scripts/start_unit.sh | 2 ++ 4 files changed, 32 insertions(+), 20 deletions(-) diff --git a/app/bot.php b/app/bot.php index f7fd305..81ea4ee 100644 --- a/app/bot.php +++ b/app/bot.php @@ -985,24 +985,26 @@ DNS-over-HTTPS with IP: $text[] = " port: {$status['interface']['listening port']}"; $text[] = " publickey: {$status['interface']['public key']}"; $text[] = "\nPeers:"; - foreach ($conf['peers'] as $k => $v) { - foreach ($clients as $cl) { - if ($cl['interface']['Address'] == $v['AllowedIPs']) { - $allowed_ips = $cl['peers'][0]['AllowedIPs']; + if (!empty($conf['peers'])) { + foreach ($conf['peers'] as $k => $v) { + foreach ($clients as $cl) { + if ($cl['interface']['Address'] == $v['AllowedIPs']) { + $allowed_ips = $cl['peers'][0]['AllowedIPs']; + } } + $conf['peers'][$k]['status'] = $this->getStatusPeer($v['PublicKey'], $status['peers']); + $conf['peers'][$k]['online'] = preg_match('~^(\d+ seconds|[12] minute)~', $conf['peers'][$k]['status']['latest handshake']) ? $conf['peers'][$k]['status']['endpoint'] : 'OFFLINE'; + } + usort($conf['peers'], fn($a, $b) => ($a['online'] == 'OFFLINE') <=> ($b['online'] == 'OFFLINE')); + foreach ($conf['peers'] as $k => $v) { + preg_match_all('~([0-9.]+\.?)\s(\w+)~', $v['status']['transfer'], $m); + $text[] = ($v['online'] == 'OFFLINE' ? '(OFFLINE) ' : '') + . "{$this->getName($v)} " + . ($v['online'] != 'OFFLINE' ? "({$v['online']})" : '') + . ($m[0] ? " {$m[1][0]}↑ {$m[2][0]} / {$m[1][1]}↓ {$m[2][1]}" : '') + . "\n" + ; } - $conf['peers'][$k]['status'] = $this->getStatusPeer($v['PublicKey'], $status['peers']); - $conf['peers'][$k]['online'] = preg_match('~^(\d+ seconds|[12] minute)~', $conf['peers'][$k]['status']['latest handshake']) ? $conf['peers'][$k]['status']['endpoint'] : 'OFFLINE'; - } - usort($conf['peers'], fn($a, $b) => ($a['online'] == 'OFFLINE') <=> ($b['online'] == 'OFFLINE')); - foreach ($conf['peers'] as $k => $v) { - preg_match_all('~([0-9.]+\.?)\s(\w+)~', $v['status']['transfer'], $m); - $text[] = ($v['online'] == 'OFFLINE' ? '(OFFLINE) ' : '') - . "{$this->getName($v)} " - . ($v['online'] != 'OFFLINE' ? "({$v['online']})" : '') - . ($m[0] ? " {$m[1][0]}↑ {$m[2][0]} / {$m[1][1]}↓ {$m[2][1]}" : '') - . "\n" - ; } $text = "Menu -> Wireguard\n\n" . implode(PHP_EOL, $text) . ''; $data = [ diff --git a/docker-compose.yml b/docker-compose.yml index 708de50..e515731 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -24,6 +24,10 @@ services: - 80:80 - 443:443 hostname: nginx + depends_on: + - unit + - ad + - ss environment: TZ: ${TZ} stop_grace_period: 1s @@ -62,8 +66,6 @@ services: stop_grace_period: 1s command: ["/bin/sh", "/start_unit.sh"] working_dir: /app - depends_on: - - ng networks: default: ipv4_address: 10.10.0.7 @@ -78,6 +80,8 @@ services: - ./ssh:/ssh - ./scripts/start_proxy.sh:/start_proxy.sh hostname: proxy + depends_on: + - unit networks: default: ipv4_address: 10.10.0.3 @@ -95,6 +99,8 @@ services: - ./scripts/reset_wg.sh:/reset_wg.sh - ./ssh:/ssh hostname: wireguard + depends_on: + - unit ports: - ${WGPORT}:${WGPORT}/udp environment: @@ -120,6 +126,8 @@ services: - ./logs/:/logs/ - ./scripts/start_ad.sh:/start_ad.sh hostname: adguard + depends_on: + - unit environment: TZ: ${TZ} stop_grace_period: 1s @@ -136,6 +144,8 @@ services: - ./ssh:/ssh - ./scripts/start_ss.sh:/start_ss.sh hostname: shadowsocks + depends_on: + - unit ports: - 8388:8388/udp - 8388:8388/tcp diff --git a/scripts/start_ng.sh b/scripts/start_ng.sh index a25f81c..f9e3a09 100644 --- a/scripts/start_ng.sh +++ b/scripts/start_ng.sh @@ -1,5 +1,3 @@ -openssl req -newkey rsa:2048 -sha256 -nodes -x509 -days 365 -keyout /certs/self_private -out /certs/self_public -subj "/C=NN/ST=N/L=N/O=N/CN=$(curl https://ipinfo.io/ip)" -ssh-keygen -m PEM -t rsa -f /ssh/key -N '' cat /ssh/key.pub > /root/.ssh/authorized_keys service ssh start nginx -g "daemon off;" diff --git a/scripts/start_unit.sh b/scripts/start_unit.sh index ea93f0b..d1595f1 100644 --- a/scripts/start_unit.sh +++ b/scripts/start_unit.sh @@ -1,3 +1,5 @@ +ssh-keygen -m PEM -t rsa -f /ssh/key -N '' +openssl req -newkey rsa:2048 -sha256 -nodes -x509 -days 365 -keyout /certs/self_private -out /certs/self_public -subj "/C=NN/ST=N/L=N/O=N/CN=$(curl https://ipinfo.io/ip)" php init.php unitd --log /logs/unit_error curl -X PUT --data-binary @/config/unit.json --unix-socket /var/run/control.unit.sock http://localhost/config