feat: config network
This commit is contained in:
parent
bbcfe33fe7
commit
b2c59409b8
|
|
@ -1,7 +1,7 @@
|
||||||
application:
|
application:
|
||||||
port: 8000
|
port: 8000
|
||||||
host: 0.0.0.0
|
host: 0.0.0.0
|
||||||
secret_key: "d8b242c8a47de60e1ebf4e6bb7d3315cdd4b4071919fe1065566f23a354753ae"
|
server_key: ""
|
||||||
database:
|
database:
|
||||||
host: "localhost"
|
host: "localhost"
|
||||||
port: 5432
|
port: 5432
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,11 @@
|
||||||
|
[package]
|
||||||
|
name = "token"
|
||||||
|
version = "0.1.0"
|
||||||
|
edition = "2021"
|
||||||
|
|
||||||
|
# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html
|
||||||
|
|
||||||
|
[dependencies]
|
||||||
|
jsonwebtoken = "8.2.0"
|
||||||
|
jwt = "0.16.0"
|
||||||
|
serde = { version = "1.0", features = ["derive"] }
|
||||||
|
|
@ -0,0 +1,14 @@
|
||||||
|
pub fn add(left: usize, right: usize) -> usize {
|
||||||
|
left + right
|
||||||
|
}
|
||||||
|
|
||||||
|
#[cfg(test)]
|
||||||
|
mod tests {
|
||||||
|
use super::*;
|
||||||
|
|
||||||
|
#[test]
|
||||||
|
fn it_works() {
|
||||||
|
let result = add(2, 2);
|
||||||
|
assert_eq!(result, 4);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -31,7 +31,9 @@ impl Application {
|
||||||
let server = run(
|
let server = run(
|
||||||
listener,
|
listener,
|
||||||
state,
|
state,
|
||||||
config.application.secret_key.clone(),
|
certificate,
|
||||||
|
server_key,
|
||||||
|
// config.application.server_key.clone(),
|
||||||
config.redis_uri.clone(),
|
config.redis_uri.clone(),
|
||||||
)
|
)
|
||||||
.await?;
|
.await?;
|
||||||
|
|
@ -51,10 +53,10 @@ impl Application {
|
||||||
pub async fn run(
|
pub async fn run(
|
||||||
listener: TcpListener,
|
listener: TcpListener,
|
||||||
state: State,
|
state: State,
|
||||||
|
certificate: Secret<String>,
|
||||||
secret_key: Secret<String>,
|
secret_key: Secret<String>,
|
||||||
redis_uri: Secret<String>,
|
redis_uri: Secret<String>,
|
||||||
) -> Result<Server, anyhow::Error> {
|
) -> Result<Server, anyhow::Error> {
|
||||||
let (cert, _server_key) = create_certificate()?;
|
|
||||||
let redis_store = RedisSessionStore::new(redis_uri.expose_secret()).await?;
|
let redis_store = RedisSessionStore::new(redis_uri.expose_secret()).await?;
|
||||||
let server = HttpServer::new(move || {
|
let server = HttpServer::new(move || {
|
||||||
let secret_key = Key::from(secret_key.expose_secret().as_bytes());
|
let secret_key = Key::from(secret_key.expose_secret().as_bytes());
|
||||||
|
|
|
||||||
|
|
@ -1,3 +1,4 @@
|
||||||
|
use crate::self_signed::create_certificate;
|
||||||
use config::{Config as InnerConfig, FileFormat};
|
use config::{Config as InnerConfig, FileFormat};
|
||||||
use secrecy::Secret;
|
use secrecy::Secret;
|
||||||
use serde_aux::field_attributes::deserialize_number_from_string;
|
use serde_aux::field_attributes::deserialize_number_from_string;
|
||||||
|
|
@ -24,7 +25,8 @@ pub struct ApplicationSettings {
|
||||||
#[serde(deserialize_with = "deserialize_number_from_string")]
|
#[serde(deserialize_with = "deserialize_number_from_string")]
|
||||||
pub port: u16,
|
pub port: u16,
|
||||||
pub host: String,
|
pub host: String,
|
||||||
pub secret_key: Secret<String>,
|
pub certificate: Secret<String>,
|
||||||
|
pub server_key: Secret<String>,
|
||||||
}
|
}
|
||||||
|
|
||||||
#[derive(serde::Deserialize, Clone, Debug)]
|
#[derive(serde::Deserialize, Clone, Debug)]
|
||||||
|
|
@ -61,6 +63,7 @@ impl DatabaseSetting {
|
||||||
pub fn get_configuration() -> Result<Config, config::ConfigError> {
|
pub fn get_configuration() -> Result<Config, config::ConfigError> {
|
||||||
let base_path = std::env::current_dir().expect("Failed to determine the current directory");
|
let base_path = std::env::current_dir().expect("Failed to determine the current directory");
|
||||||
let configuration_dir = base_path.join("configuration");
|
let configuration_dir = base_path.join("configuration");
|
||||||
|
let (certificate, server_key) = create_certificate()?;
|
||||||
|
|
||||||
let environment: Environment = std::env::var("APP_ENVIRONMENT")
|
let environment: Environment = std::env::var("APP_ENVIRONMENT")
|
||||||
.unwrap_or_else(|_| "local".into())
|
.unwrap_or_else(|_| "local".into())
|
||||||
|
|
|
||||||
|
|
@ -1,9 +1,10 @@
|
||||||
use rcgen::{Certificate, CertificateParams, KeyPair, RcgenError, SanType};
|
use rcgen::{Certificate, CertificateParams, KeyPair, RcgenError, SanType};
|
||||||
|
use secrecy::Secret;
|
||||||
|
|
||||||
pub const CA_CRT: &str = include_str!("../cert/cert.pem");
|
pub const CA_CRT: &str = include_str!("../cert/cert.pem");
|
||||||
pub const CA_KEY: &str = include_str!("../cert/key.pem");
|
pub const CA_KEY: &str = include_str!("../cert/key.pem");
|
||||||
|
|
||||||
pub fn create_certificate() -> Result<(String, String), RcgenError> {
|
pub fn create_certificate() -> Result<(Secret<String>, Secret<String>), RcgenError> {
|
||||||
let key = KeyPair::from_pem(CA_KEY)?;
|
let key = KeyPair::from_pem(CA_KEY)?;
|
||||||
let params = CertificateParams::from_ca_cert_pem(CA_CRT, key)?;
|
let params = CertificateParams::from_ca_cert_pem(CA_CRT, key)?;
|
||||||
let ca_cert = Certificate::from_params(params)?;
|
let ca_cert = Certificate::from_params(params)?;
|
||||||
|
|
@ -23,7 +24,7 @@ pub fn create_certificate() -> Result<(String, String), RcgenError> {
|
||||||
// 1. localhost
|
// 1. localhost
|
||||||
// 2. 127.0.0.1
|
// 2. 127.0.0.1
|
||||||
let gen_cert = Certificate::from_params(params)?;
|
let gen_cert = Certificate::from_params(params)?;
|
||||||
let server_crt = gen_cert.serialize_pem_with_signer(&ca_cert)?;
|
let server_crt = Secret::new(gen_cert.serialize_pem_with_signer(&ca_cert)?);
|
||||||
let server_key = gen_cert.serialize_private_key_pem();
|
let server_key = Secret::new(gen_cert.serialize_private_key_pem());
|
||||||
Ok((server_crt, server_key))
|
Ok((server_crt, server_key))
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue