From 6f7e3ea12dd49b2cea09a512f6fd1d91db46cf29 Mon Sep 17 00:00:00 2001 From: bagyenda <> Date: Mon, 4 Jul 2005 09:14:47 +0000 Subject: [PATCH] Added support for HTTP proxy host/port a la Kannel (used for all HTTP outgoing transactions) --- mbuni/doc/userguide.shtml | 3 ++- mbuni/mmlib/mms_util.c | 49 +++++++++++++++++++++++++++++++++++++-- mbuni/mmlib/mms_util.h | 2 +- mbuni/mmsc/mmsfromemail.c | 29 +++-------------------- mbuni/mmsc/mmsproxy.c | 28 ++++------------------ mbuni/mmsc/mmsrelay.c | 26 ++------------------- mbuni/mmsc/mmssend.c | 24 +------------------ 7 files changed, 61 insertions(+), 100 deletions(-) diff --git a/mbuni/doc/userguide.shtml b/mbuni/doc/userguide.shtml index 69c9c6e..3ec9b7b 100644 --- a/mbuni/doc/userguide.shtml +++ b/mbuni/doc/userguide.shtml @@ -538,7 +538,8 @@ beginning of a new group with the given name.

The core group is core and defines the log file location, log level (amount of debugging information – the lower the number the more debugging -information) and the location of the access log. +information), the location of the access log and the HTTP proxy host/port if any. (HTTP proxy host/port + is specified using the exact same parameters as used by Kannel.)

