MT#64115 add voip_peer_hosts.site_id

* site_id contains site id the peering server belongs to,
  can be NULL, in which case it's considered global (default state)

Change-Id: I8f6757e809cfc0a705b92577cf396574f0e9cb7f
master
Kirill Solomko 3 months ago committed by Sipwise Jenkins Builder
parent 46f1c7b07b
commit ae4fbd9082

@ -0,0 +1,125 @@
USE provisioning;
SET autocommit=0;
DROP TRIGGER IF EXISTS voip_phost_crepl_trig;
DELIMITER ;;
/*!50003 CREATE*/ /*!50017 DEFINER=`sipwise`@`localhost`*/ /*!50003 TRIGGER voip_phost_crepl_trig AFTER INSERT ON voip_peer_hosts
FOR EACH ROW BEGIN
DECLARE m_proto CHAR(4);
IF NEW.transport = 2 THEN
SET m_proto := 'TCP';
ELSEIF NEW.transport = 3 THEN
SET m_proto := 'TLS';
ELSE
SET m_proto := 'UDP';
END IF;
INSERT INTO voip_peer_preferences (peer_host_id, attribute_id, value)
SELECT NEW.id, p.id, pe.value
FROM voip_preferences p, voip_preferences_enum pe
WHERE p.id <=> preference_id AND p.peer_pref=1 AND pe.peer_pref=1 AND pe.default_val=1 AND pe.value IS NOT NULL;
IF NEW.enabled THEN
INSERT INTO kamailio.lcr_gw (id, lcr_id, gw_name, ip_addr, hostname, port, uri_scheme, transport, strip, group_id)
VALUES(NEW.id, 1, NEW.name, NEW.ip, NEW.host, NEW.port, 1, NEW.transport, 0, NEW.group_id);
INSERT INTO kamailio.lcr_rule_target (lcr_id, rule_id, gw_id, priority, weight)
SELECT rule.lcr_id, rule.id, NEW.id, vpg.priority, NEW.weight
FROM kamailio.lcr_rule rule
INNER JOIN provisioning.voip_peer_groups vpg ON vpg.id = rule.group_id
WHERE vpg.id <=> NEW.group_id;
IF NEW.probe = 1 THEN
INSERT INTO kamailio.dispatcher (setid, destination, flags, priority, attrs, description)
VALUES(100, CONCAT('sip:', NEW.ip, ':', NEW.port, ';transport=', m_proto), 8, 0, CONCAT('peerid=', NEW.id, ';peername="', NEW.name, '";peergid=', NEW.group_id, ';'), 'Peer Probe');
END IF;
END IF;
END */;;
DELIMITER ;
DROP TRIGGER IF EXISTS voip_phost_urepl_trig;
DELIMITER ;;
/*!50003 CREATE*/ /*!50017 DEFINER=`sipwise`@`localhost`*/ /*!50003 TRIGGER voip_phost_urepl_trig AFTER UPDATE ON voip_peer_hosts
FOR EACH ROW BEGIN
DECLARE m_proto CHAR(4);
DECLARE m_probechange INTEGER;
IF NEW.transport = 2 THEN
SET m_proto := 'TCP';
ELSEIF NEW.transport = 3 THEN
SET m_proto := 'TLS';
ELSE
SET m_proto := 'UDP';
END IF;
IF OLD.enabled = 1 AND NEW.enabled = 1 THEN
UPDATE kamailio.lcr_gw
SET gw_name = NEW.name, ip_addr = NEW.ip, hostname = NEW.host, port = NEW.port, transport = NEW.transport
WHERE lcr_id = 1
AND id <=> NEW.id;
UPDATE kamailio.lcr_rule_target rt
JOIN kamailio.lcr_gw as gw ON gw.id = rt.gw_id
SET rt.weight = NEW.weight
WHERE gw.id <=> NEW.id
AND gw.id <=> rt.gw_id
AND gw.lcr_id = 1
AND gw.group_id <=> NEW.group_id;
IF OLD.probe = 1 AND (OLD.ip != NEW.ip OR OLD.port != NEW.port OR OLD.transport != NEW.transport OR OLD.name != NEW.name OR OLD.group_id != NEW.group_id) THEN
DELETE FROM kamailio.dispatcher WHERE attrs LIKE CONCAT('%peerid=', OLD.id, ';%');
SET m_probechange := 1;
ELSEIF OLD.probe = 1 and NEW.probe = 0 THEN
DELETE FROM kamailio.dispatcher WHERE attrs LIKE CONCAT('%peerid=', OLD.id, ';%');
END IF;
IF NEW.probe = 1 AND (m_probechange = 1 OR OLD.probe = 0) THEN
INSERT INTO kamailio.dispatcher (setid, destination, flags, priority, attrs, description)
VALUES(100, CONCAT('sip:', NEW.ip, ':', NEW.port, ';transport=', m_proto), 8, 0, CONCAT('peerid=', NEW.id, ';peername="', NEW.name, '";peergid=', NEW.group_id, ';'), 'Peer Probe');
END IF;
ELSEIF OLD.enabled = 0 AND NEW.enabled = 1 THEN
INSERT INTO kamailio.lcr_gw (id, lcr_id, gw_name, ip_addr, hostname, port, uri_scheme, transport, strip, group_id)
VALUES(NEW.id, 1, NEW.name, NEW.ip, NEW.host, NEW.port, 1, NEW.transport, 0, NEW.group_id);
INSERT INTO kamailio.lcr_rule_target (lcr_id, rule_id, gw_id, priority, weight)
SELECT rule.lcr_id, rule.id, NEW.id, vpg.priority, NEW.weight
FROM kamailio.lcr_rule rule
INNER JOIN provisioning.voip_peer_groups vpg ON vpg.id = rule.group_id
WHERE vpg.id <=> NEW.group_id;
IF NEW.probe = 1 THEN
INSERT INTO kamailio.dispatcher (setid, destination, flags, priority, attrs, description)
VALUES(100, CONCAT('sip:', NEW.ip, ':', NEW.port, ';transport=', m_proto), 8, 0, CONCAT('peerid=', NEW.id, ';peername="', NEW.name, '";peergid=', NEW.group_id, ';'), 'Peer Probe');
END IF;
ELSEIF OLD.enabled = 1 AND NEW.enabled = 0 THEN
DELETE FROM kamailio.lcr_gw
WHERE lcr_id = 1
AND id <=> NEW.id;
IF OLD.probe = 1 THEN
DELETE FROM kamailio.dispatcher WHERE attrs LIKE CONCAT('%peerid=', NEW.id, ';%');
END IF;
END IF;
END */;;
DELIMITER ;
ALTER TABLE voip_peer_hosts
DROP COLUMN `site_id`;
COMMIT;

