web网关配置手册
web网关的配置数据基本上都是存在于数据库中,可通过clt -r命令将配置数据导出成xml文件,修改后再更新到数据库中clt -u。
主要的配置如下:
- 内网URL的配置(转向proxy的域名,该配置只适合添加域名)
该配置涉及三个文件http-client.xml、header-filter-request.xml、hostresolver.xml
http-client.xml 配置url的指向
将需要指向proxy的url填写到这里
stringsetinnerProxyUrls=Str.createSet("*.*.uni-info.com.cn","*.wap.wo.com.cn",…………)
stringspecialUrl = Str.concat(Str.concat(HttpReq.getProtocol(), "://"), Str.concat(HttpReq.getHost(), HttpReq.getPath()), Str.concat("?", HttpReq.getQuery()));
------此语句用来处理识别URL中存在?问号
if(Str.setContains(innerProxyUrls, HttpReq.getHost()) || Str.setContains(innerProxyUrls, fullUrl) || Str.setContains(innerProxyUrls, dirUrl))
{
return "httpproxy";
}
匹配以上域名的url,则转向"httpproxy"的配置
<cs:Config Name="httpproxy"><Proxy Host="10.184.73.140" Port="8000" ProtocolVersion="*" PersistentConnection="true"/></cs:Config>
10.184.73.140是proxy的IP地址,端口是8000
elseif(HttpReq.hostMatch("mmsc.myuni.com.cn") || HttpReq.hostMatch("192.168.30.180") || HttpReq.hostMatch("mmsc.monternet.com"))
{
return "mmsc";
}
匹配mmsc.myuni.com.cn、192.168.30.180、mmsc.monternet.com的,都转向" mmsc "彩信中心地址的配置
<cs:Config Name="mmsc">
<Proxy Host="10.184.73.180" Port="8080" ProtocolVersion="*" PersistentConnection="false" />
</cs:Config>
10.184.73.180是彩信中心的IP地址,端口是8080
其他默认的指向default,即表示出公网。
else
return "default";
<cs:Config Name="default" Default="true">
<Proxy Host="DIRECT" ProtocolVersion="*" PersistentConnection="true"/>
</cs:Config>
header-filter-request.xml 配置请求中的http头信息
stringset innerProxyUrls = Str. createSet("*.*.uni-info.com.cn","*.wap.wo.com.cn",…………)
送到proxy的都要传递手机号,这一块儿的配置跟http-client一致。
Mem.setConfigParams(Msid.toString(Auth.getMsisdn()), bearerType, Ip.toString(HttpReq.getTerminalIp()), Ip.toString(Auth.getGgsnIp()));
return "httpproxy";
}
匹配以上域名的转到httpproxy配置,其中“x-up-calling-line-id”代表手机号。
<cs:Config Name="httpproxy" Default="false">
<HeaderFilterRequestConfig>
<Add>
<Header Name="x-up-calling-line-id" Value="{0}"/>
<Header Name="x-up-bear-type" Value="{1}"/>
<Header Name="x-forwarded-for" Value="{2}"/>
<Header Name="x-source-id" Value="{3}"/>
</Add>
</HeaderFilterRequestConfig>
各个参数说明:
手机号码:x-up-calling-line-id
手机IP地址:x-forwarded-for
浏览器类型:user-agent
User-Profile的URI:x-wap-profile
接入承载方式:x-up-bear-type
GGSN地址:x-source-id
如果要删除以上某些字段信息,则在<add>……</add>中去掉改字段即可。
如果要删除User-Agent、x-wap-profile等信息,则需要写成以下格式:
<Remove>
<Header Name="User-Agent"/>
<Header Name="x-wap-profile"/>
</Remove>
hostresolver.xml内网域名解析
由于内网域名不需要解析,直接转向proxy,将需要指向proxy的域名添加到hostresolver.xml的以下位置中。
<FreeHostList>
<Item host="*.wap.uni-info.com.cn"/>
<Item host="*.wap.wo.com.cn"/>
………………….
</FreeHostList>
以上配置无需手动修改,应使用httpproxy脚本导入,脚本会自动修改以上三个文件,具体操作如下:(注意:该方法只适用于添加域名指向proxy,长url只能手工添加,方法见第二节)
登录DBU1,进入/opt/httpproxy目录,编辑list.txt文件,写入所有需要指向proxy的url地址(包括原来的和新增的),如:
*.*.uni-info.com.cn
*.wap.wo.com.cn
*.mclient.uni-info.com.cn
*.uni-info.com.cn
10.123.254.*
10.184.68.51
…………
每一行是一条域名数据。
然后执行命令进行全量导入
./intranet.sh list.txt true
list.txt列表编写方法:
clt -r http-client导出来,把stringset innerProxyUrls = Str.createSet(。。。。。)里边的列表搞出来,做成list.txt,一行一条url
注意,这一步只是为了保证列表是现网最新的数据,如果能保证list.txt的内容已是最新的,可以不做,直接在后边追加新域名。
最快的替换方法是使用editplus工具,将"","" 替换为回车。
然后掐头去尾双引号
再把要添加的url追加到结尾,将list.txt上传到 /opt/httpproxy下,执行
./intranet.sh list.txt true
- 内网URL的配置(全路径的url指向proxy)
clt -r http-client
http-client.xml
将要指向proxy的url全路径添加到如下蓝色位置:
stringset proxyUrls = Str.createSetIgnoreCase(
"http://gwap.yes3g.com/gwap/gl_mccyc/index.jsp",
"http://gwap.yes3g.com/gwap/gl_mjqxz/index.jsp",
"http://gwap.yes3g.com/gwap/gl_fyttkx/index.jsp",
"http://gwap.yes3g.com/gwap/gl_jcqxdt/index.php",
… … … …
if(Str.setContains(proxyUrls, fullUrl) || Str.setContains(proxyUrls, dirUrl) || Str.setContains(proxyUrls, specialUrl))
{
return "httpproxy";
}
- 增加传递明文手机号码
登录DBU
clt -r header-filter-request
header-filter-request.xml
将需要传递明文手机号码的url添加到如下位置,这里增加的域名是除了以上在innerProxyUrls列表中要转向proxy的内网地址之外的需要传递手机号的域名列表。
stringset onlineHall = Str.createSetIgnoreCase("wap.10010.com","mob.10010.com", ………….);
return "onlineHall";
其转向的是
<cs:Config Name="onlineHall">
<HeaderFilterRequestConfig>
<Add>
<Header Name="X-Nokia-Gateway-Id" Value="{0}/{1}/{2}"/>
<Header Name="X-Nokia-BEARER" Value="{3}"/>
<Header Name="x-up-bear-type" Value="{3}" />
<Header Name="X-Nokia-MaxDownlinkBitrate" Value="{4}"/>
<Header Name="X-Nokia-MaxUplinkBitrate" Value="{5}"/>
<Header Name="x-up-calling-line-id" Value="{6}"/>
<Header Name="x-forwarded-for" Value="{7}"/>
<Header Name="x-source-id" Value="{8}"/>
</Add>
</HeaderFilterRequestConfig>
</cs:Config>
这里转向的是手机营业厅的配置,其中http头中带手机号码x-up-calling-line-id。
- 终端适配
登录DBU
clt -r contentadaptation
contentadaptation.xml;
不需要终端适配的url添加到如下地方
if (HttpReq.hostMatch("unisk.wap.wo.com.cn") || HttpReq.hostMatch("tom.wap.wo.com.cn") || HttpReq.hostMatch("qh.2g.wo.com.cn")……)
{
isenable="disable";
}
其他默认都是进行终端适配的。
return isenable;
- 增加重定向
例如:访问*.tt560.com和wap.tusss.net重定向到www.wo.com.cn
登录DBU
clt -r authorization
<![CDATA[
msid msisdn = Auth.getMsisdn ();
msidrange barredRange = Msid.createRange ("861*");
string urlToRedirect = "wap.tt560.com";
string urlRedirected="http://www.wo.com.cn";
if ( Msid.rangeContains (barredRange, msisdn) && (HttpReq.hostMatch ("*.tt560.com") || HttpReq.hostMatch ("wap.tusss.net")))
{
Mem.setConfigParams ( urlRedirected );
return "redirect";
}
]]>
需要重定向的url追加到红色字体部分
首次浏览重定向
<![CDATA[
if (Session.getStr("FirstTime") == "") {
Session.putStr("FirstTime", "99");
Mem.setConfigParams("http://www.wo.com.cn");
return "redirect";
}
]]>
- 访问控制
web网关可以针对手机号段和具体手机号码,访问网站进行限制或允许访问。
clt -r authorization
- 针对手机号段和访问域名进行限制访问的配置,如156号段禁止访问baidu和google网站:
<! [CDATA [
msid msisdn = Auth.getMsisdn ();
msidrange barredRange = Msid.createRange ("86156*");
string barredUrl = "www.google.com";
if ( Msid.rangeContains (barredRange, msisdn) && (HttpReq.hostMatch("www.baidu.com") || HttpReq.hostMatch("www.google.com")))
{
return "deny";
}
else
{
return "allow";
}
]]>
- 涉黄网站封堵,将禁止访问的域名追加在以下列表后边:
<! [CDATA [
stringset denyUrls = Str.createSetIgnoreCase(
"*.1234vv.com",
"*.172tp.cn",
"*.17cr.cn",
"*.18nrse.cn",
"*.258sl.cn",
………………
长url放在下边
stringset longUrls = Str.createSetIgnoreCase(
"http://www.google.cn/gwt/x/i?client=ms-tencent_cmcc-cn&ei=cdQNS5yXLpjq6AP5qqzhBw&output=wml&u=http%3A%2F%2Fimages.sxx.com/pic_teasers/1/15/1575/92f3d9191f/nude/01/1575_04.jpg&wsc=ti&wsi=1f5e4305249289c7",
"http://wap.sohu.com/book/paihang/?pg=BKREVIEW&nid=928&stid=dv&bkid=86758&cpid=48&t=93975",
"http://wap.baidu.com/s?word=%E4%B9%B1%E4%BC%A6%E6%BF%80%E6%83%85%E6%80%A7%E4%BA%A4&pn=10&rn=5&tn=webmain&from=140a_w1_1258388821&ssid=0&bd_page_type=0&prest=111001&st=111181&tt=22322&uid=index_124&pu=pd%402%2Cuc%400",
"http://gamexg.com/Book-readchapter-2445-712949-1-10000.html",
"http://news.wap.sohu.com/sogou/webs/?pg=webz&url=http%3A%2F%2Fz.easou.com%2Fshow.m%3Fpn%3D2%26amp%3Ba%3D0%26amp%3Bq%3D55niu.com%26amp%3Bsr%3Dhttp%253A%252F%252Fa.44b4.com%252Fhtml%252Fdushijiqing%252F1013313U2009.html%26amp%3Bsurl%3D%26amp%3Besid%3Dr2A-YFaj4zHWZ",
"http://3g.sina.com.cn/prog/wapsite/books/vipc.php?bid=99452&cid=62754&pn=3&isc=n&pcn=0&fix=0&vt=1&PHPSESSID=960342f0b4ff3171de805eec57f509e4&wm=4007",
"http://news.wap.sohu.com/pim/message/fmsglist.do?&u_uid=330544100_137d87dc&fr=uc001",
"http://hti.wap.wo.com.cn/3g/20/3GJ.wap",
"http://hti.wap.wo.com.cn/3g/20/3GO.wap",
"http://hti.wap.wo.com.cn/3g/20/3GI.wap",
"http://hti.wap.wo.com.cn/3g/20/3GC.wap",
……………..
]]>
- 针对具体手机号和访问域名进行限制访问的配置,如手机号18609716448禁止访问baidu和google网站。
<![CDATA[
msid msisdn = Auth.getMsisdn ();
msidset barredRange1 = Msid.createSet("8618609716448");
if (Msid.setContains(barredRange1, msisdn) && (HttpReq.hostMatch("www.baidu.com") || HttpReq.hostMatch("www.google.com")))
{
return "deny";
}
else
return "allow";
]]>
- 图片压缩比配置
clt -r compression
ImageQualityReductionLevel="70" 配置压缩率
- push配置
clt -r push
<Item name="COMM_BEARER_1_TYPE" value="SMPP"/>
<Item name="COMM_BEARER_1_WDP_SMS_DRIVER_SMSC_HOST" value="10.184.73.10"/>
<Item name="COMM_BEARER_1_WDP_SMS_DRIVER_SMSC_PORT" value="8801"/>
<Item name="COMM_BEARER_1_WDP_SMS_DRIVER_LOCAL_ADDRESS" value=" 1065578444/1065578444@1065578444"/>
- 10.184.73.10为短信网关(sgip)/短信中心(smpp)的IP地址,8801为其端口。
- 1065578444/1065578444为短信网关/中心提供给我们的用户名,密码
- 1065578444为SP接入号,也是短信方需要提供的
APP配置文件:/etc/nbg/system/setup/cluster/cluster_setup.xml
<Application>
<Service Name="Management"/>
<Service Name="Radius"/>
<Service Name="AccountingIf"/>
<Service Name="Traffic"/>
<Service Name="Push"/>
</Application>
<Application>
<Service Name="Traffic"/>
<Service Name="Radius"/>
<Service Name="AccountingIf"/>
<Service Name="Push"/>
</Application>