diff --git a/mbuni/mmlib/mms_util.c b/mbuni/mmlib/mms_util.c index 8fad610..63d2c98 100644 --- a/mbuni/mmlib/mms_util.c +++ b/mbuni/mmlib/mms_util.c @@ -73,19 +73,64 @@ static void *load_module(CfgGroup *grp, char *config_key, char *symbolname) return retval; } -MmsBoxSettings *mms_load_mmsbox_settings(Cfg *cfg) +MmsBoxSettings *mms_load_mmsbox_settings(Cfg *cfg, List **proxyrelays) { + long loglevel; Octstr *s; + Octstr *log, *alog; List *l; CfgGroup *grp = cfg_get_single_group(cfg, octstr_imm("mmsbox")); + CfgGroup *cgrp = cfg_get_single_group(cfg, octstr_imm("core")); MmsBoxSettings *m = gw_malloc(sizeof *m); long port = -1; - Octstr *user, *pass, *from; + Octstr *http_proxy_host, *user, *pass, *from; Octstr *qdir = NULL; int i, n; memset(m, 0, sizeof *m); + /* Set the log file. */ + log = cfg_get(cgrp, octstr_imm("log-file")); + if (log != NULL) { + if (cfg_get_integer(&loglevel, cgrp, octstr_imm("log-level")) == -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")); + 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) { + + Octstr *username = cfg_get(cgrp, + octstr_imm("http-proxy-username")); + Octstr *password = cfg_get(cgrp, + octstr_imm("http-proxy-password")); + List *exceptions = 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")); + + if (http_proxy_port > 0) + http_use_proxy(http_proxy_host, http_proxy_port, + exceptions, username, password); + octstr_destroy(http_proxy_host); + octstr_destroy(username); + octstr_destroy(password); + list_destroy(exceptions, octstr_destroy_item); + } + + if (proxyrelays) + *proxyrelays = mms_proxy_relays(cfg); + + s = cfg_getx(grp, octstr_imm("local-mmsc-domains")); if (s) { diff --git a/mbuni/mmlib/mms_util.h b/mbuni/mmlib/mms_util.h index fd072c1..f1b9f18 100644 --- a/mbuni/mmlib/mms_util.h +++ b/mbuni/mmlib/mms_util.h @@ -128,7 +128,7 @@ extern char *mms_hostname; /* Our hostname. */ enum mms_loc_t {MMS_LOC_MMBOX = 1, MMS_LOC_MQUEUE=2}; /* Returns mmsbox settings. */ -MmsBoxSettings *mms_load_mmsbox_settings(Cfg *cfg); +MmsBoxSettings *mms_load_mmsbox_settings(Cfg *cfg, List **proxyrelays); /* Returns list of MmsProxyRelay */ diff --git a/mbuni/mmsc/mmsfromemail.c b/mbuni/mmsc/mmsfromemail.c index ee8c1f9..dd9544e 100644 --- a/mbuni/mmsc/mmsfromemail.c +++ b/mbuni/mmsc/mmsfromemail.c @@ -34,9 +34,7 @@ int main(int argc, char *argv[]) { int cfidx; Octstr *fname; - CfgGroup *grp; - Octstr *log, *alog; - long loglevel; + MIMEEntity *mm; MmsMsg *msg; @@ -62,30 +60,9 @@ int main(int argc, char *argv[]) info(0, "----------------------------------------"); info(0, " MMSC Email2MMS Tool version %s starting", MMSC_VERSION); - - grp = cfg_get_single_group(cfg, octstr_imm("core")); - log = cfg_get(grp, octstr_imm("log-file")); - if (log != NULL) { - if (cfg_get_integer(&loglevel, grp, octstr_imm("log-level")) == -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(grp, octstr_imm("access-log")); - if (alog) { - alog_open(octstr_get_cstr(alog), 1, 1); - octstr_destroy(alog); - } - - /* Load proxy relays. */ - - proxyrelays = mms_proxy_relays(cfg); - + /* Load settings. */ - settings = mms_load_mmsbox_settings(cfg); + settings = mms_load_mmsbox_settings(cfg, &proxyrelays); if (!settings) panic(0, "No global MMSC configuration!"); diff --git a/mbuni/mmsc/mmsproxy.c b/mbuni/mmsc/mmsproxy.c index cf91867..f8debf6 100644 --- a/mbuni/mmsc/mmsproxy.c +++ b/mbuni/mmsc/mmsproxy.c @@ -58,9 +58,7 @@ int main(int argc, char *argv[]) { int cfidx; Octstr *fname; - CfgGroup *grp; - Octstr *log, *alog; - long loglevel; + MmsHTTPClientInfo h = {NULL}; @@ -86,28 +84,12 @@ int main(int argc, char *argv[]) info(0, "----------------------------------------"); info(0, " " MM_NAME " MMSC Proxy version %s starting", MMSC_VERSION); - grp = cfg_get_single_group(cfg, octstr_imm("core")); - log = cfg_get(grp, octstr_imm("log-file")); - if (log != NULL) { - if (cfg_get_integer(&loglevel, grp, octstr_imm("log-level")) == -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(grp, octstr_imm("access-log")); - if (alog) { - alog_open(octstr_get_cstr(alog), 1, 1); - octstr_destroy(alog); - } - /* Load proxy relays. */ - - proxyrelays = mms_proxy_relays(cfg); /* Load settings. */ - settings = mms_load_mmsbox_settings(cfg); - + settings = mms_load_mmsbox_settings(cfg, &proxyrelays); + + cfg_destroy(cfg); + if (!settings) panic(0, "No global MMSC configuration!"); diff --git a/mbuni/mmsc/mmsrelay.c b/mbuni/mmsc/mmsrelay.c index c0af0a1..9885121 100644 --- a/mbuni/mmsc/mmsrelay.c +++ b/mbuni/mmsc/mmsrelay.c @@ -23,14 +23,10 @@ static void quit_now(int notused) rstop = 1; } - int main(int argc, char *argv[]) { int cfidx; Octstr *fname; - CfgGroup *grp; - Octstr *log, *alog; - long loglevel; long qthread = 0; @@ -55,28 +51,10 @@ int main(int argc, char *argv[]) info(0, "----------------------------------------"); info(0, " " MM_NAME " MMSC Relay version %s starting", MMSC_VERSION); - grp = cfg_get_single_group(cfg, octstr_imm("core")); - log = cfg_get(grp, octstr_imm("log-file")); - if (log != NULL) { - if (cfg_get_integer(&loglevel, grp, octstr_imm("log-level")) == -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(grp, octstr_imm("access-log")); - if (alog) { - alog_open(octstr_get_cstr(alog), 1, 1); - octstr_destroy(alog); - } + settings = mms_load_mmsbox_settings(cfg,&proxyrelays); - /* Load proxy relays. */ - - proxyrelays = mms_proxy_relays(cfg); - /* Load settings. */ - - settings = mms_load_mmsbox_settings(cfg); + cfg_destroy(cfg); if (!settings) panic(0, "No global MMSC configuration!"); diff --git a/mbuni/mmsc/mmssend.c b/mbuni/mmsc/mmssend.c index b741cb8..a24184d 100644 --- a/mbuni/mmsc/mmssend.c +++ b/mbuni/mmsc/mmssend.c @@ -86,9 +86,6 @@ int main(int argc, char *argv[]) Octstr *fname, *s; int cfidx; - CfgGroup *grp; - Octstr *log, *alog; - long loglevel; int msize; if (argc < 2) @@ -115,28 +112,9 @@ int main(int argc, char *argv[]) info(0, "----------------------------------------"); info(0, " MMSC Message sender runner version %s starting", MMSC_VERSION); - grp = cfg_get_single_group(cfg, octstr_imm("core")); - log = cfg_get(grp, octstr_imm("log-file")); - if (log != NULL) { - if (cfg_get_integer(&loglevel, grp, octstr_imm("log-level")) == -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(grp, octstr_imm("access-log")); - if (alog) { - alog_open(octstr_get_cstr(alog), 1, 1); - octstr_destroy(alog); - } - - /* Load proxy relays. */ - - proxyrelays = mms_proxy_relays(cfg); /* Load settings. */ - settings = mms_load_mmsbox_settings(cfg); + settings = mms_load_mmsbox_settings(cfg, &proxyrelays); if (!settings) panic(0, "No global MMSC configuration!");