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,33 +9,35 @@ pub struct Forwarding {
|
||||
from: String,
|
||||
to: String,
|
||||
#[serde(rename = "doReverse")]
|
||||
do_reverse: bool
|
||||
do_reverse: bool,
|
||||
}
|
||||
|
||||
impl Forwarding {
|
||||
pub fn new(from: String, to: String, do_reverse: bool) -> Forwarding {
|
||||
Forwarding{
|
||||
Forwarding {
|
||||
from,
|
||||
to,
|
||||
do_reverse
|
||||
do_reverse,
|
||||
}
|
||||
}
|
||||
|
||||
pub fn from_json(json: &Value) -> Forwarding {
|
||||
let object_forwarding = json.as_object()
|
||||
.expect("Error parsing forwarding");
|
||||
let object_forwarding = json.as_object().expect("Error parsing forwarding");
|
||||
|
||||
let from = object_forwarding.get("from")
|
||||
let from = object_forwarding
|
||||
.get("from")
|
||||
.unwrap()
|
||||
.as_str()
|
||||
.expect("Error parsing from field");
|
||||
|
||||
let to = object_forwarding.get("to")
|
||||
let to = object_forwarding
|
||||
.get("to")
|
||||
.unwrap()
|
||||
.as_str()
|
||||
.expect("Error parsing to field");
|
||||
|
||||
let do_reverse = object_forwarding.get("doReverse")
|
||||
let do_reverse = object_forwarding
|
||||
.get("doReverse")
|
||||
.unwrap()
|
||||
.as_bool()
|
||||
.expect("Error parsing doReverse field");
|
||||
@@ -49,7 +51,7 @@ pub struct Config {
|
||||
#[serde(rename = "serverAddr")]
|
||||
server_addr: String,
|
||||
blacklist: Vec<String>,
|
||||
forwarding: Vec<Forwarding>
|
||||
forwarding: Vec<Forwarding>,
|
||||
}
|
||||
|
||||
impl Config {
|
||||
@@ -57,23 +59,23 @@ impl Config {
|
||||
Config {
|
||||
server_addr,
|
||||
blacklist,
|
||||
forwarding
|
||||
forwarding,
|
||||
}
|
||||
}
|
||||
|
||||
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();
|
||||
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
|
||||
}
|
||||
|
||||
fn parse_buffer(buf: &str) -> serde_json::Map<String, Value> {
|
||||
let json: Value = serde_json::from_str(buf)
|
||||
.expect("Error parsing config file");
|
||||
let json: Value = serde_json::from_str(buf).expect("Error parsing config file");
|
||||
|
||||
let object_data = json.as_object()
|
||||
.expect("Error parsing config file.");
|
||||
let object_data = json.as_object().expect("Error parsing config file.");
|
||||
|
||||
object_data.clone()
|
||||
}
|
||||
@@ -92,20 +94,18 @@ impl Config {
|
||||
let buf = Config::read_config_file(file_name);
|
||||
let object_data = Self::parse_buffer(&buf);
|
||||
|
||||
|
||||
let server_addr = object_data.get("serverAddr")
|
||||
let server_addr = object_data
|
||||
.get("serverAddr")
|
||||
.unwrap()
|
||||
.as_str()
|
||||
.unwrap()
|
||||
.to_string();
|
||||
|
||||
let blacklist = object_data.get("blacklist")
|
||||
.unwrap()
|
||||
.as_array()
|
||||
.unwrap();
|
||||
let blacklist = object_data.get("blacklist").unwrap().as_array().unwrap();
|
||||
let str_blacklist = convert_to_vec_string(blacklist);
|
||||
|
||||
let raw_forwarding = object_data.get("forwarding")
|
||||
let raw_forwarding = object_data
|
||||
.get("forwarding")
|
||||
.unwrap()
|
||||
.as_array()
|
||||
.expect("Error parsing forwarding.");
|
||||
@@ -121,9 +121,9 @@ impl Config {
|
||||
pub fn is_forwarded(&self, addr: String) -> Option<String> {
|
||||
for elem_forwarding in &self.forwarding {
|
||||
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 {
|
||||
return Some(elem_forwarding.from.clone())
|
||||
return Some(elem_forwarding.from.clone());
|
||||
}
|
||||
}
|
||||
None
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
use crate::config::Config;
|
||||
|
||||
mod config;
|
||||
mod utils;
|
||||
mod server;
|
||||
mod utils;
|
||||
|
||||
fn main() {
|
||||
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 colored::Colorize;
|
||||
use std::net::UdpSocket;
|
||||
|
||||
pub fn listen(config: &Config) {
|
||||
let serv_config = config;
|
||||
@@ -37,7 +37,12 @@ pub fn listen(config: &Config) {
|
||||
.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