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.
 
 

123 lines
4.6 KiB

#!/bin/sh
sql_db_pre_setup() {
cat << EOF
PRAGMA foreign_keys=OFF;
PRAGMA wal=on;
PRAGMA journal_mode=WAL;
PRAGMA wal_autocheckpoint=25;
BEGIN TRANSACTION;
EOF
}
sql_setup() {
DB_KAZOO_LOCATION=${2:-${DB_KAZOO_LOCATION:-/etc/kazoo/kamailio/db}}
mkdir -p ${DB_KAZOO_LOCATION}
KazooDB -db ${DB_KAZOO_LOCATION}/kazoo.db < $1 > /dev/null
}
sql_header() {
cat << EOF
EOF
}
sql_extra_tables() {
cat << EOF
CREATE TABLE active_watchers_log (
id INTEGER PRIMARY KEY NOT NULL,
presentity_uri VARCHAR(128) NOT NULL COLLATE NOCASE,
watcher_username VARCHAR(64) NOT NULL COLLATE NOCASE,
watcher_domain VARCHAR(64) NOT NULL COLLATE NOCASE,
to_user VARCHAR(64) NOT NULL COLLATE NOCASE,
to_domain VARCHAR(64) NOT NULL COLLATE NOCASE,
event VARCHAR(64) DEFAULT 'presence' NOT NULL,
callid VARCHAR(255) NOT NULL,
time INTEGER NOT NULL,
result INTEGER NOT NULL,
sent_msg BLOB NOT NULL,
received_msg BLOB NOT NULL,
user_agent VARCHAR(255) DEFAULT '' COLLATE NOCASE,
CONSTRAINT active_watchers_active_watchers_log_idx UNIQUE (presentity_uri, watcher_username, watcher_domain, event)
);
INSERT INTO version (table_name, table_version) values ('active_watchers_log','1');
CREATE TABLE keepalive (
id INTEGER PRIMARY KEY NOT NULL,
contact VARCHAR(2048) NOT NULL COLLATE NOCASE,
sockinfo VARCHAR(128) NOT NULL COLLATE NOCASE,
time_inserted timestamp DEFAULT CURRENT_TIMESTAMP,
time_sent timestamp DEFAULT CURRENT_TIMESTAMP,
slot INTEGER NOT NULL,
selected INTEGER DEFAULT 0,
failed INTEGER DEFAULT 0,
CONSTRAINT keepalive_idx UNIQUE (contact),
CONSTRAINT keepalive_idx_2 UNIQUE (slot, selected, time_sent, contact)
CONSTRAINT keepalive_idx_3 UNIQUE (slot, failed, contact)
);
INSERT INTO version (table_name, table_version) values ('keepalive','3');
CREATE UNIQUE INDEX active_watchers_contact ON active_watchers (contact, id);
create table auth_cache as select * from htable;
INSERT INTO version (table_name, table_version) select 'auth_cache', table_version from version where table_name = 'htable';
create view presentities as select id, cast(printf("sip:%s@%s",username,domain) as varchar(64)) presentity_uri ,
username, domain, event, cast(substr(etag, instr(etag,"@")+1) as varchar(64)) callid,
datetime(received_time, 'unixepoch') as received,
datetime(expires, 'unixepoch') as expire_date,
expires, cast(sender as varchar(30)) sender,
lower(cast( case when event = "dialog"
then substr(body, instr(BODY,"<state>")+7, instr(body,"</state>") - instr(body,"<state>") - 7)
when event = "presence"
then case when instr(body,"<dm:note>") == 0
then replace(substr(body, instr(body,"<note>")+6, instr(body,"</note>") - instr(body,"<note>") - 6), " ", "")
else replace(substr(body, instr(body,"<dm:note>")+9, instr(body,"</dm:note>") - instr(body,"<dm:note>") - 9), " ", "")
end
when event = "message-summary"
then case when instr(body,"Messages-Waiting: yes") = 0
then "Waiting"
else "Not-Waiting"
end
end as varchar(12))) state
from presentity;
create view wdispatcher as select *,
cast(substr(attrs, instr(attrs, "zone=")+5, instr(attrs, ";profile")-instr(attrs, "zone=")-5) as varchar(20)) zone,
cast(substr(attrs, instr(attrs, "idx=")+4, instr(attrs, ";node")-instr(attrs, "idx=")-4) as integer) idx,
cast(substr(attrs, instr(attrs, "node=")+5) as varchar(50)) node
from dispatcher;
create unique index if not exists idx_dispatcher_destination on dispatcher(destination);
CREATE VIEW w_keepalive_contact as
SELECT id, slot, failed, case when instr(contact,";") > 0
then substr(contact, 1, instr(contact,";")-1)
else contact
end as contact
from keepalive;
CREATE VIEW w_location_contact as
SELECT id, case when instr(contact,";") > 0
then substr(contact, 1, instr(contact,";")-1)
else contact
end as contact
from location;
CREATE VIEW w_watchers_contact as
select id, case when instr(contact,";") > 0
then substr(contact, 1, instr(contact,";")-1)
else contact
end as contact
from active_watchers;
EOF
}
sql_footer() {
cat << EOF
EOF
}