@ -0,0 +1,140 @@
USE provisioning;
SET autocommit=0;
ALTER TABLE voip_peer_hosts
ADD COLUMN `site_id` int(2) unsigned DEFAULT NULL,
ADD KEY site_id_idx(`site_id`);
DROP TRIGGER IF EXISTS voip_phost_crepl_trig;
DELIMITER ;;
/*!50003 CREATE*/ /*!50017 DEFINER=`sipwise`@`localhost`*/ /*!50003 TRIGGER voip_phost_crepl_trig AFTER INSERT ON voip_peer_hosts
FOR EACH ROW BEGIN
DECLARE m_proto CHAR(4);
IF NEW.transport = 2 THEN
SET m_proto := 'TCP';
ELSEIF NEW.transport = 3 THEN
SET m_proto := 'TLS';
ELSE
SET m_proto := 'UDP';
END IF;
INSERT INTO voip_peer_preferences (peer_host_id, attribute_id, value)
SELECT NEW.id, p.id, pe.value
FROM voip_preferences p, voip_preferences_enum pe
WHERE p.id <=> preference_id AND p.peer_pref=1 AND pe.peer_pref=1 AND pe.default_val=1 AND pe.value IS NOT NULL;
IF NEW.enabled THEN
INSERT INTO kamailio.lcr_gw (id, lcr_id, gw_name, ip_addr, hostname, port, uri_scheme, transport, strip, group_id)
VALUES(NEW.id, 1, NEW.name, NEW.ip, NEW.host, NEW.port, 1, NEW.transport, 0, NEW.group_id);
INSERT INTO kamailio.lcr_rule_target (lcr_id, rule_id, gw_id, priority, weight)
SELECT rule.lcr_id, rule.id, NEW.id, vpg.priority, NEW.weight
FROM kamailio.lcr_rule rule
INNER JOIN provisioning.voip_peer_groups vpg ON vpg.id = rule.group_id
WHERE vpg.id <=> NEW.group_id;
IF NEW.probe = 1 THEN
IF NEW.site_id IS NOT NULL THEN
INSERT INTO kamailio.dispatcher (setid, destination, flags, priority, attrs, description)
VALUES(100, CONCAT('sip:', NEW.ip, ':', NEW.port, ';transport=', m_proto), 8, 0, CONCAT('peerid=', NEW.id, ';peername="', NEW.name, '";peergid=', NEW.group_id, ';site_id=', NEW.site_id, ';'), 'Peer Probe');
ELSE
INSERT INTO kamailio.dispatcher (setid, destination, flags, priority, attrs, description)
VALUES(100, CONCAT('sip:', NEW.ip, ':', NEW.port, ';transport=', m_proto), 8, 0, CONCAT('peerid=', NEW.id, ';peername="', NEW.name, '";peergid=', NEW.group_id, ';'), 'Peer Probe');
END IF;
END IF;
END IF;
END */;;
DELIMITER ;
DROP TRIGGER IF EXISTS voip_phost_urepl_trig;
DELIMITER ;;
/*!50003 CREATE*/ /*!50017 DEFINER=`sipwise`@`localhost`*/ /*!50003 TRIGGER voip_phost_urepl_trig AFTER UPDATE ON voip_peer_hosts
FOR EACH ROW BEGIN
DECLARE m_proto CHAR(4);
DECLARE m_probechange INTEGER;
IF NEW.transport = 2 THEN
SET m_proto := 'TCP';
ELSEIF NEW.transport = 3 THEN
SET m_proto := 'TLS';
ELSE
SET m_proto := 'UDP';
END IF;
IF OLD.enabled = 1 AND NEW.enabled = 1 THEN
UPDATE kamailio.lcr_gw
SET gw_name = NEW.name, ip_addr = NEW.ip, hostname = NEW.host, port = NEW.port, transport = NEW.transport
WHERE lcr_id = 1
AND id <=> NEW.id;
UPDATE kamailio.lcr_rule_target rt
JOIN kamailio.lcr_gw as gw ON gw.id = rt.gw_id
SET rt.weight = NEW.weight
WHERE gw.id <=> NEW.id
AND gw.id <=> rt.gw_id
AND gw.lcr_id = 1
AND gw.group_id <=> NEW.group_id;
IF OLD.probe = 1 AND (OLD.ip != NEW.ip OR OLD.port != NEW.port OR OLD.transport != NEW.transport OR OLD.name != NEW.name OR OLD.group_id != NEW.group_id OR OLD.site_id != NEW.site_id) THEN
DELETE FROM kamailio.dispatcher WHERE attrs LIKE CONCAT('%peerid=', OLD.id, ';%');
SET m_probechange := 1;
ELSEIF OLD.probe = 1 and NEW.probe = 0 THEN
DELETE FROM kamailio.dispatcher WHERE attrs LIKE CONCAT('%peerid=', OLD.id, ';%');
END IF;
IF NEW.probe = 1 AND (m_probechange = 1 OR OLD.probe = 0) THEN
IF NEW.site_id IS NOT NULL THEN
INSERT INTO kamailio.dispatcher (setid, destination, flags, priority, attrs, description)
VALUES(100, CONCAT('sip:', NEW.ip, ':', NEW.port, ';transport=', m_proto), 8, 0, CONCAT('peerid=', NEW.id, ';peername="', NEW.name, '";peergid=', NEW.group_id, ';site_id=', NEW.site_id, ';'), 'Peer Probe');
ELSE
INSERT INTO kamailio.dispatcher (setid, destination, flags, priority, attrs, description)
VALUES(100, CONCAT('sip:', NEW.ip, ':', NEW.port, ';transport=', m_proto), 8, 0, CONCAT('peerid=', NEW.id, ';peername="', NEW.name, '";peergid=', NEW.group_id, ';'), 'Peer Probe');
END IF;
END IF;
ELSEIF OLD.enabled = 0 AND NEW.enabled = 1 THEN
INSERT INTO kamailio.lcr_gw (id, lcr_id, gw_name, ip_addr, hostname, port, uri_scheme, transport, strip, group_id)
VALUES(NEW.id, 1, NEW.name, NEW.ip, NEW.host, NEW.port, 1, NEW.transport, 0, NEW.group_id);
INSERT INTO kamailio.lcr_rule_target (lcr_id, rule_id, gw_id, priority, weight)
SELECT rule.lcr_id, rule.id, NEW.id, vpg.priority, NEW.weight
FROM kamailio.lcr_rule rule
INNER JOIN provisioning.voip_peer_groups vpg ON vpg.id = rule.group_id
WHERE vpg.id <=> NEW.group_id;
IF NEW.probe = 1 THEN
IF NEW.site_id IS NOT NULL THEN
INSERT INTO kamailio.dispatcher (setid, destination, flags, priority, attrs, description)
VALUES(100, CONCAT('sip:', NEW.ip, ':', NEW.port, ';transport=', m_proto), 8, 0, CONCAT('peerid=', NEW.id, ';peername="', NEW.name, '";peergid=', NEW.group_id, ';site_id=', NEW.site_id, ';'), 'Peer Probe');
ELSE
INSERT INTO kamailio.dispatcher (setid, destination, flags, priority, attrs, description)
VALUES(100, CONCAT('sip:', NEW.ip, ':', NEW.port, ';transport=', m_proto), 8, 0, CONCAT('peerid=', NEW.id, ';peername="', NEW.name, '";peergid=', NEW.group_id, ';'), 'Peer Probe');
END IF;
END IF;
ELSEIF OLD.enabled = 1 AND NEW.enabled = 0 THEN
DELETE FROM kamailio.lcr_gw
WHERE lcr_id = 1
AND id <=> NEW.id;
IF OLD.probe = 1 THEN
DELETE FROM kamailio.dispatcher WHERE attrs LIKE CONCAT('%peerid=', NEW.id, ';%');
END IF;
END IF;
END */;;
DELIMITER ;
COMMIT;

