luckyhsif 发表于 2009-10-22 15:33:55

求助 : BCM63XX的固件的CGI文件在哪里?

因为想做一些修改,研究了此固件的源码(H大侠提供的DSL2650U和USR9113等版本)和刷上去的文件系统,可是找不到CGI文件放在哪里。

估计httpd是busybox的版本,因为源码里就只有busybox里面的networking文件夹有httpd.c。但没有发现相应的httpd.conf。所以这应该是个不带httpd.conf的httpd。

HTML的源码像是在userapps/broadcom/cfm/html里,安装后,放在/webs里。

此系列的版本有不少CGI,比如http://+modem_ip/rebootinfo.cgi就能重启动。但是分析了httpd.c, 就是不明白里面是咋整的。

请求大侠帮助!谢谢。

dyscc 发表于 2009-10-22 17:31:51

类似于API的。。。。。。。。。

luckyhsif 发表于 2009-10-23 07:38:11

API是c的界面,须由cgi处理器才能调用,html不能直接调用API,html只能调用cgi文件。通常cgi文件都放在httpd的文件根目录下的cgi-bin子目录里,所以此固件里,他们就应该在/webs/cgi-bin/里,但是并没有这个目录呀。

有没有懂得此固件原理结构的大侠路过?帮帮忙给个提示吧。

dyscc 发表于 2009-10-23 11:50:33

CGI就是个接口。HTTPD下面就是啊,。。不过都是C语言的

dada21cm 发表于 2009-10-23 11:53:44

所有CGI由CFM处理,CFM是没有源码的吧。

luckyhsif 发表于 2009-10-23 13:07:51

没接触过CFM,网上也找不到资料,楼上能讲解一下吗?

但CFM并不是处理CGI,因为就算停掉了CFM的进程,HTML和CGI仍然工作良好,比如可以通过网页让猫重启动。

玩过网页服务器HTTPD都知道,所有80端的通讯都由HTTPD处理,HTTPD如发现URL属于CGI(比如/cgi-bin/xxx.cgi),就转发给CGI处理器。现在有两个问题,

1,xxx.cgi的源码在哪里?现在只能证实HTTPD接受和运行这些含CGI的URL。

2,哪一个进程或库文件处理CGI的码并与c界面衔接?

dada21cm 发表于 2009-10-23 13:38:58

你对httpd的理解是正确的,但并不一定请求x.cgi就交给x.cgi程序处理,这种解析规则在一般的web服务器里面都可以配置,在bcm6358固件上cgi请求是统一交给cfm处理的。
一般cgi程序都不是daemon进程,而是在httpd收到请求时启动进程,处理完结束,所以你杀cfm也是没有用的。
cfm应该是broadcom的专有程序,你就不要指望源代码了,但你可以看看userapp/broadcom/cfm下的.h文件,看看他提供了哪些接口可以用。但我觉得不如单启一个web服务器自己写cgi。

luckyhsif 发表于 2009-10-28 13:13:20

谢谢7楼高手的指点。
经过几天摸索,我已经另加进去一个Web服务器,并自己写CGI。但还有新的问题,
原有的httpd进程没有单独的Binary,强行杀死的话,80口并没有释放,所以另启的httpd只能使用其他端口,如8080。

能告诉我如何不启动原有的httpd,使80口不被占有?另外,httpd和cfm是这么启动的,initd上面又没有任何设置?

dada21cm 发表于 2009-10-28 15:24:54

贴/etc目录结构上来,贴initd内容上来,这样说没人能解答。另外,你杀了cfm,原有的web管理功能你都能实现吗,还是不杀的好,呵呵。

luckyhsif 发表于 2009-10-28 15:43:34

喔,目前只是杀掉原有的httpd,没动cfm。但自己另装的httpd只能使用80以外的端口。

inittab的内容

::sysinit:/etc/init.d/rcS
::respawn:-/bin/sh
tty2::askfirst:-/bin/sh
::ctrlaltdel:/bin/umount -a -r

rcS的内容

#! /bin/sh

PATH=/sbin:/bin
export PATH

mount -t proc proc /proc
/bin/mount -a
#/sbin/inetd

/etc 的结构

dhcp        fstab        inetd.conf         init.d        inittab        issue.net        modules_install        myinit        p2popt        ppp        printcap        profile        services        smb.conf        snmp                startsmb        versions

./dhcp:
dhcp_getdata

./init.d:
rcS

./ppp:
ip-down        ip-up        options        peers

./ppp/peers:

./snmp:
页: [1]
查看完整版本: 求助 : BCM63XX的固件的CGI文件在哪里?