summaryrefslogtreecommitdiff
path: root/misc/freeswitch/scripts/fax_daemon.lua
blob: 6609fe66bdf7102352e2571d3455207256a7f7a2 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
-- Gemeinschaft 5.0 fax daemon
-- (c) AMOOMA GmbH 2012-2013
-- 

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');