下面是一位高手整理的问题精华,大家好好看看吧,收获肯定很大的!
1.如何让asp脚本以system权限运行?
修改你asp脚本所对应的虚拟目录,把"应用程序保护"修改为"低"....
2.如何防止asp木马?
基于FileSystemObject组件的asp木马
cacls %systemroot%\system32\scrrun.dll /e /d guests //禁止guests使用
regsvr32 scrrun.dll /u /s //删除
基于shell.application组件的asp木马
cacls %systemroot%\system32\shell32.dll /e /d guests //禁止guests使用
regsvr32 shell32.dll /u /s //删除
3.如何加密asp文件?
从微软免费下载到sce10chs.exe 直接运行即可完成安装过程。
安装完毕后,将生成screnc.exe文件,这是一个运行在DOS PROMAPT的命令工具。
运行screnc - l vbscript source.asp destination.asp
生成包含密文ASP脚本的新文件destination.asp
用记事本打开看凡是""之内的,不管是否注解,都变成不可阅读的密文了
但无法加密中文。
4.如何从IISLockdown中提取urlscan?
iislockd.exe /q /c /t:c:\urlscan
5.如何防止Content-Location标头暴露了web服务器的内部IP地址?
执行
cscript c:\inetpub\adminscripts\adsutil.vbs set w3svc/UseHostName True
最后需要重新启动iis
6.如何解决HTTP500内部错误?
iis http500内部错误大部分原因
主要是由于iwam账号的密码不同步造成的。
我们只要同步iwam_myserver账号在com+应用程序中的密码即可解决问题。
执行
cscript c:\inetpub\adminscripts\synciwam.vbs -v
7.如何增强iis防御SYN Flood的能力?
Windows Registry Editor Version 5.00
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters]
'启动syn攻击保护。缺省项值为0,表示不开启攻击保护,项值为1和2表示启动syn攻击保护,设成2之后
'安全级别更高,对何种状况下认为是攻击,则需要根据下面的TcpMaxHalfOpen和TcpMaxHalfOpenRetried值
'设定的条件来触发启动了。这里需要注意的是,NT4.0必须设为1,设为2后在某种特殊数据包下会导致系统重启。
"SynAttackProtect"=dword:00000002
'同时允许打开的半连接数量。所谓半连接,表示未完整建立的TCP会话,用netstat命令可以看到呈SYN_RCVD状态
'的就是。这里使用微软建议值,服务器设为100,高级服务器设为500。建议可以设稍微小一点。
"TcpMaxHalfOpen"=dword:00000064
'判断是否存在攻击的触发点。这里使用微软建议值,服务器为80,高级服务器为400。
"TcpMaxHalfOpenRetried"=dword:00000050
'设置等待SYN-ACK时间。缺省项值为3,缺省这一过程消耗时间45秒。项值为2,消耗时间为21秒。
'项值为1,消耗时间为9秒。最低可以设为0,表示不等待,消耗时间为3秒。这个值可以根据遭受攻击规模修改。
'微软站点安全推荐为2。
"TcpMaxConnectResponseRetransmissions"=dword:00000001
'设置TCP重传单个数据段的次数。缺省项值为5,缺省这一过程消耗时间240秒。微软站点安全推荐为3。
"TcpMaxDataRetransmissions"=dword:00000003
'设置syn攻击保护的临界点。当可用的backlog变为0时,此参数用于控制syn攻击保护的开启,微软站点安全推荐为5。
"TCPMaxPortsExhausted"=dword:00000005
'禁止IP源路由。缺省项值为1,表示不转发源路由包,项值设为0,表示全部转发,设置为2,表示丢弃所有接受的
'源路由包,微软站点安全推荐为2。
"DisableIPSourceRouting"=dword:0000002
'限制处于TIME_WAIT状态的最长时间。缺省为240秒,最低为30秒,最高为300秒。建议设为30秒。
"TcpTimedWaitDelay"=dword:0000001e
8.如何避免*mdb文件被下载?
安装ms发布的urlscan工具,可以从根本上解决这个问题。
同时它也是一个强大的安全工具,你可以从ms的网站上获取更为详细的信息。
9.如何让iis的最小ntfs权限运行?
依次做下面的工作:
a.选取整个硬盘:
system:完全控制
administrator:完全控制
(允许将来自父系的可继承性权限传播给对象)
b.\program files\common files:
everyone:读取及运行
列出文件目录
读取
(允许将来自父系的可继承性权限传播给对象)
c.\inetpub\wwwroot:
iusr_machine:读取及运行
列出文件目录
读取
(允许将来自父系的可继承性权限传播给对象)
e.\winnt\system32:
选择除inetsrv和centsrv以外的所有目录,
去除“允许将来自父系的可继承性权限传播给对象”选框,复制。
f.\winnt:
选择除了downloaded program files、help、iis temporary compressed files、
offline web pages、system32、tasks、temp、web以外的所有目录
去除“允许将来自父系的可继承性权限传播给对象”选框,复制。
g.\winnt:
everyone:读取及运行
列出文件目录
读取
(允许将来自父系的可继承性权限传播给对象)
h.\winnt\temp:(允许访问数据库并显示在asp页面上)
everyone:修改
(允许将来自父系的可继承性权限传播给对象)
10.如何隐藏iis版本?
一个黑客可以可以轻易的telnet到你的web端口,发送get命令来获取很多信息
iis存放IIS BANNER的所对应的dll文件如下:
WEB:C:\WINNT\SYSTEM32\INETSRV\W3SVC.DLL
FTP:C:\WINNT\SYSTEM32\INETSRV\FTPSVC2.DLL
SMTP:C:\WINNT\SYSTEM32\INETSRV\SMTPSVC.DLL
你可以用16进制编辑器去修改那些dll文件的关键字,比如iis的Microsoft-IIS/5.0
具体过程如下:
1.停掉iis iisreset /stop
2.删除%SYSTEMROOT%\system32\dllcache目录下的同名文件
3.修改
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
1.如何让asp脚本以system权限运行?
修改你asp脚本所对应的虚拟目录,把"应用程序保护"修改为"低"....
2.如何防止asp木马?
基于FileSystemObject组件的asp木马
cacls %systemroot%\system32\scrrun.dll /e /d guests //禁止guests使用
regsvr32 scrrun.dll /u /s //删除
基于shell.application组件的asp木马
cacls %systemroot%\system32\shell32.dll /e /d guests //禁止guests使用
regsvr32 shell32.dll /u /s //删除
3.如何加密asp文件?
从微软免费下载到sce10chs.exe 直接运行即可完成安装过程。
安装完毕后,将生成screnc.exe文件,这是一个运行在DOS PROMAPT的命令工具。
运行screnc - l vbscript source.asp destination.asp
生成包含密文ASP脚本的新文件destination.asp
用记事本打开看凡是""之内的,不管是否注解,都变成不可阅读的密文了
但无法加密中文。
4.如何从IISLockdown中提取urlscan?
iislockd.exe /q /c /t:c:\urlscan
5.如何防止Content-Location标头暴露了web服务器的内部IP地址?
执行
cscript c:\inetpub\adminscripts\adsutil.vbs set w3svc/UseHostName True
最后需要重新启动iis
6.如何解决HTTP500内部错误?
iis http500内部错误大部分原因
主要是由于iwam账号的密码不同步造成的。
我们只要同步iwam_myserver账号在com+应用程序中的密码即可解决问题。
执行
cscript c:\inetpub\adminscripts\synciwam.vbs -v
7.如何增强iis防御SYN Flood的能力?
Windows Registry Editor Version 5.00
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters]
'启动syn攻击保护。缺省项值为0,表示不开启攻击保护,项值为1和2表示启动syn攻击保护,设成2之后
'安全级别更高,对何种状况下认为是攻击,则需要根据下面的TcpMaxHalfOpen和TcpMaxHalfOpenRetried值
'设定的条件来触发启动了。这里需要注意的是,NT4.0必须设为1,设为2后在某种特殊数据包下会导致系统重启。
"SynAttackProtect"=dword:00000002
'同时允许打开的半连接数量。所谓半连接,表示未完整建立的TCP会话,用netstat命令可以看到呈SYN_RCVD状态
'的就是。这里使用微软建议值,服务器设为100,高级服务器设为500。建议可以设稍微小一点。
"TcpMaxHalfOpen"=dword:00000064
'判断是否存在攻击的触发点。这里使用微软建议值,服务器为80,高级服务器为400。
"TcpMaxHalfOpenRetried"=dword:00000050
'设置等待SYN-ACK时间。缺省项值为3,缺省这一过程消耗时间45秒。项值为2,消耗时间为21秒。
'项值为1,消耗时间为9秒。最低可以设为0,表示不等待,消耗时间为3秒。这个值可以根据遭受攻击规模修改。
'微软站点安全推荐为2。
"TcpMaxConnectResponseRetransmissions"=dword:00000001
'设置TCP重传单个数据段的次数。缺省项值为5,缺省这一过程消耗时间240秒。微软站点安全推荐为3。
"TcpMaxDataRetransmissions"=dword:00000003
'设置syn攻击保护的临界点。当可用的backlog变为0时,此参数用于控制syn攻击保护的开启,微软站点安全推荐为5。
"TCPMaxPortsExhausted"=dword:00000005
'禁止IP源路由。缺省项值为1,表示不转发源路由包,项值设为0,表示全部转发,设置为2,表示丢弃所有接受的
'源路由包,微软站点安全推荐为2。
"DisableIPSourceRouting"=dword:0000002
'限制处于TIME_WAIT状态的最长时间。缺省为240秒,最低为30秒,最高为300秒。建议设为30秒。
"TcpTimedWaitDelay"=dword:0000001e
8.如何避免*mdb文件被下载?
安装ms发布的urlscan工具,可以从根本上解决这个问题。
同时它也是一个强大的安全工具,你可以从ms的网站上获取更为详细的信息。
9.如何让iis的最小ntfs权限运行?
依次做下面的工作:
a.选取整个硬盘:
system:完全控制
administrator:完全控制
(允许将来自父系的可继承性权限传播给对象)
b.\program files\common files:
everyone:读取及运行
列出文件目录
读取
(允许将来自父系的可继承性权限传播给对象)
c.\inetpub\wwwroot:
iusr_machine:读取及运行
列出文件目录
读取
(允许将来自父系的可继承性权限传播给对象)
e.\winnt\system32:
选择除inetsrv和centsrv以外的所有目录,
去除“允许将来自父系的可继承性权限传播给对象”选框,复制。
f.\winnt:
选择除了downloaded program files、help、iis temporary compressed files、
offline web pages、system32、tasks、temp、web以外的所有目录
去除“允许将来自父系的可继承性权限传播给对象”选框,复制。
g.\winnt:
everyone:读取及运行
列出文件目录
读取
(允许将来自父系的可继承性权限传播给对象)
h.\winnt\temp:(允许访问数据库并显示在asp页面上)
everyone:修改
(允许将来自父系的可继承性权限传播给对象)
10.如何隐藏iis版本?
一个黑客可以可以轻易的telnet到你的web端口,发送get命令来获取很多信息
iis存放IIS BANNER的所对应的dll文件如下:
WEB:C:\WINNT\SYSTEM32\INETSRV\W3SVC.DLL
FTP:C:\WINNT\SYSTEM32\INETSRV\FTPSVC2.DLL
SMTP:C:\WINNT\SYSTEM32\INETSRV\SMTPSVC.DLL
你可以用16进制编辑器去修改那些dll文件的关键字,比如iis的Microsoft-IIS/5.0
具体过程如下:
1.停掉iis iisreset /stop
2.删除%SYSTEMROOT%\system32\dllcache目录下的同名文件
3.修改
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
代理服务squid+squidGuard的安装
[ 2005/12/13 22:48 | by ipaddr ]
参考SkyUranus的《Linux下的代理服务器设置》ipaddr整理
前言:
本文主要介绍了在linux使用squid和squidGuard配置代理服务器,以www代理服务为例介绍如何过滤有害站点和限制用户对internet
的访问。
一. 介绍
Squid是Linux下最为流行的代理服务器软件,它功能强大,支持对HTTP,FTP,Gopher,SSL和WAIS等协议的代理;设置简单,只需对
配置文件中稍稍改动就可使代理服务器运转起来。而且Squid具有页面缓存功能,它接收用户的下载申请,并自动处理所下载的数据
。也就是说,当一个用户象要下载一个主页时,它向Squid发出一个申请,要Squid替它下载,然后Squid连接所申请网站并请求该主
页,接着把该主页传给用户同时保留一个备份,当别的用户申请同样的页面时,Squid把保存的备份立即传给用户,使用户觉得速度
相当快。
squidGuard则是作为squid的辅助软件,完成过滤、重定向和访问控制的功能。它是一个自由软件,功能强,便于安装、易于配置、
而且处理速度快。功能主要包括:根据web服务器或URLs列表限制一些用户的访问;阻塞某些用户对黑名单上的web服务器和URLs的访
问;阻塞某些用户对正则表达式匹配的URLs的访问;在URL路径加强了使用域名访问而禁止用IP访问;重定向阻塞的URLs到一个智能
CGI的信息页;重定向非授权用户到一个注册页面;具有基于日期、每周、每天具体时间的访问规则;对不同用户组有不同的规则。
但是不能过滤、检查文档中的文本以及HTML中的JavaScript或Vbscript脚本语言。
二. 安装
1。安装squid:
从www.squid-cache.org下载squid-2.5.STABLE12.tar.gz存在本地/usr/local/squid/src下。
在编译Squid之前,建立一个专门运行Squid的用户和组,这里建立了名为squid的组和用户,用户目录设为/usr/local/squid
#su squid
$cd /usr/local/squid/src
$tar xvzf squid-2.5.STABLE12.tar.gz
$ cd squid-2.5.STABLE12
$./configure
$make
$make install
(默认安装到/usr/local/squid目录下)
//默认RH系统里有squid用户和组
2。安装Berkeley DB 2.x:
从http://www.sleepycat.com 下载db-2.7.7.tar.gz并存在/usr/local/squidGuard/src/目录下
$su
#cd /usr/local/squidGuard/src/
#tar xvzf db-2.7.7.tar.gz
#cd db-2.7.7
#cd build_unix
//不能在根目录直接configure,必须先进入build_unix,再../dist/configure
#../dist/configure
#make
#make install
(默认安装到/usr/local/BerkeleyDB目录下)
注意:squidGuard不支持Berkeley DB 3.x,4.x版本
3。安装squidGuard
官方网站:http://www.squidguard.org
从http://ftp.ost.eltele.no/pub/www/proxy/squidGuard/squidGuard-1.2.0.tar.gz下载软件包并存于本
地/usr/local/squidGuard/src/
#cd /usr/local/squidGuard/src/
#tar xvzf squidGuard-1.2.0.tar.gz
#cd squidGuard-1.2.0
#./configure --prefix=/usr/local/squidGuard
#make
#make test //测试ok,即可进行下一步安装
#make install
三. 配置
1.配置squid:
修改squid的配置文件/usr/local/squid/etc/squid.conf:
http_port 8080
#squid的代理端口,使用1024以下的端口,squid必须以root身份运行,一般以3128端口运行,开了防火墙的话,注意要打开
iptables的端口限制。
http_access allow all
#允许所有的用户通过代理进行http访问
#squid启用squidGuard进行过滤和转发
#/usr/local/squid/bin/squidGuard是squidGuard的执行路径,后面-c是配置文件的路径
redirect_program /usr/local/squid/bin/squidGuard -c /usr/local/squidGuard/squidGuard.conf
#派生5个squidGuard进程
redirect_children =5
其它参数:
#cache_mem:设置代理服务使用的内存大小,一般推荐为物理内存的三分之一
cache_mem 16 m
#cache_dir:设定缓存的位置、大小。一般格式如下:
cache_dir /usr/local/squid/cache 100 16 256
#/usr/local/squid/cache代表缓存的位置;100代表缓存最大为100M;16和256代表一级和二级目录数。
#cache_effective_user:设定使用缓存的有效用户。缺省为用户nobody,如果系统中没有用户nobody,最好建一个或以非root用户
运行Squid。这里是以squid身份运行的
cache_effective_user squid
#cache_effective_group:设定使用缓存的有效用户组。缺省组为nogroup,如果系统中没有组nogroup,最好建一个组。这里是
squid组。
cache_effective_group squid
(其余参数用默认值即可!)
2.配置squidGuard:
修改squidGuard的配置文件/usr/local/squidGuard/squidGuard.conf文件:
logdir /usr/local/squidGuard/logs #日志目录定义
dbhome /usr/local/squidGuard/db #db目录定义
#目标组定义
dest ipaddr {
domainlist ipaddr/domains
urllist ipaddr/urls
expressionlist ipaddr/expressions
}
#访问规则定义
acl {
default {
pass !ipaddr all
redirect http://192.168.0.1/error
(
#也可以重定向到一个含有一些信息的cgi页面,如下:
http://192.168.0.1/cgi/blocked?clientaddr=%a&clientname=%n&clientuser=%i&clientgroup=%s&targetgroup=%t&url=%u
#也可以重定向到www.google.com
)
}
}
# vi db/ipaddr/domains
(域列表文件:主要是阻塞一些定义的站点)
co.za
sex.com
(如上,可以阻塞如hack.co.za、sex.com、www.sex.com、whatever.sex.com,但是不同于.*[^.]sex.com,不匹配ssex.com)
# vi db/ipaddr/urls
(url列表文件,主要是阻塞一些站点及其一些栏目)
qihui.com/sex
valen.sohu.com/album
(如上可阻塞http://qihui.com/sex、http://qihui.com/sex/whatever、ftp://qihui.com/sex、http://www.qihui.com/sex等)
# vi db/ipaddr/expressions
(表达式列表文件,主要是阻塞一些与表达式匹配的URL访问)
(^│[\?+=/])(.*)(girl)(.*)([\?+=/]│$)
(上面的正则表达式可以阻塞URL中包括girl站点的访问,如:www.girlzine.com、girl.huabao.net、www.huayu.net/girl、
www.universiti.com/girl等 )
注意:squidGuard对配置文件的语法要求很严,如果配置文件语法有误,squidGuard仍能运行,但是squidGuard已进入应急模式,此
时代理服务不具有任何阻塞作用,所有通过该代理的访问都可通过,可以查看logs/squidGuard的日志文件,即可发现错误,例如:
2001-12-20 17:08:44 [2430] parse error in configfile /usr/local/squidGuard/squidGuard.conf line 8
2001-12-20 17:08:44 [2430] going into emergency mode
…….
其中配置文件第8行有误,squidGuard进入应急模式。
配置的具体说明详见http://www.squidguard.org/
---------日志的存放----------------
squidGuard的日志是检查配置是否正确的工具。如果日志里出现了going into emergency mode,说明配置不成功。
默认squidGuard的日志存放[--prefix]/squidGuard/log/squidGuard.log,我们安装时--prefix=/usr/local/squidGuard,所以,还
需要:
mkdir /usr/local/squidGuard/squidGuard
mkdir /usr/local/squidGuard/squidGuard/log
chown squid.squid mkdir /usr/local/squidGuard/squidGuard
启动后,日志存放在/usr/local/squidGuard/squidGuard/log/squidGuard.log
此外,也可以在squidGuard的./configure时指定默认的日志文件
---------日志的存放----------------
#squidGuard的更多配置的安装,在squidGuard的安装包squidGuard-1.2.0.tar.gz有详细介绍。
四. 运行:
$ chmod 777 /usr/local/squid/logs
(设置logs对所有用户为可写。这样,不特定的squid代理客户才能正常访问代理服务器,并能在logs目录、产生access.log、
cache.log等文件。)
$ /usr/local/squid/bin/squid -z
(手工建立squid的缓存目录/usr/local/squid/cache。)
(cache有时默认是/usr/local/squid/var/cache)
(设置了cache_effective_user和cache_effective_group为squid时,还需要chown squid.squid -R /usr/local/squid/cache)
#/usr/local/squid/bin/squid
(后台执行squid。如果想前台执行squid:如果你想前台执行Squid执行命令:
$/usr/local/squid/bin/squid -NCd1
该命令正式启动Squid。如果一切正常,你会看到一行输出:
Ready to serve requests )
# ps ax│grep squid
20198 ? S 0:00 /usr/local/squid/bin/squid
20200 ? S 0:27 (squid)
20310 ? S 0:00 (squidGuard) -c /usr/local/squidGuard/squidGuard.conf
20311 ? S 0:00 (squidGuard) -c /usr/local/squidGuard/squidGuard.conf
20312 ? S 0:00 (squidGuard) -c /usr/local/squidGuard/squidGuard.conf
20313 ? S 0:00 (squidGuard) -c /usr/local/squidGuard/squidGuard.conf
20314 ? S 0:00 (squidGuard) -c /usr/local/squidGuard/squidGuard.conf
(此时squidGuard也已启用,每次修改配置后squid -k reconfigure重新起用即可,要杀掉squid执行squid -k kill)
查看squidGuard日志文件:
init domainlist /usr/local/squidGuard/db/ipaddr/domains
2001-12-20 16:14:43 [2270] init domainlist /usr/local/squidGuard/db/ipaddr/domains
2001-12-20 16:14:43 [2270] init urllist /usr/local/squidGuard/db/ipaddr/urls
2001-12-20 16:14:43 [2270] init expressionlist /usr/local/squidGuard/db/porn/expressions
2001-12-20 16:14:43 [2270] squidGuard 1.1.4 started (1008836083.022)
2001-12-20 16:14:43 [2270] recalculating alarm in 917 seconds
2001-12-20 16:14:43 [2270] squidGuard ready for requests (1008836083.044)
表示squidGuard已正常启动
五. 测试:
配置客户端,然后测试代理服务:
在另一台win2k上,(以Internet Explore5.0为例)运行IE,单击"工具",接着单击"Internet选项",再单击"连接"选项卡,单击"
局域网设置";在"局域网设置"窗口中,在"地址"处填上squid服务器的IP地址192.168.100.16,在"端口"处填上"8080"(修改后
squid代理使用的端口号,也就是squid.conf中的http_port,默认值为3128),确定后退出。
接下来,先把IP改成192.168.100.20,浏览一些网站,如sohu,163等,然后再试试domains和urls中定义的,如hack.co.za、qihui.com/sex,会发现主页被重定向到http://www.google.com。然后再试试浏览有关girl的网站,去不了了:(;在sohu中搜girl
也被重定向了;用IP试试(有些代理程序对IP不做限制,用IP可以绕过代理的限制访问一些禁止的站点),可惜不行!(因为
squidGuard配置文件中使用了!in_addr,所以可以强迫用户使用域名访问而不能使用ip访问)
再下来,把IP改成192.168.100.18,然后时间改为testtime外的时间,浏览网页,试试结果,然后再将时间改为testtime内浏览网页
!
最后,把IP改成192.168.100.30,浏览网页测试。
(可以查看logs下的access.log和cache.log,看看是否代理运行正常以及访问的站点记录)
总结:
由上可见,用squid和squidGuard建立的代理服务器,配置比较简单,而且功能强大,可以有效的限制一些用户对internet的访问并
过滤一些黑名单列出的站点(如色情站点等)。
这里只简单的介绍了关于http代理的例子,其它的应用和功能大家可以自己试试。
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
前言:
本文主要介绍了在linux使用squid和squidGuard配置代理服务器,以www代理服务为例介绍如何过滤有害站点和限制用户对internet
的访问。
一. 介绍
Squid是Linux下最为流行的代理服务器软件,它功能强大,支持对HTTP,FTP,Gopher,SSL和WAIS等协议的代理;设置简单,只需对
配置文件中稍稍改动就可使代理服务器运转起来。而且Squid具有页面缓存功能,它接收用户的下载申请,并自动处理所下载的数据
。也就是说,当一个用户象要下载一个主页时,它向Squid发出一个申请,要Squid替它下载,然后Squid连接所申请网站并请求该主
页,接着把该主页传给用户同时保留一个备份,当别的用户申请同样的页面时,Squid把保存的备份立即传给用户,使用户觉得速度
相当快。
squidGuard则是作为squid的辅助软件,完成过滤、重定向和访问控制的功能。它是一个自由软件,功能强,便于安装、易于配置、
而且处理速度快。功能主要包括:根据web服务器或URLs列表限制一些用户的访问;阻塞某些用户对黑名单上的web服务器和URLs的访
问;阻塞某些用户对正则表达式匹配的URLs的访问;在URL路径加强了使用域名访问而禁止用IP访问;重定向阻塞的URLs到一个智能
CGI的信息页;重定向非授权用户到一个注册页面;具有基于日期、每周、每天具体时间的访问规则;对不同用户组有不同的规则。
但是不能过滤、检查文档中的文本以及HTML中的JavaScript或Vbscript脚本语言。
二. 安装
1。安装squid:
从www.squid-cache.org下载squid-2.5.STABLE12.tar.gz存在本地/usr/local/squid/src下。
在编译Squid之前,建立一个专门运行Squid的用户和组,这里建立了名为squid的组和用户,用户目录设为/usr/local/squid
#su squid
$cd /usr/local/squid/src
$tar xvzf squid-2.5.STABLE12.tar.gz
$ cd squid-2.5.STABLE12
$./configure
$make
$make install
(默认安装到/usr/local/squid目录下)
//默认RH系统里有squid用户和组
2。安装Berkeley DB 2.x:
从http://www.sleepycat.com 下载db-2.7.7.tar.gz并存在/usr/local/squidGuard/src/目录下
$su
#cd /usr/local/squidGuard/src/
#tar xvzf db-2.7.7.tar.gz
#cd db-2.7.7
#cd build_unix
//不能在根目录直接configure,必须先进入build_unix,再../dist/configure
#../dist/configure
#make
#make install
(默认安装到/usr/local/BerkeleyDB目录下)
注意:squidGuard不支持Berkeley DB 3.x,4.x版本
3。安装squidGuard
官方网站:http://www.squidguard.org
从http://ftp.ost.eltele.no/pub/www/proxy/squidGuard/squidGuard-1.2.0.tar.gz下载软件包并存于本
地/usr/local/squidGuard/src/
#cd /usr/local/squidGuard/src/
#tar xvzf squidGuard-1.2.0.tar.gz
#cd squidGuard-1.2.0
#./configure --prefix=/usr/local/squidGuard
#make
#make test //测试ok,即可进行下一步安装
#make install
三. 配置
1.配置squid:
修改squid的配置文件/usr/local/squid/etc/squid.conf:
http_port 8080
#squid的代理端口,使用1024以下的端口,squid必须以root身份运行,一般以3128端口运行,开了防火墙的话,注意要打开
iptables的端口限制。
http_access allow all
#允许所有的用户通过代理进行http访问
#squid启用squidGuard进行过滤和转发
#/usr/local/squid/bin/squidGuard是squidGuard的执行路径,后面-c是配置文件的路径
redirect_program /usr/local/squid/bin/squidGuard -c /usr/local/squidGuard/squidGuard.conf
#派生5个squidGuard进程
redirect_children =5
其它参数:
#cache_mem:设置代理服务使用的内存大小,一般推荐为物理内存的三分之一
cache_mem 16 m
#cache_dir:设定缓存的位置、大小。一般格式如下:
cache_dir /usr/local/squid/cache 100 16 256
#/usr/local/squid/cache代表缓存的位置;100代表缓存最大为100M;16和256代表一级和二级目录数。
#cache_effective_user:设定使用缓存的有效用户。缺省为用户nobody,如果系统中没有用户nobody,最好建一个或以非root用户
运行Squid。这里是以squid身份运行的
cache_effective_user squid
#cache_effective_group:设定使用缓存的有效用户组。缺省组为nogroup,如果系统中没有组nogroup,最好建一个组。这里是
squid组。
cache_effective_group squid
(其余参数用默认值即可!)
2.配置squidGuard:
修改squidGuard的配置文件/usr/local/squidGuard/squidGuard.conf文件:
logdir /usr/local/squidGuard/logs #日志目录定义
dbhome /usr/local/squidGuard/db #db目录定义
#目标组定义
dest ipaddr {
domainlist ipaddr/domains
urllist ipaddr/urls
expressionlist ipaddr/expressions
}
#访问规则定义
acl {
default {
pass !ipaddr all
redirect http://192.168.0.1/error
(
#也可以重定向到一个含有一些信息的cgi页面,如下:
http://192.168.0.1/cgi/blocked?clientaddr=%a&clientname=%n&clientuser=%i&clientgroup=%s&targetgroup=%t&url=%u
#也可以重定向到www.google.com
)
}
}
# vi db/ipaddr/domains
(域列表文件:主要是阻塞一些定义的站点)
co.za
sex.com
(如上,可以阻塞如hack.co.za、sex.com、www.sex.com、whatever.sex.com,但是不同于.*[^.]sex.com,不匹配ssex.com)
# vi db/ipaddr/urls
(url列表文件,主要是阻塞一些站点及其一些栏目)
qihui.com/sex
valen.sohu.com/album
(如上可阻塞http://qihui.com/sex、http://qihui.com/sex/whatever、ftp://qihui.com/sex、http://www.qihui.com/sex等)
# vi db/ipaddr/expressions
(表达式列表文件,主要是阻塞一些与表达式匹配的URL访问)
(^│[\?+=/])(.*)(girl)(.*)([\?+=/]│$)
(上面的正则表达式可以阻塞URL中包括girl站点的访问,如:www.girlzine.com、girl.huabao.net、www.huayu.net/girl、
www.universiti.com/girl等 )
注意:squidGuard对配置文件的语法要求很严,如果配置文件语法有误,squidGuard仍能运行,但是squidGuard已进入应急模式,此
时代理服务不具有任何阻塞作用,所有通过该代理的访问都可通过,可以查看logs/squidGuard的日志文件,即可发现错误,例如:
2001-12-20 17:08:44 [2430] parse error in configfile /usr/local/squidGuard/squidGuard.conf line 8
2001-12-20 17:08:44 [2430] going into emergency mode
…….
其中配置文件第8行有误,squidGuard进入应急模式。
配置的具体说明详见http://www.squidguard.org/
---------日志的存放----------------
squidGuard的日志是检查配置是否正确的工具。如果日志里出现了going into emergency mode,说明配置不成功。
默认squidGuard的日志存放[--prefix]/squidGuard/log/squidGuard.log,我们安装时--prefix=/usr/local/squidGuard,所以,还
需要:
mkdir /usr/local/squidGuard/squidGuard
mkdir /usr/local/squidGuard/squidGuard/log
chown squid.squid mkdir /usr/local/squidGuard/squidGuard
启动后,日志存放在/usr/local/squidGuard/squidGuard/log/squidGuard.log
此外,也可以在squidGuard的./configure时指定默认的日志文件
---------日志的存放----------------
#squidGuard的更多配置的安装,在squidGuard的安装包squidGuard-1.2.0.tar.gz有详细介绍。
四. 运行:
$ chmod 777 /usr/local/squid/logs
(设置logs对所有用户为可写。这样,不特定的squid代理客户才能正常访问代理服务器,并能在logs目录、产生access.log、
cache.log等文件。)
$ /usr/local/squid/bin/squid -z
(手工建立squid的缓存目录/usr/local/squid/cache。)
(cache有时默认是/usr/local/squid/var/cache)
(设置了cache_effective_user和cache_effective_group为squid时,还需要chown squid.squid -R /usr/local/squid/cache)
#/usr/local/squid/bin/squid
(后台执行squid。如果想前台执行squid:如果你想前台执行Squid执行命令:
$/usr/local/squid/bin/squid -NCd1
该命令正式启动Squid。如果一切正常,你会看到一行输出:
Ready to serve requests )
# ps ax│grep squid
20198 ? S 0:00 /usr/local/squid/bin/squid
20200 ? S 0:27 (squid)
20310 ? S 0:00 (squidGuard) -c /usr/local/squidGuard/squidGuard.conf
20311 ? S 0:00 (squidGuard) -c /usr/local/squidGuard/squidGuard.conf
20312 ? S 0:00 (squidGuard) -c /usr/local/squidGuard/squidGuard.conf
20313 ? S 0:00 (squidGuard) -c /usr/local/squidGuard/squidGuard.conf
20314 ? S 0:00 (squidGuard) -c /usr/local/squidGuard/squidGuard.conf
(此时squidGuard也已启用,每次修改配置后squid -k reconfigure重新起用即可,要杀掉squid执行squid -k kill)
查看squidGuard日志文件:
init domainlist /usr/local/squidGuard/db/ipaddr/domains
2001-12-20 16:14:43 [2270] init domainlist /usr/local/squidGuard/db/ipaddr/domains
2001-12-20 16:14:43 [2270] init urllist /usr/local/squidGuard/db/ipaddr/urls
2001-12-20 16:14:43 [2270] init expressionlist /usr/local/squidGuard/db/porn/expressions
2001-12-20 16:14:43 [2270] squidGuard 1.1.4 started (1008836083.022)
2001-12-20 16:14:43 [2270] recalculating alarm in 917 seconds
2001-12-20 16:14:43 [2270] squidGuard ready for requests (1008836083.044)
表示squidGuard已正常启动
五. 测试:
配置客户端,然后测试代理服务:
在另一台win2k上,(以Internet Explore5.0为例)运行IE,单击"工具",接着单击"Internet选项",再单击"连接"选项卡,单击"
局域网设置";在"局域网设置"窗口中,在"地址"处填上squid服务器的IP地址192.168.100.16,在"端口"处填上"8080"(修改后
squid代理使用的端口号,也就是squid.conf中的http_port,默认值为3128),确定后退出。
接下来,先把IP改成192.168.100.20,浏览一些网站,如sohu,163等,然后再试试domains和urls中定义的,如hack.co.za、qihui.com/sex,会发现主页被重定向到http://www.google.com。然后再试试浏览有关girl的网站,去不了了:(;在sohu中搜girl
也被重定向了;用IP试试(有些代理程序对IP不做限制,用IP可以绕过代理的限制访问一些禁止的站点),可惜不行!(因为
squidGuard配置文件中使用了!in_addr,所以可以强迫用户使用域名访问而不能使用ip访问)
再下来,把IP改成192.168.100.18,然后时间改为testtime外的时间,浏览网页,试试结果,然后再将时间改为testtime内浏览网页
!
最后,把IP改成192.168.100.30,浏览网页测试。
(可以查看logs下的access.log和cache.log,看看是否代理运行正常以及访问的站点记录)
总结:
由上可见,用squid和squidGuard建立的代理服务器,配置比较简单,而且功能强大,可以有效的限制一些用户对internet的访问并
过滤一些黑名单列出的站点(如色情站点等)。
这里只简单的介绍了关于http代理的例子,其它的应用和功能大家可以自己试试。
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
package javax.servlet does not exist
[ 2005/11/30 22:23 | by ipaddr ]
编译servlet程序时,提示如下错误:
package javax.servlet does not exist
这是因为java找不到servlet包,需要将这个包放进CLASSPATH中.
以tomcat环境为例,在系统环境变量里,新加TOMCAT_HOME
TOMCAT_HOME=C:\Program Files\Apache Software Foundation\Tomcat\
在CLASSPATH中加入:
;%TOMCAT_HOME%\common\lib\servlet-api.jar
再重新编译即可.
>>>>>>>>>>>>>>>
package javax.servlet does not exist
这是因为java找不到servlet包,需要将这个包放进CLASSPATH中.
以tomcat环境为例,在系统环境变量里,新加TOMCAT_HOME
TOMCAT_HOME=C:\Program Files\Apache Software Foundation\Tomcat\
在CLASSPATH中加入:
;%TOMCAT_HOME%\common\lib\servlet-api.jar
再重新编译即可.
>>>>>>>>>>>>>>>
满大街跑的都是月薪上万的小程序员
[ 2005/11/26 22:32 | by ipaddr ]
作者写得很不错,虽然我工资远没有标题里写的那么多,很我欣赏这文章.转载.
我住在海淀区,这里满大街跑的是月薪上万的小程序员儿,还有痛骂计算机专业无美女的项目经理,他们大脑袋、厚眼镜、因熬夜而布满血丝的眼睛,因不见阳光而酷似吸血鬼的脸,穿一个星期不洗的T-SHIRT,很有很有味道的,他们供楼不供车,他们翻开报纸只盯住北边的楼盘,倒不是因为关心奥运村,实在是想离公司近一些。我,衷心地喜欢着这个区。
有女友去国贸那边应聘工作回来,一脸幸福状地向我描述,地铁站里全是帅哥,地面上更是临风玉树站成了森林,让她的小心灵经受了一次美的洗礼,她晕乎乎地回来了,对那些西装革履、散发名贵男用香水味道、气宇轩昂的白领男人们再三再四地概叹: “F4那算个啥,肚里没货,只知卖相,看看人家,啊,那才叫自信来源于知识,气质来源于财富……” 我打断她语无伦次的胡说八道,问她工作有戏没戏,她说,“凭我的英语水平,能没戏吗?!”
过几日,女友去上班。再过几日,女友辞职。我问为个啥,她说,她是属于海淀区的好市民,与朝阳区那个高级白领集居地格格不入。
“她们化妆都太精致,显得我象个黄脸婆,她们中午在洗手间用的是外国带回来的化妆品,我用的是外国牌子国内生产的东西,她们早餐吃意大利浓汤和甜点,我吃的是小笼包子跟豆浆……”女友愤愤地数落着,“非穿职业装不可,我的那十来条仔裤算是没有用武之地了,你看看我的可怜的脚,被高跟鞋折磨得都变形了,封建社会摧残人也不过如此了吧。靠,就这样,她们还说我搭配得不对,灰衬衫不能跟紫色外套一起穿!”
我说,“这有什么关系,这跟一份好工作有什么关系?你啊,也太注重技术层面的问题了。” “我郁闷……”女友象迷路的孩子一样:“我还是在海淀这边找工作吧。在这儿如鱼得水,要多自在有多自在,加班也愿意,你知道吗,他们东边儿啊,真不是人待的地方!”
我立马制止了她的人身攻击:“别瞎说!都是首都人民,哪儿来的种族歧视啊?”
女友几乎声泪俱下地声讨:“不是我啊,是她们等级观念严重啊。你看咱们这儿,上亿身家也穿着懒汉鞋去小馆儿吃京酱肉丝儿,谁也不怵谁,你有钱那是你的事儿,我有技术是我的骄傲,可是东边儿,什么都攀比,连丝袜的牌子都比,那天我戴了我奶奶给的玉镯儿,被她们笑话了个半死,什么老土啊什么没品啊,好象她们生下来就在钻石堆里长大的,如果我稍微有个行差踏错,那就要沾污了她们的小资阵营!”
我笑:“傻子,现在小资过时了,都兴BOBO了啦。”
“呸!什么BOBO,以为这个周末去怀柔爬山,下个周末去音乐堂,就又波西又布尔?上班的时候照样抢单,照样勾心斗角,照样背后传谣言,不过是改成了用英语传!算了算了,我不是那林子里的鸟儿,我还是安心在海淀做技术吧,加班累得贼死也比跟人打交道好啊,大家都埋头干自己手头的活儿,人际关系淡如水,很舒服的,我爱穿什么穿什么,只要活儿做得漂亮,老板照样给加薪,我是再也不去高尚区了。”
于是,一场散漫悠游族向精致优雅族的伟大试探,便以失败告终。
现在,我的女友悠哉游哉地溜达在北四环路上,在中关村的古怪雕塑前吃三块钱的冰淇淋蛋筒,周末时她在北大清华之间流窜,到处寻找新锐欧洲电影放映地。
有时候去电影学院旁边的“NASA”或者民族学院旁的“火山”蹦迪,在一群孩子的青春狂野中,她仿佛回到了学生时代。她穿着从学院路服装市场三十块钱买回的T-S,裹着她年轻的骄傲的身体。她素面朝天,在风里露着最真实最娇嫩的肌肤。她每次都在地铁站给盲眼歌手几块钱,她在过街天桥上买D版DVD,她爱看周星驰爱听王菲,她用公司名称抬头的信纸给妈妈写信说北京下雪了,她爱看樱桃小丸子却从不见人就讲“酱紫”,她除了黑白灰三色还会穿红色碎花的厚毛衣象冬天里最漂亮的一头熊……
她不过感恩节不过复活节不过万圣节,在不是情人节的日子里收到玫瑰也很开心,平安夜十点半上床睡觉,因为第二天还要上班。
她会带着笔记本电脑去北理工南门的“雕刻时光”做程序,叫一壶薰衣草茶渡过一个略带疲惫的下午,低声跟咖啡馆里打工的女生商量,“能不能把《加州旅馆》换成神秘园?我今天忘带耳机了……”她把三里屯留给都市里最糜烂最空泛的眼神,把哈根达斯留给都市里没有味蕾却能言善道的巧舌,把不地道的红酒留给都市里最不规范却感觉最好的手势。
同学聚会的时候跟从前一样包饺子。还是最爱吃路口小馆子的羊肉门丁儿,一口气能吃六个。人大的食堂有一道铁板牛柳最好吃,农大食堂的红烧鱼很地道,最喜欢的是语言学院的图书馆,可以端饮料进去喝的,最满意的是地质大学的操场,公司的足球赛都是在那里进行…… 那郁郁的林荫道,金子一样的笑声啊,那青春的乌发、如玉的容颜,几个流浪歌手,几个校园诗人……让我们堕入这个梦中永不醒来。
凌晨一点,中关村的“永和豆浆”店里,灯火通明,加班的IT们在这里吃宵夜,男孩子与办公室里他暗恋着的女孩子一起,就着鲜肉馄饨和一小篮儿鸡柳,说着公司里今天的笑话,他怜惜地看着她因睡眠不足稍欠血色的脸,看着她杂乱的浓密的眉,多想告诉她,她长得很象自己南方家乡的小妹。那些深夜里的快餐店,那些不曾丢掉美好幻想的人们……门外,星光暗淡,远处,是沉睡的楼群,而他爱的女孩,坐在对面心满意足地吃着滚烫的馄饨……
中关村的男孩儿,不会告诉女孩子帕格尼尼的小提琴让他落泪,他会用鼠标画一张丑丑的大头鱼送给她,他会真心地夸奖女孩子的红帽子真好看而不会指责帽子颜色与鞋不搭配。
中关村的男孩儿,懂得有关等待的故事。
公司有很可爱的环境,因为老板的不打领带和总是不在家。她坐在前面他在后面,早晨的阳光淡淡地斜照在他俩的桌上,她的笔架和他的显示器她的小熊杯子和他的咖啡勺,他带着南方口音说今天堵车,她趁老板不在梳梳头,把小镜子竖在键盘上,一道刺眼的光晃到他那儿,他在后面大呼小叫,说是妖女放出厉害武器了。
每天早上闻着咖啡的味儿开始在键盘上敲打,象一首诗里说的,大珠小珠落玉盘,他靠近她在屏幕上指点时,呀,他暗恋的女孩子,传来洗发水的清香,不是名贵的CD不是什么“夜间飞行”,那气息,象椰子和太阳的混了。
是的是的,我们留恋纯真朴实的年代,我们希望看到生命如麦田,麦芒微微刺手,朴实的芳香弥漫在大地上,能醉倒所有付出过汗水的人们,那金黄色的麦浪,会让一只狐狸想起遥远星球上的小王子……
我们不愿意让脚受到皮鞋的束缚、让脖子受到领带的束缚、让心受到格调的束缚。
让小资们去孜孜以求最精致最优雅的生活吧,让他们劳累不堪地跟随着地铁书摊上的畅销指南书,一步一个脚印地上下求索高尚生活吧,让他们追随着《时尚》去买时尚而非自己喜欢的衣服吧,让他们拧着眉头吃西餐吧,让他们在音乐厅打盹、然后诉说他们被音乐感动得夜不能寐吧,让他们为看不懂的现代雕塑胡说八道吧,让他们去盛赞德国的马桶法国的餐具吧,让他们去描弧形最标准的眉毛吧……他们前天是布尔乔亚,昨天是波希米亚,今天是BOBO一族,明天是IF国际自由人,后天是谁?他们自己也不知道,因为指南书还没有出来呢
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
我住在海淀区,这里满大街跑的是月薪上万的小程序员儿,还有痛骂计算机专业无美女的项目经理,他们大脑袋、厚眼镜、因熬夜而布满血丝的眼睛,因不见阳光而酷似吸血鬼的脸,穿一个星期不洗的T-SHIRT,很有很有味道的,他们供楼不供车,他们翻开报纸只盯住北边的楼盘,倒不是因为关心奥运村,实在是想离公司近一些。我,衷心地喜欢着这个区。
有女友去国贸那边应聘工作回来,一脸幸福状地向我描述,地铁站里全是帅哥,地面上更是临风玉树站成了森林,让她的小心灵经受了一次美的洗礼,她晕乎乎地回来了,对那些西装革履、散发名贵男用香水味道、气宇轩昂的白领男人们再三再四地概叹: “F4那算个啥,肚里没货,只知卖相,看看人家,啊,那才叫自信来源于知识,气质来源于财富……” 我打断她语无伦次的胡说八道,问她工作有戏没戏,她说,“凭我的英语水平,能没戏吗?!”
过几日,女友去上班。再过几日,女友辞职。我问为个啥,她说,她是属于海淀区的好市民,与朝阳区那个高级白领集居地格格不入。
“她们化妆都太精致,显得我象个黄脸婆,她们中午在洗手间用的是外国带回来的化妆品,我用的是外国牌子国内生产的东西,她们早餐吃意大利浓汤和甜点,我吃的是小笼包子跟豆浆……”女友愤愤地数落着,“非穿职业装不可,我的那十来条仔裤算是没有用武之地了,你看看我的可怜的脚,被高跟鞋折磨得都变形了,封建社会摧残人也不过如此了吧。靠,就这样,她们还说我搭配得不对,灰衬衫不能跟紫色外套一起穿!”
我说,“这有什么关系,这跟一份好工作有什么关系?你啊,也太注重技术层面的问题了。” “我郁闷……”女友象迷路的孩子一样:“我还是在海淀这边找工作吧。在这儿如鱼得水,要多自在有多自在,加班也愿意,你知道吗,他们东边儿啊,真不是人待的地方!”
我立马制止了她的人身攻击:“别瞎说!都是首都人民,哪儿来的种族歧视啊?”
女友几乎声泪俱下地声讨:“不是我啊,是她们等级观念严重啊。你看咱们这儿,上亿身家也穿着懒汉鞋去小馆儿吃京酱肉丝儿,谁也不怵谁,你有钱那是你的事儿,我有技术是我的骄傲,可是东边儿,什么都攀比,连丝袜的牌子都比,那天我戴了我奶奶给的玉镯儿,被她们笑话了个半死,什么老土啊什么没品啊,好象她们生下来就在钻石堆里长大的,如果我稍微有个行差踏错,那就要沾污了她们的小资阵营!”
我笑:“傻子,现在小资过时了,都兴BOBO了啦。”
“呸!什么BOBO,以为这个周末去怀柔爬山,下个周末去音乐堂,就又波西又布尔?上班的时候照样抢单,照样勾心斗角,照样背后传谣言,不过是改成了用英语传!算了算了,我不是那林子里的鸟儿,我还是安心在海淀做技术吧,加班累得贼死也比跟人打交道好啊,大家都埋头干自己手头的活儿,人际关系淡如水,很舒服的,我爱穿什么穿什么,只要活儿做得漂亮,老板照样给加薪,我是再也不去高尚区了。”
于是,一场散漫悠游族向精致优雅族的伟大试探,便以失败告终。
现在,我的女友悠哉游哉地溜达在北四环路上,在中关村的古怪雕塑前吃三块钱的冰淇淋蛋筒,周末时她在北大清华之间流窜,到处寻找新锐欧洲电影放映地。
有时候去电影学院旁边的“NASA”或者民族学院旁的“火山”蹦迪,在一群孩子的青春狂野中,她仿佛回到了学生时代。她穿着从学院路服装市场三十块钱买回的T-S,裹着她年轻的骄傲的身体。她素面朝天,在风里露着最真实最娇嫩的肌肤。她每次都在地铁站给盲眼歌手几块钱,她在过街天桥上买D版DVD,她爱看周星驰爱听王菲,她用公司名称抬头的信纸给妈妈写信说北京下雪了,她爱看樱桃小丸子却从不见人就讲“酱紫”,她除了黑白灰三色还会穿红色碎花的厚毛衣象冬天里最漂亮的一头熊……
她不过感恩节不过复活节不过万圣节,在不是情人节的日子里收到玫瑰也很开心,平安夜十点半上床睡觉,因为第二天还要上班。
她会带着笔记本电脑去北理工南门的“雕刻时光”做程序,叫一壶薰衣草茶渡过一个略带疲惫的下午,低声跟咖啡馆里打工的女生商量,“能不能把《加州旅馆》换成神秘园?我今天忘带耳机了……”她把三里屯留给都市里最糜烂最空泛的眼神,把哈根达斯留给都市里没有味蕾却能言善道的巧舌,把不地道的红酒留给都市里最不规范却感觉最好的手势。
同学聚会的时候跟从前一样包饺子。还是最爱吃路口小馆子的羊肉门丁儿,一口气能吃六个。人大的食堂有一道铁板牛柳最好吃,农大食堂的红烧鱼很地道,最喜欢的是语言学院的图书馆,可以端饮料进去喝的,最满意的是地质大学的操场,公司的足球赛都是在那里进行…… 那郁郁的林荫道,金子一样的笑声啊,那青春的乌发、如玉的容颜,几个流浪歌手,几个校园诗人……让我们堕入这个梦中永不醒来。
凌晨一点,中关村的“永和豆浆”店里,灯火通明,加班的IT们在这里吃宵夜,男孩子与办公室里他暗恋着的女孩子一起,就着鲜肉馄饨和一小篮儿鸡柳,说着公司里今天的笑话,他怜惜地看着她因睡眠不足稍欠血色的脸,看着她杂乱的浓密的眉,多想告诉她,她长得很象自己南方家乡的小妹。那些深夜里的快餐店,那些不曾丢掉美好幻想的人们……门外,星光暗淡,远处,是沉睡的楼群,而他爱的女孩,坐在对面心满意足地吃着滚烫的馄饨……
中关村的男孩儿,不会告诉女孩子帕格尼尼的小提琴让他落泪,他会用鼠标画一张丑丑的大头鱼送给她,他会真心地夸奖女孩子的红帽子真好看而不会指责帽子颜色与鞋不搭配。
中关村的男孩儿,懂得有关等待的故事。
公司有很可爱的环境,因为老板的不打领带和总是不在家。她坐在前面他在后面,早晨的阳光淡淡地斜照在他俩的桌上,她的笔架和他的显示器她的小熊杯子和他的咖啡勺,他带着南方口音说今天堵车,她趁老板不在梳梳头,把小镜子竖在键盘上,一道刺眼的光晃到他那儿,他在后面大呼小叫,说是妖女放出厉害武器了。
每天早上闻着咖啡的味儿开始在键盘上敲打,象一首诗里说的,大珠小珠落玉盘,他靠近她在屏幕上指点时,呀,他暗恋的女孩子,传来洗发水的清香,不是名贵的CD不是什么“夜间飞行”,那气息,象椰子和太阳的混了。
是的是的,我们留恋纯真朴实的年代,我们希望看到生命如麦田,麦芒微微刺手,朴实的芳香弥漫在大地上,能醉倒所有付出过汗水的人们,那金黄色的麦浪,会让一只狐狸想起遥远星球上的小王子……
我们不愿意让脚受到皮鞋的束缚、让脖子受到领带的束缚、让心受到格调的束缚。
让小资们去孜孜以求最精致最优雅的生活吧,让他们劳累不堪地跟随着地铁书摊上的畅销指南书,一步一个脚印地上下求索高尚生活吧,让他们追随着《时尚》去买时尚而非自己喜欢的衣服吧,让他们拧着眉头吃西餐吧,让他们在音乐厅打盹、然后诉说他们被音乐感动得夜不能寐吧,让他们为看不懂的现代雕塑胡说八道吧,让他们去盛赞德国的马桶法国的餐具吧,让他们去描弧形最标准的眉毛吧……他们前天是布尔乔亚,昨天是波希米亚,今天是BOBO一族,明天是IF国际自由人,后天是谁?他们自己也不知道,因为指南书还没有出来呢
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
Power Point 2003 的问题:有时打不开以前版本的PPT文件
[ 2005/11/26 21:54 | by ipaddr ]
有很多朋友可能安装了Office 2003,但是有很多PPT文件打不开,换了Power Point XP或者2000就能打开。一般碰到这样的问题,你可以到这儿下载安装补丁http://support.microsoft.com/kb/828041。
概要
Microsoft 发布了一个 Microsoft Office 2003 更新。此更新可以修复在尝试打开或保存一个包含以前在旧版本的 Microsoft Office 中修改和保存的 OfficeArt 图形的 Microsoft Office PowerPoint 2003 文件、Microsoft Office Word 2003 文件或 Microsoft Office Excel 2003 文件时出现的问题。在旧版本 Office 中打开 PowerPoint 2003 文件、Word 2003 文件或 Excel 2003 文件时,可能会向文件中引入空的“复杂”属性,并且可能会在描述这些属性的文件记录中更改一个位。旧版本的 Office 将忽略这个位值,但是,在 Office 2003 中检测到该值后,您可能会遇到下面的症状:
• 文档无法完全打开。
• 文档可能已经损坏。
• 文档能够打开,但缺少内容。
• 您可能会收到错误信息。
请安装补丁
>>>>>>>>>>
概要
Microsoft 发布了一个 Microsoft Office 2003 更新。此更新可以修复在尝试打开或保存一个包含以前在旧版本的 Microsoft Office 中修改和保存的 OfficeArt 图形的 Microsoft Office PowerPoint 2003 文件、Microsoft Office Word 2003 文件或 Microsoft Office Excel 2003 文件时出现的问题。在旧版本 Office 中打开 PowerPoint 2003 文件、Word 2003 文件或 Excel 2003 文件时,可能会向文件中引入空的“复杂”属性,并且可能会在描述这些属性的文件记录中更改一个位。旧版本的 Office 将忽略这个位值,但是,在 Office 2003 中检测到该值后,您可能会遇到下面的症状:
• 文档无法完全打开。
• 文档可能已经损坏。
• 文档能够打开,但缺少内容。
• 您可能会收到错误信息。
请安装补丁
>>>>>>>>>>
发现一个好东东,不敢独享,发来给大家。
http://www.dnsstuff.com/
查DNS的,
想查什么记录查什么记录。
查MX只需在DNS Timing里填上域名,选择MX就OK了。
例如查ipaddr.com的mx记录。
在DNS Timing里输入ipaddr.com,再选mx,再lookup,就出来了。
>>>>>>>>>>>>>
http://www.dnsstuff.com/
查DNS的,
想查什么记录查什么记录。
查MX只需在DNS Timing里填上域名,选择MX就OK了。
例如查ipaddr.com的mx记录。
在DNS Timing里输入ipaddr.com,再选mx,再lookup,就出来了。
>>>>>>>>>>>>>
MySQL错误(errno: 144)的修复
[ 2005/11/22 15:47 | by ipaddr ]
由于服务器硬盘空间耗尽,导致Mysql出错,一阵操作后,PHPMyadmin提示
Can't open file: 'tblUser.MYI'. (errno: 144)
可按如下方法修复:
myisamchk -f tblUser.MYI
就可以修复。
>>>>>>>>>
Can't open file: 'tblUser.MYI'. (errno: 144)
可按如下方法修复:
myisamchk -f tblUser.MYI
就可以修复。
>>>>>>>>>
Eclipse基础--安装eclipse及语言包
[ 2005/11/16 22:16 | by ipaddr ]
Eclipse基础--安装eclipse及语言包
--转载--一直漂整理
这里主要介绍eclipse及其语言包的下载与安装
一.下载eclipse和其语言包
Eclipse下载地址:
http://www.eclipse.org/downloads/index.php
下载文件:eclipse-SDK-3.1.1-win32.zip
语言包下载地址:
http://sunsite.informatik.rwth-aachen.de/eclipse/downloads/
或
http://eclipse.cis.sinica.edu.tw/downloads/
或
http://eclipse.openwebeng.com/downloads/
下载对应版本的语言包文件,比如:NLpack1-eclipse-SDK-3.1.1a-win32.zip
二.安装eclipse和其语言包
环境要求:Java(TM) 2 SDK,建议使用使用比较新的版本.
安装过程:
解压Eclipse3.1.1到一个目录(这里我解压到D:\program files\eclipse),然后把语言包NLpack-eclipse-SDK-3.1.1a-win32.zip也解压到D:\program files\eclipse目录。然后双击此目录中的eclipse.exe文件即可打开eclipe并实现了汉化.
注意:
1.最好使用一个从未被启动过的Eclipse,这样可以完全中文化。
如果在安装中文包时Eclipse已经被使用过,则可能会出现有部分内容不能被汉化,比如“搜索”、“运行”等菜单。如果中文化的不完全,把eclipse 目录下的configuration目录删除,重启即可。
2.
对于使用过的eclipse.可以加上这个参数后启动 eclipse -nl "zh_CN"
这样就是中文的了。然后zh_US是英文的。以后可以自由切换.
对于e文不好的人或者初学者来说,中文版本的eclipse可以显著提高学习效率,便于接受和使用eclipse。但是,毕竟当前先进的技术是英文一统天下,所以,在对eclipse有了初步的认识之后,还是建议大家多使用英文版的eclipse,这样,对以后的进一步学习和使用有好处。
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
--转载--一直漂整理
这里主要介绍eclipse及其语言包的下载与安装
一.下载eclipse和其语言包
Eclipse下载地址:
http://www.eclipse.org/downloads/index.php
下载文件:eclipse-SDK-3.1.1-win32.zip
语言包下载地址:
http://sunsite.informatik.rwth-aachen.de/eclipse/downloads/
或
http://eclipse.cis.sinica.edu.tw/downloads/
或
http://eclipse.openwebeng.com/downloads/
下载对应版本的语言包文件,比如:NLpack1-eclipse-SDK-3.1.1a-win32.zip
二.安装eclipse和其语言包
环境要求:Java(TM) 2 SDK,建议使用使用比较新的版本.
安装过程:
解压Eclipse3.1.1到一个目录(这里我解压到D:\program files\eclipse),然后把语言包NLpack-eclipse-SDK-3.1.1a-win32.zip也解压到D:\program files\eclipse目录。然后双击此目录中的eclipse.exe文件即可打开eclipe并实现了汉化.
注意:
1.最好使用一个从未被启动过的Eclipse,这样可以完全中文化。
如果在安装中文包时Eclipse已经被使用过,则可能会出现有部分内容不能被汉化,比如“搜索”、“运行”等菜单。如果中文化的不完全,把eclipse 目录下的configuration目录删除,重启即可。
2.
对于使用过的eclipse.可以加上这个参数后启动 eclipse -nl "zh_CN"
这样就是中文的了。然后zh_US是英文的。以后可以自由切换.
对于e文不好的人或者初学者来说,中文版本的eclipse可以显著提高学习效率,便于接受和使用eclipse。但是,毕竟当前先进的技术是英文一统天下,所以,在对eclipse有了初步的认识之后,还是建议大家多使用英文版的eclipse,这样,对以后的进一步学习和使用有好处。
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
了解Linux的时钟
[ 2005/11/09 22:50 | by ipaddr ]
由于Linux时钟和Windows时钟从概念的分类、使用到设置都有很大的不同,所以,搞清楚Linux时钟的工作方式与设置操作,不仅对于Linux初学者有着重大意义,而且对于使用Linux服务器的用户来说尤为重要。
Linux时钟的分类
Windows时钟大家可能十分熟悉了,Linux时钟在概念上类似Windows时钟显示当前系统时间,但在时钟分类和设置上却和Windows大相径庭。和Windows不同的是,Linux将时钟分为系统时钟(System Clock)和硬件(Real Time Clock,简称RTC)时钟两种。系统时间是指当前Linux Kernel中的时钟,而硬件时钟则是主板上由电池供电的那个主板硬件时钟,这个时钟可以在BIOS的“Standard BIOS Feture”项中进行设置。
既然Linux有两个时钟系统,那么大家所使用的Linux默认使用哪种时钟系统呢?会不回出现两种系统时钟冲突的情况呢?这些疑问和担心不无道理。首先,Linux并没有默认哪个时钟系统。当Linux启动时,硬件时钟会去读取系统时钟的设置,然后系统时钟就会独立于硬件运作。
从Linux启动过程来看,系统时钟和硬件时钟不会发生冲突,但Linux中的所有命令(包括函数)都是采用的系统时钟设置。不仅如此,系统时钟和硬件时钟还可以采用异步方式,见图1所示,即系统时间和硬件时间可以不同。这样做的好处对于普通用户意义不大,但对于Linux网络管理员却有很大的用处。例如,要将一个很大的网络中(跨越若干时区)的服务器同步,假如位于美国纽约的Linux服务器和北京的Linux服务器,其中一台服务器无须改变硬件时钟而只需临时设置一个系统时间,如要将北京服务器上的时间设置为纽约时间,两台服务器完成文件的同步后,再与原来的时钟同步一下即可。这样系统和硬件时钟就提供了更为灵活的操作。
设置Linux的时钟
在Linux中,用于时钟查看和设置的命令主要有date、hwclock和clock。其中,clock和hwclock用法相近,只不过clock命令除了支持x86硬件体系外,还支持Alpha硬件体系。由于目前绝大多数用户使用x86硬件体系,所以可以视这两个命令为一个命令来学习。
1.在虚拟终端中使用date命令来查看和设置系统时间
查看系统时钟的操作:
# date
设置系统时钟的操作:
# date 091713272003.30
通用的设置格式:
# date 月日时分年.秒
2.使用hwclock或clock命令查看和设置硬件时钟
查看硬件时钟的操作:
# hwclock --show 或
# clock --show
2003年09月17日 星期三 13时24分11秒 -0.482735 seconds
设置硬件时钟的操作:
# hwclock --set --date="09/17/2003 13:26:00"
或者
# clock --set --date="09/17/2003 13:26:00"
通用的设置格式:hwclock/clock --set --date=“月/日/年 时:分:秒”。
3.同步系统时钟和硬件时钟
Linux系统(笔者使用的是Red Hat 8.0,其它系统没有做过实验)默认重启后,硬件时钟和系统时钟同步。如果不大方便重新启动的话(服务器通常很少重启),使用clock或hwclock命令来同步系统时钟和硬件时钟。
硬件时钟与系统时钟同步:
# hwclock --hctosys
或者
# clock --hctosys
上面命令中,--hctosys表示Hardware Clock to SYStem clock。
系统时钟和硬件时钟同步:
# hwclock --systohc
或者
# clock --systohc
使用图形化系统设置工具设置时间
对于初学者来,笔者推荐使用图形化的时钟设置工具,如Red Hat 8.0中的日期与时间设置工具,可以在虚拟终端中键“redhat-config-time”命令,或者选择“K选单/系统设置/日期与时间”来启动日期时间设置工具。使用该工具不必考虑系统时间和硬件时间,只需从该对话框中设置日期时间,可同时设置、修改系统时钟和硬件时钟。
Internet同步时钟设置
在Windows XP日期与时间设置中有一项与Internet同步的功能,有了这项功能只要上网便可得到十分准确的时间。Red Hat 8.0也提供了这样的功能,在日期与时间设置工具对话框中的下部,有一个“启用网络时间协议”的选项,将该项选中就可以使用网络时间协议来同步Linux 系统时钟。选中该项后,其下面的服务器下拉列表框就变为可用状态,可从中选择一个时间服务器作为远程时间服务器。然后单击确定按钮,便可连接所设定的时间服务器,并与之同步时间。
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
Linux时钟的分类
Windows时钟大家可能十分熟悉了,Linux时钟在概念上类似Windows时钟显示当前系统时间,但在时钟分类和设置上却和Windows大相径庭。和Windows不同的是,Linux将时钟分为系统时钟(System Clock)和硬件(Real Time Clock,简称RTC)时钟两种。系统时间是指当前Linux Kernel中的时钟,而硬件时钟则是主板上由电池供电的那个主板硬件时钟,这个时钟可以在BIOS的“Standard BIOS Feture”项中进行设置。
既然Linux有两个时钟系统,那么大家所使用的Linux默认使用哪种时钟系统呢?会不回出现两种系统时钟冲突的情况呢?这些疑问和担心不无道理。首先,Linux并没有默认哪个时钟系统。当Linux启动时,硬件时钟会去读取系统时钟的设置,然后系统时钟就会独立于硬件运作。
从Linux启动过程来看,系统时钟和硬件时钟不会发生冲突,但Linux中的所有命令(包括函数)都是采用的系统时钟设置。不仅如此,系统时钟和硬件时钟还可以采用异步方式,见图1所示,即系统时间和硬件时间可以不同。这样做的好处对于普通用户意义不大,但对于Linux网络管理员却有很大的用处。例如,要将一个很大的网络中(跨越若干时区)的服务器同步,假如位于美国纽约的Linux服务器和北京的Linux服务器,其中一台服务器无须改变硬件时钟而只需临时设置一个系统时间,如要将北京服务器上的时间设置为纽约时间,两台服务器完成文件的同步后,再与原来的时钟同步一下即可。这样系统和硬件时钟就提供了更为灵活的操作。
设置Linux的时钟
在Linux中,用于时钟查看和设置的命令主要有date、hwclock和clock。其中,clock和hwclock用法相近,只不过clock命令除了支持x86硬件体系外,还支持Alpha硬件体系。由于目前绝大多数用户使用x86硬件体系,所以可以视这两个命令为一个命令来学习。
1.在虚拟终端中使用date命令来查看和设置系统时间
查看系统时钟的操作:
# date
设置系统时钟的操作:
# date 091713272003.30
通用的设置格式:
# date 月日时分年.秒
2.使用hwclock或clock命令查看和设置硬件时钟
查看硬件时钟的操作:
# hwclock --show 或
# clock --show
2003年09月17日 星期三 13时24分11秒 -0.482735 seconds
设置硬件时钟的操作:
# hwclock --set --date="09/17/2003 13:26:00"
或者
# clock --set --date="09/17/2003 13:26:00"
通用的设置格式:hwclock/clock --set --date=“月/日/年 时:分:秒”。
3.同步系统时钟和硬件时钟
Linux系统(笔者使用的是Red Hat 8.0,其它系统没有做过实验)默认重启后,硬件时钟和系统时钟同步。如果不大方便重新启动的话(服务器通常很少重启),使用clock或hwclock命令来同步系统时钟和硬件时钟。
硬件时钟与系统时钟同步:
# hwclock --hctosys
或者
# clock --hctosys
上面命令中,--hctosys表示Hardware Clock to SYStem clock。
系统时钟和硬件时钟同步:
# hwclock --systohc
或者
# clock --systohc
使用图形化系统设置工具设置时间
对于初学者来,笔者推荐使用图形化的时钟设置工具,如Red Hat 8.0中的日期与时间设置工具,可以在虚拟终端中键“redhat-config-time”命令,或者选择“K选单/系统设置/日期与时间”来启动日期时间设置工具。使用该工具不必考虑系统时间和硬件时间,只需从该对话框中设置日期时间,可同时设置、修改系统时钟和硬件时钟。
Internet同步时钟设置
在Windows XP日期与时间设置中有一项与Internet同步的功能,有了这项功能只要上网便可得到十分准确的时间。Red Hat 8.0也提供了这样的功能,在日期与时间设置工具对话框中的下部,有一个“启用网络时间协议”的选项,将该项选中就可以使用网络时间协议来同步Linux 系统时钟。选中该项后,其下面的服务器下拉列表框就变为可用状态,可从中选择一个时间服务器作为远程时间服务器。然后单击确定按钮,便可连接所设定的时间服务器,并与之同步时间。
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
PHP程序与服务器端通讯方法小结
[ 2005/11/07 22:17 | by ipaddr ]
假设有10个网站,分布在各地,它们的库存要同步,而数据库不支持远程连接。
我们要实时地取得服务器的库存数,可以通过很多种方法,我所知道的有以下几种:
·CURL方式
·SOCKET方式
·PHP5中的SOAP方式
以下分别给出示例来实现它:
[b]CURL方式[/b]
client.php
<?php
$psecode = ’NDE005’;
$website = ’www.abc.com’;
$amt = 1;
$pwd = 123456;
$ch = curl_init();
$curl_url = "http://ics1.server.com/index.php?web=" . $website .
"&pwd=" . $pwd . "&action=check&pseid=" . $psecode .
"&amt=" . $amt;
curl_setopt($ch, CURLOPT_URL, $curl_url);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);//不直接输出,返回到变量
$curl_result = curl_exec($ch);
$result = explode(’,’, $curl_result);
curl_close($ch);
print_r($result);
?>
服务器端只需按一定的格式输出,然后客户端按此格式接收就可以了如:
echo "OK," . $fpsecode . "," . $fbalance ;//以逗号分隔
SOCKET方式
这个要借助第三方类库HttpClient,可以到这里下载:http://scripts.incutio.com/httpclient/
<?php
require_once ’class/HttpClient.php’;
$params = array(’web’ => ’www.abc.com’,
’pwd’ => ’123456’,
’action’ => ’check’,
’pseid’ => ’NDE005’,
’amt’ => 1);
$pageContents = HttpClient::quickPost(’http://ics.server.com/index.php’, $params);
$result = explode(’,’, $pageContents);
print_r($result);
?>
PHP5中的SOAP方式
server.php
<?php
function getQuote($fpsecode) {
global $dbh;
$result = array();
try {
$query = "SELECT fprice, fcansale, fbalance, fbaltip FROM tblbalance where upper(trim(fpsecode)) = :psecode limit 1";
$stmt = $dbh->prepare($query);
$stmt->execute(array(’:psecode’ => strtoupper(trim($fpsecode))));
$stmt->bindColumn(’fprice’, $fprice);
$stmt->bindColumn(’fcansale’, $fcansale);
$stmt->bindColumn(’fbalance’, $fbalance);
$stmt->bindColumn(’fbaltip’, $fbaltip);
while($row = $stmt->fetch(PDO_FETCH_BOUND)) {
//
}
} catch (PDOException $e) {
echo $e->getMessage();
}
return $fprice; //你可以返回一个数组
}
$dsn = ’pgsql:host=192.168.*.* port=5432 dbname=db user=123456 password=123456’;
try {
$dbh = new PDO($dsn);
} catch (PDOException $e) {
die(’Connection failed: ’ . $e->getMessage());
}
ini_set("soap.wsdl_cache_enabled", "0"); // disabling WSDL cache
$server = new SoapServer("stockquote.wsdl"); //配置文件
$server->addFunction("getQuote");
$server->handle();
?>
stockquote.wsdl
<?xml version =’1.0’ encoding =’UTF-8’ ?>
<definitions name=’StockQuote’
targetNamespace=’http://example.org/StockQuote’
xmlns:tns=’ http://example.org/StockQuote ’
xmlns:soap=’http://schemas.xmlsoap.org/wsdl/soap/’
xmlns:xsd=’http://www.w3.org/2001/XMLSchema’
xmlns:soapenc=’http://schemas.xmlsoap.org/soap/encoding/’
xmlns:wsdl=’http://schemas.xmlsoap.org/wsdl/’
xmlns=’http://schemas.xmlsoap.org/wsdl/’>
<message name=’getQuoteRequest’>
<part name=’symbol’ type=’xsd:string’/>
</message>
<message name=’getQuoteResponse’>
<part name=’Result’ type=’xsd:float’/>
</message>
<portType name=’StockQuotePortType’>
<operation name=’getQuote’>
<input message=’tns:getQuoteRequest’/>
<output message=’tns:getQuoteResponse’/>
</operation>
</portType>
<binding name=’StockQuoteBinding’ type=’tns:StockQuotePortType’>
<soap:binding style=’rpc’
transport=’http://schemas.xmlsoap.org/soap/http’/>
<operation name=’getQuote’>
<soap:operation soapAction=’urn:xmethods-delayed-quotes#getQuote’/>
<input>
<soap:body use=’encoded’ namespace=’urn:xmethods-delayed-quotes’
encodingStyle=’http://schemas.xmlsoap.org/soap/encoding/’/>
</input>
<output>
<soap:body use=’encoded’ namespace=’urn:xmethods-delayed-quotes’
encodingStyle=’http://schemas.xmlsoap.org/soap/encoding/’/>
</output>
</operation>
</binding>
<service name=’StockQuoteService’>
<port name=’StockQuotePort’ binding=’StockQuoteBinding’>
<soap:address location=’http://192.168.3.9/php5/server.php’/>
</port>
</service>
</definitions>
client.php
<?php
$client = new SoapClient("stockquote.wsdl");
$result = $client->getQuote("nde005");
print_r($result);
?>
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
我们要实时地取得服务器的库存数,可以通过很多种方法,我所知道的有以下几种:
·CURL方式
·SOCKET方式
·PHP5中的SOAP方式
以下分别给出示例来实现它:
[b]CURL方式[/b]
client.php
<?php
$psecode = ’NDE005’;
$website = ’www.abc.com’;
$amt = 1;
$pwd = 123456;
$ch = curl_init();
$curl_url = "http://ics1.server.com/index.php?web=" . $website .
"&pwd=" . $pwd . "&action=check&pseid=" . $psecode .
"&amt=" . $amt;
curl_setopt($ch, CURLOPT_URL, $curl_url);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);//不直接输出,返回到变量
$curl_result = curl_exec($ch);
$result = explode(’,’, $curl_result);
curl_close($ch);
print_r($result);
?>
服务器端只需按一定的格式输出,然后客户端按此格式接收就可以了如:
echo "OK," . $fpsecode . "," . $fbalance ;//以逗号分隔
SOCKET方式
这个要借助第三方类库HttpClient,可以到这里下载:http://scripts.incutio.com/httpclient/
<?php
require_once ’class/HttpClient.php’;
$params = array(’web’ => ’www.abc.com’,
’pwd’ => ’123456’,
’action’ => ’check’,
’pseid’ => ’NDE005’,
’amt’ => 1);
$pageContents = HttpClient::quickPost(’http://ics.server.com/index.php’, $params);
$result = explode(’,’, $pageContents);
print_r($result);
?>
PHP5中的SOAP方式
server.php
<?php
function getQuote($fpsecode) {
global $dbh;
$result = array();
try {
$query = "SELECT fprice, fcansale, fbalance, fbaltip FROM tblbalance where upper(trim(fpsecode)) = :psecode limit 1";
$stmt = $dbh->prepare($query);
$stmt->execute(array(’:psecode’ => strtoupper(trim($fpsecode))));
$stmt->bindColumn(’fprice’, $fprice);
$stmt->bindColumn(’fcansale’, $fcansale);
$stmt->bindColumn(’fbalance’, $fbalance);
$stmt->bindColumn(’fbaltip’, $fbaltip);
while($row = $stmt->fetch(PDO_FETCH_BOUND)) {
//
}
} catch (PDOException $e) {
echo $e->getMessage();
}
return $fprice; //你可以返回一个数组
}
$dsn = ’pgsql:host=192.168.*.* port=5432 dbname=db user=123456 password=123456’;
try {
$dbh = new PDO($dsn);
} catch (PDOException $e) {
die(’Connection failed: ’ . $e->getMessage());
}
ini_set("soap.wsdl_cache_enabled", "0"); // disabling WSDL cache
$server = new SoapServer("stockquote.wsdl"); //配置文件
$server->addFunction("getQuote");
$server->handle();
?>
stockquote.wsdl
<?xml version =’1.0’ encoding =’UTF-8’ ?>
<definitions name=’StockQuote’
targetNamespace=’http://example.org/StockQuote’
xmlns:tns=’ http://example.org/StockQuote ’
xmlns:soap=’http://schemas.xmlsoap.org/wsdl/soap/’
xmlns:xsd=’http://www.w3.org/2001/XMLSchema’
xmlns:soapenc=’http://schemas.xmlsoap.org/soap/encoding/’
xmlns:wsdl=’http://schemas.xmlsoap.org/wsdl/’
xmlns=’http://schemas.xmlsoap.org/wsdl/’>
<message name=’getQuoteRequest’>
<part name=’symbol’ type=’xsd:string’/>
</message>
<message name=’getQuoteResponse’>
<part name=’Result’ type=’xsd:float’/>
</message>
<portType name=’StockQuotePortType’>
<operation name=’getQuote’>
<input message=’tns:getQuoteRequest’/>
<output message=’tns:getQuoteResponse’/>
</operation>
</portType>
<binding name=’StockQuoteBinding’ type=’tns:StockQuotePortType’>
<soap:binding style=’rpc’
transport=’http://schemas.xmlsoap.org/soap/http’/>
<operation name=’getQuote’>
<soap:operation soapAction=’urn:xmethods-delayed-quotes#getQuote’/>
<input>
<soap:body use=’encoded’ namespace=’urn:xmethods-delayed-quotes’
encodingStyle=’http://schemas.xmlsoap.org/soap/encoding/’/>
</input>
<output>
<soap:body use=’encoded’ namespace=’urn:xmethods-delayed-quotes’
encodingStyle=’http://schemas.xmlsoap.org/soap/encoding/’/>
</output>
</operation>
</binding>
<service name=’StockQuoteService’>
<port name=’StockQuotePort’ binding=’StockQuoteBinding’>
<soap:address location=’http://192.168.3.9/php5/server.php’/>
</port>
</service>
</definitions>
client.php
<?php
$client = new SoapClient("stockquote.wsdl");
$result = $client->getQuote("nde005");
print_r($result);
?>
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>