diff --git a/hosts/aluminium/services/asterisk.nix b/hosts/aluminium/services/asterisk.nix index bdbdfe4..2f03b34 100644 --- a/hosts/aluminium/services/asterisk.nix +++ b/hosts/aluminium/services/asterisk.nix @@ -166,4 +166,31 @@ in [ -L "$sounds_de" ] && rm "$sounds_de" ln -s "${pkgs.asterisk-sounds-de}/" "$sounds_de" ''; + + systemd.services."asterisk-reload-endpoint@" = { + description = "Check if asterisk endpoint is identified and reload it when it is not."; + serviceConfig = { + Type = "oneshot"; + }; + environment = { + ENDPOINT = "%I"; + }; + script = '' + export PATH=${pkgs.lib.makeBinPath [pkgs.asterisk pkgs.gnused pkgs.gnugrep]} + if ! asterisk -r -x "pjsip show endpoint $ENDPOINT" | sed -n '/^===/,/^\s*ParameterName/{//!p}' | grep -q 'Identify:'; then + asterisk -r -x "module reload res_pjsip_endpoint_identifier_ip.so" + fi + ''; + }; + + systemd.timers.asterisk-reload-endpoint = { + description = "Check if asterisk endpoint is identified and reload it when it is not."; + after = [ "asterisk.service" ]; + wantedBy = [ "timers.target" ]; + timerConfig = { + Persistent = true; + OnCalendar = "*-*-* *:*:00"; + Unit = "asterisk-reload-endpoint@sipgate.service"; + }; + }; }