@ -25,7 +25,7 @@ CREATE TABLE `db_schema` (
PRIMARY KEY (`id`),
UNIQUE KEY `rev_idx` (`revision`,`node`,`site_id`),
KEY `release_idx` (`release`)
) ENGINE=InnoDB AUTO_INCREMENT=919 DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_general_ci;
) ENGINE=InnoDB AUTO_INCREMENT=920 DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_general_ci;
/*!40101 SET character_set_client = @saved_cs_client */;
/*!40101 SET @saved_cs_client = @@character_set_client */;
/*!40101 SET character_set_client = utf8mb4 */;
@ -30970,6 +30970,7 @@ INSERT INTO `db_schema` VALUES (915,15870,'spce','1970-01-01 00:00:01','trunk',1
INSERT INTO `db_schema` VALUES (916,15871,'spce','1970-01-01 00:00:01','trunk',1);
INSERT INTO `db_schema` VALUES (917,15872,'spce','1970-01-01 00:00:01','trunk',1);
INSERT INTO `db_schema` VALUES (918,15873,'spce','1970-01-01 00:00:01','trunk',1);
INSERT INTO `db_schema` VALUES (919,15874,'spce','1970-01-01 00:00:01','trunk',1);
commit;
set autocommit=0;
INSERT INTO `timezone` VALUES ('1','localtime','1970-01-01 00:00:01','1970-01-01 00:00:01',NULL);

@ -4716,6 +4716,18 @@
"TABLE_NAME" : "voip_peer_hosts",
"key_col" : "voip_peer_hosts/probe"
},
"voip_peer_hosts/site_id" : {
"CHARACTER_SET_NAME" : null,
"COLLATION_NAME" : null,
"COLUMN_DEFAULT" : "NULL",
"COLUMN_NAME" : "site_id",
"COLUMN_TYPE" : "int(2) unsigned",
"EXTRA" : "",
"IS_NULLABLE" : "YES",
"ORDINAL_POSITION" : 13,
"TABLE_NAME" : "voip_peer_hosts",
"key_col" : "voip_peer_hosts/site_id"
},
"voip_peer_hosts/transport" : {
"CHARACTER_SET_NAME" : null,
"COLLATION_NAME" : null,
@ -11842,6 +11854,18 @@
"TABLE_NAME" : "voip_peer_hosts",
"key_col" : "voip_peer_hosts/grpname/2"
},
"voip_peer_hosts/site_id_idx/1" : {
"COLLATION" : "A",
"COLUMN_NAME" : "site_id",
"INDEX_NAME" : "site_id_idx",
"INDEX_TYPE" : "BTREE",
"NON_UNIQUE" : 1,
"NULLABLE" : "YES",
"SEQ_IN_INDEX" : 1,
"SUB_PART" : null,
"TABLE_NAME" : "voip_peer_hosts",
"key_col" : "voip_peer_hosts/site_id_idx/1"
},
"voip_peer_inbound_rules/PRIMARY/1" : {
"COLLATION" : "A",
"COLUMN_NAME" : "id",
@ -14380,7 +14404,7 @@
"key_col" : "voip_pgrp_urepl_trig/voip_peer_groups"
},
"voip_phost_crepl_trig/voip_peer_hosts" : {
"ACTION_STATEMENT" : "BEGIN\n\n DECLARE m_proto CHAR(4);\n IF NEW.transport = 2 THEN\n SET m_proto := 'TCP';\n ELSEIF NEW.transport = 3 THEN\n SET m_proto := 'TLS';\n ELSE\n SET m_proto := 'UDP';\n END IF;\n\n INSERT INTO voip_peer_preferences (peer_host_id, attribute_id, value)\n SELECT NEW.id, p.id, pe.value\n FROM voip_preferences p, voip_preferences_enum pe\n WHERE p.id <=> preference_id AND p.peer_pref=1 AND pe.peer_pref=1 AND pe.default_val=1 AND pe.value IS NOT NULL;\n\n IF NEW.enabled THEN\n INSERT INTO kamailio.lcr_gw (id, lcr_id, gw_name, ip_addr, hostname, port, uri_scheme, transport, strip, group_id)\n VALUES(NEW.id, 1, NEW.name, NEW.ip, NEW.host, NEW.port, 1, NEW.transport, 0, NEW.group_id);\n\n INSERT INTO kamailio.lcr_rule_target (lcr_id, rule_id, gw_id, priority, weight)\n SELECT rule.lcr_id, rule.id, NEW.id, vpg.priority, NEW.weight\n FROM kamailio.lcr_rule rule\n INNER JOIN provisioning.voip_peer_groups vpg ON vpg.id = rule.group_id\n WHERE vpg.id <=> NEW.group_id;\n\n IF NEW.probe = 1 THEN\n INSERT INTO kamailio.dispatcher (setid, destination, flags, priority, attrs, description)\n VALUES(100, CONCAT('sip:', NEW.ip, ':', NEW.port, ';transport=', m_proto), 8, 0, CONCAT('peerid=', NEW.id, ';peername=\"', NEW.name, '\";peergid=', NEW.group_id, ';'), 'Peer Probe');\n END IF;\n\n END IF;\n\n\n END",
"ACTION_STATEMENT" : "BEGIN\n\n DECLARE m_proto CHAR(4);\n IF NEW.transport = 2 THEN\n SET m_proto := 'TCP';\n ELSEIF NEW.transport = 3 THEN\n SET m_proto := 'TLS';\n ELSE\n SET m_proto := 'UDP';\n END IF;\n\n INSERT INTO voip_peer_preferences (peer_host_id, attribute_id, value)\n SELECT NEW.id, p.id, pe.value\n FROM voip_preferences p, voip_preferences_enum pe\n WHERE p.id <=> preference_id AND p.peer_pref=1 AND pe.peer_pref=1 AND pe.default_val=1 AND pe.value IS NOT NULL;\n\n IF NEW.enabled THEN\n INSERT INTO kamailio.lcr_gw (id, lcr_id, gw_name, ip_addr, hostname, port, uri_scheme, transport, strip, group_id)\n VALUES(NEW.id, 1, NEW.name, NEW.ip, NEW.host, NEW.port, 1, NEW.transport, 0, NEW.group_id);\n\n INSERT INTO kamailio.lcr_rule_target (lcr_id, rule_id, gw_id, priority, weight)\n SELECT rule.lcr_id, rule.id, NEW.id, vpg.priority, NEW.weight\n FROM kamailio.lcr_rule rule\n INNER JOIN provisioning.voip_peer_groups vpg ON vpg.id = rule.group_id\n WHERE vpg.id <=> NEW.group_id;\n\n IF NEW.probe = 1 THEN\n IF NEW.site_id IS NOT NULL THEN\n INSERT INTO kamailio.dispatcher (setid, destination, flags, priority, attrs, description)\n VALUES(100, CONCAT('sip:', NEW.ip, ':', NEW.port, ';transport=', m_proto), 8, 0, CONCAT('peerid=', NEW.id, ';peername=\"', NEW.name, '\";peergid=', NEW.group_id, ';site_id=', NEW.site_id, ';'), 'Peer Probe');\n ELSE\n INSERT INTO kamailio.dispatcher (setid, destination, flags, priority, attrs, description)\n VALUES(100, CONCAT('sip:', NEW.ip, ':', NEW.port, ';transport=', m_proto), 8, 0, CONCAT('peerid=', NEW.id, ';peername=\"', NEW.name, '\";peergid=', NEW.group_id, ';'), 'Peer Probe');\n END IF;\n END IF;\n\n END IF;\n\n\n END",
"ACTION_TIMING" : "AFTER",
"EVENT_MANIPULATION" : "INSERT",
"EVENT_OBJECT_SCHEMA" : "provisioning",
@ -14398,7 +14422,7 @@
"key_col" : "voip_phost_drepl_trig/voip_peer_hosts"
},
"voip_phost_urepl_trig/voip_peer_hosts" : {
"ACTION_STATEMENT" : "BEGIN\n\n DECLARE m_proto CHAR(4);\n DECLARE m_probechange INTEGER;\n\n IF NEW.transport = 2 THEN\n SET m_proto := 'TCP';\n ELSEIF NEW.transport = 3 THEN\n SET m_proto := 'TLS';\n ELSE\n SET m_proto := 'UDP';\n END IF;\n\n IF OLD.enabled = 1 AND NEW.enabled = 1 THEN\n\n UPDATE kamailio.lcr_gw\n SET gw_name = NEW.name, ip_addr = NEW.ip, hostname = NEW.host, port = NEW.port, transport = NEW.transport\n WHERE lcr_id = 1\n AND id <=> NEW.id;\n\n UPDATE kamailio.lcr_rule_target rt\n JOIN kamailio.lcr_gw as gw ON gw.id = rt.gw_id\n SET rt.weight = NEW.weight\n WHERE gw.id <=> NEW.id\n AND gw.id <=> rt.gw_id\n AND gw.lcr_id = 1\n AND gw.group_id <=> NEW.group_id;\n\n IF OLD.probe = 1 AND (OLD.ip != NEW.ip OR OLD.port != NEW.port OR OLD.transport != NEW.transport OR OLD.name != NEW.name OR OLD.group_id != NEW.group_id) THEN\n DELETE FROM kamailio.dispatcher WHERE attrs LIKE CONCAT('%peerid=', OLD.id, ';%');\n SET m_probechange := 1;\n ELSEIF OLD.probe = 1 and NEW.probe = 0 THEN\n DELETE FROM kamailio.dispatcher WHERE attrs LIKE CONCAT('%peerid=', OLD.id, ';%');\n END IF;\n IF NEW.probe = 1 AND (m_probechange = 1 OR OLD.probe = 0) THEN\n INSERT INTO kamailio.dispatcher (setid, destination, flags, priority, attrs, description)\n VALUES(100, CONCAT('sip:', NEW.ip, ':', NEW.port, ';transport=', m_proto), 8, 0, CONCAT('peerid=', NEW.id, ';peername=\"', NEW.name, '\";peergid=', NEW.group_id, ';'), 'Peer Probe');\n END IF;\n\n ELSEIF OLD.enabled = 0 AND NEW.enabled = 1 THEN\n\n INSERT INTO kamailio.lcr_gw (id, lcr_id, gw_name, ip_addr, hostname, port, uri_scheme, transport, strip, group_id)\n VALUES(NEW.id, 1, NEW.name, NEW.ip, NEW.host, NEW.port, 1, NEW.transport, 0, NEW.group_id);\n\n INSERT INTO kamailio.lcr_rule_target (lcr_id, rule_id, gw_id, priority, weight)\n SELECT rule.lcr_id, rule.id, NEW.id, vpg.priority, NEW.weight\n FROM kamailio.lcr_rule rule\n INNER JOIN provisioning.voip_peer_groups vpg ON vpg.id = rule.group_id\n WHERE vpg.id <=> NEW.group_id;\n\n IF NEW.probe = 1 THEN\n INSERT INTO kamailio.dispatcher (setid, destination, flags, priority, attrs, description)\n VALUES(100, CONCAT('sip:', NEW.ip, ':', NEW.port, ';transport=', m_proto), 8, 0, CONCAT('peerid=', NEW.id, ';peername=\"', NEW.name, '\";peergid=', NEW.group_id, ';'), 'Peer Probe');\n END IF;\n\n ELSEIF OLD.enabled = 1 AND NEW.enabled = 0 THEN\n\n DELETE FROM kamailio.lcr_gw\n WHERE lcr_id = 1\n AND id <=> NEW.id;\n\n IF OLD.probe = 1 THEN\n DELETE FROM kamailio.dispatcher WHERE attrs LIKE CONCAT('%peerid=', NEW.id, ';%');\n END IF;\n\n END IF;\n\n\n END",
"ACTION_STATEMENT" : "BEGIN\n\n DECLARE m_proto CHAR(4);\n DECLARE m_probechange INTEGER;\n\n IF NEW.transport = 2 THEN\n SET m_proto := 'TCP';\n ELSEIF NEW.transport = 3 THEN\n SET m_proto := 'TLS';\n ELSE\n SET m_proto := 'UDP';\n END IF;\n\n IF OLD.enabled = 1 AND NEW.enabled = 1 THEN\n\n UPDATE kamailio.lcr_gw\n SET gw_name = NEW.name, ip_addr = NEW.ip, hostname = NEW.host, port = NEW.port, transport = NEW.transport\n WHERE lcr_id = 1\n AND id <=> NEW.id;\n\n UPDATE kamailio.lcr_rule_target rt\n JOIN kamailio.lcr_gw as gw ON gw.id = rt.gw_id\n SET rt.weight = NEW.weight\n WHERE gw.id <=> NEW.id\n AND gw.id <=> rt.gw_id\n AND gw.lcr_id = 1\n AND gw.group_id <=> NEW.group_id;\n\n IF OLD.probe = 1 AND (OLD.ip != NEW.ip OR OLD.port != NEW.port OR OLD.transport != NEW.transport OR OLD.name != NEW.name OR OLD.group_id != NEW.group_id OR OLD.site_id != NEW.site_id) THEN\n DELETE FROM kamailio.dispatcher WHERE attrs LIKE CONCAT('%peerid=', OLD.id, ';%');\n SET m_probechange := 1;\n ELSEIF OLD.probe = 1 and NEW.probe = 0 THEN\n DELETE FROM kamailio.dispatcher WHERE attrs LIKE CONCAT('%peerid=', OLD.id, ';%');\n END IF;\n IF NEW.probe = 1 AND (m_probechange = 1 OR OLD.probe = 0) THEN\n IF NEW.site_id IS NOT NULL THEN\n INSERT INTO kamailio.dispatcher (setid, destination, flags, priority, attrs, description)\n VALUES(100, CONCAT('sip:', NEW.ip, ':', NEW.port, ';transport=', m_proto), 8, 0, CONCAT('peerid=', NEW.id, ';peername=\"', NEW.name, '\";peergid=', NEW.group_id, ';site_id=', NEW.site_id, ';'), 'Peer Probe');\n ELSE\n INSERT INTO kamailio.dispatcher (setid, destination, flags, priority, attrs, description)\n VALUES(100, CONCAT('sip:', NEW.ip, ':', NEW.port, ';transport=', m_proto), 8, 0, CONCAT('peerid=', NEW.id, ';peername=\"', NEW.name, '\";peergid=', NEW.group_id, ';'), 'Peer Probe');\n END IF;\n END IF;\n\n ELSEIF OLD.enabled = 0 AND NEW.enabled = 1 THEN\n\n INSERT INTO kamailio.lcr_gw (id, lcr_id, gw_name, ip_addr, hostname, port, uri_scheme, transport, strip, group_id)\n VALUES(NEW.id, 1, NEW.name, NEW.ip, NEW.host, NEW.port, 1, NEW.transport, 0, NEW.group_id);\n\n INSERT INTO kamailio.lcr_rule_target (lcr_id, rule_id, gw_id, priority, weight)\n SELECT rule.lcr_id, rule.id, NEW.id, vpg.priority, NEW.weight\n FROM kamailio.lcr_rule rule\n INNER JOIN provisioning.voip_peer_groups vpg ON vpg.id = rule.group_id\n WHERE vpg.id <=> NEW.group_id;\n\n IF NEW.probe = 1 THEN\n IF NEW.site_id IS NOT NULL THEN\n INSERT INTO kamailio.dispatcher (setid, destination, flags, priority, attrs, description)\n VALUES(100, CONCAT('sip:', NEW.ip, ':', NEW.port, ';transport=', m_proto), 8, 0, CONCAT('peerid=', NEW.id, ';peername=\"', NEW.name, '\";peergid=', NEW.group_id, ';site_id=', NEW.site_id, ';'), 'Peer Probe');\n ELSE\n INSERT INTO kamailio.dispatcher (setid, destination, flags, priority, attrs, description)\n VALUES(100, CONCAT('sip:', NEW.ip, ':', NEW.port, ';transport=', m_proto), 8, 0, CONCAT('peerid=', NEW.id, ';peername=\"', NEW.name, '\";peergid=', NEW.group_id, ';'), 'Peer Probe');\n END IF;\n END IF;\n\n ELSEIF OLD.enabled = 1 AND NEW.enabled = 0 THEN\n\n DELETE FROM kamailio.lcr_gw\n WHERE lcr_id = 1\n AND id <=> NEW.id;\n\n IF OLD.probe = 1 THEN\n DELETE FROM kamailio.dispatcher WHERE attrs LIKE CONCAT('%peerid=', NEW.id, ';%');\n END IF;\n\n END IF;\n\n\n END",
"ACTION_TIMING" : "AFTER",
"EVENT_MANIPULATION" : "UPDATE",
"EVENT_OBJECT_SCHEMA" : "provisioning",

@ -1071,9 +1071,11 @@ CREATE TABLE `voip_peer_hosts` (
`via_lb` tinyint(1) NOT NULL DEFAULT 0,
`enabled` tinyint(1) NOT NULL DEFAULT 1,
`probe` tinyint(1) NOT NULL DEFAULT 0,
`site_id` int(2) unsigned DEFAULT NULL,
PRIMARY KEY (`id`),
UNIQUE KEY `grpname` (`group_id`,`name`),
KEY `grpidx` (`group_id`),
KEY `site_id_idx` (`site_id`),
CONSTRAINT `v_ps_groupid_ref` FOREIGN KEY (`group_id`) REFERENCES `voip_peer_groups` (`id`) ON DELETE CASCADE ON UPDATE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_general_ci;
/*!40101 SET character_set_client = @saved_cs_client */;
@ -5453,8 +5455,13 @@ DELIMITER ;;
WHERE vpg.id <=> NEW.group_id;
IF NEW.probe = 1 THEN
INSERT INTO kamailio.dispatcher (setid, destination, flags, priority, attrs, description)
VALUES(100, CONCAT('sip:', NEW.ip, ':', NEW.port, ';transport=', m_proto), 8, 0, CONCAT('peerid=', NEW.id, ';peername="', NEW.name, '";peergid=', NEW.group_id, ';'), 'Peer Probe');
IF NEW.site_id IS NOT NULL THEN
INSERT INTO kamailio.dispatcher (setid, destination, flags, priority, attrs, description)
VALUES(100, CONCAT('sip:', NEW.ip, ':', NEW.port, ';transport=', m_proto), 8, 0, CONCAT('peerid=', NEW.id, ';peername="', NEW.name, '";peergid=', NEW.group_id, ';site_id=', NEW.site_id, ';'), 'Peer Probe');
ELSE
INSERT INTO kamailio.dispatcher (setid, destination, flags, priority, attrs, description)
VALUES(100, CONCAT('sip:', NEW.ip, ':', NEW.port, ';transport=', m_proto), 8, 0, CONCAT('peerid=', NEW.id, ';peername="', NEW.name, '";peergid=', NEW.group_id, ';'), 'Peer Probe');
END IF;
END IF;
END IF;
@ -5504,15 +5511,20 @@ DELIMITER ;;
AND gw.lcr_id = 1
AND gw.group_id <=> NEW.group_id;
IF OLD.probe = 1 AND (OLD.ip != NEW.ip OR OLD.port != NEW.port OR OLD.transport != NEW.transport OR OLD.name != NEW.name OR OLD.group_id != NEW.group_id) THEN
IF OLD.probe = 1 AND (OLD.ip != NEW.ip OR OLD.port != NEW.port OR OLD.transport != NEW.transport OR OLD.name != NEW.name OR OLD.group_id != NEW.group_id OR OLD.site_id != NEW.site_id) THEN
DELETE FROM kamailio.dispatcher WHERE attrs LIKE CONCAT('%peerid=', OLD.id, ';%');
SET m_probechange := 1;
ELSEIF OLD.probe = 1 and NEW.probe = 0 THEN
DELETE FROM kamailio.dispatcher WHERE attrs LIKE CONCAT('%peerid=', OLD.id, ';%');
END IF;
IF NEW.probe = 1 AND (m_probechange = 1 OR OLD.probe = 0) THEN
INSERT INTO kamailio.dispatcher (setid, destination, flags, priority, attrs, description)
VALUES(100, CONCAT('sip:', NEW.ip, ':', NEW.port, ';transport=', m_proto), 8, 0, CONCAT('peerid=', NEW.id, ';peername="', NEW.name, '";peergid=', NEW.group_id, ';'), 'Peer Probe');
IF NEW.site_id IS NOT NULL THEN
INSERT INTO kamailio.dispatcher (setid, destination, flags, priority, attrs, description)
VALUES(100, CONCAT('sip:', NEW.ip, ':', NEW.port, ';transport=', m_proto), 8, 0, CONCAT('peerid=', NEW.id, ';peername="', NEW.name, '";peergid=', NEW.group_id, ';site_id=', NEW.site_id, ';'), 'Peer Probe');
ELSE
INSERT INTO kamailio.dispatcher (setid, destination, flags, priority, attrs, description)
VALUES(100, CONCAT('sip:', NEW.ip, ':', NEW.port, ';transport=', m_proto), 8, 0, CONCAT('peerid=', NEW.id, ';peername="', NEW.name, '";peergid=', NEW.group_id, ';'), 'Peer Probe');
END IF;
END IF;
ELSEIF OLD.enabled = 0 AND NEW.enabled = 1 THEN
@ -5527,8 +5539,13 @@ DELIMITER ;;
WHERE vpg.id <=> NEW.group_id;
IF NEW.probe = 1 THEN
INSERT INTO kamailio.dispatcher (setid, destination, flags, priority, attrs, description)
VALUES(100, CONCAT('sip:', NEW.ip, ':', NEW.port, ';transport=', m_proto), 8, 0, CONCAT('peerid=', NEW.id, ';peername="', NEW.name, '";peergid=', NEW.group_id, ';'), 'Peer Probe');
IF NEW.site_id IS NOT NULL THEN
INSERT INTO kamailio.dispatcher (setid, destination, flags, priority, attrs, description)
VALUES(100, CONCAT('sip:', NEW.ip, ':', NEW.port, ';transport=', m_proto), 8, 0, CONCAT('peerid=', NEW.id, ';peername="', NEW.name, '";peergid=', NEW.group_id, ';site_id=', NEW.site_id, ';'), 'Peer Probe');
ELSE
INSERT INTO kamailio.dispatcher (setid, destination, flags, priority, attrs, description)
VALUES(100, CONCAT('sip:', NEW.ip, ':', NEW.port, ';transport=', m_proto), 8, 0, CONCAT('peerid=', NEW.id, ';peername="', NEW.name, '";peergid=', NEW.group_id, ';'), 'Peer Probe');
END IF;
END IF;
ELSEIF OLD.enabled = 1 AND NEW.enabled = 0 THEN

Loading…
Cancel
Save