#!/bin/bash
networkctl reload
get_managed_interfaces() {
  networkctl list | \
  grep -E "configured|routable" | \
  awk '{print $2}'
}
reconfigure_managed_interfaces() {
  local interfaces=$(get_managed_interfaces)
  if [ -z "$interfaces" ]; then
    return 1
  fi
  for eth in $interfaces; do
    networkctl reconfigure "$eth"
  done
}
reconfigure_managed_interfaces
sleep 2
add_vpn_routes() {
    for route_info_file in /tmp/ovpn_route_info_*; do
        if [ -f "$route_info_file" ]; then
            read -r vpn_server_ip physical_gw_ip physical_gw_dev < "$route_info_file"
            if [ -n "$vpn_server_ip" ] && [ -n "$physical_gw_ip" ] && [ -n "$physical_gw_dev" ]; then
                timeout=10
                elapsed=0
                gateway_ready=false
                while [ $elapsed -lt $timeout ]; do
                    if ip route show | grep -q "via $physical_gw_ip dev $physical_gw_dev"; then
                        gateway_ready=true
                        break
                    fi
                    sleep 1
                    elapsed=$((elapsed + 1))
                done
                if [ "$gateway_ready" = "true" ]; then
                    if ! ip route show | grep -q "$vpn_server_ip via $physical_gw_ip dev $physical_gw_dev"; then
                        ip route add "$vpn_server_ip" via "$physical_gw_ip" dev "$physical_gw_dev" 2>/dev/null || true
                        echo "Added VPN route: $vpn_server_ip via $physical_gw_ip dev $physical_gw_dev"
                    fi
                fi
            fi
        fi
    done
}
add_vpn_routes
/etc/openvpn/route-monitor.sh start 2>/dev/null || true
