Skip to content
This repository was archived by the owner on Feb 14, 2025. It is now read-only.

Commit

Permalink
build: 👷 Container
Browse files Browse the repository at this point in the history
  • Loading branch information
Tahinli committed May 31, 2024
1 parent 942e1c4 commit b28908e
Show file tree
Hide file tree
Showing 7 changed files with 56 additions and 18 deletions.
7 changes: 7 additions & 0 deletions Dockerfile
Original file line number Diff line number Diff line change
@@ -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"]
7 changes: 6 additions & 1 deletion README.md
Original file line number Diff line number Diff line change
@@ -1,9 +1,14 @@
[![Rust](https://github.com/Acapair/acapair_follow_ban_api/actions/workflows/rust.yml/badge.svg)](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"
Expand Down
2 changes: 1 addition & 1 deletion configs/databaseconfig → configs/database_config.txt
Original file line number Diff line number Diff line change
Expand Up @@ -2,4 +2,4 @@ address=0.0.0.0:5000
username=root
password=root
namespace=acapair
database=acapair
database=acapair
2 changes: 2 additions & 0 deletions configs/server_config.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
ip_address=127.0.0.1
port=3434
8 changes: 8 additions & 0 deletions src/lib.rs
Original file line number Diff line number Diff line change
@@ -1,3 +1,5 @@
use std::net::IpAddr;

use serde::{Deserialize, Serialize};
use surrealdb::{
engine::remote::ws::Client,
Expand All @@ -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>,
Expand Down
22 changes: 8 additions & 14 deletions src/main.rs
Original file line number Diff line number Diff line change
@@ -1,35 +1,29 @@
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 {
db: connect(&database_config).await.unwrap(),
};

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
Expand Down
26 changes: 24 additions & 2 deletions src/utils.rs
Original file line number Diff line number Diff line change
@@ -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")
Expand All @@ -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)
Expand All @@ -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(),
}
}

0 comments on commit b28908e

Please sign in to comment.