1
0
Fork 0
vcp-bula-nixfiles/hosts/yate/voip.nix

108 lines
2.6 KiB
Nix

{ config, pkgs, lib, ... }:
{
sops.secrets.ommpassword = {};
sops.secrets.sipsecret = {};
services.fieldpoc = {
enable = true;
ommIp = "10.42.132.2";
ommUser = "omm";
ommPasswordPath = config.sops.secrets.ommpassword.path;
sipsecretPath = config.sops.secrets.sipsecret.path;
dhcp = {
enable = true;
interface = "vlan132";
subnet = "10.42.132.0/24";
pool = "10.42.132.200 - 10.42.132.250";
router = "10.42.132.1";
dnsServers = "10.42.10.8";
omm = "10.42.132.2";
reservations = [
{
name = "omm";
macAddress = "AA:C3:A9:26:1F:77";
ipAddress = "10.42.132.2";
}
{
name = "rfp-01";
macAddress = "00:30:42:1B:8C:7A";
ipAddress = "10.42.132.11";
}
];
};
};
services.yate.config = {
accfile.dialout = {
enabled = "yes";
protocol = "sip";
username = "yate";
password = "yate";
registrar = "yate-dialup.bula22.de";
};
regexroute = "[default]
\${username}^$=-;error=noauth
^yate$=goto dialin
^.*$=line/\\0;line=dialout
[dialin]
\${sip_x-called}^.*$=lateroute/\\1";
ysipchan = {
general = {
ignorevia = "yes";
};
#"listener general".enable = "no";
#"listener dect" = {
# type = "udp";
# addr = "10.42.132.1";
# port = "5060";
#};
#"listener sip" = {
# type = "udp";
# addr = "10.42.133.1";
# port = "5060";
#};
#"listener voip" = {
# type = "udp";
# addr = "10.42.10.6";
# port = "5060";
# default = "yes";
#};
};
ysnmpagent = {
general.port = 161;
snmp_v2.ro_community = "yate";
};
};
networking.firewall.allowedUDPPorts = [ 161 ];
environment.systemPackages = with pkgs; [
(writers.makePythonWriter python39 python39.pkgs "/bin/dect_claim" { libraries = [ python39.pkgs.python-yate ]; } (builtins.readFile ./dect_claim.py))
(runCommand "yintro.slin" {} ''
mkdir -p $out/share/sounds/yate
ln -s ${./yintro.slin} $out/share/sounds/yate/yintro.slin
'')
];
systemd.services.fieldpoc-nerd = {
wantedBy = ["multi-user.target"];
startAt = "*-*-* *:*:00";
script = let
reloadScript = pkgs.writeText "reload" ''
spawn ${pkgs.inetutils}/bin/telnet localhost 9437
expect "> "
send "reload\n"
expect "> "
send "exit\n"
expect "disconnecting"
'';
in ''
${pkgs.curl}/bin/curl https://nerd.bula22.de/export.json\?event=1 > /etc/fieldpoc/extensions.json
${pkgs.expect}/bin/expect ${reloadScript}
'';
};
}