提交 02e4be4b authored 作者: Leon de Rooij's avatar Leon de Rooij

Created templating based on sql queries to generate XML - not finished yet


git-svn-id: http://svn.freeswitch.org/svn/freeswitch/trunk/scripts/contrib@13885 d0543943-73ff-0310-b7d9-9358b9ac24b2
上级 09c2f164
......@@ -39,21 +39,19 @@ CREATE TABLE `dir_groups_users` (
CREATE TABLE `dir_users` (
`id` INT NOT NULL AUTO_INCREMENT,
`dir_domain_id` INT NOT NULL,
`enabled` TINYINT(1) NOT NULL,
`username` VARCHAR(255) NOT NULL,
`cidr` VARCHAR(255),
`mailbox` VARCHAR(255),
`number-alias` VARCHAR(255),
PRIMARY KEY (`id`),
KEY `dir_users_username` (`username`),
KEY `dir_users_cidr` (`cidr`),
KEY `dir_users_mailbox` (`mailbox`),
KEY `dir_users_number-alias` (`number-alias`),
FOREIGN KEY (`dir_domain_id`) REFERENCES `dir_domains` (`id`)
);
CREATE TABLE `dir_user_attrs` (
`id` INT NOT NULL AUTO_INCREMENT,
`dir_user_id` INT NOT NULL,
`name` VARCHAR(255) NOT NULL,
`value` VARCHAR(255) NOT NULL,
PRIMARY KEY (`id`),
FOREIGN KEY (`dir_user_id`) REFERENCES `dir_users` (`id`),
KEY `dir_user_attrs_name` (`name`),
KEY `dir_user_attrs_value` (`value`)
);
CREATE TABLE `dir_user_params` (
`id` INT NOT NULL AUTO_INCREMENT,
`dir_user_id` INT NOT NULL,
......
<configuration name="xml_odbc.conf" description="XML ODBC Configuration">
<bindings>
<!--
<binding name="configuration">
<param name="odbc-dsn" value="freeswitch:freeswitch:secret"/>
<param name="template" value="configuration"/>
</binding>
-->
<binding name="directory">
<param name="odbc-dsn" value="freeswitch:freeswitch:secret"/>
<!-- <param name="template" value="directory"/> -->
<!-- <param name="template" value="not_found"/> -->
<param name="template" value="someuser"/>
</binding>
<!--
<binding name="dialplan">
<param name="odbc-dsn" value="freeswitch:freeswitch:secret"/>
<param name="template" value="dialplan"/>
</binding>
<param name="query-domain-key-user" value="SELECT
dir_domains.id AS domain_id,
dir_users.id AS user_id
FROM
dir_domains,
dir_users,
dir_user_attrs
WHERE
dir_domains.name = '%q' AND
dir_user_attrs.name = '%q' AND
dir_user_attrs.value = '%q' AND
dir_domains.id = dir_users.dir_domain_id AND
dir_users.id = dir_user_attrs.dir_user_id;"/>
<param name="query-domain-params" value="SELECT name, value FROM dir_domain_params WHERE dir_domain_id = '%q';"/>
<binding name="phrases">
<param name="odbc-dsn" value="freeswitch:freeswitch:secret"/>
<param name="template" value="phrases"/>
</binding>
-->
</bindings>
<param name="query-domain-variables" value="SELECT name, value FROM dir_domain_variables WHERE dir_domain_id = '%q';"/>
<templates>
<param name="query-user-attrs" value="SELECT name, value FROM dir_user_attrs WHERE dir_user_id = '%q';"/>
<template name="configuration">
<xml-odbc-do name="break-to" value="${section}" on-no-template-break-to="simple_configuration"/>
</template>
<param name="query-user-params" value="SELECT name, value FROM dir_user_params WHERE dir_user_id = '%q';"/>
<template name="simple_configuration">
<document type="freeswitch/xml"> <!-- should this tag be automatically rendered first on xml_out and left out here ? -->
<configuration name="${section}">
<settings>
<xml-odbc-do name="query" value="
SELECT
name, value
FROM
cnf_settings
WHERE
hostname = '${hostname}' AND
section = '${section}';">
<param name="${name}" value="${value}"/>
</xml-odbc-do>
</settings>
</configuration>
</document>
</template>
<template name="not_found">
<document type="freeswitch/xml">
<section name="result">
<result status="not found"/>
</section>
</document>
</template>
<param name="query-user-variables" value="SELECT name, value FROM dir_user_variables WHERE dir_user_id = '%q';"/>
<template name="someuser">
<document type="freeswitch/xml">
<section name="directory">
<domain name="${domain}">
<params>
<param name="some_domain_param" value="some_domain_value"/>
</params>
<variables>
</variables>
<groups>
<group name="default">
<users>
<user id="someuser" mailbox="leon@toyos.nl" cidr="" number-alias="0031320227470">
<params>
<param name="password" value="secret"/>
</params>
<variables>
<variable name="accountcode" value="1234"/>
</variables>
</user>
</users>
</group>
<group name="prepay">
<user id="someuser" type="pointer"/>
</group>
</groups>
</domain>
</section>
</document>
</template>
<X-PRE-PROCESS cmd="include" data="xml_odbc_templates/*.xml"/>
<param name="query-groups" value="SELECT dir_groups.name FROM dir_groups, dir_groups_users
WHERE dir_groups_users.dir_user_id = '%q' AND dir_groups_users.dir_group_id = dir_groups.id;"/>
</templates>
</binding>
</bindings>
</configuration>
<include>
<template name="console.conf">
<document type="freeswitch/xml">
<configuration name="console.conf" description="Console Logger">
<mappings>
<xml-odbc-do name="query" value="
SELECT
name, value
FROM
cnf_console_mappings
WHERE
hostname = '${hostname}';">
<mapping name="${name}" value="${value}"/>
</xml-odbc-do>
</mappings>
<settings>
<xml-odbc-do name="query" value="
SELECT
name, value
FROM
cnf_settings
WHERE
hostname = '${hostname}' AND
section = '${section}';">
<param name="${name}" value="${value}"/>
</xml-odbc-do>
</settings>
</configuration>
</document>
</template>
</include>
<include> <!-- NOT FINISHED ! -->
<template name="dialplan">
<document type="freeswitch/xml">
<xml-odbc-do name="query" on-zero-rows-break-to="not_found" value="
SELECT * FROM dialplan WHERE dialed_number='${dialed_number}';"/>
<section name="dialplan" description="RE Dial Plan For FreeSwitch">
<context name="default">
<extension name="test9">
<condition field="destination_number" expression="^83789$">
<action application="bridge" data="iax/guest@conference.freeswitch.org/888"/>
</condition>
</extension>
</context>
</section>
</document>
</template>
</include>
<include>
<template name="directory">
<document type="freeswitch/xml">
<xml-odbc-do name="query" on-zero-rows-break-to="not_found" value="
SELECT
dir_domains.id AS domain_id,
dir_users.id AS user_id,
dir_users.username,
dir_users.cidr,
dir_users.mailbox,
dir_users.number-alias
FROM
dir_domains,
dir_users
WHERE
dir_users.${key} = '${value}' AND
dir_domains.name = '${domain_name}' AND
dir_users.domain_id = dir_domains.id AND
dir_users.enabled = 1;"/>
<section name="directory">
<domain name="${domain_name}">
<params>
<xml-odbc-do name="query" value="
SELECT
name, value
FROM
dir_domain_params
WHERE
dir_domain_id = '${domain_id}';">
<param name="${name}" value="${value}"/>
</xml-odbc-do>
</params>
<variables>
<xml-odbc-do name="query" value="
SELECT
name, value
FROM
dir_domain_variables
WHERE
dir_domain_id = '${domain_id}';">
<variable name="${name}" value="${value}"/>
</xml-odbc-do>
</variables>
<groups>
<group name="default">
<users>
<user id="${username}" mailbox="${mailbox}" cidr="${cidr}" number-alias="${number-alias}">
<params>
<xml-odbc-do name="query" on-zero-rows-break-to="not_found" value="
SELECT
name, value
FROM
dir_domain_params
WHERE
dir_domain_id = '${domain_id}';">
<param name="${name}" value="${value}"/>
</xml-odbc-do>
</params>
<variables>
<xml-odbc-do name="query" value="
SELECT
name, value
FROM
dir_domain_params
WHERE
dir_domain_id = '${domain_id}';">
<variable name="${name}" value="${value}"/>
</xml-odbc-do>
</variables>
</user>
</users>
</group>
<xml-odbc-do name="query" value="
SELECT
name AS group_name
FROM
dir_groups,
dir_groups_users
WHERE
dir_groups_users.dir_group_id
dir_user_id = '${user_id}';">
<group name="${group_name}">
<user id="${username}" type="pointer"/>
</group>
</xml-odbc-do>
</groups>
</domain>
</section>
</document>
</template>
</include>
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论