+++ /dev/null
-[settings]
-
-directory_name => ldap
-host => ldap.mydomain.org
-dn => cn=Manager,dc=mydomain,dc=org
-pass => mypass
-base => dc=mydomain,dc=org
+++ /dev/null
-[settings]
-address => 225.0.0.37
-port => 12345
+++ /dev/null
-[settings]\r
-port => 5060\r
-dialplan => demo\r
-rtp_min_port => 10000\r
-rtp_max_port => 20000\r
+++ /dev/null
-[extensions]
-
-1000 => playback /tmp/siriusraw.raw
-
-; to time from a timer instead of from the input stream use
-; 1000 => playback /tmp/siriusraw.raw soft
-
-; call the freeswitch conference
-888 => bridge iax/guest@66.250.68.194/888
--- /dev/null
+; Unified Config file
+; each section denoted with a + could also be in it's own file
+
+;---- MODULES
+;--------------------------------------------------------------------------------
+[+modules.conf]
+[modules]
+
+; If this option is the first one the rest of them will be ignored
+; If it is not the first one, _it_ will be ignored
+;load => all
+
+; Event Handlers
+;load => mod_event_multicast
+;load => mod_event_test
+;load => mod_zeroconf
+;load => mod_xmpp_event
+
+; Directory Interfaces
+load => mod_ldap
+
+; Endpoints
+load => mod_exosip
+load => mod_iax
+;load => mod_portaudio
+;load => mod_woomera
+
+; Applications
+load => mod_bridgecall
+load => mod_ivrtest
+load => mod_playback
+
+; Dialplan Interfaces
+load => mod_dialplan_demo
+load => mod_dialplan_directory
+load => mod_pcre
+
+; Codec Interfaces
+load => mod_g711
+load => mod_gsm
+load => mod_l16
+load => mod_speex
+
+; File Format Interfaces
+load => mod_sndfile
+
+; Timers
+load => mod_softtimer
+
+
+load => mod_wanpipe
+
+;---- IAX PROTOCOL
+;--------------------------------------------------------------------------------
+[+iax.conf]
+[settings]
+debug => 0
+port => 4569
+dialplan => demo
+codec_prefs => PCMU,PCMA,speex,L16
+codec_master => us
+codec_rates=8
+
+;---- SIP PROTOCOL
+;--------------------------------------------------------------------------------
+[+exosip.conf]
+[settings]
+debug => 10
+port => 5060
+dialplan => demo
+codec_prefs => PCMU
+
+;---- WOOMERA PROTOCOL
+;--------------------------------------------------------------------------------
+[+woomera.conf]
+[settings]
+debug=0
+
+;---- WANPIPE PRI
+;--------------------------------------------------------------------------------
+[+wanpipe.conf]
+[settings]
+debug => 0
+dialplan => demo
+bpf => 320
+
+[span]
+ span => 1
+ node => cpe
+ switch => ni2
+ dp = national
+ l1 = ulaw
+ bchan => 1-23
+ dchan => 24
+ dialplan => demo
+
+
+;---- SOUND CARD CHANNEL
+;--------------------------------------------------------------------------------
+[+portaudio.conf]
+[settings]
+debug => 2
+dialplan => demo
+
+; partial string match on something in the name or the device #
+indev => USB
+outdev => USB
+
+cid_name => FreeSwitch
+cid_num => 5555551212
+
+;--- ZEROCONF
+;--------------------------------------------------------------------------------
+[+zeroconf.conf]
+[settings]
+
+publish => yes
+browse => _sip._udp
+
+;---- XMPP EVENT
+;--------------------------------------------------------------------------------
+[+xmpp_event.conf]
+[settings]
+
+#debug => 1
+jid => freeswitch@my.jabber.com/me
+passwd => mypass
+
+target_jid => freeswitch@reader.org/him
+
+;---- LDAP DIALPLAN
+;--------------------------------------------------------------------------------
+[+dialplan_directory.conf]
+[settings]
+
+directory_name => ldap
+host => ldap.freeswitch.org
+dn => cn=Manager,dc=freeswitch,dc=org
+pass => test
+base => dc=freeswitch,dc=org
+
+;----REGULAR EXPRESSION DIALPLAN
+;--------------------------------------------------------------------------------
+[+regextensions.conf]
+
+; any extension starting with a '4'
+; strip the '4' and consider the rest a numeric filename
+[playfile]
+ regex => ^4(\d+)
+ match => playback /var/sounds/$1.raw
+
+; send everything to wanpipe isdn
+[gateway]
+ regex => (.*)
+ match => bridge wanpipe/a/a/$1
+
+; ordniary extension
+[plain_old_extension]
+ regex => 9999
+ match => playback /var/sounds/beep.gsm
+
+;---- BASIC EXTENSIONS
+;--------------------------------------------------------------------------------
+[+extensions.conf]
+[extensions]
+
+1000 => playback /var/sounds/beep.raw
+
+; to time from a timer instead of from the input stream use
+; 1000 => playback /var/sounds/beep.raw soft
+
+; call the freeswitch conference
+888 => bridge iax/guest@66.250.68.194/888
+
+++ /dev/null
-[settings]\r
-debug => 2\r
-port => 4569\r
-dialplan => demo\r
-codec_prefs => PCMU,PCMA,speex,L16\r
-codec_master => us\r
+++ /dev/null
-[modules]
-
-; If this option is the first one the rest of them will be ignored
-;load => all
-
-; Extension will be chosen automaticly if not specified (.dll for windows, .so for UNIX)
-; Full paths will be taken "as is" (eg /some/dir/mymod.so)
-
-; Event Handlers
-;load => mod_event_multicast
-load => mod_zeroconf
-load => mod_xmpp_event
-
-; Directory Interfaces
-load => mod_ldap
-
-; Endpoints
-load => mod_exosip
-load => mod_iax
-load => mod_woomera
-
-; Applications
-load => mod_bridgecall
-load => mod_ivrtest
-load => mod_playback
-
-; Dialplan Interfaces
-load => mod_dialplan_demo
-load => mod_dialplan_directory
-load => mod_pcre
-
-; Codec Interfaces
-load => mod_g711
-load => mod_gsm
-load => mod_l16
-load => mod_speex
-
-; File Format Interfaces
-load => mod_sndfile
-
-; Timers
-load => mod_softtimer
-
-
-
-
-
+++ /dev/null
-[settings]\r
-debug => 2\r
-dialplan => demo\r
-\r
-; partial string match on something in the name or the device #\r
-indev => USB\r
-outdev => USB\r
-\r
-cid_name => FreeSwitch\r
-cid_num => 5555551212\r
-\r
+++ /dev/null
-[playfiles]
- regex => 4(.*)
- match => playback /tmp/$1.raw
-
-[passthrough]
- regex => 1(.*)
- match => bridge iax/guest@1.2.3.4/$1
-
-
-
-
-
-
+++ /dev/null
-[settings]
- debug => 1
- dialplan => pcre
- mtu => 320
- dtmf_on => 150
- dtmf_off => 50
-
-[span]
- span => 1
- node => cpe
-
- ;switch => ni2
- switch => dms100
- ;switch => lucent5e
- ;switch => att4ess
- ;switch => euroisdn
- ;switch => gr303eoc
- ;switch => gr303tmc
-
- dp => national
- ;dp => international
- ;dp => local
- ;dp => private
- ;dp => unknown
-
- l1 => ulaw
- ;l1 => alaw
-
- bchan => 1-23
- dchan => 24
- dialplan => pcre
+++ /dev/null
-[settings]
-debug=2
-
-[profile]
-host=localhost
-port=42420
-audio_ip=10.200.10.20
-dialplan=demo
+++ /dev/null
-[settings]
-
-debug => 0
-
-#jid => somebody@jabber.org
-#passwd => pass
-#target_jid => somebodyelse@jabber.org
-
-
+++ /dev/null
-[settings]
-
-; cant do both at once WTF?
-publish => yes
-#browse => _sip._udp
-
char *path;
/*! current category */
char category[256];
+ /*! current section */
+ char section[256];
/*! buffer of current line being read */
char buf[1024];
/*! current line number in file */
int lineno;
/*! current category number in file */
int catno;
+ /*! current section number in file */
+ int sectno;
+
+ int lockto;
};
/*!
int dtmf_on;
int dtmf_off;
int supress_dtmf_tone;
+ int configured_spans;
char *dialplan;
} globals;
static switch_status wanpipe_outgoing_channel(switch_core_session *session, switch_caller_profile *outbound_profile,
switch_core_session **new_session)
{
+ if (!globals.configured_spans) {
+ switch_console_printf(SWITCH_CHANNEL_CONSOLE, "Error No Spans Configured.\n");
+ return SWITCH_STATUS_FALSE;
+ }
+
+
if ((*new_session = switch_core_session_request(&wanpipe_endpoint_interface, NULL))) {
struct private_object *tech_pvt;
switch_channel *channel;
}
-
+ globals.configured_spans = 0;
for(current_span = 1; current_span < MAX_SPANS; current_span++) {
if (SPANS[current_span]) {
}
switch_console_printf(SWITCH_CHANNEL_CONSOLE, "Launch span %d\n", current_span);
pri_thread_launch(&SPANS[current_span]->spri);
+ globals.configured_spans++;
}
}
path = path_buf;
}
- if (!path || (f = fopen(path, "r")) == 0) {
+ if (!path) {
return 0;
}
memset(cfg, 0, sizeof(*cfg));
- cfg->file = f;
- cfg->path = path;
+ cfg->lockto = -1;
- return 1;
+ if (!(f = fopen(path, "r"))) {
+ if (file_path[0] != '/') {
+ int last = -1;
+ char *var, *val;
+
+ snprintf(path_buf, sizeof(path_buf), "%s/freeswitch.conf", SWITCH_CONF_DIR);
+ path = path_buf;
+
+ if ((f = fopen(path, "r")) == 0) {
+ return 0;
+ }
+
+ cfg->file = f;
+ cfg->path = path;
+
+ while (switch_config_next_pair(cfg, &var, &val)) {
+ if ((cfg->sectno != last) && !strcmp(cfg->section, file_path)) {
+ cfg->lockto = cfg->sectno;
+ return 1;
+ }
+ }
+
+ switch_config_close_file(cfg);
+ memset(cfg, 0, sizeof(*cfg));
+ return 0;
+ }
+
+ return 0;
+ } else {
+ cfg->file = f;
+ cfg->path = path;
+ return 1;
+ }
}
if (**var == '[' && (end = strchr(*var, ']')) != 0) {
*end = '\0';
(*var)++;
- switch_copy_string(cfg->category, *var, sizeof(cfg->category));
- cfg->catno++;
+ if (**var == '+') {
+ (*var)++;
+ switch_copy_string(cfg->section, *var, sizeof(cfg->section));
+ cfg->sectno++;
+
+ if (cfg->lockto > -1 && cfg->sectno != cfg->lockto) {
+ break;
+ }
+ cfg->catno = 0;
+ cfg->lineno = 0;
+
+ } else {
+ switch_copy_string(cfg->category, *var, sizeof(cfg->category));
+ cfg->catno++;
+ }
continue;
}
break;
}
}
+ } else {
+ return status;
}
}