基于Goahead的嵌入式web开发

    技术2025-12-21  6

    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的行为还是需要认真分析原代码。

    最新回复(0)