Compare commits
7 Commits
hotfix/2.0
...
1138dddcb7
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
1138dddcb7 | ||
|
|
e97a15d84b | ||
|
|
9a24fc33c6 | ||
|
|
ce180792db | ||
|
|
cc6dfa9d7f | ||
|
|
2617a082b0 | ||
|
|
4bf3c984eb |
51
.gitea/workflows/basic-pipeline.yml
Normal file
51
.gitea/workflows/basic-pipeline.yml
Normal file
@@ -0,0 +1,51 @@
|
|||||||
|
name: Build project
|
||||||
|
|
||||||
|
# run automatically when a push or pull request is triggered
|
||||||
|
on: [push, pull_request]
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
build:
|
||||||
|
name: quality-and-build
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
env:
|
||||||
|
# Limit to 1 job for my little VPS
|
||||||
|
CARGO_BUILD_JOBS: 1
|
||||||
|
steps:
|
||||||
|
- name: Checkout code
|
||||||
|
uses: actions/checkout@v4
|
||||||
|
|
||||||
|
- name: Install Rust toolchain
|
||||||
|
uses: actions-rust-lang/setup-rust-toolchain@v1
|
||||||
|
with:
|
||||||
|
toolchain: stable
|
||||||
|
components: rustfmt, clippy
|
||||||
|
|
||||||
|
- name: Lint with Clippy
|
||||||
|
run: cargo clippy -- -D warnings
|
||||||
|
|
||||||
|
- name: Run build (Debug mode)
|
||||||
|
run: cargo build
|
||||||
|
|
||||||
|
|
||||||
|
sonarqube:
|
||||||
|
needs: build
|
||||||
|
name: SonarQube Trigger
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
steps:
|
||||||
|
- name: Checkout code
|
||||||
|
uses: actions/checkout@v4
|
||||||
|
with:
|
||||||
|
fetch-depth: 0
|
||||||
|
|
||||||
|
- name: Download SonarQube Scanner
|
||||||
|
run: |
|
||||||
|
curl -sSLo sonar-scanner.zip https://binaries.sonarsource.com/Distribution/sonar-scanner-cli/sonar-scanner-cli-5.0.1.3006-linux.zip
|
||||||
|
unzip sonar-scanner.zip
|
||||||
|
|
||||||
|
- name: Run SonarQube Scan
|
||||||
|
run: |
|
||||||
|
./sonar-scanner-*/bin/sonar-scanner \
|
||||||
|
-Dsonar.projectKey=UdpSocketServer \
|
||||||
|
-Dsonar.sources=. \
|
||||||
|
-Dsonar.host.url=${{ secrets.SONARQUBE_HOST }} \
|
||||||
|
-Dsonar.login=${{ secrets.SONARQUBE_TOKEN }}
|
||||||
@@ -9,7 +9,7 @@ pub struct Forwarding {
|
|||||||
from: String,
|
from: String,
|
||||||
to: String,
|
to: String,
|
||||||
#[serde(rename = "doReverse")]
|
#[serde(rename = "doReverse")]
|
||||||
do_reverse: bool
|
do_reverse: bool,
|
||||||
}
|
}
|
||||||
|
|
||||||
impl Forwarding {
|
impl Forwarding {
|
||||||
@@ -17,25 +17,27 @@ impl Forwarding {
|
|||||||
Forwarding {
|
Forwarding {
|
||||||
from,
|
from,
|
||||||
to,
|
to,
|
||||||
do_reverse
|
do_reverse,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn from_json(json: &Value) -> Forwarding {
|
pub fn from_json(json: &Value) -> Forwarding {
|
||||||
let object_forwarding = json.as_object()
|
let object_forwarding = json.as_object().expect("Error parsing forwarding");
|
||||||
.expect("Error parsing forwarding");
|
|
||||||
|
|
||||||
let from = object_forwarding.get("from")
|
let from = object_forwarding
|
||||||
|
.get("from")
|
||||||
.unwrap()
|
.unwrap()
|
||||||
.as_str()
|
.as_str()
|
||||||
.expect("Error parsing from field");
|
.expect("Error parsing from field");
|
||||||
|
|
||||||
let to = object_forwarding.get("to")
|
let to = object_forwarding
|
||||||
|
.get("to")
|
||||||
.unwrap()
|
.unwrap()
|
||||||
.as_str()
|
.as_str()
|
||||||
.expect("Error parsing to field");
|
.expect("Error parsing to field");
|
||||||
|
|
||||||
let do_reverse = object_forwarding.get("doReverse")
|
let do_reverse = object_forwarding
|
||||||
|
.get("doReverse")
|
||||||
.unwrap()
|
.unwrap()
|
||||||
.as_bool()
|
.as_bool()
|
||||||
.expect("Error parsing doReverse field");
|
.expect("Error parsing doReverse field");
|
||||||
@@ -49,7 +51,7 @@ pub struct Config {
|
|||||||
#[serde(rename = "serverAddr")]
|
#[serde(rename = "serverAddr")]
|
||||||
server_addr: String,
|
server_addr: String,
|
||||||
blacklist: Vec<String>,
|
blacklist: Vec<String>,
|
||||||
forwarding: Vec<Forwarding>
|
forwarding: Vec<Forwarding>,
|
||||||
}
|
}
|
||||||
|
|
||||||
impl Config {
|
impl Config {
|
||||||
@@ -57,23 +59,23 @@ impl Config {
|
|||||||
Config {
|
Config {
|
||||||
server_addr,
|
server_addr,
|
||||||
blacklist,
|
blacklist,
|
||||||
forwarding
|
forwarding,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
fn read_config_file(file_name: String) -> String {
|
fn read_config_file(file_name: String) -> String {
|
||||||
let mut file = File::open(file_name).expect("Error opening config.json file. Go to the readme file and paste the example.");
|
let mut file = File::open(file_name)
|
||||||
|
.expect("Error opening config.json file. Go to the readme file and paste the example.");
|
||||||
let mut buf = String::new();
|
let mut buf = String::new();
|
||||||
file.read_to_string(&mut buf).expect("Error reading config file content.");
|
file.read_to_string(&mut buf)
|
||||||
|
.expect("Error reading config file content.");
|
||||||
buf
|
buf
|
||||||
}
|
}
|
||||||
|
|
||||||
fn parse_buffer(buf: &str) -> serde_json::Map<String, Value> {
|
fn parse_buffer(buf: &str) -> serde_json::Map<String, Value> {
|
||||||
let json: Value = serde_json::from_str(buf)
|
let json: Value = serde_json::from_str(buf).expect("Error parsing config file");
|
||||||
.expect("Error parsing config file");
|
|
||||||
|
|
||||||
let object_data = json.as_object()
|
let object_data = json.as_object().expect("Error parsing config file.");
|
||||||
.expect("Error parsing config file.");
|
|
||||||
|
|
||||||
object_data.clone()
|
object_data.clone()
|
||||||
}
|
}
|
||||||
@@ -92,20 +94,18 @@ impl Config {
|
|||||||
let buf = Config::read_config_file(file_name);
|
let buf = Config::read_config_file(file_name);
|
||||||
let object_data = Self::parse_buffer(&buf);
|
let object_data = Self::parse_buffer(&buf);
|
||||||
|
|
||||||
|
let server_addr = object_data
|
||||||
let server_addr = object_data.get("serverAddr")
|
.get("serverAddr")
|
||||||
.unwrap()
|
.unwrap()
|
||||||
.as_str()
|
.as_str()
|
||||||
.unwrap()
|
.unwrap()
|
||||||
.to_string();
|
.to_string();
|
||||||
|
|
||||||
let blacklist = object_data.get("blacklist")
|
let blacklist = object_data.get("blacklist").unwrap().as_array().unwrap();
|
||||||
.unwrap()
|
|
||||||
.as_array()
|
|
||||||
.unwrap();
|
|
||||||
let str_blacklist = convert_to_vec_string(blacklist);
|
let str_blacklist = convert_to_vec_string(blacklist);
|
||||||
|
|
||||||
let raw_forwarding = object_data.get("forwarding")
|
let raw_forwarding = object_data
|
||||||
|
.get("forwarding")
|
||||||
.unwrap()
|
.unwrap()
|
||||||
.as_array()
|
.as_array()
|
||||||
.expect("Error parsing forwarding.");
|
.expect("Error parsing forwarding.");
|
||||||
@@ -121,9 +121,9 @@ impl Config {
|
|||||||
pub fn is_forwarded(&self, addr: String) -> Option<String> {
|
pub fn is_forwarded(&self, addr: String) -> Option<String> {
|
||||||
for elem_forwarding in &self.forwarding {
|
for elem_forwarding in &self.forwarding {
|
||||||
if elem_forwarding.from == addr {
|
if elem_forwarding.from == addr {
|
||||||
return Some(elem_forwarding.to.clone())
|
return Some(elem_forwarding.to.clone());
|
||||||
} else if elem_forwarding.do_reverse && elem_forwarding.to == addr {
|
} else if elem_forwarding.do_reverse && elem_forwarding.to == addr {
|
||||||
return Some(elem_forwarding.from.clone())
|
return Some(elem_forwarding.from.clone());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
None
|
None
|
||||||
|
|||||||
@@ -1,8 +1,8 @@
|
|||||||
use crate::config::Config;
|
use crate::config::Config;
|
||||||
|
|
||||||
mod config;
|
mod config;
|
||||||
mod utils;
|
|
||||||
mod server;
|
mod server;
|
||||||
|
mod utils;
|
||||||
|
|
||||||
fn main() {
|
fn main() {
|
||||||
let config = Config::from_json("config.json".to_string());
|
let config = Config::from_json("config.json".to_string());
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
use std::net::UdpSocket;
|
|
||||||
use colored::Colorize;
|
|
||||||
use crate::config::Config;
|
use crate::config::Config;
|
||||||
|
use colored::Colorize;
|
||||||
|
use std::net::UdpSocket;
|
||||||
|
|
||||||
pub fn listen(config: &Config) {
|
pub fn listen(config: &Config) {
|
||||||
let serv_config = config;
|
let serv_config = config;
|
||||||
@@ -37,7 +37,12 @@ pub fn listen(config: &Config) {
|
|||||||
.expect("Error forwarding message to another ip.");
|
.expect("Error forwarding message to another ip.");
|
||||||
}
|
}
|
||||||
|
|
||||||
println!("{}-{}: {}", src_addr.to_string().green(), chrono::Local::now(), message);
|
println!(
|
||||||
|
"{}-{}: {}",
|
||||||
|
src_addr.to_string().green(),
|
||||||
|
chrono::Local::now(),
|
||||||
|
message
|
||||||
|
);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user