Release v1.1.0

This commit is contained in:
thakares committed 2026-09-02 15:19:19 +05:30
1 parent 34227efd2b
commit edc710cbd2
46 files changed
+5324 -190

No files matched your search

+19 -8
View File
@@ -4,7 +4,9 @@ use crate::error::{DbError, Result};
use crate::models::{format_datetime, parse_datetime};
use chrono::Utc;
use ipnet::IpNet;
use nx9_wg_core::types::wireguard::{Interface, WireGuardPrivateKey, WireGuardPublicKey};
use nx9_wg_core::types::wireguard::{
Interface, InterfaceRole, WireGuardPrivateKey, WireGuardPublicKey,
};
use sqlx::{Row, SqlitePool};
use std::str::FromStr;
use uuid::Uuid;
@@ -13,9 +15,10 @@ use uuid::Uuid;
fn row_to_interface(r: &sqlx::sqlite::SqliteRow) -> Result<Interface> {
let id_str: String = r.try_get("id")?;
let name: String = r.try_get("name")?;
let role_str: Option<String> = r.try_get("role").ok();
let private_key_str: String = r.try_get("private_key")?;
let public_key_str: String = r.try_get("public_key")?;
let listen_port_i64: i64 = r.try_get("listen_port")?;
let listen_port_i64: Option<i64> = r.try_get("listen_port")?;
let ipv4_cidr_str: String = r.try_get("ipv4_cidr")?;
let ipv6_cidr_str: Option<String> = r.try_get("ipv6_cidr")?;
let mtu_i64: Option<i64> = r.try_get("mtu")?;
@@ -31,6 +34,11 @@ fn row_to_interface(r: &sqlx::sqlite::SqliteRow) -> Result<Interface> {
let id = Uuid::parse_str(&id_str)
.map_err(|e| DbError::Validation(format!("invalid interface UUID '{id_str}': {e}")))?;
let role = match role_str.as_deref() {
Some("upstream") => InterfaceRole::Upstream,
_ => InterfaceRole::Overlay,
};
let address_v4 = IpNet::from_str(&ipv4_cidr_str)
.map_err(|e| DbError::Validation(format!("invalid ipv4_cidr '{ipv4_cidr_str}': {e}")))?;
@@ -45,9 +53,10 @@ fn row_to_interface(r: &sqlx::sqlite::SqliteRow) -> Result<Interface> {
Ok(Interface {
id,
name,
role,
private_key: WireGuardPrivateKey::new(private_key_str),
public_key: WireGuardPublicKey::new(public_key_str),
listen_port: listen_port_i64 as u16,
listen_port: listen_port_i64.map(|p| p as u16),
address_v4,
address_v6,
mtu: mtu_i64.map(|m| m as u16),
@@ -73,17 +82,18 @@ pub async fn create_interface(pool: &SqlitePool, iface: &Interface) -> Result<()
sqlx::query(
r#"
INSERT INTO interfaces (
id, name, private_key, public_key, listen_port, ipv4_cidr, ipv6_cidr,
id, name, role, private_key, public_key, listen_port, ipv4_cidr, ipv6_cidr,
mtu, dns, enabled, pre_up, post_up, pre_down, post_down, created_at, updated_at
)
VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
"#,
)
.bind(&id_str)
.bind(&iface.name)
.bind(iface.role.as_str())
.bind(iface.private_key.as_str())
.bind(iface.public_key.as_str())
.bind(iface.listen_port as i64)
.bind(iface.listen_port.map(|p| p as i64))
.bind(&ipv4_str)
.bind(ipv6_str)
.bind(iface.mtu.map(|m| m as i64))
@@ -162,16 +172,17 @@ pub async fn update_interface(pool: &SqlitePool, iface: &Interface) -> Result<()
let result = sqlx::query(
r#"
UPDATE interfaces
SET name = ?, private_key = ?, public_key = ?, listen_port = ?,
SET name = ?, role = ?, private_key = ?, public_key = ?, listen_port = ?,
ipv4_cidr = ?, ipv6_cidr = ?, mtu = ?, dns = ?, enabled = ?,
pre_up = ?, post_up = ?, pre_down = ?, post_down = ?, updated_at = ?
WHERE id = ?
"#,
)
.bind(&iface.name)
.bind(iface.role.as_str())
.bind(iface.private_key.as_str())
.bind(iface.public_key.as_str())
.bind(iface.listen_port as i64)
.bind(iface.listen_port.map(|p| p as i64))
.bind(&ipv4_str)
.bind(ipv6_str)
.bind(iface.mtu.map(|m| m as i64))