mirror of
https://github.com/sirjonasxx/G-Earth.git
synced 2024-11-23 00:40:51 +01:00
alwaysAdmin extension is now a checkbox in Extra
This commit is contained in:
parent
9efb62c8cd
commit
bdf8f81d73
25
.gitignore
vendored
25
.gitignore
vendored
@ -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
|
||||
|
@ -1,113 +0,0 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<project xmlns="http://maven.apache.org/POM/4.0.0"
|
||||
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
||||
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
|
||||
<modelVersion>4.0.0</modelVersion>
|
||||
|
||||
<artifactId>AdminOnConnect</artifactId>
|
||||
|
||||
<packaging>jar</packaging>
|
||||
|
||||
<version>0.0.1-beta</version>
|
||||
|
||||
<parent>
|
||||
<groupId>G-Earth</groupId>
|
||||
<artifactId>G-Earth-Parent</artifactId>
|
||||
<version>1.4.1</version>
|
||||
<relativePath>../../</relativePath>
|
||||
</parent>
|
||||
|
||||
<build>
|
||||
<resources>
|
||||
<!-- Embedded FXML and CSS resources -->
|
||||
<resource>
|
||||
<filtering>false</filtering>
|
||||
<directory>src/main/java</directory>
|
||||
<includes>
|
||||
<include>**/*.fxml</include>
|
||||
<include>**/*.css</include>
|
||||
</includes>
|
||||
</resource>
|
||||
</resources>
|
||||
|
||||
<plugins>
|
||||
<plugin>
|
||||
<groupId>org.apache.maven.plugins</groupId>
|
||||
<artifactId>maven-jar-plugin</artifactId>
|
||||
<version>2.5</version>
|
||||
<configuration>
|
||||
<outputDirectory>${project.build.directory}/bin</outputDirectory>
|
||||
<archive>
|
||||
<manifest>
|
||||
<addDefaultImplementationEntries>true</addDefaultImplementationEntries>
|
||||
<addClasspath>true</addClasspath>
|
||||
<mainClass>extensions.adminonconnect.AdminOnConnect</mainClass>
|
||||
<useUniqueVersions>false</useUniqueVersions>
|
||||
<classpathPrefix>lib/</classpathPrefix>
|
||||
<addDefaultImplementationEntries>true</addDefaultImplementationEntries>
|
||||
</manifest>
|
||||
</archive>
|
||||
<finalName>${project.artifactId}</finalName>
|
||||
</configuration>
|
||||
</plugin>
|
||||
|
||||
|
||||
<plugin>
|
||||
<artifactId>maven-assembly-plugin</artifactId>
|
||||
<version>2.5</version>
|
||||
<executions>
|
||||
<execution>
|
||||
<phase>package</phase>
|
||||
<goals>
|
||||
<goal>single</goal>
|
||||
</goals>
|
||||
</execution>
|
||||
</executions>
|
||||
<configuration>
|
||||
<outputDirectory>${project.build.directory}/bin</outputDirectory>
|
||||
<archive>
|
||||
<manifest>
|
||||
<mainClass>extensions.adminonconnect.AdminOnConnect</mainClass>
|
||||
</manifest>
|
||||
</archive>
|
||||
<descriptorRefs>
|
||||
<descriptorRef>jar-with-dependencies</descriptorRef>
|
||||
</descriptorRefs>
|
||||
<finalName>${project.artifactId}</finalName>
|
||||
<appendAssemblyId>false</appendAssemblyId>
|
||||
</configuration>
|
||||
</plugin>
|
||||
|
||||
<!-- global build folder -->
|
||||
<plugin>
|
||||
<artifactId>maven-antrun-plugin</artifactId>
|
||||
<version>3.0.0</version>
|
||||
<executions>
|
||||
<execution>
|
||||
<phase>package</phase>
|
||||
<configuration>
|
||||
<target name="copy to extensions folder">
|
||||
<copy file="target/bin/AdminOnConnect.jar" todir="../../Build/Linux/Extensions"/>
|
||||
<copy file="target/bin/AdminOnConnect.jar" todir="../../Build/Mac/Extensions"/>
|
||||
<copy file="target/bin/AdminOnConnect.jar" todir="../../Build/Windows_32bit/Extensions"/>
|
||||
<copy file="target/bin/AdminOnConnect.jar" todir="../../Build/Windows_64bit/Extensions"/>
|
||||
</target>
|
||||
</configuration>
|
||||
<goals>
|
||||
<goal>run</goal>
|
||||
</goals>
|
||||
</execution>
|
||||
</executions>
|
||||
</plugin>
|
||||
</plugins>
|
||||
</build>
|
||||
|
||||
<dependencies>
|
||||
<dependency>
|
||||
<groupId>G-Earth</groupId>
|
||||
<artifactId>G-Earth</artifactId>
|
||||
<version>1.4.1</version>
|
||||
<!--<scope>provided</scope>-->
|
||||
</dependency>
|
||||
</dependencies>
|
||||
</project>
|
@ -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;
|
||||
// }
|
||||
}
|
@ -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);
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
@ -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());
|
||||
|
||||
}
|
||||
}
|
||||
|
@ -1,17 +1,10 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
|
||||
<?import javafx.geometry.Insets?>
|
||||
<?import javafx.scene.control.CheckBox?>
|
||||
<?import javafx.scene.control.Hyperlink?>
|
||||
<?import javafx.scene.control.Label?>
|
||||
<?import javafx.scene.control.TextArea?>
|
||||
<?import javafx.scene.control.TextField?>
|
||||
<?import javafx.scene.layout.AnchorPane?>
|
||||
<?import javafx.scene.layout.ColumnConstraints?>
|
||||
<?import javafx.scene.layout.GridPane?>
|
||||
<?import javafx.scene.layout.RowConstraints?>
|
||||
<?import javafx.geometry.*?>
|
||||
<?import javafx.scene.control.*?>
|
||||
<?import javafx.scene.layout.*?>
|
||||
|
||||
<GridPane maxHeight="1.7976931348623157E308" maxWidth="1.7976931348623157E308" prefHeight="258.0" prefWidth="650.0" xmlns="http://javafx.com/javafx/8.0.241" xmlns:fx="http://javafx.com/fxml/1" fx:controller="gearth.ui.extra.ExtraController">
|
||||
<GridPane maxHeight="1.7976931348623157E308" maxWidth="1.7976931348623157E308" prefHeight="258.0" prefWidth="650.0" xmlns="http://javafx.com/javafx/10.0.2-internal" xmlns:fx="http://javafx.com/fxml/1" fx:controller="gearth.ui.extra.ExtraController">
|
||||
<columnConstraints>
|
||||
<ColumnConstraints hgrow="SOMETIMES" maxWidth="331.0" minWidth="10.0" prefWidth="318.0" />
|
||||
<ColumnConstraints hgrow="SOMETIMES" maxWidth="390.0" minWidth="10.0" prefWidth="247.0" />
|
||||
@ -34,12 +27,13 @@
|
||||
</columnConstraints>
|
||||
<rowConstraints>
|
||||
<RowConstraints maxHeight="7.0" minHeight="7.0" prefHeight="7.0" vgrow="SOMETIMES" />
|
||||
<RowConstraints maxHeight="30.0" minHeight="30.0" prefHeight="30.0" vgrow="SOMETIMES" />
|
||||
<RowConstraints maxHeight="30.0" minHeight="30.0" prefHeight="30.0" vgrow="SOMETIMES" />
|
||||
<RowConstraints maxHeight="28.0" minHeight="28.0" prefHeight="28.0" vgrow="SOMETIMES" />
|
||||
<RowConstraints maxHeight="28.0" minHeight="28.0" prefHeight="28.0" vgrow="SOMETIMES" />
|
||||
<RowConstraints maxHeight="28.0" minHeight="28.0" prefHeight="28.0" vgrow="SOMETIMES" />
|
||||
<RowConstraints maxHeight="1.7976931348623157E308" minHeight="10.0" prefHeight="232.0" vgrow="SOMETIMES" />
|
||||
</rowConstraints>
|
||||
<children>
|
||||
<GridPane fx:id="grd_advanced" disable="true" prefHeight="161.0" prefWidth="299.0" style="-fx-border-color: #888888; -fx-border-radius: 5px;" GridPane.rowIndex="3">
|
||||
<GridPane fx:id="grd_advanced" disable="true" prefHeight="161.0" prefWidth="299.0" style="-fx-border-color: #888888; -fx-border-radius: 5px;" GridPane.rowIndex="4">
|
||||
<columnConstraints>
|
||||
<ColumnConstraints hgrow="SOMETIMES" minWidth="10.0" prefWidth="100.0" />
|
||||
</columnConstraints>
|
||||
@ -50,7 +44,7 @@
|
||||
<RowConstraints maxHeight="30.0" minHeight="30.0" prefHeight="30.0" vgrow="SOMETIMES" />
|
||||
</rowConstraints>
|
||||
<GridPane.margin>
|
||||
<Insets bottom="20.0" left="10.0" right="10.0" top="6.0" />
|
||||
<Insets bottom="10.0" left="10.0" right="10.0" top="6.0" />
|
||||
</GridPane.margin>
|
||||
<padding>
|
||||
<Insets left="7.0" top="3.0" />
|
||||
@ -110,7 +104,7 @@
|
||||
</GridPane>
|
||||
</children>
|
||||
</GridPane>
|
||||
<CheckBox fx:id="cbx_advanced" mnemonicParsing="false" text="Advanced" textFill="#000000ba" GridPane.rowIndex="2">
|
||||
<CheckBox fx:id="cbx_advanced" mnemonicParsing="false" text="Advanced" textFill="#000000ba" GridPane.rowIndex="3">
|
||||
<GridPane.margin>
|
||||
<Insets left="10.0" top="2.0" />
|
||||
</GridPane.margin>
|
||||
@ -118,7 +112,12 @@
|
||||
<Insets top="2.0" />
|
||||
</padding>
|
||||
</CheckBox>
|
||||
<CheckBox fx:id="cbx_gpython" mnemonicParsing="false" onAction="#gpythonCbxClick" text="Enable G-Python scripting" textFill="#000000ba" GridPane.rowIndex="1">
|
||||
<CheckBox fx:id="cbx_gpython" mnemonicParsing="false" onAction="#gpythonCbxClick" text="G-Python scripting" textFill="#000000ba" GridPane.rowIndex="2">
|
||||
<GridPane.margin>
|
||||
<Insets left="10.0" top="2.0" />
|
||||
</GridPane.margin>
|
||||
</CheckBox>
|
||||
<CheckBox fx:id="cbx_admin" layoutX="20.0" layoutY="25.0" mnemonicParsing="false" onAction="#adminCbxClick" selected="true" text="Client-side staff permissions" textFill="#000000ba" GridPane.rowIndex="1">
|
||||
<GridPane.margin>
|
||||
<Insets left="10.0" top="2.0" />
|
||||
</GridPane.margin>
|
||||
|
Loading…
Reference in New Issue
Block a user