- Complete migration,

- Move usr/lib, usr/sbin & var/www to lib, sbin & www,
- Add dns_host_update() to dns library,
- Add RPM Spec & bash completion files.
This commit is contained in:
2026-04-19 12:06:40 +02:00
parent f58ffedef9
commit ad3862a5e0
36 changed files with 3481 additions and 2118 deletions

View File

@@ -0,0 +1,90 @@
#!/bin/bash
#-----------------------------------------------------------------------------------------------------------------------------------
#
# Rx3 Cert Dump Bash Completion
#
# Copyright (C) 2025-2026 Arnaud G. GIBERT
# mailto:arnaud@rx3.net
#
# This is free software: you can redistribute it and/or modify it
# under the terms of the GNU Lesser General Public License as published
# by the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program; If not, see
# <https://www.gnu.org/licenses/>.
#
#-----------------------------------------------------------------------------------------------------------------------------------
#-----------------------------------------------------------------------------------------------------------------------------------
# Cert Dump Completion
#-----------------------------------------------------------------------------------------------------------------------------------
_cert_dump_completion()
{
local cur="${COMP_WORDS[COMP_CWORD]}"
local prev="${COMP_WORDS[COMP_CWORD-1]}"
local opts="-h --help -V --version -v --verbose"
local pos=0
local i
COMPREPLY=()
# Count non-option positional arguments already provided
for (( i=1; i<COMP_CWORD; i++ ))
do
case "${COMP_WORDS[i]}" in
-h|--help|-V|--version|-v|--verbose)
;;
--)
;;
-*)
;;
*)
pos=$(( pos + 1 ))
;;
esac
done
# Complete options if current word starts with '-'
if [[ "${cur}" == -* ]]
then
COMPREPLY=( $(compgen -W "${opts}" -- "${cur}") )
return 0
fi
# Complete positional arguments
case "${pos}" in
0)
COMPREPLY=( $(compgen -W "ca tc key csr crt" -- "${cur}") )
;;
1)
case "${prev}" in
key|csr|crt)
COMPREPLY=( $(compgen -W "$(ls /etc/openvpn/tls/certs/*.crt 2>/dev/null | sed 's|.*/||; s|\.crt$||; s|^ca$||')" -- "${cur}") )
;;
*)
COMPREPLY=()
;;
esac
;;
*)
COMPREPLY=()
;;
esac
return 0
}
complete -o filenames -F _cert_dump_completion cert_dump

View File

@@ -0,0 +1,89 @@
#!/bin/bash
#-----------------------------------------------------------------------------------------------------------------------------------
#
# Rx3 IP Host Update Bash Completion
#
# Copyright (C) 2025-2026 Arnaud G. GIBERT
# mailto:arnaud@rx3.net
#
# This is free software: you can redistribute it and/or modify it
# under the terms of the GNU Lesser General Public License as published
# by the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program; If not, see
# <https://www.gnu.org/licenses/>.
#
#-----------------------------------------------------------------------------------------------------------------------------------
#-----------------------------------------------------------------------------------------------------------------------------------
# IP Host Update Completion
#-----------------------------------------------------------------------------------------------------------------------------------
_ip_host_update_completion()
{
local cur="${COMP_WORDS[COMP_CWORD]}"
local prev="${COMP_WORDS[COMP_CWORD-1]}"
local opts="-h --help -V --version -v --verbose"
local pos=0
local i
COMPREPLY=()
# Count non-option positional arguments already provided
for (( i=1; i<COMP_CWORD; i++ ))
do
case "${COMP_WORDS[i]}" in
-h|--help|-V|--version|-v|--verbose)
;;
--)
;;
-*)
;;
*)
pos=$(( pos + 1 ))
;;
esac
done
# Complete options if current word starts with '-'
if [[ "${cur}" == -* ]]
then
COMPREPLY=( $(compgen -W "${opts}" -- "${cur}") )
return 0
fi
# Complete positional arguments
case "${pos}" in
0)
COMPREPLY=( $(compgen -W "$(getent hosts | awk '{print $3}' | grep -v '^$')" -- "${cur}") )
;;
1)
COMPREPLY=( $(compgen -W "$(named-checkconf -p 2>/dev/null | grep -oP 'zone\s+\"\K[^\"]+' | sort -u)" -- "${cur}") )
;;
2)
COMPREPLY=()
;;
3)
COMPREPLY=( $(compgen -W "60 300 600 3600 86400" -- "${cur}") )
;;
*)
COMPREPLY=()
;;
esac
return 0
}
complete -o filenames -F _ip_host_update_completion ip_host_update

