mirror of https://github.com/sipwise/db-schema.git
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
162 lines
4.9 KiB
162 lines
4.9 KiB
CREATE TABLE `kamailio`.`gw` (
|
|
`id` int(10) unsigned NOT NULL AUTO_INCREMENT,
|
|
`lcr_id` smallint(5) unsigned NOT NULL,
|
|
`gw_name` varchar(128) NOT NULL,
|
|
`grp_id` int(10) unsigned NOT NULL,
|
|
`ip_addr` varchar(15) NOT NULL,
|
|
`hostname` varchar(64) DEFAULT NULL,
|
|
`port` smallint(5) unsigned DEFAULT NULL,
|
|
`uri_scheme` tinyint(3) unsigned DEFAULT NULL,
|
|
`transport` tinyint(3) unsigned DEFAULT NULL,
|
|
`strip` tinyint(3) unsigned DEFAULT NULL,
|
|
`tag` varchar(16) DEFAULT NULL,
|
|
`weight` int(10) unsigned DEFAULT NULL,
|
|
`flags` int(10) unsigned NOT NULL DEFAULT '0',
|
|
`defunct` int(10) unsigned DEFAULT NULL,
|
|
PRIMARY KEY (`id`),
|
|
UNIQUE KEY `lcr_id_grp_id_gw_name_idx` (`lcr_id`,`grp_id`,`gw_name`),
|
|
UNIQUE KEY `lcr_id_grp_id_ip_addr_idx` (`lcr_id`,`grp_id`,`ip_addr`)
|
|
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
|
|
|
|
CREATE TABLE `kamailio`.`lcr` (
|
|
`id` int(10) unsigned NOT NULL AUTO_INCREMENT,
|
|
`lcr_id` smallint(5) unsigned NOT NULL,
|
|
`prefix` varchar(16) DEFAULT NULL,
|
|
`from_uri` varchar(64) DEFAULT NULL,
|
|
`grp_id` int(10) unsigned NOT NULL,
|
|
`priority` tinyint(3) unsigned NOT NULL,
|
|
PRIMARY KEY (`id`),
|
|
KEY `lcr_id_idx` (`lcr_id`)
|
|
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
|
|
|
|
USE provisioning;
|
|
|
|
DROP trigger voip_prul_crepl_trig;
|
|
DROP trigger voip_prul_urepl_trig;
|
|
DROP trigger voip_prul_drepl_trig;
|
|
DROP trigger voip_pgrp_urepl_trig;
|
|
DROP trigger voip_pgrp_drepl_trig;
|
|
DROP trigger voip_phost_crepl_trig;
|
|
DROP trigger voip_phost_urepl_trig;
|
|
DROP trigger voip_phost_drepl_trig;
|
|
|
|
DELIMITER |
|
|
|
|
CREATE TRIGGER voip_prul_crepl_trig AFTER INSERT ON voip_peer_rules
|
|
FOR EACH ROW BEGIN
|
|
DECLARE prio int(11) unsigned;
|
|
|
|
SELECT priority INTO prio FROM voip_peer_groups
|
|
WHERE id = NEW.group_id;
|
|
|
|
INSERT INTO kamailio.lcr (lcr_id, prefix, from_uri, grp_id, priority)
|
|
VALUES(1, NEW.callee_prefix, IF(LENGTH(NEW.caller_prefix), CONCAT('^', NEW.caller_prefix), ''), NEW.group_id, prio);
|
|
|
|
END;
|
|
|
|
|
|
|
CREATE TRIGGER voip_prul_urepl_trig AFTER UPDATE ON voip_peer_rules
|
|
FOR EACH ROW BEGIN
|
|
DECLARE prio int(11) unsigned;
|
|
|
|
SELECT priority INTO prio FROM voip_peer_groups
|
|
WHERE id = NEW.group_id;
|
|
|
|
UPDATE kamailio.lcr SET prefix = NEW.callee_prefix,
|
|
from_uri = IF(LENGTH(NEW.caller_prefix), CONCAT('^', NEW.caller_prefix), '')
|
|
WHERE grp_id = OLD.group_id
|
|
AND prefix = OLD.callee_prefix
|
|
AND from_uri = IF(LENGTH(OLD.caller_prefix), CONCAT('^', OLD.caller_prefix), '')
|
|
AND priority = prio;
|
|
|
|
END;
|
|
|
|
|
|
|
CREATE TRIGGER voip_pgrp_urepl_trig AFTER UPDATE ON voip_peer_groups
|
|
FOR EACH ROW BEGIN
|
|
|
|
UPDATE kamailio.lcr SET priority = NEW.priority
|
|
WHERE grp_id = NEW.id;
|
|
|
|
END;
|
|
|
|
|
|
|
CREATE TRIGGER voip_prul_drepl_trig AFTER DELETE ON voip_peer_rules
|
|
FOR EACH ROW BEGIN
|
|
DECLARE prio int(11) unsigned;
|
|
|
|
SELECT priority INTO prio FROM voip_peer_groups
|
|
WHERE id = OLD.group_id;
|
|
|
|
DELETE FROM kamailio.lcr
|
|
WHERE grp_id = OLD.group_id AND
|
|
prefix = OLD.callee_prefix AND
|
|
from_uri = IF(LENGTH(OLD.caller_prefix), CONCAT('^', OLD.caller_prefix), '') AND
|
|
priority = prio;
|
|
|
|
END;
|
|
|
|
|
|
|
CREATE TRIGGER voip_pgrp_drepl_trig AFTER DELETE ON voip_peer_groups
|
|
FOR EACH ROW BEGIN
|
|
|
|
DELETE FROM kamailio.lcr WHERE grp_id = OLD.id;
|
|
DELETE FROM kamailio.gw WHERE grp_id = OLD.id;
|
|
|
|
END;
|
|
|
|
|
|
|
CREATE TRIGGER voip_phost_crepl_trig AFTER INSERT ON voip_peer_hosts
|
|
FOR EACH ROW BEGIN
|
|
|
|
INSERT INTO kamailio.gw (lcr_id, gw_name, grp_id, ip_addr, port, weight,
|
|
uri_scheme, transport, strip, tag, flags, defunct) VALUES
|
|
(1, NEW.name, NEW.group_id, NEW.ip, NEW.port, NEW.weight,
|
|
1, 1, 0, NULL, NEW.id, NULL);
|
|
|
|
END;
|
|
|
|
|
|
|
CREATE TRIGGER voip_phost_urepl_trig AFTER UPDATE ON voip_peer_hosts
|
|
FOR EACH ROW BEGIN
|
|
|
|
UPDATE kamailio.gw SET gw_name = NEW.name,
|
|
ip_addr = NEW.ip, port = NEW.port, weight = NEW.weight, tag = NULL
|
|
WHERE grp_id = OLD.group_id AND gw_name = OLD.name AND
|
|
ip_addr = OLD.ip AND port = OLD.port AND weight = OLD.weight;
|
|
|
|
END;
|
|
|
|
|
|
|
CREATE TRIGGER voip_phost_drepl_trig AFTER DELETE ON voip_peer_hosts
|
|
FOR EACH ROW BEGIN
|
|
|
|
DELETE FROM kamailio.gw
|
|
WHERE grp_id = OLD.group_id AND gw_name = OLD.name AND
|
|
ip_addr = OLD.ip AND port = OLD.port AND weight = OLD.weight;
|
|
DELETE FROM kamailio.dialplan
|
|
WHERE dpid IN (OLD.dp_caller_in_id, OLD.dp_callee_in_id,
|
|
OLD.dp_caller_out_id, OLD.dp_callee_out_id);
|
|
|
|
END;
|
|
|
|
|
|
|
DELIMITER ;
|
|
|
|
USE kamailio;
|
|
|
|
INSERT INTO gw (lcr_id, gw_name, grp_id, ip_addr, port, weight,
|
|
uri_scheme, transport, strip, flags)
|
|
SELECT 1, name, group_id, ip, port, weight, 1, 1, 0, id
|
|
FROM provisioning.voip_peer_hosts;
|
|
|
|
INSERT INTO lcr (lcr_id, prefix, from_uri, grp_id, priority)
|
|
SELECT 1, callee_prefix, IF(LENGTH(caller_prefix), CONCAT('^', caller_prefix), ''), group_id, priority
|
|
FROM provisioning.voip_peer_rules vph
|
|
INNER JOIN provisioning.voip_peer_groups vpg ON vpg.id = vph.group_id;
|
|
|
|
DROP table lcr_rule_target;
|
|
DROP table lcr_rule;
|
|
DROP table lcr_gw;
|
|
|