基于Goahead的嵌入式web开发

来源:互联网 发布:ios网络电视app哪个好 编辑:程序博客网 时间:2024/05/22 00:17

 

最近在做一个嵌入式的web,主要是用来远程控制和管理设备的参数。网上关于这方面的信息很少,goahead的文档也少。现在总结一下goahead的一些基本行为特点,以供后来者参考。对以移植之类的就不说了,网上有几篇文章。

 

1.Goahead的特点

 

支持html,cgi,goform,内嵌的asp(文档说是embed javascript),部分asp语句。

 

goform文档说是memory cgi.说白了就是一个用来替代cgi 程序的函数,但是他与goahead服务器程序编译在一起,并需要通过websFormDefine()向服务器注册。

 

内嵌的asp是可以嵌入到网页中的函数,跟goform 一样也需要注册,通过websAspDefine()注册。

 

以上两个特性是我用的最多的。

 

websFormDefine(T("formFoo"),“formTest”);

void formTest(webs_t wp, char_t *path, char_t *query);

 

formTest是定义的函数,formFoo是调用时用的,一般是用来处理表单,

 

如 <form action=/goform/formFoo method=post>

 

websAspDefine(T("aspFoo"),"aspTest");

int aspTest(int eid, webs_t wp, int argc, char_t **argv);

 

aspTest是定义的函数,aspFoo在网页中调用时用,

 

如 <% aspFoo(arg1,arg2 ...); %>  这一部分会在服务端解析出来,你可以通过他依据不同参数替换成不同的内容。

 

goahead并不完整地支持asp因此对一些 .asp网页可能有问题,需要对网页做一些修改。

 

2 。goahead的用户管理,(这是我最想说的,网上太少了)。

 

他的用户管理依靠一个用户管理文件,默认是umconfig.txt。定义USER_MANAGEMENT_SUPPORT宏并配置好这个文件基本就可以了。

 

umconfig.txt中有用户信息表,用户组信息表,网页访问限制表三个部分。

 

某个网页需要通过用户限制访问就需要将网页的uri定义在访问的限制表中。没有限制就可以任意访问。

 

我表达能力不好,贴个文件一行行解释吧。

 

umconfig.txt 内容如下:

 

TABLE=users    用户信息表开始
ROW=0         这行不能少,一个用户信息 的开始
name=admin   用户名admin
password=Uz    我的密码123456
group=Administrator    属于Administrator用户组
prot=1   为1表示这个用户受保护不能被删除,0表示可以删除
disable=0    为0表示已经使能了,如果是1用户就禁止了
ROW=1
name=user
password=Uz
group=Guest
prot=0
disable=0
TABLE=groups     用户组信息表
ROW=0      开始一个用户组的信息
name=Administrator   用户组的名字
priv=4   用户组的访问权限,可以是0,1,2,4分别代表AM_NONE,AM_READ,AM_WRITE,AM_ADMIN.这之间没有权限大小之分。
method=3   密码认证方法,可以是0,1,2,3。0什么你都没权访问,1什么你都有权限。2密码与用户名简单加密传输,3密码和用户名经过更安全的加密。
prot=1   一样的用户组不能删除
disable=0   启用了
ROW=1
name=Guest
priv=1
method=3
prot=1
disable=0
TABLE=access
ROW=0
name=/home.htm  这个网页有认证的要求
method=3
secure=0
group=Guest    Guest用户组才能访问/home.htm网页,administrator用户组不能访问。特别说明:只有属于这个用户组的用户才能访问这个网页,其他一改不能访问。需要改变这个行为的需要自己改源代码。goahead先查找网页限制相关联的group的method属性,由他的group的method属性决定访问权限。如果没有定义group=Guest这一行就根据自身的method属性决定访问权限。
ROW=1
name=/player.htm
method=3
secure=0
group=Guest
ROW=2
name=/en/    对一个目录中所有内容(包括子目录中的内容)进行限制。注意后面一定要加‘/’字符。
method=3
secure=0
group=Administrator
ROW=3
name=/cn/
method=3
secure=0
group=Administrator

就这些吧,可能还有错误的地方。如果你发现了,请指正。

 

要了解goahead的行为还是需要认真分析原代码。

 

如有转载请指明作者和出处。

pan139com@163.com

 

原创粉丝点击