View File

@@ -0,0 +1,80 @@
#!/bin/bash
#-----------------------------------------------------------------------------------------------------------------------------------
#
# Rx3 OpenVPN Status Bash Completion
#
# Copyright (C) 2025-2026 Arnaud G. GIBERT
# mailto:arnaud@rx3.net
#
# This is free software: you can redistribute it and/or modify it
# under the terms of the GNU Lesser General Public License as published
# by the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program; If not, see
# <https://www.gnu.org/licenses/>.
#
#-----------------------------------------------------------------------------------------------------------------------------------
#-----------------------------------------------------------------------------------------------------------------------------------
# OpenVPN Status Completion
#-----------------------------------------------------------------------------------------------------------------------------------
_openvpn_status_completion()
{
local cur="${COMP_WORDS[COMP_CWORD]}"
local prev="${COMP_WORDS[COMP_CWORD-1]}"
local opts="-h --help -V --version -v --verbose"
local pos=0
local i
COMPREPLY=()
# Count non-option positional arguments already provided
for (( i=1; i<COMP_CWORD; i++ ))
do
case "${COMP_WORDS[i]}" in
-h|--help|-V|--version|-v|--verbose)
;;
--)
;;
-*)
;;
*)
pos=$(( pos + 1 ))
;;
esac
done
# Complete options if current word starts with '-'
if [[ "${cur}" == -* ]]
then
COMPREPLY=( $(compgen -W "${opts}" -- "${cur}") )
return 0
fi
# Complete positional arguments
case "${pos}" in
0)
COMPREPLY=( $(compgen -W "$(ls /var/lib/openvpn/*.status 2>/dev/null | sed 's|.*/||; s|\.status$||')" -- "${cur}") )
;;
*)
COMPREPLY=()
;;
esac
return 0
}
complete -o filenames -F _openvpn_status_completion openvpn-status

View File

@@ -22,6 +22,8 @@
#
#-----------------------------------------------------------------------------------------------------------------------------------
#-----------------------------------------------------------------------------------------------------------------------------------
# Rx3 Net Adm Completion
#-----------------------------------------------------------------------------------------------------------------------------------

View File

@@ -0,0 +1,80 @@
#!/bin/bash
#-----------------------------------------------------------------------------------------------------------------------------------
#
# Rx3 Vpn Adm Bash Completion
#
# Copyright (C) 2025-2026 Arnaud G. GIBERT
# mailto:arnaud@rx3.net
#
# This is free software: you can redistribute it and/or modify it
# under the terms of the GNU Lesser General Public License as published
# by the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program; If not, see
# <https://www.gnu.org/licenses/>.
#
#-----------------------------------------------------------------------------------------------------------------------------------
#-----------------------------------------------------------------------------------------------------------------------------------
# Rx3 Vpn Adm Completion
#-----------------------------------------------------------------------------------------------------------------------------------
_rx3_vpn_adm_completion()
{
local cur="${COMP_WORDS[COMP_CWORD]}"
local prev="${COMP_WORDS[COMP_CWORD-1]}"
local opts="-h --help -V --version -v --verbose"
local pos=0
local i
COMPREPLY=()
# Count non-option positional arguments already provided
for (( i=1; i<COMP_CWORD; i++ ))
do
case "${COMP_WORDS[i]}" in
-h|--help|-V|--version|-v|--verbose)
;;
--)
;;
-*)
;;
*)
pos=$(( pos + 1 ))
;;
esac
done
# Complete options if current word starts with '-'
if [[ "${cur}" == -* ]]
then
COMPREPLY=( $(compgen -W "${opts}" -- "${cur}") )
return 0
fi
# Complete positional arguments
case "${pos}" in
0)
COMPREPLY=( $(compgen -W "start stop restart status dump" -- "${cur}") )
;;
*)
COMPREPLY=()
;;
esac
return 0
}
complete -o filenames -F _rx3_vpn_adm_completion rx3_vpn_adm

143
etc/sysconfig/rx3-network Normal file
View File

