3 Commits

Author SHA1 Message Date
d1244ca79e Merge pull request 'draft release' (#1) from guochao/port-knocking-proxy-rs:master into master
All checks were successful
Build / build (push) Successful in 3m30s
Reviewed-on: #1
2025-06-30 09:32:49 +08:00
2281a85ecd draft release 2025-06-27 16:32:07 +08:00
82e0cb12b0 handle buffer correctly 2025-06-27 00:12:34 +08:00
2 changed files with 70 additions and 3 deletions

View 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 }}

View File

@@ -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();