From 8b8aafbee6e82fdb91b591cbccf436c42dc03508 Mon Sep 17 00:00:00 2001
From: echicken <echicken@bbs.electronicchicken.com>
Date: Fri, 24 Feb 2023 03:52:19 +0000
Subject: [PATCH] Write websocket client IP address to temp file.

Scripts running on upstream (terminal) server can find actual
client IP in:

system.temp_path + 'sbbs-ws-' + client.socket.remote_port + '.ip'
---
 exec/websocketservice.js | 8 ++++++++
 1 file changed, 8 insertions(+)

diff --git a/exec/websocketservice.js b/exec/websocketservice.js
index 66a11cf356..1958eefac3 100644
--- a/exec/websocketservice.js
+++ b/exec/websocketservice.js
@@ -83,6 +83,7 @@ try {
         FServerSocket = new Socket();
 		log(LOG_DEBUG, "Connecting to " + TargetHostname + ":" + TargetPort);
         if (FServerSocket.connect(TargetHostname, TargetPort)) {
+
             // Variables we'll use in the loop
             var DoYield = true;
             var ClientData = [];
@@ -102,6 +103,12 @@ try {
 				FServerSocket.send(hapstr);
 			}
 
+            var ipFile = new File (system.temp_path + 'sbbs-ws-' + FServerSocket.local_port + '.ip');
+            if (ipFile.open('w')) {
+                ipFile.write(client.ip_address);
+                ipFile.close();
+            }
+
             // Loop while we're still connected on both ends
             while ((client.socket.is_connected) && (FServerSocket.is_connected)) {
                 // Should we yield or not (default true, but disable if we had line activity)
@@ -129,6 +136,7 @@ try {
             }
             if (!client.socket.is_connected) log(LOG_DEBUG, 'Client socket no longer connected');
 			if (!FServerSocket.is_connected) log(LOG_DEBUG, 'Server socket no longer connected');
+            ipFile.remove();
         } else {
             // FServerSocket.connect() failed
             log(LOG_ERR, "Error " + FServerSocket.error + " connecting to server at " + TargetHostname + ":" + TargetPort);
-- 
GitLab