diff -Nru gateway-1.4.1.orig/gw/bb_udp.c gateway-1.4.1/gw/bb_udp.c --- gateway-1.4.1.orig/gw/bb_udp.c 2005-02-11 17:35:48.000000000 +0200 +++ gateway-1.4.1/gw/bb_udp.c 2006-11-16 00:28:56.346802750 +0200 @@ -78,7 +78,7 @@ #include "gwlib/gwlib.h" #include "msg.h" #include "bearerbox.h" - +#include "custports.h" /* passed from bearerbox core */ extern volatile sig_atomic_t bb_status; @@ -352,13 +352,13 @@ while (gwlist_len(ifs) > 0) { iface = gwlist_extract_first(ifs); info(0, "Adding interface %s", octstr_get_cstr(iface)); - add_service(9200, octstr_get_cstr(iface)); /* wsp */ - add_service(9201, octstr_get_cstr(iface)); /* wsp/wtp */ + add_service(port_wsp, octstr_get_cstr(iface)); /* wsp */ + add_service(port_wtp, octstr_get_cstr(iface)); /* wsp/wtp */ #ifdef HAVE_WTLS_OPENSSL if (allow_wtls) { - add_service(9202, octstr_get_cstr(iface)); /* wsp/wtls */ - add_service(9203, octstr_get_cstr(iface)); /* wsp/wtp/wtls */ + add_service(port_wsps, octstr_get_cstr(iface)); /* wsp/wtls */ + add_service(port_wtps, octstr_get_cstr(iface)); /* wsp/wtp/wtls */ } #else if (allow_wtls) diff -Nru gateway-1.4.1.orig/gw/bearerbox.c gateway-1.4.1/gw/bearerbox.c --- gateway-1.4.1.orig/gw/bearerbox.c 2006-05-09 08:44:31.000000000 +0300 +++ gateway-1.4.1/gw/bearerbox.c 2006-11-16 00:28:56.346802750 +0200 @@ -77,6 +77,7 @@ #include "bearerbox.h" #include "shared.h" #include "dlr.h" +#include "custports.h" /* global variables; included to other modules as needed */ @@ -280,7 +281,6 @@ { static int started = 0; if (started) return 0; - udp_start(cfg); start_wap(cfg); @@ -353,6 +353,7 @@ int ssl_enabled = 0; #endif /* HAVE_LIBSSL */ + ReadCustomPorts(cfg); /* defaults: use localtime and markers for access-log */ lf = m = 1; diff -Nru gateway-1.4.1.orig/gw/custports.c gateway-1.4.1/gw/custports.c --- gateway-1.4.1.orig/gw/custports.c 1970-01-01 02:00:00.000000000 +0200 +++ gateway-1.4.1/gw/custports.c 2006-11-16 00:28:56.346802750 +0200 @@ -0,0 +1,88 @@ +/* ==================================================================== + * The Kannel Software License, Version 1.0 + * + * Copyright (c) 2001-2004 Kannel Group + * Copyright (c) 1998-2001 WapIT Ltd. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in + * the documentation and/or other materials provided with the + * distribution. + * + * 3. The end-user documentation included with the redistribution, + * if any, must include the following acknowledgment: + * "This product includes software developed by the + * Kannel Group (http://www.kannel.org/)." + * Alternately, this acknowledgment may appear in the software itself, + * if and wherever such third-party acknowledgments normally appear. + * + * 4. The names "Kannel" and "Kannel Group" must not be used to + * endorse or promote products derived from this software without + * prior written permission. For written permission, please + * contact org@kannel.org. + * + * 5. Products derived from this software may not be called "Kannel", + * nor may "Kannel" appear in their name, without prior written + * permission of the Kannel Group. + * + * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED + * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE KANNEL GROUP OR ITS CONTRIBUTORS + * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, + * OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT + * OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR + * BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, + * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE + * OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, + * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * ==================================================================== + * + * This software consists of voluntary contributions made by many + * individuals on behalf of the Kannel Group. For more information on + * the Kannel Group, please see . + * + * Portions of this software are based upon software originally written at + * WapIT Ltd., Helsinki, Finland for the Kannel project. + */ + +/* + * gw/custports.c + * + * Implementation of reading custom UDP ports used by wapbox + * + * Lubor Kolar , 14.03.2006 + */ + +#include + +long port_wsp = 9200; // connectionless default +long port_wtp = 9201; // connection-oriented default +long port_wsps = 9202; // connectionless secure default +long port_wtps = 9203; // connection-oriented secure + + +void ReadCustomPorts(Cfg *config) +{ + CfgGroup *grp; + grp = cfg_get_single_group(config, octstr_imm("wapbox")); + if(grp == NULL) + return; + + if(cfg_get_integer(&port_wsp, grp, octstr_imm("wsp-port")) != -1) + info(0, "Using custom WSP port %ld", port_wsp); + if(cfg_get_integer(&port_wtp, grp, octstr_imm("wtp-port")) != -1) + info(0, "Using custom WSP/WTP port %ld", port_wtp); + if(cfg_get_integer(&port_wsps, grp, octstr_imm("wsps-port")) != -1) + info(0, "Using custom WSP/WTLS port %ld", port_wsps); + if(cfg_get_integer(&port_wtps, grp, octstr_imm("wtps-port")) != -1) + info(0, "Using custom WSP/WTP/WTLS port %ld", port_wtps); +} diff -Nru gateway-1.4.1.orig/gw/custports.h gateway-1.4.1/gw/custports.h --- gateway-1.4.1.orig/gw/custports.h 1970-01-01 02:00:00.000000000 +0200 +++ gateway-1.4.1/gw/custports.h 2006-11-16 00:28:56.346802750 +0200 @@ -0,0 +1,77 @@ +/* ==================================================================== + * The Kannel Software License, Version 1.0 + * + * Copyright (c) 2001-2004 Kannel Group + * Copyright (c) 1998-2001 WapIT Ltd. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in + * the documentation and/or other materials provided with the + * distribution. + * + * 3. The end-user documentation included with the redistribution, + * if any, must include the following acknowledgment: + * "This product includes software developed by the + * Kannel Group (http://www.kannel.org/)." + * Alternately, this acknowledgment may appear in the software itself, + * if and wherever such third-party acknowledgments normally appear. + * + * 4. The names "Kannel" and "Kannel Group" must not be used to + * endorse or promote products derived from this software without + * prior written permission. For written permission, please + * contact org@kannel.org. + * + * 5. Products derived from this software may not be called "Kannel", + * nor may "Kannel" appear in their name, without prior written + * permission of the Kannel Group. + * + * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED + * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE KANNEL GROUP OR ITS CONTRIBUTORS + * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, + * OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT + * OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR + * BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, + * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE + * OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, + * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * ==================================================================== + * + * This software consists of voluntary contributions made by many + * individuals on behalf of the Kannel Group. For more information on + * the Kannel Group, please see . + * + * Portions of this software are based upon software originally written at + * WapIT Ltd., Helsinki, Finland for the Kannel project. + */ + +/* + * gw/custports.h + * + * Implementation of wapbox custom UDP ports) + * + * Lubor Kolar , 14.03.2006 + */ + +#ifndef CUSTPORTS_H +#define CUSTPORTS_H + +#include "gwlib/gwlib.h" + +extern long port_wsp; // connectionless +extern long port_wtp; // connection-oriented +extern long port_wsps; // connectionless secure +extern long port_wtps; // connection-oriented secure + +void ReadCustomPorts(Cfg *config); +#endif /* CUSTPORTS_H */ + diff -Nru gateway-1.4.1.orig/gw/wapbox.c gateway-1.4.1/gw/wapbox.c --- gateway-1.4.1.orig/gw/wapbox.c 2006-03-28 15:00:19.000000000 +0300 +++ gateway-1.4.1/gw/wapbox.c 2006-11-16 00:28:56.350803000 +0200 @@ -84,17 +84,11 @@ #include "gwlib/pki.h" #endif #include "radius/radius_acct.h" +#include "custports.h" static void config_reload(int reload); static long logfilelevel=-1; -enum { - CONNECTIONLESS_PORT = 9200, - CONNECTION_ORIENTED_PORT = 9201, - WTLS_CONNECTIONLESS_PORT = 9202, - WTLS_CONNECTION_ORIENTED_PORT = 9203 -}; - enum { DEFAULT_TIMER_FREQ = 1}; static Octstr *bearerbox_host; @@ -131,6 +125,8 @@ cfg_dump(cfg); + ReadCustomPorts(cfg); + /* * Extract info from the core group. */ @@ -772,9 +768,9 @@ * XXXX here should be suspend/resume, add RSN */ } else if (msg_type(msg) == wdp_datagram) { - switch (msg->wdp_datagram.destination_port) { - case CONNECTIONLESS_PORT: - case CONNECTION_ORIENTED_PORT: + if(msg->wdp_datagram.destination_port == port_wsp + || msg->wdp_datagram.destination_port == port_wtp) + { dgram = wap_event_create(T_DUnitdata_Ind); dgram->u.T_DUnitdata_Ind.addr_tuple = wap_addr_tuple_create( msg->wdp_datagram.source_address, @@ -785,19 +781,22 @@ msg->wdp_datagram.user_data = NULL; wap_dispatch_datagram(dgram); - break; - case WTLS_CONNECTIONLESS_PORT: - case WTLS_CONNECTION_ORIENTED_PORT: + } + else + if(msg->wdp_datagram.destination_port == port_wsps + || msg->wdp_datagram.destination_port == port_wtps) + { #if (HAVE_WTLS_OPENSSL) dgram = wtls_unpack_wdp_datagram(msg); if (dgram != NULL) wtls_dispatch_event(dgram); #endif - break; - default: + } + else + { panic(0,"Bad packet received! This shouldn't happen!"); break; - } + } } else { warning(0, "Received other message than wdp/admin, ignoring!"); } diff -Nru gateway-1.4.1.orig/gw/wap_push_ppg.c gateway-1.4.1/gw/wap_push_ppg.c --- gateway-1.4.1.orig/gw/wap_push_ppg.c 2005-10-06 15:48:26.000000000 +0300 +++ gateway-1.4.1/gw/wap_push_ppg.c 2006-11-16 00:28:56.350803000 +0200 @@ -88,6 +88,7 @@ #include "wap_push_pap_compiler.h" #include "wap_push_pap_mime.h" #include "wap_push_ppg_pushuser.h" +#include "custports.h" enum { TIME_EXPIRED = 0, @@ -1768,10 +1769,10 @@ if (!cless_accepted) { cliport = CONNECTED_CLIPORT; - servport = CONNECTED_SERVPORT; + servport = port_wtp; } else { cliport = CONNECTIONLESS_PUSH_CLIPORT; - servport = CONNECTIONLESS_SERVPORT; + servport = port_wsp; } address_type = (**e).u.Push_Message.address_type; diff -Nru gateway-1.4.1.orig/gw/wap_push_ppg.h gateway-1.4.1/gw/wap_push_ppg.h --- gateway-1.4.1.orig/gw/wap_push_ppg.h 2005-02-11 17:35:48.000000000 +0200 +++ gateway-1.4.1/gw/wap_push_ppg.h 2006-11-16 00:28:56.350803000 +0200 @@ -167,9 +167,7 @@ */ enum { CONNECTIONLESS_PUSH_CLIPORT = 2948, - CONNECTIONLESS_SERVPORT = 9200, CONNECTED_CLIPORT = 9209, - CONNECTED_SERVPORT = 9201 }; struct PPGSessionMachine { diff -Nru gateway-1.4.1.orig/gwlib/cfg.def gateway-1.4.1/gwlib/cfg.def --- gateway-1.4.1.orig/gwlib/cfg.def 2006-08-28 15:06:13.000000000 +0300 +++ gateway-1.4.1/gwlib/cfg.def 2006-11-16 00:30:55.042220750 +0200 @@ -153,6 +153,10 @@ OCTSTR(concatenation) OCTSTR(max-messages) OCTSTR(wml-strict) + OCTSTR(wsp-port) + OCTSTR(wtp-port) + OCTSTR(wsps-port) + OCTSTR(wtps-port) )