From 172b377a6f10b9ebc8a1516de6246160ca0bbe56 Mon Sep 17 00:00:00 2001 From: duckietm Date: Thu, 11 Apr 2024 09:46:37 +0200 Subject: [PATCH] fix: sanitize room playlist - By Berno --- .gitignore | 2 -- .../Javascript-Plugin-1.0-SNAPSHOT.jar | Bin 76717 -> 0 bytes Plugins/Javascript-Plugin/pom.xml | 12 +++++-- .../plugin/javascript/audio/RoomPlaylist.java | 33 ++++++++++-------- .../plugin/javascript/utils/RegexUtility.java | 27 ++++++++++---- 5 files changed, 49 insertions(+), 25 deletions(-) delete mode 100644 Plugins/Javascript-Plugin/compiled/Javascript-Plugin-1.0-SNAPSHOT.jar 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 32259b224b53c402e7611b9e0571bca812368109..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 76717 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 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