@@ -0,0 +1,143 @@
#-------------------------------------------------------------------------------
# Network Config File
#-------------------------------------------------------------------------------
NETWORK_LOG_FILE="/var/log/network/rx3-network"
NETWORK_LOG_LOCK="/var/lock/network/log"
#NETWORK_LOG_TRACE="DISABLED"
#NETWORK_LOG_TRACE="ENABLED"
ADMIN_USER_LIST="xxx"
NETWORK_NC_TIMEOUT=10
#-------------------------------------------------------------------------------
# DNS Config
#-------------------------------------------------------------------------------
DNS_CACHE_FILE="/var/cache/network/dns"
DNS_CACHE_LOCK="/var/lock/network/dns"
#-------------------------------------------------------------------------------
# Network IP Route
#-------------------------------------------------------------------------------
NETWORK_IP_ROUTE_CONFIG="
#-------------------------------------------------------------------------------
# IP Mask Device
#-------------------------------------------------------------------------------
# Not
10.0.0.0 24 eth1
# GW
10.0.10.1 32 tun1 # GW1
10.0.10.2 32 tun1
10.0.10.3 32 tun2 # GW2
10.0.10.4 32 tun2
# SUB1
10.10.0.0 16 tun1
# SUB2
10.11.0.0 16 tun2
# Docker
172.17.0.0 16 docker0
"
#-------------------------------------------------------------------------------
# Network Dst Config
#-------------------------------------------------------------------------------
NETWORK_DST_NAME="vpn.rx3"
NETWORK_DST_PROXY_NAME="sub0.rx3"
NETWORK_DST_TYPE=([0]="Local" [1]="Gateway" [2]="OpenVPN")
NETWORK_DST_CONFIG="
#-------------------------------------------------------------------------------
# Name Type Device Config Table
#-------------------------------------------------------------------------------
NoVPN 0 eth0 - 3
sub1 1 tun1 - 4
sub2 1 tun2 - 5
VyprVPN-aaa 2 tun10 vyprvpn-aaa 10
VyprVPN-bbb 2 tun11 vyprvpn-bbb 11
VyprVPN-ccc 2 tun12 vyprvpn-ccc 12
"
#-------------------------------------------------------------------------------
# Network Src Config
#-------------------------------------------------------------------------------
NETWORK_SRC_LOCAL_DEVICE="br-vir"
NETWORK_SRC_LOCAL_ADDRESS="10.2.0.1"
NETWORK_SRC_TYPE=([0]="Local" [1]="Routed" [2]="OpenVPN")
NETWORK_SRC_CONFIG="
#-------------------------------------------------------------------------------
# IP Type Owner Table Port Port
# Start Range
#-------------------------------------------------------------------------------
# GW.Rx3 Router
10.0.10.1 2 xxx 11 3000 10 # GW1
10.0.10.3 2 xxx 11 - 10 # GW2
# Loc Vir
10.2.1.1 0 xxx 11 3100 10
10.2.1.5 0 xxx 11 - 10
10.2.1.9 0 xxx 11 - 10
# Sub1
10.10.0.1 1 xxx 11 3200 10
10.10.0.2 1 xxx 11 - 10
10.10.0.3 1 xxx 3 - 10
# Sub2
10.11.0.43 1 xxx 11 3300 10
"
#-------------------------------------------------------------------------------
# VPN Config
#-------------------------------------------------------------------------------
VPN_CONFIG_FILE="/etc/openvpn/ext-client-DEVICE.conf"
VPN_TEMPLATE_FILE="/etc/openvpn/template/ext-client-tunx.conf"
VPN_PID_FILE="/var/lib/network/vpn.pid"
VPN_STATUS_FILE="/var/lib/network/vpn.status"
VPN_STATUS_LOCK="/var/lock/network/vpn"
# Supervisor main loop sleep delay in second
VPN_LOOP_DELAY=30

12
etc/sysconfig/rx3-ns Normal file
View File

@@ -0,0 +1,12 @@
# Domain : Host : Owner
NS_LIST=" \
vpn.rx3:vpn0:xxx \
vpn.rx3:vpn1:xxx \
vpn.rx3:vpn2:xxx \
vpn.rx3:vpn3:xxx \
vpn.rx3:vpn4:xxx \
vpn.rx3:vpn5:xxx \
vpn.rx3:vpn6:xxx \
vpn.rx3:vpn7:xxx \
vpn.rx3:vpn8:xxx \
vpn.rx3:vpn9:xxx"