Skip to content

Commit 1ab2731

Browse files
committed
Feat-TERM: Added IP Obfuscation
1 parent 2974206 commit 1ab2731

4 files changed

Lines changed: 29 additions & 13 deletions

File tree

src/main/java/redxax/oxy/remotely/config/Config.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -42,7 +42,7 @@ public class Config {
4242

4343
public static boolean aiMode = false;
4444
public static boolean loading = false;
45-
45+
public static boolean showIp = true;
4646

4747
public static int elementBackgroundColor = 0xFF2C2C2C;
4848
public static int elementBorderColor = 0xFF444444;

src/main/java/redxax/oxy/remotely/platforms/forge/RemotelyForge.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
//? !neoforge && !fabric {
1+
//? !neoforge || !fabric {
22
/*package redxax.oxy.remotely.platforms.forge;
33
44
import redxax.oxy.remotely.RemotelyInit;

src/main/java/redxax/oxy/remotely/servers/SettingsScreen.java

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -155,11 +155,12 @@ public static void loadClientConfiguration() {
155155

156156
settings.add(new Settings.Builder("Scan For Servers", "Scan For Servers In The Default Remotely Directory.", "Servers", "scanServers", TOGGLE, String.valueOf(scanServers)).build());
157157
settings.add(new Settings.Builder("Use Custom Reverse Proxy", "Replace The Default Server With Your Own.", "Servers", "customReverseProxy", TOGGLE, String.valueOf(customReverseProxy)).build());
158-
settings.add(new Settings.Builder("Reverse Proxy Host", "Enter The Host To Your Server (e.g. `RedxAx.net`)", "Servers", "proxyHost", TEXT, String.valueOf(proxyHost)).build());
159-
settings.add(new Settings.Builder("Reverse Proxy User", "Enter The User Of Your Proxy Server (e.g. `tunnel`)", "Servers", "proxyUser", TEXT, String.valueOf(proxyUser)).build());
158+
settings.add(new Settings.Builder("Reverse Proxy Host", "Enter The Host To Your Server.", "Servers", "proxyHost", TEXT, String.valueOf(proxyHost)).build());
159+
settings.add(new Settings.Builder("Reverse Proxy User", "Enter The User Of Your Proxy Server.", "Servers", "proxyUser", TEXT, String.valueOf(proxyUser)).build());
160160

161161
settings.add(new Settings.Builder("Developer Mode", "Enable Developer Mode.", "Development", "isDev", TOGGLE, String.valueOf(isDev)).build());
162162
settings.add(new Settings.Builder("Enable Debug Tools", "Enable Visual Tools For Debugging.", "Development", "enableDebugTools", TOGGLE, String.valueOf(enableDebugTools)).build());
163+
settings.add(new Settings.Builder("Show IP Address", "Don't Obfuscate (§k127.0.0.1§r) Your IP.", "Development", "showIp", TOGGLE, String.valueOf(showIp)).build());
163164
}
164165

165166
public static void defineSettings() {
@@ -334,6 +335,7 @@ private static void updateClientConfigSetting(String key, String value) {
334335
case "pitchVariation" -> Sound.pitchVariation = Integer.parseInt(value);
335336
case "isDev" -> isDev = Boolean.parseBoolean(value);
336337
case "enableDebugTools" -> enableDebugTools = Boolean.parseBoolean(value);
338+
case "showIp" -> showIp = Boolean.parseBoolean(value);
337339
case "mouseSize" -> mouseSize = Integer.parseInt(value);
338340
case "tailSize" -> tailSize = Integer.parseInt(value);
339341
case "tailFollowSpeed" -> tailFollowSpeed = Integer.parseInt(value);

src/main/java/redxax/oxy/remotely/terminal/TerminalRenderer.java

Lines changed: 23 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,7 @@ public class TerminalRenderer {
3636
public int scrollOffset = 0;
3737
private static final Pattern TMUX_STATUS_PATTERN = Pattern.compile(".*\\d{1,2}:\\d{2}\\s\\d{2}-[A-Za-z]{3}-\\d{2}.*");
3838
private final Pattern BRACKET_KEYWORD_PATTERN = Pattern.compile("\\[(.*?)\\b(WARNING|WARN|ERROR|INFO)\\b(.*?)]");
39+
private static final Pattern IP_PATTERN = Pattern.compile("(?<![\\w:])((?:\\d{1,3}\\.){3}\\d{1,3})(?![\\w:])");
3940
private boolean isSelecting = false;
4041
private int selectionStartLine = -1;
4142
private int selectionStartChar = -1;
@@ -161,7 +162,7 @@ public void rewrap() {
161162
int wrapWidth = terminalWidth - 10;
162163
for (String rawLine : lines) {
163164
if (rawLine.isEmpty()) continue;
164-
String line = rawLine.replace("\0", "");
165+
String line = obfuscateIps(rawLine.replace("\0", ""));
165166
String trimmed = line.trim();
166167
if (trimmed.equals(">")) continue;
167168
String plain = removeAllAnsiSequences(line);
@@ -415,24 +416,24 @@ private String[] getStatusBarStrings(int availableWidth) {
415416
case CRASHED -> serverStatus = "Crashed";
416417
default -> serverStatus = "Unknown";
417418
}
418-
leftStatus = "Remotely - 2.0.0 | " + sInfo.name + " - " + serverStatus;
419+
leftStatus = obfuscateIps("Remotely - 2.0.0 | " + sInfo.name + " - " + serverStatus);
419420
if (sInfo.remoteHost != null && sInfo.remoteSSHManager != null && sInfo.isRemote) {
420421
boolean connected = sInfo.remoteSSHManager.isSSH();
421-
rightStatus = connected ? sInfo.remoteHost.name + " - Connected" : sInfo.remoteHost.name + ": Disconnected";
422+
rightStatus = obfuscateIps(connected ? sInfo.remoteHost.name + " - Connected" : sInfo.remoteHost.name + ": Disconnected");
422423
} else {
423-
rightStatus = "Local Host | " + new Date();
424+
rightStatus = obfuscateIps("Local Host | " + new Date());
424425
}
425426
} else {
426-
leftStatus = "Remotely - 2.0.0 | DevBuild4 19/4/2025";
427-
rightStatus = new Date().toString();
427+
leftStatus = obfuscateIps("Remotely - 2.0.0 | DevBuild4 19/4/2025");
428+
rightStatus = obfuscateIps(new Date().toString());
428429
}
429430
} else {
430431
int idx = tmuxStatusLine.indexOf(" ");
431432
if (idx != -1) {
432-
leftStatus = tmuxStatusLine.substring(0, idx).trim();
433-
rightStatus = tmuxStatusLine.substring(idx).trim();
433+
leftStatus = obfuscateIps(tmuxStatusLine.substring(0, idx).trim());
434+
rightStatus = obfuscateIps(tmuxStatusLine.substring(idx).trim());
434435
} else {
435-
leftStatus = tmuxStatusLine;
436+
leftStatus = obfuscateIps(tmuxStatusLine);
436437
rightStatus = "";
437438
}
438439
}
@@ -647,6 +648,19 @@ public boolean mouseScrolled(double mouseX, double mouseY, double verticalAmount
647648
return false;
648649
}
649650

651+
private static String obfuscateIps(String input) {
652+
if (showIp) return input;
653+
Matcher matcher = IP_PATTERN.matcher(input);
654+
StringBuffer sb = new StringBuffer();
655+
while (matcher.find()) {
656+
String ip = matcher.group(1);
657+
String obfuscated = "§k" + ip + "§r";
658+
matcher.appendReplacement(sb, obfuscated);
659+
}
660+
matcher.appendTail(sb);
661+
return sb.toString();
662+
}
663+
650664
private static class StyleTextPair {
651665
final Style style;
652666
final TextColor backgroundColor;

0 commit comments

Comments
 (0)