goahead的cgi是和主程序一起编译的生成一个可执行文件的,cgi越多也越会使goahead越不稳定。goahead
在route.txt文件里定义了redirect的处理方法,如:

route uri=/cgi-bin dir=cgi-bin handler=cgi
route uri=/action handler=action
route uri=/upload methods=PUT|POST handler=upload
route uri=/ extensions=jst handler=jst
route uri=/ methods=OPTIONS|TRACE handler=options
goahead按照顺序依次检查客户端的请求,一旦请求path满足上面的条件后就会自动执行后面的cgi回调函数,当然,这些函数必须在goahead的初始化过程中进行注册,注册过程参看websOpen函数。
文件处理由fileHandler函数处理,具体参看该函数代码
form,action,cgi,Options都可以统归为一类,只要在router.txt中定义好处理方法就行了,注册如下(所有的注册都类似):
websDefineAction("your_actions_handle", your_actions_handle_fun);
goahead实现了一种动态网页技术,也就是按照一定的格式书写网页,goahead读取该格式网页的时候会先将其中对应地点的函数执行一遍再返回给客户端。goahead在此不推荐使用这种方式,这将会导致goahead中注册极其多的处理函数。推荐前端先获取一个空框架的页面,再用ajax的方式和goahead通信来获取初始化数据。

系统注册了处理方法,初始化的过程读取了/etc/config/system中约定好的用户名和密码,
websDefineAction("userlogin", ActionUserLoginProc);
websDefineAction("userlogout", ActionUserLogoutProc);
详细可看源码 auth.c
本人开发的时候,是利用cookie来保护web服务器中指定的一些静态资源,具体在fileHandler的处理中验证浏览器发送过来的cookie,如果通过则返回对应的资源,如果不通过则强制跳转到登录页面。
至于goahead自身的验证机制就没细看了
【智能路由器】系列文章连接
本文来自电脑杂谈,转载请注明本文网址:
http://www.pc-fly.com/a/tongxinshuyu/article-39227-2.html
是要进行民煮选举的
也说明了小米肯关注此事