From 9bb0b7bab5e7d2bc441e65250c35f34e7975583f Mon Sep 17 00:00:00 2001 From: Joe Carstairs Date: Wed, 12 Aug 2026 11:05:38 +0100 Subject: mox service waits for global ipv6 --- ansible/roles/mox/files/openrc/mox | 58 ------------------------- ansible/roles/mox/tasks/main.yml | 2 +- ansible/roles/mox/templates/openrc/mox | 77 ++++++++++++++++++++++++++++++++++ 3 files changed, 78 insertions(+), 59 deletions(-) delete mode 100644 ansible/roles/mox/files/openrc/mox create mode 100644 ansible/roles/mox/templates/openrc/mox diff --git a/ansible/roles/mox/files/openrc/mox b/ansible/roles/mox/files/openrc/mox deleted file mode 100644 index e5fc838..0000000 --- a/ansible/roles/mox/files/openrc/mox +++ /dev/null @@ -1,58 +0,0 @@ -#!/sbin/openrc-run - -description="Run mox email server" -extra_commands="configtest" -description_configtest="Check configuration via \"mox config test\"" - -configtest() -{ - if ! [ -f ~mox/config/mox.conf ]; then - eerror "The config file ~mox/config/mox.conf does not exist!" - return 1 - fi - cd ~mox - if mox config test >&/dev/null; then - einfo "config: ok" - else - eerror "config: error" - return 1 - fi -} - -depend() -{ - need unbound -} - -start() -{ - configtest || return 1 - ebegin "Starting mox" - start-stop-daemon --start \ - --exec /usr/bin/mox \ - --background \ - --chdir ~mox \ - --stdout /var/log/mox.log \ - --stderr /var/log/mox.log \ - --make-pidfile \ - --pidfile /run/mox.pid \ - -- serve - eend $? -} - -stop() -{ - ebegin "Stopping mox" - start-stop-daemon --stop \ - --exec /usr/bin/mox \ - --pidfile /run/mox.pid - eend $? -} - -restart() -{ - ebegin "Restarting mox" - svc_stop - svc_start - eend $? -} diff --git a/ansible/roles/mox/tasks/main.yml b/ansible/roles/mox/tasks/main.yml index 7e1f6b9..72ed7c3 100644 --- a/ansible/roles/mox/tasks/main.yml +++ b/ansible/roles/mox/tasks/main.yml @@ -134,7 +134,7 @@ - name: Install mox service register: mox_service - ansible.builtin.copy: + ansible.builtin.template: src: openrc/mox dest: /etc/init.d/mox mode: "755" diff --git a/ansible/roles/mox/templates/openrc/mox b/ansible/roles/mox/templates/openrc/mox new file mode 100644 index 0000000..e04d96a --- /dev/null +++ b/ansible/roles/mox/templates/openrc/mox @@ -0,0 +1,77 @@ +#!/sbin/openrc-run + +description="Run mox email server" +extra_commands="configtest" +description_configtest="Check configuration via \"mox config test\"" + +configtest() +{ + if ! [ -f ~mox/config/mox.conf ]; then + eerror "The config file ~mox/config/mox.conf does not exist!" + return 1 + fi + cd ~mox + if mox config test >&/dev/null; then + einfo "config: ok" + else + eerror "config: error" + return 1 + fi +} + +depend() +{ + need net unbound +} + +start_pre() { + ebegin "Waiting for global IPv6 address {{ ansible_facts.default_ipv6.address }} to be ready" + + local i=0 + while [ "$i" -lt 30 ]; do + if ip -6 addr show scope global | grep -q "{{ ansible_facts.default_ipv6.address }}" && \ + ! ip -6 addr show scope global | grep -q "{{ ansible_facts.default_ipv6.address }}.*\btentative\b" + then + eend 0 + return 0 + fi + sleep 2 + i=$((i + 2)) + done + + eend 1 "Global IPv6 address {{ ansible_facts.default_ipv6.address }} not ready after 30 seconds" + return 1 +} + +start() +{ + configtest || return 1 + ebegin "Starting mox" + start-stop-daemon --start \ + --exec /usr/bin/mox \ + --background \ + --chdir ~mox \ + --stdout /var/log/mox.log \ + --stderr /var/log/mox.log \ + --make-pidfile \ + --pidfile /run/mox.pid \ + -- serve + eend $? +} + +stop() +{ + ebegin "Stopping mox" + start-stop-daemon --stop \ + --exec /usr/bin/mox \ + --pidfile /run/mox.pid + eend $? +} + +restart() +{ + ebegin "Restarting mox" + svc_stop + svc_start + eend $? +} -- cgit v1.2.3