LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 2670|回复: 9

谁知道并解决了drcom登陆问题

[复制链接]
发表于 2006-4-13 03:49:00 | 显示全部楼层 |阅读模式
drcom  一个让人咬牙的登陆网络的东西 fc5下面不能很好的编译  网上说法都只是提出来 没有人解决  不知道这里有没有高人指点?
发表于 2006-4-13 11:23:41 | 显示全部楼层
我现在已经麻木了。反正是用虚拟机装的,要的东西通过xp中转。
回复 支持 反对

使用道具 举报

发表于 2006-4-13 14:49:22 | 显示全部楼层
出大问题了!

Tuesday, 4. April 2006, 00:35:01

Linux
这几天不断有FC5的用户向我询问2.6.16内核下无法编译drcom的问题,(注:drcom是宽带登陆客户端,这个drcom-client是 linux下实现的开源版本,本人启动了一个q-drcom项目,做drcom的使用支持和图形界面的开发)。编译的错误很明显,是drcom内核模块中给常量inet_stream_ops赋值的原因,但是我自己不用Fc5,并且身边的机器也没有Fc5.我想吧,也许是fedora社区对内核进行更改了,最近比较忙,也不想管,因为其他的发行版本都没有反馈这个问题的。昨天下下来一个fedora5的rpm包,不过是2.6.15的。我的gentoo 没有办法解rpm包,在linuxsir上fedora论坛里发贴请fc5的用户帮我把头文件发过来,很久都没有人回应。后来从网上找到一个脚本,可以利用gunzip这些普通命令什么的解rpm包。解开之后,查看那些patch,发现没有对那个头文件进行修改的,而2.6.15的原始内核也是没有象我想象的有修改。fc5下2.6.15内核编译错误的原因,是因为应用的patch-2.6.16的补丁。不过不知道为什么,解压内核补丁的bz2压缩包时出错,所以也没有去管了。我开始意识到,是否是2.6.16内核的原因,今天早上更新了portage之后,emerge了最新的2.6.16-r1内核,我去内核源码树里面去看那个头文件,gentoo里面的那两个量也被声明为常量了,那么是否linux的原始内核已经在这个地方做了修改了呢?于是去了 kernel.org下了2.6.16版本的内核下来,一看,果然如我所想,做了修改。那么我的猜想也是对的,fc5中应用的2.6.15的内核发布比较玩,是加了各个补丁的内核,并且这个修改并入了2.6.16;而且inet_common.h这个头文件做修改的就这两行,都被声明了外部常量了。

extern const struct proto_ops           inet_stream_ops;
extern const struct proto_ops           inet_dgram_ops;



如果向drcom模块现在这样的方法,通过给inet_stream_ops赋值来达到改变发送的数据的方法,肯定是行不通的。而为这个改内核的那个头文件或者发布一个布丁,如果能编译运行的话,这也是为大家所不可接受的。在2.6.16版本中对内核进行的修改肯定是为某个原因,甚至有可能是安全方面的原因。现在我所想的是,好好读读这一部分代码,然后是否能有一个比较完美的方案,改动drcom模块本身,或者说确认不声明为常量对其他部分没有影响,而对内核打补丁。对于在drcom下生存的linux用户,也只有请稍微缓缓再升级内核到2.6.16了。我尽力,这几天把重心移到这个上面来,找到一个可以接受的方案。

http://my.opera.com/alva/archive/monthly/?day=20060404
回复 支持 反对

使用道具 举报

发表于 2006-4-14 15:39:52 | 显示全部楼层
广州热点公司及其dr.com真叫人头痛!完全没有考虑linux用户,气愤!      :beat

        drcom-client的维护人员真的是太辛苦了!

       我试着将那两个值的常量申明去掉,然后再编译。编辑很顺利,也可以成功登录。但
   还是有问题:

       上网时只能ping通外网,但是用http,ftp,telnet等都连不上。已排除DNS和route的原因。
   不知道怎么回事?同时也给drcomsuite的开发人员william发去了一封信,同时附带了用ethernet
   截的包。但是目前还没有收到回信(他们确实太忙了)。

        大家也可以先暂时把那两个常量申明去掉,然后再编译。看看会不会遇到和我一样的问题。
回复 支持 反对

使用道具 举报

