From bdf8f81d73e297976c2d6da69fb6c7b1358f0b45 Mon Sep 17 00:00:00 2001 From: sirjonasxx <36828922+sirjonasxx@users.noreply.github.com> Date: Sat, 14 Aug 2021 02:47:17 +0200 Subject: [PATCH] alwaysAdmin extension is now a checkbox in Extra --- .gitignore | 25 +--- Extensions/AdminOnConnect/pom.xml | 113 ------------------ .../adminonconnect/AdminOnConnect.java | 52 -------- .../services/always_admin/AdminService.java | 54 +++++++++ .../java/gearth/ui/extra/ExtraController.java | 21 ++++ .../main/resources/gearth/ui/extra/Extra.fxml | 33 +++-- pom.xml | 3 - 7 files changed, 97 insertions(+), 204 deletions(-) delete mode 100644 Extensions/AdminOnConnect/pom.xml delete mode 100644 Extensions/AdminOnConnect/src/main/java/extensions/adminonconnect/AdminOnConnect.java create mode 100644 G-Earth/src/main/java/gearth/services/always_admin/AdminService.java diff --git a/.gitignore b/.gitignore index 105413f..902afbc 100644 --- a/.gitignore +++ b/.gitignore @@ -15,22 +15,9 @@ Extensions/BlockReplacePackets/.classpath .project .settings/org.eclipse.m2e.core.prefs .vscode/launch.json -Extensions/AdminOnConnect/.classpath -Extensions/AdminOnConnect/.project -Extensions/AdminOnConnect/.settings/org.eclipse.jdt.apt.core.prefs -Extensions/AdminOnConnect/.settings/org.eclipse.jdt.core.prefs -Extensions/AdminOnConnect/.settings/org.eclipse.m2e.core.prefs -Extensions/BlockReplacePackets/.project -Extensions/BlockReplacePackets/.settings/org.eclipse.jdt.apt.core.prefs -Extensions/BlockReplacePackets/.settings/org.eclipse.jdt.core.prefs -Extensions/BlockReplacePackets/.settings/org.eclipse.m2e.core.prefs -Extensions/HappySpeech/.classpath -Extensions/HappySpeech/.project -Extensions/HappySpeech/.settings/org.eclipse.jdt.apt.core.prefs -Extensions/HappySpeech/.settings/org.eclipse.jdt.core.prefs -Extensions/HappySpeech/.settings/org.eclipse.m2e.core.prefs -G-Earth/.classpath -G-Earth/.project -G-Earth/.settings/org.eclipse.jdt.apt.core.prefs -G-Earth/.settings/org.eclipse.jdt.core.prefs -G-Earth/.settings/org.eclipse.m2e.core.prefs + +*.classpath +*.project +*.settings/org.eclipse.jdt.apt.core.prefs +*.settings/org.eclipse.jdt.core.prefs +*.settings/org.eclipse.m2e.core.prefs diff --git a/Extensions/AdminOnConnect/pom.xml b/Extensions/AdminOnConnect/pom.xml deleted file mode 100644 index c6f4ceb..0000000 --- a/Extensions/AdminOnConnect/pom.xml +++ /dev/null @@ -1,113 +0,0 @@ - - - 4.0.0 - - AdminOnConnect - - jar - - 0.0.1-beta - - - G-Earth - G-Earth-Parent - 1.4.1 - ../../ - - - - - - - false - src/main/java - - **/*.fxml - **/*.css - - - - - - - org.apache.maven.plugins - maven-jar-plugin - 2.5 - - ${project.build.directory}/bin - - - true - true - extensions.adminonconnect.AdminOnConnect - false - lib/ - true - - - ${project.artifactId} - - - - - - maven-assembly-plugin - 2.5 - - - package - - single - - - - - ${project.build.directory}/bin - - - extensions.adminonconnect.AdminOnConnect - - - - jar-with-dependencies - - ${project.artifactId} - false - - - - - - maven-antrun-plugin - 3.0.0 - - - package - - - - - - - - - - run - - - - - - - - - - G-Earth - G-Earth - 1.4.1 - - - - \ No newline at end of file diff --git a/Extensions/AdminOnConnect/src/main/java/extensions/adminonconnect/AdminOnConnect.java b/Extensions/AdminOnConnect/src/main/java/extensions/adminonconnect/AdminOnConnect.java deleted file mode 100644 index 44ef20a..0000000 --- a/Extensions/AdminOnConnect/src/main/java/extensions/adminonconnect/AdminOnConnect.java +++ /dev/null @@ -1,52 +0,0 @@ -package extensions.adminonconnect; - -import gearth.extensions.Extension; -import gearth.extensions.ExtensionInfo; -import gearth.protocol.HMessage; -import gearth.protocol.HPacket; - -/** - * Created by Jonas on 26/06/18. - */ - -@ExtensionInfo( - Title = "Always admin!", - Description = "Gives you admin permission on connect", - Version = "1.0", - Author = "sirjonasxx" -) -public class AdminOnConnect extends Extension { - - public static void main(String[] args) { - new AdminOnConnect(args).run(); - } - public AdminOnConnect(String[] args) { - super(args); - } - - private boolean done = true; - - protected void initExtension() { - intercept(HMessage.Direction.TOCLIENT, message -> { - if (!done) { - HPacket packet = message.getPacket(); - if (packet.length() == 11) { - if (packet.readByte(14) == 0 || packet.readByte(14) == 1) { - packet.replaceInt(6, 7); - packet.replaceInt(10, 7); - packet.replaceBoolean(14, true); - - done = true; - writeToConsole("Replaced user permissions"); - } - } - } - }); - - intercept(HMessage.Direction.TOSERVER, 4000, message -> done = false); - } - -// protected void onStartConnection() { -// done = false; -// } -} diff --git a/G-Earth/src/main/java/gearth/services/always_admin/AdminService.java b/G-Earth/src/main/java/gearth/services/always_admin/AdminService.java new file mode 100644 index 0000000..afa406b --- /dev/null +++ b/G-Earth/src/main/java/gearth/services/always_admin/AdminService.java @@ -0,0 +1,54 @@ +package gearth.services.always_admin; + +import gearth.protocol.HConnection; +import gearth.protocol.HMessage; +import gearth.protocol.HPacket; + +public class AdminService { + + private final HConnection hConnection; + + volatile private boolean enabled; + volatile private HPacket originalPacket; + + public AdminService(boolean enabled, HConnection hConnection) { + this.enabled = enabled; + this.hConnection = hConnection; + originalPacket = null; + } + + public void setEnabled(boolean enabled) { + if (enabled != this.enabled) { + this.enabled = enabled; + if (originalPacket != null) { + if (enabled) { + hConnection.sendToClient(new HPacket(originalPacket.headerId(), 7, 7, true)); + } + else { + hConnection.sendToClient(originalPacket); + } + } + } + } + + public void onConnect() { + originalPacket = null; + } + + public void onMessage(HMessage message) { + HPacket packet = message.getPacket(); + if (message.getDestination() == HMessage.Direction.TOCLIENT + && (originalPacket == null || packet.headerId() == originalPacket.headerId()) + && packet.length() == 11 && (packet.readByte(14) == 0 || packet.readByte(14) == 1)) { + originalPacket = new HPacket(packet); + + if (enabled) { + packet.replaceInt(6, 7); + packet.replaceInt(10, 7); + packet.replaceBoolean(14, true); + } + } + + } + +} diff --git a/G-Earth/src/main/java/gearth/ui/extra/ExtraController.java b/G-Earth/src/main/java/gearth/ui/extra/ExtraController.java index 2bfb373..24373cf 100644 --- a/G-Earth/src/main/java/gearth/ui/extra/ExtraController.java +++ b/G-Earth/src/main/java/gearth/ui/extra/ExtraController.java @@ -3,9 +3,12 @@ package gearth.ui.extra; import gearth.Main; import gearth.misc.Cacher; import gearth.protocol.HConnection; +import gearth.protocol.HMessage; +import gearth.protocol.TrafficListener; import gearth.protocol.connection.HState; import gearth.protocol.connection.proxy.ProxyProviderFactory; import gearth.protocol.connection.proxy.SocksConfiguration; +import gearth.services.always_admin.AdminService; import gearth.services.g_python.GPythonVersionUtils; import gearth.ui.SubForm; import gearth.ui.info.InfoController; @@ -25,6 +28,7 @@ public class ExtraController extends SubForm implements SocksConfiguration { public static final String INFO_URL_GPYTHON = "https://github.com/sirjonasxx/G-Earth/wiki/G-Python-qtConsole"; public static final String NOTEPAD_CACHE_KEY = "notepad_text"; + public static final String ALWAYS_ADMIN_KEY = "always_admin"; public static final String SOCKS_CACHE_KEY = "socks_config"; public static final String GPYTHON_CACHE_KEY = "use_gpython"; @@ -51,6 +55,9 @@ public class ExtraController extends SubForm implements SocksConfiguration { public GridPane grd_socksInfo; public TextField txt_socksPort; public TextField txt_socksIp; + public CheckBox cbx_admin; + + private AdminService adminService; public void initialize() { url_troubleshooting.setTooltip(new Tooltip("https://github.com/sirjonasxx/G-Earth/wiki/Troubleshooting")); @@ -72,6 +79,10 @@ public class ExtraController extends SubForm implements SocksConfiguration { cbx_gpython.setSelected(Cacher.getCacheContents().getBoolean(GPYTHON_CACHE_KEY)); } + if (Cacher.getCacheContents().has(ALWAYS_ADMIN_KEY)) { + cbx_admin.setSelected(Cacher.getCacheContents().getBoolean(ALWAYS_ADMIN_KEY)); + } + cbx_debug.selectedProperty().addListener(observable -> HConnection.DEBUG = cbx_debug.isSelected()); cbx_disableDecryption.selectedProperty().addListener(observable -> HConnection.DECRYPTPACKETS = !cbx_disableDecryption.isSelected()); @@ -82,6 +93,10 @@ public class ExtraController extends SubForm implements SocksConfiguration { @Override protected void onParentSet() { + adminService = new AdminService(cbx_admin.isSelected(), getHConnection()); + getHConnection().addTrafficListener(1, message -> adminService.onMessage(message)); + getHConnection().getStateObservable().addListener((oldState, newState) -> {if (newState == HState.CONNECTED) adminService.onConnect();}); + parentController.getStage().setAlwaysOnTop(cbx_alwaysOnTop.isSelected()); cbx_alwaysOnTop.selectedProperty().addListener(observable -> parentController.getStage().setAlwaysOnTop(cbx_alwaysOnTop.isSelected())); @@ -99,6 +114,7 @@ public class ExtraController extends SubForm implements SocksConfiguration { protected void onExit() { Cacher.put(NOTEPAD_CACHE_KEY, txtarea_notepad.getText()); Cacher.put(GPYTHON_CACHE_KEY, cbx_gpython.isSelected()); + Cacher.put(ALWAYS_ADMIN_KEY, cbx_admin.isSelected()); saveSocksConfig(); } @@ -191,4 +207,9 @@ public class ExtraController extends SubForm implements SocksConfiguration { } } + + public void adminCbxClick(ActionEvent actionEvent) { + adminService.setEnabled(cbx_admin.isSelected()); + + } } diff --git a/G-Earth/src/main/resources/gearth/ui/extra/Extra.fxml b/G-Earth/src/main/resources/gearth/ui/extra/Extra.fxml index da8993c..7368aba 100644 --- a/G-Earth/src/main/resources/gearth/ui/extra/Extra.fxml +++ b/G-Earth/src/main/resources/gearth/ui/extra/Extra.fxml @@ -1,17 +1,10 @@ - - - - - - - - - - + + + - + @@ -34,12 +27,13 @@ - - + + + - + @@ -50,7 +44,7 @@ - + @@ -110,7 +104,7 @@ - + @@ -118,7 +112,12 @@ - + + + + + + diff --git a/pom.xml b/pom.xml index 0b9ec7f..99444cb 100644 --- a/pom.xml +++ b/pom.xml @@ -15,9 +15,6 @@ G-Earth - - - Extensions/AdminOnConnect