基于Goahead的嵌入式web开发

https://embedthis.com/goahead/download.html


最近在做一个嵌入式的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的行为还是需要认真分析原代码。

你可能感兴趣的:(web开发,cgi,table,嵌入式,asp)