goahead移植 - 图文
更新时间:2023-12-04 08:35:01 阅读量: 教育文库 文档下载
Goahead 移植
goahead移植
1.下载源码包
goahead-3.4.12-src.tgz https://embedthis.com/goahead/download.html 2.修改Makefile
1)一级目录下的Makefile 第17行将default改为static
2)projects目录中makefile, goahead-linux-static.mk文件 1>PROFILE 变量和CC变量修改为如下
注意CC变量的?要改为: 2>将test.o改为my.o 去掉test目标 删除第75行
给clean增加
生成my.o
目标文件中增加my.o
注释掉536行goahead-test3>关闭goahead对ssl支持 第22,24行
1
Goahead 移植
第33行
注释掉145行3.make
Err:提示找不到mipsel-linux-gcc
解决办法:$vim ~/.bashrc 在最后一行加入
PATH=/opt/crosstool/mipsel-linux/bin/:$PATH 保存退出 执行$. ~/.bashrc 重新make
Err: bash: /opt/crosstool/mipsel-linux/bin/mipsel-linux-gcc: /lib/ld-linux.so.2: bad ELF interpreter: No such file or directory 解决办法:
这是因为我们的执行机是64位,而mipsel-linux是32位 $yum install glibc.i686 解决问题 $make
Err:No rule to make target `myweb/my.c 解决办法:
这是因为我们忘了创建我们自己的my.c, $mkdir myweb $touch myweb/my.c $make
成功make, 可执行文件放置位置为goahead-3.4.12/build/linux-x64-static/bin 4.测试
为了测试方便,我们暂且在PC上进行测试,将goahead-linux-static.mk中CC值改回gcc,重新make;make install; 启动goahead
goahead –v –home /etc/goahead /var/www/goahead/
浏览器输入127.0.0.1出现Congratulations! The server is up and running.
2
Goahead 移植
至此我们的goahead搭建成功。 1)我们测一下goahead的action和jst
Jst回调函数原型为:typedef int (*WebsJstProc)(int jid, Webs *wp, int argc, char **argv)
Action回调函数原型为:1.typedef void(* WebsAction)(Webs *wp); 2.typedef void (*WebsAction)(webs_t wp, char *path, char *query)
网上有第2这种原型,我也亲测过可以使用,当然第1种原型也可以使用,我至今也很纳闷,她是怎么做到函数原型不一样的回调的。但是我还是倾向于使用第1种原型,这个原型是手册里面给的,第2种原型是网上查到的,可能是旧版本使用的原型
注册Jst 函数的方法:websDefineJst(“mytestJst”, mytestJst)
注册Action函数的方法:websDefineJst(“mytestAction”, mytestAction) 写一个简单的myweb/my.c
一个简单的网页test.jst 放入/var/www/goahead/目录
3
Goahead 移植
将注册函数加入goahead中src/gohead.c
重新编译启动goahead,用浏览器打开127.0.0.1/test.jst就可看到效果,在输入框输入123,终端就会打印出来123
我们将test.jst重命名为test.html test.asp 此时将不会识别jst,究其原因在于route.txt配置文件,我们打开/etc/goahead/route.txt 修改36行
此时,重启goahead,重新测试test.asp,test.html 可以发现可以解析jst了 2)我们测一下goahead的用户验证
我们以/为节点,意思就是所有请求都要求进行验证,使用digest验证方式 在goahead-3.4.12/src/utils/gopass.c文件中99行我们可以看到我们验证密码由username,realm,password组成
在goahead-3.4.12/projects/goahead-linux-static-me.h中
我们可以自己设置realm,我们设置为gok.com,这个在输入密码提示框中也会有显示的
接下来我们开始进行route.txt修改
接下来生成auth.txt
$cd goahead-3.4.12/build/linux-x64-static/bin
4
Goahead 移植
$./gopass –c –p 123456 auth.txt gok.com gok manage 我们的用户名为gok 密码为123456
$ vim auth.txt 修改auth.txt
$mv auth.txt ../../../src/ $cd ../../../
至此我们所要做的工作全部完成,接下来就是重新编译安装启动测试了
我们可以看到我们的reaml被显示了出来,输入用户名gok, 密码123456 我们发现错误,检查后发现我们的role的name和abilities重名了,我们将
role的name改为manager user的roles=manage也要相应修改
OK,重新实验,我们发现ok啦
这个时候我们再实验一下我们的jst和action均时效,主要原因是我们在这里的路由规则,有兴趣的可以修改路由规则
5
Goahead 移植
并且在web存放目录下建立admin目录,在其下面增加任何页面,当浏览器访问该admin目录下的文件时才会出现验证,访问其他网页并不出现验证,尤其是我们的jst和action神奇的可以使用啦
这样在我使用的时候就出现了一个问题,我想让访问/进行验证,怎么办?假如我们访问/时访问的默认网页为/home.asp,我的解决办法是在admin目录下建立一个index.html,
index.html
并且在我们的my.c里进行设置将访问/时的默认网页修改到/admin/index.html 在my_register_function函数里面的最开始出增加websSetIndex(\
这样,我们就可以轻松实现访问默认网页也需要验证的问题,并且jst,action不影响工作,其实goahead加密方式还有form方式和basic方式,我也都试过了,basic和digest方式对我们基本一样,form方式和普通form的区别在于action=/goform/*** 和action=/action/login,login函数goahead都已经注册好了的
接下来我们就开始验证一下goahead的文件上传,这个我是在goahead的test里面抠出来的,接下来,我们就具体来看一下
其实,goahead已经将上传文件的函数已经注册完毕,我们其实不需要做什么,实验一下,我们在web目录下建立upload.html
6
Goahead 移植
这个文件是拷贝的goahead-4.3.12/test/web/upload/upload.html并且将action改为我们自己的函数
在my.c里面增加mytestUpload函数并注册,该函数是拷贝gohaed-4.3.12/test/test.c的uploadTest函数并注释掉一部分,注释掉那一部分只是对文件重命名,我们是想验证一下其实这个函数是没有做什么东西的,goahead已经完成了上传文件的全部工作。
我们在桌面上创建一个文件hh,内容为111
7
Goahead 移植
接下来就是验证部分了,ok,开始验证
输入用户名,密码登录,点击browse,选择桌面上创建的文件,send发送,好了,我们出错了,
错误提示是Bad request,ok,再看goahead打印出来的信息,Cannot open document for : /action/mytestUpload 好吧,我知道错哪里了,我们修改完route.txt,验证的uri=/的,所以出错,我们注释掉,重新来 出错,我们再看一下,
我也不知道什么问题了,不完全的边界,完全看不懂嘛,不要重启goahead再试一次,好吧,终于打印出了有用的信息
分析一下,打开src/upload.c文件,我们可以看到打印出错信息的地方
我们在这句话前面打印出wp->uploadTmp,我们发现打印出来的结果是tmp/tmp-0.tmp,这样我们可能找到问题了,没有tmp目录,也就创建不了文件了,我们在/etc/goahead/下创建一个tmp目录重新试一下,
OK,这一次什么都没打出来,表示成功,我们在/etc/goahead/tmp目录下查看是否有上传的文件,oo,竟然没有,怎么回事,同样打开upload.c,搜索一下unlink,运气不错,有一个freeUploadFile文件在文件上传完毕会调用,我们注释掉unlink调用,重新试,果然我们在/etc/goahead/tmp/发现tmp-0.tmp文件,查看一下,内容就是111,没错的。我们试着上传一个大文件提示request too large
8
Goahead 移植
我们再来查一下在哪里限制的文件大小,grep Too . –nr 可以看到http.c中有相似的东西,
可以看到是通过变量ME_GOAHEAD_LIMIT_POST来限制的,我们来修改一下该值
我们看到ME_GOAHEAD_LIMIT_POST变量值才16384,有一个
ME_GOAHEAD_LIMIT_UPLOAD为200m猜想一下这个应该是限制上传文件大小的最大限制了,不管是PUT还是POST方法,我们将POST的值也改为该值,这样我们就可以使用了,赶快试一下,果然成功.
在 PC上试了这么多,在开发板上试着怎么样,我们将CC值改为mipsel-linux-gcc,编译好后,将rout.txt auth.txt goahead 一并移动到开发板上,试一下,因为我之前试过了,所以就不多说 注:
启动goahead
goahead [options] [documents] [[ip][:port] …]
9
Goahead 移植
options:
--background 以后台方式运行 --home directory 指定进程运行目录 --route routefile 指定routefile路径 --version 显示版本号
Documents:
指定html文件路径
[ip] [:port] 指定绑定的ip地址和端口号
比如只是想绑定端口号8080可以
goahead -v --home /etc/goahead /var/www/goahead 8080 这样就好了
10
正在阅读:
goahead移植 - 图文12-04
第八章 小学生箱庭基本特征研究09-29
公司债务股东怎么承担,公司破产债务怎么办04-30
学业水平考试英语口语话题表达练习题04-30
关于印发《安徽省专业技术资格评审实施细则(试行)》的通知10-13
网络创业理论与实践期末考试(2018年度81219)10-10
关于重新印发请假制度考勤制度的通知09-30
高考地理一轮(全国通用版)训练题:课时提升作业 二十二03-07
一年级下册生字(米子格)09-05
english美文背诵08-26
- exercise2
- 铅锌矿详查地质设计 - 图文
- 厨余垃圾、餐厨垃圾堆肥系统设计方案
- 陈明珠开题报告
- 化工原理精选例题
- 政府形象宣传册营销案例
- 小学一至三年级语文阅读专项练习题
- 2014.民诉 期末考试 复习题
- 巅峰智业 - 做好顶层设计对建设城市的重要意义
- (三起)冀教版三年级英语上册Unit4 Lesson24练习题及答案
- 2017年实心轮胎现状及发展趋势分析(目录)
- 基于GIS的农用地定级技术研究定稿
- 2017-2022年中国医疗保健市场调查与市场前景预测报告(目录) - 图文
- 作业
- OFDM技术仿真(MATLAB代码) - 图文
- Android工程师笔试题及答案
- 生命密码联合密码
- 空间地上权若干法律问题探究
- 江苏学业水平测试《机械基础》模拟试题
- 选课走班实施方案
- 移植
- goahead
- 图文
- FDA以药动学为终点评价指标的仿制药生物等效性研究指导原则(草案)介绍
- 自动控制球杆系统实验指导书-2016
- 管理经济学复习资料 - 图文
- 中登证券质押登记业务指南 - 上海
- 2011年高考全国卷2理科数学试题及答案(已排版)
- 包袱纸书写格式
- 国考行测常识40000题184
- 第五章 时间序列的模型识别
- 大工19春探讨21世纪企业人力资源管理(模板)
- 高中化学竞赛模拟试题(七)
- 外教史习题第14、15、16、17章
- 各种皮试液配制法
- ZARA市场营销环境分析1
- 物业工程主管转正述职报告
- 经典国学知识专题讲座(练习题)(123)
- 马志明相声段子·大保镖
- 少先队国庆节活动方案
- 郑州宇通集团有限公司
- 浅谈森林病虫害防治管理工作
- 《皮亚杰的儿童发展观及其教育启示》读书心得