diff --git a/Client.iml b/Client.iml
new file mode 100644
index 0000000..f34ebd6
--- /dev/null
+++ b/Client.iml
@@ -0,0 +1,12 @@
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/parabotv2/src/org/parabot/core/Configuration.java b/parabotv2/src/org/parabot/core/Configuration.java
index 58a8f6e..a714dc6 100644
--- a/parabotv2/src/org/parabot/core/Configuration.java
+++ b/parabotv2/src/org/parabot/core/Configuration.java
@@ -16,6 +16,8 @@ public class Configuration {
public static final String REGISTRATION_PAGE = "https://www.parabot.org/community/index.php?app=core&module=global§ion=register";
public static final String GET_PASSWORD = "http://bdn.parabot.org/api/get.php?action=password";
public static final String GET_RANDOMS = "http://bdn.parabot.org/api/get.php?action=randoms";
+ public static final String DATA_API = "http://bdn.parabot.org/api/v2/data/";
+ public static final String ITEM_API = DATA_API + "items/";
public static final double BOT_VERSION = 2.1;
}
diff --git a/parabotv2/src/org/parabot/core/Core.java b/parabotv2/src/org/parabot/core/Core.java
index eb07736..2bc51aa 100644
--- a/parabotv2/src/org/parabot/core/Core.java
+++ b/parabotv2/src/org/parabot/core/Core.java
@@ -3,15 +3,13 @@ package org.parabot.core;
import org.parabot.Landing;
import org.parabot.environment.api.utils.WebUtil;
-import java.io.BufferedReader;
-import java.io.File;
-import java.io.IOException;
-import java.io.InputStream;
+import java.io.*;
import java.nio.file.Files;
import java.nio.file.Paths;
import java.security.DigestInputStream;
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;
+import java.util.ArrayList;
/**
* The core of parabot
@@ -148,6 +146,37 @@ public class Core {
return true;
}
+ private static boolean policyValid(){
+ return new File(Directories.getSettingsPath() + "/java.policy").exists();
+ }
+
+ private static void createPolicy(){
+ File policy = new File(Directories.getSettingsPath() + "/java.policy");
+ if (!policy.exists()){
+ try {
+ final BufferedReader in = WebUtil.getReader(Configuration.DATA_API + "policy");
+ if (in != null) {
+ String line;
+ PrintWriter printWriter = new PrintWriter(Directories.getSettingsPath() + "/java.policy");
+ while ((line = in.readLine()) != null) {
+ if (line.contains("%parabot_resources%")){
+ line = line.replace("%parabot_resources%", Directories.getResourcesPath().getAbsolutePath());
+ }
+ printWriter.println(line);
+ }
+ printWriter.close();
+ in.close();
+ }
+ } catch (IOException e) {
+ e.printStackTrace();
+ }
+ }
+ }
+
+ public static void main(String[] args){
+ createPolicy();
+ }
+
/**
* Checks for updates.
*
diff --git a/parabotv2/src/org/parabot/core/Directories.java b/parabotv2/src/org/parabot/core/Directories.java
index 0e35380..a01c5ed 100644
--- a/parabotv2/src/org/parabot/core/Directories.java
+++ b/parabotv2/src/org/parabot/core/Directories.java
@@ -16,14 +16,14 @@ public class Directories {
private static Map cached;
static {
- cached = new HashMap<>();
- switch (OperatingSystem.getOS()) {
- case WINDOWS:
- cached.put("Root", new JFileChooser().getFileSystemView().getDefaultDirectory());
- break;
- default:
- cached.put("Root", new File(System.getProperty("user.home")));
- }
+ cached = new HashMap<>();
+ switch (OperatingSystem.getOS()) {
+ case WINDOWS:
+ cached.put("Root", new JFileChooser().getFileSystemView().getDefaultDirectory());
+ break;
+ default:
+ cached.put("Root", new File(System.getProperty("user.home")));
+ }
Core.verbose("Caching directories...");
cached.put("Root", getDefaultDirectory());
@@ -38,30 +38,31 @@ public class Directories {
clearCache(259200);
}
-
+
/**
* Set script bin folder
+ *
* @param f
*/
public static void setScriptCompiledDirectory(File f) {
- if(!f.isDirectory()) {
- throw new IllegalArgumentException(f + "is not a directory.");
- }
- cached.put("Compiled", f);
+ if (!f.isDirectory()) {
+ throw new IllegalArgumentException(f + "is not a directory.");
+ }
+ cached.put("Compiled", f);
}
-
+
/**
* Set server bin folder
+ *
* @param f
*/
public static void setServerCompiledDirectory(File f) {
- if(!f.isDirectory()) {
- throw new IllegalArgumentException(f + "is not a directory.");
- }
- cached.put("Servers", f);
+ if (!f.isDirectory()) {
+ throw new IllegalArgumentException(f + "is not a directory.");
+ }
+ cached.put("Servers", f);
}
-
-
+
/**
* Returns the root directory outside of the main Parabot folder.
@@ -178,13 +179,14 @@ public class Directories {
/**
* Clears the cache based on the latest modification
+ *
* @param remove A long that represents the amount of seconds that a file may have since the latest modification
*/
- private static void clearCache(int remove){
+ private static void clearCache(int remove) {
File[] cache = getCachePath().listFiles();
- if (cache != null){
- for (File f : cache){
- if (f != null && System.currentTimeMillis() / 1000 - f.lastModified() / 1000 > remove){
+ if (cache != null) {
+ for (File f : cache) {
+ if (f != null && System.currentTimeMillis() / 1000 - f.lastModified() / 1000 > remove) {
Core.verbose("Clearing " + f.getName() + " from cache...");
f.delete();
}
diff --git a/parabotv2/src/org/parabot/core/asm/ClassRemapper.java b/parabotv2/src/org/parabot/core/asm/ClassRemapper.java
index 7b331af..0580650 100644
--- a/parabotv2/src/org/parabot/core/asm/ClassRemapper.java
+++ b/parabotv2/src/org/parabot/core/asm/ClassRemapper.java
@@ -1,9 +1,9 @@
package org.parabot.core.asm;
-import java.util.HashMap;
-
import org.objectweb.asm.commons.Remapper;
+import java.util.HashMap;
+
public class ClassRemapper extends Remapper {
private static HashMap remapNames = new HashMap();
static {
diff --git a/parabotv2/src/org/parabot/core/desc/ServerProviderInfo.java b/parabotv2/src/org/parabot/core/desc/ServerProviderInfo.java
index 72b7d6b..922d3c5 100644
--- a/parabotv2/src/org/parabot/core/desc/ServerProviderInfo.java
+++ b/parabotv2/src/org/parabot/core/desc/ServerProviderInfo.java
@@ -10,6 +10,7 @@ import javax.swing.*;
import java.io.BufferedReader;
import java.net.MalformedURLException;
import java.net.URL;
+import java.util.HashMap;
import java.util.Map;
import java.util.Properties;
@@ -21,12 +22,12 @@ import java.util.Properties;
*/
public class ServerProviderInfo {
- private Properties settings;
+ private HashMap settings;
private Properties properties;
public ServerProviderInfo(URL providerInfo, String username, String password) {
this.properties = new Properties();
- this.settings = new Properties();
+ this.settings = new HashMap<>();
try {
String line;
Core.verbose("Reading info: " + providerInfo);
@@ -39,7 +40,13 @@ public class ServerProviderInfo {
for (Object o : jsonObject.entrySet()) {
Map.Entry, ?> pairs = (Map.Entry, ?>) o;
if (String.valueOf(pairs.getKey()).equalsIgnoreCase("settings")){
- settings.putAll((JSONObject) pairs.getValue());
+ JSONObject object = (JSONObject) pairs.getValue();
+ for (Object settingObject : object.entrySet()){
+ Map.Entry, ?> settingValue = (Map.Entry, ?>) settingObject;
+ String key = (String) settingValue.getKey();
+ long value = (Long) settingValue.getValue();
+ settings.put(key, (int) value);
+ }
}else {
properties.put(String.valueOf(pairs.getKey()), String.valueOf(pairs.getValue()));
}
@@ -108,7 +115,7 @@ public class ServerProviderInfo {
return this.properties;
}
- public Properties getSettings(){
- return this.settings;
+ public HashMap getSettings() {
+ return settings;
}
}
diff --git a/parabotv2/src/org/parabot/core/ui/BotUI.java b/parabotv2/src/org/parabot/core/ui/BotUI.java
index c180bd1..3b639a1 100644
--- a/parabotv2/src/org/parabot/core/ui/BotUI.java
+++ b/parabotv2/src/org/parabot/core/ui/BotUI.java
@@ -49,6 +49,7 @@ public class BotUI extends JFrame implements ActionListener, ComponentListener,
add(GamePanel.getInstance());
GamePanel.getInstance().add(VerboseLoader.get(username, password), BorderLayout.CENTER);
+ add(Logger.getInstance(), BorderLayout.SOUTH);
SwingUtil.setParabotIcons(this);
diff --git a/parabotv2/src/org/parabot/core/ui/Logger.java b/parabotv2/src/org/parabot/core/ui/Logger.java
new file mode 100644
index 0000000..adb12cf
--- /dev/null
+++ b/parabotv2/src/org/parabot/core/ui/Logger.java
@@ -0,0 +1,50 @@
+package org.parabot.core.ui;
+
+import org.parabot.core.ui.components.GamePanel;
+
+import javax.swing.*;
+import java.awt.*;
+
+/**
+ * @author JKetelaar
+ */
+public class Logger extends JPanel {
+ private static Logger instance;
+ private final DefaultListModel model;
+
+ private Logger(){
+ setLayout(new BorderLayout());
+ JList list = new JList<>();
+
+ JScrollPane pane = new JScrollPane(list);
+ add(pane, BorderLayout.CENTER);
+
+ list.setCellRenderer(getRenderer());
+
+ model = new DefaultListModel<>();
+ list.setModel(model);
+ setPreferredSize(new Dimension((int) GamePanel.getInstance().getPreferredSize().getWidth(), 150));
+ model.addElement("Logger started");
+ }
+
+ private ListCellRenderer super String> getRenderer() {
+ return new DefaultListCellRenderer(){
+ @Override
+ public Component getListCellRendererComponent(JList> list,
+ Object value, int index, boolean isSelected,
+ boolean cellHasFocus) {
+ JLabel listCellRendererComponent = (JLabel) super.getListCellRendererComponent(list, value, index, isSelected,cellHasFocus);
+ listCellRendererComponent.setBorder(BorderFactory.createMatteBorder(0, 0, 1, 0,Color.BLACK));
+ return listCellRendererComponent;
+ }
+ };
+ }
+
+ public static Logger getInstance() {
+ return instance == null ? instance = new Logger() : instance;
+ }
+
+ public static void addMessage(String message){
+ instance.model.addElement(message);
+ }
+}
diff --git a/parabotv2/src/org/parabot/environment/scripts/Script.java b/parabotv2/src/org/parabot/environment/scripts/Script.java
index 22fe4e8..4dee0d4 100644
--- a/parabotv2/src/org/parabot/environment/scripts/Script.java
+++ b/parabotv2/src/org/parabot/environment/scripts/Script.java
@@ -4,11 +4,8 @@ import org.parabot.core.Context;
import org.parabot.core.Core;
import org.parabot.core.ui.BotUI;
import org.parabot.environment.api.utils.Time;
-import org.parabot.environment.scripts.framework.AbstractFramework;
+import org.parabot.environment.scripts.framework.*;
import org.parabot.environment.scripts.framework.Frameworks;
-import org.parabot.environment.scripts.framework.LoopTask;
-import org.parabot.environment.scripts.framework.SleepCondition;
-import org.parabot.environment.scripts.framework.Strategy;
import org.parabot.environment.scripts.randoms.Random;
import java.util.Collection;
@@ -68,7 +65,15 @@ public class Script implements Runnable {
@Override
public final void run() {
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...");
context.getServerProvider().initScript(this);
Core.verbose("Done.");
@@ -122,6 +127,8 @@ public class Script implements Runnable {
this.state = STATE_STOPPED;
context.setRunningScript(null);
BotUI.getInstance().toggleRun();
+// System.setProperty("java.security.policy", previousPolicy);
+// System.setSecurityManager(previousSecurityManager);
Core.verbose("Done.");
}
diff --git a/parabotv2/src/org/parabot/environment/scripts/executers/ScriptExecuter.java b/parabotv2/src/org/parabot/environment/scripts/executers/ScriptExecuter.java
index 0e7b18d..64723ae 100644
--- a/parabotv2/src/org/parabot/environment/scripts/executers/ScriptExecuter.java
+++ b/parabotv2/src/org/parabot/environment/scripts/executers/ScriptExecuter.java
@@ -19,7 +19,8 @@ public abstract class ScriptExecuter {
* @param script
*/
public final void finalize(final ThreadGroup tg, final Script script) {
- new Thread(tg, script).start();
+ Thread thread = new Thread(tg, script);
+ thread.start();
}
diff --git a/parabotv2/src/org/parabot/environment/scripts/executers/SecurityManagerDemo.java b/parabotv2/src/org/parabot/environment/scripts/executers/SecurityManagerDemo.java
new file mode 100644
index 0000000..93f0dd6
--- /dev/null
+++ b/parabotv2/src/org/parabot/environment/scripts/executers/SecurityManagerDemo.java
@@ -0,0 +1,5 @@
+package org.parabot.environment.scripts.executers;
+
+public class SecurityManagerDemo extends SecurityManager {
+
+}
\ No newline at end of file
diff --git a/parabotv2/src/org/parabot/environment/scripts/randoms/RandomHandler.java b/parabotv2/src/org/parabot/environment/scripts/randoms/RandomHandler.java
index 757bb05..029ccd3 100644
--- a/parabotv2/src/org/parabot/environment/scripts/randoms/RandomHandler.java
+++ b/parabotv2/src/org/parabot/environment/scripts/randoms/RandomHandler.java
@@ -1,6 +1,7 @@
package org.parabot.environment.scripts.randoms;
import org.parabot.core.Core;
+import org.parabot.core.ui.Logger;
import java.util.ArrayList;
@@ -89,7 +90,7 @@ public class RandomHandler {
public boolean checkAndRun() {
for(Random r : this.activeRandoms) {
if(r.activate()) {
- Core.verbose("Running random '" + r.getName() + "'.");
+ Logger.addMessage("Running random '" + r.getName() + "'.");
r.execute();
return true;
}
diff --git a/parabotv2/src/org/parabot/environment/servers/executers/ServerExecuter.java b/parabotv2/src/org/parabot/environment/servers/executers/ServerExecuter.java
index 671d77b..30a691a 100644
--- a/parabotv2/src/org/parabot/environment/servers/executers/ServerExecuter.java
+++ b/parabotv2/src/org/parabot/environment/servers/executers/ServerExecuter.java
@@ -3,6 +3,7 @@ package org.parabot.environment.servers.executers;
import org.parabot.core.Context;
import org.parabot.core.parsers.randoms.RandomParser;
import org.parabot.core.ui.components.PaintComponent;
+import org.parabot.environment.scripts.executers.SecurityManagerDemo;
import org.parabot.environment.servers.ServerProvider;
/**
diff --git a/releases/Client.jar b/releases/Client.jar
new file mode 100644
index 0000000..ee63da1
Binary files /dev/null and b/releases/Client.jar differ
diff --git a/releases/run.bat b/releases/run.bat
new file mode 100644
index 0000000..b9828de
--- /dev/null
+++ b/releases/run.bat
@@ -0,0 +1 @@
+java -jar Client.jar -login paradox Cn4VoAythFeaBFunRwuHHTswWuTUDv -loadlocal -verbose