- 16 Sep, 2025 17 commits
-
-
Stefy Lanza (nextime / spora ) authored
- Fixed critical timing issue where tunnel_data arrived before SSH client connection - Added incoming_buffer to tunnel_t structure for buffering data before SSH client connects - Modified handle_tunnel_data() to buffer data when SSH client hasn't connected yet - Updated handle_ssh_server_connection() to send buffered data once SSH client connects - Fixed socket selection logic to properly handle wssshc buffering scenario - Resolved 'Bad file descriptor' errors caused by premature data transmission - Implemented proper data flow: buffer → SSH client connection → send buffered data - Added comprehensive debug logging for data buffering and transmission - Fixed race condition between WebSocket data arrival and SSH client connection - Ensured SSH protocol handshake completes properly with buffered data delivery - Added proper cleanup for incoming_buffer in tunnel close operations - Resolved premature socket disconnection by maintaining proper connection state - Fixed SSH client timeout issues by ensuring timely data delivery
-
Stefy Lanza (nextime / spora ) authored
- Fixed wssshc to act as SSH server that forwards to target SSH server - Added handle_ssh_server_connection() to accept SSH client connections - Added forward_ssh_client_to_target() for bidirectional SSH forwarding - wssshc now listens on available port and accepts SSH client connections - wssshc connects to target SSH server (localhost:22) when tunnel is established - Implemented proper SSH protocol bridging between SSH client and target server - Fixed socket lifecycle management for SSH server mode - Resolved 'Bad file descriptor' issues by correcting connection architecture - SSH client now gets proper SSH server responses instead of immediate disconnection - Added proper error handling for SSH connection establishment and forwarding - Implemented correct tunnel flow: SSH client → wssshc → target SSH server - Fixed WebSocket integration with SSH protocol forwarding - Added comprehensive debug logging for SSH connection lifecycle - Resolved premature socket invalidation by maintaining proper connection state
-
Stefy Lanza (nextime / spora ) authored
- Fixed wssshc to act as SSH client instead of SSH server - wssshc now connects to target SSH server (localhost:22) when receiving tunnel_request - Removed incorrect SSH server listening code that was binding to port 22 - Implemented proper SSH client connection forwarding - Fixed 'Address already in use' error by removing port 22 binding conflict - Corrected tunnel architecture: wssshc → SSH server, not SSH server → wssshc - Updated handle_tunnel_request to establish SSH client connection to target - Removed accept_ssh_connection function (not needed for client mode) - Fixed bidirectional forwarding between WebSocket and SSH client connection - Resolved socket lifecycle issues by using correct connection direction - Eliminated port binding conflicts with system SSH server - Implemented proper SSH protocol flow for client-side tunneling
-
Stefy Lanza (nextime / spora ) authored
- Added detailed error reporting when socket becomes invalid - Mark tunnel as inactive when SSH connection is broken - Enhanced debugging for socket closure detection - Added errno reporting for connection errors - Improved error messages to distinguish between different failure modes - Added proper tunnel state management when connections fail - Better handling of SSH client disconnections during handshake - Added mutex protection for tunnel state updates during errors
-
Stefy Lanza (nextime / spora ) authored
- Added fcntl() check to validate socket before sending data - Enhanced error reporting with socket descriptor and errno details - Added detailed send operation logging for troubleshooting - Improved socket state validation to prevent bad file descriptor errors - Added errno reporting for better error diagnosis - Enhanced debugging output for socket operations - Added socket validity checks using file descriptor flags - Improved error messages with more context information
-
Stefy Lanza (nextime / spora ) authored
- Added proper seeding of random number generator with time and PID - Prevents duplicate request IDs across program runs - Uses srand() with combination of current time and process ID - Ensures each tunnel session gets a truly unique request ID - Added thread-safe seeding with static flag to prevent reseeding - Fixed potential security issue with predictable request IDs - Improved randomness quality for tunnel identification
-
Stefy Lanza (nextime / spora ) authored
- Added proper mutex protection for active_tunnel access - Fixed race condition between main thread and forwarding thread - Protected SSL connection access with mutex locks - Fixed socket setting with proper mutex synchronization - Ensured thread-safe access to tunnel state variables - Prevented concurrent access to shared tunnel resources - Added proper SSL connection lifecycle management - Fixed potential data races in WebSocket message handling
-
Stefy Lanza (nextime / spora ) authored
- Added check for valid target socket before attempting to send data - Prevents 'Bad file descriptor' errors when local socket isn't ready yet - Added debug message when target socket is not available - Ensures tunnel_data messages are ignored until SSH connection is established - Fixes race condition between WebSocket message arrival and SSH client connection
-
Stefy Lanza (nextime / spora ) authored
- Improved handle_tunnel_data() with better hex validation and decoding - Added bounds checking for hex data length validation - Enhanced error handling for hex decoding failures - Added debug logging for hex decoding issues - Improved socket send error handling with detailed error messages - Added bounds checking for hex encoding in forwarding functions - Fixed potential buffer overflow issues with large hex data - Enhanced robustness for handling large SSH protocol packets
-
Stefy Lanza (nextime / spora ) authored
- Modified handle_tunnel_request() to connect to local SSH server (localhost:22) - Added forward_ws_to_local() function for WebSocket to local SSH forwarding - Updated handle_tunnel_data() to properly route data to correct socket - wssshc now establishes bidirectional forwarding between WebSocket and local SSH server - Fixed tunnel blocking issue by implementing proper data flow in both directions - Added thread for handling data from local SSH server back to WebSocket
-
Stefy Lanza (nextime / spora ) authored
- Added send_registration_message() function to websocket library - Updated wssshc.c to use send_registration_message() instead of send_json_message() - Registration message now sends: {"type":"register","client_id":"<id>","password":"<password>"} - Instead of: {"type":"register","client_id":"<id>","request_id":"<password>"} - Server can now properly authenticate clients with passwords
-
Stefy Lanza (nextime / spora ) authored
- Added patterns for new shared library build artifacts (*.a, *.so) - Added patterns for compiled library executables (wssshlib, websocket, wssh_ssl, tunnel) - Enabled logos/ directory exclusion (generated assets) - Added comprehensive Debian packaging artifact patterns - Added build info file patterns (*_*.buildinfo) - Ensures clean git status by excluding all build-generated files
-
Stefy Lanza (nextime / spora ) authored
- Removed incorrect 'closed' attribute check on websockets Server object - Added proper exception handling for server shutdown - Fixed 'Server' object has no attribute 'closed' error during shutdown - Server now shuts down cleanly without throwing exceptions
-
Stefy Lanza (nextime / spora ) authored
- Modified wssshd.py to accept both 'id' and 'client_id' fields for registration - Added fallback logic: client_id = data.get('client_id') or data.get('id') - This allows the C client to send 'client_id' while maintaining backward compatibility - Fixes the KeyError: 'id' issue when C client tries to register
-
Stefy Lanza (nextime / spora ) authored
-
Stefy Lanza (nextime / spora ) authored
- Extracted ~1500+ lines of duplicate code into shared libraries: * wssshlib.h/.c - Shared utilities (config, flags, ports, IDs) * websocket.h/.c - WebSocket functions (handshake, framing, messaging) * wssh_ssl.h/.c - SSL/TLS setup functions * tunnel.h/.c - Tunnel management (setup, reconnection, data handling) - Fixed critical port option behavior: * -p/-P options now correctly specify wssshd server port * Removed misleading documentation about options being passed through * Updated help text and man pages to reflect correct behavior - Cleaned up help documentation: * Removed duplicate 'Options:' sections from wsssh and wsscp * Consolidated all options into single, clean sections - Updated build system: * Modified configure.sh and Makefile for new library structure * Proper linking of wsssh and wsscp against shared libraries - Updated documentation: * CHANGELOG.md - Added version 1.4.6 with comprehensive details * README.md - Updated architecture and project structure * DOCUMENTATION.md - Reflected new library structure * Man pages - Corrected port option examples * TODO.md - Updated completion status - Maintained backward compatibility while improving maintainability
-
Stefy Lanza (nextime / spora ) authored
- Delete wssshc.py, wsssh.py, wsscp.py files - Update build.sh to remove pyinstaller commands and output messages - Update Debian packaging to exclude Python script installations - Update documentation to reflect C-only implementations - Update CHANGELOG.md with version 1.4.5 entry - Focus on C implementations for better performance and minimal dependencies
-
- 15 Sep, 2025 23 commits
-
-
nextime authored
-
nextime authored
-
nextime authored
-
nextime authored
- Fix navbar brand link to point to dashboard home page - Add back button to terminal page for easy navigation to dashboard - Improve user experience with better navigation between pages - Maintain consistent navigation throughout the web interface
-
nextime authored
- Updated CHANGELOG.md with new features and fixes for v1.4.4 - Updated README.md with version 1.4.4 information and new features - Updated DOCUMENTATION.md with enhanced feature descriptions - Updated TODO.md to reflect completed tasks and new version - Updated Debian changelog files for both wsssh-server and wsssh-tools packages - Added comprehensive documentation for: * Dynamic terminal sizing and resize support * Force echo mode implementation * Enhanced logging with logrotate integration * Terminal dimension fixes and improvements * Backend API enhancements for terminal management
-
nextime authored
- Calculate terminal dimensions after initial fit to container - Store initial dimensions for use during connection - Use calculated dimensions for both startup and resize events - Ensure proper terminal sizing for applications like top - Handle browser window resize to update remote terminal dynamically
-
nextime authored
- Modify wssshd.py to run 'stty echo' before launching wsssh - Use shell command wrapper to execute stty echo && wsssh - Ensure echo mode is forced before SSH connection is established - Remove JavaScript-based stty echo attempts - Fix terminal echo issue by setting echo mode at the right time
-
nextime authored
- Remove JavaScript-based echo handling and password mode detection - Send all keystrokes directly to server without local echo manipulation - Let SSH server handle echo control through terminal protocol - Proper terminal behavior where server controls what gets displayed - No more manual echo logic, respects SSH server's echo settings
-
nextime authored
- Add passwordMode flag to detect password prompts from SSH server - Disable local echo when password prompts are detected (Password:, password:, etc.) - Re-enable echo after password is submitted (on Enter key or new prompt) - Reset passwordMode on disconnect for clean state - Maintain security by not displaying passwords in plain text - Preserve normal command echo for non-password input
-
nextime authored
- Add proper xterm.js configuration with disableStdin: false and other settings - Implement local echo handling for printable characters, backspace, and enter - Ensure terminal input is visible to user while maintaining server communication - Fix input handling to properly display typed commands in the web interface
-
nextime authored
- Update .terminal-container CSS to use calc(100vh - 200px) for responsive height - Remove fixed padding and height constraints - Add xterm-addon-fit for proper terminal resizing - Update terminal initialization to use fit addon for dynamic sizing - Ensure terminal fills entire container width and height - Add window resize event handler for responsive terminal sizing
-
nextime authored
- Add logging section to README.md with logrotate configuration details - Add comprehensive Logging Configuration section to DOCUMENTATION.md - Update CHANGELOG.md with version 1.4.4 entry for logging features - Update table of contents in DOCUMENTATION.md to include logging section Features documented: - Automatic log rotation with logrotate - Log file locations and management - Manual log management commands - Troubleshooting with logs - Log analysis techniques
-
nextime authored
Use start-stop-daemon --output option to properly redirect both stdout and stderr to /var/log/wssshd/wssshd.log while preserving correct PID storage in the PID file
-
nextime authored
- Add wssshd.log and wssshc.log to respective logrotate configurations - Modify init scripts to redirect stdout and stderr to log files - Ensure proper log rotation with weekly rotation, compression, and HUP signals
-
nextime authored
- Create PID file in start case with correct background process PID - Remove PID file creation from main() function to avoid empty files - Validate background process is running before reporting success - Clean up PID file if process fails to start - Fix both wssshd and wssshc watchdogs
-
nextime authored
- Capture PID of background main() process with MAIN_PID= - Store correct PID in watchdog PID file instead of main() function PID - Prevent PID file from containing exited process PID - Fix both wssshd and wssshc watchdogs - Watchdog PID file now contains PID of actual running process
-
nextime authored
- Separate PID file reading from process checking - Prevent command substitution failures in kill command - Add proper error handling for PID file operations - Fix false 'watchdog failed' reports due to bash syntax issues - Fixed both wssshd and wssshc init scripts
-
nextime authored
- Add detailed logging to main() monitoring loops - Track loop iterations and daemon status checks - Log sleep intervals and monitoring status - Help diagnose why watchdog exits prematurely - Fixed both wssshd and wssshc watchdogs
-
nextime authored
- Stop existing watchdog before starting new one - Use pgrep to detect running watchdog processes - Prevent 'watchdog already running' conflicts - Ensure clean watchdog startup in init scripts - Fixed both wssshd and wssshc init scripts
-
nextime authored
- Removed duplicate function definitions causing bash arithmetic errors - Kept the more complete check_restart_limits() function with awk timestamp parsing - Fixed both wssshd and wssshc watchdog scripts - Eliminates 'integer expression expected' errors
-
nextime authored
- Init scripts now start wssshd/wssshc daemons directly - Wait for daemons to be fully running before starting watchdog - Watchdog only monitors existing daemons, doesn't start them - Watchdog exits if daemon restart fails - Proper startup sequence: daemon → verify running → watchdog - Fixed both wssshd and wssshc init scripts and watchdogs
-
nextime authored
- Watchdog now waits 3 seconds after starting daemon before checking status - Prevents false detection of daemon failure during startup - Gives daemon time to fully initialize and create PID file - Fixed both wssshd and wssshc watchdogs - Improves reliability of daemon startup detection
-
nextime authored
- Use setsid to properly daemonize main() function - setsid bash -c 'main' & creates independent process group - Prevents main() from being killed when parent script exits - Fixed both wssshd and wssshc watchdogs - Watchdog processes should now persist correctly
-