1.分享一款 ftp 软件 —— filezilla的源码
2.FileZilla FTP Server图文安装设置教程
3.分享下电驴(eMule)的源码
4.FileZilla Server的使用方法
分享一款 ftp 软件 —— filezilla的源码
Filezilla是一款功能强大的FTP/SFTP文件管理工具,其官网为filezilla-project.org/,由开发者Tim Kosse维护。自从我在大学校园网中偶然接触到它的客户端以来,这款软件的高效性和流畅性让我一直使用至今,即使如今我的教程类源码开发环境已转换为Linux环境,我仍然在Windows与Linux服务器之间使用它进行文件传输。
与原作者的跨平台交叉编译环境不同,作为习惯使用Visual Studio进行Windows程序开发的人来说,Filezilla的客户端直接使用VS进行编译和调试更符合我的需求。另外,我修改了编译方法以适应VS环境。
界面简洁直观,包括客户端和服务器端组件。服务器端包含两个程序:一个以Windows服务形式运行的filezillaserver,另一个是用于管理服务器端用户账号、共享目录等信息的filezillaserverinterface。
编译方法如下:
1. 打开filezillaserver\filezillaserver\filezillaserver.sln,使用VS进行编译。
2. 打开filezillaserverinterface\filezillaserver\filezillaserverinterface.sln,同样使用VS进行编译。
客户端使用C++开发,而服务器端的filezillaserver和filezillaserver选择了VS,是因为它们利用了C++的一些特性,而VS无法支持所有这些特性。
客户端依赖第三方库,如wxWidgets、zlib、sqlite等进行界面设计和数据处理。CAsyncSocketEx类模仿了mfc的CAsyncSocket,具有更高的效率。项目的独特之处在于使用Windows消息队列替代传统的自定义消息队列,实现了FTP协议的高效处理。代码质量高,结构清晰。
如需获取项目源码或最新版本,可联系我获取最新源码制作的可调试版本。同时,相关视频分析已发布,方便了解其内部结构和工作原理。
FileZilla FTP Server图文安装设置教程
随着宽带网的普及,自己架设FTP服务器进行文件交流的用户越来越多。一提到FTP服务器软件,一般用户首先想到的是大名鼎鼎的Serv-U。使用主流FTP Server存在一个问题:一旦那个软件有什么安全漏洞被公布,源码 apk由于它的知名度,那么这个安全漏洞也将人尽皆知,这样服务器的安全风险将很大。其实除了这些主流软件之外,还有很多相对不太出名的FTP Server,使用这些比较冷门的FTP Server软件,上述风险相对比较小一些。这里介绍的FileZilla Server是一款免费的开放源代码的软件,具有一般FTP服务器的绝大多数功能。软件支持用户分组;支持流量限制,可以定制按时段的流量限制;支持MODE Z FTP协议;支持远程配置管理…… 安装和设置也比较简单。首先到官方网站或脚本之家下载软件
下载最新版本,然后双击安装。出现许可协议,选择“I Agree”同意协议继续……
在这一屏,中间的端口号是管理员登录配置服务器的连接端口号,默认为。这个设置还关系到远程登录配置。可以根据自己的情况修改,当然也可以在安装完成之后再修改。
安装方式:
依次是
q 将FileZilla Server作为服务安装,并随Windows系统启动
q 将FileZilla Server作为服务安装,但手动启动
q 不将FileZilla Server作为服务安装,自动启动(不推荐)
点击Close结束安装,之后弹出连接服务器的窗口。FileZilla Server支持远程配置,如果是从远程进行配置的话,这里的地址、端口号和口令要跟远程服务器上面的对应起来。
本例是从本地登录,密码正确无误之后就进入服务器设置页面。
首先要进行服务器全局参数设置:点“Edit”菜单,选“Settings”
General settings(常规设置):
Listen on Port:监听端口,其实就是FTP服务器的连接端口。
Max.Number of users:允许最大并发连接客户端的数量。
Number of Threads:处理线程。也就是CPU优先级别。数值调得越大优先级越高,一般默认即可。
下面的是超时设置,自上至下分别为:连接超时、传输空闲超时、登入超时。单位为秒。eterm 源码
Welcome message页面设置客户端登录成功以后显示的Welcome信息。建议不要用软件默认的,因为任何软件都不能保证没有什么漏洞,如果在这里暴露软件名称的话,一旦这个FTP Server软件有什么安全漏洞,别有用心的人知道了服务器软件的名称就可能针对性地发起攻击。所以建议这里设置的信息不要包含任何服务器资料。
IP Filter(IP过滤器)页面,设置IP过滤规则,在上面栏目中的IP是被禁止的,下面的是允许的。
Passive mode settings(被动传输模式设置):这个页面要重点关注。如果服务器本身直接拥有公网IP,可以选软件默认的“Default”。
倘若服务器是在局域网里面,在一个网关后面,那么就要选择第二项“Use the follwoing IP”,并且在下面的输入栏填写公网的IP地址;否则,客户端用PASV被动模式可能无法连接FTP服务器。因为服务器是在内网中,在客户端使用PASV模式连接服务器的时候,服务器收到连接请求之后需要把自身的IP地址告诉客户端,由于服务器在内网中,它侦测到的IP地址是内网的(如..0.5),它把这个IP地址交给客户端,客户端自然无法连接。在这里设置了指定的IP地址后,服务器就会把这个公网合法的IP地址提交给客户端,这样才能正常建立连接。
如果服务器是动态IP的,那么可以选择下面的“Retrieve external IP address from”,利用FileZilla官方网站免费提供的IP查询页面获取当时的公网合法IP,然后服务器把这个公网合法IP地址提交给客户端。当然静态IP也可以用这个,只不过没有必要。
这个设置页面对服务器位于内网的情况非常重要。有些FTP服务器端没有这个设置项目,客户端就只能用Port主动模式连接。当然有些客户端软件针对这个问题有专门的设置,如FlashFXP的站点设置中只要选中“被动模式使用站点IP”就可以了。
对于在局域网中的服务器,如果服务器没有置于DMZ区,那么强烈建议选中下面的“Use custom port range”定义PASV端口范围。由于PASV模式中,tiny源码是服务器随机打开端口,然后把打开的端口号告诉客户端,让客户端连接打开的端口。但是因为服务器处于网关后面,如果网关那里没有做对应的端口映射,客户端从外网就无法连接服务器打开的端口,导致PASV模式连接失败。在这里限定服务器打开的端口范围,然后到连接外网的网关那里,对服务器的这些端口做端口映射(虚拟服务)。这需要服务器和Internet网关设备配合设置,这样外网的客户端才能用PASV模式连接进来。
上一页12 下一页
分享下电驴(eMule)的源码
这里分享一款资源分享与下载工具——电驴,实际上应该称为电骡,这是我维护的版本,eMuleVeryCD版本,VeryCD是一个不错的资源分享网站: verycd.com/。大约在年之前,中国市场流行的下载工具大约有三款:网际快车(flashget)、电驴(eMule)和迅雷,后来前两者都没落了。电驴的源码也开源了,迅雷抓住这个机会分析了电驴的下载协议(Kademlia),所以现在的迅雷也能解析电驴的下载协议,凡是能用电驴下载的链接,也能用迅雷下载。这是一些前尘往事吧。其实我蛮怀念那个时候的。
先看下软件功能截图吧。
编译方法:
1.将rcdll.dll复制到Visual Studio 安装目录的VC\bin目录中。(这是为了使用能在vista下显示的图标)
2. 用VS打开easyMule_Libs.sln,执行“生成解决方案”。(easyMule_Libs.sln里所包含的是easyMule所依赖的库文件。)
3.用VS打开easyMule.sln编译即可。
电驴服务器列表(eMule server list): gruk.org/list.php ed2k://|server|...||/
这个是我维护的easyMule版本,由于不断的修改,可能会离原来的版本越来越远。
电驴的整个工程是mfc项目,里面使用的socket通信库是filezilla作者Tim Kosse在其开源项目filezilla中使用的CAsyncSocketEx,这是一个模仿mfc的CAsyncSocket类,但据说效率高于CAsyncSocket的类。
代码特点
电驴的代码虽然设计上不是最好的,但从代码风格和命名来说绝对是非常优良的,尤其是usbcopy源码其变量、类名、函数等命名风格,真的是赏心悦目。而且其工程中的大多数类都可以直接拿来使用,比如/p-.h...
代码获取地址
链接: pan.baidu.com/s/RQcgq...
提取码: fac3
如果你编译或者调试有问题可以私信我。
图书推荐
电驴运行于 Windows 平台,使用 C++ 开发,如果你对 Windows C/C++ 编程感兴趣,我推荐两本书,一本书:
1.《Windows 程序设计》
这本书讲述了 Windows UI 相关原理的方方面面,且语言朴实、娓娓道来,犹如一位良师益友,我当初也是看这本书进入 Windows C/C++ 开发领域的;这本书的业界地位很高,可以说这本书是中国的老一代 Windows 程序员的启蒙和进阶读物。
获取链接:
链接: pan.baidu.com/s/1BCCYjg...
提取码: g7py
2. 《Windows 核心编程》
这本书正好与上一本相互弥补,讲述的是 Windows 非 UI 部分的运行原理,内容非常丰富,当之“核心”二字无愧,图书的作者是编写 Windows Sysinternals 套件的 Jeffrey Richter,如果你没听说过 Windows Sysinternals 套件,那你一定听说过,Process Explorer:
侯捷老师评价这本书是“搞 Windows 开发,需要两样资源,一是 MSDN,一本就是《Windows 核心编程》”,这本书口碑非常好,多次重印,每一版都有一些新的改动和惊喜。
获取链接:
链接: pan.baidu.com/s/1SH1b0G...
提取码: wh
图书资源收集于网络,如需要请购买正版,侵删。
CppGuide
我目前在大厂做架构,面试和指导千人成功找到满意的 C/C++ 岗位,在学习 C/C++ 开发的过程中踩过一个又一个坑,深知新手学习 C/C++ 的困难,因此特地给 C/C++ 开发的同学精心准备了一份优质学习资料————CppGuide,内容从 C/C++ 语言、网络编程、操作系统原理到完整的项目源码分析,同时这份资料也包括 C/C++ 学习方法、推荐的阅读书籍、简历指导和求职技巧等。
Enjoy it!
FileZilla Server的使用方法
Filezilla的主要优势在于:高安全、高性能。Filazilla的安全性是来自于其开放源代码的。开源为何能保证安全?每一款软件产品 诞生后,都有很多人试图发现其漏洞进行攻击,以获取权限和其他利益。如果是开源软件,攻击者就会下载这个软件的源代码,从源头上分析其内部漏洞在那里,并 且进行攻击。开源的规模越大,下载阅读其源代码的人也多,这个软件也就越普及。随着其逐渐改进,漏洞就越来越少,最后成为了公认极其安全的软件,这和互联 网中数万程序员的贡献是分不开的。这类软件的代表就是Linux平台下的Apache、PHP、MySQL、Bind、Vsftpd等大量高可靠性软件。 而不开放源代码的闭源软件,人们无法对其进行研究,因此,只能将他当作“黑盒”来研究,研究的过程中没有源代码,很难找到其错误。即便找到了一些错误,还 有更多的漏洞隐藏在代码中,但是因为代码不公开,因此人们短期内无从发现,后期使用会暴露出很多问题。一些闭源软件甚至保留有“后门”,以方便远程遥控, 比如Windows,比如Serv-U。而开源软件代码是开放的,如果开发者在里边植入“后门”等危险代码,就会被互联网上广大的程序员纠出来,因此,这 里也可以看出,开源,是对安全的最好保证。Filezilla的高性能来自于其代码的开发平台是C/C++,自身基础就好于其他VB/Dephi平台开发的应用程序,因此Filezilla具有可媲美IIS的性能。在千兆网络带宽上,可轻松满足数百用户同时高速下载。
目前Filezilla也存在一些不足,主要缺点就是不支持配额,即本身不提供上传、下载总文件大小配额的功能。即便如此,免费的Filezilla正越来越多的占领原来Serv-U等软件的市场,变得更加贴近用户了。
安装
安装过程非常简单,首先下载Filezilla Server安装文件,然后将安装包下载到桌面,准备安装。
双击安装程序开始安装。点击“I Agree”继续。
选择安装方式,默认的标准即可。其中“Source Code”源代码一般不用安装,除非是想研究FileZilla的代码。
选择安装路径,强烈推荐安装到非默认路径,以增加安全系数。例如如下路径:
选择“安装为服务,并随机自动启动”的选项。下边的是管理端口,强烈推荐修改此端口,例如改成端口。(注意不要和常见服务如端口冲突)。
选择“当管理员登录时候,启动管理界面”的选项。
安装进行中。
至此安装完成,安装程序自动启动管理控制台,默认是连接到本机的管理端口。管理端口到底是多少,请参考前文安装过程中填写的具体数字是多少。建 议选中“总是连接到本服务器”的选项,即表示每次启动管理控制台,都是管理本机的Filezilla服务。下边有一个输入密码的对话框,在里边输入本服务 器Filezilla服务的密码。
注意:修改端口和密码非常重要,这是确保Filezilla安全的重点,必须修改端口,必须设置密码!密码建议足够复杂!
点击OK后,即可启动初始化之后的管理控制台,配置完成。
三、 配置
1. 基本设置
Filezilla默认的模式是Port模式,不是Passive被动模式。为了解决防火墙后的客户端连接问题,最好是启用Passive模式。要启动被动模式,首先打开管理控制台,点击左起第三个图标 进入系统设置。
点击左侧“Welcom message”菜单,即FTP登录后的欢迎信息。
为了安全起见,强烈建议修改默认的欢迎信息为“Welcom to Serv-U FTP Server”,这样Filezilla在欢迎消息中就会Serv-U字样,以达到欺骗攻击者的目的。注意:本步骤非常重要!
现在我们用telnet去连接一下FTP的端口,即可看到修改过的“假”的提示信息,这样服务器的安全性可以得到比较明显的提高。
接下来点击“Passive Mode Settings”选项,进入被动模式设置。
选中启动被动模式端口范围的选项,输入~端口范围,表示被动模式将要使用这个范围的端口。
点击确定保存即可。接下来在防火墙上允许~端口范围进出,或者
直接允许Filezilla server.exe主程序的互联网访问。
安装的最后一步是加固权限,找到Filezilla的配置文件,格式是xml格式,鼠标右键点击之,并选择属性。
加入Guest组禁止读写的权限,设置为拒绝。
点击确定后,系统会弹出提示,询问拒绝权限优先级高于允许权限,是否要继续,点击是通过即可。
至此初始化基本配置完成。
2. 匿名FTP配置
首先打开管理控制台,点击左起第四个图标 进入系统设置。
打开ftp用户管理界面,点击右侧的 按钮,添加新用户。
在新增用户的对话框中,输入“anonymous”这个名字,即FTP的匿名用户。
点击确认,添加用户完成,返回用户管理界面。
点击左侧的“Shared folders”菜单。点击Add按钮,添加一个目录。
打开浏览文件夹的选项,选择要设置FTP的目录。
点击确定,添加用户完成。
现在用户FTP客户端连接到FileZilla Server上,可以看到匿名FTP已经配置完成。
3. 标准FTP用户配置
首先进入用户设置界面,点击“Add”按钮添加新的FTP用户。
输入用户名test 。
选中Password前边的多选框,然后输入密码。
返回到用户管理界面,点击设置文件夹目录,点击Add添加目录。
添加一个目录到test用户。
添加完成,再右侧选中test用户对这个目录的权限,然后点击左侧的OK按钮,配置完成。
配置完成。现在可以使用客户端来测试登录了。
打开FTP客户端软件,输入test用户名和密码,登录到服务器。
登录成功后,可以看到刚才制定的FTP目录下的文件,并具有相应的上传、下载权限。
4. 虚拟目录配置
在具有多个目录需要共享的情况下,设置虚拟目录是比较利于管理的选择。通常,一个FTP服务器需要有一个“Home”主目录,然后设置若干个虚拟目录。
首先进入到用户管理界面,选中Test用户,选中当前设置的目录。
点击“Set as home dir”选项 ,将当前目录设置为“home”主目录。
点击Add按钮,在原有目录之外,再添加一个别的目录,比如选择桌面目录。
新的目录已经添加到目录清单了。此时添加“别名”,点击“Alias”空白处。
添加Aliases别名,注意一定用“ /”符号开头,表示是根目录下的虚拟目录。
添加完成。现在可以去登录FTP,就能看到虚拟目录了。
登录到FTP之后,可以看到虚拟目录出现在test用户的目录中。
至此虚拟目录设置完成。
5. 加固Filezilla安全
安装Filezilla到非标准目录安装过程中设置Filezilla的管理端口监听在.0.0.1上的随机端口,例如等奇怪的没用的端口。安装过程中设置Filezilla的管理密码,并设置密码足够复杂在Filezilla目录下的xml配置文件上,设置Guests组禁止读取的权限修改FTP登录后的提示信息为IIS、Serv-U等信息不要开启SSL加密、SFTP等功能,避免以后出现漏洞经过如上一些配置,Filezilla可以做到很高的安全性。