Merge branch 'master' of https://github.com/fusionpbx/fusionpbx
This commit is contained in:
commit
30dd29fbd5
|
|
@ -126,6 +126,9 @@ if ($domains_processed == 1) {
|
|||
$config = $_SESSION['switch']['scripts']['dir']."/resources/config.lua";
|
||||
}
|
||||
$fout = fopen($config,"w");
|
||||
if(!$fout){
|
||||
throw new Exception("Failed to open '$config' for writing");
|
||||
}
|
||||
$tmp = "\n";
|
||||
$tmp .= "--set the variables\n";
|
||||
if (strlen($_SESSION['switch']['sounds']['dir']) > 0) {
|
||||
|
|
|
|||
|
|
@ -78,23 +78,10 @@ if (!if_group("superadmin")) {
|
|||
echo "</table>\n";
|
||||
echo "</form>\n";
|
||||
|
||||
echo "<form name='frm' method='post' action='/core/install/install_add_switch.php'>\n";
|
||||
echo "<table width='100%' border='0' cellpadding='0' cellspacing='0'>\n";
|
||||
echo "<tr>\n";
|
||||
echo " <td width='30%' class='vncell'>\n";
|
||||
echo " <input id='do_add-switch' type='submit' class='btn' value='".$text['label-add-switch']."'/>";
|
||||
echo " </td>\n";
|
||||
echo " <td width='70%' class='vtable' style='height: 50px;'>\n";
|
||||
echo " <label for='do_add-switch'>";
|
||||
echo " ".$text['description-add-switch'];
|
||||
echo " </label>\n";
|
||||
echo " </td>\n";
|
||||
echo "</tr>\n";
|
||||
echo "</table>\n";
|
||||
echo "</form>\n";
|
||||
|
||||
echo "<br><br>";
|
||||
|
||||
echo "<p>WiP</p>";
|
||||
|
||||
//include the footer
|
||||
require_once "resources/footer.php";
|
||||
?>
|
||||
|
|
@ -63,7 +63,7 @@ if (is_link('/etc/localtime')) {
|
|||
// Ubuntu / Debian.
|
||||
$data = file_get_contents('/etc/timezone');
|
||||
if ($data) {
|
||||
$timezone = $data;
|
||||
$timezone = rtrim($data);
|
||||
}
|
||||
} elseif (file_exists('/etc/sysconfig/clock')) {
|
||||
// RHEL / CentOS
|
||||
|
|
@ -221,6 +221,9 @@ if(!$install_step) { $install_step = 'select_language'; }
|
|||
echo " </div>\n";
|
||||
echo "</form>\n";
|
||||
}elseif($install_step == 'detect_config'){
|
||||
if(!($event_host == '' || $event_host == 'localhost' || $event_host == '::1' || $event_host == '127.0.0.1' )){
|
||||
echo "<p><b>Warning</b> you have choosen a value other than localhost for event_host, this is unsoported at present</p>\n";
|
||||
}
|
||||
include "resources/page_parts/install_event_socket.php";
|
||||
if($detect_ok){
|
||||
echo "<form method='post' name='frm' action=''>\n";
|
||||
|
|
@ -235,6 +238,12 @@ if(!$install_step) { $install_step = 'select_language'; }
|
|||
echo " <button type='submit' id='next'>".$text['button-next']."</button>\n";
|
||||
echo " </div>\n";
|
||||
echo "</form>\n";
|
||||
}else{
|
||||
echo "<form method='post' name='frm' action=''>\n";
|
||||
echo " <div style='text-align:right'>\n";
|
||||
echo " <button type='button' onclick=\"history.go(-1);\">".$text['button-back']."</button>\n";
|
||||
echo " </div>\n";
|
||||
echo "</form>\n";
|
||||
}
|
||||
}
|
||||
elseif($install_step == 'config_detail'){
|
||||
|
|
@ -284,7 +293,6 @@ if(!$install_step) { $install_step = 'select_language'; }
|
|||
require_once "resources/classes/install_fusionpbx.php";
|
||||
$fusionPBX = new install_fusionpbx($domain_name, null, $switch_detect);
|
||||
$domain_uuid = $fusionPBX->domain_uuid();
|
||||
//$fusionPBX->debug = true;
|
||||
$fusionPBX->admin_username = $admin_username;
|
||||
$fusionPBX->admin_password = $admin_password;
|
||||
$fusionPBX->default_country = $install_default_country;
|
||||
|
|
@ -295,12 +303,15 @@ if(!$install_step) { $install_step = 'select_language'; }
|
|||
$fusionPBX->$key = $value;
|
||||
}
|
||||
}
|
||||
$fusionPBX->install();
|
||||
|
||||
require_once "resources/classes/install_switch.php";
|
||||
$switch = new install_switch($domain_name, $domain_uuid, $switch_detect);
|
||||
//$switch->debug = true;
|
||||
//$fusionPBX->debug = true;
|
||||
$fusionPBX->install();
|
||||
$switch->install();
|
||||
$fusionPBX->app_defaults();
|
||||
$switch_detect->restart_switch();
|
||||
}catch(Exception $e){
|
||||
echo "</pre>\n";
|
||||
echo "<p><b>Failed to install</b><br/>" . $e->getMessage() . "</p>\n";
|
||||
|
|
|
|||
|
|
@ -94,7 +94,6 @@ include "root.php";
|
|||
$this->create_superuser();
|
||||
require "resources/require.php";
|
||||
$this->create_menus();
|
||||
$this->app_defaults();
|
||||
}
|
||||
|
||||
protected function create_config_php() {
|
||||
|
|
@ -976,7 +975,7 @@ include "root.php";
|
|||
}
|
||||
}
|
||||
|
||||
protected function app_defaults() {
|
||||
public function app_defaults() {
|
||||
$this->write_progress("Running app_defaults");
|
||||
|
||||
//set needed session settings
|
||||
|
|
@ -984,7 +983,10 @@ include "root.php";
|
|||
$_SESSION["domain_uuid"] = $this->_domain_uuid;
|
||||
require $this->config_php;
|
||||
require "resources/require.php";
|
||||
|
||||
$_SESSION['event_socket_ip_address'] = $this->detect_switch->event_host;
|
||||
$_SESSION['event_socket_port'] = $this->detect_switch->event_port;
|
||||
$_SESSION['event_socket_password'] = $this->detect_switch->event_password;
|
||||
|
||||
//get the groups assigned to the user and then set the groups in $_SESSION["groups"]
|
||||
$sql = "SELECT * FROM v_group_users ";
|
||||
$sql .= "where domain_uuid=:domain_uuid ";
|
||||
|
|
@ -1016,10 +1018,6 @@ include "root.php";
|
|||
$_SESSION['permissions'] = $prep_statementsub->fetchAll(PDO::FETCH_NAMED);
|
||||
unset($sql, $prep_statementsub);
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
require_once "resources/classes/schema.php";
|
||||
global $db, $db_type, $db_name, $db_username, $db_password, $db_host, $db_path, $db_port;
|
||||
|
||||
|
|
|
|||
|
|
@ -35,9 +35,16 @@ include "root.php";
|
|||
public $debug = false;
|
||||
|
||||
function __construct($domain_name, $domain_uuid, $detect_switch) {
|
||||
//if(!is_a($detect_switch, 'detect_switch')){
|
||||
// throw new Exception('The parameter $detect_switch must be a detect_switch object (or a subclass of)');
|
||||
//}
|
||||
if($detect_switch == null){
|
||||
if(strlen($_SESSION['event_socket_ip_address']) == 0 or strlen($_SESSION['event_socket_port']) == 0 or strlen($_SESSION['event_socket_password']) == 0 ){
|
||||
throw new Exception('The parameter $detect_switch was empty and i could not find the event socket details from the session');
|
||||
}
|
||||
$detect_switch = new detect_switch($_SESSION['event_socket_ip_address'], $_SESSION['event_socket_port'], $_SESSION['event_socket_password']);
|
||||
$domain_name = $_SESSION['domain_name'];
|
||||
$domain_uuid = $_SESSION['domain_uuid'];
|
||||
}elseif(!is_a($detect_switch, 'detect_switch')){
|
||||
throw new Exception('The parameter $detect_switch must be a detect_switch object (or a subclass of)');
|
||||
}
|
||||
$this->domain_uuid = $domain_uuid;
|
||||
$this->domain = $domain_name;
|
||||
$this->detect_switch = $detect_switch;
|
||||
|
|
@ -169,9 +176,6 @@ include "root.php";
|
|||
function install() {
|
||||
$this->copy_conf();
|
||||
$this->copy_scripts();
|
||||
//tell freeswitch to restart
|
||||
$this->write_progress("Restarting switch");
|
||||
$this->detect_switch->restart_switch();
|
||||
}
|
||||
|
||||
function upgrade() {
|
||||
|
|
|
|||
|
|
@ -31,7 +31,7 @@
|
|||
echo "<input type='hidden' name='install_step' value='execute'/>\n";
|
||||
|
||||
echo "<input type='hidden' name='event_host' value='$event_host'/>\n";
|
||||
echo "<input type='hidden' name='event_port' value='$event_host'/>\n";
|
||||
echo "<input type='hidden' name='event_port' value='$event_port'/>\n";
|
||||
echo "<input type='hidden' name='event_password' value='$event_password'/>\n";
|
||||
echo "<input type='hidden' name='db_type' value='$db_type'/>\n";
|
||||
echo "<input type='hidden' name='admin_username' value='$admin_username'/>\n";
|
||||
|
|
|
|||
|
|
@ -31,7 +31,7 @@
|
|||
echo "<input type='hidden' name='install_step' value='config_database'/>\n";
|
||||
|
||||
echo "<input type='hidden' name='event_host' value='$event_host'/>\n";
|
||||
echo "<input type='hidden' name='event_port' value='$event_host'/>\n";
|
||||
echo "<input type='hidden' name='event_port' value='$event_port'/>\n";
|
||||
echo "<input type='hidden' name='event_password' value='$event_password'/>\n";
|
||||
|
||||
echo "<table width='100%' border='0' cellpadding='0' cellspacing='0'>\n";
|
||||
|
|
|
|||
|
|
@ -31,10 +31,10 @@
|
|||
try {
|
||||
$switch_detect->detect();
|
||||
} catch(Exception $e){
|
||||
$messages[] = "Failed to detect confgiuration detect_switch reported: " . $e->getMessage();
|
||||
echo "<p><b>Failed to detect configuration</b> detect_switch reported: " . $e->getMessage() ."</p>\n";
|
||||
$detect_ok = false;
|
||||
}
|
||||
echo "<form method='post' name='frm' action=''>\n";
|
||||
echo "<form method='post' name='detect_switch' action=''>\n";
|
||||
echo "<input type='hidden' name='install_language' value='".$_SESSION['domain']['language']['code']."'/>\n";
|
||||
echo "<input type='hidden' name='install_step' value='detect_config'/>\n";
|
||||
echo "<table width='100%' border='0' cellpadding='0' cellspacing='0'>\n";
|
||||
|
|
|
|||
|
|
@ -26,17 +26,6 @@
|
|||
|
||||
|
||||
if ($domains_processed == 1) {
|
||||
//process if the scripts directory exists
|
||||
if (strlen($_SESSION['switch']['scripts']['dir']) > 0) {
|
||||
//if the resource scripts resource directory does not exist then create it
|
||||
if (!is_dir($_SESSION['switch']['scripts']['dir']."/resources")) {
|
||||
mkdir($_SESSION['switch']['scripts']['dir']."/resources",0755,true);
|
||||
}
|
||||
|
||||
//copy the files and directories from resources/install
|
||||
$obj = new install_switch;
|
||||
$obj->upgrade();
|
||||
}
|
||||
|
||||
//update the software table
|
||||
$sql = "select count(*) as num_rows from v_software ";
|
||||
|
|
|
|||
|
|
@ -67,7 +67,10 @@
|
|||
$obj = new schema;
|
||||
echo $obj->schema("text");
|
||||
|
||||
//run all app_defaults.php files
|
||||
//request the switch to perform upgrade functions
|
||||
$obj = new install_switch;
|
||||
$obj->upgrade();
|
||||
|
||||
require_once "resources/classes/domains.php";
|
||||
$domain = new domains;
|
||||
$domain->upgrade();
|
||||
|
|
|
|||
|
|
@ -23,6 +23,12 @@
|
|||
-- ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
|
||||
-- POSSIBILITY OF SUCH DAMAGE.
|
||||
|
||||
local send_mail = require 'resources.functions.send_mail'
|
||||
|
||||
local function T(str)
|
||||
return text[str][default_language..'-'..default_dialect] or text[str]['en-us']
|
||||
end
|
||||
|
||||
--define a function to send email
|
||||
function send_email(id, uuid)
|
||||
--get voicemail message details
|
||||
|
|
@ -103,10 +109,12 @@
|
|||
end
|
||||
|
||||
--prepare the headers
|
||||
headers = '{"X-FusionPBX-Domain-UUID":"'..domain_uuid..'",';
|
||||
headers = headers..'"X-FusionPBX-Domain-Name":"'..domain_name..'",';
|
||||
headers = headers..'"X-FusionPBX-Call-UUID":"'..uuid..'",';
|
||||
headers = headers..'"X-FusionPBX-Email-Type":"voicemail"}';
|
||||
local headers = {
|
||||
["X-FusionPBX-Domain-UUID"] = domain_uuid;
|
||||
["X-FusionPBX-Domain-Name"] = domain_name;
|
||||
["X-FusionPBX-Call-UUID"] = uuid;
|
||||
["X-FusionPBX-Email-Type"] = 'voicemail';
|
||||
}
|
||||
|
||||
--prepare the subject
|
||||
local f = io.open(file_subject, "r");
|
||||
|
|
@ -134,11 +142,11 @@
|
|||
body = body:gsub("${sip_to_user}", id);
|
||||
body = body:gsub("${dialed_user}", id);
|
||||
if (voicemail_file == "attach") then
|
||||
body = body:gsub("${message}", text['label-attached'][default_language.."-"..default_dialect]);
|
||||
body = body:gsub("${message}", T'label-attached');
|
||||
elseif (voicemail_file == "link") then
|
||||
body = body:gsub("${message}", "<a href='https://"..domain_name.."/app/voicemails/voicemail_messages.php?action=download&type=vm&t=bin&id="..id.."&voicemail_uuid="..db_voicemail_uuid.."&uuid="..uuid.."&src=email'>"..text['label-download'][default_language.."-"..default_dialect].."</a>");
|
||||
body = body:gsub("${message}", "<a href='https://"..domain_name.."/app/voicemails/voicemail_messages.php?action=download&type=vm&t=bin&id="..id.."&voicemail_uuid="..db_voicemail_uuid.."&uuid="..uuid.."&src=email'>"..T'label-download'.."</a>");
|
||||
else
|
||||
body = body:gsub("${message}", "<a href='https://"..domain_name.."/app/voicemails/voicemail_messages.php?action=autoplay&id="..db_voicemail_uuid.."&uuid="..uuid.."'>"..text['label-listen'][default_language.."-"..default_dialect].."</a>");
|
||||
body = body:gsub("${message}", "<a href='https://"..domain_name.."/app/voicemails/voicemail_messages.php?action=autoplay&id="..db_voicemail_uuid.."&uuid="..uuid.."'>"..T'label-listen'.."</a>");
|
||||
end
|
||||
body = body:gsub(" ", " ");
|
||||
body = body:gsub("%s+", "");
|
||||
|
|
@ -147,22 +155,15 @@
|
|||
body = body:gsub("\n", "");
|
||||
body = trim(body);
|
||||
|
||||
--send the email
|
||||
--prepare file
|
||||
file = voicemail_dir.."/"..id.."/msg_"..uuid.."."..vm_message_ext;
|
||||
if (voicemail_file == "attach") then
|
||||
freeswitch.email("",
|
||||
"",
|
||||
"To: "..voicemail_mail_to.."\nFrom: "..voicemail_mail_to.."\nX-Headers: "..headers.."\nSubject: "..subject,
|
||||
body,
|
||||
file
|
||||
);
|
||||
else
|
||||
freeswitch.email("",
|
||||
"",
|
||||
"To: "..voicemail_mail_to.."\nFrom: "..voicemail_mail_to.."\nX-Headers: "..headers.."\nSubject: "..subject,
|
||||
body
|
||||
);
|
||||
end
|
||||
|
||||
--send the email
|
||||
send_mail(headers,
|
||||
voicemail_mail_to,
|
||||
{subject, body},
|
||||
(voicemail_file == "attach") and file
|
||||
);
|
||||
end
|
||||
|
||||
--whether to keep the voicemail message and details local after email
|
||||
|
|
|
|||
|
|
@ -132,6 +132,12 @@ local function check()
|
|||
end
|
||||
|
||||
local function task()
|
||||
local session_uuid = session:getVariable('uuid')
|
||||
|
||||
session:setVariable('fax_queue_task_session', session_uuid)
|
||||
|
||||
log.infof("SESSION UUID: %s", session_uuid)
|
||||
|
||||
session:waitForAnswer(session)
|
||||
|
||||
while not session:answered() do
|
||||
|
|
|
|||
|
|
@ -28,10 +28,6 @@ local function next_task()
|
|||
local esl
|
||||
local ok, err = pcall(function()
|
||||
|
||||
for k, v in pairs(task) do
|
||||
print(string.format(" `%s` => `%s`", tostring(k), tostring(v)))
|
||||
end
|
||||
|
||||
local mode = (task.retry_counter % #FAX_OPTIONS) + 1
|
||||
local dial_string = '{' ..
|
||||
task.dial_string .. "api_hangup_hook='lua fax_queue/retry.lua'," ..
|
||||
|
|
@ -42,8 +38,16 @@ local function next_task()
|
|||
|
||||
log.notice(originate)
|
||||
esl = assert(Esl.new())
|
||||
local ok, err = esl:api(originate)
|
||||
log.notice(ok or err)
|
||||
local ok, status, info = esl:api(originate)
|
||||
if not ok then
|
||||
Tasks.wait_task(task, false, info)
|
||||
if task.status ~= 0 then
|
||||
Tasks.remove_task(task)
|
||||
end
|
||||
log.noticef('Can not originate to `%s` cause: %s: %s ', task.uri, tostring(status), tostring(info))
|
||||
else
|
||||
log.noticef("originate successfuly: %s", tostring(info))
|
||||
end
|
||||
end)
|
||||
|
||||
if esl then esl:close() end
|
||||
|
|
|
|||
|
|
@ -10,7 +10,7 @@
|
|||
local Tasks = require "fax_queue.tasks"
|
||||
|
||||
local fax_task_uuid = env:getHeader('fax_task_uuid')
|
||||
local task = Tasks.select_task(fax_task_uuid)
|
||||
local task = Tasks.select_task(fax_task_uuid)
|
||||
if not task then
|
||||
log.warningf("Can not find fax task: %q", tostring(fax_task_uuid))
|
||||
return
|
||||
|
|
@ -25,6 +25,7 @@
|
|||
|
||||
-- Channel/FusionPBX variables
|
||||
local uuid = env:getHeader("uuid")
|
||||
local fax_queue_task_session = env:getHeader('fax_queue_task_session')
|
||||
local domain_uuid = env:getHeader("domain_uuid") or task.domain_uuid
|
||||
local domain_name = env:getHeader("domain_name") or task.domain_name
|
||||
local origination_caller_id_name = env:getHeader("origination_caller_id_name") or '000000000000000'
|
||||
|
|
@ -76,6 +77,7 @@
|
|||
|
||||
log.noticef([[<<< CALL RESULT >>>
|
||||
uuid: = '%s'
|
||||
task_session_uuid: = '%s'
|
||||
answered: = '%s'
|
||||
fax_file: = '%s'
|
||||
wav_file: = '%s'
|
||||
|
|
@ -90,6 +92,7 @@
|
|||
fax_options = '%s'
|
||||
]],
|
||||
tostring(uuid) ,
|
||||
tostring(fax_queue_task_session) ,
|
||||
tostring(answered) ,
|
||||
tostring(fax_file) ,
|
||||
tostring(wav_file) ,
|
||||
|
|
@ -338,9 +341,15 @@
|
|||
end
|
||||
end
|
||||
|
||||
Tasks.wait_task(task, answered, hangup_cause_q850)
|
||||
if task.status ~= 0 then
|
||||
Tasks.remove_task(task)
|
||||
-- if task use group call then retry.lua will be called multiple times
|
||||
-- here we check eathre that channel which execute `exec.lua`
|
||||
-- Note that if there no one execute `exec.lua` we do not need call this
|
||||
-- becase it should deal in `next.lua`
|
||||
if fax_queue_task_session == uuid then
|
||||
Tasks.wait_task(task, answered, hangup_cause_q850)
|
||||
if task.status ~= 0 then
|
||||
Tasks.remove_task(task)
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
|
|
|
|||
|
|
@ -103,6 +103,14 @@ local remove_finished_tasks_sql = [[
|
|||
delete from v_fax_tasks where task_status > 3
|
||||
]]
|
||||
|
||||
local function serialize(task, header)
|
||||
local str = header or ''
|
||||
for k, v in pairs(task) do
|
||||
str = str .. ('\n %q = %q'):format(tostring(k), tostring(v))
|
||||
end
|
||||
return str
|
||||
end
|
||||
|
||||
local function get_db()
|
||||
if not db then
|
||||
db = assert(Database.new('system'))
|
||||
|
|
|
|||
|
|
@ -117,7 +117,11 @@ function EventSocket:api(cmd)
|
|||
local event, err = self:_request('api ' .. cmd)
|
||||
if not event then return nil, err end
|
||||
local body = event:getBody()
|
||||
if body then return body end
|
||||
if body then
|
||||
local ok, status, msg = split_status(body)
|
||||
if ok == nil then return body end
|
||||
return ok, status, msg
|
||||
end
|
||||
return event:getReply()
|
||||
end
|
||||
|
||||
|
|
@ -134,6 +138,13 @@ if freeswitch then
|
|||
|
||||
local api
|
||||
|
||||
-- [+-][OK|ERR|USAGE|...][Message]
|
||||
local function split_status(str)
|
||||
local ok, status, msg = string.match(str, "^%s*([-+])([^%s]+)%s*(.-)%s*$")
|
||||
if not ok then return nil, str end
|
||||
return ok == '+', status, msg
|
||||
end
|
||||
|
||||
function EventSocket:__init()
|
||||
self._api = api or freeswitch.API()
|
||||
api = self._api
|
||||
|
|
@ -142,10 +153,9 @@ end
|
|||
|
||||
function EventSocket:api(cmd)
|
||||
local result = self._api:executeString(cmd)
|
||||
if result and result:sub(1, 4) == '-ERR' then
|
||||
return nil, result:sub(5)
|
||||
end
|
||||
return result
|
||||
local ok, status, msg = split_status(result)
|
||||
if ok == nil then return result end
|
||||
return ok, status, msg
|
||||
end
|
||||
|
||||
function EventSocket:close()
|
||||
|
|
|
|||
|
|
@ -0,0 +1,107 @@
|
|||
|
||||
local send_mail
|
||||
|
||||
if not freeswitch then
|
||||
local Settings = require "resources.functions.lazy_settings"
|
||||
local Database = require "resources.functions.database"
|
||||
local log = require "resources.functions.log".sendmail
|
||||
local sendmail = require "sendmail"
|
||||
local uuid = require "uuid"
|
||||
|
||||
function send_mail(headers, address, message, file)
|
||||
local domain_uuid = headers["X-FusionPBX-Domain-UUID"]
|
||||
local domain_name = headers["X-FusionPBX-Domain-Name"]
|
||||
local email_type = headers["X-FusionPBX-Email-Type"] or 'info'
|
||||
local call_uuid = headers["X-FusionPBX-Email-Type"]
|
||||
local db = dbh or Database.new('system')
|
||||
local settings = Settings.new(db, domain_name, domain_uuid)
|
||||
|
||||
local ssl = settings:get('email', 'smtp_secure', 'var');
|
||||
|
||||
local ok, err = sendmail{
|
||||
server = {
|
||||
address = settings:get('email','smtp_host','var');
|
||||
user = settings:get('email','smtp_username','var');
|
||||
password = settings:get('email','smtp_password','var');
|
||||
ssl = (ssl == 'true') and { verify = {"none"} };
|
||||
},
|
||||
|
||||
from = {
|
||||
title = settings:get('email', 'smtp_from_name', 'var');
|
||||
address = settings:get('email', 'smtp_from', 'var');
|
||||
},
|
||||
|
||||
to = {
|
||||
address = address;
|
||||
},
|
||||
|
||||
message = message;
|
||||
file = file;
|
||||
}
|
||||
|
||||
if not ok then
|
||||
log.warningf("Mailer Error: %s", err)
|
||||
|
||||
local email_uuid = uuid.new()
|
||||
local sql = "insert into v_emails ( "
|
||||
sql = sql .. "email_uuid, "
|
||||
if call_uuid then sql = sql .. "call_uuid, " end
|
||||
sql = sql .. "domain_uuid, "
|
||||
sql = sql .. "sent_date, "
|
||||
sql = sql .. "type, "
|
||||
sql = sql .. "status, "
|
||||
sql = sql .. "email "
|
||||
sql = sql .. ") values ( "
|
||||
sql = sql .. "'" .. email_uuid .. "', "
|
||||
if call_uuid then sql = sql .. "'" .. call_uuid .. "', " end
|
||||
sql = sql .. "'" .. domain_uuid .. "', "
|
||||
sql = sql .. "now(),"
|
||||
sql = sql .. "'" .. email_type .. "', "
|
||||
sql = sql .. "'failed', "
|
||||
sql = sql .. "'' "
|
||||
sql = sql .. ") "
|
||||
|
||||
db:query(sql)
|
||||
|
||||
log.infof("Retained in v_emails as email_uuid = %s", email_uuid)
|
||||
else
|
||||
log.infof("Mail to %s sent!", address)
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
if freeswitch then
|
||||
function send_mail(headers, address, message, file)
|
||||
local xheaders = "{"
|
||||
for k,v in pairs(headers) do
|
||||
xheaders = xheaders .. ('"%s":"%s",'):format(k, v)
|
||||
end
|
||||
xheaders = xheaders:sub(1,-2) .. '}'
|
||||
|
||||
local subject = message[1]
|
||||
local body = message[2] or ''
|
||||
|
||||
local mail_headers =
|
||||
"To: " .. address .. "\n" ..
|
||||
"From: " .. address .. "\n" ..
|
||||
"Subject: " .. subject .. "\n" ..
|
||||
"X-Headers: " .. xheaders
|
||||
|
||||
if file then
|
||||
freeswitch.email(address, address, mail_headers, body, file)
|
||||
else
|
||||
freeswitch.email(address, address, mail_headers, body, file)
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
return send_mail
|
||||
|
||||
-- local headers = {
|
||||
-- ["X-FusionPBX-Domain-UUID"] = '2d171c4c-b237-49ca-9d76-9cffc1618fa7';
|
||||
-- ["X-FusionPBX-Domain-Name"] = 'domain.com';
|
||||
-- ["X-FusionPBX-Email-Type"] = 'voicemail';
|
||||
-- }
|
||||
-- send_mail(headers, 'alexey@domain.com', {'hello', 'world'})
|
||||
|
||||
|
||||
|
|
@ -1267,10 +1267,24 @@ if (!function_exists('switch_conf_xml')) {
|
|||
|
||||
//prepare the php variables
|
||||
if (stristr(PHP_OS, 'WIN')) {
|
||||
$bindir = getenv(PHPRC);
|
||||
$v_mailer_app ='""'. $bindir."/php". '" -f '.$_SERVER["DOCUMENT_ROOT"].PROJECT_PATH.'/secure/v_mailto.php -- "';
|
||||
$v_mailer_app = sprintf("'%s'", $v_mailer_app);
|
||||
$bindir = find_php_by_extension();
|
||||
if(!$bindir)
|
||||
$bindir = getenv(PHPRC);
|
||||
|
||||
$secure_path = path_join($_SERVER["DOCUMENT_ROOT"], PROJECT_PATH, 'secure');
|
||||
|
||||
$v_mail_bat = path_join($secure_path, 'v_mailto.bat');
|
||||
$v_mail_cmd = '@' .
|
||||
'"' . str_replace('/', '\\', path_join($bindir, 'php.exe')) . '" ' .
|
||||
'"' . str_replace('/', '\\', path_join($secure_path, 'v_mailto.php')) . '" ';
|
||||
|
||||
$fout = fopen($v_mail_bat, "w+");
|
||||
fwrite($fout, $v_mail_cmd);
|
||||
fclose($fout);
|
||||
|
||||
$v_mailer_app = '"' . str_replace('/', '\\', $v_mail_bat) . '"';
|
||||
$v_mailer_app_args = "";
|
||||
unset($v_mail_bat, $v_mail_cmd, $secure_path, $bindir, $fout);
|
||||
}
|
||||
else {
|
||||
if (file_exists(PHP_BINDIR.'/php')) { define("PHP_BIN", "php"); }
|
||||
|
|
@ -1453,4 +1467,50 @@ if (!function_exists('save_switch_xml')) {
|
|||
}
|
||||
}
|
||||
|
||||
if(!function_exists('path_join')) {
|
||||
function path_join() {
|
||||
$args = func_get_args();
|
||||
$paths = array();
|
||||
foreach ($args as $arg) {
|
||||
$paths = array_merge($paths, (array)$arg);
|
||||
}
|
||||
|
||||
$prefix = null;
|
||||
foreach($paths as &$path) {
|
||||
if($prefix === null && strlen($path) > 0) {
|
||||
if(substr($path, 0, 1) == '/') $prefix = '/';
|
||||
else $prefix = '';
|
||||
}
|
||||
$path = trim( $path, '/' );
|
||||
}
|
||||
|
||||
if($prefix === null){
|
||||
return '';
|
||||
}
|
||||
|
||||
$paths = array_filter($paths);
|
||||
|
||||
return $prefix . join('/', $paths);
|
||||
}
|
||||
}
|
||||
|
||||
if(!function_exists('find_php_by_extension')) {
|
||||
/*Tesetd on WAMP and OpenServer*/
|
||||
function find_php_by_extension(){
|
||||
$bin_dir = get_cfg_var('extension_dir');
|
||||
|
||||
while($bin_dir){
|
||||
$bin_dir = dirname($bin_dir);
|
||||
$php_bin = path_join($bin_dir, 'php.exe');
|
||||
if(file_exists($php_bin))
|
||||
break;
|
||||
}
|
||||
|
||||
if(!$bin_dir)
|
||||
return false;
|
||||
|
||||
return $bin_dir;
|
||||
}
|
||||
}
|
||||
|
||||
?>
|
||||
|
|
|
|||
|
|
@ -126,6 +126,6 @@ directory_url: "http://{$domain_name}/app/provision/?file=directory.php"
|
|||
# URL for branding logo
|
||||
#logo_url: "http://{$domain_name}/app/provision/logo.bmp"
|
||||
|
||||
# Remote Party ID 0-Disabled (default), 1-Enabled
|
||||
remote_party_id: 1
|
||||
# Remote Party ID
|
||||
remote_party_id: 1 ; 0-Disabled (default), 1-Enabled
|
||||
|
||||
|
|
|
|||
|
|
@ -31,7 +31,7 @@
|
|||
<remote_reboot>1</remote_reboot>
|
||||
<checkpeercert>0</checkpeercert>
|
||||
<sipkeepalive>1</sipkeepalive>
|
||||
<rss_feed></rss_feed>
|
||||
<rss_feed>http://rss.news.yahoo.com/rss/topstories</rss_feed>
|
||||
<host_ip>135.199.77.12</host_ip>
|
||||
<video_ip>135.199.77.12</video_ip>
|
||||
<sntp>128.138.141.172</sntp>
|
||||
|
|
|
|||
|
|
@ -31,7 +31,7 @@
|
|||
<remote_reboot>1</remote_reboot>
|
||||
<checkpeercert>0</checkpeercert>
|
||||
<sipkeepalive>1</sipkeepalive>
|
||||
<rss_feed></rss_feed>
|
||||
<rss_feed>http://rss.news.yahoo.com/rss/topstories</rss_feed>
|
||||
<host_ip>135.199.77.12</host_ip>
|
||||
<video_ip>135.199.77.12</video_ip>
|
||||
<sntp>128.138.141.172</sntp>
|
||||
|
|
|
|||
Loading…
Reference in New Issue