发表于 2006-4-14 20:33:22 | 显示全部楼层
我尝试自己编译2.6.15内核。可以编译libdrcom和drcomsuite两个文件。以下是全过程
[root@matt ~]# cd drcom
[root@matt drcom]# dir
DRCOM_INSTALL.txt  drcomsuite-0.1.12.tar.bz2  libdrcom-0.0-20050423-2.tar.bz2
[root@matt drcom]# tar jxvf libdrcom-0.0-20050423-2.tar.bz2
[root@matt drcom]# cd libdrcom-0.0-20050423-2
[root@matt libdrcom-0.0-20050423-2]# make
gcc -Wall -Wextra -Wstrict-prototypes -Wmissing-prototypes -pedantic -Iinclude -O2 -D_REENTRANT -c -o src/init.o src/init.c
gcc -Wall -Wextra -Wstrict-prototypes -Wmissing-prototypes -pedantic -Iinclude -O2 -D_REENTRANT -c -o src/cleanup.o src/cleanup.c
gcc -Wall -Wextra -Wstrict-prototypes -Wmissing-prototypes -pedantic -Iinclude -O2 -D_REENTRANT -c -o src/handle.o src/handle.c
gcc -Wall -Wextra -Wstrict-prototypes -Wmissing-prototypes -pedantic -Iinclude -O2 -D_REENTRANT -c -o src/login.o src/login.c
src/login.c: 在函数 ‘drcom_login’ 中:
src/login.c:34: 警告:未使用的参数 ‘timeout’
gcc -Wall -Wextra -Wstrict-prototypes -Wmissing-prototypes -pedantic -Iinclude -O2 -D_REENTRANT -c -o src/logout.o src/logout.c
src/logout.c: 在函数 ‘drcom_logout’ 中:
src/logout.c:32: 警告:未使用的参数 ‘timeout’
gcc -Wall -Wextra -Wstrict-prototypes -Wmissing-prototypes -pedantic -Iinclude -O2 -D_REENTRANT -c -o src/passwd.o src/passwd.c
src/passwd.c: 在函数 ‘drcom_passwd’ 中:
src/passwd.c:32: 警告:未使用的参数 ‘timeout’
gcc -Wall -Wextra -Wstrict-prototypes -Wmissing-prototypes -pedantic -Iinclude -O2 -D_REENTRANT -c -o src/keepalive.o src/keepalive.c
gcc -Wall -Wextra -Wstrict-prototypes -Wmissing-prototypes -pedantic -Iinclude -O2 -D_REENTRANT -c -o src/watchport.o src/watchport.c
gcc -Wall -Wextra -Wstrict-prototypes -Wmissing-prototypes -pedantic -Iinclude -O2 -D_REENTRANT -c -o src/misc.o src/misc.c
gcc -Wall -Wextra -Wstrict-prototypes -Wmissing-prototypes -pedantic -Iinclude -O2 -D_REENTRANT -c -o lib/dialog.o lib/dialog.c
gcc -Wall -Wextra -Wstrict-prototypes -Wmissing-prototypes -pedantic -Iinclude -O2 -D_REENTRANT -c -o lib/readconf.o lib/readconf.c
gcc -Wall -Wextra -Wstrict-prototypes -Wmissing-prototypes -pedantic -Iinclude -O2 -D_REENTRANT -c -o lib/md5.o lib/md5.c
lib/md5.c:131:36: 警告:使用 C99 long long 整数常量
gcc -Wall -Wextra -Wstrict-prototypes -Wmissing-prototypes -pedantic -Iinclude -O2 -D_REENTRANT -c -o os/getaddr.o os/linux/getaddr.c
gcc -Wall -Wextra -Wstrict-prototypes -Wmissing-prototypes -pedantic -Iinclude -O2 -D_REENTRANT -fPIC -shared -o src/libdrcom.so src/init.o src/cleanup.o src/handle.o src/login.o src/logout.o src/passwd.o src/keepalive.o src/watchport.o src/misc.o lib/dialog.o lib/readconf.o lib/md5.o os/getaddr.o -lm
[root@matt libdrcom-0.0-20050423-2]# make install
mkdir -p /usr/include
cp include/drcom.h /usr/include
mkdir -p /usr/lib
cp src/libdrcom.so /usr/lib
mkdir -p /etc
cp etc/drcom.conf.new /etc
mkdir -p /usr/doc/libdrcom-0.0-20050423-2
cp -a doc/* /usr/doc/libdrcom-0.0-20050423-2
[root@matt libdrcom-0.0-20050423-2]# cd ..
[root@matt drcom]# dir
DRCOM_INSTALL.txt          libdrcom-0.0-20050423-2
drcomsuite-0.1.12.tar.bz2  libdrcom-0.0-20050423-2.tar.bz2

[root@matt drcom]# cd drcomsuite-0.1.12
[root@matt drcomsuite-0.1.12]# make
make -C include
make[1]: Entering directory `/root/drcom/drcomsuite-0.1.12/include'
make[1]: Nothing to be done for `all'.
make[1]: Leaving directory `/root/drcom/drcomsuite-0.1.12/include'
make -C drcomc
make[1]: Entering directory `/root/drcom/drcomsuite-0.1.12/drcomc'
gcc -Wall -W -Wstrict-prototypes -Wmissing-prototypes -pedantic -I/root/drcom/drcomsuite-0.1.12 -I/root/drcom/drcomsuite-0.1.12/include -O2   -c -o drcomc.o drcomc.c
gcc   drcomc.o   -o drcomc
make[1]: Leaving directory `/root/drcom/drcomsuite-0.1.12/drcomc'
make -C drcomcd
make[1]: Entering directory `/root/drcom/drcomsuite-0.1.12/drcomcd'
gcc -Wall -W -Wstrict-prototypes -Wmissing-prototypes -pedantic -I/root/drcom/drcomsuite-0.1.12 -I/root/drcom/drcomsuite-0.1.12/include -O2 -DREENTRANT   -c -o drcomcd.o drcomcd.c
gcc -Wall -W -Wstrict-prototypes -Wmissing-prototypes -pedantic -I/root/drcom/drcomsuite-0.1.12 -I/root/drcom/drcomsuite-0.1.12/include -O2 -DREENTRANT   -c -o daemon.o daemon.c
gcc -ldrcom -lpthread  drcomcd.o daemon.o   -o drcomcd
make[1]: Leaving directory `/root/drcom/drcomsuite-0.1.12/drcomcd'
make -C module
make[1]: Entering directory `/root/drcom/drcomsuite-0.1.12/module'
make -C Linux
make[2]: Entering directory `/root/drcom/drcomsuite-0.1.12/module/Linux'
make -C 2.6.x
make[3]: Entering directory `/root/drcom/drcomsuite-0.1.12/module/Linux/2.6.x'
make -C /lib/modules/2.6.15/build M=/root/drcom/drcomsuite-0.1.12/module/Linux/2.6.x modules
make[4]: Entering directory `/usr/src/linux-2.6.15'
  CC [M]  /root/drcom/drcomsuite-0.1.12/module/Linux/2.6.x/init.o
  CC [M]  /root/drcom/drcomsuite-0.1.12/module/Linux/2.6.x/proc.o
  CC [M]  /root/drcom/drcomsuite-0.1.12/module/Linux/2.6.x/proto.o
  LD [M]  /root/drcom/drcomsuite-0.1.12/module/Linux/2.6.x/drcom.o
  Building modules, stage 2.
  MODPOST
  CC      /root/drcom/drcomsuite-0.1.12/module/Linux/2.6.x/drcom.mod.o
  LD [M]  /root/drcom/drcomsuite-0.1.12/module/Linux/2.6.x/drcom.ko
make[4]: Leaving directory `/usr/src/linux-2.6.15'
make[3]: Leaving directory `/root/drcom/drcomsuite-0.1.12/module/Linux/2.6.x'
make[2]: Leaving directory `/root/drcom/drcomsuite-0.1.12/module/Linux'
make[1]: Leaving directory `/root/drcom/drcomsuite-0.1.12/module'
make -C doc
make[1]: Entering directory `/root/drcom/drcomsuite-0.1.12/doc'
make[1]: Nothing to be done for `all'.
make[1]: Leaving directory `/root/drcom/drcomsuite-0.1.12/doc'

[root@matt drcomsuite-0.1.12]# make install
make -C include install
make[1]: Entering directory `/root/drcom/drcomsuite-0.1.12/include'
make[1]: Nothing to be done for `install'.
make[1]: Leaving directory `/root/drcom/drcomsuite-0.1.12/include'
make -C drcomc install
make[1]: Entering directory `/root/drcom/drcomsuite-0.1.12/drcomc'
mkdir -p /usr/bin
cp drcomc /usr/bin
make[1]: Leaving directory `/root/drcom/drcomsuite-0.1.12/drcomc'
make -C drcomcd install
make[1]: Entering directory `/root/drcom/drcomsuite-0.1.12/drcomcd'
mkdir -p /usr/sbin
install -m 700 drcomcd /usr/sbin
make[1]: Leaving directory `/root/drcom/drcomsuite-0.1.12/drcomcd'
make -C module install
make[1]: Entering directory `/root/drcom/drcomsuite-0.1.12/module'
make -C Linux install
make[2]: Entering directory `/root/drcom/drcomsuite-0.1.12/module/Linux'
make -C 2.6.x install
make[3]: Entering directory `/root/drcom/drcomsuite-0.1.12/module/Linux/2.6.x'
make -C /lib/modules/2.6.15/build M=/root/drcom/drcomsuite-0.1.12/module/Linux/2.6.x modules
make[4]: Entering directory `/usr/src/linux-2.6.15'
  Building modules, stage 2.
  MODPOST
make[4]: Leaving directory `/usr/src/linux-2.6.15'
make -C /lib/modules/2.6.15/build M=/root/drcom/drcomsuite-0.1.12/module/Linux/2.6.x INSTALL_MOD_PATH= modules_install
make[4]: Entering directory `/usr/src/linux-2.6.15'
  INSTALL /root/drcom/drcomsuite-0.1.12/module/Linux/2.6.x/drcom.ko
make[4]: Leaving directory `/usr/src/linux-2.6.15'
depmod -a 2.6.15
make[3]: Leaving directory `/root/drcom/drcomsuite-0.1.12/module/Linux/2.6.x'
make[2]: Leaving directory `/root/drcom/drcomsuite-0.1.12/module/Linux'
make[1]: Leaving directory `/root/drcom/drcomsuite-0.1.12/module'
make -C doc install
make[1]: Entering directory `/root/drcom/drcomsuite-0.1.12/doc'
mkdir -p /usr/doc/drcomsuite-0.1.12
cp authentication client-daemon implementation procfiles /usr/doc/drcomsuite-0.1.12
make[1]: Leaving directory `/root/drcom/drcomsuite-0.1.12/doc'
[root@matt drcomsuite-0.1.12]# source /etc/profile
[root@matt drcomsuite-0.1.12]# modprobe drcom
[root@matt drcomsuite-0.1.12]# drcomcd #
drcomcd: error while loading shared libraries: /usr/lib/libdrcom.so: cannot restore segment prot after reloc: Permission denied
[root@matt drcomsuite-0.1.12]# drcomc login
1144761327 DEBUG drcomc: Creating socket...
1144761327 DEBUG drcomc: Connecting...
drcomc: Connect: No such file or directory
[root@matt drcomsuite-0.1.12]#
回复 支持 反对

使用道具 举报

发表于 2006-4-14 20:39:37 | 显示全部楼层
4楼的,我和你差不多。我是改了drcomsuite程序。编程安装好了后,登陆成功,也可以ping通外网。但是就是不能开网页的
看来还要改改才行
郁闷呀。上个网还要整这么郁闷。郁闷drcom
回复 支持 反对

使用道具 举报

发表于 2006-4-14 21:06:38 | 显示全部楼层
问题还是没解决。
回复 支持 反对

使用道具 举报

发表于 2006-4-14 21:07:19 | 显示全部楼层
问题还是没解决。
回复 支持 反对

使用道具 举报

发表于 2008-5-25 07:55:51 | 显示全部楼层
回复 支持 反对

使用道具 举报

发表于 2008-5-25 11:37:38 | 显示全部楼层
哈哈,我也被这东西困了很久,网上什么方法都用过。都不行。但后来,我不用这个DRCOM来登录,而是直接在网页(也就是提醒你下载DRCOM那个页面)登录,没想到就可以用了。但在宿舍里网页也不能登录,只能在实验室里才能直接网页登录,其原因是学校给宿舍和实验室设置了不同的登录权限。
建议解决方法:你可以向学校要求给你网页登录权限
另外,貌似用wine+drcom可以用用,我装了之后能登录3秒种左右就被自动注销了。我学校用的是v3.71的
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表