working
This commit is contained in:
36
diyvpn.sh
36
diyvpn.sh
@@ -10,17 +10,17 @@ common_ssh_cfg_path="${DIYVPN_SSH_CFG:-$script_dir/common_sshconfig}"
|
|||||||
diyvpn_cfg="${DIYVPN_CFG:-$HOME/.config/diyvpn/servers}"
|
diyvpn_cfg="${DIYVPN_CFG:-$HOME/.config/diyvpn/servers}"
|
||||||
|
|
||||||
generate() {
|
generate() {
|
||||||
local cfgpath name server_ssh_cfg idle_timeout listen_port
|
local cfgpath name server_ssh_cfg idle_timeout listen_port
|
||||||
cfgpath="$1"
|
cfgpath="$1"
|
||||||
name=$(basename "$cfgpath" | tr -d '[:space:]')
|
name=$(basename "$cfgpath" | tr -d '[:space:]')
|
||||||
server_ssh_cfg="$cfgpath"/ssh_config # TODO validate
|
server_ssh_cfg="$cfgpath"/ssh_config # TODO validate
|
||||||
|
|
||||||
source "$cfgpath/config.rc"
|
source "$cfgpath/config.rc"
|
||||||
|
|
||||||
idle_timeout="${IDLE_TIMEOUT:-10min}"
|
idle_timeout="${IDLE_TIMEOUT:-10min}"
|
||||||
listen_port="${LISTEN_PORT:?LISTEN_PORT should be set}"
|
listen_port="${LISTEN_PORT:?LISTEN_PORT should be set}"
|
||||||
|
|
||||||
cat > "$opdir/diyvpnssh-$name.service" <<-EOF
|
cat >"$opdir/diyvpnssh-$name.service" <<-EOF
|
||||||
[Unit]
|
[Unit]
|
||||||
Description=ssh to $name
|
Description=ssh to $name
|
||||||
StopWhenUnneeded=yes
|
StopWhenUnneeded=yes
|
||||||
@@ -34,9 +34,9 @@ generate() {
|
|||||||
RuntimeDirectory=diyvpn-$name
|
RuntimeDirectory=diyvpn-$name
|
||||||
Environment=SSH_CFG_PATH=$server_ssh_cfg
|
Environment=SSH_CFG_PATH=$server_ssh_cfg
|
||||||
ExecStart=ssh -F "$common_ssh_cfg_path" default
|
ExecStart=ssh -F "$common_ssh_cfg_path" default
|
||||||
EOF
|
EOF
|
||||||
|
|
||||||
cat > "$opdir/diyvpnact-$name.service" <<-EOF
|
cat >"$opdir/diyvpnact-$name.service" <<-EOF
|
||||||
[Unit]
|
[Unit]
|
||||||
Description=Socket activator for diyvpn to server $name
|
Description=Socket activator for diyvpn to server $name
|
||||||
Requires=diyvpnssh-$name.service
|
Requires=diyvpnssh-$name.service
|
||||||
@@ -45,9 +45,9 @@ generate() {
|
|||||||
|
|
||||||
[Service]
|
[Service]
|
||||||
ExecStart=/usr/lib/systemd/systemd-socket-proxyd --exit-idle-time=$idle_timeout %t/diyvpn-$name/sock
|
ExecStart=/usr/lib/systemd/systemd-socket-proxyd --exit-idle-time=$idle_timeout %t/diyvpn-$name/sock
|
||||||
EOF
|
EOF
|
||||||
|
|
||||||
cat > "$opdir/diyvpnact-$name.socket" <<-EOF
|
cat >"$opdir/diyvpnact-$name.socket" <<-EOF
|
||||||
[Unit]
|
[Unit]
|
||||||
Description=Socket for diyvpn to server $name
|
Description=Socket for diyvpn to server $name
|
||||||
|
|
||||||
@@ -56,10 +56,16 @@ generate() {
|
|||||||
|
|
||||||
[Install]
|
[Install]
|
||||||
WantedBy=sockets.target
|
WantedBy=sockets.target
|
||||||
EOF
|
EOF
|
||||||
|
|
||||||
|
mkdir -p "$opdir/sockets.target.wants"
|
||||||
|
ln -snf "../diyvpnact-$name.socket" "$opdir/sockets.target.wants"
|
||||||
}
|
}
|
||||||
|
|
||||||
for server in "$diyvpn_cfg"/*
|
for server in "$diyvpn_cfg"/*; do
|
||||||
do
|
if [[ -d "$server" ]]; then
|
||||||
(generate "$server" "$opdir")
|
(generate "$server" "$opdir")
|
||||||
|
else
|
||||||
|
echo "Ignoring $server. Not a directory."
|
||||||
|
fi
|
||||||
done
|
done
|
||||||
|
|||||||
Reference in New Issue
Block a user