mirror of
https://github.com/2006-Scape/Parabot.git
synced 2026-07-08 00:38:38 +00:00
Added Uliratha
This commit is contained in:
@@ -6,7 +6,8 @@ package org.parabot.core;
|
|||||||
* @author Everel
|
* @author Everel
|
||||||
*/
|
*/
|
||||||
public class Configuration {
|
public class Configuration {
|
||||||
public static final String LOGIN_SERVER = "https://www.parabot.org/community/api/login.php?username=%s&password=%s";
|
// public static final String LOGIN_SERVER = "https://www.parabot.org/community/api/login.php?username=%s&password=%s";
|
||||||
|
public static final String LOGIN_SERVER = "http://bdn.parabot.org/api/v2/users/login";
|
||||||
public static final String GET_SCRIPTS = "http://bdn.parabot.org/api/get.php?action=scripts_scripts&server=";
|
public static final String GET_SCRIPTS = "http://bdn.parabot.org/api/get.php?action=scripts_scripts&server=";
|
||||||
public static final String GET_SCRIPT = "http://bdn.parabot.org/api/get.php?action=scripts_script&id=";
|
public static final String GET_SCRIPT = "http://bdn.parabot.org/api/get.php?action=scripts_script&id=";
|
||||||
public static final String GET_SERVER_PROVIDERS = "http://bdn.parabot.org/api/get.php?action=server_providers";
|
public static final String GET_SERVER_PROVIDERS = "http://bdn.parabot.org/api/get.php?action=server_providers";
|
||||||
|
|||||||
@@ -1,5 +1,6 @@
|
|||||||
package org.parabot.core;
|
package org.parabot.core;
|
||||||
|
|
||||||
|
import org.json.simple.parser.JSONParser;
|
||||||
import org.parabot.core.asm.ASMClassLoader;
|
import org.parabot.core.asm.ASMClassLoader;
|
||||||
import org.parabot.core.classpath.ClassPath;
|
import org.parabot.core.classpath.ClassPath;
|
||||||
import org.parabot.core.desc.ServerProviderInfo;
|
import org.parabot.core.desc.ServerProviderInfo;
|
||||||
@@ -13,6 +14,7 @@ import org.parabot.environment.input.Keyboard;
|
|||||||
import org.parabot.environment.input.Mouse;
|
import org.parabot.environment.input.Mouse;
|
||||||
import org.parabot.environment.scripts.Script;
|
import org.parabot.environment.scripts.Script;
|
||||||
import org.parabot.environment.scripts.randoms.RandomHandler;
|
import org.parabot.environment.scripts.randoms.RandomHandler;
|
||||||
|
import org.parabot.environment.scripts.uliratha.UlirathaClient;
|
||||||
import org.parabot.environment.servers.ServerProvider;
|
import org.parabot.environment.servers.ServerProvider;
|
||||||
|
|
||||||
import java.applet.Applet;
|
import java.applet.Applet;
|
||||||
@@ -47,6 +49,8 @@ public class Context {
|
|||||||
private Mouse mouse;
|
private Mouse mouse;
|
||||||
private Keyboard keyboard;
|
private Keyboard keyboard;
|
||||||
private ServerProviderInfo providerInfo;
|
private ServerProviderInfo providerInfo;
|
||||||
|
private UlirathaClient ulirathaClient;
|
||||||
|
private JSONParser jsonParser;
|
||||||
|
|
||||||
private Context(final ServerProvider serverProvider) {
|
private Context(final ServerProvider serverProvider) {
|
||||||
threadGroups.put(Thread.currentThread().getThreadGroup(), this);
|
threadGroups.put(Thread.currentThread().getThreadGroup(), this);
|
||||||
@@ -58,6 +62,8 @@ public class Context {
|
|||||||
this.classLoader = new ASMClassLoader(classPath);
|
this.classLoader = new ASMClassLoader(classPath);
|
||||||
this.randomHandler = new RandomHandler();
|
this.randomHandler = new RandomHandler();
|
||||||
|
|
||||||
|
this.jsonParser = new JSONParser();
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public static Context getInstance(ServerProvider serverProvider) {
|
public static Context getInstance(ServerProvider serverProvider) {
|
||||||
@@ -325,7 +331,19 @@ public class Context {
|
|||||||
return username;
|
return username;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public UlirathaClient getUlirathaClient() {
|
||||||
|
return ulirathaClient;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setUlirathaClient(UlirathaClient ulirathaClient) {
|
||||||
|
this.ulirathaClient = ulirathaClient;
|
||||||
|
}
|
||||||
|
|
||||||
public static void setUsername(String username) {
|
public static void setUsername(String username) {
|
||||||
Context.username = username;
|
Context.username = username;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public JSONParser getJsonParser() {
|
||||||
|
return jsonParser;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -9,12 +9,11 @@ import java.nio.file.Paths;
|
|||||||
import java.security.DigestInputStream;
|
import java.security.DigestInputStream;
|
||||||
import java.security.MessageDigest;
|
import java.security.MessageDigest;
|
||||||
import java.security.NoSuchAlgorithmException;
|
import java.security.NoSuchAlgorithmException;
|
||||||
import java.util.ArrayList;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* The core of parabot
|
* The core of parabot
|
||||||
*
|
*
|
||||||
* @author Everel
|
* @author Everel, JKetelaar
|
||||||
*/
|
*/
|
||||||
public class Core {
|
public class Core {
|
||||||
public static boolean mDebug;
|
public static boolean mDebug;
|
||||||
|
|||||||
@@ -15,6 +15,7 @@ import java.net.URLEncoder;
|
|||||||
public class Account {
|
public class Account {
|
||||||
private String username;
|
private String username;
|
||||||
private String password;
|
private String password;
|
||||||
|
private String api;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
*
|
*
|
||||||
@@ -26,7 +27,13 @@ public class Account {
|
|||||||
this.password = password;
|
this.password = password;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
public Account(String username, String password, String api) {
|
||||||
|
this.username = username;
|
||||||
|
this.password = password;
|
||||||
|
this.api = api;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
* Gets user's parabot account name
|
* Gets user's parabot account name
|
||||||
* @return username.
|
* @return username.
|
||||||
*/
|
*/
|
||||||
@@ -68,4 +75,7 @@ public class Account {
|
|||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public String getApi() {
|
||||||
|
return api;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,5 +1,6 @@
|
|||||||
package org.parabot.core.forum;
|
package org.parabot.core.forum;
|
||||||
|
|
||||||
|
import org.json.simple.JSONObject;
|
||||||
import org.parabot.core.Configuration;
|
import org.parabot.core.Configuration;
|
||||||
import org.parabot.core.Core;
|
import org.parabot.core.Core;
|
||||||
import org.parabot.core.parsers.scripts.BDNScripts;
|
import org.parabot.core.parsers.scripts.BDNScripts;
|
||||||
@@ -9,6 +10,8 @@ import org.parabot.environment.api.utils.WebUtil;
|
|||||||
import org.parabot.environment.scripts.executers.BDNScriptsExecuter;
|
import org.parabot.environment.scripts.executers.BDNScriptsExecuter;
|
||||||
import org.parabot.environment.servers.executers.PublicServerExecuter;
|
import org.parabot.environment.servers.executers.PublicServerExecuter;
|
||||||
|
|
||||||
|
import java.io.BufferedReader;
|
||||||
|
import java.net.URL;
|
||||||
import java.net.URLEncoder;
|
import java.net.URLEncoder;
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
|
|
||||||
@@ -61,20 +64,25 @@ public final class AccountManager {
|
|||||||
if (account != null) {
|
if (account != null) {
|
||||||
throw new IllegalStateException("Already logged in.");
|
throw new IllegalStateException("Already logged in.");
|
||||||
}
|
}
|
||||||
String contents;
|
JSONObject result;
|
||||||
try {
|
try {
|
||||||
contents = WebUtil.getContents(String.format(
|
BufferedReader contents = WebUtil.getReader(WebUtil.getConnection(
|
||||||
Configuration.LOGIN_SERVER,
|
new URL(Configuration.LOGIN_SERVER),
|
||||||
URLEncoder.encode(user, "UTF-8"),
|
URLEncoder.encode(user, "UTF-8"),
|
||||||
URLEncoder.encode(pass, "UTF-8")));
|
URLEncoder.encode(pass, "UTF-8")));
|
||||||
|
result = (JSONObject) WebUtil.getJsonParser().parse(contents);
|
||||||
|
|
||||||
} catch (Throwable t) {
|
} catch (Throwable t) {
|
||||||
t.printStackTrace();
|
t.printStackTrace();
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (contents.equals("correct")) {
|
if (result != null){
|
||||||
account = new Account(user, pass);
|
if (result.get("complete") != null) {
|
||||||
return true;
|
String api = (String) ((JSONObject) result.get("data")).get("api");
|
||||||
|
account = new Account(user, pass, api);
|
||||||
|
return true;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -0,0 +1,67 @@
|
|||||||
|
package org.parabot.core.lib.naga;
|
||||||
|
|
||||||
|
import org.parabot.core.Core;
|
||||||
|
import org.parabot.core.Directories;
|
||||||
|
import org.parabot.core.build.BuildPath;
|
||||||
|
import org.parabot.core.lib.Library;
|
||||||
|
|
||||||
|
import java.io.File;
|
||||||
|
import java.net.URL;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author JKetelaar
|
||||||
|
*/
|
||||||
|
public class Naga extends Library {
|
||||||
|
|
||||||
|
private static boolean valid;
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void init() {
|
||||||
|
if (!hasJar()) {
|
||||||
|
System.err.println("Failed to load javafx... [jar missing]");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
Core.verbose("Adding javafx jar file to build path: "
|
||||||
|
+ getJarFileURL().getPath());
|
||||||
|
BuildPath.add(getJarFileURL());
|
||||||
|
|
||||||
|
try {
|
||||||
|
Class.forName("javafx.application.Application");
|
||||||
|
valid = true;
|
||||||
|
} catch (ClassNotFoundException e) {
|
||||||
|
System.err
|
||||||
|
.println("Failed to add javafx to build path, or incorrupt download");
|
||||||
|
}
|
||||||
|
|
||||||
|
Core.verbose("JavaFX initialized.");
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean isAdded() {
|
||||||
|
return valid;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public File getJarFile() {
|
||||||
|
return new File(Directories.getCachePath(), "naga.jar");
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public URL getDownloadLink() {
|
||||||
|
try {
|
||||||
|
return new URL("http://bdn.parabot.org/api/v2/data/dependencies/naga");
|
||||||
|
} catch (Throwable t) {
|
||||||
|
t.printStackTrace();
|
||||||
|
}
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String getLibraryName() {
|
||||||
|
return "Naga";
|
||||||
|
}
|
||||||
|
|
||||||
|
public static boolean isValid() {
|
||||||
|
return valid;
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -15,70 +15,71 @@ import java.awt.event.*;
|
|||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
*
|
|
||||||
* The bot user interface
|
* The bot user interface
|
||||||
*
|
*
|
||||||
* @author Dane, Everel, Paradox
|
* @author Dane, Everel, Paradox
|
||||||
*
|
|
||||||
*/
|
*/
|
||||||
public class BotUI extends JFrame implements ActionListener, ComponentListener, WindowListener {
|
public class BotUI extends JFrame implements ActionListener, ComponentListener, WindowListener {
|
||||||
|
|
||||||
private static final long serialVersionUID = -2126184292879805519L;
|
private static final long serialVersionUID = -2126184292879805519L;
|
||||||
private static BotUI instance;
|
private static BotUI instance;
|
||||||
private static JDialog dialog;
|
private static JDialog dialog;
|
||||||
|
|
||||||
private JMenuItem run, pause, stop;
|
private JMenuItem run, pause, stop;
|
||||||
private boolean runScript, pauseScript;
|
private boolean runScript, pauseScript;
|
||||||
|
|
||||||
public BotUI(String username, String password) {
|
public BotUI(String username, String password) {
|
||||||
if (instance != null) {
|
if (instance != null) {
|
||||||
throw new IllegalStateException("BotUI already created");
|
throw new IllegalStateException("BotUI already created");
|
||||||
}
|
}
|
||||||
instance = this;
|
instance = this;
|
||||||
//WebLookAndFeel.install();
|
//WebLookAndFeel.install();
|
||||||
JPopupMenu.setDefaultLightWeightPopupEnabled(false);
|
JPopupMenu.setDefaultLightWeightPopupEnabled(false);
|
||||||
|
|
||||||
setTitle("Parabot");
|
setTitle("Parabot");
|
||||||
setResizable(false);
|
setResizable(false);
|
||||||
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
|
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
|
||||||
createMenu();
|
createMenu();
|
||||||
|
|
||||||
setLayout(new BorderLayout());
|
setLayout(new BorderLayout());
|
||||||
addComponentListener(this);
|
addComponentListener(this);
|
||||||
addWindowListener(this);
|
addWindowListener(this);
|
||||||
|
|
||||||
add(GamePanel.getInstance());
|
add(GamePanel.getInstance());
|
||||||
GamePanel.getInstance().add(VerboseLoader.get(username, password), BorderLayout.CENTER);
|
GamePanel.getInstance().add(VerboseLoader.get(username, password), BorderLayout.CENTER);
|
||||||
add(Logger.getInstance(), BorderLayout.SOUTH);
|
add(Logger.getInstance(), BorderLayout.SOUTH);
|
||||||
|
|
||||||
SwingUtil.setParabotIcons(this);
|
SwingUtil.setParabotIcons(this);
|
||||||
|
|
||||||
pack();
|
pack();
|
||||||
setLocationRelativeTo(null);
|
setLocationRelativeTo(null);
|
||||||
BotDialog.getInstance(this);
|
BotDialog.getInstance(this);
|
||||||
|
|
||||||
if (!OperatingSystem.getOS().equals(OperatingSystem.WINDOWS)) {
|
if (!OperatingSystem.getOS().equals(OperatingSystem.WINDOWS)) {
|
||||||
BotDialog.getInstance().setVisible(false);
|
BotDialog.getInstance().setVisible(false);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public static BotUI getInstance() {
|
public static BotUI getInstance() {
|
||||||
return instance;
|
return instance;
|
||||||
}
|
}
|
||||||
|
|
||||||
private void createMenu() {
|
private void createMenu() {
|
||||||
JMenuBar menuBar = new JMenuBar();
|
JMenuBar menuBar = new JMenuBar();
|
||||||
|
|
||||||
JMenu file = new JMenu("File");
|
JMenu file = new JMenu("File");
|
||||||
JMenu scripts = new JMenu("Script");
|
JMenu scripts = new JMenu("Script");
|
||||||
|
|
||||||
|
JMenuItem screenshot = new JMenuItem("Create screenshot");
|
||||||
JMenuItem proxy = new JMenuItem("Network");
|
JMenuItem proxy = new JMenuItem("Network");
|
||||||
JMenuItem randoms = new JMenuItem("Randoms");
|
JMenuItem randoms = new JMenuItem("Randoms");
|
||||||
JMenuItem dialog = new JCheckBoxMenuItem("Disable dialog");
|
JMenuItem dialog = new JCheckBoxMenuItem("Disable dialog");
|
||||||
|
|
||||||
if (!OperatingSystem.getOS().equals(OperatingSystem.WINDOWS)) {
|
JMenuItem api = new JMenuItem("Set API key");
|
||||||
dialog.setSelected(true);
|
|
||||||
}
|
if (!OperatingSystem.getOS().equals(OperatingSystem.WINDOWS)) {
|
||||||
|
dialog.setSelected(true);
|
||||||
|
}
|
||||||
|
|
||||||
JMenuItem explorer = new JMenuItem("Reflection explorer");
|
JMenuItem explorer = new JMenuItem("Reflection explorer");
|
||||||
JMenuItem exit = new JMenuItem("Exit");
|
JMenuItem exit = new JMenuItem("Exit");
|
||||||
@@ -94,166 +95,176 @@ public class BotUI extends JFrame implements ActionListener, ComponentListener,
|
|||||||
stop.setEnabled(false);
|
stop.setEnabled(false);
|
||||||
stop.setIcon(new ImageIcon(Images.getResource("/org/parabot/core/ui/images/stop.png")));
|
stop.setIcon(new ImageIcon(Images.getResource("/org/parabot/core/ui/images/stop.png")));
|
||||||
|
|
||||||
|
screenshot.addActionListener(this);
|
||||||
proxy.addActionListener(this);
|
proxy.addActionListener(this);
|
||||||
randoms.addActionListener(this);
|
randoms.addActionListener(this);
|
||||||
dialog.addActionListener(this);
|
dialog.addActionListener(this);
|
||||||
explorer.addActionListener(this);
|
explorer.addActionListener(this);
|
||||||
exit.addActionListener(this);
|
exit.addActionListener(this);
|
||||||
|
|
||||||
run.addActionListener(this);
|
run.addActionListener(this);
|
||||||
pause.addActionListener(this);
|
pause.addActionListener(this);
|
||||||
stop.addActionListener(this);
|
stop.addActionListener(this);
|
||||||
|
api.addActionListener(this);
|
||||||
|
|
||||||
|
file.add(screenshot);
|
||||||
file.add(proxy);
|
file.add(proxy);
|
||||||
file.add(randoms);
|
file.add(randoms);
|
||||||
file.add(dialog);
|
file.add(dialog);
|
||||||
file.add(explorer);
|
file.add(explorer);
|
||||||
file.add(exit);
|
file.add(exit);
|
||||||
|
|
||||||
scripts.add(run);
|
scripts.add(run);
|
||||||
scripts.add(pause);
|
scripts.add(pause);
|
||||||
scripts.add(stop);
|
scripts.add(stop);
|
||||||
|
scripts.add(api);
|
||||||
|
|
||||||
menuBar.add(file);
|
menuBar.add(file);
|
||||||
menuBar.add(scripts);
|
menuBar.add(scripts);
|
||||||
|
|
||||||
setJMenuBar(menuBar);
|
setJMenuBar(menuBar);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void actionPerformed(ActionEvent e) {
|
public void actionPerformed(ActionEvent e) {
|
||||||
String command = e.getActionCommand();
|
String command = e.getActionCommand();
|
||||||
|
|
||||||
switch (command) {
|
switch (command) {
|
||||||
case "Exit":
|
case "Set API key":
|
||||||
System.exit(0);
|
String api = JOptionPane.showInputDialog(this, "You can gather your API key from http://bdn.parabot.org/account/");
|
||||||
break;
|
break;
|
||||||
|
case "Create screenshot":
|
||||||
|
JOptionPane.showMessageDialog(this, "We are still working on this...");
|
||||||
|
break;
|
||||||
|
case "Exit":
|
||||||
|
System.exit(0);
|
||||||
|
break;
|
||||||
case "Network":
|
case "Network":
|
||||||
NetworkUI.getInstance().setVisible(true);
|
NetworkUI.getInstance().setVisible(true);
|
||||||
break;
|
break;
|
||||||
case "Randoms":
|
case "Randoms":
|
||||||
ArrayList<String> randoms = new ArrayList<>();
|
ArrayList<String> randoms = new ArrayList<>();
|
||||||
for (Random r : Context.getInstance().getRandomHandler().getRandoms()) {
|
for (Random r : Context.getInstance().getRandomHandler().getRandoms()) {
|
||||||
randoms.add(r.getName());
|
randoms.add(r.getName());
|
||||||
}
|
}
|
||||||
RandomUI.getInstance().openFrame(randoms);
|
RandomUI.getInstance().openFrame(randoms);
|
||||||
break;
|
break;
|
||||||
case "Reflection explorer":
|
case "Reflection explorer":
|
||||||
new ReflectUI().setVisible(true);
|
new ReflectUI().setVisible(true);
|
||||||
break;
|
break;
|
||||||
case "Run":
|
case "Run":
|
||||||
if(pauseScript) {
|
if (pauseScript) {
|
||||||
pauseScript = false;
|
pauseScript = false;
|
||||||
pause.setEnabled(true);
|
pause.setEnabled(true);
|
||||||
run.setEnabled(false);
|
run.setEnabled(false);
|
||||||
setScriptState(Script.STATE_RUNNING);
|
setScriptState(Script.STATE_RUNNING);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
new ScriptSelector().setVisible(true);
|
new ScriptSelector().setVisible(true);
|
||||||
break;
|
break;
|
||||||
case "Pause":
|
case "Pause":
|
||||||
setScriptState(Script.STATE_PAUSE);
|
setScriptState(Script.STATE_PAUSE);
|
||||||
pause.setEnabled(false);
|
pause.setEnabled(false);
|
||||||
run.setEnabled(true);
|
run.setEnabled(true);
|
||||||
pauseScript = true;
|
pauseScript = true;
|
||||||
break;
|
break;
|
||||||
case "Stop":
|
case "Stop":
|
||||||
setScriptState(Script.STATE_STOPPED);
|
setScriptState(Script.STATE_STOPPED);
|
||||||
break;
|
break;
|
||||||
case "Disable dialog":
|
case "Disable dialog":
|
||||||
BotDialog.getInstance().setVisible(!dialog.isVisible());
|
BotDialog.getInstance().setVisible(!dialog.isVisible());
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
System.out.println("Invalid command: " + command);
|
System.out.println("Invalid command: " + command);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
protected void setDialog(JDialog dialog) {
|
protected void setDialog(JDialog dialog) {
|
||||||
BotUI.dialog = dialog;
|
BotUI.dialog = dialog;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void componentMoved(ComponentEvent e) {
|
public void componentMoved(ComponentEvent e) {
|
||||||
if(dialog == null || !isVisible()) {
|
if (dialog == null || !isVisible()) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
Point gameLocation = GamePanel.getInstance().getLocationOnScreen();
|
Point gameLocation = GamePanel.getInstance().getLocationOnScreen();
|
||||||
dialog.setLocation(gameLocation.x, gameLocation.y);
|
dialog.setLocation(gameLocation.x, gameLocation.y);
|
||||||
}
|
}
|
||||||
|
|
||||||
public void toggleRun() {
|
public void toggleRun() {
|
||||||
runScript = !runScript;
|
runScript = !runScript;
|
||||||
if(runScript) {
|
if (runScript) {
|
||||||
scriptRunning();
|
scriptRunning();
|
||||||
} else {
|
} else {
|
||||||
scriptStopped();
|
scriptStopped();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private void scriptRunning() {
|
private void scriptRunning() {
|
||||||
run.setEnabled(false);
|
run.setEnabled(false);
|
||||||
pause.setEnabled(true);
|
pause.setEnabled(true);
|
||||||
stop.setEnabled(true);
|
stop.setEnabled(true);
|
||||||
}
|
}
|
||||||
|
|
||||||
private void scriptStopped() {
|
private void scriptStopped() {
|
||||||
run.setEnabled(true);
|
run.setEnabled(true);
|
||||||
pause.setEnabled(false);
|
pause.setEnabled(false);
|
||||||
stop.setEnabled(false);
|
stop.setEnabled(false);
|
||||||
}
|
}
|
||||||
|
|
||||||
private void setScriptState(int state) {
|
private void setScriptState(int state) {
|
||||||
if (Context.getInstance().getRunningScript() != null) {
|
if (Context.getInstance().getRunningScript() != null) {
|
||||||
Context.getInstance().getRunningScript().setState(state);
|
Context.getInstance().getRunningScript().setState(state);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void componentResized(ComponentEvent e) {
|
public void componentResized(ComponentEvent e) {
|
||||||
if(isVisible()) {
|
if (isVisible()) {
|
||||||
BotDialog.getInstance().setSize(getSize());
|
BotDialog.getInstance().setSize(getSize());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void componentShown(ComponentEvent e) {
|
public void componentShown(ComponentEvent e) {
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void componentHidden(ComponentEvent e) {
|
public void componentHidden(ComponentEvent e) {
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void windowActivated(WindowEvent arg0) {
|
public void windowActivated(WindowEvent arg0) {
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void windowClosed(WindowEvent arg0) {
|
public void windowClosed(WindowEvent arg0) {
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void windowClosing(WindowEvent e) {
|
public void windowClosing(WindowEvent e) {
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void windowDeactivated(WindowEvent arg0) {
|
public void windowDeactivated(WindowEvent arg0) {
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void windowDeiconified(WindowEvent arg0) {
|
public void windowDeiconified(WindowEvent arg0) {
|
||||||
if(isVisible()) {
|
if (isVisible()) {
|
||||||
BotDialog.getInstance().setVisible(false);
|
BotDialog.getInstance().setVisible(false);
|
||||||
BotDialog.getInstance().setVisible(true);
|
BotDialog.getInstance().setVisible(true);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void windowIconified(WindowEvent arg0) {
|
public void windowIconified(WindowEvent arg0) {
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void windowOpened(WindowEvent arg0) {
|
public void windowOpened(WindowEvent arg0) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,5 +1,6 @@
|
|||||||
package org.parabot.core.ui;
|
package org.parabot.core.ui;
|
||||||
|
|
||||||
|
import org.parabot.core.Context;
|
||||||
import org.parabot.core.ui.components.GamePanel;
|
import org.parabot.core.ui.components.GamePanel;
|
||||||
|
|
||||||
import javax.swing.*;
|
import javax.swing.*;
|
||||||
@@ -46,5 +47,9 @@ public class Logger extends JPanel {
|
|||||||
|
|
||||||
public static void addMessage(String message){
|
public static void addMessage(String message){
|
||||||
instance.model.addElement(message);
|
instance.model.addElement(message);
|
||||||
|
|
||||||
|
if (Context.getInstance().getUlirathaClient() != null) {
|
||||||
|
Context.getInstance().getUlirathaClient().sendMessage(message);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -52,7 +52,7 @@ public class LoginUI extends JFrame {
|
|||||||
} else {
|
} else {
|
||||||
Core.verbose("Failed to log in.");
|
Core.verbose("Failed to log in.");
|
||||||
JOptionPane.showMessageDialog(null,
|
JOptionPane.showMessageDialog(null,
|
||||||
"Incorrect username or password.", "Error",
|
"Incorrect username or password. Have you tried logging into http://bdn.parabot.org/account/", "Error",
|
||||||
JOptionPane.ERROR_MESSAGE);
|
JOptionPane.ERROR_MESSAGE);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -4,6 +4,7 @@ import org.parabot.core.Core;
|
|||||||
import org.parabot.core.desc.ServerDescription;
|
import org.parabot.core.desc.ServerDescription;
|
||||||
import org.parabot.core.lib.Library;
|
import org.parabot.core.lib.Library;
|
||||||
import org.parabot.core.lib.javafx.JavaFX;
|
import org.parabot.core.lib.javafx.JavaFX;
|
||||||
|
import org.parabot.core.lib.naga.Naga;
|
||||||
import org.parabot.core.parsers.servers.ServerParser;
|
import org.parabot.core.parsers.servers.ServerParser;
|
||||||
import org.parabot.core.ui.components.VerboseLoader;
|
import org.parabot.core.ui.components.VerboseLoader;
|
||||||
import org.parabot.environment.api.utils.WebUtil;
|
import org.parabot.environment.api.utils.WebUtil;
|
||||||
@@ -29,6 +30,7 @@ public class Environment {
|
|||||||
|
|
||||||
LinkedList<Library> libs = new LinkedList<>();
|
LinkedList<Library> libs = new LinkedList<>();
|
||||||
libs.add(new JavaFX());
|
libs.add(new JavaFX());
|
||||||
|
libs.add(new Naga());
|
||||||
|
|
||||||
for(Library lib : libs) {
|
for(Library lib : libs) {
|
||||||
if(!lib.hasJar()) {
|
if(!lib.hasJar()) {
|
||||||
|
|||||||
@@ -1,5 +1,6 @@
|
|||||||
package org.parabot.environment.api.utils;
|
package org.parabot.environment.api.utils;
|
||||||
|
|
||||||
|
import org.json.simple.parser.JSONParser;
|
||||||
import org.parabot.core.io.ProgressListener;
|
import org.parabot.core.io.ProgressListener;
|
||||||
import org.parabot.core.io.SizeInputStream;
|
import org.parabot.core.io.SizeInputStream;
|
||||||
|
|
||||||
@@ -17,6 +18,9 @@ import java.net.URLEncoder;
|
|||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
public class WebUtil {
|
public class WebUtil {
|
||||||
|
|
||||||
|
private static JSONParser jsonParser;
|
||||||
|
|
||||||
private static String agent = "Mozilla/5.0 (Wind0ws NT 6.1; WOW64) AppleWebKit/535.1 (KHTML, like Gecko) Chrome/13.0.782.112 Safari/535.1";
|
private static String agent = "Mozilla/5.0 (Wind0ws NT 6.1; WOW64) AppleWebKit/535.1 (KHTML, like Gecko) Chrome/13.0.782.112 Safari/535.1";
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -267,4 +271,10 @@ public class WebUtil {
|
|||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static JSONParser getJsonParser() {
|
||||||
|
if (jsonParser == null){
|
||||||
|
jsonParser = new JSONParser();
|
||||||
|
}
|
||||||
|
return jsonParser;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -3,6 +3,7 @@ package org.parabot.environment.scripts;
|
|||||||
import org.parabot.core.Context;
|
import org.parabot.core.Context;
|
||||||
import org.parabot.core.Core;
|
import org.parabot.core.Core;
|
||||||
import org.parabot.core.ui.BotUI;
|
import org.parabot.core.ui.BotUI;
|
||||||
|
import org.parabot.core.ui.Logger;
|
||||||
import org.parabot.environment.api.utils.Time;
|
import org.parabot.environment.api.utils.Time;
|
||||||
import org.parabot.environment.scripts.framework.*;
|
import org.parabot.environment.scripts.framework.*;
|
||||||
import org.parabot.environment.scripts.framework.Frameworks;
|
import org.parabot.environment.scripts.framework.Frameworks;
|
||||||
@@ -66,14 +67,6 @@ public class Script implements Runnable {
|
|||||||
public final void run() {
|
public final void run() {
|
||||||
Context context = Context.getInstance();
|
Context context = Context.getInstance();
|
||||||
|
|
||||||
// Core.verbose("Initializing security manager...");
|
|
||||||
// String previousPolicy = System.getProperty("java.security.policy");
|
|
||||||
// SecurityManager previousSecurityManager = System.getSecurityManager();
|
|
||||||
|
|
||||||
// System.setProperty("java.security.policy", Directories.getSettingsPath() + "/java.policy");
|
|
||||||
// SecurityManagerDemo sm = new SecurityManagerDemo();
|
|
||||||
// System.setSecurityManager(sm);
|
|
||||||
|
|
||||||
Core.verbose("Initializing script...");
|
Core.verbose("Initializing script...");
|
||||||
context.getServerProvider().initScript(this);
|
context.getServerProvider().initScript(this);
|
||||||
Core.verbose("Done.");
|
Core.verbose("Done.");
|
||||||
@@ -102,7 +95,7 @@ public class Script implements Runnable {
|
|||||||
frameWorkType = TYPE_OTHER;
|
frameWorkType = TYPE_OTHER;
|
||||||
}
|
}
|
||||||
Core.verbose("Running script...");
|
Core.verbose("Running script...");
|
||||||
System.out.println("Script started.");
|
Logger.addMessage("Script started.");
|
||||||
try {
|
try {
|
||||||
while(this.state != STATE_STOPPED) {
|
while(this.state != STATE_STOPPED) {
|
||||||
if(context.getRandomHandler().checkAndRun()) {
|
if(context.getRandomHandler().checkAndRun()) {
|
||||||
@@ -122,13 +115,17 @@ public class Script implements Runnable {
|
|||||||
}
|
}
|
||||||
Core.verbose("Script stopped/finished, unloading and stopping...");
|
Core.verbose("Script stopped/finished, unloading and stopping...");
|
||||||
onFinish();
|
onFinish();
|
||||||
System.out.println("Script stopped.");
|
Logger.addMessage("Script stopped.");
|
||||||
context.getServerProvider().unloadScript(this);
|
context.getServerProvider().unloadScript(this);
|
||||||
this.state = STATE_STOPPED;
|
this.state = STATE_STOPPED;
|
||||||
context.setRunningScript(null);
|
context.setRunningScript(null);
|
||||||
|
|
||||||
|
if (context.getUlirathaClient() != null) {
|
||||||
|
context.getUlirathaClient().disconnect();
|
||||||
|
context.setUlirathaClient(null);
|
||||||
|
}
|
||||||
|
|
||||||
BotUI.getInstance().toggleRun();
|
BotUI.getInstance().toggleRun();
|
||||||
// System.setProperty("java.security.policy", previousPolicy);
|
|
||||||
// System.setSecurityManager(previousSecurityManager);
|
|
||||||
Core.verbose("Done.");
|
Core.verbose("Done.");
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -167,4 +164,7 @@ public class Script implements Runnable {
|
|||||||
Time.sleep(ms);
|
Time.sleep(ms);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public int getState() {
|
||||||
|
return state;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -8,6 +8,7 @@ import org.parabot.core.ui.utils.UILog;
|
|||||||
import org.parabot.environment.api.utils.WebUtil;
|
import org.parabot.environment.api.utils.WebUtil;
|
||||||
import org.parabot.environment.scripts.Script;
|
import org.parabot.environment.scripts.Script;
|
||||||
import org.parabot.environment.scripts.loader.JavaScriptLoader;
|
import org.parabot.environment.scripts.loader.JavaScriptLoader;
|
||||||
|
import org.parabot.environment.scripts.uliratha.UlirathaExecuter;
|
||||||
|
|
||||||
import javax.swing.*;
|
import javax.swing.*;
|
||||||
import java.lang.reflect.Constructor;
|
import java.lang.reflect.Constructor;
|
||||||
@@ -47,51 +48,52 @@ public class BDNScriptsExecuter extends ScriptExecuter {
|
|||||||
Configuration.GET_SCRIPT + this.id), manager.getAccount().getURLUsername(), manager.getAccount().getURLPassword());
|
Configuration.GET_SCRIPT + this.id), manager.getAccount().getURLUsername(), manager.getAccount().getURLPassword());
|
||||||
|
|
||||||
final String contentType = urlConnection.getHeaderField("Content-type");
|
final String contentType = urlConnection.getHeaderField("Content-type");
|
||||||
if(contentType.equals("text/html")) {
|
switch (contentType) {
|
||||||
// failed to fetch script
|
case "text/html":
|
||||||
UILog.log("Error", "Failed to load BDN script, error: [Page returned: " + WebUtil.getContents(urlConnection) + "]", JOptionPane.ERROR_MESSAGE);
|
// failed to fetch script
|
||||||
} else if(contentType.equals("application/jar")) {
|
UILog.log("Error", "Failed to load BDN script, error: [Page returned: " + WebUtil.getContents(urlConnection) + "]", JOptionPane.ERROR_MESSAGE);
|
||||||
|
break;
|
||||||
|
case "application/jar":
|
||||||
|
//// JAR LOADING PART ////////
|
||||||
|
// succesfull request, jar returned
|
||||||
|
final ClassPath classPath = new ClassPath();
|
||||||
|
classPath.addJar(urlConnection);
|
||||||
|
|
||||||
//// JAR LOADING PART ////////
|
final JavaScriptLoader loader = new JavaScriptLoader(classPath);
|
||||||
|
final String[] scriptClasses = loader.getScriptClassNames();
|
||||||
|
if (scriptClasses == null || scriptClasses.length == 0) {
|
||||||
|
UILog.log("Error", "Failed to load BDN script, error: [No script found in jar file.]", JOptionPane.ERROR_MESSAGE);
|
||||||
|
return;
|
||||||
|
} else if (scriptClasses.length > 1) {
|
||||||
|
UILog.log("Error", "Failed to load BDN script, error: [Multiple scripts found in jar file.]");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
final String className = scriptClasses[0];
|
||||||
|
try {
|
||||||
|
final Class<?> scriptClass = loader.loadClass(className);
|
||||||
|
final Constructor<?> con = scriptClass.getConstructor();
|
||||||
|
final Script script = (Script) con.newInstance();
|
||||||
|
super.finalize(tg, script);
|
||||||
|
|
||||||
// succesfull request, jar returned
|
if (manager.getAccount().getApi() != null) {
|
||||||
final ClassPath classPath = new ClassPath();
|
new UlirathaExecuter(manager.getAccount().getApi()).start(this.id);
|
||||||
classPath.addJar(urlConnection);
|
}
|
||||||
|
} catch (NoClassDefFoundError | ClassNotFoundException ignored) {
|
||||||
final JavaScriptLoader loader = new JavaScriptLoader(classPath);
|
UILog.log("Error", "Failed to load BDN script, error: [This server provider does not support this script]", JOptionPane.ERROR_MESSAGE);
|
||||||
final String[] scriptClasses = loader.getScriptClassNames();
|
} catch (Throwable t) {
|
||||||
if(scriptClasses == null || scriptClasses.length == 0) {
|
t.printStackTrace();
|
||||||
UILog.log("Error", "Failed to load BDN script, error: [No script found in jar file.]", JOptionPane.ERROR_MESSAGE);
|
UILog.log("Error", "Failed to load BDN script, post the stacktrace/error on the parabot forums.", JOptionPane.ERROR_MESSAGE);
|
||||||
return;
|
}
|
||||||
} else if(scriptClasses.length > 1) {
|
//// END JAR LOADING ////
|
||||||
UILog.log("Error", "Failed to load BDN script, error: [Multiple scripts found in jar file.]");
|
break;
|
||||||
return;
|
default:
|
||||||
}
|
UILog.log("Error", "Failed to load BDN script, error: [Unknown content type: " + contentType + "]", JOptionPane.ERROR_MESSAGE);
|
||||||
|
break;
|
||||||
final String className = scriptClasses[0];
|
|
||||||
try {
|
|
||||||
final Class<?> scriptClass = loader.loadClass(className);
|
|
||||||
final Constructor<?> con = scriptClass.getConstructor();
|
|
||||||
final Script script = (Script) con.newInstance();
|
|
||||||
super.finalize(tg, script);
|
|
||||||
} catch (NoClassDefFoundError | ClassNotFoundException ignored) {
|
|
||||||
UILog.log("Error", "Failed to load BDN script, error: [This server provider does not support this script]", JOptionPane.ERROR_MESSAGE);
|
|
||||||
} catch (Throwable t) {
|
|
||||||
t.printStackTrace();
|
|
||||||
UILog.log("Error", "Failed to load BDN script, post the stacktrace/error on the parabot forums.", JOptionPane.ERROR_MESSAGE);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
//// END JAR LOADING ////
|
|
||||||
|
|
||||||
} else {
|
|
||||||
UILog.log("Error", "Failed to load BDN script, error: [Unknown content type: " + contentType + "]", JOptionPane.ERROR_MESSAGE);
|
|
||||||
}
|
}
|
||||||
} catch (Throwable t) {
|
} catch (Throwable t) {
|
||||||
t.printStackTrace();
|
t.printStackTrace();
|
||||||
UILog.log("Error", "Failed to load BDN script, post the stacktrace/error on the parabot forums.", JOptionPane.ERROR_MESSAGE);
|
UILog.log("Error", "Failed to load BDN script, post the stacktrace/error on the parabot forums.", JOptionPane.ERROR_MESSAGE);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,5 +0,0 @@
|
|||||||
package org.parabot.environment.scripts.executers;
|
|
||||||
|
|
||||||
public class SecurityManagerDemo extends SecurityManager {
|
|
||||||
|
|
||||||
}
|
|
||||||
@@ -0,0 +1,156 @@
|
|||||||
|
package org.parabot.environment.scripts.uliratha;
|
||||||
|
|
||||||
|
import naga.ExceptionObserver;
|
||||||
|
import naga.NIOService;
|
||||||
|
import naga.NIOSocket;
|
||||||
|
import naga.SocketObserver;
|
||||||
|
import naga.packetreader.RegularPacketReader;
|
||||||
|
import naga.packetwriter.RegularPacketWriter;
|
||||||
|
import org.parabot.core.ui.Logger;
|
||||||
|
|
||||||
|
import java.io.*;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author JKetelaar
|
||||||
|
*/
|
||||||
|
|
||||||
|
public class UlirathaClient extends Thread {
|
||||||
|
|
||||||
|
private String host;
|
||||||
|
private int port;
|
||||||
|
private NIOSocket socket;
|
||||||
|
private boolean connected;
|
||||||
|
private int scriptID;
|
||||||
|
private String api;
|
||||||
|
private boolean valid;
|
||||||
|
|
||||||
|
public UlirathaClient(String host, int port, int scriptID, String api) {
|
||||||
|
this.host = host;
|
||||||
|
this.port = port;
|
||||||
|
this.scriptID = scriptID;
|
||||||
|
this.api = api;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void run() {
|
||||||
|
connect();
|
||||||
|
}
|
||||||
|
|
||||||
|
private void connect() {
|
||||||
|
try {
|
||||||
|
System.out.println("Connecting....");
|
||||||
|
NIOService service = new NIOService();
|
||||||
|
service.setExceptionObserver(new ExceptionObserver() {
|
||||||
|
@Override
|
||||||
|
public void notifyExceptionThrown(Throwable throwable) {
|
||||||
|
throwable.printStackTrace();
|
||||||
|
if (valid) {
|
||||||
|
reconnect();
|
||||||
|
connected = false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
});
|
||||||
|
socket = service.openSocket(host, port);
|
||||||
|
socket.setPacketReader(new RegularPacketReader(4, true));
|
||||||
|
socket.setPacketWriter(new RegularPacketWriter(4, true));
|
||||||
|
socket.listen(new SocketObserver() {
|
||||||
|
public void connectionOpened(NIOSocket nioSocket) {
|
||||||
|
try {
|
||||||
|
sendObjects(nioSocket, new Object[]{76, scriptID, api});
|
||||||
|
} catch (IOException e) {
|
||||||
|
e.printStackTrace();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public void packetReceived(NIOSocket socket, byte[] packet) {
|
||||||
|
try {
|
||||||
|
DataInputStream stream = new DataInputStream(new ByteArrayInputStream(packet));
|
||||||
|
int packetID = stream.readInt();
|
||||||
|
|
||||||
|
switch (packetID){
|
||||||
|
case 75:
|
||||||
|
valid = stream.readBoolean();
|
||||||
|
if (valid) {
|
||||||
|
Logger.addMessage("We're connected with the Uliratha server!");
|
||||||
|
connected = true;
|
||||||
|
}else{
|
||||||
|
socket.close();
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
} catch (IOException e) {
|
||||||
|
e.printStackTrace();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void packetSent(NIOSocket nioSocket, Object o) {
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
public void connectionBroken(NIOSocket nioSocket, Exception exception) {
|
||||||
|
if (valid) {
|
||||||
|
reconnect();
|
||||||
|
connected = false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
});
|
||||||
|
while (true) {
|
||||||
|
service.selectBlocking();
|
||||||
|
}
|
||||||
|
} catch (IOException e) {
|
||||||
|
if (valid) {
|
||||||
|
reconnect();
|
||||||
|
connected = false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private void reconnect() {
|
||||||
|
try {
|
||||||
|
Thread.sleep(5000);
|
||||||
|
} catch (InterruptedException e) {
|
||||||
|
e.printStackTrace();
|
||||||
|
}
|
||||||
|
connect();
|
||||||
|
}
|
||||||
|
|
||||||
|
public boolean isConnected() {
|
||||||
|
return connected;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void disconnect(){
|
||||||
|
valid = false;
|
||||||
|
socket.close();
|
||||||
|
}
|
||||||
|
|
||||||
|
private void sendObjects(NIOSocket socket, Object[] objects) throws IOException {
|
||||||
|
ByteArrayOutputStream stream = new ByteArrayOutputStream();
|
||||||
|
DataOutputStream dataStream = new DataOutputStream(stream);
|
||||||
|
for (Object o : objects) {
|
||||||
|
if (o instanceof String) {
|
||||||
|
dataStream.writeUTF((String) o);
|
||||||
|
} else if (o instanceof Integer) {
|
||||||
|
dataStream.writeInt((Integer) o);
|
||||||
|
} else if (o instanceof byte[]) {
|
||||||
|
dataStream.write((byte[]) o);
|
||||||
|
} else if (o instanceof Long) {
|
||||||
|
dataStream.writeLong((Long) o);
|
||||||
|
} else if (o instanceof Boolean) {
|
||||||
|
dataStream.writeBoolean((Boolean) o);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
dataStream.flush();
|
||||||
|
final byte[] content = stream.toByteArray();
|
||||||
|
dataStream.close();
|
||||||
|
socket.write(content);
|
||||||
|
}
|
||||||
|
|
||||||
|
public void sendMessage(String message){
|
||||||
|
try {
|
||||||
|
sendObjects(socket, new Object[]{83, message});
|
||||||
|
} catch (IOException e) {
|
||||||
|
e.printStackTrace();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,49 @@
|
|||||||
|
package org.parabot.environment.scripts.uliratha;
|
||||||
|
|
||||||
|
import org.json.simple.JSONObject;
|
||||||
|
import org.json.simple.parser.JSONParser;
|
||||||
|
import org.json.simple.parser.ParseException;
|
||||||
|
import org.parabot.core.Context;
|
||||||
|
import org.parabot.environment.api.utils.WebUtil;
|
||||||
|
|
||||||
|
import java.io.IOException;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author JKetelaar
|
||||||
|
*/
|
||||||
|
public class UlirathaExecuter {
|
||||||
|
|
||||||
|
private String api;
|
||||||
|
private static boolean isVip = true;
|
||||||
|
|
||||||
|
public UlirathaExecuter(String api){
|
||||||
|
this.api = api;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void start(int scriptID){
|
||||||
|
if (UlirathaExecuter.isVip) {
|
||||||
|
String vipUrl = "http://bdn.parabot.org/api/v2/user/" + api + "/vip";
|
||||||
|
JSONParser parser = new JSONParser();
|
||||||
|
try {
|
||||||
|
JSONObject vipObject = (JSONObject) parser.parse(WebUtil.getReader(vipUrl));
|
||||||
|
|
||||||
|
boolean isVip = (boolean) vipObject.get("result");
|
||||||
|
if (isVip) {
|
||||||
|
String serverUrl = "http://bdn.parabot.org/api/v2/clients/server";
|
||||||
|
JSONObject serverObject = (JSONObject) parser.parse(WebUtil.getReader(serverUrl));
|
||||||
|
JSONObject detailsObject = (JSONObject) serverObject.get("result");
|
||||||
|
String host = (String) detailsObject.get("host");
|
||||||
|
long port = (long) detailsObject.get("port");
|
||||||
|
|
||||||
|
UlirathaClient client = new UlirathaClient(host, (int) port, scriptID, api);
|
||||||
|
client.start();
|
||||||
|
Context.getInstance().setUlirathaClient(client);
|
||||||
|
}else{
|
||||||
|
UlirathaExecuter.isVip = false;
|
||||||
|
}
|
||||||
|
} catch (IOException | ParseException | ClassCastException e) {
|
||||||
|
e.printStackTrace();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -3,7 +3,6 @@ package org.parabot.environment.servers.executers;
|
|||||||
import org.parabot.core.Context;
|
import org.parabot.core.Context;
|
||||||
import org.parabot.core.parsers.randoms.RandomParser;
|
import org.parabot.core.parsers.randoms.RandomParser;
|
||||||
import org.parabot.core.ui.components.PaintComponent;
|
import org.parabot.core.ui.components.PaintComponent;
|
||||||
import org.parabot.environment.scripts.executers.SecurityManagerDemo;
|
|
||||||
import org.parabot.environment.servers.ServerProvider;
|
import org.parabot.environment.servers.ServerProvider;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|||||||
Reference in New Issue
Block a user