存档

2009年2月 的存档

apache日志中 X-Forwarded-For 参数的设定

2009年2月23日 评论已被关闭

apache日志中默认有%h来指定来访客户端你的ip地址,但是如果客户端使用了代理上网则%h获得的ip地址会不准。

apache 日志中可以设定 X-Forwarded-For 参数来获取客户端真实的ip地址

对于使用了反向代理的客户端,跟踪真实的ip地址
X-Forwarded-For header is supported by most proxy servers, including Squid,[1] Apache mod_proxy,[2] Pound,[3] Varnish cache,[4] IronPort Web Security Appliance,[5] Radware AppXcel, F5 Big-IP, [6] Blue Coat ProxySG, Cisco Cache Engine, Phion Airlock, Finjan’s Vital Security, NetApp NetCache, jetNEXUS, Crescendo Networks’ Maestro, and Microsoft ISA Server 2004/2006 with Winfrasoft X-Forwarded-For for ISA Server.[7]
X-Forwarded-For header logging is supported by many web servers including Apache and Microsoft IIS 6.0 & 7.0 with the addition of Winfrasoft X-Forwarded-For for IIS.[7]

##########################################
this is a apache’s seting for X-Forwarded-For (f5):

%{X-Forwarded-For}i

LogFormat “%{X-Forwarder-For}i %l %u %t \”%r\” %>s %b \”%{Referer}i\” \”%{User-Agent}i\”” f5_forwarder
LogFormat “%h %l %u %t \”%r\” %>s %b \”%{Referer}i\” \”%{User-Agent}i\”” combined

SetEnvIf X-Forwarder-For “^.*\..*\..*\..*” is-forwarder

CustomLog logs/access_log combined env=!is-forwarder
CustomLog logs/access_log f5_forwarder env=is-forwarder

关于X-Forwarded-For的详细说明,可见http://en.wikipedia.org/wiki/X-Forwarded-For
几点说明:
1、使用正向代理的客户端,为了安全因素,在连接外部网络之前内部代理(网关)会去掉原有的X-Forwarded-For信息,这种情况server端可以信任X-Forwarded-For信息,表明连接出自某个内部网络。
2、如果server端使用了反向代理(比如server在7层代理的后面),这种情况就不能完全信任X-Forwarded-For信息,最好使用一个白名单来进行控制。

3、如果通过了多级反向代理的话,X-Forwarded-For的值并不止一个,而是一串ip值,究竟哪个才是真正的用户端的真实IP呢?
X-Forwarded-For: client1, proxy1, proxy2
X-Forwarded-For会取得第一个非unknown的有效IP字符串。

分类: OpenSource 标签:

发现新的web server “JWSB1”

2009年2月17日 评论已被关闭

今天无意中发现了一个站点“叽歪网”(jiwai.de)
感觉有点类似豆瓣网的风格,怀疑是不是也使用python开发的,httpwatch看了一下:
站点的web server比较特殊,以前从来没有见过,难道也是重新编译apache or lighttpd?

(Status-Line)    HTTP/1.1 200 OK
Connection    close
Transfer-Encoding    chunked
Set-Cookie    PHPSESSID=h1ttt6i17huiaid1nue700die3; path=/; domain=.jiwai.de
Expires    Thu, 19 Nov 1981 08:52:00 GMT
Cache-Control    no-store, no-cache, must-revalidate, post-check=0, pre-check=0
Pragma    no-cache
Content-Type    text/html
Date    Tue, 17 Feb 2009 03:21:14 GMT
Server    JWSB1

http://asset.jiwai.de/js/onload.js?1234262698
(Status-Line)    HTTP/1.1 200 OK
Content-Type    text/javascript
Etag    “7531924670955896233”
Accept-Ranges    bytes
Last-Modified    Tue, 10 Feb 2009 10:44:58 GMT
Vary    Accept-Encoding
Content-Encoding    gzip
Connection    close
Date    Tue, 17 Feb 2009 03:21:15 GMT
Server    JWSA2

分类: others 标签:

resin容器下获取web-app的绝对路径

2009年2月14日 评论已被关闭

为了获得web-app目录中的.properties文件,需要先取得web-app的WEB-INF目录,网上有很多的方法,大致描述如下:

1、java程序中中获得
System.out.println(“1″+Thread.currentThread().getContextClassLoader().getResource(“”));
System.out.println(“2″+TestPath.class.getResource(“”));
System.out.println(“3″+TestPath.class.getResource(“/”));
System.out.println(“4″+TestPath.class.getClassLoader().getResource(“”));
System.out.println(“5″+ClassLoader.getSystemResource(“”));
System.out.println(“6″+TestPath.class.getClassLoader().getResource(“src.com.2hei.net.util”));
System.out.println(“7″+new File(“”).getAbsolutePath());


2、在jsp中获得web-app目录

