5 Commits

Author SHA1 Message Date
dependabot[bot]
67cb36c26f chore(deps): bump clap from 4.5.45 to 4.5.49
Bumps [clap](https://github.com/clap-rs/clap) from 4.5.45 to 4.5.49.
- [Release notes](https://github.com/clap-rs/clap/releases)
- [Changelog](https://github.com/clap-rs/clap/blob/master/CHANGELOG.md)
- [Commits](https://github.com/clap-rs/clap/compare/clap_complete-v4.5.45...clap_complete-v4.5.49)

---
updated-dependencies:
- dependency-name: clap
  dependency-version: 4.5.49
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-10-14 08:03:22 +00:00
Heng lu
7f7da10b1b fix(docker): fix parameter parsing and signal handling in phantun.sh (#235)
All checks were successful
Docker image build / build (push) Successful in 5m48s
Rust / build (push) Successful in 4m6s
- Fix awk delimiter parsing for --tun, --tun-peer, --tun-peer6 arguments
- Change shebang from sh to bash to fix signal trap handling
- Add missing dependencies (iproute2, iptables, procps) to Dockerfile
2025-10-06 09:29:18 -07:00
WGH
9d74a6bfeb style(phantun): calculate cmsg buffer size statically
Closes #178 and supersedes #225.
2025-10-06 09:25:21 -07:00
dependabot[bot]
9bdfd76819 chore(deps): bump actions/checkout from 4 to 5
Some checks failed
Docker image build / build (push) Has been cancelled
Rust / build (push) Has been cancelled
Bumps [actions/checkout](https://github.com/actions/checkout) from 4 to 5.
- [Release notes](https://github.com/actions/checkout/releases)
- [Changelog](https://github.com/actions/checkout/blob/main/CHANGELOG.md)
- [Commits](https://github.com/actions/checkout/compare/v4...v5)

---
updated-dependencies:
- dependency-name: actions/checkout
  dependency-version: '5'
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-08-25 22:39:04 +08:00
Datong Sun
d1c18c64f3 docs(readme): bump latest release to 0.8.1
Some checks failed
Docker image build / build (push) Has been cancelled
Rust / build (push) Has been cancelled
2025-08-22 21:02:30 -07:00
6 changed files with 24 additions and 19 deletions

View File

@@ -64,7 +64,7 @@ jobs:
- mipsel-unknown-linux-musl - mipsel-unknown-linux-musl
steps: steps:
- uses: actions/checkout@v4 - uses: actions/checkout@v5
- uses: actions-rs/toolchain@v1 - uses: actions-rs/toolchain@v1
with: with:
toolchain: nightly toolchain: nightly

8
Cargo.lock generated
View File

@@ -135,18 +135,18 @@ checksum = "613afe47fcd5fac7ccf1db93babcb082c5994d996f20b8b159f2ad1658eb5724"
[[package]] [[package]]
name = "clap" name = "clap"
version = "4.5.45" version = "4.5.49"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "1fc0e74a703892159f5ae7d3aac52c8e6c392f5ae5f359c70b5881d60aaac318" checksum = "f4512b90fa68d3a9932cea5184017c5d200f5921df706d45e853537dea51508f"
dependencies = [ dependencies = [
"clap_builder", "clap_builder",
] ]
[[package]] [[package]]
name = "clap_builder" name = "clap_builder"
version = "4.5.44" version = "4.5.49"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "b3e7f4214277f3c7aa526a59dd3fbe306a370daee1f8b7b8c987069cd8e888a8" checksum = "0025e98baa12e766c67ba13ff4695a887a1eba19569aad00a472546795bd6730"
dependencies = [ dependencies = [
"anstream", "anstream",
"anstyle", "anstyle",

View File

@@ -5,8 +5,7 @@ A lightweight and fast UDP to TCP obfuscator.
![GitHub Workflow Status](https://img.shields.io/github/actions/workflow/status/dndx/phantun/rust.yml) ![GitHub Workflow Status](https://img.shields.io/github/actions/workflow/status/dndx/phantun/rust.yml)
![docs.rs](https://img.shields.io/docsrs/fake-tcp) ![docs.rs](https://img.shields.io/docsrs/fake-tcp)
Table of Contents # Table of Contents
=================
* [Phantun](#phantun) * [Phantun](#phantun)
* [Latest release](#latest-release) * [Latest release](#latest-release)
@@ -35,7 +34,7 @@ Table of Contents
# Latest release # Latest release
[v0.8.0](https://github.com/dndx/phantun/releases/tag/v0.8.0) [v0.8.1](https://github.com/dndx/phantun/releases/tag/v0.8.1)
<details> <details>
<summary>MIPS architecture support for Phantun</summary> <summary>MIPS architecture support for Phantun</summary>

View File

@@ -25,6 +25,10 @@ FROM debian:latest
COPY --from=builder /usr/local/bin/phantun-server /usr/local/bin/ COPY --from=builder /usr/local/bin/phantun-server /usr/local/bin/
COPY --from=builder /usr/local/bin/phantun-client /usr/local/bin/ COPY --from=builder /usr/local/bin/phantun-client /usr/local/bin/
COPY docker/phantun.sh /usr/local/bin/ COPY docker/phantun.sh /usr/local/bin/
RUN apt-get update && apt-get install -y \
iproute2 \
iptables \
procps
ENV USE_IPTABLES_NFT_BACKEND=0 ENV USE_IPTABLES_NFT_BACKEND=0
ENV RUST_LOG=INFO ENV RUST_LOG=INFO

View File

@@ -1,4 +1,4 @@
#!/bin/sh #!/bin/bash
# alias settings must be global, and must be defined before the function being called with the alias # alias settings must be global, and must be defined before the function being called with the alias
if [ "$USE_IPTABLES_NFT_BACKEND" = 1 ]; then if [ "$USE_IPTABLES_NFT_BACKEND" = 1 ]; then

View File

@@ -62,13 +62,11 @@ pub async fn udp_recv_pktinfo(
buf: &mut [u8], buf: &mut [u8],
) -> std::io::Result<(usize, SocketAddr, IpAddr)> { ) -> std::io::Result<(usize, SocketAddr, IpAddr)> {
sock.async_io(Interest::READABLE, || { sock.async_io(Interest::READABLE, || {
// according to documented struct definition in RFC 3542, const CONTROL_MESSAGE_BUFFER_SIZE: usize = max_usize(
// sizeof(in6_pktinfo) should always be larger than sizeof(in_pktinfo), cmsg_space::<nix::libc::in_pktinfo>(),
// this assert just double checks that. The goal is to avoid cmsg_space::<nix::libc::in6_pktinfo>(),
// a heap allocation with Vec at runtime. );
assert!(cmsg_space::<nix::libc::in6_pktinfo>() >= cmsg_space::<nix::libc::in_pktinfo>()); let mut control_message_buffer = [0u8; CONTROL_MESSAGE_BUFFER_SIZE];
let mut control_message_buffer = [0u8; cmsg_space::<nix::libc::in6_pktinfo>()];
let iov = &mut [std::io::IoSliceMut::new(buf)]; let iov = &mut [std::io::IoSliceMut::new(buf)];
let res = nix::sys::socket::recvmsg::<SockaddrStorage>( let res = nix::sys::socket::recvmsg::<SockaddrStorage>(
sock.as_raw_fd(), sock.as_raw_fd(),
@@ -151,3 +149,7 @@ pub fn assign_ipv6_address(device_name: &str, local: Ipv6Addr, peer: Ipv6Addr) {
.unwrap(); .unwrap();
rtnl.send(&nl_header).unwrap(); rtnl.send(&nl_header).unwrap();
} }
const fn max_usize(a: usize, b: usize) -> usize {
if a > b { a } else { b }
}