Compare commits
8 Commits
buna-machi
...
8a24bf97f8
| Author | SHA1 | Date | |
|---|---|---|---|
| 8a24bf97f8 | |||
| 47ea505962 | |||
| 8853fcda9b | |||
| bfaab9b1e7 | |||
| 92fa3bcb88 | |||
| bf64ee1202 | |||
| ec4c3897e2 | |||
| 39bfcd0080 |
File diff suppressed because it is too large
Load Diff
@@ -1,4 +1,7 @@
|
||||
{ clanLib, ... }:
|
||||
{
|
||||
clanLib,
|
||||
...
|
||||
}:
|
||||
{
|
||||
_class = "clan.service";
|
||||
manifest.name = "phonebox";
|
||||
@@ -14,6 +17,11 @@
|
||||
description = "An Ethernet interface that connect to ATA box.";
|
||||
default = "enp2s0";
|
||||
};
|
||||
options.ownerName = lib.mkOption {
|
||||
type = lib.types.str;
|
||||
description = "";
|
||||
default = "";
|
||||
};
|
||||
};
|
||||
perInstance =
|
||||
{
|
||||
@@ -22,6 +30,7 @@
|
||||
...
|
||||
}:
|
||||
{
|
||||
|
||||
nixosModule =
|
||||
{
|
||||
lib,
|
||||
@@ -30,11 +39,46 @@
|
||||
...
|
||||
}:
|
||||
let
|
||||
asterisk = pkgs.asterisk.overrideAttrs (old: {
|
||||
propagatedNativeBuildInputs = [ pkgs.spandsp3 ];
|
||||
});
|
||||
|
||||
machines = lib.attrNames roles.default.machines;
|
||||
|
||||
user = "asterisk";
|
||||
faxDir = "/run/asterisk/fax";
|
||||
rtpPortFrom = 10000;
|
||||
rtpPortTo = 20000;
|
||||
ata-interface = settings.ata-ethernet-iface;
|
||||
|
||||
contactList = builtins.map (machineName: {
|
||||
name = "${clanLib.getPublicValue {
|
||||
flake = config.clan.core.settings.directory;
|
||||
machine = machineName;
|
||||
generator = "phonebox";
|
||||
file = "owner-name";
|
||||
default = null;
|
||||
}}";
|
||||
number = "${
|
||||
(clanLib.getPublicValue {
|
||||
flake = config.clan.core.settings.directory;
|
||||
machine = machineName;
|
||||
generator = "phonebox";
|
||||
file = "server-prefix-number";
|
||||
default = null;
|
||||
})
|
||||
(
|
||||
clanLib.getPublicValue {
|
||||
flake = config.clan.core.settings.directory;
|
||||
machine = machineName;
|
||||
generator = "phonebox";
|
||||
file = "ata-local-number";
|
||||
default = null;
|
||||
}
|
||||
)
|
||||
}";
|
||||
}) machines;
|
||||
|
||||
genServerSIPEndpoint =
|
||||
{ hostname, address }:
|
||||
''
|
||||
@@ -97,10 +141,11 @@
|
||||
throw "clanService/yggdrasil is required";
|
||||
in
|
||||
{
|
||||
clan.core.vars.generators.phonebox = {
|
||||
clan.core.vars.generators.phonebox = builtins.break {
|
||||
files = {
|
||||
server-prefix-number.secret = false;
|
||||
ata-local-number.secret = false;
|
||||
owner-name.secret = false;
|
||||
};
|
||||
|
||||
prompts = {
|
||||
@@ -112,11 +157,16 @@
|
||||
type = "line";
|
||||
description = "Local suffix number: indicate local number on the server [XX00]";
|
||||
};
|
||||
owner-name = {
|
||||
type = "line";
|
||||
description = "The owner's name for this unit";
|
||||
};
|
||||
};
|
||||
|
||||
script = ''
|
||||
cat $prompts/server-prefix-number > $out/server-prefix-number
|
||||
cat $prompts/ata-local-number > $out/ata-local-number
|
||||
cat $prompts/owner-name > $out/owner-name
|
||||
'';
|
||||
};
|
||||
|
||||
@@ -191,9 +241,9 @@
|
||||
|
||||
services.asterisk = {
|
||||
enable = lib.mkDefault true;
|
||||
package = lib.mkDefault asterisk;
|
||||
confFiles =
|
||||
let
|
||||
machines = lib.attrNames roles.default.machines;
|
||||
nodes = builtins.foldl' (
|
||||
nodes: name:
|
||||
nodes
|
||||
@@ -240,6 +290,13 @@
|
||||
syslog.local0 => notice,warning,error
|
||||
'';
|
||||
|
||||
"modules.conf" = ''
|
||||
[modules]
|
||||
autoload=yes
|
||||
|
||||
load => res_fax_spandsp.so
|
||||
'';
|
||||
|
||||
# Dial plan config
|
||||
"extensions.conf" =
|
||||
let
|
||||
@@ -257,6 +314,16 @@
|
||||
same => n,Playback(hello-world)
|
||||
same => n,Hangup()
|
||||
|
||||
exten => 000,1,Answer()
|
||||
same => n,ReceiveFAX(${faxDir}/echo-''${UNIQUEID}.tiff)
|
||||
same => n,Set(FAXFILE=${faxDir}/echo-''${UNIQUEID}.tiff)
|
||||
same => n,Set(FAXECHO=true)
|
||||
|
||||
exten => h,1,GotoIf($[''${FAXECHO}]?sendfax)
|
||||
same => n,Hangup()
|
||||
same => n(sendfax),Originate(PJSIP/00,app,SendFAX,${faxDir}/echo-''${UNIQUEID}.tiff)
|
||||
same => n,Set(FAXECHO=false)
|
||||
|
||||
''
|
||||
+ (genLocalExtenConf {
|
||||
localNumber = config.clan.core.vars.generators.phonebox.files.ata-local-number.value;
|
||||
@@ -318,6 +385,10 @@
|
||||
};
|
||||
};
|
||||
|
||||
systemd.tmpfiles.rules = [
|
||||
"d ${faxDir} 0755 ${user} ${user} - -"
|
||||
];
|
||||
|
||||
systemd.services.asterisk-watcher = {
|
||||
enable = true;
|
||||
description = "Asterisk Configuration files watcher";
|
||||
|
||||
Reference in New Issue
Block a user