做了一个vsftpd的补丁
时间:2005-12-31
来源:互联网
我给vsftpd写了一个补丁,在传递文件名和目录名以及文本消息的时候,它可以根据配置文件中的选项来调整编码。这样我的系统就可以使用UTF8,远程的windows机器连接上来也没有问题
安装方法
解压vsftpd-encoding.tar.bz2到/usr/local/portage/net-ftp/目录下(这需要在/etc/make.conf里设置PORTDIR_OVERLAY=/usr/local/portage),然后emerge vsftpd就可以了
为了方便非gentoo的用户,我把patch也单独打了包,就是vsftpd-2.0.3-encoding.patch.tar.bz2,解压后对vsftpd源码打补丁就可以安装了。
使用方法
我给vsftpd增加了三个开关,这些可以在打了补丁的vsftpd.conf的manpage中用charset搜到。
首先是要在vsftpd.conf中加上charset_filter_enable=YES,这个开关使vsftpd配置字符过滤器,缺省是NO,就是说vsftpd缺省不会开启这个解码功能的。
然后就是两个参数charset_client和charset_server,前者表示vsftpd将向外输出的字符编码名称(比如我这样的情况应该是GBK,GB18030或者GB2312),后者是vsftpd所在服务器的系统编码(我这里是UTF8)。
有什么问题可以发信给meteozwh at hotmail dot com
vsftpd-encoding.tar.bz2 (8.8 KB, 523 次查看) | |
vsftpd-2.0.3-encoding.patch.tar.bz2 (3.3 KB, 733 次查看) |
作者: meteo 发布时间: 2005-12-31
ps. s/UTF8/UTF-8/
作者: sunmoon1997 发布时间: 2005-12-31
作者: Freesnake 发布时间: 2005-12-31
作者: meteo 发布时间: 2005-12-31
至于这个UTF8,我试过UTF8,utf8都没问题,其实应该是用iconv --list命令显示出来的编码都可以正常工作。
作者: sunmoon1997
Great work!
ps. s/UTF8/UTF-8/ |
作者: meteo 发布时间: 2005-12-31
問一下, 這個patch適用於big5環境嗎?
作者: semson 发布时间: 2005-12-31
作者: meteo
local_enable=YES
|
我怀疑是pam的问题……
作者: Freesnake 发布时间: 2006-01-01
这位台湾大哥的网站上有这个patch
用iconv转
可惜版本太低
我没用
自己按照patch修改过源码好像没用
也就再也没管了
不楼楼主的patch和我说的这个有没有相同点
我是用debian的
去试试
作者: linuxcpp 发布时间: 2006-01-01
终于解决了一个很郁闷的问题
非常感谢!
作者: linuxcpp 发布时间: 2006-01-01
hehe,当然了,如果有问题就告诉我,
作者: semson
以前就在煩這個問題, 所以轉了proftpd因為有第3方的iconv() charset conversion patch
問一下, 這個patch適用於big5環境嗎? |
作者: meteo 发布时间: 2006-01-01
就是在vsftpd fork新进程之前,需要调用iconv_open对主机编码和远程编码进行一次空操作。
这个原因在于fork之后的进程空间里,必须能够访问GBK.so或者BIG5.so等,GLIBC里很多编码的支持都依赖于这样的动态库,它自己支持的很少,所以基本上调用iconv_open都会返回-1。这问题我写patch的时候郁闷了好久。
他这个ICNV命令比较有意思,回头看看可以不可以加上,不过现在没空折腾了。
作者: linuxcpp
http://www.teatime.com.tw/~tommy/
这位台湾大哥的网站上有这个patch 用iconv转 可惜版本太低 我没用 自己按照patch修改过源码好像没用 也就再也没管了 不楼楼主的patch和我说的这个有没有相同点 我是用debian的 去试试 |
作者: meteo 发布时间: 2006-01-02
能保持更新
呵呵
用utf-8的人们可以有福了
向楼主致敬!!!
作者: linuxcpp 发布时间: 2006-03-05
作者: Freesnake
谁能告诉我在Gentoo下vsftpd不能用普通用户登陆是怎么回事?
|
你是从官方下的源代码安装的吧?emerge vsftpd的话,用的是2.0.3没这问题,我今天下午刚试过的。
作者: shaaben 发布时间: 2006-03-05
作者: Freesnake
谁能告诉我在Gentoo下vsftpd不能用普通用户登陆是怎么回事?
|
作者: leyyer 发布时间: 2006-03-05
作者: 食古不化 发布时间: 2006-03-16
vsftpd可以设置编码让浏览器识别吗?
作者: 食古不化 发布时间: 2006-03-16
作者: Zer4tul 发布时间: 2006-03-16
但是
$ env LC_ALL=zh_CN.GB2312 ftp 192.168.2.100 Connected to 192.168.2.100 (192.168.2.100). 500 OOPS: trunc_len not smaller than alloc_bytes in str_trunc ftp>
作者: 食古不化 发布时间: 2006-03-16
作者: 食古不化 发布时间: 2006-03-16
在vsftpd.conf中的设置和meteo的一样。
vsftpd-2.0.4-encoding.patch.tar.bz2 (3.3 KB, 125 次查看) |
作者: soloforce 发布时间: 2006-05-31
我这一阵实在是忙,好久没有折腾我心爱的gentoo了
作者: Lolita
vsftpd-2.0.4-r1 编码补丁(based on meteo's patch)
在vsftpd.conf中的设置和meteo的一样。 |
作者: meteo 发布时间: 2006-06-10
这个包是为了方便使用utf8编码的系统与windows系统或使用GB编码的linux系统互相传递文件用的
你问的两个问题都是客户端的问题,和ftp服务器没关系
如果你用浏览器,可以不用这个包,直接看utf8的编码就可以了
因为浏览器是不可能主动察觉ftp服务器上的编码的(如果是web网页,页面上会有关于编码的信息,ftp协议和http是不一样的)
作者: 食古不化
用了楼主的包,仍显示乱码,必须手动设置utf8编码才行。至少在浏览器中是这样。
|
作者: meteo 发布时间: 2006-06-10
作者: 食古不化
按照楼主的设置完vsftpd.conf后,正常启动vsftpd。
但是
代码:
$ env LC_ALL=zh_CN.GB2312 ftp 192.168.2.100 Connected to 192.168.2.100 (192.168.2.100). 500 OOPS: trunc_len not smaller than alloc_bytes in str_trunc ftp> |
作者: meteo 发布时间: 2006-06-10
IE/FF 测试通过。
作者: 晨想 发布时间: 2006-06-10
ubuntu:~/vsftpd-1.2.1$ patch -p0 <../vsftpd-2.0.3-encoding.patch
can't find file to patch at input line 4
Perhaps you used the wrong -p or --strip option?
The text leading up to this was:
--------------------------
|diff -Nur vsftpd-2.0.3/main.c vsftpd-2.0.3-encoding/main.c
|--- vsftpd-2.0.3/main.c 2005-03-19 05:51:39.000000000 -0500
|+++ vsftpd-2.0.3-encoding/main.c 2005-12-30 04:40:44.000000000 -0500
--------------------------
File to patch:
作者: woyao 发布时间: 2006-07-07
你的 1.2.1 是什么时候的?:)
作者: 晨想 发布时间: 2006-07-07
作者: 终极幻想
Jan 2006 - vsftpd-2.0.4 released
你的 1.2.1 是什么时候的?:) |
不过现在已经有2.0.5了 :)
作者: woyao 发布时间: 2006-07-07
作者: Lolita
vsftpd-2.0.4-r1 编码补丁(based on meteo's patch)
在vsftpd.conf中的设置和meteo的一样。 |
谢谢了,试用了一下,很好用啊。不过有一个小问题,打了这个补丁后,用IE浏览FTP服务器,不会*出填写用户名和密码的登录框。而是*出一个“该服务器不支持匿名”的提示框,需要点右键选“登录”才能进去。
作者: ak137 发布时间: 2006-07-28
作者: ak137
谢谢了,试用了一下,很好用啊。不过有一个小问题,打了这个补丁后,用IE浏览FTP服务器,不会*出填写用户名和密码的登录框。而是*出一个“该服务器不支持匿名”的提示框,需要点右键选“登录”才能进去。
|
作者: soloforce 发布时间: 2006-07-28
关于vsftpd还有一个解决方法:
http://sourceforge.net/projects/fuse-convmvfs
一个简单FUSE文件系统,用类似下列命令:
/usr/local/bin/convmvfs -o srcdir=/data/share,ocharset=gb18030,allow_other /data/share18030
就可以同时讨好UTF-8和GB*用户了
# ls /data/share/music/|tail 瘦人 眼镜蛇 窦唯 罗大佑 范晓萱 许巍 跳房子 达明一派 陈升 陈绮贞 # ls /data/share18030/music/|iconv -f gb18030 |sort|tail 瘦人 眼镜蛇 窦唯 罗大佑 范晓萱 许巍 跳房子 达明一派 陈升 陈绮贞
作者: hellwolf 发布时间: 2006-07-28
我想,如果要解决上传问题的话,是不是一定要用virtual用户执行convmvfs挂载ftpsite_gbk目录呢? 但是virtual用户我这里是不允许登录的,有没有更好的挂载办法呢?
作者: ak137 发布时间: 2006-07-29
P.S:virtual不能登录也可以执行,debian有个start-stop-daemon工具,不知道gentoo的是什么。我不熟悉gentoo。
补充:
http://sourceforge.net/project/showf...roup_id=166276
0.2.2解决了刚才的问题。
作者: hellwolf 发布时间: 2006-07-29
还有那个patch文件是怎么用的?
作者: very0717 发布时间: 2006-07-29
2.0.5什么时候有补丁哦
作者: kaemnt 发布时间: 2006-07-31
and it works well on amd64.
/usr/local/portage/sys-fs/fuse-convmvfs/fuse-convmvfs-0.2.2.ebuild
# Copyright 1999-2004 Gentoo Foundation # Distributed under the terms of the GNU General Public License v2 # $Header: /var/cvsroot/gentoo-x86/sys-fs/fuse-convmvfs/fuse-convmvfs-0.2.2.ebuild,v 1.3 2004/12/18 21:20:05 stuart Exp $ inherit eutils DESCRIPTION="This is a filesystem client use the FUSE(Filesystem in USErspace) interface to convert file name from one charset to another." HOMEPAGE="http://fuse-convmvfs.sourceforge.net/" SRC_URI="mirror://sourceforge/fuse-convmvfs/${P}.tar.gz" LICENSE="GPL-2" SLOT="0" KEYWORDS="~amd64 ~x86" IUSE="" DEPEND=">=sys-fs/fuse-2.5" src_unpack() { unpack ${A} } src_install() { make DESTDIR=${D} install || die "make install failed" dodoc AUTHORS ChangeLog README }
作者: fiag 发布时间: 2006-08-09
作者: zhou3345 发布时间: 2006-09-02
作者: hellwolf 发布时间: 2006-09-09
作者: Eric_DZT 发布时间: 2007-01-25
作者: hellwolf
推销一下
关于vsftpd还有一个解决方法: http://sourceforge.net/projects/fuse-convmvfs 一个简单FUSE文件系统,用类似下列命令:
代码:
/usr/local/bin/convmvfs -o srcdir=/data/share,ocharset=gb18030,allow_other /data/share18030 就可以同时讨好UTF-8和GB*用户了
代码:
# ls /data/share/music/|tail 瘦人 眼镜蛇 窦唯 罗大佑 范晓萱 许巍 跳房子 达明一派 陈升 陈绮贞 # ls /data/share18030/music/|iconv -f gb18030 |sort|tail 瘦人 眼镜蛇 窦唯 罗大佑 范晓萱 许巍 跳房子 达明一派 陈升 陈绮贞 |
我的系统是CentOS - vsftpd...
作者: Eric_DZT 发布时间: 2007-01-27
作者: Eric_DZT
具体应该怎么做?
我的系统是CentOS - vsftpd... |
作者: hellwolf 发布时间: 2007-01-28
作者: hellwolf
你可以试试fedora-cn的fuse-convmvfs的RPM
|
作者: Eric_DZT 发布时间: 2007-01-30
ftp://ftp.fedora.cn/pub/fedora-cn/di...s-0.2.2.tar.gz
ftp://ftp.fedora.cn/pub/fedora-cn/li...c6.y0.i386.rpm
作者: hellwolf 发布时间: 2007-01-30
都下載了, 但我不會配置啊!! 還請詳細賜教!!! 謝謝!!!
作者: Eric_DZT 发布时间: 2007-01-30
作者: hellwolf 发布时间: 2007-01-30
# rpm -ivh fuse-convmvfs-0.2.2-1.fc6.y0.i386.rpm
warning: fuse-convmvfs-0.2.2-1.fc6.y0.i386.rpm: V3 DSA signature: NOKEY, key ID cfda5baf
error: Failed dependencies:
fuse-libs >= 2.5.0 is needed by fuse-convmvfs-0.2.2-1.fc6.y0.i386
libc.so.6(GLIBC_2.4) is needed by fuse-convmvfs-0.2.2-1.fc6.y0.i386
libfuse.so.2 is needed by fuse-convmvfs-0.2.2-1.fc6.y0.i386
libfuse.so.2(FUSE_2.2) is needed by fuse-convmvfs-0.2.2-1.fc6.y0.i386
libfuse.so.2(FUSE_2.5) is needed by fuse-convmvfs-0.2.2-1.fc6.y0.i386
rtld(GNU_HASH) is needed by fuse-convmvfs-0.2.2-1.fc6.y0.i386
按照网站上的说法,解压gz包的,进入目录./configure后,又没有make 与 make install 文件.
作者: Eric_DZT 发布时间: 2007-01-31
热门阅读
-
office 2019专业增强版最新2021版激活秘钥/序列号/激活码推荐 附激活工具
阅读:74
-
如何安装mysql8.0
阅读:31
-
Word快速设置标题样式步骤详解
阅读:28
-
20+道必知必会的Vue面试题(附答案解析)
阅读:37
-
HTML如何制作表单
阅读:22
-
百词斩可以改天数吗?当然可以,4个步骤轻松修改天数!
阅读:31
-
ET文件格式和XLS格式文件之间如何转化?
阅读:24
-
react和vue的区别及优缺点是什么
阅读:121
-
支付宝人脸识别如何关闭?
阅读:21
-
腾讯微云怎么修改照片或视频备份路径?
阅读:28