使用eclipse编译运行tinyproxy源码
一 新建eclipse tinyproxy工程
1 eclipse新建linux_gcc工程,如下图:
点击Finish即可。
2 新建的工程如下图:
3 将tinyproxy源码直接拷贝粘贴到tinyproxy_linuxgc目录下面即可。
4 在控制台进入该目录,运行./configure生成makefile文件
运行命令之后,文件目录如下图:
5 刷新eclipse,则代码加载进入eclipse当中
6 选择工程,右键属性
7 右键工程点击build project,则工程编译成功
8 右键工程运行即可
9.eclipse下的tinyproxy源码工程在这里。
二 代码中开启反向代理功能
tinyproxy的源码默认是不开启反向代理功能的,我们必须修改相关的文件,才可以使反向代理生效。
1.修改tinyproxy根目录下的config.h,添加
/* Include support for reverse proxy. */ /* #undef REVERSE_SUPPORT */ #define REVERSE_SUPPORT 1
PROGRAMS = $(sbin_PROGRAMS) am_tinyproxy_OBJECTS = acl.$(OBJEXT) anonymous.$(OBJEXT) \ buffer.$(OBJEXT) child.$(OBJEXT) conf.$(OBJEXT) \ conns.$(OBJEXT) daemon.$(OBJEXT) hashmap.$(OBJEXT) \ heap.$(OBJEXT) html-error.$(OBJEXT) http-message.$(OBJEXT) \ log.$(OBJEXT) network.$(OBJEXT) reqs.$(OBJEXT) sock.$(OBJEXT) \ stats.$(OBJEXT) text.$(OBJEXT) main.$(OBJEXT) utils.$(OBJEXT) reverse-proxy.$(OBJEXT)\ vector.$(OBJEXT) upstream.$(OBJEXT) connect-ports.$(OBJEXT) tinyproxy_OBJECTS = $(am_tinyproxy_OBJECTS) DEFAULT_INCLUDES = -I. -I$(top_builddir)
tinyproxy_SOURCES = \ acl.c acl.h \ anonymous.c anonymous.h \ buffer.c buffer.h \ child.c child.h \ common.h \ conf.c conf.h \ conns.c conns.h \ daemon.c daemon.h \ hashmap.c hashmap.h \ heap.c heap.h \ html-error.c html-error.h \ http-message.c http-message.h \ log.c log.h \ network.c network.h \ reqs.c reqs.h \ sock.c sock.h \ stats.c stats.h \ text.c text.h \ main.c main.h \ utils.c utils.h \ vector.c vector.h \ upstream.c upstream.h \ connect-ports.c connect-ports.h \ reverse-proxy.c reverse-proxy.h \ EXTRA_tinyproxy_SOURCES = filter.c filter.h \ reverse-proxy.c reverse-proxy.h \ transparent-proxy.c transparent-proxy.h
tinyproxy的main.c文件中根据配置文件初始化完配置文件中配置的值之后,会调用child.c中的child_main_loop函数,在该函数中会创建子进程,从而在child_main函数中开启对端口的监听,监听客户端的连接请求。当客户端有连接请求时,会调用reqs.c文件中的handle_connection函数,在该函数中进行了客户端请求头的分析、服务器端的连接、以及读取服务器端信息后发往客户端(在这个过程中涉及到的函数是:read_request_line、get_all_headers、process_request、process_client_headers、process_server_headers 、relay_connection)
relay_connection中进行了往客户单输出的操作。
四 学习tinyproxy目前仍存在的问题
1.如何修改configure文件,是生成的config.h文件中自动开启反向代理功能
2.在configure生成的所有的makefile文件当中 prefix前缀值都是/usr/local,如何修改configure文件,可以使生成的makefile文件中的prefix前缀值改变,同时使tinyproxy的tinyproxy.conf、tinyproxy.log、tinyproxy.pid文件在eclipse下运行时的默认路径改变。
3.如何使用eclipse调试守护进程