Compare commits
3 Commits
rewrite-in
...
v20250630
Author | SHA1 | Date | |
---|---|---|---|
d1244ca79e | |||
2281a85ecd | |||
82e0cb12b0 |
37
.gitea/workflows/build.yaml
Normal file
37
.gitea/workflows/build.yaml
Normal file
@@ -0,0 +1,37 @@
|
||||
name: Build
|
||||
|
||||
permissions: {}
|
||||
|
||||
on:
|
||||
push:
|
||||
branches:
|
||||
- master
|
||||
tags:
|
||||
- 'v*'
|
||||
workflow_dispatch: {}
|
||||
|
||||
env:
|
||||
# Disable incremental compilation for faster from-scratch builds
|
||||
CARGO_INCREMENTAL: "0"
|
||||
|
||||
# RUSTUP_DIST_SERVER: "http://${{ vars.CACHE_PROXY }}/rust-static"
|
||||
# RUSTUP_UPDATE_ROOT: "http://${{ vars.CACHE_PROXY }}/rust-static/rustup"
|
||||
|
||||
jobs:
|
||||
build:
|
||||
runs-on: docker
|
||||
steps:
|
||||
- name: Setup debian environment
|
||||
run: test -f /etc/apt/sources.list.d/debian.sources && sed -i "s,deb.debian.org,${{ vars.CACHE_PROXY }}," /etc/apt/sources.list.d/debian.sources || sed -i "s,deb.debian.org,${{ vars.CACHE_PROXY }}," /etc/apt/sources.list ; apt update && apt install -y build-essential mingw-w64 curl && curl -v http://${{ vars.CACHE_PROXY }}/misc/rustup-install.sh | bash -s -- -y --default-toolchain stable-x86_64-unknown-linux-gnu --target x86_64-pc-windows-gnu --profile default; echo $HOME/.cargo/bin >> $GITHUB_PATH
|
||||
- run: pwd; echo $PATH; rustup target add x86_64-unknown-linux-gnu x86_64-pc-windows-gnu
|
||||
- uses: https://gitea.com/actions/checkout@v4
|
||||
- run: cargo build --release --target x86_64-pc-windows-gnu
|
||||
- run: cargo build --release --target x86_64-unknown-linux-gnu
|
||||
- uses: https://gitea.com/actions/gitea-release-action@v1
|
||||
if: startsWith(github.ref, 'refs/tags/')
|
||||
with:
|
||||
files: |-
|
||||
target/x86_64-pc-windows-gnu/release/port-knocking-proxy-rs.exe
|
||||
target/x86_64-unknown-linux-gnu/release/port-knocking-proxy-rs
|
||||
draft: true
|
||||
#token: ${{ secrets.ACTION_RELEASE_TOKEN }}
|
36
src/main.rs
36
src/main.rs
@@ -1,5 +1,5 @@
|
||||
use clap::Parser;
|
||||
use std::io;
|
||||
use std::io::{self, Read, Write};
|
||||
use std::net::{TcpStream, ToSocketAddrs, UdpSocket};
|
||||
use std::str::FromStr;
|
||||
use std::thread;
|
||||
@@ -99,12 +99,42 @@ fn main() -> Result<(), Box<dyn std::error::Error>> {
|
||||
|
||||
let stdin_thread = thread::spawn(move || {
|
||||
let mut stdin = io::stdin();
|
||||
io::copy(&mut stdin, &mut stream_clone).ok();
|
||||
let mut buffer = [0u8; 1024]; // 1KB buffer
|
||||
|
||||
loop {
|
||||
match stdin.read(&mut buffer) {
|
||||
Ok(0) => break, // EOF
|
||||
Ok(n) => {
|
||||
if stream_clone.write_all(&buffer[..n]).is_err() {
|
||||
break;
|
||||
}
|
||||
if stream_clone.flush().is_err() {
|
||||
break;
|
||||
}
|
||||
}
|
||||
Err(_) => break,
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
let stdout_thread = thread::spawn(move || {
|
||||
let mut stdout = io::stdout();
|
||||
io::copy(&mut stream, &mut stdout).ok();
|
||||
let mut buffer = [0u8; 1024]; // 1KB buffer
|
||||
|
||||
loop {
|
||||
match stream.read(&mut buffer) {
|
||||
Ok(0) => break, // EOF
|
||||
Ok(n) => {
|
||||
if stdout.write_all(&buffer[..n]).is_err() {
|
||||
break;
|
||||
}
|
||||
if stdout.flush().is_err() {
|
||||
break;
|
||||
}
|
||||
}
|
||||
Err(_) => break,
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
stdin_thread.join().unwrap();
|
||||
|
Reference in New Issue
Block a user