Fix up the output and release a new version.

This commit is contained in:
Dorian 2023-01-13 09:56:06 -05:00
parent 3c34cc05b9
commit fbcb0e4562
4 changed files with 56 additions and 11 deletions

View File

@ -1,6 +1,6 @@
[package]
name = "mirror-server"
version = "0.1.0"
version = "0.2.0"
edition = "2021"
authors = ["Dorian Pula <dorian.pula@amber-penguin-software.ca>"]
description = "A simple server for mirror HTTP requests for testing."
@ -17,4 +17,5 @@ section = "web"
[dependencies]
actix-web = "4"
clap = { version = "4.0", features = ["derive"] }
serde = { version = "1.0", features = ["derive"] }

View File

@ -12,3 +12,10 @@ A simple server for mirroring HTTP requests for testing.
* Install cargo-deb: `cargo install cargo-deb`
* Create the DEB package: `cargo deb`
## Install
Download the DEB file, and install it:
```bash
curl https://code.birch-tree.net/api/packages/dorian/generic/mirror-server/0.2.0/mirror-server_0.2.0_amd64.deb && sudo dpkg -i mirror-server-0.2.0_amd64.deb
```

22
publish-deb.sh Executable file
View File

@ -0,0 +1,22 @@
#!/usr/bin/env bash
read -r -p "Username: " USERNAME
read -r -s -p "Password: " PASSWORD
_pkg_name=mirror-server
_pkg_version=0.2.0
_deb_file="${_pkg_name}_${_pkg_version}_amd64.deb"
_deb_path="target/debian"
_gitea_server="code.birch-tree.net"
if [[ ! -f "${_deb_path}/${_deb_file}" ]];
then
echo "Run cargo deb first!"
exit 1
fi
curl --user "${USERNAME}:${PASSWORD}" \
--upload-file "${_deb_path}/${_deb_file}" \
-X PUT \
"https://${_gitea_server}/api/packages/${USERNAME}/generic/${_pkg_name}/${_pkg_version}/${_deb_file}"

View File

@ -1,5 +1,19 @@
use actix_web::{web::Json, App, HttpRequest, HttpServer, Responder};
use clap::Parser;
use serde::Serialize;
use std::collections::BTreeMap;
#[derive(Parser)]
#[command(author, version, about, long_about = None)]
struct CliArgs {
/// Port to run on.
#[arg(short, long, default_value_t = 8080)]
port: u16,
/// Listen to IP mask
#[arg(short, long, default_value = "0.0.0.0")]
ips: String,
}
#[derive(Serialize)]
struct EchoHeader {
@ -12,20 +26,19 @@ struct EchoResponse {
method: String,
path: String,
host: String,
headers: Vec<EchoHeader>,
headers: BTreeMap<String, String>,
}
impl EchoResponse {
fn new(req: &HttpRequest) -> Self {
let req_uri = req.uri();
let headers = req
.headers()
.iter()
.map(|(header_name, header_value)| EchoHeader {
name: header_name.to_string(),
value: header_value.to_str().unwrap_or("ERROR").to_string(),
})
.collect::<Vec<EchoHeader>>();
let mut headers = BTreeMap::new();
for (header_name, header_value) in req.headers().iter() {
headers.insert(
header_name.to_string(),
header_value.to_str().unwrap_or("ERROR").to_string(),
);
}
EchoResponse {
method: req.method().to_string(),
path: req_uri.path().to_string(),
@ -42,8 +55,10 @@ async fn echo_request(request: HttpRequest) -> actix_web::Result<impl Responder>
#[actix_web::main]
async fn main() -> std::io::Result<()> {
let cli_args = CliArgs::parse();
let listen_on = (cli_args.ips, cli_args.port);
HttpServer::new(|| App::new().default_service(actix_web::web::route().to(echo_request)))
.bind(("0.0.0.0", 8080))?
.bind(listen_on)?
.run()
.await
}