免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
1234下一页
最近访问板块 发新帖
查看: 20918 | 回复: 30
打印 上一主题 下一主题

[proxy] 【原创】使用LAMP开发一个简易的Squid集中管理软件squid_front [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2009-05-12 22:42 |只看该作者 |倒序浏览
squidfront已经在sourceforge注册开通了开源项目,地址是:
https://sourceforge.net/projects/squidfront/
最新版在此处下载,欢迎大家提供意见,并参与开发。!!

##############################################################

修改历史:
2009-06-10 22:27 问题:myauth和ipuser中的打印语句忘记关闭了,会导致验证出错。
  解决方法:
                mysql_auth.c:173行,注释掉打印语句。
           ipuser/main.cpp:274行,的cout注释掉,166行的cout也注释掉
2009-06-12 添加文档说明,最新的使用文档在23楼。

################################################

好久没上坛子发帖了,今晚上来整理下前段时间的一个小作分享出来。php代码写的比较垃圾,不过功能勉强实现了,希望能对大家有用。开始!

引言
接触squid不多,只知道是作代理服务器用的一款开源软件,源代码没有仔细看,仅仅看了一部分ACL的介绍和外部验证程序,觉得挺好玩的,不过又发现Squid总要手动去修改配置,挺麻烦的,为什么不像mysql拥有mysql-front这款前端一样,为squid做一个squid_front程序,方便对squid进行配置和集中管理?于是,我就开始做这个Squid_front,其实做这个东西一开始的初衷是应别人要求,最后又中断不做了,钱没赚到,就把它拿出来给大家分享,不管做得好坏与否,如果能用得上,就参考下吧,总比我把它一直扔在电脑上强。
一开始最感兴趣的就是Squid对用户访问的控制,比如用户名,密码,源IP约束等,最后沟通又加上了有效期的限制,想实现一个用户在一个时刻只能登陆一个实例的功能,我实在没耐心看源代码,就没有做成,如果有朋友实现了,不妨把它加进去(我做了一部分尝试,最后失败了,加之最近比较忙,就没再继续做下去,做技术已经懒到这种地步了。)
功能
功能不算太多,逐条列举出来。
第一:对squid服务器进行集中管理,当然只是指Squid进程。
用户可以在系统中添加要管理的服务器,如图1:
总的服务器列表如图2:
第二:对每个squid服务器上的squid程序,进行用户管理,能够添加用户,登录密码,设置用户的有效期限,访问代理服务器的合法源IP地址,或者禁止某个用户使用代理功能。
在对用户进行管理的之外,还能查看当前squid进程的连接信息。
如下图为单个squid服务器的信息如图3
下图4是用户的添加过程:
和用户配置的修改(图5)
最后一个简单的功能,修改登录密码(图6):

[ 本帖最后由 duanjigang 于 2009-6-12 13:44 编辑 ]

1.JPG (48.65 KB, 下载次数: 139)

1.JPG

2.JPG (50.52 KB, 下载次数: 107)

2.JPG

3.JPG (67.74 KB, 下载次数: 109)

3.JPG

4.JPG (25.95 KB, 下载次数: 111)

4.JPG

5.JPG (26.04 KB, 下载次数: 109)

5.JPG

6.JPG (14.18 KB, 下载次数: 122)

6.JPG

source.rar

832.84 KB, 下载次数: 287

论坛徽章:
0
2 [报告]
发表于 2009-05-12 22:46 |只看该作者
软件结构
结构很简单
Squid_front直接跟mysql数据库打交道,进行数据读取和配置信息读写。
有三个后台程序运行在每个squid服务器上,与squid一起协同工作,他们分别是:
Myauth:
修改myauth的源代码,在用户名和密码验证的基础上,对使用期限和禁止使用标志做了检查,算是一个加强版的myauth吧
Ipuser:
Squid自带的ipuser是对用户名和IP地址的验证,我做了部分修改,也是完成这个功能,另外还添加了对禁止标志位的检查,并更新用户的最近登陆时间,这样在界面上就能看都某个用户最近连接的时间。这个程序偷懒用得mysql++的库,所以如果要使用需要安装这个包。
Linkmon:定期从系统的netstat结果中筛检squid连接,更新到数据库中,如果数据库中某个连接已经过时,则删除该条记录,另外,如果配置发生改变,就会在事件表写一个事件,linkmon检测到得话,会自动调用system命令重新加载squid的配置。

论坛徽章:
0
3 [报告]
发表于 2009-05-12 22:47 |只看该作者
数据库表说明
Squid的myauth模块对数据库和表做了可配置方式,个人觉得没必要这么做,表结构直接写死就行了。Squid_front的php代码中包含了squid.sql文件,可以直接导入到数据库中。
这里仅对每个表做简单说明。
t_event:
记录系统发生的改变,比如添加删除用户,修改用户信息,服务器信息等等操作时,就会在该表中写入一条flag为1的记录,对应某个服务器,然后linkmon进城检测到该服务器有配置变更后,就会调用system(“squid -k reconfigure ”)命令来重新加载配置。进行实时配置生效。
t_server
服务器信息表,存储所有服务器的信息
t_server_connect
存储服务器的连接信息。
t_sys_user
存储系统用户信息,但是目前没有提供用户添加功能,所以这个表里的数据只有admin一项,无法删除增加,只能修改密码。
t_user
使用每个代理服务器的用户信息,密码,用户名,限制标志位,有效期等。
t_user_log
用户的登陆信息,包括源IP和时间。

[ 本帖最后由 duanjigang 于 2009-5-12 22:48 编辑 ]

论坛徽章:
0
4 [报告]
发表于 2009-05-12 22:49 |只看该作者
部署方法
首先LAMP环境你需要拥有,然后安装mysql++的开发库。
然后部署squid_front的php程序,并在配置文件bug_conf.php中修改数据库的访问地址,帐户等。这个应该比较简单。
接着,根据你的mysql和mysql++的安装目录,对ipuser,myauth和linkmon的makefile做适当修改,使得能够编译通过。然后把这三个可执行程序拷贝到squid安装目录下的libexec目录下,接着就需要修改配置了。
把附件中的etc目录下的配置文件放到你的squid安装目录的etc下,对于squid.conf文件,最好不要修改,而只是参考这个自带的squid.conf进行修改,添加ipuser和mysql_auth的验证功能。
最后,要在linkmon,ipuser和myauth的配置文件中分别修改服务器IP地址为你的Squid服务器的IP地址,还有修改数据库的访问地址和账户。
######### ip_user.conf
[ DB_config]
#数据库名称
db = squid
#数据库服务器地址
host = 192.168.0.20
#登陆数据库的用户名
user = squid
#数据库访问密码
pass = squid
#当前系统上对外提供squid服务的IP地址
 [SysInfo]
#本机IP地址
IP=123.120.1.249

######   link_mon.conf
[ DB_config]
db = squid
host = 192.168.0.20
user = squid
pass = squid
#本机IP地址
server = 123.120.1.249
#squid的监听端口,要与Squid.conf中的一致
port = 8888
#linkmon检测端口和配置变更的周期(秒)
rate = 2

mysql_auth.conf配置文件中要注意的就是最后一行
server_ip  123.120.1.249 需要填写本机IP

squid.conf中需要注意的也就是这段配置
#added by duanjigang@2009-04-02 start
auth_param basic children 5
auth_param basic realm Squid caching server
auth_param basic credentialsttl 2 hours
auth_param basic casesensitive off
auth_param basic program /usr/local/squid/libexec/mysql_auth
#added by duanjigang@2009-04-04 start
external_acl_type ip_user_check children=5 %SRC %LOGIN  /usr/local/squid/libexec/ip_user -f /usr/local/squid/etc/ip_user.conf
#external_acl_type ip_user_check children=5 %SRC %LOGIN /usr/local/squid/libexec/ip_user  
acl ipuser external ip_user_check

acl password proxy_auth REQUIRED
#http_access allow   ipuser
http_access allow  password ipuser
authenticate_ip_ttl 2 hours
http_access deny all
#added by duanjigang@2009-04-04 end

论坛徽章:
0
5 [报告]
发表于 2009-05-12 22:50 |只看该作者
运行
启动squid程序后,然后启动linkmon程序
./linkmon  -f /usr/local/squid/etc/linkmon.conf &
这个时候就可以使用了。
说明Squid_front部分php代码为原创,试用了开源的php数据库访问库adodb_lite组件。后台的ipuser和myauth参考已有代码,linkmon为原创部分,如果由于程序运行不当对个人或者组织造成任何可能的损失,本人不负担任何责任,只供技术交流,如果进行修改或者用于商业用途,请保留作者信息。
交流方式EMail:duanjigang1983@126.com
MSN:duanjigang@hotmail.com
参考资料
Squid实现基于MySQL的用户及IP绑定的验证
http://linux.chinaunix.net/bbs/viewthread.php?tid=1061907

论坛徽章:
0
6 [报告]
发表于 2009-05-13 09:22 |只看该作者
不错啊

论坛徽章:
2
2015年辞旧岁徽章
日期:2015-03-03 16:54:1515-16赛季CBA联赛之上海
日期:2016-05-05 09:45:14
7 [报告]
发表于 2009-05-13 10:24 |只看该作者
不错,,好东西,,收藏一下!

论坛徽章:
0
8 [报告]
发表于 2009-05-13 10:27 |只看该作者
顶下吧  

论坛徽章:
0
9 [报告]
发表于 2009-05-13 10:40 |只看该作者
多谢瑞儿加精华啊

论坛徽章:
0
10 [报告]
发表于 2009-05-13 10:57 |只看该作者
强,友情帮顶
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP