build: 👷 Container
This commit is contained in:
parent
942e1c4698
commit
b28908ec56
7 changed files with 56 additions and 18 deletions
7
Dockerfile
Normal file
7
Dockerfile
Normal file
|
@ -0,0 +1,7 @@
|
|||
FROM rust:1.77.2-alpine3.18
|
||||
COPY Cargo.toml ./
|
||||
COPY src ./src
|
||||
RUN apk update
|
||||
RUN apk add musl-dev
|
||||
RUN cargo build --release
|
||||
CMD [ "/target/release/acapair_follow_ban_api"]
|
|
@ -1,9 +1,14 @@
|
|||
[](https://github.com/Acapair/acapair_follow_ban_api/actions/workflows/rust.yml)
|
||||
# Acapair Follow Ban API
|
||||
|
||||
>: means they are variable.
|
||||
Container Start Config:
|
||||
|
||||
>podman run --rm --net host -v ABSOLUTE_PATH_FROM_HOST:/configs:z -v ABSOLUTE_PATH_FROM_HOST:/certificates:z localhost/acapair_follow_ban_api:latest
|
||||
|
||||
|
||||
## Exposed URLs
|
||||
>: means they are variable.
|
||||
|
||||
Alive Ping(get): "/"
|
||||
|
||||
Create User(post): "/:username"
|
||||
|
|
|
@ -2,4 +2,4 @@ address=0.0.0.0:5000
|
|||
username=root
|
||||
password=root
|
||||
namespace=acapair
|
||||
database=acapair
|
||||
database=acapair
|
2
configs/server_config.txt
Normal file
2
configs/server_config.txt
Normal file
|
@ -0,0 +1,2 @@
|
|||
ip_address=127.0.0.1
|
||||
port=3434
|
|
@ -1,3 +1,5 @@
|
|||
use std::net::IpAddr;
|
||||
|
||||
use serde::{Deserialize, Serialize};
|
||||
use surrealdb::{
|
||||
engine::remote::ws::Client,
|
||||
|
@ -19,6 +21,12 @@ pub struct DataBaseConfig {
|
|||
pub database: String,
|
||||
}
|
||||
|
||||
#[derive(Debug, Clone)]
|
||||
pub struct ServerConfig {
|
||||
pub ip_address: IpAddr,
|
||||
pub port: u16,
|
||||
}
|
||||
|
||||
#[derive(Debug, Clone)]
|
||||
pub struct AppState {
|
||||
pub db: Surreal<Client>,
|
||||
|
|
22
src/main.rs
22
src/main.rs
|
@ -1,26 +1,17 @@
|
|||
use acapair_follow_ban_api::{
|
||||
db::db_operations::connect,
|
||||
routing,
|
||||
utils::{database_config, tls_config},
|
||||
utils::{database_config, server_config, tls_config},
|
||||
AppState,
|
||||
};
|
||||
use std::{env, net::SocketAddr};
|
||||
|
||||
fn take_args() -> String {
|
||||
let mut bind_address: String = String::new();
|
||||
for element in env::args() {
|
||||
bind_address = element;
|
||||
}
|
||||
println!("\n\n\tOn Air -> https://{}\n\n", bind_address);
|
||||
bind_address
|
||||
}
|
||||
use std::net::SocketAddr;
|
||||
|
||||
#[tokio::main]
|
||||
async fn main() {
|
||||
println!("Hello, world!");
|
||||
let tls_config = tls_config().await;
|
||||
let database_config = database_config().await;
|
||||
|
||||
let server_config = server_config().await;
|
||||
println!("{:#?}", database_config);
|
||||
|
||||
let state = AppState {
|
||||
|
@ -28,8 +19,11 @@ async fn main() {
|
|||
};
|
||||
|
||||
let app = routing::routing(axum::extract::State(state)).await;
|
||||
let addr = take_args().parse::<SocketAddr>().unwrap();
|
||||
|
||||
let addr = SocketAddr::new(server_config.ip_address, server_config.port);
|
||||
println!(
|
||||
"\n\n\tOn Air -> https://{}\n\n",
|
||||
format!("{}:{}", server_config.ip_address, server_config.port)
|
||||
);
|
||||
axum_server::bind_rustls(addr, tls_config)
|
||||
.serve(app.into_make_service())
|
||||
.await
|
||||
|
|
26
src/utils.rs
26
src/utils.rs
|
@ -1,7 +1,7 @@
|
|||
use axum_server::tls_rustls::RustlsConfig;
|
||||
use tokio::{fs::File, io::AsyncReadExt};
|
||||
|
||||
use crate::DataBaseConfig;
|
||||
use crate::{DataBaseConfig, ServerConfig};
|
||||
|
||||
pub async fn tls_config() -> RustlsConfig {
|
||||
RustlsConfig::from_pem_file("certificates/fullchain.pem", "certificates/privkey.pem")
|
||||
|
@ -10,7 +10,7 @@ pub async fn tls_config() -> RustlsConfig {
|
|||
}
|
||||
|
||||
pub async fn database_config() -> DataBaseConfig {
|
||||
let mut config_file = File::open("configs/databaseconfig").await.unwrap();
|
||||
let mut config_file = File::open("configs/database_config.txt").await.unwrap();
|
||||
let mut config_unparsed = String::new();
|
||||
config_file
|
||||
.read_to_string(&mut config_unparsed)
|
||||
|
@ -33,3 +33,25 @@ pub async fn database_config() -> DataBaseConfig {
|
|||
database: configs_cleaned[4].to_string(),
|
||||
}
|
||||
}
|
||||
|
||||
pub async fn server_config() -> ServerConfig {
|
||||
let mut config_file = File::open("configs/server_config.txt").await.unwrap();
|
||||
let mut config_unparsed = String::new();
|
||||
config_file
|
||||
.read_to_string(&mut config_unparsed)
|
||||
.await
|
||||
.unwrap();
|
||||
|
||||
let configs_parsed: Vec<&str> = config_unparsed.split_terminator('\n').collect();
|
||||
let mut configs_cleaned: Vec<&str> = vec![];
|
||||
|
||||
for element in configs_parsed {
|
||||
let dirty: Vec<&str> = element.split('=').collect();
|
||||
configs_cleaned.push(dirty[1]);
|
||||
}
|
||||
|
||||
ServerConfig {
|
||||
ip_address: configs_cleaned[0].parse().unwrap(),
|
||||
port: configs_cleaned[1].parse().unwrap(),
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue