- 20 Sep, 2025 1 commit
-
-
Stefy Lanza (nextime / spora ) authored
- Added --enc option to wsssht with hex/base64/bin encoding modes - Updated tunnel request messages to include encoding specification - Enhanced wssshc to parse and handle different encoding formats - Added configuration file support for encoding option - Updated documentation, man pages, and changelog - Maintained backward compatibility with hex encoding as default
-
- 19 Sep, 2025 20 commits
-
-
Stefy Lanza (nextime / spora ) authored
- Full WebSocket protocol implementation from scratch (RFC 6455) - SSL/TLS encryption with automatic certificate generation - Client registration and authentication system - Tunnel request processing and forwarding - Terminal/PTY session management - HTTP web interface with embedded assets - Multi-threaded concurrent connection handling - Memory-safe implementation with proper resource management - Compatible with existing wssshc/wsssht clients - Self-contained binary (42KB) vs Python version (10MB+)
-
Stefy Lanza (nextime / spora ) authored
- FIX: Tunnel close forwarding between wssshc, server, and wsssht * Server now properly forwards tunnel_close messages to wsssht * Prevents wsssht processes from hanging after client-initiated closure * Ensures proper cleanup of tunnel resources on all endpoints - FIX: Web terminal JavaScript issues * Fixed FitAddon loading issues by switching to unpkg CDN * Resolved JavaScript variable scoping error (fitAddon undefined) * Added proper error handling for xterm.js library loading failures * Enhanced debug logging for library loading and terminal initialization - FEATURE: Fullscreen terminal support * Added fullscreen toggle button (⛶/⛝) to terminal interface * Cross-browser fullscreen API support (Chrome, Firefox, Safari, IE11) * Automatic terminal resizing when entering/exiting fullscreen mode * Backend synchronization of terminal dimensions during fullscreen changes - FIX: Logo serving path * Updated Flask routes to serve logo files from logos/ directory * Added proper PyInstaller support for bundled logo assets * Fixed favicon.ico and image.jpg serving for both development and frozen executables - DOCS: Updated changelog, README, and documentation * Added version 1.6.2 changelog with comprehensive change details * Updated README with fullscreen feature mention * Enhanced documentation with recent updates section Technical Details: - Server-side tunnel close message routing in websocket.py - JavaScript library management with robust error recovery - Cross-browser fullscreen API implementation - Asset management for both development and production environments
-
Stefy Lanza (nextime / spora ) authored
- Added SIGINT signal handler to wsscp.c for proper signal handling - Modified execute_scp_command() to fork/exec instead of using system() - Added process tracking with scp_pid global variable - Signal handler sends SIGTERM to SCP process when Ctrl+C is received - Added proper cleanup and exit code handling for interrupted transfers - Ensures wsssht (ProxyCommand) gets time to send tunnel_close message - Prevents orphaned processes and ensures clean tunnel closure This resolves the issue where Ctrl+C on wsscp didn't allow the underlying wsssht process to send tunnel_close messages to the server.
-
Stefy Lanza (nextime / spora ) authored
- Replaced counter-based signal handling with flag-based approach - Added sigint_handled flag to prevent multiple signal handler executions - First Ctrl+C: Sets flag and initiates graceful shutdown - Second Ctrl+C: Forces immediate exit with os._exit(1) - Prevents race conditions and multiple signal handler calls - Ensures proper single-signal behavior for graceful shutdown This resolves the issue where a single Ctrl+C was triggering both graceful shutdown and immediate exit messages.
-
Stefy Lanza (nextime / spora ) authored
- Changed logo reference from logos/logo-256.png to image.jpg - Updated main documentation to use the new logo image directly - Maintains backward compatibility with existing logos system for web interface This ensures the README displays the logo correctly using the image.jpg file.
-
Stefy Lanza (nextime / spora ) authored
- Add missing object files to wssshc target in configure.sh - Include libwsssht/control_messages.o and libwsssht/data_messages.o in wssshc linking - Resolve undefined reference errors for: - send_registration_message - send_ping_frame - send_pong_frame - send_tunnel_data_message - send_tunnel_response_message - Update configure.sh to generate correct Makefile with all required dependencies - Ensure wssshc builds successfully with all message functions available This fixes the ld linker errors that were preventing wssshc from building properly.
-
Stefy Lanza (nextime / spora ) authored
- Add informative messages during graceful shutdown indicating what the server is waiting for - Stop cleanup task immediately during shutdown to prevent keepalive timeouts - Send tunnel close messages to ALL tunnels (both client and tool endpoints) during shutdown - Import TUNNEL_CLOSE_MSG constant for proper tunnel closure - Enhanced shutdown sequence with clear progress indicators - Ensure all active connections receive proper shutdown notifications This ensures wssshd provides clear feedback during shutdown and properly closes all tunnels without waiting for keepalive timeouts.
-
Stefy Lanza (nextime / spora ) authored
- Implement double SIGINT (Ctrl+C) detection in wssshd server - First Ctrl+C: Initiates graceful shutdown with cleanup - Second Ctrl+C: Forces immediate exit using os._exit(1) without cleanup - Consistent behavior with wssshc double Ctrl+C handling - Prevents hanging during shutdown when graceful shutdown fails - Maintains backward compatibility with single Ctrl+C graceful shutdown This ensures wssshd can be forcefully terminated if graceful shutdown gets stuck, while still allowing proper cleanup on normal shutdown.
-
Stefy Lanza (nextime / spora ) authored
This commit implements comprehensive improvements to WSSSH tools: ## Graceful Shutdown Implementation - Added SIGINT signal handlers for both wssshc and wsssht - Implemented graceful tunnel close on exit with 3-second timeout - Added double Ctrl+C detection for immediate exit without waiting - Enhanced signal handling throughout both programs - Added tunnel_close messages for all active tunnels before shutdown ## Configuration Reload (SIGHUP) - Implemented SIGHUP signal handling in wssshc for live configuration reload - Added reload_configuration() function to reload services config and password - Reloads password from config files without service restart - Reloads services configuration from /etc/wsssh.d/ directory - Updates connect_to_server() to support dynamic configuration reloading ## Version Information in Messages - Added WSSSH_VERSION define to websocket.h - Updated registration messages to include version field - Updated tunnel_request messages to include version field - Resolved function naming conflicts between wssshc and wsssht ## Build System and Code Organization - Fixed compilation errors and improved code structure - Enhanced error handling and memory management - Improved cross-platform compatibility - Added proper cleanup for all allocated resources ## Files Modified - wsssd/__init__.py, config.py, server.py - Server-side improvements - wssshd.py - Main daemon enhancements - wssshtools/ - Complete C implementation updates - Multiple library files for better modularity All changes maintain backward compatibility while adding new functionality for better service management and configuration handling.
-
Stefy Lanza (nextime / spora ) authored
- Implement SIGHUP signal handler that triggers configuration reload - Add reload_configuration() function to reload services config and password - Reload password from config files when SIGHUP is received - Reload services configuration from service files - Update connect_to_server() to accept services parameters for reload functionality - Add proper cleanup for services in main function This allows wssshc to reload its configuration without restarting: - Services configuration from /etc/wsssh.d/ directory - Password from config files - All changes take effect immediately without service interruption
-
Stefy Lanza (nextime / spora ) authored
- Implement SIGINT signal handler for both wssshc and wsssht - Add graceful shutdown logic that sends tunnel_close messages for active tunnels - Implement 3-second timeout for tunnel close operations to complete - Add double Ctrl+C detection for immediate exit without waiting - Update signal handling throughout both programs to use graceful_shutdown flag This ensures that active tunnels are properly closed when the programs exit, either normally or via Ctrl+C, with a timeout mechanism and fallback for immediate exit on second Ctrl+C.
-
Stefy Lanza (nextime / spora ) authored
- Add WSSSH_VERSION define to websocket.h - Include version field in wssshc registration messages to wssshd - Include version field in wsssht tunnel_request messages - Resolve function naming conflicts between wssshc and wsssht - Update function declarations and calls accordingly This allows for better version compatibility checking and debugging between WSSSH client and server components.
-
Stefy Lanza (nextime / spora ) authored
- Fix tunnel_data debug logging suppression with proper JSON spacing detection - Add high-resolution timing for request_id generation using gettimeofday - Implement complete keep-alive protocol with statistics tracking: * tunnel_keepalive messages with total_bytes and rate_bps * tunnel_keepalive_ack responses * 30-second keep-alive intervals - Add dual-endpoint keep-alive monitoring in wssshd (220s timeout) - Implement 190s timeout mechanism for tunnel cleanup - Add periodic tunnel list debug output in wssshc (every 60 seconds) - Track comprehensive tunnel statistics (bytes sent/received, transfer rates) - Enhanced debug logging with detailed tunnel health information - Proper message forwarding between wssshc
↔ wssshd↔ wsssht - Automatic tunnel closure on keep-alive timeout with cleanup -
Stefy Lanza (nextime / spora ) authored
- Add periodic ping frames to keep WebSocket connections alive (15s interval) - Implement send_ping_frame() function in websocket.c - Fix tunnel request_id generation to ensure unique IDs for recreations - Suppress raw data in tunnel_data debug messages, show size instead - Sanitize both 'Received message' and 'Processing message' debug outputs - Improve tunnel cleanup and state management
-
Stefy Lanza (nextime / spora ) authored
- Update wsssh-tools changelog to version 1.6.1 - Update wsssh-server changelog to version 1.6.1 - Document major code refactoring and documentation updates - Include details about wsssht modularization - Add documentation rewrite information - Maintain proper Debian changelog format
-
Stefy Lanza (nextime / spora ) authored
-
Stefy Lanza (nextime / spora ) authored
- Update project description from WebSocket-based to universal tunneling system - Rewrite README.md with comprehensive features, installation, and examples - Rewrite DOCUMENTATION.md with detailed technical specifications - Update TODO.md with current project status and future enhancements - Ensure all command-line examples are accurate and exclude hidden options - Maintain consistency across all documentation files
-
Stefy Lanza (nextime / spora ) authored
- Update README.md to use 'WSSH' instead of 'WebSocket SSH' in various sections - Update DOCUMENTATION.md to use 'WSSH' instead of 'WebSocket SSH' - Update wssshtools/man/wssshc.1 to use 'WSSH Client' instead of 'WebSocket SSH Client' - Update wssshtools/man/wsssht.1 to use 'WSSH' instead of 'WebSocket SSH' in descriptions - Maintain consistency with the new project branding
-
Stefy Lanza (nextime / spora ) authored
- Create wsssht.init init script by copying and modifying wssshc.init - Add wsssht logrotate script for log management - Create wsssht systemd service file for systemd integration - Implement wsssht-watchdog script for process monitoring and restart - Add /etc/default/wsssht configuration file - Update debian/rules to include wsssht init files in package - Modify debian/postinst to create wsssht user/group and setup init system - Enable both sysv init and systemd service integration - Configure proper permissions and ownership for wsssht daemon
-
Stefy Lanza (nextime / spora ) authored
- Update project name from 'WebSocket SSH' to 'WSSSH:: Warp-Powered Stefy's Spatial Secure Hyperdrive' - Update project description to emphasize evolution as universal tunneling utility - Update README.md, DOCUMENTATION.md, CHANGELOG.md, TODO.md - Update all man pages (wsssh.1, wsscp.1, wssshc.1, wsssht.1) - Update Debian control files for both packages - Update configuration examples and build scripts - Update source code comments in tunnel and client files
-
- 18 Sep, 2025 19 commits
-
-
Stefy Lanza (nextime / spora ) authored
-
Stefy Lanza (nextime / spora ) authored
New wsscp application: - WebSocket SCP wrapper similar to wsssh but for SCP instead of SSH - Uses -P option for port detection (SCP standard) instead of -p - Automatically constructs ProxyCommand for WebSocket tunnels - Supports same command line syntax as regular SCP - Includes automatic port detection from -P option - Full integration with wsssht WebSocket tunnel infrastructure Implementation details: - wsscp.h: Header file with configuration structures and function declarations - wsscp.c: Complete implementation with argument parsing and SCP command generation - Updated configure.sh to build wsscp alongside other tools - Added wsscp.1 man page with comprehensive documentation - Tested functionality with debug mode and argument parsing Features: - Automatic wsssht path detection (PATH or same directory) - Smart port detection: explicit --wssshd-port takes precedence over -P option - Support for all wsssht tunnel options (--tunnel, --tunnel-control, --debug) - Compatible with existing wssshc/wsssht infrastructure - Proper error handling and user-friendly help messages Usage examples: wsscp localfile user@myclient:/remote/path wsscp -P 2222 localfile user@myclient.server.com:/remote/path wsscp --debug --tunnel websocket localfile user@myclient:/remote/path
-
Stefy Lanza (nextime / spora ) authored
wsssh improvements: - Parse SSH arguments for -p option to extract port value - Automatically add --wssshd-port to ProxyCommand when -p is specified and --wssshd-port is not explicitly set - Fix build warnings in find_wsssht_path function - Change debug mode to execute SSH command instead of just printing it wsssht improvements: - Modify pipe mode debug output to use stderr instead of stdout - Prevent debug messages from interfering with piped data streams - All debug output in pipe mode now goes to stderr to avoid contaminating stdin/stdout These changes improve the usability and reliability of both wsssh and wsssht applications, especially when used in pipe mode or with SSH port specifications.
-
Stefy Lanza (nextime / spora ) authored
- Create wsssh.h header file with configuration structures and function declarations - Implement wsssh.c with comprehensive SSH wrapper functionality: * Parse command line arguments (--help, --clientid, --wssshd-host, --wssshd-port, --debug, --tunnel, --tunnel-control) * Parse target string in format: user[@clientid[.wssshd-host[:sshstring]]] * Build ProxyCommand using wsssht --pipe with appropriate options * Find wsssht in PATH or same directory as wsssh * Construct and execute SSH command with ProxyCommand * Debug mode shows constructed command without executing - Add wsssh to build system (configure.sh and Makefile) - Update debian/control to include wsssh in package description - Create comprehensive man page (man/wsssh.1) with usage examples - Tested functionality with various command line options wsssh provides a convenient wrapper around SSH that automatically sets up WebSocket tunneling through wsssht, making it easy to use SSH with WebSocket relays without manual ProxyCommand configuration.
-
Stefy Lanza (nextime / spora ) authored
- Remove wsssh.c and wsscp.c source files - Remove wsssh.1 and wsscp.1 man pages - Remove wsssh.conf.example and wsscp.conf.example config files - Update configure.sh to exclude wsssh and wsscp from build - Update debian/control to reflect remaining tools (wssshc + wsssht) - Verified build works with only wssshc and wsssht binaries - Project now focuses on wssshc (client) and wsssht (tunnel tool with pipe mode)
-
Stefy Lanza (nextime / spora ) authored
- Add MODE_PIPE constant to wsssht.h - Implement run_pipe_mode() function with proper tunnel negotiation - Add --pipe and --mode pipe command line options - Pipe mode negotiates tunnel (tunnel_request -> tunnel_ack) like other modes - Redirects raw tunnelled data to stdin/stdout instead of binding to TCP ports - Silent operation with no terminal output - Compatible with SSH ProxyCommand for transparent WebSocket SSH tunneling - Update include paths in all affected files after moving headers to libwsssht/ - Update configure.sh to generate correct makefile with new file locations
-
Stefy Lanza (nextime / spora ) authored
-
Stefy Lanza (nextime / spora ) authored
- Remove duplicate remove_tunnel() call in handle_connection cleanup - Prevent double-free of tunnel resources during concurrent connection cleanup - Ensure proper thread synchronization during tunnel cleanup - Fix race condition between forwarding thread exit and cleanup
-
Stefy Lanza (nextime / spora ) authored
- Add forward_thread field to tunnel_t structure for thread synchronization - Remove pthread_detach() to allow proper thread joining during cleanup - Add pthread_join() in cleanup to wait for forwarding thread completion - Prevent race conditions between cleanup and forwarding threads - Ensure tunnel resources are not freed while threads are still using them - Fix concurrent connection cleanup issues in wsssht daemon mode
-
Stefy Lanza (nextime / spora ) authored
- Implement thread-based concurrent connection handling - Fix segmentation fault caused by shared static variables - Each connection now gets its own WebSocket tunnel and resources - Replace global tunnel management with per-thread instances - Add proper cleanup for individual connection threads - Allow multiple SSH sessions to connect simultaneously to the same port
-
Stefy Lanza (nextime / spora ) authored
- Updated README.md project structure to reflect new libwsssht/ modular organization - Updated DOCUMENTATION.md with new modular component descriptions - Added CHANGELOG.md entry for version 1.6.1 with refactoring details - Added TODO.md entry documenting the completed refactoring work All documentation now reflects the new modular architecture with improved maintainability.
-
Stefy Lanza (nextime / spora ) authored
- Created libwsssht/ directory with modular components: * utils.h/c: Utility functions (print_usage, parse_connection_string, parse_args) * modes.h/c: Mode-specific functions (bridge, script, daemon modes) * threads.h/c: Thread-related functions and structures * wsssht.h: Main header with includes and declarations - Reduced wsssht.c from 2769 lines to 674 lines (main function only) - Updated Makefile and configure.sh to handle new modular structure - Maintained exact same functionality and command-line interface - Improved code maintainability and organization All functionality preserved, build successful, and wsssht binary works correctly.
-
Stefy Lanza (nextime / spora ) authored
-
Stefy Lanza (nextime / spora ) authored
- Suppress verbose tunnel_data debug messages in main tunnel loop - Suppress tunnel_data debug messages in thread function - Suppress tunnel_data debug messages in daemon mode - Suppress WebSocket 'Received message' and 'Processing message' debug messages for tunnel_data - Maintain functionality while reducing debug log verbosity - Preserve other debug messages (tunnel_response, tunnel_close, etc.)
-
Stefy Lanza (nextime / spora ) authored
- wssshd: Added full JSON logging for all received/sent control messages when --debug enabled - wssshc: Verified existing control message logging - wsssht: Suppressed verbose data channel messages in debug mode - Fixed wsssht daemon mode for multiple sequential connections - Fixed wsssht script mode data forwarding and JSON output - Increased thread cleanup timeout to prevent race conditions - All components compile and work correctly
-
Stefy Lanza (nextime / spora ) authored
- wssshd (websocket.py): Log full JSON content of all received and sent control channel messages when --debug enabled - wssshc: Verified existing debug logging for control messages - Fixed wsssht script mode data forwarding for tunnel_response messages - Suppressed data channel message output in script mode for clean JSON protocol - Fixed wsssht daemon mode to properly handle multiple connections and wait indefinitely
-
Stefy Lanza (nextime / spora ) authored
- Add debug logging for all control channel messages in wssshd and wssshc when --debug flag is enabled, showing full JSON content of received and sent messages - Fix data forwarding issue in wsssht script mode - Suppress data channel message output in wsssht script mode for cleaner output - Enhance script_started message in wsssht script mode to include tunnel_host, tunnel_port, and service fields - Remove obsolete test_bridge_interactive.sh file Control channel messages now logged include: register, registered, registration_error, tunnel_request, tunnel_ack, tunnel_close, tunnel_error for both server and client.
-
Stefy Lanza (nextime / spora ) authored
- Bridge mode was incorrectly using raw socket operations over SSL connection - Updated to use SSL_read/SSL_write for all WebSocket communication - Fixed send_websocket_message to use send_websocket_frame with SSL - Fixed pong frame sending to use SSL - Fixed select() and FD_ISSET to monitor correct socket This resolves the 'send_error' and connection closure issues in bridge mode tests.
-
Stefy Lanza (nextime / spora ) authored
- wssshd: Log full content of all received and sent control messages when --debug is enabled - wssshc: Already logs control messages, registration message logging enhanced - wsssht: Fixed memory corruption issue with config struct allocations Control channel messages include: register, registered, registration_error, tunnel_request, tunnel_ack, tunnel_error, tunnel_close, tunnel_data, tunnel_response
-