summaryrefslogtreecommitdiff
path: root/misc/freeswitch/scripts/fax_daemon.lua
diff options
context:
space:
mode:
Diffstat (limited to 'misc/freeswitch/scripts/fax_daemon.lua')
-rw-r--r--misc/freeswitch/scripts/fax_daemon.lua42
1 files changed, 42 insertions, 0 deletions
diff --git a/misc/freeswitch/scripts/fax_daemon.lua b/misc/freeswitch/scripts/fax_daemon.lua
new file mode 100644
index 0000000..cfe7c4e
--- /dev/null
+++ b/misc/freeswitch/scripts/fax_daemon.lua
@@ -0,0 +1,42 @@
+-- Gemeinschaft 5.0 fax daemon
+-- (c) AMOOMA GmbH 2012
+--
+
+local MAIN_LOOP_SLEEP_TIME = 30;
+
+-- Set logger
+require "common.log"
+local log = common.log.Log:new()
+log.prefix = "### [faxdaemon] "
+
+log:debug('Starting fax daemon');
+
+local database = nil;
+local api = freeswitch.API();
+
+freeswitch.setGlobalVariable('gs_fax_daemon', 'true');
+while freeswitch.getGlobalVariable("gs_fax_daemon") == 'true' do
+ require 'common.database'
+ local database = common.database.Database:new{ log = log }:connect();
+
+ if not database:connected() then
+ log:error("connection to Gemeinschaft database lost - retry in " .. MAIN_LOOP_SLEEP_TIME .. " seconds")
+ else
+ require 'dialplan.fax'
+ local fax_documents = dialplan.fax.Fax:new{log=log, database=database}:queued_for_sending();
+
+ for key, fax_document in pairs(fax_documents) do
+ if table.getn(fax_document.destination_numbers) > 0 and tonumber(fax_document.retry_counter) > 0 then
+ log:debug('FAX_DAEMON_LOOP - fax_document=', fax_document.id, '/', fax_document.uuid, ', number: ' .. fax_document.destination_numbers[1]);
+ local result = api:executeString('luarun send_fax.lua ' .. fax_document.id);
+ end
+ end
+ end
+ database:release();
+
+ if freeswitch.getGlobalVariable("gs_fax_daemon") == 'true' then
+ freeswitch.msleep(MAIN_LOOP_SLEEP_TIME * 1000);
+ end
+end
+
+log:debug('Exiting fax daemon');