|
@@ -17,7 +17,7 @@ state() { printf '%s\n' "$1" >"$base/status"; printf '[%s] %s\n' "$(date -u +%FT
|
|
|
cleanup_veth() {
|
|
cleanup_veth() {
|
|
|
python3 - <<'PY'
|
|
python3 - <<'PY'
|
|
|
import json,subprocess,pathlib
|
|
import json,subprocess,pathlib
|
|
|
-p=pathlib.Path('/etc/proxmox-router/vpn/aerotun_instances.json')
|
|
|
|
|
|
|
+p=pathlib.Path('/etc/debtik/vpn/aerotun_instances.json')
|
|
|
if p.exists():
|
|
if p.exists():
|
|
|
for tunnel in json.loads(p.read_text()):
|
|
for tunnel in json.loads(p.read_text()):
|
|
|
name=tunnel['name']
|
|
name=tunnel['name']
|
|
@@ -34,21 +34,22 @@ PY
|
|
|
}
|
|
}
|
|
|
restore() {
|
|
restore() {
|
|
|
state rolling_back
|
|
state rolling_back
|
|
|
- systemctl stop proxmox-router.service || true
|
|
|
|
|
|
|
+ systemctl stop debtik.service || systemctl stop proxmox-router.service || true
|
|
|
cleanup_veth || true
|
|
cleanup_veth || true
|
|
|
- for name in proxmox-router debtik-cli; do
|
|
|
|
|
|
|
+ for name in debtik debtik-cli; do
|
|
|
test -f "$base/previous/$name"
|
|
test -f "$base/previous/$name"
|
|
|
cp -p "$base/previous/$name" "/usr/local/bin/$name.rollback"
|
|
cp -p "$base/previous/$name" "/usr/local/bin/$name.rollback"
|
|
|
mv -f "/usr/local/bin/$name.rollback" "/usr/local/bin/$name"
|
|
mv -f "/usr/local/bin/$name.rollback" "/usr/local/bin/$name"
|
|
|
done
|
|
done
|
|
|
|
|
+ ln -sf /usr/local/bin/debtik /usr/local/bin/proxmox-router
|
|
|
for name in debtik-update debtik-release-version debtik-install-dependencies; do
|
|
for name in debtik-update debtik-release-version debtik-install-dependencies; do
|
|
|
if [[ -f "$base/previous/$name" ]]; then install -m 0750 "$base/previous/$name" "/usr/local/libexec/$name.rollback"; mv -f "/usr/local/libexec/$name.rollback" "/usr/local/libexec/$name"; fi
|
|
if [[ -f "$base/previous/$name" ]]; then install -m 0750 "$base/previous/$name" "/usr/local/libexec/$name.rollback"; mv -f "/usr/local/libexec/$name.rollback" "/usr/local/libexec/$name"; fi
|
|
|
done
|
|
done
|
|
|
if [[ -f "$base/previous_commit" ]]; then cp -p "$base/previous_commit" "$base/installed_commit"; fi
|
|
if [[ -f "$base/previous_commit" ]]; then cp -p "$base/previous_commit" "$base/installed_commit"; fi
|
|
|
if [[ -f "$base/previous_version" ]]; then cp -p "$base/previous_version" "$base/installed_version"; fi
|
|
if [[ -f "$base/previous_version" ]]; then cp -p "$base/previous_version" "$base/installed_version"; fi
|
|
|
if [[ -f "$base/previous/go.mod" ]]; then cp -p "$base/previous/go.mod" "$base/go.mod"; fi
|
|
if [[ -f "$base/previous/go.mod" ]]; then cp -p "$base/previous/go.mod" "$base/go.mod"; fi
|
|
|
- systemctl start proxmox-router.service
|
|
|
|
|
- systemctl is-active --quiet proxmox-router.service
|
|
|
|
|
|
|
+ systemctl start debtik.service
|
|
|
|
|
+ systemctl is-active --quiet debtik.service
|
|
|
if [[ -f "$base/previous/iptables.save" ]]; then iptables-restore -c < "$base/previous/iptables.save"; fi
|
|
if [[ -f "$base/previous/iptables.save" ]]; then iptables-restore -c < "$base/previous/iptables.save"; fi
|
|
|
if [[ -s "$base/previous/ip6tables.save" ]]; then ip6tables-restore -c < "$base/previous/ip6tables.save"; fi
|
|
if [[ -s "$base/previous/ip6tables.save" ]]; then ip6tables-restore -c < "$base/previous/ip6tables.save"; fi
|
|
|
state rolled_back
|
|
state rolled_back
|
|
@@ -89,10 +90,10 @@ state building
|
|
|
go_cmd=$(command -v go || true)
|
|
go_cmd=$(command -v go || true)
|
|
|
if [[ -x /opt/debtik/go/bin/go ]]; then go_cmd=/opt/debtik/go/bin/go; fi
|
|
if [[ -x /opt/debtik/go/bin/go ]]; then go_cmd=/opt/debtik/go/bin/go; fi
|
|
|
[[ -n $go_cmd ]] || { state failed; echo 'Go is not installed'; exit 1; }
|
|
[[ -n $go_cmd ]] || { state failed; echo 'Go is not installed'; exit 1; }
|
|
|
-CGO_ENABLED=0 "$go_cmd" build -trimpath -ldflags "-X proxmox-router/internal/api.BuildCommit=$commit" -o "$work/proxmox-router" ./cmd/server
|
|
|
|
|
|
|
+CGO_ENABLED=0 "$go_cmd" build -trimpath -ldflags "-X debtik/internal/api.BuildCommit=$commit" -o "$work/debtik" ./cmd/server
|
|
|
CGO_ENABLED=0 "$go_cmd" build -trimpath -o "$work/debtik-cli" ./cmd/debtik-cli
|
|
CGO_ENABLED=0 "$go_cmd" build -trimpath -o "$work/debtik-cli" ./cmd/debtik-cli
|
|
|
install -d -m 0700 "$base/previous"
|
|
install -d -m 0700 "$base/previous"
|
|
|
-for name in proxmox-router debtik-cli; do cp -p "/usr/local/bin/$name" "$base/previous/$name"; done
|
|
|
|
|
|
|
+for name in debtik debtik-cli; do cp -p "/usr/local/bin/$name" "$base/previous/$name"; done
|
|
|
for name in debtik-update debtik-release-version debtik-install-dependencies; do
|
|
for name in debtik-update debtik-release-version debtik-install-dependencies; do
|
|
|
if [[ -f "/usr/local/libexec/$name" ]]; then cp -p "/usr/local/libexec/$name" "$base/previous/$name"; fi
|
|
if [[ -f "/usr/local/libexec/$name" ]]; then cp -p "/usr/local/libexec/$name" "$base/previous/$name"; fi
|
|
|
done
|
|
done
|
|
@@ -106,21 +107,31 @@ ip6tables-save -c > "$base/previous/ip6tables.save"
|
|
|
state installing
|
|
state installing
|
|
|
rollback_on_error() { trap - ERR; restore || state failed; exit 1; }
|
|
rollback_on_error() { trap - ERR; restore || state failed; exit 1; }
|
|
|
trap rollback_on_error ERR
|
|
trap rollback_on_error ERR
|
|
|
-systemctl stop proxmox-router.service
|
|
|
|
|
|
|
+if systemctl is-active --quiet proxmox-router.service; then
|
|
|
|
|
+ systemctl stop proxmox-router.service || true
|
|
|
|
|
+ systemctl disable proxmox-router.service || true
|
|
|
|
|
+fi
|
|
|
|
|
+systemctl stop debtik.service || true
|
|
|
cleanup_veth
|
|
cleanup_veth
|
|
|
-for name in proxmox-router debtik-cli; do
|
|
|
|
|
|
|
+for name in debtik debtik-cli; do
|
|
|
install -m 0755 "$work/$name" "/usr/local/bin/$name.next"
|
|
install -m 0755 "$work/$name" "/usr/local/bin/$name.next"
|
|
|
mv -f "/usr/local/bin/$name.next" "/usr/local/bin/$name"
|
|
mv -f "/usr/local/bin/$name.next" "/usr/local/bin/$name"
|
|
|
done
|
|
done
|
|
|
|
|
+ln -sf /usr/local/bin/debtik /usr/local/bin/proxmox-router
|
|
|
install -m 0750 scripts/debtik-update /usr/local/libexec/debtik-update.next
|
|
install -m 0750 scripts/debtik-update /usr/local/libexec/debtik-update.next
|
|
|
install -m 0750 scripts/release-version.py /usr/local/libexec/debtik-release-version.next
|
|
install -m 0750 scripts/release-version.py /usr/local/libexec/debtik-release-version.next
|
|
|
install -m 0750 scripts/install-dependencies.sh /usr/local/libexec/debtik-install-dependencies.next
|
|
install -m 0750 scripts/install-dependencies.sh /usr/local/libexec/debtik-install-dependencies.next
|
|
|
mv -f /usr/local/libexec/debtik-update.next /usr/local/libexec/debtik-update
|
|
mv -f /usr/local/libexec/debtik-update.next /usr/local/libexec/debtik-update
|
|
|
mv -f /usr/local/libexec/debtik-release-version.next /usr/local/libexec/debtik-release-version
|
|
mv -f /usr/local/libexec/debtik-release-version.next /usr/local/libexec/debtik-release-version
|
|
|
mv -f /usr/local/libexec/debtik-install-dependencies.next /usr/local/libexec/debtik-install-dependencies
|
|
mv -f /usr/local/libexec/debtik-install-dependencies.next /usr/local/libexec/debtik-install-dependencies
|
|
|
-systemctl start proxmox-router.service
|
|
|
|
|
|
|
+if [[ -f systemd/debtik.service ]]; then
|
|
|
|
|
+ install -m 0644 systemd/debtik.service /etc/systemd/system/debtik.service
|
|
|
|
|
+ systemctl daemon-reload
|
|
|
|
|
+ systemctl enable debtik.service
|
|
|
|
|
+fi
|
|
|
|
|
+systemctl start debtik.service
|
|
|
sleep 3
|
|
sleep 3
|
|
|
-systemctl is-active --quiet proxmox-router.service
|
|
|
|
|
|
|
+systemctl is-active --quiet debtik.service
|
|
|
printf '%s\n' "$commit" > "$base/installed_commit"
|
|
printf '%s\n' "$commit" > "$base/installed_commit"
|
|
|
printf '%s\n' "$version" > "$base/installed_version"
|
|
printf '%s\n' "$version" > "$base/installed_version"
|
|
|
state complete
|
|
state complete
|