wireguard 1.2 KB

12345678910111213141516171819202122232425262728293031323334
  1. #!/bin/sh /etc/rc.common
  2. # This is free software, licensed under the GNU General Public License v3.
  3. START=99
  4. USE_PROCD=1
  5. start_service() {
  6. config_load wireguard
  7. config_load network
  8. config_load firewall
  9. uci set firewall.wg_allow.dest_port="$(uci get wireguard.wg0.listen_port)"
  10. sed -i -r "s|^(PrivateKey =).*|\1 "$(uci get wireguard.wg0.private_key)"|g" /etc/wireguard/wg0.conf
  11. sed -i -r "s|^(ListenPort =).*|\1 "$(uci get wireguard.wg0.listen_port)"|g" /etc/wireguard/wg0.conf
  12. # server
  13. sed -i -r "s|^(PublicKey =).*|\1 "$(uci get wireguard.@wg0[0].public_key)"|g" /etc/wireguard/wg0.conf
  14. sed -i -r "s|^(Endpoint =).*|\1 "$(uci get wireguard.@wg0[0].endpoint_host):$(uci get wireguard.@wg0[0].endpoint_port)"|g" /etc/wireguard/wg0.conf
  15. sed -i -r "s|^(AllowedIPs =).*|\1 "$(uci get wireguard.@wg0[0].allowed_ips)"|g" /etc/wireguard/wg0.conf
  16. sed -i -r "s|^(PersistentKeepalive =).*|\1 "$(uci get wireguard.@wg0[0].persistent_keepalive)"|g" /etc/wireguard/wg0.conf
  17. export ip=$(uci get network.lan.ipaddr)
  18. export ip=${ip#*.*}
  19. export ipCD=${ip#*.*}
  20. ip l d wg0
  21. ip l a wg0 type wireguard
  22. ip a a 192.168.${ipCD}/16 dev wg0
  23. wg syncconf wg0 /etc/wireguard/wg0.conf
  24. ip l set up wg0
  25. /etc/init.d/network reload
  26. }