Although I've written a SSL management and distribution system, rcert, but the here immediately goes another problem: I still need to manually deploy the rcert, which is kind of frustrating. Or I can write some shell scripts to make this process automatically. Let's solve this (possibly) once and for all.
I built a handy (perhaps also buggy) software distribution system this time. This main purpose is of course to ease out the deployment process. And I'd like to call it OwO, because this emoji looks so nice and cool. Moreover, it should be able to deploy itself once I have the initial instance ran.
Basically, it will serve these pages and API endpoints below (let's take owo.ryza.moe as its domain)
| URL | Category | Auth | Notes | |
| Home | https://owo.ryza.moe/ | Webpage | No | |
| Admin | https://owo.ryza.moe/admin | Webpage | Yes | admin is customisable |
| Sign In | https://owo.ryza.moe/signin | Webpage API | No | |
| Sign Out | https://owo.ryza.moe/signout | Webpage API | No | |
| Compile-time Static Files | https://owo.ryza.moe/static/{filename} | Web Resources | Yes | These files are compiled into the final binary |
| Feature Image | https://owo.ryza.moe/feature_img/{img} | Web Resources | No | Feature Image for Specific Project |
| Install Script | https://owo.ryza.moe/{name}/install.sh | Web Resources | No | Install Script for Specific Project |
| Project Resources | https://owo.ryza.moe/{name}/resources/{resource_name} | Web Resources | No | Resources for Specific Project |
| Update Project Info | https://owo.ryza.moe/update-dist-info | API Endpoint | Yes | Post |
| Upload Project Resource | https://owo.ryza.moe/upload-dist-resource | API Endpoint | Yes | Post, one file per request |
| Get Raw Install Script | https://owo.ryza.moe/raw-script | API Endpoint | Yes | Get |
| Remove Project for Version | https://owo.ryza.moe/remove-dist | API Endpoint | Yes | Post |
| Remove Project Resource | https://owo.ryza.moe/remove-dist-resource | API Endpoint | Yes | Post |
Once I had decided these rules, the next question was which http server crate should I use. I considered hyper, but let's try something else this time. Thus OwO uses actix_web as its http server framework.
Apparently, OwO will output dynamic webpages, so it needs an HTML template engine. After some googling, I chose ructe as the template engine to render dynamic webpages for OwO.
And here is the result of 3 days' coding!

You can visit the live instance of my OwO at https://owo.ryza.moe. And the code goes here: https://magic.ryza.moe/ryza/owo