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!");