169 lines
5.1 KiB
Nix
169 lines
5.1 KiB
Nix
{ config, lib, pkgs, ... }:
|
|
let
|
|
secretConfigFiles = [
|
|
"ari"
|
|
"pjsip"
|
|
"voicemail"
|
|
];
|
|
rtp = {
|
|
start = 10000;
|
|
end = 10200;
|
|
};
|
|
in
|
|
{
|
|
services.asterisk = {
|
|
enable = true;
|
|
confFiles = {
|
|
"extensions.conf" = ''
|
|
[sipgate-in]
|
|
exten = _499846876,1,Noop(Processing an incoming call)
|
|
;same = n,Dial(PJSIP/10)
|
|
same = n,Dial(PJSIP/10&PJSIP/11,45,tT)
|
|
;same = n,VoiceMail(876@lechner,u)
|
|
same = n,Hangup()
|
|
|
|
exten => _4998469779781,1,Verbose(3,Incoming fax)
|
|
; folder where your incoming faxes will initially be stored
|
|
same => n,Set(FAXDEST=/tmp)
|
|
|
|
exten = _4998469779782,1,Noop(Test call)
|
|
same = n,Dial(PJSIP/10)
|
|
|
|
; put a timestamp on this call so the resulting file is unique
|
|
same => n,Set(tempfax=''${STRFTIME(,,%C%y%m%d%H%M)})
|
|
same => n,ReceiveFax(''${FAXDEST}/''${tempfax}.tif)
|
|
same => n,Verbose(3,- Fax receipt completed with status: ''${FAXSTATUS})
|
|
same => n,System(echo | s-nail -a ''${FAXDEST}/''${tempfax} -s "Asterisk Fax" mail@jalr.de)
|
|
|
|
exten = _499846977892,1,Noop(Processing an incoming call)
|
|
same = n,Dial(PJSIP/12,30,tT)
|
|
;same = n,VoiceMail(977892@pauline,u)
|
|
same = n,Hangup()
|
|
|
|
exten = _499846977891,1,Noop(Processing an incoming call)
|
|
same = n,Dial(PJSIP/13&PJSIP/16,30,tT)
|
|
same = n,VoiceMail(977891@jakob,u)
|
|
same = n,Hangup()
|
|
|
|
[dect]
|
|
exten = 100,1,Answer()
|
|
same = n,Wait(1)
|
|
same = n,Playback(hello-world)
|
|
same = n,Hangup()
|
|
|
|
;exten = 10,1,Dial(PJSIP/10,10)
|
|
;same = n,VoiceMail(876@lechner,u)
|
|
|
|
exten = _1X,1,Dial(PJSIP/''${EXTEN},30)
|
|
same = n,Hangup()
|
|
|
|
exten = 50,1,Dial(PJSIP/10&PJSIP/11,30,tT)
|
|
same = n,Hangup()
|
|
|
|
exten = 99,1,Answer()
|
|
same = n,VoiceMailMain(876@lechner)
|
|
|
|
exten = 98,1,Answer()
|
|
same = n,VoiceMailMain(977892@pauline)
|
|
|
|
exten = _ZX.,1,Noop(Ortsgespraech)
|
|
same = n,Dial(PJSIP/09846''${EXTEN}@sipgate,300)
|
|
same = n,Hangup()
|
|
|
|
exten = _0ZXXXXX.,1,Noop(Deutsches Festnetz)
|
|
same = n,Dial(PJSIP/''${EXTEN}@sipgate,300)
|
|
same = n,Hangup()
|
|
|
|
exten = _00XXXXX.,1,Noop(Internationales Gespraech)
|
|
same = n,Dial(PJSIP/''${EXTEN}@sipgate,300)
|
|
same = n,Hangup()
|
|
|
|
[voicemail-callback]
|
|
exten = s,1,HasNewVoicemail(977892@pauline)
|
|
exten = s,2,Hangup
|
|
exten = s,102,Dial(PJSIP/12,15)
|
|
exten = s,n,VoiceMailMain(977892@pauline)
|
|
exten = s,n,Hangup
|
|
|
|
|
|
[fax-tx]
|
|
exten => s,1,NoOp(**** SENDING FAX ****)
|
|
;exten => s,n,Set(FAXFILE=output.tif)
|
|
|
|
exten => s,n,NoOp(**** SETTING FAXOPT ****)
|
|
exten => s,n,Set(FAXOPT(ecm)=yes)
|
|
;exten => s,n,Set(FAXOPT(localstationid)=098469779780)
|
|
exten => s,n,Set(FAXOPT(maxrate)=14400)
|
|
exten => s,n,Set(FAXOPT(minrate)=2400)
|
|
exten => s,n,NoOp(**** SENDING FAX : ''${FAXFILE} ****)
|
|
exten => s,n,SendFAX(/var/lib/asterisk/fax-outgoing/''${FAXFILE},d)
|
|
|
|
;exten => send,n,Wait(6)
|
|
;exten => send,n,Set(GLOBAL(FAXCOUNT)=''$[ ''${GLOBAL(FAXCOUNT)} + 1 ])
|
|
;exten => send,n,Set(FAXCOUNT=''${GLOBAL(FAXCOUNT)})
|
|
;exten => send,n,Set(FAXFILE=dw-faxout.tif)
|
|
; Set FAXOPTs
|
|
;exten => send,n,NoOp(**** SETTING FAXOPT ****)
|
|
;exten => send,n,Set(FAXOPT(ecm)=yes)
|
|
;exten => send,n,Set(FAXOPT(headerinfo)=Fax from ''${GLOBAL(LASTFAXCALLERNAME)} at ''${GLOBAL(LASTFAXCALLERNUM)} was received.)
|
|
;exten => send,n,Set(FAXOPT(maxrate)=14400)
|
|
; Send the fax
|
|
exten => send,n,SendFAX(/home/jalr/fax.tif,d)
|
|
'';
|
|
"http.conf" = ''
|
|
[general]
|
|
enabled=yes
|
|
bindaddr=127.0.0.1
|
|
|
|
; Port to bind to for HTTP sessions (default is 8088)
|
|
;bindport=8088
|
|
|
|
tlsdisablev1=yes
|
|
tlsdisablev11=yes
|
|
tlsdisablev12=yes
|
|
|
|
tlsservercipherorder=yes
|
|
'';
|
|
"rtp.conf" = ''
|
|
[general]
|
|
rtpstart=${toString rtp.start}
|
|
rtpend=${toString rtp.end}
|
|
'';
|
|
"dnsmgr.conf" = ''
|
|
[general]
|
|
enable=yes
|
|
refreshinterval=300
|
|
'';
|
|
};
|
|
useTheseDefaultConfFiles = [ ];
|
|
};
|
|
|
|
sops.secrets = (lib.listToAttrs (map
|
|
(name: lib.nameValuePair "asterisk-${name}" {
|
|
sopsFile = ../secrets.yaml;
|
|
owner = config.users.users.asterisk.name;
|
|
})
|
|
secretConfigFiles));
|
|
environment.etc = lib.mapAttrs'
|
|
(name: _: lib.nameValuePair
|
|
"asterisk/${name}.conf"
|
|
{ source = config.sops.secrets."asterisk-${name}".path; })
|
|
(lib.listToAttrs (map (name: lib.nameValuePair name { }) secretConfigFiles));
|
|
|
|
networking.firewall = {
|
|
allowedUDPPortRanges = [
|
|
{
|
|
from = rtp.start;
|
|
to = rtp.end;
|
|
}
|
|
];
|
|
};
|
|
|
|
system.activationScripts.symlink-asterisk-sounds-de = lib.stringAfter [ "var" ] ''
|
|
sounds="/var/lib/asterisk/sounds"
|
|
sounds_de="$sounds/de"
|
|
mkdir -p "$sounds"
|
|
[ -L "$sounds_de" ] && rm "$sounds_de"
|
|
ln -s "${pkgs.asterisk-sounds-de}/" "$sounds_de"
|
|
'';
|
|
}
|