- 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:
90
etc/bash_completion.d/cert_dump
Normal file
90
etc/bash_completion.d/cert_dump
Normal 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
|
||||
89
etc/bash_completion.d/ip_host_update
Normal file
89
etc/bash_completion.d/ip_host_update
Normal 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
|
||||
80
etc/bash_completion.d/openvpn-status
Normal file
80
etc/bash_completion.d/openvpn-status
Normal 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
|
||||
@@ -22,6 +22,8 @@
|
||||
#
|
||||
#-----------------------------------------------------------------------------------------------------------------------------------
|
||||
|
||||
|
||||
|
||||
#-----------------------------------------------------------------------------------------------------------------------------------
|
||||
# Rx3 Net Adm Completion
|
||||
#-----------------------------------------------------------------------------------------------------------------------------------
|
||||
|
||||
80
etc/bash_completion.d/rx3_vpn_admin
Normal file
80
etc/bash_completion.d/rx3_vpn_admin
Normal 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
143
etc/sysconfig/rx3-network
Normal 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
12
etc/sysconfig/rx3-ns
Normal 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"
|
||||
Reference in New Issue
Block a user