053ace6fcc
docs: add README, LICENSE files, and crate/module-level doc comments
...
Add top-level README.md with alpha status warning, quick start guide,
architecture overview, feature flags, transport modes, auth docs, and
Node.js API examples.
Add dual LICENSE-MIT and LICENSE-APACHE files.
Add comprehensive crate-level and module-level rustdoc to all three
crates (wraith-core, wraith, wraith-napi) and all public modules
(transport, client, server, auth, socks5, error). Add doc comments to
key public types (Transport, TransportAcceptor, ConnectOptions,
ClientSession, Server, ServeOptions, KeySource, ServerAuthConfig, etc).
Update Cargo.toml files with workspace-level package metadata
(version, edition, license, repository) and crate descriptions.
2026-06-02 22:03:10 +00:00
373b053820
feat(server): implement serve loop, ServeOptions, graceful shutdown, and integration test
...
- Add ServeOptions struct with all CLI fields (key, authorized_keys, cert_authority,
transport_mode, listen_addr, tls_cert, tls_key, acme_domain, stealth, proxy,
iroh_relay, max_connections_per_ip, max_auth_attempts)
- ServeOptions::key/authorized_keys accept KeySource (file or in-memory)
- Server::new(opts) creates server with bound russh config, auth config, rate limiter
- Server::run(acceptor, endpoint_info) enters accept loop: rate limit check -> create
handler -> russh::server::run_stream()
- Stealth mode integration: protocol detection before run_stream() on TLS connections
- Graceful shutdown: Server::shutdown() sends SSH disconnect, waits drain timeout,
aborts remaining sessions
- SIGTERM/SIGINT handler on unix platforms
- iroh mode: prints endpoint ID on startup
- Integration test: start server, shutdown signal, verify clean exit
- Re-export Server, ServeOptions, ServeTransportMode, ServeError from lib.rs
2026-06-02 11:57:30 +00:00
128affd264
Implement ConnectOptions struct and ClientSession orchestration with graceful shutdown
...
Adds client/connect.rs with ConnectOptions (programmatic API per ADR-011),
ClientSession::new() for SSH session establishment, ClientSession::run()
for SOCKS5 + port forwards + shutdown, and graceful shutdown via
SIGTERM/SIGINT with SSH disconnect and 2s drain timeout.
2026-06-02 11:07:33 +00:00
4e4afd5020
Merge remote-tracking branch 'origin/feat/client/port-forwarding'
...
# Conflicts:
# crates/wraith-core/src/client/mod.rs
# crates/wraith-core/src/lib.rs
2026-06-02 10:46:54 +00:00
7336c0f13c
feat(client): implement port forwarding — local (-L) and remote (-R) forwards
...
- PortForwardSpec parses -L/-R spec strings: bind_addr:bind_port:target_host:target_port
- LocalForwarder binds TcpListener, accepts connections, opens SSH direct-tcpip channel, proxies bidirectionally
- RemoteForwarder sends tcpip_forward request, handles forwarded-tcpip channel opens, connects local target, proxies bidirectionally
- Both forwarders run concurrently with SOCKS5 server via Arc<Mutex<Handle>>
- Connection errors close individual channels without affecting other forwards or SSH session
- ForwardError type added with display and source chaining tests
- Unit tests: spec parsing, local forward bind/accept, remote forward proxy bidirectional
2026-06-02 10:45:43 +00:00
d6a49a07d7
implement ChannelManager with SSH session management, channel ops, and reconnection
2026-06-02 10:44:21 +00:00
dddc6d7a4c
Define Transport trait, TransportAcceptor trait, TransportInfo, and TransportKind types
2026-06-02 09:17:50 +00:00
56d032afdb
Define error types for transport, auth, channel, and config layers
2026-06-02 09:16:23 +00:00
2bc15f1035
Initialize Cargo workspace with wraith-core, wraith, and wraith-napi crates
...
- Workspace root Cargo.toml with three crate members
- wraith-core: library with feature flags (tls, iroh, acme), core deps (russh, tokio, tracing, anyhow, thiserror, tokio-util), module skeleton (transport, client, server, auth, socks5, error)
- wraith: binary crate depending on wraith-core with clap derive
- wraith-napi: cdylib crate depending on wraith-core, napi, napi-derive
- .gitignore for target/ and node_modules/
2026-06-02 09:14:40 +00:00