diff --git a/.gitignore b/.gitignore
index 94c0cbd..b986000 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,5 +1,4 @@
logging/
-compiled-builds/
*.iml
.idea/
target/**
@@ -10,7 +9,6 @@ src/test/
target/
config.ini
*.txt
-*.jar
*.log
*.zip
.DS_Store
diff --git a/Plugins/Javascript-Plugin/compiled/Javascript-Plugin-1.0-SNAPSHOT.jar b/Plugins/Javascript-Plugin/compiled/Javascript-Plugin-1.0-SNAPSHOT.jar
deleted file mode 100644
index 32259b2..0000000
Binary files a/Plugins/Javascript-Plugin/compiled/Javascript-Plugin-1.0-SNAPSHOT.jar and /dev/null differ
diff --git a/Plugins/Javascript-Plugin/pom.xml b/Plugins/Javascript-Plugin/pom.xml
index f697bf8..2fd7c0e 100644
--- a/Plugins/Javascript-Plugin/pom.xml
+++ b/Plugins/Javascript-Plugin/pom.xml
@@ -6,7 +6,7 @@
com.skeletor
Javascript-Plugin
- 1.0-SNAPSHOT
+ 1.1-SNAPSHOT
@@ -24,8 +24,16 @@
com.eu.habbo
Habbo
- 3.0.0
+ 3.5.1
+
+
+ com.googlecode.owasp-java-html-sanitizer
+ owasp-java-html-sanitizer
+ 20240325.1
+ compile
+
+
\ No newline at end of file
diff --git a/Plugins/Javascript-Plugin/src/main/java/com/skeletor/plugin/javascript/audio/RoomPlaylist.java b/Plugins/Javascript-Plugin/src/main/java/com/skeletor/plugin/javascript/audio/RoomPlaylist.java
index d5b3b59..0756106 100644
--- a/Plugins/Javascript-Plugin/src/main/java/com/skeletor/plugin/javascript/audio/RoomPlaylist.java
+++ b/Plugins/Javascript-Plugin/src/main/java/com/skeletor/plugin/javascript/audio/RoomPlaylist.java
@@ -5,6 +5,8 @@ import com.eu.habbo.messages.outgoing.generic.alerts.BubbleAlertComposer;
import gnu.trove.map.hash.THashMap;
import java.util.ArrayList;
+import static com.skeletor.plugin.javascript.utils.RegexUtility.sanitize;
+
public class RoomPlaylist {
private ArrayList playlist = new ArrayList<>();
@@ -38,19 +40,20 @@ public class RoomPlaylist {
public void addSong(YoutubeVideo song) {
this.playlist.add(song);
}
-
+
public YoutubeVideo removeSong(int index) {
YoutubeVideo res = null;
- if (this.playlist.size() - 1 >= index)
- res = this.playlist.remove(index);
- if (this.playlist.size() == 0)
- setPlaying(false);
- if (index == getCurrentIndex()) {
- if (index > this.playlist.size() - 1 && this.playlist.size() > 0)
- this.current = this.playlist.size() - 1;
- } else if (index < getCurrentIndex() && getCurrentIndex() > 0) {
+ if(playlist.size() - 1 >= index)
+ res = this.playlist.remove(index);
+ if(playlist.isEmpty()) this.setPlaying(false);
+ if(index == this.getCurrentIndex()) {
+ if(index > this.playlist.size() - 1 && !this.playlist.isEmpty()) {
+ this.current = this.playlist.size() - 1;
+ }
+ }
+ else if(index < this.getCurrentIndex() && this.getCurrentIndex() > 0) {
this.current--;
- }
+ }
return res;
}
@@ -79,12 +82,12 @@ public class RoomPlaylist {
this.channel = channel;
}
}
-
+
public MessageComposer getNowPlayingBubbleAlert() {
- THashMap keys = new THashMap();
+ final THashMap keys = new THashMap<>();
keys.put("display", "BUBBLE");
- keys.put("image", "${image.library.url}notifications/music.png");
- keys.put("message", "Now playing " + (getCurrentSong()).name);
- return (MessageComposer)new BubbleAlertComposer("", keys);
+ keys.put("image", ("${image.library.url}notifications/music.png"));
+ keys.put("message", "Now playing " + sanitize(this.getCurrentSong().name));
+ return new BubbleAlertComposer("", keys);
}
}
diff --git a/Plugins/Javascript-Plugin/src/main/java/com/skeletor/plugin/javascript/utils/RegexUtility.java b/Plugins/Javascript-Plugin/src/main/java/com/skeletor/plugin/javascript/utils/RegexUtility.java
index 29bd810..9fb748d 100644
--- a/Plugins/Javascript-Plugin/src/main/java/com/skeletor/plugin/javascript/utils/RegexUtility.java
+++ b/Plugins/Javascript-Plugin/src/main/java/com/skeletor/plugin/javascript/utils/RegexUtility.java
@@ -1,15 +1,30 @@
package com.skeletor.plugin.javascript.utils;
-
+import org.owasp.html.HtmlPolicyBuilder;
+import org.owasp.html.PolicyFactory;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class RegexUtility {
- public static String getYouTubeId(String youTubeUrl) {
+
+ public static String getYouTubeId (String youTubeUrl) {
String pattern = "(?<=youtu.be/|watch\\?v=|/videos/|embed\\/)[^#\\&\\?]*";
Pattern compiledPattern = Pattern.compile(pattern);
Matcher matcher = compiledPattern.matcher(youTubeUrl);
- if (matcher.find())
- return matcher.group();
- return "";
+ if(matcher.find()){
+ return matcher.group();
+ } else {
+ return "";
+ }
}
-}
+
+ /**
+ * Sanitizes a string by removing any potentially harmful HTML elements.
+ *
+ * @param str The string to be sanitized.
+ * @return The sanitized string.
+ */
+ public static String sanitize(String str) {
+ PolicyFactory policy = new HtmlPolicyBuilder().toFactory();
+ return policy.sanitize(str);
+ }
+}
\ No newline at end of file