diff --git a/mbuni/ChangeLog b/mbuni/ChangeLog index 270aec4..7e25a22 100644 --- a/mbuni/ChangeLog +++ b/mbuni/ChangeLog @@ -1,3 +1,5 @@ +2008-08-28 P. A. Bagyenda + * Added ability to load config from a module rather than from file 2008-08-20 P. A. Bagyenda * Added default mmsc to send-mms-user (Martin) 2008-08-19 P. A. Bagyenda diff --git a/mbuni/mmlib/Makefile.am b/mbuni/mmlib/Makefile.am index 83f8557..6258d11 100644 --- a/mbuni/mmlib/Makefile.am +++ b/mbuni/mmlib/Makefile.am @@ -1,4 +1,4 @@ noinst_LIBRARIES = libmms.a libmms_a_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 mms_cfg.h mms_cfg.def +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 mms_cfg-impl.h diff --git a/mbuni/mmlib/mms_cfg-impl.h b/mbuni/mmlib/mms_cfg-impl.h new file mode 100644 index 0000000..f76e141 --- /dev/null +++ b/mbuni/mmlib/mms_cfg-impl.h @@ -0,0 +1,31 @@ +/* + * Mbuni - Open Source MMS Gateway + * + * config file functions (when conf is loaded from another source) + * + * Copyright (C) 2003 - 2008, Digital Solutions Ltd. - http://www.dsmagic.com + * + * Paul Bagyenda + * + * 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_IMPL__INCLUDED__ +#define __MMS_CFG_IMPL__INCLUDED__ +#include "mms_cfg.h" + +typedef struct mCfgImpl mCfgImpl; /* Implementation-specific struct for config info. */ + +/* each implementation must export struct, symbol 'cfg_funcs'. */ +typedef struct mCfgImpFuncs { + mCfgImpl *(*read)(Octstr *init_param); + void (*destroy)(mCfgImpl *); + mCfgGrp *(*cfg_get_single)(mCfgImpl *cfg, Octstr *name); + List *(*get_multi)(mCfgImpl *cfg,Octstr *name); /* List of mCfgGrp */ + mCfgGrp *(*get_multi_by_field)(mCfgImpl *cfg, Octstr *name, Octstr *field, Octstr *value); + Octstr *(*get)(mCfgImpl *cfg, mCfgGrp *grp, Octstr *name); + Octstr *(*get_grp_name)(mCfgImpl *, mCfgGrp *); +} mCfgImpFuncs; + + +#endif diff --git a/mbuni/mmlib/mms_cfg.c b/mbuni/mmlib/mms_cfg.c index 42f34c2..3443fa9 100644 --- a/mbuni/mmlib/mms_cfg.c +++ b/mbuni/mmlib/mms_cfg.c @@ -16,7 +16,8 @@ #include #include "mms_cfg.h" - +#include "mms_cfg-impl.h" +#include "mms_util.h" /* config file representation. * 'grps' var is indexed by group name. @@ -26,11 +27,14 @@ struct mCfg { Octstr *file; Dict *grps; + + mCfgImpl *xcfg; /* If set, then this is the real source of conf info. */ + mCfgImpFuncs *cfg_funcs; /* Config funcs or NULL */ }; -struct mCfgGrp { +struct mCfgGrp { /* when using file-based, this is our implementation of a group. */ Octstr *name; - Dict *fields; + Dict *fields; }; static void fixup_value(Octstr *value, int lineno) @@ -138,6 +142,9 @@ mCfg *mms_cfg_read(Octstr *file) cfg = gw_malloc(sizeof *cfg); cfg->file = octstr_duplicate(file); cfg->grps = dict_create(7, NULL); + + cfg->xcfg = NULL; + cfg->cfg_funcs = NULL; lines = octstr_split(sf, octstr_imm("\n")); for (i = 0, n = gwlist_len(lines); i < n; i++) { @@ -209,6 +216,23 @@ mCfg *mms_cfg_read(Octstr *file) gwlist_destroy(lines, (gwlist_item_destructor_t *)octstr_destroy); octstr_destroy(sf); + + /* Now check if config-source is set, use that. */ + if ((grp = mms_cfg_get_single(cfg, octstr_imm("config-source"))) != NULL) { + Octstr *init = mms_cfg_get(cfg, grp, octstr_imm("config-library-init-param")); + cfg->cfg_funcs = _mms_load_module(cfg, grp, "config-library", "cfg_funcs", NULL); + + if (cfg->cfg_funcs == NULL || + cfg->cfg_funcs->read == NULL || + (cfg->xcfg = cfg->cfg_funcs->read(init)) == NULL) { + error(0, "Failed to load cfg reader library from conf!"); + mms_cfg_destroy(cfg); + cfg = NULL; + } + + octstr_destroy(init); + } + return cfg; } @@ -241,6 +265,11 @@ void mms_cfg_destroy(mCfg *cfg) gwlist_destroy(l, (gwlist_item_destructor_t *)octstr_destroy); dict_destroy(cfg->grps); octstr_destroy(cfg->file); + + if (cfg->xcfg && cfg->cfg_funcs && + cfg->cfg_funcs->destroy) + cfg->cfg_funcs->destroy(cfg->xcfg); + gw_free(cfg); } @@ -249,46 +278,86 @@ mCfgGrp *mms_cfg_get_single(mCfg *cfg, Octstr *name) gw_assert(name); gw_assert(is_multigroup(name) == 0); - return dict_get(cfg->grps, name); + if (cfg->xcfg == NULL) + return dict_get(cfg->grps, name); + else + return cfg->cfg_funcs->cfg_get_single(cfg->xcfg, name); } List *mms_cfg_get_multi(mCfg *cfg, Octstr *name) { - List *l = NULL, *r; - int i; gw_assert(name); gw_assert(is_multigroup(name) == 1); - r = dict_get(cfg->grps, name); - - if (r) - for (i = 0, l = gwlist_create(); i < gwlist_len(r); i++) - gwlist_append(l, gwlist_get(r,i)); - return l; + if (cfg->xcfg == NULL) { + List *l = NULL, *r; + int i; + r = dict_get(cfg->grps, name); + + if (r) + for (i = 0, l = gwlist_create(); i < gwlist_len(r); i++) + gwlist_append(l, gwlist_get(r,i)); + return l; + } else + return cfg->cfg_funcs->get_multi(cfg->xcfg, name); } -Octstr *mms_cfg_get(mCfgGrp *grp, Octstr *name) + +mCfgGrp *mms_get_multi_by_field(mCfg *cfg, Octstr *name, Octstr *field, Octstr *value) +{ + + gw_assert(name); + gw_assert(is_multigroup(name) == 1); + + if (!valid_in_group(name, field)) + panic(0, "Request for invalid field/variable `%s' in group `%s', unexpected!", + octstr_get_cstr(field), octstr_get_cstr(name)); + + if (cfg->xcfg == NULL) { + mCfgGrp *grp; + Octstr *val; + List *r; + int i; + r = dict_get(cfg->grps, name); + if (r) + for (i = 0; i < gwlist_len(r); i++) + if ((grp = gwlist_get(r, i)) != NULL && + (val = dict_get(grp->fields, field)) != NULL && + octstr_compare(val, value) == 0) + return grp; + return NULL; + } else + return cfg->cfg_funcs->get_multi_by_field(cfg->xcfg, name, field, value); + +} + +Octstr *mms_cfg_get(mCfg *cfg, mCfgGrp *grp, Octstr *name) { Octstr *val; - - gw_assert(grp); - - if (!valid_in_group(grp->name, name)) + Octstr *grp_name = cfg->xcfg ? cfg->cfg_funcs->get_grp_name(cfg->xcfg, grp) : + octstr_duplicate(grp->name); + + 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)); + octstr_get_cstr(name), octstr_get_cstr(grp_name)); - val = dict_get(grp->fields, name); - - if (!val) - return NULL; - else - return octstr_duplicate(val); + octstr_destroy(grp_name); + if (cfg->xcfg == NULL) { + gw_assert(grp); + val = dict_get(grp->fields, name); + val = octstr_duplicate(val); + } else { + val = cfg->cfg_funcs->get(cfg->xcfg, grp, name); + if (val) + fixup_value(val, 0); + } + return val; } -int mms_cfg_get_int(mCfgGrp *grp, Octstr *name, long *n) +int mms_cfg_get_int(mCfg *cfg, mCfgGrp *grp, Octstr *name, long *n) { - Octstr *val = mms_cfg_get(grp, name); + Octstr *val = mms_cfg_get(cfg, grp, name); int ret; if (!val) return -1; @@ -298,9 +367,9 @@ int mms_cfg_get_int(mCfgGrp *grp, Octstr *name, long *n) } -int mms_cfg_get_bool(mCfgGrp *grp, Octstr *name, int *bool) +int mms_cfg_get_bool(mCfg *cfg, mCfgGrp *grp, Octstr *name, int *bool) { - Octstr *val = mms_cfg_get(grp, name); + Octstr *val = mms_cfg_get(cfg, grp, name); int ret = 0; if (!val) return -1; @@ -323,9 +392,9 @@ int mms_cfg_get_bool(mCfgGrp *grp, Octstr *name, int *bool) return ret; } -List *mms_cfg_get_list(mCfgGrp *grp, Octstr *name) +List *mms_cfg_get_list(mCfg *cfg, mCfgGrp *grp, Octstr *name) { - Octstr *val = mms_cfg_get(grp, name); + Octstr *val = mms_cfg_get(cfg, grp, name); List *l; if (val == NULL) diff --git a/mbuni/mmlib/mms_cfg.def b/mbuni/mmlib/mms_cfg.def index 3d7c85b..cc87bac 100644 --- a/mbuni/mmlib/mms_cfg.def +++ b/mbuni/mmlib/mms_cfg.def @@ -3,7 +3,7 @@ * * MMS Config structure definitions * - * Copyright (C) 2003 - 2005, Digital Solutions Ltd. - http://www.dsmagic.com + * Copyright (C) 2003 - 20058 Digital Solutions Ltd. - http://www.dsmagic.com * * Paul Bagyenda * @@ -23,6 +23,16 @@ #error MULTI_GROUP not defined. #endif +/* config-source: If it exists, the rest of the conf file is + * ignored. Instead, use the provided lib as the reader of the + * config info. (See mms_cfg-impl.h for details) + */ + +SINGLE_GROUP(config-source, + OCTSTR(config-library) + OCTSTR(config-library-init-param) +) + SINGLE_GROUP(core, OCTSTR(log-file) OCTSTR(log-level) diff --git a/mbuni/mmlib/mms_cfg.h b/mbuni/mmlib/mms_cfg.h index 00eca53..c480d87 100644 --- a/mbuni/mmlib/mms_cfg.h +++ b/mbuni/mmlib/mms_cfg.h @@ -34,22 +34,24 @@ 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); +mCfgGrp *mms_get_multi_by_field(mCfg *cfg, Octstr *name, Octstr *field, Octstr *value); + /* Get a string field value from a group. */ -Octstr *mms_cfg_get(mCfgGrp *grp, Octstr *name); +Octstr *mms_cfg_get(mCfg *cfg, 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); +int mms_cfg_get_int(mCfg *cfg, 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); +int mms_cfg_get_bool(mCfg *cfg, mCfgGrp *grp, Octstr *name, int *bool); /* Get a field value from a group. */ -List *mms_cfg_get_list(mCfgGrp *grp, Octstr *name); +List *mms_cfg_get_list(mCfg *cfg, mCfgGrp *grp, Octstr *name); #endif diff --git a/mbuni/mmlib/mms_util.c b/mbuni/mmlib/mms_util.c index 3299d94..f3c1b05 100644 --- a/mbuni/mmlib/mms_util.c +++ b/mbuni/mmlib/mms_util.c @@ -30,9 +30,9 @@ #include "mms_queue.h" #include "mms_uaprof.h" -Octstr *_mms_cfg_getx(mCfgGrp *grp, Octstr *item) +Octstr *_mms_cfg_getx(mCfg *cfg, mCfgGrp *grp, Octstr *item) { - Octstr *v = mms_cfg_get(grp, item); + Octstr *v = mms_cfg_get(cfg, grp, item); void *x = v ? v : octstr_create(""); @@ -40,7 +40,7 @@ Octstr *_mms_cfg_getx(mCfgGrp *grp, Octstr *item) } -int mms_load_core_settings(mCfgGrp *cgrp) +int mms_load_core_settings(mCfg *cfg, mCfgGrp *cgrp) { Octstr *log, *alog; Octstr *http_proxy_host; @@ -51,40 +51,40 @@ int mms_load_core_settings(mCfgGrp *cgrp) panic(0,"Missing required group `core' in config file!"); /* Set the log file. */ - log = mms_cfg_get(cgrp, octstr_imm("log-file")); + log = mms_cfg_get(cfg, cgrp, octstr_imm("log-file")); if (log != NULL) { - if (mms_cfg_get_int(cgrp, octstr_imm("log-level"), &loglevel) == -1) + if (mms_cfg_get_int(cfg, 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 = mms_cfg_get(cgrp, octstr_imm("access-log")); + alog = mms_cfg_get(cfg, cgrp, octstr_imm("access-log")); if (alog) { alog_open(octstr_get_cstr(alog), 1, 1); octstr_destroy(alog); } - if ((our_interface = mms_cfg_get(cgrp, octstr_imm("http-interface-name"))) != NULL) { + if ((our_interface = mms_cfg_get(cfg, cgrp, octstr_imm("http-interface-name"))) != NULL) { http_set_interface(our_interface); octstr_destroy(our_interface); } /* look for http proxy. If set, use it. */ - if ((http_proxy_host = mms_cfg_get(cgrp, octstr_imm("http-proxy-host"))) != NULL) { + if ((http_proxy_host = mms_cfg_get(cfg, cgrp, octstr_imm("http-proxy-host"))) != NULL) { - Octstr *username = mms_cfg_get(cgrp, + Octstr *username = mms_cfg_get(cfg, cgrp, octstr_imm("http-proxy-username")); - Octstr *password = mms_cfg_get(cgrp, + Octstr *password = mms_cfg_get(cfg, cgrp, octstr_imm("http-proxy-password")); - List *exceptions = mms_cfg_get_list(cgrp, + List *exceptions = mms_cfg_get_list(cfg, cgrp, octstr_imm("http-proxy-exceptions")); - Octstr *except_regex = mms_cfg_get(cgrp, + Octstr *except_regex = mms_cfg_get(cfg, cgrp, octstr_imm("http-proxy-exceptions-regex")); long http_proxy_port = -1; - mms_cfg_get_int(cgrp, octstr_imm("http-proxy-port"), &http_proxy_port); + mms_cfg_get_int(cfg, cgrp, octstr_imm("http-proxy-port"), &http_proxy_port); if (http_proxy_port > 0) http_use_proxy(http_proxy_host, http_proxy_port, 0, @@ -112,18 +112,18 @@ int mms_load_core_settings(mCfgGrp *cgrp) * 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")); + ssl_client_certkey_file = mms_cfg_get(cfg, 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")); + ssl_server_cert_file = mms_cfg_get(cfg, cgrp, octstr_imm("ssl-server-cert-file")); + ssl_server_key_file = mms_cfg_get(cfg, 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")); + ssl_trusted_ca_file = mms_cfg_get(cfg, cgrp, octstr_imm("ssl-trusted-ca-file")); use_global_trusted_ca_file(ssl_trusted_ca_file); @@ -1826,13 +1826,13 @@ void strip_non_essential_headers(MIMEEntity *mime) } -void *_mms_load_module(mCfgGrp *grp, char *config_key, char *symbolname, +void *_mms_load_module(mCfg *cfg, mCfgGrp *grp, char *config_key, char *symbolname, void *shell_builtin) { Octstr *s = NULL; void *retval = NULL; - s = mms_cfg_get(grp, octstr_imm(config_key)); + s = mms_cfg_get(cfg, grp, octstr_imm(config_key)); if (s) { void *x; diff --git a/mbuni/mmlib/mms_util.h b/mbuni/mmlib/mms_util.h index 4f2c7c9..016d7fe 100644 --- a/mbuni/mmlib/mms_util.h +++ b/mbuni/mmlib/mms_util.h @@ -66,7 +66,7 @@ enum mms_loc_t {MMS_LOC_MMBOX = 1, MMS_LOC_MQUEUE=2}; -extern int mms_load_core_settings(mCfgGrp *cgrp); +extern int mms_load_core_settings(mCfg *cfg, mCfgGrp *cgrp); extern Octstr *mms_maketransid(char *qf, Octstr *mmscname); @@ -144,7 +144,7 @@ int mm_lockfile(int fd, char *fname, int shouldblock); int _mms_gw_isprint(int c); /* Special form of cfg_get which returns zero-length string when there is nothing. */ -Octstr *_mms_cfg_getx(mCfgGrp *grp, Octstr *item); +Octstr *_mms_cfg_getx(mCfg *cfg, mCfgGrp *grp, Octstr *item); /* Get envelope data from message headers. */ void mms_collect_envdata_from_msgheaders(List *mh, List **xto, @@ -224,7 +224,7 @@ void add_multipart_form_field(MIMEEntity *multipart, char *field_name, MIMEEntity *multipart_from_urls(List *url_list); /* load a shared object, then load a symbol from it. */ -void *_mms_load_module(mCfgGrp *grp, char *config_key, char *symbolname, +void *_mms_load_module(mCfg *cfg, mCfgGrp *grp, char *config_key, char *symbolname, void *shell_builtin); diff --git a/mbuni/mmsbox/mmsbox_cfg.c b/mbuni/mmsbox/mmsbox_cfg.c index 461104b..645ab27 100644 --- a/mbuni/mmsbox/mmsbox_cfg.c +++ b/mbuni/mmsbox/mmsbox_cfg.c @@ -59,28 +59,28 @@ int mms_load_mmsbox_settings(mCfg *cfg, gwthread_func_t *mmsc_handler_func) if (grp == NULL) panic(0,"Missing required group `mbuni' in config file!"); - mms_load_core_settings(cgrp); + mms_load_core_settings(cfg, cgrp); sendmms_users = gwlist_create(); mms_services = gwlist_create(); mmscs = gwlist_create(); - if (mms_cfg_get_int(grp, + if (mms_cfg_get_int(cfg, grp, octstr_imm("maximum-send-attempts"), &mmsbox_maxsendattempts) < 0) mmsbox_maxsendattempts = MAXQTRIES; - if (mms_cfg_get_int(grp, + if (mms_cfg_get_int(cfg, grp, octstr_imm("send-attempt-back-off"), &mmsbox_send_back_off) == -1) mmsbox_send_back_off = BACKOFF_FACTOR; - if (mms_cfg_get_int(grp, octstr_imm("default-message-expiry"), &default_msgexpiry) == -1) + if (mms_cfg_get_int(cfg, grp, octstr_imm("default-message-expiry"), &default_msgexpiry) == -1) default_msgexpiry = DEFAULT_EXPIRE; - if (mms_cfg_get_int(grp, octstr_imm("max-send-threads"), &maxthreads) < 0 || + if (mms_cfg_get_int(cfg, grp, octstr_imm("max-send-threads"), &maxthreads) < 0 || maxthreads < 1) maxthreads = 10; - s = mms_cfg_get(grp, octstr_imm("queue-run-interval")); + s = mms_cfg_get(cfg, grp, octstr_imm("queue-run-interval")); if (s) { queue_interval = atof(octstr_get_cstr(s)); @@ -89,14 +89,14 @@ int mms_load_mmsbox_settings(mCfg *cfg, gwthread_func_t *mmsc_handler_func) if (queue_interval <= 0) queue_interval = QUEUERUN_INTERVAL; - if ((sendmail_cmd = mms_cfg_get(grp, octstr_imm("send-mail-prog"))) == NULL) + if ((sendmail_cmd = mms_cfg_get(cfg, grp, octstr_imm("send-mail-prog"))) == NULL) sendmail_cmd = octstr_imm("/usr/sbin/sendmail -f '%f' '%t'"); - if ((myhostname = mms_cfg_get(grp, octstr_imm("hostname"))) == NULL) + if ((myhostname = mms_cfg_get(cfg, grp, octstr_imm("hostname"))) == NULL) myhostname = octstr_imm("localhost"); - gdir = mms_cfg_get(grp, octstr_imm("storage-directory")); + gdir = mms_cfg_get(cfg, grp, octstr_imm("storage-directory")); if (gdir == NULL) gdir = octstr_imm("."); @@ -107,11 +107,11 @@ int mms_load_mmsbox_settings(mCfg *cfg, gwthread_func_t *mmsc_handler_func) panic(0, "Failed to create MMSBox storage directory: %s - %s!", octstr_get_cstr(gdir), strerror(errno)); - if ((qfs = _mms_load_module(grp, "queue-manager-module", "qfuncs", NULL)) == NULL) { + if ((qfs = _mms_load_module(cfg, grp, "queue-manager-module", "qfuncs", NULL)) == NULL) { qfs = &default_qfuncs; /* default queue handler. */ qfs->mms_init_queue_module(gdir, maxthreads); } else { - Octstr *s = _mms_cfg_getx(grp, octstr_imm("queue-module-init-data")); + Octstr *s = _mms_cfg_getx(cfg, grp, octstr_imm("queue-module-init-data")); if (qfs->mms_init_queue_module(s, maxthreads) != 0) panic(0, "failed to initialise queue module, with data: %s", octstr_get_cstr(s)); @@ -137,37 +137,37 @@ int mms_load_mmsbox_settings(mCfg *cfg, gwthread_func_t *mmsc_handler_func) octstr_get_cstr(dlr_dir), strerror(errno)); - unified_prefix = _mms_cfg_getx(grp, octstr_imm("unified-prefix")); + unified_prefix = _mms_cfg_getx(cfg, grp, octstr_imm("unified-prefix")); - if ((s = mms_cfg_get(grp, octstr_imm("strip-prefixes"))) != NULL) { + if ((s = mms_cfg_get(cfg, grp, octstr_imm("strip-prefixes"))) != NULL) { strip_prefixes = octstr_split(s, octstr_imm(";")); octstr_destroy(s); } else strip_prefixes = NULL; - mms_cfg_get_int(grp, octstr_imm("sendmms-port"), &sendmms_port.port); + mms_cfg_get_int(cfg, grp, octstr_imm("sendmms-port"), &sendmms_port.port); #ifdef HAVE_LIBSSL - mms_cfg_get_bool(grp, octstr_imm("sendmms-port-ssl"), &send_port_ssl); + mms_cfg_get_bool(cfg, 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 = mms_cfg_get(grp, octstr_imm("allow-ip")); - sendmms_port.deny_ip = mms_cfg_get(grp, octstr_imm("deny-ip")); + sendmms_port.allow_ip = mms_cfg_get(cfg, grp, octstr_imm("allow-ip")); + sendmms_port.deny_ip = mms_cfg_get(cfg, grp, octstr_imm("deny-ip")); /* load the filter if any. */ - if ((mt_filter = _mms_load_module(grp, "mmsbox-mt-filter-library", "mmsbox_mt_filter", NULL)) != NULL) + if ((mt_filter = _mms_load_module(cfg, grp, "mmsbox-mt-filter-library", "mmsbox_mt_filter", NULL)) != NULL) info(0, "MMSBox: Loaded MT Filter [%s]", mt_filter->name); - mms_cfg_get_bool(grp, octstr_imm("mmsbox-mt-always-multipart"), &mt_multipart); + mms_cfg_get_bool(cfg, grp, octstr_imm("mmsbox-mt-always-multipart"), &mt_multipart); /* load the resolver module. */ - if ((rfs = _mms_load_module(grp, "resolver-library", "mmsbox_resolvefuncs", &mmsbox_resolvefuncs_shell)) == NULL) + if ((rfs = _mms_load_module(cfg, grp, "resolver-library", "mmsbox_resolvefuncs", &mmsbox_resolvefuncs_shell)) == NULL) rfs = &mmsbox_resolvefuncs; - rfs_settings = _mms_cfg_getx(grp, octstr_imm("resolver-module-parameters")); + rfs_settings = _mms_cfg_getx(cfg, grp, octstr_imm("resolver-module-parameters")); rfs_data = rfs->mmsbox_resolvermodule_init(rfs_settings ? octstr_get_cstr(rfs_settings) : NULL); /* Now get sendmms users. */ @@ -178,12 +178,12 @@ int mms_load_mmsbox_settings(mCfg *cfg, gwthread_func_t *mmsc_handler_func) 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 = 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")); - u->mmsc = mms_cfg_get(x, octstr_imm("mmsc")); + u->user = _mms_cfg_getx(cfg, x, octstr_imm("username")); + u->pass = _mms_cfg_getx(cfg, x, octstr_imm("password")); + u->faked_sender = mms_cfg_get(cfg, x, octstr_imm("faked-sender")); + u->dlr_url = _mms_cfg_getx(cfg, x, octstr_imm("delivery-report-url")); + u->rr_url = _mms_cfg_getx(cfg, x, octstr_imm("read-report-url")); + u->mmsc = mms_cfg_get(cfg, x, octstr_imm("mmsc")); gwlist_append(sendmms_users, u); } gwlist_destroy(l, NULL); @@ -200,23 +200,23 @@ int mms_load_mmsbox_settings(mCfg *cfg, gwthread_func_t *mmsc_handler_func) memset(m, 0, sizeof *m); - m->id = _mms_cfg_getx(x, octstr_imm("id")); + m->id = _mms_cfg_getx(cfg, x, octstr_imm("id")); if (octstr_len(m->id) < 1) panic(0,"Missing required value `id' in config file!"); - m->group_id = mms_cfg_get(x, octstr_imm("group-id")); + m->group_id = mms_cfg_get(cfg, x, octstr_imm("group-id")); if (m->group_id == NULL) m->group_id = octstr_duplicate(m->id); - m->mmsc_url = _mms_cfg_getx(x, octstr_imm("mmsc-url")); + m->mmsc_url = _mms_cfg_getx(cfg, x, octstr_imm("mmsc-url")); - m->allowed_prefix = mms_cfg_get(x, octstr_imm("allowed-prefix")); - m->denied_prefix = mms_cfg_get(x, octstr_imm("denied-prefix")); + m->allowed_prefix = mms_cfg_get(cfg, x, octstr_imm("allowed-prefix")); + m->denied_prefix = mms_cfg_get(cfg, x, octstr_imm("denied-prefix")); - m->allowed_sender_prefix = mms_cfg_get(x, octstr_imm("allowed-sender-prefix")); - m->denied_sender_prefix = mms_cfg_get(x, octstr_imm("denied-sender-prefix")); + m->allowed_sender_prefix = mms_cfg_get(cfg, x, octstr_imm("allowed-sender-prefix")); + m->denied_sender_prefix = mms_cfg_get(cfg, x, octstr_imm("denied-sender-prefix")); - 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.allow_ip = mms_cfg_get(cfg, x, octstr_imm("allow-ip")); + m->incoming.deny_ip = mms_cfg_get(cfg, x, octstr_imm("deny-ip")); info(0, "MMSC[%s], allow=[%s], deny=[%s] group_id=[%s]", octstr_get_cstr(m->id), @@ -224,13 +224,13 @@ int mms_load_mmsbox_settings(mCfg *cfg, gwthread_func_t *mmsc_handler_func) octstr_get_cstr(m->incoming.deny_ip), octstr_get_cstr(m->group_id)); - m->incoming.user = _mms_cfg_getx(x, octstr_imm("incoming-username")); - m->incoming.pass = _mms_cfg_getx(x, octstr_imm("incoming-password")); - mms_cfg_get_int(x, octstr_imm("incoming-port"), &m->incoming.port); + m->incoming.user = _mms_cfg_getx(cfg, x, octstr_imm("incoming-username")); + m->incoming.pass = _mms_cfg_getx(cfg, x, octstr_imm("incoming-password")); + mms_cfg_get_int(cfg, x, octstr_imm("incoming-port"), &m->incoming.port); #ifdef HAVE_LIBSSL - mms_cfg_get_bool(x, octstr_imm("incoming-port-ssl"), &ssl); + mms_cfg_get_bool(cfg, x, octstr_imm("incoming-port-ssl"), &ssl); #endif - if ((tmp = mms_cfg_get(x, octstr_imm("max-throughput"))) != NULL) { + if ((tmp = mms_cfg_get(cfg, x, octstr_imm("max-throughput"))) != NULL) { if (octstr_parse_double(&m->throughput, tmp, 0) == -1) m->throughput = 0; info(0, "Set throughput to %.3f for mmsc id <%s>", @@ -238,21 +238,21 @@ int mms_load_mmsbox_settings(mCfg *cfg, gwthread_func_t *mmsc_handler_func) octstr_destroy(tmp); } - type = _mms_cfg_getx(x, octstr_imm("type")); + type = _mms_cfg_getx(cfg, x, octstr_imm("type")); if (octstr_case_compare(type, octstr_imm("eaif")) == 0) m->type = EAIF_MMSC; else if (octstr_case_compare(type, octstr_imm("soap")) == 0) m->type = SOAP_MMSC; else if (octstr_case_compare(type, octstr_imm("custom")) == 0) { m->type = CUSTOM_MMSC; - m->settings = _mms_cfg_getx(x, octstr_imm("custom-settings")); + m->settings = _mms_cfg_getx(cfg, x, octstr_imm("custom-settings")); /* also load the libary. */ - if ((m->fns = _mms_load_module(x, "mmsc-library", "mmsc_funcs", NULL)) == NULL) + if ((m->fns = _mms_load_module(cfg, x, "mmsc-library", "mmsc_funcs", NULL)) == NULL) panic(0, "failed to load MMSC libary functions from module!"); } else warning(0, "MMSBox: Unknown MMSC type [%s]!", octstr_get_cstr(type)); - if ((xver = _mms_cfg_getx(x, octstr_imm("mm7-version"))) != NULL && + if ((xver = _mms_cfg_getx(cfg, x, octstr_imm("mm7-version"))) != NULL && octstr_len(xver) > 0) sscanf(octstr_get_cstr(xver), "%d.%d.%d", @@ -268,7 +268,7 @@ int mms_load_mmsbox_settings(mCfg *cfg, gwthread_func_t *mmsc_handler_func) } } - if ((s = mms_cfg_get(x, octstr_imm("mm7-soap-xmlns"))) != NULL) { + if ((s = mms_cfg_get(cfg, x, octstr_imm("mm7-soap-xmlns"))) != NULL) { strncpy(m->ver.xmlns, octstr_get_cstr(s), sizeof m->ver.xmlns); m->ver.xmlns[-1 + sizeof m->ver.xmlns] = 0; /* NULL terminate, just in case. */ octstr_destroy(s); @@ -276,13 +276,13 @@ int mms_load_mmsbox_settings(mCfg *cfg, gwthread_func_t *mmsc_handler_func) m->ver.xmlns[0] = 0; m->ver.use_mm7_namespace = 1; - mms_cfg_get_bool(x, octstr_imm("use-mm7-soap-namespace-prefix"), &m->ver.use_mm7_namespace); + mms_cfg_get_bool(cfg, x, octstr_imm("use-mm7-soap-namespace-prefix"), &m->ver.use_mm7_namespace); octstr_destroy(xver); octstr_destroy(type); /* Init for filter. */ - if ((s = mms_cfg_get(x, octstr_imm("mm7-mt-filter-params"))) != NULL) { + if ((s = mms_cfg_get(cfg, x, octstr_imm("mm7-mt-filter-params"))) != NULL) { if (mt_filter) m->use_mt_filter = (mt_filter->init(m->mmsc_url, m->id, s) == 1); else @@ -296,13 +296,13 @@ int mms_load_mmsbox_settings(mCfg *cfg, gwthread_func_t *mmsc_handler_func) } else m->use_mt_filter = 0; - mms_cfg_get_bool(x, octstr_imm("reroute"), &m->reroute); - mms_cfg_get_bool(x, octstr_imm("reroute-add-sender-to-subject"), &m->reroute_mod_subject); - m->reroute_mmsc_id = mms_cfg_get(x, octstr_imm("reroute-mmsc-id")); + mms_cfg_get_bool(cfg, x, octstr_imm("reroute"), &m->reroute); + mms_cfg_get_bool(cfg, x, octstr_imm("reroute-add-sender-to-subject"), &m->reroute_mod_subject); + m->reroute_mmsc_id = mms_cfg_get(cfg, x, octstr_imm("reroute-mmsc-id")); if (m->reroute_mmsc_id != NULL && m->reroute == 0) warning(0, "MMSBox: reroute-mmsc-id parameter set but reroute=false!"); - mms_cfg_get_bool(x, octstr_imm("no-sender-address"), &m->no_senderaddress); + mms_cfg_get_bool(cfg, x, octstr_imm("no-sender-address"), &m->no_senderaddress); m->mutex = mutex_create(); /* finally start the thingie. */ @@ -341,73 +341,73 @@ int mms_load_mmsbox_settings(mCfg *cfg, gwthread_func_t *mmsc_handler_func) MmsService *m = gw_malloc(sizeof *m); Octstr *s; - m->name = _mms_cfg_getx(x, octstr_imm("name")); - if ((m->url = mms_cfg_get(x, octstr_imm("get-url"))) != NULL) + m->name = _mms_cfg_getx(cfg, x, octstr_imm("name")); + if ((m->url = mms_cfg_get(cfg, x, octstr_imm("get-url"))) != NULL) m->type = TRANS_TYPE_GET_URL; - else if ((m->url = mms_cfg_get(x, octstr_imm("post-url"))) != NULL) + else if ((m->url = mms_cfg_get(cfg, x, octstr_imm("post-url"))) != NULL) m->type = TRANS_TYPE_POST_URL; - else if ((m->url = mms_cfg_get(x, octstr_imm("file"))) != NULL) + else if ((m->url = mms_cfg_get(cfg, x, octstr_imm("file"))) != NULL) m->type = TRANS_TYPE_FILE; - else if ((m->url = mms_cfg_get(x, octstr_imm("exec"))) != NULL) + else if ((m->url = mms_cfg_get(cfg, x, octstr_imm("exec"))) != NULL) m->type = TRANS_TYPE_EXEC; - else if ((m->url = mms_cfg_get(x, octstr_imm("text"))) != NULL) + else if ((m->url = mms_cfg_get(cfg, 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 = mms_cfg_get(x, octstr_imm("faked-sender")); + m->faked_sender = mms_cfg_get(cfg, x, octstr_imm("faked-sender")); m->isdefault = 0; - mms_cfg_get_bool(x, octstr_imm("catch-all"), &m->isdefault); + mms_cfg_get_bool(cfg, x, octstr_imm("catch-all"), &m->isdefault); if (m->isdefault) { if (catchall) warning(0, "MMSBox: Multiple default mms services defined!"); catchall = m; } - if (mms_cfg_get_bool(x, octstr_imm("omit-empty"), &m->omitempty) < 0) + if (mms_cfg_get_bool(cfg, x, octstr_imm("omit-empty"), &m->omitempty) < 0) m->omitempty = 0; - if (mms_cfg_get_bool(x, octstr_imm("suppress-reply"), &m->noreply) < 0) + if (mms_cfg_get_bool(cfg, x, octstr_imm("suppress-reply"), &m->noreply) < 0) m->noreply = 0; - mms_cfg_get_bool(x, octstr_imm("accept-x-mbuni-headers"), &m->accept_x_headers); + mms_cfg_get_bool(cfg, x, octstr_imm("accept-x-mbuni-headers"), &m->accept_x_headers); - if ((s = mms_cfg_get(x, octstr_imm("pass-thro-headers"))) != NULL) { + if ((s = mms_cfg_get(cfg, x, octstr_imm("pass-thro-headers"))) != NULL) { m->passthro_headers = octstr_split(s, octstr_imm(",")); octstr_destroy(s); } else m->passthro_headers = NULL; - mms_cfg_get_bool(x, octstr_imm("assume-plain-text"), &m->assume_plain_text); + mms_cfg_get_bool(cfg, x, octstr_imm("assume-plain-text"), &m->assume_plain_text); - if ((s = mms_cfg_get(x, octstr_imm("accepted-mmscs"))) != NULL) { + if ((s = mms_cfg_get(cfg, 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 = mms_cfg_get(x, octstr_imm("denied-mmscs"))) != NULL) { + if ((s = mms_cfg_get(cfg, 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. */ - m->allowed_receiver_prefix = mms_cfg_get(x, octstr_imm("allowed-receiver-prefix")); - m->denied_receiver_prefix = mms_cfg_get(x, octstr_imm("denied-receiver-prefix")); + m->allowed_receiver_prefix = mms_cfg_get(cfg, x, octstr_imm("allowed-receiver-prefix")); + m->denied_receiver_prefix = mms_cfg_get(cfg, x, octstr_imm("denied-receiver-prefix")); /* Get key words. Start with aliases to make life easier. */ - if ((s = mms_cfg_get(x, octstr_imm("aliases"))) != NULL) { + if ((s = mms_cfg_get(cfg, x, octstr_imm("aliases"))) != NULL) { m->keywords = octstr_split(s, octstr_imm(";")); octstr_destroy(s); } else m->keywords = gwlist_create(); - s = mms_cfg_get(x, octstr_imm("keyword")); + s = mms_cfg_get(cfg, x, octstr_imm("keyword")); if (!s) panic(0, "MMSBox: Service [%s] has no keyword!", octstr_get_cstr(m->name)); else gwlist_append(m->keywords, s); - if ((s = mms_cfg_get(x, octstr_imm("http-post-parameters"))) != NULL) { + if ((s = mms_cfg_get(cfg, x, octstr_imm("http-post-parameters"))) != NULL) { List *r = octstr_split(s, octstr_imm("&")); int i, n; m->params = gwlist_create(); @@ -470,7 +470,7 @@ int mms_load_mmsbox_settings(mCfg *cfg, gwthread_func_t *mmsc_handler_func) } else m->params = NULL; - m->service_code = mms_cfg_get(x, octstr_imm("service-code")); + m->service_code = mms_cfg_get(cfg, x, octstr_imm("service-code")); gwlist_append(mms_services, m); } diff --git a/mbuni/mmsc/mmsc_cfg.c b/mbuni/mmsc/mmsc_cfg.c index 08d38ed..f4fb2cd 100644 --- a/mbuni/mmsc/mmsc_cfg.c +++ b/mbuni/mmsc/mmsc_cfg.c @@ -52,37 +52,37 @@ MmscSettings *mms_load_mmsc_settings(mCfg *cfg, List **proxyrelays) if (grp == NULL) panic(0,"Missing required group `mbuni' in config file!"); - mms_load_core_settings(cgrp); + mms_load_core_settings(cfg, cgrp); - m->hostname = mms_cfg_get(grp, octstr_imm("hostname")); + m->hostname = mms_cfg_get(cfg, grp, octstr_imm("hostname")); if (octstr_len(m->hostname) == 0) m->hostname = octstr_create("localhost"); - if ((m->host_alias = mms_cfg_get(grp, octstr_imm("host-alias"))) == NULL) + if ((m->host_alias = mms_cfg_get(cfg, grp, octstr_imm("host-alias"))) == NULL) m->host_alias = octstr_duplicate(m->hostname); if (proxyrelays) *proxyrelays = mms_proxy_relays(cfg, m->hostname); - if (mms_cfg_get_int(grp, octstr_imm("max-send-threads"), &m->maxthreads) == -1) + if (mms_cfg_get_int(cfg, grp, octstr_imm("max-send-threads"), &m->maxthreads) == -1) m->maxthreads = 10; - m->unified_prefix = _mms_cfg_getx(grp, octstr_imm("unified-prefix")); - m->local_prefix = _mms_cfg_getx(grp, octstr_imm("local-prefixes")); + m->unified_prefix = _mms_cfg_getx(cfg, grp, octstr_imm("unified-prefix")); + m->local_prefix = _mms_cfg_getx(cfg, grp, octstr_imm("local-prefixes")); - if ((s = mms_cfg_get(grp, octstr_imm("strip-prefixes"))) != NULL) { + if ((s = mms_cfg_get(cfg, grp, octstr_imm("strip-prefixes"))) != NULL) { m->strip_prefixes = octstr_split(s, octstr_imm(";")); octstr_destroy(s); } else m->strip_prefixes = NULL; - m->name = _mms_cfg_getx(grp, octstr_imm("name")); + m->name = _mms_cfg_getx(cfg, grp, octstr_imm("name")); - m->sendmail = _mms_cfg_getx(grp, octstr_imm("send-mail-prog")); + m->sendmail = _mms_cfg_getx(cfg, grp, octstr_imm("send-mail-prog")); - qdir = _mms_cfg_getx(grp, octstr_imm("storage-directory")); + qdir = _mms_cfg_getx(cfg, grp, octstr_imm("storage-directory")); if (qdir && octstr_len(qdir) >= QFNAMEMAX) warning(0, "storage-directory name too long. Max length is %d", QFNAMEMAX); @@ -92,11 +92,11 @@ MmscSettings *mms_load_mmsc_settings(mCfg *cfg, List **proxyrelays) panic(0, "Failed to create queue directory: %s - %s!", octstr_get_cstr(qdir), strerror(errno)); - if ((m->qfs = _mms_load_module(grp, "queue-manager-module", "qfuncs", NULL)) == NULL) { + if ((m->qfs = _mms_load_module(cfg, grp, "queue-manager-module", "qfuncs", NULL)) == NULL) { m->qfs = &default_qfuncs; /* default queue handler. */ m->qfs->mms_init_queue_module(qdir, m->maxthreads); } else { - Octstr *s = _mms_cfg_getx(grp, octstr_imm("queue-module-init-data")); + Octstr *s = _mms_cfg_getx(cfg, grp, octstr_imm("queue-module-init-data")); if (m->qfs->mms_init_queue_module(s, m->maxthreads) != 0) panic(0, "failed to initialise queue module, with data: %s", octstr_get_cstr(s)); @@ -126,28 +126,28 @@ MmscSettings *mms_load_mmsc_settings(mCfg *cfg, List **proxyrelays) panic(0, "Failed to initialise UA Profile directory, error: %s!", strerror(errno)); - if (mms_cfg_get_int(grp, octstr_imm("maximum-send-attempts"), &m->maxsendattempts) == -1) + if (mms_cfg_get_int(cfg, grp, octstr_imm("maximum-send-attempts"), &m->maxsendattempts) == -1) m->maxsendattempts = MAXQTRIES; - if (mms_cfg_get_int(grp, octstr_imm("default-message-expiry"), &m->default_msgexpiry) == -1) + if (mms_cfg_get_int(cfg, 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")); + s = _mms_cfg_getx(cfg, grp, octstr_imm("queue-run-interval")); if (!s || (m->queue_interval = atof(octstr_get_cstr(s))) <= 0) m->queue_interval = QUEUERUN_INTERVAL; octstr_destroy(s); - if (mms_cfg_get_int(grp, octstr_imm("send-attempt-back-off"), &m->send_back_off) == -1) + if (mms_cfg_get_int(cfg, grp, octstr_imm("send-attempt-back-off"), &m->send_back_off) == -1) m->send_back_off = BACKOFF_FACTOR; /* Make send sms url. */ - m->sendsms_url = _mms_cfg_getx(grp, octstr_imm("sendsms-url")); + m->sendsms_url = _mms_cfg_getx(cfg, grp, octstr_imm("sendsms-url")); - user = mms_cfg_get(grp, octstr_imm("sendsms-username")); - pass = mms_cfg_get(grp, octstr_imm("sendsms-password")); - from = mms_cfg_get(grp, octstr_imm("sendsms-global-sender")); + user = mms_cfg_get(cfg, grp, octstr_imm("sendsms-username")); + pass = mms_cfg_get(cfg, grp, octstr_imm("sendsms-password")); + from = mms_cfg_get(cfg, grp, octstr_imm("sendsms-global-sender")); i = octstr_search_char(m->sendsms_url, '?', 0); /* If ? is in there, omit below. */ @@ -166,45 +166,45 @@ MmscSettings *mms_load_mmsc_settings(mCfg *cfg, List **proxyrelays) octstr_destroy(pass); octstr_destroy(from); - mms_cfg_get_int(grp, octstr_imm("mms-port"), &port); + mms_cfg_get_int(cfg, grp, octstr_imm("mms-port"), &port); m->port = (port > 0) ? port : MMS_PORT; m->mm7port = -1; - mms_cfg_get_int(grp, octstr_imm("mm7-port"), &m->mm7port); + mms_cfg_get_int(cfg, 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")); + m->allow_ip = _mms_cfg_getx(cfg, grp, octstr_imm("allow-ip")); + m->deny_ip = _mms_cfg_getx(cfg, grp, octstr_imm("deny-ip")); - m->email2mmsrelay_hosts = _mms_cfg_getx(grp, + m->email2mmsrelay_hosts = _mms_cfg_getx(cfg, grp, octstr_imm("email2mms-relay-hosts")); - m->prov_notify = _mms_cfg_getx(grp,octstr_imm("prov-server-notify-script")); + m->prov_notify = _mms_cfg_getx(cfg, grp,octstr_imm("prov-server-notify-script")); - m->prov_getstatus = _mms_cfg_getx(grp,octstr_imm("prov-server-sub-status-script")); - m->mms_notify_txt = _mms_cfg_getx(grp, octstr_imm("mms-notify-text")); - m->mms_notify_unprov_txt = _mms_cfg_getx(grp, octstr_imm("mms-notify-unprovisioned-text")); + m->prov_getstatus = _mms_cfg_getx(cfg, grp,octstr_imm("prov-server-sub-status-script")); + m->mms_notify_txt = _mms_cfg_getx(cfg, grp, octstr_imm("mms-notify-text")); + m->mms_notify_unprov_txt = _mms_cfg_getx(cfg, grp, octstr_imm("mms-notify-unprovisioned-text")); - m->mms_email_txt = _mms_cfg_getx(grp, octstr_imm("mms-to-email-txt")); - m->mms_email_html = _mms_cfg_getx(grp, octstr_imm("mms-to-email-html")); - m->mms_email_subject = mms_cfg_get(grp, octstr_imm("mms-to-email-default-subject")); + m->mms_email_txt = _mms_cfg_getx(cfg, grp, octstr_imm("mms-to-email-txt")); + m->mms_email_html = _mms_cfg_getx(cfg, grp, octstr_imm("mms-to-email-html")); + m->mms_email_subject = mms_cfg_get(cfg, grp, octstr_imm("mms-to-email-default-subject")); - m->mms_toolarge = _mms_cfg_getx(grp, octstr_imm("mms-message-too-large-txt")); + m->mms_toolarge = _mms_cfg_getx(cfg, grp, octstr_imm("mms-message-too-large-txt")); - m->wap_gw_msisdn_header = mms_cfg_get(grp, octstr_imm("mms-client-msisdn-header")); + m->wap_gw_msisdn_header = mms_cfg_get(cfg, 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 = mms_cfg_get(grp, octstr_imm("mms-client-ip-header")); + m->wap_gw_ip_header = mms_cfg_get(cfg, grp, octstr_imm("mms-client-ip-header")); if (!m->wap_gw_ip_header) m->wap_gw_ip_header = octstr_imm(XIP_HEADER); - mms_cfg_get_bool(grp, octstr_imm("notify-unprovisioned"), &m->notify_unprovisioned); + mms_cfg_get_bool(cfg, grp, octstr_imm("notify-unprovisioned"), &m->notify_unprovisioned); - m->billing_params = _mms_cfg_getx(grp, + m->billing_params = _mms_cfg_getx(cfg, grp, octstr_imm("billing-module-parameters")); /* Get and load the billing lib if any. */ - if ((m->mms_billfuncs = _mms_load_module(grp, "billing-library", "mms_billfuncs", + if ((m->mms_billfuncs = _mms_load_module(cfg, grp, "billing-library", "mms_billfuncs", &mms_billfuncs_shell)) != NULL) { if (m->mms_billfuncs->mms_billingmodule_init == NULL || m->mms_billfuncs->mms_billmsg == NULL || @@ -216,11 +216,11 @@ MmscSettings *mms_load_mmsc_settings(mCfg *cfg, List **proxyrelays) m->mms_bill_module_data = m->mms_billfuncs->mms_billingmodule_init(octstr_get_cstr(m->billing_params)); - m->resolver_params = _mms_cfg_getx(grp, + m->resolver_params = _mms_cfg_getx(cfg, grp, octstr_imm("resolver-module-parameters")); /* Get and load the resolver lib if any. */ - if ((m->mms_resolvefuncs = _mms_load_module(grp, "resolver-library", + if ((m->mms_resolvefuncs = _mms_load_module(cfg, grp, "resolver-library", "mms_resolvefuncs", &mms_resolvefuncs_shell)) != NULL) { if (m->mms_resolvefuncs->mms_resolvermodule_init == NULL || @@ -232,10 +232,10 @@ MmscSettings *mms_load_mmsc_settings(mCfg *cfg, List **proxyrelays) m->mms_resolver_module_data = m->mms_resolvefuncs->mms_resolvermodule_init(octstr_get_cstr(m->resolver_params)); - m->detokenizer_params = _mms_cfg_getx(grp, octstr_imm("detokenizer-module-parameters")); + m->detokenizer_params = _mms_cfg_getx(cfg, grp, octstr_imm("detokenizer-module-parameters")); /* Get and load the detokenizer lib if any. */ - if ((m->mms_detokenizefuncs = _mms_load_module(grp, "detokenizer-library", + if ((m->mms_detokenizefuncs = _mms_load_module(cfg, grp, "detokenizer-library", "mms_detokenizefuncs", &mms_detokenizefuncs_shell)) != NULL) { if (m->mms_detokenizefuncs->mms_detokenizer_init == NULL || @@ -248,16 +248,16 @@ MmscSettings *mms_load_mmsc_settings(mCfg *cfg, List **proxyrelays) } else m->mms_detokenizefuncs = NULL; - if (mms_cfg_get_bool(grp, octstr_imm("allow-ip-type"), &m->allow_ip_type) < 0) + if (mms_cfg_get_bool(cfg, grp, octstr_imm("allow-ip-type"), &m->allow_ip_type) < 0) m->allow_ip_type = 1; - mms_cfg_get_bool(grp, octstr_imm("optimize-notification-size"), + mms_cfg_get_bool(cfg, grp, octstr_imm("optimize-notification-size"), &m->optimize_notification_size); - if (mms_cfg_get_bool(grp, octstr_imm("content-adaptation"), &m->content_adaptation) < 0) + if (mms_cfg_get_bool(cfg, grp, octstr_imm("content-adaptation"), &m->content_adaptation) < 0) m->content_adaptation = 1; - if (mms_cfg_get_bool(grp, octstr_imm("send-dlr-on-fetch"), &m->dlr_on_fetch) < 0) + if (mms_cfg_get_bool(cfg, grp, octstr_imm("send-dlr-on-fetch"), &m->dlr_on_fetch) < 0) m->dlr_on_fetch = 0; @@ -272,16 +272,16 @@ MmscSettings *mms_load_mmsc_settings(mCfg *cfg, List **proxyrelays) Octstr *s; int ibool = 0; - mv->id = _mms_cfg_getx(grp, octstr_imm("vasp-id")); + mv->id = _mms_cfg_getx(cfg, grp, octstr_imm("vasp-id")); mv->short_code = -1; - mms_cfg_get_int(grp, octstr_imm("short-code"), &mv->short_code); + mms_cfg_get_int(cfg, 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")); + mv->vasp_username = _mms_cfg_getx(cfg, grp, octstr_imm("vasp-username")); + mv->vasp_password = _mms_cfg_getx(cfg, grp, octstr_imm("vasp-password")); - mv->vasp_url = _mms_cfg_getx(grp, octstr_imm("vasp-url")); + mv->vasp_url = _mms_cfg_getx(cfg, grp, octstr_imm("vasp-url")); - s = _mms_cfg_getx(grp, octstr_imm("type")); + s = _mms_cfg_getx(cfg, grp, octstr_imm("type")); if (octstr_case_compare(s, octstr_imm("soap")) == 0) mv->type = SOAP_VASP; @@ -292,7 +292,7 @@ MmscSettings *mms_load_mmsc_settings(mCfg *cfg, List **proxyrelays) octstr_destroy(s); mv->ver.major = mv->ver.minor1 = mv->ver.minor2 = 0; - if ((s = mms_cfg_get(grp, octstr_imm("mm7-version"))) != NULL && + if ((s = mms_cfg_get(cfg, grp, octstr_imm("mm7-version"))) != NULL && octstr_len(s) > 0) sscanf(octstr_get_cstr(s), "%d.%d.%d", &mv->ver.major, &mv->ver.minor1, &mv->ver.minor2); else { @@ -307,7 +307,7 @@ MmscSettings *mms_load_mmsc_settings(mCfg *cfg, List **proxyrelays) } octstr_destroy(s); - if ((s = mms_cfg_get(grp, octstr_imm("mm7-soap-xmlns"))) != NULL) { + if ((s = mms_cfg_get(cfg, grp, octstr_imm("mm7-soap-xmlns"))) != NULL) { strncpy(mv->ver.xmlns, octstr_get_cstr(s), sizeof mv->ver.xmlns); mv->ver.xmlns[-1 + sizeof mv->ver.xmlns] = 0; /* NULL terminate, just in case. */ @@ -316,23 +316,23 @@ MmscSettings *mms_load_mmsc_settings(mCfg *cfg, List **proxyrelays) mv->ver.xmlns[0] = 0; mv->ver.use_mm7_namespace = 1; - mms_cfg_get_bool(grp, octstr_imm("use-mm7-soap-namespace-prefix"), &mv->ver.use_mm7_namespace); + mms_cfg_get_bool(cfg, grp, octstr_imm("use-mm7-soap-namespace-prefix"), &mv->ver.use_mm7_namespace); /* Set the handler vasp accounts. */ - if (mms_cfg_get_bool(grp, octstr_imm("mms-to-email-handler"), &ibool) == 0 && + if (mms_cfg_get_bool(cfg, 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 (mms_cfg_get_bool(grp, octstr_imm("mms-to-local-copy-handler"), &ibool) == 0 && + if (mms_cfg_get_bool(cfg, 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."); m->mms2mobile = mv; } - if ((s = mms_cfg_get(grp, octstr_imm("send-uaprof"))) != NULL){ + if ((s = mms_cfg_get(cfg, grp, octstr_imm("send-uaprof"))) != NULL){ if (octstr_str_case_compare(s, "url") == 0) mv->send_uaprof = UAProf_URL; else if (octstr_str_case_compare(s, "ua") == 0) @@ -361,16 +361,16 @@ List *mms_proxy_relays(mCfg *cfg, Octstr *myhostname) MmsProxyRelay *m = gw_malloc(sizeof *m); Octstr *s; - m->host = _mms_cfg_getx(grp, octstr_imm("host")); - m->name = _mms_cfg_getx(grp, octstr_imm("name")); - m->allowed_prefix = _mms_cfg_getx(grp, octstr_imm("allowed-prefix")); - m->denied_prefix = _mms_cfg_getx(grp, octstr_imm("denied-prefix")); - if (mms_cfg_get_bool(grp, octstr_imm("confirmed-delivery"), &m->confirmed_mm4) < 0) + m->host = _mms_cfg_getx(cfg, grp, octstr_imm("host")); + m->name = _mms_cfg_getx(cfg, grp, octstr_imm("name")); + m->allowed_prefix = _mms_cfg_getx(cfg, grp, octstr_imm("allowed-prefix")); + m->denied_prefix = _mms_cfg_getx(cfg, grp, octstr_imm("denied-prefix")); + if (mms_cfg_get_bool(cfg, grp, octstr_imm("confirmed-delivery"), &m->confirmed_mm4) < 0) m->confirmed_mm4 = 1; - m->sendmail = mms_cfg_get(grp, octstr_imm("send-mail-prog")); - m->unified_prefix = mms_cfg_get(grp, octstr_imm("unified-prefix")); - if ((s = mms_cfg_get(grp, octstr_imm("strip-prefixes"))) != NULL) { + m->sendmail = mms_cfg_get(cfg, grp, octstr_imm("send-mail-prog")); + m->unified_prefix = mms_cfg_get(cfg, grp, octstr_imm("unified-prefix")); + if ((s = mms_cfg_get(cfg, grp, octstr_imm("strip-prefixes"))) != NULL) { m->strip_prefixes = octstr_split(s, octstr_imm(";")); octstr_destroy(s); } else