Moved all config file handling out of Kannel into a Mbuni module
This commit is contained in:
parent
2188c0c6c8
commit
d89834bda1
|
@ -28,7 +28,7 @@ billing-module-parameters = "/tmp/log/cdr.log"
|
|||
# billing-library = billdemo.so
|
||||
#prov-server-notify-script = ~/src/mmprov/provnotify.sh
|
||||
#prov-server-sub-status-script = ~/src/mmprov/rcptstatus.sh
|
||||
content-adaptation = yes
|
||||
content-adaptation = true
|
||||
notify-unprovisioned = yes
|
||||
mms-notify-text = "You have received a multimedia message from %S, go to XXX to view it"
|
||||
mm-box-host = local.ds.co.ug
|
||||
|
@ -43,6 +43,11 @@ username = tester
|
|||
password = foobar
|
||||
# faked-sender = 100
|
||||
|
||||
group = send-mms-user
|
||||
username = binary
|
||||
password = "user"
|
||||
faked-sender = 111
|
||||
|
||||
group = mmsc
|
||||
id = testone
|
||||
mmsc-url = http://mbuni:test@192.168.129.52:8080/eaif
|
||||
|
|
|
@ -715,125 +715,89 @@ diff -Naur gateway-1.4.0/gw/xml_shared.h gateway-1.4.0-patched/gw/xml_shared.h
|
|||
};
|
||||
|
||||
/*
|
||||
diff -Naur gateway-1.4.0/gwlib/cfg.def gateway-1.4.0-patched/gwlib/cfg.def
|
||||
--- gateway-1.4.0/gwlib/cfg.def 2004-06-28 18:18:35.000000000 +0300
|
||||
+++ gateway-1.4.0-patched/gwlib/cfg.def 2005-10-25 13:10:00.000000000 +0300
|
||||
@@ -544,6 +544,115 @@
|
||||
OCTSTR(unified-prefix)
|
||||
)
|
||||
diff -Naur gateway-1.4.0/gwlib/conn.c gateway-1.4.0-patched/gwlib/conn.c
|
||||
--- gateway-1.4.0/gwlib/conn.c 2004-02-18 19:52:33.000000000 +0300
|
||||
+++ gateway-1.4.0-patched/gwlib/conn.c 2006-02-17 08:39:38.000000000 +0300
|
||||
@@ -1315,6 +1315,7 @@
|
||||
info(0, "Using global server SSL key from file `%s'", octstr_get_cstr(keyfile));
|
||||
}
|
||||
|
||||
+SINGLE_GROUP(mbuni,
|
||||
+ OCTSTR(name)
|
||||
+ OCTSTR(hostname)
|
||||
+ OCTSTR(host-alias)
|
||||
+ OCTSTR(local-mmsc-domains)
|
||||
+ OCTSTR(local-prefixes)
|
||||
+ OCTSTR(storage-directory)
|
||||
+ OCTSTR(max-send-threads)
|
||||
+ OCTSTR(send-mail-prog)
|
||||
+ OCTSTR(unified-prefix)
|
||||
+ OCTSTR(maximum-send-attempts)
|
||||
+ OCTSTR(default-message-expiry)
|
||||
+ OCTSTR(queue-run-interval)
|
||||
+ OCTSTR(send-attempt-back-off)
|
||||
+ OCTSTR(sendsms-url)
|
||||
+ OCTSTR(sendsms-username)
|
||||
+ OCTSTR(sendsms-password)
|
||||
+ OCTSTR(sendsms-global-sender)
|
||||
+ OCTSTR(mms-port)
|
||||
+ OCTSTR(mm7-port)
|
||||
+ OCTSTR(allow-ip)
|
||||
+ OCTSTR(deny-ip)
|
||||
+ OCTSTR(email2mms-relay-prefixes)
|
||||
+ OCTSTR(billing-module-parameters)
|
||||
+ OCTSTR(billing-library)
|
||||
+ OCTSTR(resolver-module-parameters)
|
||||
+ OCTSTR(resolver-library)
|
||||
+ OCTSTR(detokenizer-module-parameters)
|
||||
+ OCTSTR(detokenizer-library)
|
||||
+ OCTSTR(prov-server-notify-script)
|
||||
+ OCTSTR(prov-server-sub-status-script)
|
||||
+ OCTSTR(notify-unprovisioned)
|
||||
+ OCTSTR(mms-notify-text)
|
||||
+ OCTSTR(mms-notify-unprovisioned-text)
|
||||
+ OCTSTR(mm-box-host)
|
||||
+ OCTSTR(mms-to-email-txt)
|
||||
+ OCTSTR(mms-to-email-html)
|
||||
+ OCTSTR(mms-message-too-large-txt)
|
||||
+ OCTSTR(mms-client-msisdn-header)
|
||||
+ OCTSTR(mms-client-ip-header)
|
||||
+ OCTSTR(allow-ip-type)
|
||||
+ OCTSTR(optimize-notification-size)
|
||||
+ OCTSTR(content-adaptation)
|
||||
+
|
||||
+ OCTSTR(sendmms-port)
|
||||
+ OCTSTR(sendmms-port-ssl)
|
||||
+)
|
||||
static int verify_callback(int preverify_ok, X509_STORE_CTX *ctx)
|
||||
{
|
||||
char subject[256];
|
||||
@@ -1331,6 +1332,28 @@
|
||||
return preverify_ok;
|
||||
}
|
||||
|
||||
+void use_global_trusted_ca_file(Octstr *ssl_trusted_ca_file)
|
||||
+{
|
||||
+ if (ssl_trusted_ca_file != NULL) {
|
||||
+ if (!SSL_CTX_load_verify_locations(global_ssl_context,
|
||||
+ octstr_get_cstr(ssl_trusted_ca_file),
|
||||
+ NULL)) {
|
||||
+ panic(0, "Failed to load SSL CA file: %s", octstr_get_cstr(ssl_trusted_ca_file));
|
||||
+ } else {
|
||||
+ info(0, "Using CA root certificates from file %s",
|
||||
+ octstr_get_cstr(ssl_trusted_ca_file));
|
||||
+ SSL_CTX_set_verify(global_ssl_context,
|
||||
+ SSL_VERIFY_PEER,
|
||||
+ verify_callback);
|
||||
+ }
|
||||
+
|
||||
+ } else {
|
||||
+ SSL_CTX_set_verify(global_ssl_context,
|
||||
+ SSL_VERIFY_NONE,
|
||||
+ NULL);
|
||||
+ }
|
||||
+}
|
||||
+
|
||||
+MULTI_GROUP(mmsproxy,
|
||||
+ OCTSTR(name)
|
||||
+ OCTSTR(host)
|
||||
+ OCTSTR(allowed-prefix)
|
||||
+ OCTSTR(denied-prefix)
|
||||
+)
|
||||
void conn_config_ssl (CfgGroup *grp)
|
||||
{
|
||||
Octstr *ssl_client_certkey_file = NULL;
|
||||
@@ -1357,25 +1380,8 @@
|
||||
|
||||
ssl_trusted_ca_file = cfg_get(grp, octstr_imm("ssl-trusted-ca-file"));
|
||||
|
||||
- if (ssl_trusted_ca_file != NULL) {
|
||||
- if (!SSL_CTX_load_verify_locations(global_ssl_context,
|
||||
- octstr_get_cstr(ssl_trusted_ca_file),
|
||||
- NULL)) {
|
||||
- panic(0, "Failed to load SSL CA file: %s", octstr_get_cstr(ssl_trusted_ca_file));
|
||||
- } else {
|
||||
- info(0, "Using CA root certificates from file %s",
|
||||
- octstr_get_cstr(ssl_trusted_ca_file));
|
||||
- SSL_CTX_set_verify(global_ssl_context,
|
||||
- SSL_VERIFY_PEER,
|
||||
- verify_callback);
|
||||
- }
|
||||
-
|
||||
- } else {
|
||||
- SSL_CTX_set_verify(global_ssl_context,
|
||||
- SSL_VERIFY_NONE,
|
||||
- NULL);
|
||||
- }
|
||||
-
|
||||
+ use_global_trusted_ca_file(ssl_trusted_ca_file);
|
||||
+
|
||||
+MULTI_GROUP(mms-vasp,
|
||||
+ OCTSTR(vasp-id)
|
||||
+ OCTSTR(type)
|
||||
+ OCTSTR(short-code)
|
||||
+ OCTSTR(vasp-username)
|
||||
+ OCTSTR(vasp-password)
|
||||
+ OCTSTR(vasp-url)
|
||||
+ OCTSTR(mms-to-email-handler)
|
||||
+ OCTSTR(mms-to-local-copy-handler)
|
||||
+ OCTSTR(mmsc-username)
|
||||
+ OCTSTR(mmsc-password)
|
||||
+)
|
||||
octstr_destroy(ssl_client_certkey_file);
|
||||
octstr_destroy(ssl_server_cert_file);
|
||||
octstr_destroy(ssl_server_key_file);
|
||||
diff -Naur gateway-1.4.0/gwlib/conn.h gateway-1.4.0-patched/gwlib/conn.h
|
||||
--- gateway-1.4.0/gwlib/conn.h 2004-02-16 22:41:26.000000000 +0300
|
||||
+++ gateway-1.4.0-patched/gwlib/conn.h 2006-02-17 08:42:32.000000000 +0300
|
||||
@@ -307,6 +307,11 @@
|
||||
*/
|
||||
void use_global_server_certkey_file(Octstr *certfile, Octstr *keyfile);
|
||||
|
||||
+/* Specifies files containing certificates Kannel is willing to trusted when
|
||||
+ * actins as https clients
|
||||
+ */
|
||||
+void use_global_trusted_ca_file(Octstr *ssl_trusted_ca_file);
|
||||
+
|
||||
+MULTI_GROUP(send-mms-user,
|
||||
+ OCTSTR(username)
|
||||
+ OCTSTR(password)
|
||||
+ OCTSTR(faked-sender)
|
||||
+ OCTSTR(delivery-report-url)
|
||||
+ OCTSTR(read-report-url)
|
||||
+)
|
||||
+
|
||||
+MULTI_GROUP(mmsc,
|
||||
+ OCTSTR(id)
|
||||
+ OCTSTR(mmsc-url)
|
||||
+ OCTSTR(incoming-username)
|
||||
+ OCTSTR(incoming-password)
|
||||
+ OCTSTR(incoming-port)
|
||||
+ OCTSTR(allow-ip)
|
||||
+ OCTSTR(deny-ip)
|
||||
+ OCTSTR(allowed-prefix)
|
||||
+ OCTSTR(denied-prefix)
|
||||
+ OCTSTR(incoming-port-ssl)
|
||||
+ OCTSTR(max-throughput)
|
||||
+ OCTSTR(type)
|
||||
+)
|
||||
+
|
||||
+MULTI_GROUP(mms-service,
|
||||
+ OCTSTR(name)
|
||||
+ OCTSTR(get-url)
|
||||
+ OCTSTR(post-url)
|
||||
+ OCTSTR(exec)
|
||||
+ OCTSTR(file)
|
||||
+ OCTSTR(text)
|
||||
+ OCTSTR(faked-sender)
|
||||
+ OCTSTR(catch-all)
|
||||
+ OCTSTR(omit-empty)
|
||||
+ OCTSTR(accept-x-mbuni-headers)
|
||||
+ OCTSTR(assume-plain-text)
|
||||
+ OCTSTR(accepted-mmscs)
|
||||
+ OCTSTR(denied-mmscs)
|
||||
+ OCTSTR(keyword)
|
||||
+ OCTSTR(aliases)
|
||||
+ OCTSTR(http-post-parameters)
|
||||
+)
|
||||
#undef OCTSTR
|
||||
#undef SINGLE_GROUP
|
||||
#undef MULTI_GROUP
|
||||
/* Configures all global variables for client and server SSL mode
|
||||
* from the values specified within the configuration file.
|
||||
*/
|
||||
diff -Naur gateway-1.4.0/gwlib/mime.c gateway-1.4.0-patched/gwlib/mime.c
|
||||
--- gateway-1.4.0/gwlib/mime.c 2004-08-11 19:41:29.000000000 +0300
|
||||
+++ gateway-1.4.0-patched/gwlib/mime.c 2005-09-09 15:31:17.000000000 +0300
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
noinst_LTLIBRARIES = libmms.la
|
||||
libmms_la_SOURCES = mms_mmbox.c mms_msg.c mms_queue.c mms_strings.c mms_uaprof.c mms_util.c mms_mm7soap.c
|
||||
libmms_la_SOURCES = mms_mmbox.c mms_msg.c mms_queue.c mms_strings.c mms_uaprof.c mms_util.c mms_mm7soap.c mms_cfg.c
|
||||
|
||||
EXTRA_DIST=mms_strings.def mms_mm7soap.h mms_mmbox.h mms_msg.h mms_queue.h mms_strings.h mms_uaprof.h mms_util.h
|
||||
EXTRA_DIST=mms_strings.def mms_mm7soap.h mms_mmbox.h mms_msg.h mms_queue.h mms_strings.h mms_uaprof.h mms_util.h mms_cfg.h mms_cfg.def
|
||||
|
|
|
@ -0,0 +1,337 @@
|
|||
/*
|
||||
* Mbuni - Open Source MMS Gateway
|
||||
*
|
||||
* MMS Config file reader functions
|
||||
*
|
||||
* Copyright (C) 2003 - 2005, Digital Solutions Ltd. - http://www.dsmagic.com
|
||||
*
|
||||
* Paul Bagyenda <bagyenda@dsmagic.com>
|
||||
*
|
||||
* This program is free software, distributed under the terms of
|
||||
* the GNU General Public License, with a few exceptions granted (see LICENSE)
|
||||
*/
|
||||
|
||||
#include <stdlib.h>
|
||||
#include <string.h>
|
||||
|
||||
#include "mms_cfg.h"
|
||||
|
||||
|
||||
/* config file representation.
|
||||
* 'grps' var is indexed by group name.
|
||||
* for multi the value is a list of groups,
|
||||
* for single it is a struct
|
||||
*/
|
||||
struct mCfg {
|
||||
Octstr *file;
|
||||
Dict *grps;
|
||||
};
|
||||
|
||||
struct mCfgGrp {
|
||||
Octstr *name;
|
||||
Dict *fields;
|
||||
};
|
||||
|
||||
static void fixup_value(Octstr *value, int lineno)
|
||||
{
|
||||
Octstr *tmp;
|
||||
int i,n;
|
||||
|
||||
octstr_strip_blanks(value);
|
||||
|
||||
if (octstr_get_char(value, 0) != '"')
|
||||
return;
|
||||
if (octstr_get_char(value, octstr_len(value) - 1) != '"')
|
||||
error(0, "Missing enclosing '\"' at line %d in conf file", lineno);
|
||||
|
||||
octstr_delete(value, 0,1); /* strip quotes. */
|
||||
octstr_delete(value, octstr_len(value) - 1, 1);
|
||||
|
||||
tmp = octstr_duplicate(value);
|
||||
octstr_delete(value, 0, octstr_len(value));
|
||||
|
||||
for (i = 0, n = octstr_len(tmp); i < n; i++) {
|
||||
int ch = octstr_get_char(tmp, i);
|
||||
|
||||
if (ch != '\\') {
|
||||
octstr_append_char(value, ch);
|
||||
continue;
|
||||
}
|
||||
|
||||
i++; /* skip forward. */
|
||||
ch = octstr_get_char(tmp,i);
|
||||
switch(ch) {
|
||||
case '"':
|
||||
case '\\':
|
||||
default:
|
||||
octstr_append_char(value, ch);
|
||||
break;
|
||||
case 'n':
|
||||
octstr_append_char(value, '\n');
|
||||
break;
|
||||
case 't':
|
||||
octstr_append_char(value, '\t');
|
||||
break;
|
||||
|
||||
}
|
||||
}
|
||||
octstr_destroy(tmp);
|
||||
}
|
||||
|
||||
static int is_multigroup(Octstr *grpname)
|
||||
{
|
||||
#define OCTSTR(x)
|
||||
#define SINGLE_GROUP(name, fields) \
|
||||
if (octstr_case_compare(grpname, octstr_imm(#name)) == 0) return 0;
|
||||
#define MULTI_GROUP(name, fields) \
|
||||
if (octstr_case_compare(grpname, octstr_imm(#name)) == 0) return 1;
|
||||
#include "mms_cfg.def"
|
||||
|
||||
return -1;
|
||||
}
|
||||
|
||||
static int valid_in_group(Octstr *grp, Octstr *field)
|
||||
{
|
||||
/* first validate whether field is permitted in the group. */
|
||||
#define OCTSTR(parm) else if (octstr_case_compare(field,octstr_imm(#parm)) == 0) return 1;
|
||||
#define SINGLE_GROUP(grpname, fields) \
|
||||
else if (octstr_case_compare(grp, octstr_imm(#grpname)) == 0) { \
|
||||
if (0) (void)0; \
|
||||
fields \
|
||||
}
|
||||
#define MULTI_GROUP(name, fields) SINGLE_GROUP(name, fields)
|
||||
|
||||
if (0)
|
||||
(void)0;
|
||||
#include "mms_cfg.def"
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
static void check_and_add_field(mCfgGrp *grp, Octstr *field, Octstr *value, int lineno)
|
||||
{
|
||||
if (!valid_in_group(grp->name, field))
|
||||
info(0, "field `%s' is not expected within group `%s' at line %d in conf file - skipped",
|
||||
octstr_get_cstr(field), octstr_get_cstr(grp->name), lineno);
|
||||
else if (dict_put_once(grp->fields, field, octstr_duplicate(value)) == 0)
|
||||
panic(0, "Duplicate field `%s' at line %d in conf file",
|
||||
octstr_get_cstr(field), lineno);
|
||||
}
|
||||
|
||||
mCfg *mms_cfg_read(Octstr *file)
|
||||
{
|
||||
Octstr *sf;
|
||||
List *lines;
|
||||
int i, n;
|
||||
mCfg *cfg;
|
||||
mCfgGrp *grp = NULL;
|
||||
int skip = 0;
|
||||
|
||||
gw_assert(file);
|
||||
|
||||
if ((sf = octstr_read_file(octstr_get_cstr(file))) == NULL) {
|
||||
error(errno, "failed to read config from `%s'", octstr_get_cstr(file));
|
||||
return NULL;
|
||||
}
|
||||
|
||||
cfg = gw_malloc(sizeof *cfg);
|
||||
cfg->file = octstr_duplicate(file);
|
||||
cfg->grps = dict_create(7, NULL);
|
||||
|
||||
lines = octstr_split(sf, octstr_imm("\n"));
|
||||
for (i = 0, n = list_len(lines); i < n; i++) {
|
||||
Octstr *current = list_get(lines,i);
|
||||
int pos;
|
||||
|
||||
octstr_strip_blanks(current);
|
||||
|
||||
if (octstr_len(current) == 0) { /* end of group. */
|
||||
grp = NULL;
|
||||
skip = 0;
|
||||
continue;
|
||||
} else if (skip || octstr_get_char(current, 0) == '#')
|
||||
continue;
|
||||
|
||||
if ((pos = octstr_search_char(current, '=',0)) > 0) {
|
||||
/* a field name. first see if start of grp */
|
||||
Octstr *field = octstr_copy(current,0,pos);
|
||||
Octstr *value = octstr_copy(current,pos+1,octstr_len(current));
|
||||
|
||||
octstr_strip_blanks(field);
|
||||
fixup_value(value, i+1);
|
||||
#if 0
|
||||
info(0, "field/value: [%s - %s]", octstr_get_cstr(field),
|
||||
octstr_get_cstr(value));
|
||||
#endif
|
||||
|
||||
if (octstr_case_compare(field, octstr_imm("group")) == 0)
|
||||
if (grp == NULL) { /* grp name. */
|
||||
int ismulti = is_multigroup(value);
|
||||
|
||||
if (ismulti < 0) {
|
||||
info(0, "Skipping unknown group `%s' at line %d of conf file",
|
||||
octstr_get_cstr(value), i+1);
|
||||
skip = 1;
|
||||
} else {
|
||||
grp = gw_malloc(sizeof *grp);
|
||||
grp->name = octstr_duplicate(value);
|
||||
grp->fields = dict_create(23, (void (*)(void *))octstr_destroy);
|
||||
|
||||
if (ismulti) {
|
||||
List *l = dict_get(cfg->grps, value);
|
||||
|
||||
if (l == NULL) {
|
||||
l = list_create();
|
||||
dict_put(cfg->grps, value, l);
|
||||
}
|
||||
list_append(l, grp);
|
||||
} else if (dict_put_once(cfg->grps, value, grp) == 0)
|
||||
panic(0, "Group `%s' [at line %d] cannot appear more "
|
||||
"than once in config!",
|
||||
octstr_get_cstr(value), i+1);
|
||||
}
|
||||
} else
|
||||
panic(0,"`group' is an illegal field name "
|
||||
"within a group at line %d in config file!",
|
||||
i+1);
|
||||
else if (grp) /* an ordinary field name. */
|
||||
check_and_add_field(grp, field, value,i+1);
|
||||
else
|
||||
panic(0, "A group must begin with a `group = group_name' "
|
||||
"clause [at line %d in config file]", i+1);
|
||||
|
||||
octstr_destroy(field);
|
||||
octstr_destroy(value);
|
||||
} else
|
||||
panic(0, "mal-formed entry in conf file at line %d!", i+1);
|
||||
}
|
||||
|
||||
list_destroy(lines, (list_item_destructor_t *)octstr_destroy);
|
||||
octstr_destroy(sf);
|
||||
return cfg;
|
||||
}
|
||||
|
||||
static void mGrp_destroy(mCfgGrp *grp)
|
||||
{
|
||||
octstr_destroy(grp->name);
|
||||
dict_destroy(grp->fields);
|
||||
gw_free(grp);
|
||||
}
|
||||
|
||||
void mms_cfg_destroy(mCfg *cfg)
|
||||
{
|
||||
List *l;
|
||||
int i, n;
|
||||
|
||||
gw_assert(cfg);
|
||||
|
||||
for (i = 0, l = dict_keys(cfg->grps), n = list_len(l); i < n; i++) {
|
||||
Octstr *grpname = list_get(l, i);
|
||||
void *val = dict_get(cfg->grps, grpname);
|
||||
if (is_multigroup(grpname)) {
|
||||
List *gl = val;
|
||||
int j, m = list_len(gl);
|
||||
for (j = 0; j < m; j++)
|
||||
mGrp_destroy(list_get(gl, j));
|
||||
} else
|
||||
mGrp_destroy(val);
|
||||
}
|
||||
list_destroy(l, (list_item_destructor_t *)octstr_destroy);
|
||||
dict_destroy(cfg->grps);
|
||||
octstr_destroy(cfg->file);
|
||||
gw_free(cfg);
|
||||
}
|
||||
|
||||
mCfgGrp *mms_cfg_get_single(mCfg *cfg, Octstr *name)
|
||||
{
|
||||
gw_assert(name);
|
||||
|
||||
if (is_multigroup(name))
|
||||
gw_assert("Can't call this function with a multi-group name!" && 0);
|
||||
|
||||
return dict_get(cfg->grps, name);
|
||||
}
|
||||
|
||||
List *mms_cfg_get_multi(mCfg *cfg, Octstr *name)
|
||||
{
|
||||
List *l = NULL, *r;
|
||||
int i;
|
||||
|
||||
gw_assert(name);
|
||||
if (!is_multigroup(name))
|
||||
gw_assert("Can't call this function with a single-group name!" && 0);
|
||||
|
||||
r = dict_get(cfg->grps, name);
|
||||
|
||||
if (r)
|
||||
for (i = 0, l = list_create(); i < list_len(r); i++)
|
||||
list_append(l, list_get(r,i));
|
||||
return l;
|
||||
}
|
||||
|
||||
Octstr *mms_cfg_get(mCfgGrp *grp, Octstr *name)
|
||||
{
|
||||
Octstr *val;
|
||||
|
||||
gw_assert(grp);
|
||||
|
||||
if (!valid_in_group(grp->name, name))
|
||||
panic(0, "Request for invalid field/variable `%s' in group `%s', unexpected!",
|
||||
octstr_get_cstr(name), octstr_get_cstr(grp->name));
|
||||
|
||||
val = dict_get(grp->fields, name);
|
||||
|
||||
if (!val)
|
||||
return NULL;
|
||||
else
|
||||
return octstr_duplicate(val);
|
||||
}
|
||||
|
||||
int mms_cfg_get_int(mCfgGrp *grp, Octstr *name, long *n)
|
||||
{
|
||||
Octstr *val = mms_cfg_get(grp, name);
|
||||
int ret;
|
||||
if (!val)
|
||||
return -1;
|
||||
ret = octstr_parse_long(n, val, 0, 0);
|
||||
octstr_destroy(val);
|
||||
return (ret == -1) ? -1 : 0;
|
||||
}
|
||||
|
||||
|
||||
int mms_cfg_get_bool(mCfgGrp *grp, Octstr *name, int *bool)
|
||||
{
|
||||
Octstr *val = mms_cfg_get(grp, name);
|
||||
int ret = 0;
|
||||
if (!val)
|
||||
return -1;
|
||||
|
||||
if (octstr_case_compare(val, octstr_imm("yes")) == 0 ||
|
||||
octstr_case_compare(val, octstr_imm("true")) == 0 ||
|
||||
octstr_case_compare(val, octstr_imm("1")) == 0)
|
||||
*bool = 1;
|
||||
else if (octstr_case_compare(val, octstr_imm("no")) == 0 ||
|
||||
octstr_case_compare(val, octstr_imm("false")) == 0 ||
|
||||
octstr_case_compare(val, octstr_imm("0")) == 0)
|
||||
*bool = 0;
|
||||
else {
|
||||
error(0, "Unable to convert value `%s' to boolean for field `%s' in group `%s'",
|
||||
octstr_get_cstr(val), octstr_get_cstr(name), octstr_get_cstr(grp->name));
|
||||
ret = -1;
|
||||
}
|
||||
|
||||
octstr_destroy(val);
|
||||
return ret;
|
||||
}
|
||||
|
||||
List *mms_cfg_get_list(mCfgGrp *grp, Octstr *name)
|
||||
{
|
||||
Octstr *val = mms_cfg_get(grp, name);
|
||||
List *l;
|
||||
|
||||
if (val == NULL)
|
||||
return NULL;
|
||||
l = octstr_split_words(val);
|
||||
octstr_destroy(val);
|
||||
return l;
|
||||
}
|
|
@ -0,0 +1,154 @@
|
|||
/*
|
||||
* Mbuni - Open Source MMS Gateway
|
||||
*
|
||||
* MMS Config structure definitions
|
||||
*
|
||||
* Copyright (C) 2003 - 2005, Digital Solutions Ltd. - http://www.dsmagic.com
|
||||
*
|
||||
* Paul Bagyenda <bagyenda@dsmagic.com>
|
||||
*
|
||||
* This program is free software, distributed under the terms of
|
||||
* the GNU General Public License, with a few exceptions granted (see LICENSE)
|
||||
*/
|
||||
|
||||
#ifndef OCTSTR
|
||||
#error OCTSTR not defined.
|
||||
#endif
|
||||
|
||||
#ifndef SINGLE_GROUP
|
||||
#error SINGLE_GROUP not defined.
|
||||
#endif
|
||||
|
||||
#ifndef MULTI_GROUP
|
||||
#error MULTI_GROUP not defined.
|
||||
#endif
|
||||
|
||||
SINGLE_GROUP(core,
|
||||
OCTSTR(log-file)
|
||||
OCTSTR(log-level)
|
||||
OCTSTR(access-log)
|
||||
OCTSTR(http-proxy-host)
|
||||
OCTSTR(http-proxy-port)
|
||||
OCTSTR(http-proxy-exceptions)
|
||||
OCTSTR(http-proxy-username)
|
||||
OCTSTR(http-proxy-password)
|
||||
OCTSTR(ssl-client-certkey-file)
|
||||
OCTSTR(ssl-server-cert-file)
|
||||
OCTSTR(ssl-server-key-file)
|
||||
OCTSTR(ssl-trusted-ca-file)
|
||||
|
||||
)
|
||||
|
||||
SINGLE_GROUP(mbuni,
|
||||
OCTSTR(name)
|
||||
OCTSTR(hostname)
|
||||
OCTSTR(host-alias)
|
||||
OCTSTR(local-mmsc-domains)
|
||||
OCTSTR(local-prefixes)
|
||||
OCTSTR(storage-directory)
|
||||
OCTSTR(max-send-threads)
|
||||
OCTSTR(send-mail-prog)
|
||||
OCTSTR(unified-prefix)
|
||||
OCTSTR(maximum-send-attempts)
|
||||
OCTSTR(default-message-expiry)
|
||||
OCTSTR(queue-run-interval)
|
||||
OCTSTR(send-attempt-back-off)
|
||||
OCTSTR(sendsms-url)
|
||||
OCTSTR(sendsms-username)
|
||||
OCTSTR(sendsms-password)
|
||||
OCTSTR(sendsms-global-sender)
|
||||
OCTSTR(mms-port)
|
||||
OCTSTR(mm7-port)
|
||||
OCTSTR(allow-ip)
|
||||
OCTSTR(deny-ip)
|
||||
OCTSTR(email2mms-relay-prefixes)
|
||||
OCTSTR(billing-module-parameters)
|
||||
OCTSTR(billing-library)
|
||||
OCTSTR(resolver-module-parameters)
|
||||
OCTSTR(resolver-library)
|
||||
OCTSTR(detokenizer-module-parameters)
|
||||
OCTSTR(detokenizer-library)
|
||||
OCTSTR(prov-server-notify-script)
|
||||
OCTSTR(prov-server-sub-status-script)
|
||||
OCTSTR(notify-unprovisioned)
|
||||
OCTSTR(mms-notify-text)
|
||||
OCTSTR(mms-notify-unprovisioned-text)
|
||||
OCTSTR(mm-box-host)
|
||||
OCTSTR(mms-to-email-txt)
|
||||
OCTSTR(mms-to-email-html)
|
||||
OCTSTR(mms-message-too-large-txt)
|
||||
OCTSTR(mms-client-msisdn-header)
|
||||
OCTSTR(mms-client-ip-header)
|
||||
OCTSTR(allow-ip-type)
|
||||
OCTSTR(optimize-notification-size)
|
||||
OCTSTR(content-adaptation)
|
||||
|
||||
OCTSTR(sendmms-port)
|
||||
OCTSTR(sendmms-port-ssl)
|
||||
)
|
||||
|
||||
MULTI_GROUP(mmsproxy,
|
||||
OCTSTR(name)
|
||||
OCTSTR(host)
|
||||
OCTSTR(allowed-prefix)
|
||||
OCTSTR(denied-prefix)
|
||||
)
|
||||
|
||||
MULTI_GROUP(mms-vasp,
|
||||
OCTSTR(vasp-id)
|
||||
OCTSTR(type)
|
||||
OCTSTR(short-code)
|
||||
OCTSTR(vasp-username)
|
||||
OCTSTR(vasp-password)
|
||||
OCTSTR(vasp-url)
|
||||
OCTSTR(mms-to-email-handler)
|
||||
OCTSTR(mms-to-local-copy-handler)
|
||||
OCTSTR(mmsc-username)
|
||||
OCTSTR(mmsc-password)
|
||||
)
|
||||
|
||||
MULTI_GROUP(send-mms-user,
|
||||
OCTSTR(username)
|
||||
OCTSTR(password)
|
||||
OCTSTR(faked-sender)
|
||||
OCTSTR(delivery-report-url)
|
||||
OCTSTR(read-report-url)
|
||||
)
|
||||
|
||||
MULTI_GROUP(mmsc,
|
||||
OCTSTR(id)
|
||||
OCTSTR(mmsc-url)
|
||||
OCTSTR(incoming-username)
|
||||
OCTSTR(incoming-password)
|
||||
OCTSTR(incoming-port)
|
||||
OCTSTR(allow-ip)
|
||||
OCTSTR(deny-ip)
|
||||
OCTSTR(allowed-prefix)
|
||||
OCTSTR(denied-prefix)
|
||||
OCTSTR(incoming-port-ssl)
|
||||
OCTSTR(max-throughput)
|
||||
OCTSTR(type)
|
||||
)
|
||||
|
||||
MULTI_GROUP(mms-service,
|
||||
OCTSTR(name)
|
||||
OCTSTR(get-url)
|
||||
OCTSTR(post-url)
|
||||
OCTSTR(exec)
|
||||
OCTSTR(file)
|
||||
OCTSTR(text)
|
||||
OCTSTR(faked-sender)
|
||||
OCTSTR(catch-all)
|
||||
OCTSTR(omit-empty)
|
||||
OCTSTR(accept-x-mbuni-headers)
|
||||
OCTSTR(assume-plain-text)
|
||||
OCTSTR(accepted-mmscs)
|
||||
OCTSTR(denied-mmscs)
|
||||
OCTSTR(keyword)
|
||||
OCTSTR(aliases)
|
||||
OCTSTR(http-post-parameters)
|
||||
)
|
||||
#undef OCTSTR
|
||||
#undef SINGLE_GROUP
|
||||
#undef MULTI_GROUP
|
||||
|
|
@ -0,0 +1,56 @@
|
|||
/*
|
||||
* Mbuni - Open Source MMS Gateway
|
||||
*
|
||||
* config file functions
|
||||
*
|
||||
* Copyright (C) 2003 - 2006, Digital Solutions Ltd. - http://www.dsmagic.com
|
||||
*
|
||||
* Paul Bagyenda <bagyenda@dsmagic.com>
|
||||
*
|
||||
* This program is free software, distributed under the terms of
|
||||
* the GNU General Public License, with a few exceptions granted (see LICENSE)
|
||||
*/
|
||||
#ifndef __MMS_CFG__INCLUDED__
|
||||
#define __MMS_CFG__INCLUDED__
|
||||
|
||||
#include "gwlib/gwlib.h"
|
||||
#include "gwlib/mime.h"
|
||||
|
||||
#include "config.h"
|
||||
|
||||
typedef struct mCfg mCfg; /* config file structure. */
|
||||
typedef struct mCfgGrp mCfgGrp; /* A config group. */
|
||||
|
||||
|
||||
/* Read a config file, return the structure. */
|
||||
mCfg *mms_cfg_read(Octstr *file);
|
||||
|
||||
/* Destroy it all . */
|
||||
void mms_cfg_destroy(mCfg *cfg);
|
||||
|
||||
/* Get a single group object by name. */
|
||||
mCfgGrp *mms_cfg_get_single(mCfg *cfg, Octstr *name);
|
||||
|
||||
/* Get a multiple groups all of same name. */
|
||||
List *mms_cfg_get_multi(mCfg *cfg,Octstr *name);
|
||||
|
||||
/* Get a string field value from a group. */
|
||||
Octstr *mms_cfg_get(mCfgGrp *grp, Octstr *name);
|
||||
|
||||
|
||||
/* Get an integer field value from a group.
|
||||
* returns 0 on success, -1 on error.
|
||||
*/
|
||||
int mms_cfg_get_int(mCfgGrp *grp, Octstr *name, long *n);
|
||||
|
||||
/* Get a boolean field value from a group.
|
||||
* returns 0 on success, -1 on error
|
||||
*/
|
||||
int mms_cfg_get_bool(mCfgGrp *grp, Octstr *name, int *bool);
|
||||
|
||||
/* Get a field value from a group. */
|
||||
List *mms_cfg_get_list(mCfgGrp *grp, Octstr *name);
|
||||
|
||||
|
||||
#endif
|
||||
|
|
@ -27,48 +27,48 @@
|
|||
#include "mms_uaprof.h"
|
||||
|
||||
|
||||
Octstr *_mms_cfg_getx(CfgGroup *grp, Octstr *item)
|
||||
Octstr *_mms_cfg_getx(mCfgGrp *grp, Octstr *item)
|
||||
{
|
||||
Octstr *v = cfg_get(grp, item);
|
||||
Octstr *v = mms_cfg_get(grp, item);
|
||||
|
||||
return v ? v : octstr_create("");
|
||||
}
|
||||
|
||||
|
||||
int mms_load_core_settings(CfgGroup *cgrp)
|
||||
int mms_load_core_settings(mCfgGrp *cgrp)
|
||||
{
|
||||
Octstr *log, *alog;
|
||||
Octstr *http_proxy_host;
|
||||
long loglevel;
|
||||
|
||||
/* Set the log file. */
|
||||
log = cfg_get(cgrp, octstr_imm("log-file"));
|
||||
log = mms_cfg_get(cgrp, octstr_imm("log-file"));
|
||||
if (log != NULL) {
|
||||
if (cfg_get_integer(&loglevel, cgrp, octstr_imm("log-level")) == -1)
|
||||
if (mms_cfg_get_int(cgrp, octstr_imm("log-level"), &loglevel) == -1)
|
||||
loglevel = 0;
|
||||
log_open(octstr_get_cstr(log), loglevel, GW_NON_EXCL);
|
||||
octstr_destroy(log);
|
||||
}
|
||||
|
||||
/* Get access log and open it. */
|
||||
alog = cfg_get(cgrp, octstr_imm("access-log"));
|
||||
alog = mms_cfg_get(cgrp, octstr_imm("access-log"));
|
||||
if (alog) {
|
||||
alog_open(octstr_get_cstr(alog), 1, 1);
|
||||
octstr_destroy(alog);
|
||||
}
|
||||
|
||||
/* look for http proxy. If set, use it. */
|
||||
if ((http_proxy_host = cfg_get(cgrp, octstr_imm("http-proxy-host"))) != NULL) {
|
||||
if ((http_proxy_host = mms_cfg_get(cgrp, octstr_imm("http-proxy-host"))) != NULL) {
|
||||
|
||||
Octstr *username = cfg_get(cgrp,
|
||||
Octstr *username = mms_cfg_get(cgrp,
|
||||
octstr_imm("http-proxy-username"));
|
||||
Octstr *password = cfg_get(cgrp,
|
||||
Octstr *password = mms_cfg_get(cgrp,
|
||||
octstr_imm("http-proxy-password"));
|
||||
List *exceptions = cfg_get_list(cgrp,
|
||||
List *exceptions = mms_cfg_get_list(cgrp,
|
||||
octstr_imm("http-proxy-exceptions"));
|
||||
long http_proxy_port = -1;
|
||||
|
||||
cfg_get_integer(&http_proxy_port, cgrp, octstr_imm("http-proxy-port"));
|
||||
mms_cfg_get_int(cgrp, octstr_imm("http-proxy-port"), &http_proxy_port);
|
||||
|
||||
if (http_proxy_port > 0)
|
||||
http_use_proxy(http_proxy_host, http_proxy_port,
|
||||
|
@ -80,7 +80,41 @@ int mms_load_core_settings(CfgGroup *cgrp)
|
|||
}
|
||||
|
||||
#ifdef HAVE_LIBSSL
|
||||
conn_config_ssl(cgrp);
|
||||
/* We expect that gwlib_init() has been called already, so only need
|
||||
* to setup cert files.
|
||||
* -- adapted from gwlib/conn.c
|
||||
*/
|
||||
{
|
||||
Octstr *ssl_client_certkey_file = NULL;
|
||||
Octstr *ssl_server_cert_file = NULL;
|
||||
Octstr *ssl_server_key_file = NULL;
|
||||
Octstr *ssl_trusted_ca_file = NULL;
|
||||
|
||||
/*
|
||||
* check if SSL is desired for HTTP servers and then
|
||||
* load SSL client and SSL server public certificates
|
||||
* and private keys
|
||||
*/
|
||||
ssl_client_certkey_file = mms_cfg_get(cgrp, octstr_imm("ssl-client-certkey-file"));
|
||||
if (ssl_client_certkey_file != NULL)
|
||||
use_global_client_certkey_file(ssl_client_certkey_file);
|
||||
|
||||
ssl_server_cert_file = mms_cfg_get(cgrp, octstr_imm("ssl-server-cert-file"));
|
||||
ssl_server_key_file = mms_cfg_get(cgrp, octstr_imm("ssl-server-key-file"));
|
||||
|
||||
if (ssl_server_cert_file != NULL && ssl_server_key_file != NULL)
|
||||
use_global_server_certkey_file(ssl_server_cert_file,
|
||||
ssl_server_key_file);
|
||||
|
||||
ssl_trusted_ca_file = mms_cfg_get(cgrp, octstr_imm("ssl-trusted-ca-file"));
|
||||
|
||||
use_global_trusted_ca_file(ssl_trusted_ca_file);
|
||||
|
||||
octstr_destroy(ssl_client_certkey_file);
|
||||
octstr_destroy(ssl_server_cert_file);
|
||||
octstr_destroy(ssl_server_key_file);
|
||||
octstr_destroy(ssl_trusted_ca_file);
|
||||
}
|
||||
#endif
|
||||
|
||||
return 0;
|
||||
|
|
|
@ -20,7 +20,7 @@
|
|||
#include "mms_strings.h"
|
||||
#include "mms_msg.h"
|
||||
#include "mms_mm7soap.h"
|
||||
|
||||
#include "mms_cfg.h"
|
||||
#include "mms_mmbox.h"
|
||||
|
||||
/* Send errors */
|
||||
|
@ -50,7 +50,7 @@
|
|||
enum mms_loc_t {MMS_LOC_MMBOX = 1, MMS_LOC_MQUEUE=2};
|
||||
|
||||
|
||||
extern int mms_load_core_settings(CfgGroup *cgrp);
|
||||
extern int mms_load_core_settings(mCfgGrp *cgrp);
|
||||
|
||||
extern Octstr *mms_maketransid(char *qf, Octstr *mmscname);
|
||||
|
||||
|
@ -125,7 +125,7 @@ extern MIMEEntity *mime_entity_duplicate(MIMEEntity *m);
|
|||
int _mms_gw_isprint(int c);
|
||||
|
||||
/* Special form of cfg_get which returns zero-length string when there is nothing. */
|
||||
Octstr *_mms_cfg_getx(CfgGroup *grp, Octstr *item);
|
||||
Octstr *_mms_cfg_getx(mCfgGrp *grp, Octstr *item);
|
||||
|
||||
/* Get envelope data from message headers. */
|
||||
void mms_collect_envdata_from_msgheaders(List *mh, List **xto,
|
||||
|
|
|
@ -456,7 +456,7 @@ int main(int argc, char *argv[])
|
|||
{
|
||||
Octstr *fname;
|
||||
int cfidx;
|
||||
Cfg *cfg;
|
||||
mCfg *cfg;
|
||||
|
||||
long qthread = 0, sthread = 0;
|
||||
|
||||
|
@ -471,9 +471,9 @@ int main(int argc, char *argv[])
|
|||
else
|
||||
fname = octstr_create(argv[cfidx]);
|
||||
|
||||
cfg = cfg_create(fname);
|
||||
cfg = mms_cfg_read(fname);
|
||||
|
||||
if (cfg_read(cfg) == -1)
|
||||
if (cfg == NULL)
|
||||
panic(0, "Couldn't read configuration from '%s'.", octstr_get_cstr(fname));
|
||||
|
||||
octstr_destroy(fname);
|
||||
|
@ -484,7 +484,7 @@ int main(int argc, char *argv[])
|
|||
|
||||
mms_load_mmsbox_settings(cfg,(gwthread_func_t *)mmsc_receive_func);
|
||||
|
||||
cfg_destroy(cfg);
|
||||
mms_cfg_destroy(cfg);
|
||||
|
||||
signal(SIGHUP, quit_now);
|
||||
signal(SIGTERM, quit_now);
|
||||
|
|
|
@ -34,10 +34,10 @@ Octstr *unified_prefix;
|
|||
|
||||
struct SendMmsPortInfo sendmms_port;
|
||||
|
||||
int mms_load_mmsbox_settings(Cfg *cfg, gwthread_func_t *mmsc_handler_func)
|
||||
int mms_load_mmsbox_settings(mCfg *cfg, gwthread_func_t *mmsc_handler_func)
|
||||
{
|
||||
CfgGroup *grp = cfg_get_single_group(cfg, octstr_imm("mbuni"));
|
||||
CfgGroup *cgrp = cfg_get_single_group(cfg, octstr_imm("core"));
|
||||
mCfgGrp *grp = mms_cfg_get_single(cfg, octstr_imm("mbuni"));
|
||||
mCfgGrp *cgrp = mms_cfg_get_single(cfg, octstr_imm("core"));
|
||||
Octstr *gdir, *s;
|
||||
int send_port_ssl = 0;
|
||||
List *l;
|
||||
|
@ -50,7 +50,7 @@ int mms_load_mmsbox_settings(Cfg *cfg, gwthread_func_t *mmsc_handler_func)
|
|||
mms_services = list_create();
|
||||
mmscs = list_create();
|
||||
|
||||
gdir = cfg_get(grp, octstr_imm("storage-directory"));
|
||||
gdir = mms_cfg_get(grp, octstr_imm("storage-directory"));
|
||||
|
||||
if (gdir == NULL)
|
||||
gdir = octstr_imm(".");
|
||||
|
@ -77,19 +77,19 @@ int mms_load_mmsbox_settings(Cfg *cfg, gwthread_func_t *mmsc_handler_func)
|
|||
panic(0, "Failed to initialise dlr storage directory: %s - %s!",
|
||||
octstr_get_cstr(dlr_dir), strerror(errno));
|
||||
|
||||
if (cfg_get_integer(&mmsbox_maxsendattempts, grp,
|
||||
octstr_imm("maximum-send-attempts")) < 0)
|
||||
if (mms_cfg_get_int(grp,
|
||||
octstr_imm("maximum-send-attempts"), &mmsbox_maxsendattempts) < 0)
|
||||
mmsbox_maxsendattempts = MAXQTRIES;
|
||||
|
||||
if (cfg_get_integer(&mmsbox_send_back_off, grp,
|
||||
octstr_imm("send-attempt-back-off")) == -1)
|
||||
if (mms_cfg_get_int(grp,
|
||||
octstr_imm("send-attempt-back-off"), &mmsbox_send_back_off) == -1)
|
||||
mmsbox_send_back_off = BACKOFF_FACTOR;
|
||||
|
||||
|
||||
if (cfg_get_integer(&maxthreads, grp, octstr_imm("max-send-threads")) == -1)
|
||||
if (mms_cfg_get_int(grp, octstr_imm("max-send-threads"), &maxthreads) == -1)
|
||||
maxthreads = 10;
|
||||
|
||||
s = cfg_get(grp, octstr_imm("queue-run-interval"));
|
||||
s = mms_cfg_get(grp, octstr_imm("queue-run-interval"));
|
||||
if (s) {
|
||||
queue_interval = atof(octstr_get_cstr(s));
|
||||
octstr_destroy(s);
|
||||
|
@ -101,30 +101,30 @@ int mms_load_mmsbox_settings(Cfg *cfg, gwthread_func_t *mmsc_handler_func)
|
|||
|
||||
unified_prefix = _mms_cfg_getx(grp, octstr_imm("unified-prefix"));
|
||||
|
||||
cfg_get_integer(&sendmms_port.port, grp, octstr_imm("sendmms-port"));
|
||||
mms_cfg_get_int(grp, octstr_imm("sendmms-port"), &sendmms_port.port);
|
||||
#ifdef HAVE_LIBSSL
|
||||
cfg_get_bool(&send_port_ssl, grp, octstr_imm("sendmms-port-ssl"));
|
||||
mms_cfg_get_bool(grp, octstr_imm("sendmms-port-ssl"), &send_port_ssl);
|
||||
#endif
|
||||
if (http_open_port(sendmms_port.port, send_port_ssl) < 0)
|
||||
error(0, "MMSBox: Failed to start sendmms HTTP server on %ld: %s!",
|
||||
sendmms_port.port,
|
||||
strerror(errno));
|
||||
|
||||
sendmms_port.allow_ip = cfg_get(grp, octstr_imm("allow-ip"));
|
||||
sendmms_port.deny_ip = cfg_get(grp, octstr_imm("deny-ip"));
|
||||
sendmms_port.allow_ip = mms_cfg_get(grp, octstr_imm("allow-ip"));
|
||||
sendmms_port.deny_ip = mms_cfg_get(grp, octstr_imm("deny-ip"));
|
||||
|
||||
/* Now get sendmms users. */
|
||||
|
||||
l = cfg_get_multi_group(cfg, octstr_imm("send-mms-user"));
|
||||
l = mms_cfg_get_multi(cfg, octstr_imm("send-mms-user"));
|
||||
for (i = 0, n = list_len(l); i < n; i++) {
|
||||
CfgGroup *x = list_get(l, i);
|
||||
mCfgGrp *x = list_get(l, i);
|
||||
SendMmsUser *u = gw_malloc(sizeof *u);
|
||||
|
||||
memset(u, 0, sizeof *u);
|
||||
|
||||
u->user = _mms_cfg_getx(x, octstr_imm("username"));
|
||||
u->pass = _mms_cfg_getx(x, octstr_imm("password"));
|
||||
u->faked_sender = cfg_get(x, octstr_imm("faked-sender"));
|
||||
u->faked_sender = mms_cfg_get(x, octstr_imm("faked-sender"));
|
||||
u->dlr_url = _mms_cfg_getx(x, octstr_imm("delivery-report-url"));
|
||||
u->rr_url = _mms_cfg_getx(x, octstr_imm("read-report-url"));
|
||||
list_append(sendmms_users, u);
|
||||
|
@ -132,9 +132,9 @@ int mms_load_mmsbox_settings(Cfg *cfg, gwthread_func_t *mmsc_handler_func)
|
|||
list_destroy(l, NULL);
|
||||
|
||||
/* Get mmsc list. */
|
||||
l = cfg_get_multi_group(cfg, octstr_imm("mmsc"));
|
||||
l = mms_cfg_get_multi(cfg, octstr_imm("mmsc"));
|
||||
for (i = 0, n = list_len(l); i < n; i++) {
|
||||
CfgGroup *x = list_get(l, i);
|
||||
mCfgGrp *x = list_get(l, i);
|
||||
MmscGrp *m = gw_malloc(sizeof *m);
|
||||
int ssl = 0;
|
||||
Octstr *type;
|
||||
|
@ -144,19 +144,19 @@ int mms_load_mmsbox_settings(Cfg *cfg, gwthread_func_t *mmsc_handler_func)
|
|||
m->id = _mms_cfg_getx(x, octstr_imm("id"));
|
||||
m->mmsc_url = _mms_cfg_getx(x, octstr_imm("mmsc-url"));
|
||||
|
||||
m->allowed_prefix = cfg_get(x, octstr_imm("allowed-prefix"));
|
||||
m->denied_prefix = cfg_get(x, octstr_imm("denied-prefix"));
|
||||
m->allowed_prefix = mms_cfg_get(x, octstr_imm("allowed-prefix"));
|
||||
m->denied_prefix = mms_cfg_get(x, octstr_imm("denied-prefix"));
|
||||
|
||||
m->incoming.allow_ip = cfg_get(x, octstr_imm("allow-ip"));
|
||||
m->incoming.deny_ip = cfg_get(x, octstr_imm("deny-ip"));
|
||||
m->incoming.allow_ip = mms_cfg_get(x, octstr_imm("allow-ip"));
|
||||
m->incoming.deny_ip = mms_cfg_get(x, octstr_imm("deny-ip"));
|
||||
|
||||
m->incoming.user = _mms_cfg_getx(x, octstr_imm("incoming-username"));
|
||||
m->incoming.pass = _mms_cfg_getx(x, octstr_imm("incoming-password"));
|
||||
cfg_get_integer(&m->incoming.port, x, octstr_imm("incoming-port"));
|
||||
mms_cfg_get_int(x, octstr_imm("incoming-port"), &m->incoming.port);
|
||||
#ifdef HAVE_LIBSSL
|
||||
cfg_get_bool(&ssl, x, octstr_imm("incoming-port-ssl"));
|
||||
mms_cfg_get_bool(x, octstr_imm("incoming-port-ssl"), &ssl);
|
||||
#endif
|
||||
cfg_get_integer(&m->throughput, x, octstr_imm("max-throughput"));
|
||||
mms_cfg_get_int(x, octstr_imm("max-throughput"), &m->throughput);
|
||||
|
||||
type = _mms_cfg_getx(x, octstr_imm("type"));
|
||||
if (octstr_case_compare(type, octstr_imm("eaif")) == 0)
|
||||
|
@ -191,28 +191,28 @@ int mms_load_mmsbox_settings(Cfg *cfg, gwthread_func_t *mmsc_handler_func)
|
|||
list_destroy(l, NULL);
|
||||
|
||||
|
||||
l = cfg_get_multi_group(cfg, octstr_imm("mms-service"));
|
||||
l = mms_cfg_get_multi(cfg, octstr_imm("mms-service"));
|
||||
for (i = 0, n = list_len(l); i < n; i++) {
|
||||
CfgGroup *x = list_get(l, i);
|
||||
mCfgGrp *x = list_get(l, i);
|
||||
MmsService *m = gw_malloc(sizeof *m);
|
||||
Octstr *s;
|
||||
|
||||
m->name = _mms_cfg_getx(x, octstr_imm("name"));
|
||||
if ((m->url = cfg_get(x, octstr_imm("get-url"))) != NULL)
|
||||
if ((m->url = mms_cfg_get(x, octstr_imm("get-url"))) != NULL)
|
||||
m->type = TRANS_TYPE_GET_URL;
|
||||
else if ((m->url = cfg_get(x, octstr_imm("post-url"))) != NULL)
|
||||
else if ((m->url = mms_cfg_get(x, octstr_imm("post-url"))) != NULL)
|
||||
m->type = TRANS_TYPE_POST_URL;
|
||||
else if ((m->url = cfg_get(x, octstr_imm("file"))) != NULL)
|
||||
else if ((m->url = mms_cfg_get(x, octstr_imm("file"))) != NULL)
|
||||
m->type = TRANS_TYPE_FILE;
|
||||
else if ((m->url = cfg_get(x, octstr_imm("exec"))) != NULL)
|
||||
else if ((m->url = mms_cfg_get(x, octstr_imm("exec"))) != NULL)
|
||||
m->type = TRANS_TYPE_EXEC;
|
||||
else if ((m->url = cfg_get(x, octstr_imm("text"))) != NULL)
|
||||
else if ((m->url = mms_cfg_get(x, octstr_imm("text"))) != NULL)
|
||||
m->type = TRANS_TYPE_TEXT;
|
||||
else
|
||||
panic(0, "MMSBox: Service [%s] has no url!", octstr_get_cstr(m->name));
|
||||
|
||||
m->faked_sender = cfg_get(x, octstr_imm("faked-sender"));
|
||||
cfg_get_bool(&m->isdefault, x, octstr_imm("catch-all"));
|
||||
m->faked_sender = mms_cfg_get(x, octstr_imm("faked-sender"));
|
||||
mms_cfg_get_bool(x, octstr_imm("catch-all"), &m->isdefault);
|
||||
|
||||
if (m->isdefault) {
|
||||
if (catchall)
|
||||
|
@ -220,36 +220,36 @@ int mms_load_mmsbox_settings(Cfg *cfg, gwthread_func_t *mmsc_handler_func)
|
|||
catchall = m;
|
||||
}
|
||||
|
||||
cfg_get_bool(&m->omitempty, x, octstr_imm("omit-empty"));
|
||||
cfg_get_bool(&m->accept_x_headers, x, octstr_imm("accept-x-mbuni-headers"));
|
||||
cfg_get_bool(&m->assume_plain_text, x, octstr_imm("assume-plain-text"));
|
||||
mms_cfg_get_bool(x, octstr_imm("omit-empty"), &m->omitempty);
|
||||
mms_cfg_get_bool(x, octstr_imm("accept-x-mbuni-headers"), &m->accept_x_headers);
|
||||
mms_cfg_get_bool(x, octstr_imm("assume-plain-text"), &m->assume_plain_text);
|
||||
|
||||
if ((s = cfg_get(x, octstr_imm("accepted-mmscs"))) != NULL) {
|
||||
if ((s = mms_cfg_get(x, octstr_imm("accepted-mmscs"))) != NULL) {
|
||||
m->allowed_mmscs = octstr_split(s, octstr_imm(";"));
|
||||
octstr_destroy(s);
|
||||
} else
|
||||
m->allowed_mmscs = NULL; /* means allow all. */
|
||||
|
||||
if ((s = cfg_get(x, octstr_imm("denied-mmscs"))) != NULL) {
|
||||
if ((s = mms_cfg_get(x, octstr_imm("denied-mmscs"))) != NULL) {
|
||||
m->denied_mmscs = octstr_split(s, octstr_imm(";"));
|
||||
octstr_destroy(s);
|
||||
} else
|
||||
m->denied_mmscs = NULL; /* means allow all. */
|
||||
|
||||
/* Get key words. Start with aliases to make life easier. */
|
||||
if ((s = cfg_get(x, octstr_imm("aliases"))) != NULL) {
|
||||
if ((s = mms_cfg_get(x, octstr_imm("aliases"))) != NULL) {
|
||||
m->keywords = octstr_split(s, octstr_imm(";"));
|
||||
octstr_destroy(s);
|
||||
} else
|
||||
m->keywords = list_create();
|
||||
|
||||
s = cfg_get(x, octstr_imm("keyword"));
|
||||
s = mms_cfg_get(x, octstr_imm("keyword"));
|
||||
if (!s)
|
||||
panic(0, "MMSBox: Service [%s] has no keyword!", octstr_get_cstr(m->name));
|
||||
else
|
||||
list_append(m->keywords, s);
|
||||
|
||||
if ((s = cfg_get(x, octstr_imm("http-post-parameters"))) != NULL) {
|
||||
if ((s = mms_cfg_get(x, octstr_imm("http-post-parameters"))) != NULL) {
|
||||
List *r = octstr_split(s, octstr_imm("&"));
|
||||
int i, n;
|
||||
m->params = list_create();
|
||||
|
|
|
@ -79,5 +79,5 @@ extern struct SendMmsPortInfo {
|
|||
} sendmms_port;
|
||||
|
||||
|
||||
extern int mms_load_mmsbox_settings(Cfg *cfg, gwthread_func_t *mmsc_handler_func);
|
||||
extern int mms_load_mmsbox_settings(mCfg *cfg, gwthread_func_t *mmsc_handler_func);
|
||||
#endif
|
||||
|
|
|
@ -27,12 +27,12 @@
|
|||
|
||||
|
||||
|
||||
static void *load_module(CfgGroup *grp, char *config_key, char *symbolname)
|
||||
static void *load_module(mCfgGrp *grp, char *config_key, char *symbolname)
|
||||
{
|
||||
Octstr *s;
|
||||
void *retval = NULL;
|
||||
|
||||
s = cfg_get(grp, octstr_imm(config_key));
|
||||
s = mms_cfg_get(grp, octstr_imm(config_key));
|
||||
if (s) {
|
||||
void *x = dlopen(octstr_get_cstr(s), RTLD_LAZY);
|
||||
void *y = NULL;
|
||||
|
@ -60,13 +60,13 @@ static void *load_module(CfgGroup *grp, char *config_key, char *symbolname)
|
|||
return retval;
|
||||
}
|
||||
|
||||
MmscSettings *mms_load_mmsc_settings(Cfg *cfg, List **proxyrelays)
|
||||
MmscSettings *mms_load_mmsc_settings(mCfg *cfg, List **proxyrelays)
|
||||
{
|
||||
Octstr *s;
|
||||
|
||||
List *l;
|
||||
CfgGroup *grp = cfg_get_single_group(cfg, octstr_imm("mbuni"));
|
||||
CfgGroup *cgrp = cfg_get_single_group(cfg, octstr_imm("core"));
|
||||
mCfgGrp *grp = mms_cfg_get_single(cfg, octstr_imm("mbuni"));
|
||||
mCfgGrp *cgrp = mms_cfg_get_single(cfg, octstr_imm("core"));
|
||||
MmscSettings *m = gw_malloc(sizeof *m);
|
||||
long port = -1;
|
||||
Octstr *from, *user, *pass;
|
||||
|
@ -89,7 +89,7 @@ MmscSettings *mms_load_mmsc_settings(Cfg *cfg, List **proxyrelays)
|
|||
l = list_create();
|
||||
m->local_domains = l;
|
||||
|
||||
if (cfg_get_integer(&m->maxthreads, grp, octstr_imm("max-send-threads")) == -1)
|
||||
if (mms_cfg_get_int(grp, octstr_imm("max-send-threads"), &m->maxthreads) == -1)
|
||||
m->maxthreads = 10;
|
||||
|
||||
m->unified_prefix = _mms_cfg_getx(grp, octstr_imm("unified-prefix"));
|
||||
|
@ -143,10 +143,10 @@ MmscSettings *mms_load_mmsc_settings(Cfg *cfg, List **proxyrelays)
|
|||
panic(0, "Failed to initialise UA Profile directory, error: %s!",
|
||||
strerror(errno));
|
||||
|
||||
if (cfg_get_integer(&m->maxsendattempts, grp, octstr_imm("maximum-send-attempts")) == -1)
|
||||
if (mms_cfg_get_int(grp, octstr_imm("maximum-send-attempts"), &m->maxsendattempts) == -1)
|
||||
m->maxsendattempts = MAXQTRIES;
|
||||
|
||||
if (cfg_get_integer(&m->default_msgexpiry, grp, octstr_imm("default-message-expiry")) == -1)
|
||||
if (mms_cfg_get_int(grp, octstr_imm("default-message-expiry"), &m->default_msgexpiry) == -1)
|
||||
m->default_msgexpiry = DEFAULT_EXPIRE;
|
||||
|
||||
s = _mms_cfg_getx(grp, octstr_imm("queue-run-interval"));
|
||||
|
@ -156,7 +156,7 @@ MmscSettings *mms_load_mmsc_settings(Cfg *cfg, List **proxyrelays)
|
|||
if (s)
|
||||
octstr_destroy(s);
|
||||
|
||||
if (cfg_get_integer(&m->send_back_off, grp, octstr_imm("send-attempt-back-off")) == -1)
|
||||
if (mms_cfg_get_int(grp, octstr_imm("send-attempt-back-off"), &m->send_back_off) == -1)
|
||||
m->send_back_off = BACKOFF_FACTOR;
|
||||
|
||||
/* Make send sms url. */
|
||||
|
@ -164,7 +164,7 @@ MmscSettings *mms_load_mmsc_settings(Cfg *cfg, List **proxyrelays)
|
|||
|
||||
user = _mms_cfg_getx(grp, octstr_imm("sendsms-username"));
|
||||
pass = _mms_cfg_getx(grp, octstr_imm("sendsms-password"));
|
||||
from = cfg_get(grp, octstr_imm("sendsms-global-sender"));
|
||||
from = mms_cfg_get(grp, octstr_imm("sendsms-global-sender"));
|
||||
|
||||
if (user && octstr_len(user) > 1)
|
||||
octstr_url_encode(user);
|
||||
|
@ -187,12 +187,12 @@ MmscSettings *mms_load_mmsc_settings(Cfg *cfg, List **proxyrelays)
|
|||
octstr_destroy(pass);
|
||||
if (from) octstr_destroy(from);
|
||||
|
||||
cfg_get_integer(&port, grp, octstr_imm("mms-port"));
|
||||
mms_cfg_get_int(grp, octstr_imm("mms-port"), &port);
|
||||
|
||||
m->port = (port > 0) ? port : MMS_PORT;
|
||||
|
||||
m->mm7port = -1;
|
||||
cfg_get_integer(&m->mm7port, grp, octstr_imm("mm7-port"));
|
||||
mms_cfg_get_int(grp, octstr_imm("mm7-port"), &m->mm7port);
|
||||
|
||||
m->allow_ip = _mms_cfg_getx(grp, octstr_imm("allow-ip"));
|
||||
m->deny_ip = _mms_cfg_getx(grp, octstr_imm("deny-ip"));
|
||||
|
@ -212,13 +212,13 @@ MmscSettings *mms_load_mmsc_settings(Cfg *cfg, List **proxyrelays)
|
|||
|
||||
m->mms_toolarge = _mms_cfg_getx(grp, octstr_imm("mms-message-too-large-txt"));
|
||||
|
||||
m->wap_gw_msisdn_header = cfg_get(grp, octstr_imm("mms-client-msisdn-header"));
|
||||
m->wap_gw_msisdn_header = mms_cfg_get(grp, octstr_imm("mms-client-msisdn-header"));
|
||||
if (!m->wap_gw_msisdn_header) m->wap_gw_msisdn_header = octstr_imm(XMSISDN_HEADER);
|
||||
|
||||
m->wap_gw_ip_header = cfg_get(grp, octstr_imm("mms-client-ip-header"));
|
||||
m->wap_gw_ip_header = mms_cfg_get(grp, octstr_imm("mms-client-ip-header"));
|
||||
if (!m->wap_gw_ip_header) m->wap_gw_ip_header = octstr_imm(XIP_HEADER);
|
||||
|
||||
cfg_get_bool(&m->notify_unprovisioned, grp, octstr_imm("notify-unprovisioned"));
|
||||
mms_cfg_get_bool(grp, octstr_imm("notify-unprovisioned"), &m->notify_unprovisioned);
|
||||
|
||||
m->billing_params = _mms_cfg_getx(grp,
|
||||
octstr_imm("billing-module-parameters"));
|
||||
|
@ -263,29 +263,30 @@ MmscSettings *mms_load_mmsc_settings(Cfg *cfg, List **proxyrelays)
|
|||
} else
|
||||
m->mms_detokenizefuncs = NULL;
|
||||
|
||||
if (cfg_get_bool(&m->allow_ip_type, grp, octstr_imm("allow-ip-type")) < 0)
|
||||
if (mms_cfg_get_bool(grp, octstr_imm("allow-ip-type"), &m->allow_ip_type) < 0)
|
||||
m->allow_ip_type = 1;
|
||||
|
||||
cfg_get_bool(&m->optimize_notification_size, grp, octstr_imm("optimize-notification-size"));
|
||||
mms_cfg_get_bool(grp, octstr_imm("optimize-notification-size"),
|
||||
&m->optimize_notification_size);
|
||||
|
||||
if (cfg_get_bool(&m->content_adaptation, grp, octstr_imm("content-adaptation")) < 0)
|
||||
if (mms_cfg_get_bool(grp, octstr_imm("content-adaptation"), &m->content_adaptation) < 0)
|
||||
m->content_adaptation = 1;
|
||||
|
||||
if (qdir)
|
||||
octstr_destroy(qdir);
|
||||
|
||||
/* Now load the VASP list. */
|
||||
l = cfg_get_multi_group(cfg, octstr_imm("mms-vasp"));
|
||||
l = mms_cfg_get_multi(cfg, octstr_imm("mms-vasp"));
|
||||
m->vasp_list = list_create();
|
||||
for (i=0, n=list_len(l); i<n; i++) {
|
||||
CfgGroup *grp = list_get(l, i);
|
||||
mCfgGrp *grp = list_get(l, i);
|
||||
MmsVasp *mv = gw_malloc(sizeof *mv);
|
||||
Octstr *s;
|
||||
int ibool = 0;
|
||||
|
||||
mv->id = _mms_cfg_getx(grp, octstr_imm("vasp-id"));
|
||||
mv->short_code = -1;
|
||||
cfg_get_integer(&mv->short_code, grp, octstr_imm("short-code"));
|
||||
mms_cfg_get_int(grp, octstr_imm("short-code"), &mv->short_code);
|
||||
|
||||
mv->vasp_username = _mms_cfg_getx(grp, octstr_imm("vasp-username"));
|
||||
mv->vasp_password = _mms_cfg_getx(grp, octstr_imm("vasp-password"));
|
||||
|
@ -306,13 +307,13 @@ MmscSettings *mms_load_mmsc_settings(Cfg *cfg, List **proxyrelays)
|
|||
octstr_destroy(s);
|
||||
|
||||
/* Set the handler vasp accounts. */
|
||||
if (cfg_get_bool(&ibool, grp, octstr_imm("mms-to-email-handler")) == 0 &&
|
||||
if (mms_cfg_get_bool(grp, octstr_imm("mms-to-email-handler"), &ibool) == 0 &&
|
||||
ibool) {
|
||||
if (m->mms2email)
|
||||
warning(0, "mms-to-email handler VASP specified more than once! Only last config taken.");
|
||||
m->mms2email = mv;
|
||||
}
|
||||
if (cfg_get_bool(&ibool, grp, octstr_imm("mms-to-local-copy-handler")) == 0 &&
|
||||
if (mms_cfg_get_bool(grp, octstr_imm("mms-to-local-copy-handler"), &ibool) == 0 &&
|
||||
ibool) {
|
||||
if (m->mms2mobile)
|
||||
warning(0, "mms-to-mobile copy handler VASP specified more than once! Only last config taken.");
|
||||
|
@ -324,14 +325,14 @@ MmscSettings *mms_load_mmsc_settings(Cfg *cfg, List **proxyrelays)
|
|||
return m;
|
||||
}
|
||||
|
||||
List *mms_proxy_relays(Cfg *cfg)
|
||||
List *mms_proxy_relays(mCfg *cfg)
|
||||
{
|
||||
List *gl = cfg_get_multi_group(cfg, octstr_imm("mmsproxy"));
|
||||
List *gl = mms_cfg_get_multi(cfg, octstr_imm("mmsproxy"));
|
||||
int i, n;
|
||||
List *l = list_create();
|
||||
|
||||
for (i = 0, n = list_len(gl); i < n; i++) {
|
||||
CfgGroup *grp = list_get(gl, i);
|
||||
mCfgGrp *grp = list_get(gl, i);
|
||||
MmsProxyRelay *m = gw_malloc(sizeof *m);
|
||||
|
||||
m->host = _mms_cfg_getx(grp, octstr_imm("host"));
|
||||
|
|
|
@ -98,10 +98,10 @@ typedef struct MmscSettings {
|
|||
} MmscSettings;
|
||||
|
||||
/* Returns mmsc settings. */
|
||||
MmscSettings *mms_load_mmsc_settings(Cfg *cfg, List **proxyrelays);
|
||||
MmscSettings *mms_load_mmsc_settings(mCfg *cfg, List **proxyrelays);
|
||||
|
||||
/* Returns list of MmsProxyRelay */
|
||||
extern List *mms_proxy_relays(Cfg *cfg);
|
||||
extern List *mms_proxy_relays(mCfg *cfg);
|
||||
|
||||
extern Octstr *mms_makefetchurl(char *qf, Octstr *token, int loc,
|
||||
Octstr *to,
|
||||
|
|
|
@ -28,7 +28,7 @@ static int find_own(int i, int argc, char *argv[]);
|
|||
static void fixup_recipient(void);
|
||||
static void fixup_sender(void);
|
||||
|
||||
static Cfg *cfg;
|
||||
static mCfg *cfg;
|
||||
static List *proxyrelays;
|
||||
int main(int argc, char *argv[])
|
||||
{
|
||||
|
@ -51,9 +51,9 @@ int main(int argc, char *argv[])
|
|||
else
|
||||
fname = octstr_create(argv[cfidx]);
|
||||
|
||||
cfg = cfg_create(fname);
|
||||
cfg = mms_cfg_read(fname);
|
||||
|
||||
if (cfg_read(cfg) == -1)
|
||||
if (cfg == NULL)
|
||||
panic(0, "Couldn't read configuration from '%s'.", octstr_get_cstr(fname));
|
||||
|
||||
octstr_destroy(fname);
|
||||
|
@ -64,7 +64,7 @@ int main(int argc, char *argv[])
|
|||
/* Load settings. */
|
||||
settings = mms_load_mmsc_settings(cfg, &proxyrelays);
|
||||
|
||||
cfg_destroy(cfg);
|
||||
mms_cfg_destroy(cfg);
|
||||
|
||||
if (!settings)
|
||||
panic(0, "No global MMSC configuration!");
|
||||
|
|
|
@ -37,7 +37,7 @@ typedef struct MmsHTTPClientInfo {
|
|||
MmsVasp *vasp;
|
||||
} MmsHTTPClientInfo;
|
||||
|
||||
static Cfg *cfg;
|
||||
static mCfg *cfg;
|
||||
static List *proxyrelays;
|
||||
static MmscSettings *settings;
|
||||
|
||||
|
@ -76,9 +76,9 @@ int main(int argc, char *argv[])
|
|||
else
|
||||
fname = octstr_create(argv[cfidx]);
|
||||
|
||||
cfg = cfg_create(fname);
|
||||
cfg = mms_cfg_read(fname);
|
||||
|
||||
if (cfg_read(cfg) == -1)
|
||||
if (cfg == NULL)
|
||||
panic(0, "Couldn't read configuration from '%s'.", octstr_get_cstr(fname));
|
||||
|
||||
octstr_destroy(fname);
|
||||
|
@ -90,7 +90,7 @@ int main(int argc, char *argv[])
|
|||
/* Load settings. */
|
||||
settings = mms_load_mmsc_settings(cfg, &proxyrelays);
|
||||
|
||||
cfg_destroy(cfg);
|
||||
mms_cfg_destroy(cfg);
|
||||
|
||||
if (!settings)
|
||||
panic(0, "No global MMSC configuration!");
|
||||
|
@ -1696,7 +1696,7 @@ static void mm7soap_dispatch(MmsHTTPClientInfo *h)
|
|||
octstr_compare(e->vaspid, h->vasp->id) != 0) {
|
||||
status = 2001;
|
||||
error(0, "MMS Proxy(MM7): CancelReq: Found message[id=%s]"
|
||||
" bxut vaspid id=%s does not match!",
|
||||
" but vaspid id=%s does not match!",
|
||||
octstr_get_cstr(msgid), octstr_get_cstr(h->vasp->id));
|
||||
} else { /* Kill it. */
|
||||
int i, n;
|
||||
|
|
|
@ -12,7 +12,7 @@
|
|||
*/
|
||||
#include "mmsrelay.h"
|
||||
|
||||
static Cfg *cfg;
|
||||
static mCfg *cfg;
|
||||
MmscSettings *settings;
|
||||
List *proxyrelays;
|
||||
|
||||
|
@ -41,9 +41,9 @@ int main(int argc, char *argv[])
|
|||
else
|
||||
fname = octstr_create(argv[cfidx]);
|
||||
|
||||
cfg = cfg_create(fname);
|
||||
cfg = mms_cfg_read(fname);
|
||||
|
||||
if (cfg_read(cfg) == -1)
|
||||
if (cfg == NULL)
|
||||
panic(0, "Couldn't read configuration from '%s'.", octstr_get_cstr(fname));
|
||||
|
||||
octstr_destroy(fname);
|
||||
|
@ -54,7 +54,7 @@ int main(int argc, char *argv[])
|
|||
|
||||
settings = mms_load_mmsc_settings(cfg,&proxyrelays);
|
||||
|
||||
cfg_destroy(cfg);
|
||||
mms_cfg_destroy(cfg);
|
||||
|
||||
if (!settings)
|
||||
panic(0, "No global MMSC configuration!");
|
||||
|
|
|
@ -66,7 +66,7 @@ static int find_own(int i, int argc, char *argv[])
|
|||
return -1;
|
||||
}
|
||||
|
||||
static Cfg *cfg;
|
||||
static mCfg *cfg;
|
||||
|
||||
static List *proxyrelays;
|
||||
|
||||
|
@ -91,9 +91,9 @@ int main(int argc, char *argv[])
|
|||
else
|
||||
fname = octstr_create(argv[cfidx]);
|
||||
|
||||
cfg = cfg_create(fname);
|
||||
cfg = mms_cfg_read(fname);
|
||||
|
||||
if (cfg_read(cfg) == -1)
|
||||
if (cfg == NULL)
|
||||
panic(0, "Couldn't read configuration from '%s'.", octstr_get_cstr(fname));
|
||||
|
||||
octstr_destroy(fname);
|
||||
|
@ -105,7 +105,7 @@ int main(int argc, char *argv[])
|
|||
/* Load settings. */
|
||||
settings = mms_load_mmsc_settings(cfg, &proxyrelays);
|
||||
|
||||
cfg_destroy(cfg);
|
||||
mms_cfg_destroy(cfg);
|
||||
|
||||
if (!settings)
|
||||
panic(0, "No global MMSC configuration!");
|
||||
|
|
Loading…
Reference in New Issue