Insion同学之前发来一段可以在MacOS/BSD编译运行获取网卡MAC地址的代码,于是整理了一下,让几个802.1x Client都能支持MacOS/BSD了。 下载了个FreeBSD 7.2在vbox虚拟机里面装了下,发现FreeBSD比Linux好像原始多了[呃,我说安装程序],分区的时候他不叫Create Partition,叫Create Slice,我对着界面看了半天才猜到,囧;退出那里写着:Q = Finish,Quit就Quit嘛,什么Finish,纠结……但还好,其他的配置跟Linux还是很相像的,调试了一下就有了全可编译的代码了。 代码部分修改倒没多少,就添加了一个专门给BSD系系统获取MAC的函数,再用maroc判断一下,以及几个头文件,就完事了,有点麻烦的是makefile,发现freebsd默认那个make好像是很古老很古老的版本,我程序里面那个Makefile是用了vim里面c-support插件里面带的Makefile模板,有点复杂,但是freebsd居然不支持!所以整理了个简单的版本,专门给MacOS/BSD编译,也方便别人的修改;另外一个原因是,程序里面转换服务器消息时候用了iconv库,linux里面iconv是系统内嵌库来的,用不着链接的时候给出参数,但MacOS/BSD偏偏就要-liconv…… 需要编译MacOS/BSD版本的同学,可以check出项目里面trunk的代码,运行make -f Makefile.bsd来编译。Insion同学已经编译成功,而且在他的主页上有二进制版下载了。 相对的说,可能在MacOS里面编译是最麻烦的,我大概说说流程(实际上我没试过,我可没Mac机器[T.T]) 1.安装gcc,参考这里从http://connect.apple.com/的Dev Tools里面下载Xcode Tools,安装。2.编译安装libpcap,从http://www.tcpdump.org/release/libpcap-1.0.0.tar.gz下载源码,tar xvfz libpcap-1.0.0.tar.gz解压,进去该目录,./configure、make、make install安装完成;3.编译802.1x客户端,从所用项目内签出源码,在目录内make,没出什么差错的话,已经完成了。然后按Readme.txt的方法安装运行,即可! 项目主页 锐捷:http://code.google.com/p/zruijie4gzhu/联想:http://code.google.com/p/zlevoclient/神州数码:http://code.google.com/p/zdcclient/
花了几天时间,将zRuijie4GZHU的代码用Win32 API封装好了。 怎么突然给“万恶“的Windows开发程序呢,呵呵算是一时冲动好了,因为此前对Windows的API基本一无所知,虽然大二的时候C++的课程教了一点MFC,不过离开底层API来说MFC,真的很腾云驾雾,转眼就全忘记了,交课程报告时候用VS的Wizard大概地弄个两个窗口,甚至说不清一个控件是怎么被创建的……画上去的?嘿嘿…… 这次做Win的程序算是为了了解一下Win下面的模式,程序使用纯SDK API来写。开着虚拟机,开始的时候用Dev CPP来做,但没一会就忍不了那个编辑器的白痴了,还好Devcpp提供了项目的Makefile,于是用Notepad++来弄代码,开着个cmd窗口来编辑;最后还是把代码弄到Linux来,装了个mingw来cross,用gvim来写代码才有快感。程序的resources使用ResEd来做,很不错的小东西,用wine来跑一点问题都没,哈。 写win32过程我想最多的就是GTK,感觉Win32那些API很有考古的感觉,比如说指针类型,不知道有没有人统计过究竟微软发明了多少个类型,LPSTR,LPCSTR,INT_PTR,LPVOID TMD匈牙利命名法,就不能用好看一点的名称~ 对比起来,win32最原始的地方应该是消息处理过程吧,看着形态怪异的DlgProc,很郁闷的感觉;GTK只需要按事件类型来注册回呼函数,所以我写的的Proc基本都是用函数把处理过程引了出来。 代码依然扔在Google Code:http://code.google.com/p/zruijie4gzhu/
zRuijie4GZHU Google Code:http://code.google.com/p/zruijie4gzhu/ 其实这个项目的目标不是非常明确,至少到目前为止,能在Linux下的使用的锐捷兼容客户端已经有mystar、 ruijieclient、mentoHust(还有很多,单纯Google Code上以“锐捷”为标签的就一堆了……),还有基于QT、pygtk开发的图形界面程序,可谓百花齐放,再开发一个版本出来理由似乎不太充分,只是为了一些美中不足:比如最有实力的mentoHust,其能支持到锐捷最新的3.7版本的协议,却不是开源方案;mystar则是年久失修,已经不能兼容现在的协议(不过其留下的代码让后来的开发者得到很大的指引,在此对作者Rijndael&byhh表示敬意);至于此前一直使用的Ruijieclient,其实也有点问题,一直掉线,查看上网明细,每次在线都只有1分29秒就被踢了,说明协议兼容问题。虽说Ruijieclient有“智能重连”功能,但是重连跟掉线是两回事,不能说会重连就说解决了掉线问题,花心思研究协议才是正道。 也许也就在于类似问题的出发点不同吧,虽然PT加入了Ruijieclient的项目,但一直没有参加过代码开发,毕竟一提出任何意见就互相反对的人之间很难合作,所以考完试后就花了一天时间,把锐捷协议移植到PT的“z-框架”下。虽然分析下来这个兼容问题是小事情,就是所谓的serial number的初始值以及success key的提取位不对,不过我实在不喜欢Ruijieclient的框架了,而且对自己熟悉的“z-框架”代码维护起来有快感的多。 “z-框架”是指PT依次开发神州数码、联想、锐捷几个客户端一直沿用下来的一些模式,所以zRuijie4GZHU的代码理论上跟其他锐捷相关程序是没什么相似的。除了从mystar里面沿用过来的两个数组照样copy外,PT把mystar开发时候通过反汇编得出来的Alog、Blog算法函数都重写了一次,比原来汇编式的代码的效率和可读性要高得多(分析过程中发现原来有几行的代码是多余的),两个函数摘抄在本文后面,希望对其他的锐捷开发者有用。 zRuijie4GZHU的目标应该跟Ruijieclient这些不同,Ruijieclient是面向通用的锐捷协议,要做到全球通用其实难度不小的,而zRuijie4GZHU,也正如其名,是为广州大学的锐捷而兼容的,如果能在其他学校使用,那估计是意外。 PT的开发理念是K.I.S.S,zRuijie4GZHU没有什么复杂概念,比如DHCP,只有是和不是DHCP模式,没有什么0、1、2、3模式,更没有配置文件,软件是执行文件和脚本的统一体,缺一不可。 OK,有需要的用户可以查看项目wiki的用户手册吧,下面是PT改写的锐捷Ablog和Blog算法函数: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 /* * [...]
Page optimized by WP Minify WordPress Plugin