diff --git a/modules/voip/provisioning/templates/cisco-9971.nix b/modules/voip/provisioning/templates/cisco-9971.nix index 99f0915..ae6694f 100644 --- a/modules/voip/provisioning/templates/cisco-9971.nix +++ b/modules/voip/provisioning/templates/cisco-9971.nix @@ -1,285 +1 @@ -{ lib }: - -let - cisco = import ./cisco-base.nix { inherit lib; }; -in { - desktopSize = "640x480x24"; - thumbnailSize = "123x111"; - - # Return a list of { name, content } provisioning files for this phone. - # provisioning/default.nix wraps each with pkgs.writeText for the linkFarm. - mkFiles = - { mac, label, displayName, password, serverAddress, ntpServer - , sipPort ? 5060 - , directoryPort ? 8080 - , familyLineEnabled ? false - , familyLineLabel ? "Familie" - , familyLinePassword ? "" - , intercomEnabled ? false - , intercomPassword ? "" - , intercomLineIndex ? 2 - , allExtensions ? [] - , allStarExtensions ? [] - , hasTrunk ? false - , hasIntercomButton ? false - , pageExtension ? null - , blfPersons ? [] - }: - let - # Line button assignments: - # button 1 / lineIndex 1 — personal/location L1 line (always present) - # button 2 / lineIndex 2 — family L2 line (when familyLineEnabled) - # button N / lineIndex N — intercom (when intercomEnabled; N = 2 or 3) - intercomButton = if familyLineEnabled then 3 else 2; - firstBlfButton = 1 + (if familyLineEnabled then 1 else 0) + (if intercomEnabled then 1 else 0) + 1; - - dialplanFile = cisco.dialplanFilename mac; - - configXml = '' - - - SIP - admin - password - - - D.M.YA - Central Europe Standard/Daylight Time - - - ${ntpServer} - - - - - - - - - ${toString sipPort} - - ${serverAddress} - - - - - - - - - 5060 - - - - - true - - - true - x-serviceuri-cfwdall - x-cisco-serviceuri-pickup - x-cisco-serviceuri-opickup - x-cisco-serviceuri-gpickup - x-cisco-serviceuri-meetme - x-cisco-serviceuri-abbrdial - 2 - 2 - 2 - 0 - true - - - 6 - 10 - 180 - 3600 - 5 - 120 - 120 - 5 - 500 - 4000 - 70 - false - None - - false - 3 - ${(builtins.substring 0 12 label)} - 1 - false - - - 9 - ${displayName} - USECALLMANAGER - ${toString sipPort} - ${mac} - ${displayName} - - 2 - - 3 - ${mac} - ${password} - 1 - *97 - ${mac} - - true - true - true - true - - - ${if familyLineEnabled then '' - - 9 - ${familyLineLabel} - USECALLMANAGER - ${toString sipPort} - ${mac}-l2 - ${familyLineLabel} - - 2 - - 3 - ${mac}-l2 - ${familyLinePassword} - 3 - *97 - ${mac}-l2 - - true - true - true - true - - - '' else ""}${if intercomEnabled then '' - - 23 - Intercom - USECALLMANAGER - ${toString sipPort} - ${mac}-intercom - Intercom - - 3 - Auto Answer with Speakerphone - - 3 - ${mac}-intercom - ${intercomPassword} - 1 - 1 - ${mac}-intercom - - '' else ""}${lib.concatImapStrings (i: p: '' - - 21 - ${p.displayName} - 1 - ${p.extension} - - '') blfPersons} - ${toString sipPort} - 16348 - 20134 - 184 - ${dialplanFile} - - 1 - - - true - 2 - - - - 0 - 1 - 0 - 1 - 1,2,3,4,5,6,7 - 0 - 00:00 - 00:00 - 00:05 - 1 - - - en_US - utf-8 - - 1 - http://${serverAddress}:${toString directoryPort}/auth - http://${serverAddress}:${toString directoryPort}/directory.xml - - - - - - 2 - - Missed Calls - Application:Cisco/MissedCalls - - - - - Received Calls - Application:Cisco/ReceivedCalls - - - - - Placed Calls - Application:Cisco/PlacedCalls - - - - - Voicemail - Application:Cisco/Voicemail - - - - - - 1 - 0 - - - 3804 - - - false - - ''; - - # Dial template: the phone tests patterns top-to-bottom and dials as soon - # as digits match a pattern with timeout="0", or after the timeout for - # timeout > 0. Explicit patterns must come before the catch-all. - h = builtins.hashString "sha256" (builtins.toJSON { - inherit mac allExtensions allStarExtensions hasTrunk hasIntercomButton intercomLineIndex blfPersons; - }); - versionStamp = "${builtins.substring 0 8 h}-${builtins.substring 8 4 h}-${builtins.substring 12 4 h}-${builtins.substring 16 4 h}-${builtins.substring 20 12 h}"; - extMatch = ext: "