根目录:request.getRequestURI()
文件的绝对路径  :application.getRealPath(request.getRequestURI());
当前web应用的绝对路径 :application.getRealPath(“/”);

3、Servlet中获得当前应用的相对路径和绝对路径
根目录:request.getServletPath();
文件的绝对路径 :
javax.servlet.http.HttpSession.getServletContext()
request.getSession().getServletContext().getRealPath
当前web应用的绝对路径 :servletConfig.getServletContext().getRealPath(“/”);

但是我遇到的问题是使用java来获得web-app目录始终得到的是容器的root目录,比如我使用的是resin3.1.6,使用java程序获得的目录始终都是/home/resin-3.1.6。
想尽了办法,把caucho.com的文档翻了个遍,也尝试了class-loader等resource等配置,始终无法配置好,我又不想使用jsp或者servlet来获取,于是想到了如下的土办法。

resin.conf 或者resin.xml中配置(详见resin-doc)
  <env-entry>
    <env-entry-name>greeting</env-entry-name>
    <env-entry-type>java.lang.String</env-entry-type>
    <env-entry-value>I‘m 2hei</env-entry-value>
  </env-entry>

调用方法:
  public void init()
    throws ServletException
  {
    try {
      Context env =
        (Context) new InitialContext().lookup(“java:comp/env”);
      greeting = (String) env.lookup(“greeting”);
    } catch (NamingException e) {
      throw new ServletException(e);
    }
  }
然而,见证奇迹的时刻终于到来了!
现有java文件编译后是给打成了jar包来进行发布,放到了WEB-INF/lib目录中,这样使用java获得的web-app位置就是resin的home目录
我尝试不打jar包,将class放到WEB-INF/classes中,使用java来获取应用程序的绝对路径居然可以了,真不知道resin是如何加载jar包的。汗ing。。。

不过既然问题解决了,就此记录下来,以作备忘。

再者,今天是2.14 情人节,就祝愿天下有情人终成眷属!

分类: java, resin 标签:

将应用程序添加到右键的方法,just like UE

2009年2月3日 评论已被关闭

今天下载了一个notepad++,绿色版,所有鼠标右键里并没有像UE和EditPlus的快捷方式,于是修改了注册表,手工添加了进去
可以使用两种方式来添加,原理是一样的。

———————-notepad.reg————————
Windows Registry Editor Version 5.00
[HKEY_CLASSES_ROOT\*\shell]
[HKEY_CLASSES_ROOT\*\shell\notepad++]
@=”notepad++”
[HKEY_CLASSES_ROOT\*\shell\notepad++\Command]
@=”D:\\soft\\npp.5.1.4.bin\\unicode\\notepad++.exe \”%1\””
———————————————-
将以上的内容保存为notepad.reg,然后双击添加到注册表即可

另外的方式是:运行regedit
找到如下键:
HKEY_CLASSES_ROOT/*/shell/notepad++/Command

添加
D:\soft\npp.5.1.4.bin\unicode\notepad++.exe “%1”
需要注意的是“%1”的使用,如果没有(”),如果目录包含空格的话会出现问题。

分类: OpenSource 标签:

linux下不错的工具 fping

2009年2月1日 评论已被关闭

fping 是linux下不错的网络测评工具,相信大家都很熟悉,不多说了,仅作为收藏、备忘。

http://fping.sourceforge.net/

./fping –help
./fping: invalid option — –

Usage: ./fping [options] [targets…]
   -a         show targets that are alive
   -A         show targets by address
   -b n       amount of ping data to send, in bytes (default 56)
   -B f       set exponential backoff factor to f
   -c n       count of pings to send to each target (default 1)
   -C n       same as -c, report results in verbose format
   -e         show elapsed time on return packets
   -f file    read list of targets from a file ( – means stdin) (only if no -g specified)
   -g         generate target list (only if no -f specified)
                (specify the start and end IP in the target list, or supply a IP netmask)
                (ex. ./fping -g 192.168.1.0 192.168.1.255 or ./fping -g 192.168.1.0/24)
   -i n       interval between sending ping packets (in millisec) (default 25)
   -l         loop sending pings forever
   -m         ping multiple interfaces on target host
   -n         show targets by name (-d is equivalent)
   -p n       interval between ping packets to one target (in millisec)
                (in looping and counting modes, default 1000)
   -q         quiet (don’t show per-target/per-ping results)
   -Q n       same as -q, but show summary every n seconds
   -r n       number of retries (default 3)
   -s         print final stats
   -t n       individual target initial timeout (in millisec) (default 500)
   -u         show targets that are unreachable
   -v         show version
   targets    list of targets to check (if no -f specified)

批量ping主机列表

cat host_list

192.168.1.2
192.168.1.3
192.168.1.4
192.168.1.5

./fping -f host_list
或者

使用./fping -g 192.168.1.0/24

分类: OpenSource 标签: