mirror of
https://github.com/house-of-vanity/khm.git
synced 2025-08-21 14:27:14 +00:00
Bump version. linting. improved logging.
This commit is contained in:
2
Cargo.lock
generated
2
Cargo.lock
generated
@@ -1053,7 +1053,7 @@ dependencies = [
|
|||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "khm"
|
name = "khm"
|
||||||
version = "0.1.0"
|
version = "0.2.0"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"actix-web",
|
"actix-web",
|
||||||
"chrono",
|
"chrono",
|
||||||
|
@@ -1,6 +1,6 @@
|
|||||||
[package]
|
[package]
|
||||||
name = "khm"
|
name = "khm"
|
||||||
version = "0.1.0"
|
version = "0.2.0"
|
||||||
edition = "2021"
|
edition = "2021"
|
||||||
authors = ["AB <ab@hexor.cy>"]
|
authors = ["AB <ab@hexor.cy>"]
|
||||||
|
|
||||||
|
@@ -1,9 +1,9 @@
|
|||||||
|
use log::{error, info};
|
||||||
use reqwest::Client;
|
use reqwest::Client;
|
||||||
use serde::{Deserialize, Serialize};
|
use serde::{Deserialize, Serialize};
|
||||||
use std::fs::File;
|
use std::fs::File;
|
||||||
use std::io::{self, BufRead, Write};
|
use std::io::{self, BufRead, Write};
|
||||||
use std::path::Path;
|
use std::path::Path;
|
||||||
use log::{info, error};
|
|
||||||
|
|
||||||
#[derive(Serialize, Deserialize, Clone, Debug)]
|
#[derive(Serialize, Deserialize, Clone, Debug)]
|
||||||
struct SshKey {
|
struct SshKey {
|
||||||
@@ -26,7 +26,7 @@ fn read_known_hosts(file_path: &str) -> io::Result<Vec<SshKey>> {
|
|||||||
let public_key = parts[1..].join(" ");
|
let public_key = parts[1..].join(" ");
|
||||||
keys.push(SshKey { server, public_key });
|
keys.push(SshKey { server, public_key });
|
||||||
}
|
}
|
||||||
},
|
}
|
||||||
Err(e) => {
|
Err(e) => {
|
||||||
error!("Error reading line from known_hosts file: {}", e);
|
error!("Error reading line from known_hosts file: {}", e);
|
||||||
}
|
}
|
||||||
|
@@ -3,7 +3,7 @@ mod server;
|
|||||||
|
|
||||||
use clap::Parser;
|
use clap::Parser;
|
||||||
use env_logger;
|
use env_logger;
|
||||||
use log::{info, error};
|
use log::{error, info};
|
||||||
|
|
||||||
/// This application manages SSH keys and flows, either as a server or client.
|
/// This application manages SSH keys and flows, either as a server or client.
|
||||||
/// In server mode, it stores keys and flows in a PostgreSQL database.
|
/// In server mode, it stores keys and flows in a PostgreSQL database.
|
||||||
@@ -114,7 +114,6 @@ async fn main() -> std::io::Result<()> {
|
|||||||
|
|
||||||
let args = Args::parse();
|
let args = Args::parse();
|
||||||
|
|
||||||
|
|
||||||
if args.server {
|
if args.server {
|
||||||
info!("Running in server mode");
|
info!("Running in server mode");
|
||||||
if let Err(e) = server::run_server(args).await {
|
if let Err(e) = server::run_server(args).await {
|
||||||
|
@@ -1,5 +1,5 @@
|
|||||||
use actix_web::{web, App, HttpResponse, HttpServer, Responder};
|
use actix_web::{web, App, HttpResponse, HttpServer, Responder};
|
||||||
use log::{info, error};
|
use log::{error, info};
|
||||||
use regex::Regex;
|
use regex::Regex;
|
||||||
use serde::{Deserialize, Serialize};
|
use serde::{Deserialize, Serialize};
|
||||||
use std::collections::HashMap;
|
use std::collections::HashMap;
|
||||||
@@ -23,7 +23,8 @@ pub type Flows = Arc<Mutex<Vec<Flow>>>;
|
|||||||
pub fn is_valid_ssh_key(key: &str) -> bool {
|
pub fn is_valid_ssh_key(key: &str) -> bool {
|
||||||
let rsa_re = Regex::new(r"^ssh-rsa AAAA[0-9A-Za-z+/]+[=]{0,3}( .+)?$").unwrap();
|
let rsa_re = Regex::new(r"^ssh-rsa AAAA[0-9A-Za-z+/]+[=]{0,3}( .+)?$").unwrap();
|
||||||
let dsa_re = Regex::new(r"^ssh-dss AAAA[0-9A-Za-z+/]+[=]{0,3}( .+)?$").unwrap();
|
let dsa_re = Regex::new(r"^ssh-dss AAAA[0-9A-Za-z+/]+[=]{0,3}( .+)?$").unwrap();
|
||||||
let ecdsa_re = Regex::new(r"^ecdsa-sha2-nistp(256|384|521) AAAA[0-9A-Za-z+/]+[=]{0,3}( .+)?$").unwrap();
|
let ecdsa_re =
|
||||||
|
Regex::new(r"^ecdsa-sha2-nistp(256|384|521) AAAA[0-9A-Za-z+/]+[=]{0,3}( .+)?$").unwrap();
|
||||||
let ed25519_re = Regex::new(r"^ssh-ed25519 AAAA[0-9A-Za-z+/]+[=]{0,3}( .+)?$").unwrap();
|
let ed25519_re = Regex::new(r"^ssh-ed25519 AAAA[0-9A-Za-z+/]+[=]{0,3}( .+)?$").unwrap();
|
||||||
|
|
||||||
rsa_re.is_match(key)
|
rsa_re.is_match(key)
|
||||||
@@ -246,7 +247,7 @@ pub async fn run_server(args: crate::Args) -> std::io::Result<()> {
|
|||||||
.route("/{flow_id}/keys", web::get().to(get_keys))
|
.route("/{flow_id}/keys", web::get().to(get_keys))
|
||||||
.route("/{flow_id}/keys", web::post().to(add_keys))
|
.route("/{flow_id}/keys", web::post().to(add_keys))
|
||||||
})
|
})
|
||||||
.bind((args.ip.as_str(), args.port))?
|
.bind((args.ip.as_str(), args.port))?
|
||||||
.run()
|
.run()
|
||||||
.await
|
.await
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user