• Home
Name Date Size #Lines LOC

..--

config/12-May-2024-2323

controllers/12-May-2024-154111

dto/12-May-2024-6528

untils/12-May-2024-516409

.gitignoreD12-May-202410 KiB562444

CMakeLists.txtD12-May-20242.2 KiB6353

README.mdD12-May-20242.6 KiB4138

config.jsonD12-May-2024346 1616

main.cppD12-May-2024993 3116

README.md

1# OTAServer
2本程序为windows下OpenHarmony的OTA更新服务器,用于结合系统更新app实现在线OTA更新,由于先前使用mongoose实现的OTA更新服务器效能很差,单设备更新时会随机出现下载卡顿的情况,因此使用drogon库进行重构此项目。与mongoose库简单的架构相比,drogon网络层使用基于epoll(macOS/FreeBSD下是kqueue)的非阻塞IO框架,提供高并发、高性能的网络IO,同时Drogon也是一个跨平台框架,支持Linux,也支持macOS、FreeBSD,OpenBSD,HaikuOS,和Windows。实测性能也更好。
3## 实现功能
4### 文件上传
5![1.png](../figures/1.png)
6通过浏览器访问服务器的ip地址和端口,会进入上传页面,在此页面将更新包拖拽到上传框,然后填写更新包的相关信息,点击上传。服务器会自动计算更新包的sha256sum值和大小,url,结合上传信息生成serverInfo.json。以供系统更新app获取版本更新信息。
7### 文件下载
8服务器提供了下载功能,当系统更新app根据版本更新信息的url字段访问服务器时,会触发文件下载功能。
9示例:通过浏览器访问/api/download/update.zip,会下载服务器uploads目录下的update.zip文件
10### 配置文件
11服务器提供了读取配置文件的功能,在服务器目录下放置一个config.json配置文件,修改配置时不再需要重新编译服务器源码,config.json的示例如下
12```json
13{
14    "listeners": [
15        {
16            "address": "0.0.0.0",
17            "port": 80,
18            "https": false
19        }
20    ],
21    "app": {
22        "number_of_threads": 4,
23        "document_root": "./static",
24        "home_page": "index.html",
25        "upload_path": "../uploads",
26        "client_max_body_size": "1G"
27    }
28}
29```
30## 编译安装
31本程序基于drogon框架编写,编译时需要提前编译drogon并安装至系统中,编译过程可参考 [drogon的官方文档](https://github.com/drogonframework/drogon/wiki/CHN-02-%E5%AE%89%E8%A3%85#%E5%AE%89%E8%A3%85drogon),然后在源码目录输入
32>cmake -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=[安装目录] ..
33
34会在build目录下生成makefile(windows默认是build.ninja),然后在build目录下执行
35> make&& make install
36
37windows下则是
38> ninja
39> ninja install
40
41若执行完成,再参照[前端](../front/README.md)的编译指示编译,将编译出来的dist文件夹的内容放入服务器目录的static文件夹,再将源码目录的config.json,uploads,config文件夹复制到服务器目录下,然后运行webserver即可