diff --git a/pom.xml b/pom.xml
index e7f8810..2de176b 100644
--- a/pom.xml
+++ b/pom.xml
@@ -91,13 +91,13 @@
net.dv8tion
JDA
- 4.3.0_277
+ 4.4.0_350
com.squareup.okhttp3
okhttp
- 4.9.1
+ 4.9.3
@@ -111,7 +111,7 @@
org.reflections
reflections
- 0.9.12
+ 0.10.2
@@ -122,17 +122,17 @@
org.apache.logging.log4j
log4j-api
- 2.14.1
+ 2.17.0
org.apache.logging.log4j
log4j-core
- 2.14.1
+ 2.17.0
org.apache.logging.log4j
log4j-slf4j-impl
- 2.14.1
+ 2.17.0
commons-logging
@@ -143,13 +143,13 @@
org.fusesource.jansi
jansi
- 2.3.4
+ 2.4.0
runtime
com.sedmelluq
lavaplayer
- 1.3.77
+ 1.3.78
junit
diff --git a/sql/netneutrality_new.sql b/sql/netneutrality_new.sql
new file mode 100644
index 0000000..0f23fb3
--- /dev/null
+++ b/sql/netneutrality_new.sql
@@ -0,0 +1,183 @@
+-- phpMyAdmin SQL Dump
+-- version 5.1.0
+-- https://www.phpmyadmin.net/
+--
+-- Host: 127.0.0.1:3306
+-- Generation Time: Jan 04, 2022 at 09:55 PM
+-- Server version: 10.4.10-MariaDB
+-- PHP Version: 7.4.19
+
+SET SQL_MODE = "NO_AUTO_VALUE_ON_ZERO";
+START TRANSACTION;
+SET time_zone = "+00:00";
+
+
+/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
+/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
+/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
+/*!40101 SET NAMES utf8mb4 */;
+
+--
+-- Database: `netneutrality`
+--
+
+-- --------------------------------------------------------
+
+--
+-- Table structure for table `blacklist`
+--
+
+DROP TABLE IF EXISTS `blacklist`;
+CREATE TABLE IF NOT EXISTS `blacklist` (
+ `guild_id` varchar(255) COLLATE utf8mb4_unicode_ci NOT NULL,
+ `word` varchar(255) COLLATE utf8mb4_unicode_ci NOT NULL,
+ `enabled` tinyint(1) NOT NULL,
+ `creator_id` varchar(255) COLLATE utf8mb4_unicode_ci NOT NULL,
+ PRIMARY KEY (`guild_id`,`word`)
+) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
+
+-- --------------------------------------------------------
+
+--
+-- Table structure for table `guilds`
+--
+
+DROP TABLE IF EXISTS `guilds`;
+CREATE TABLE IF NOT EXISTS `guilds` (
+ `guild_id` varchar(255) COLLATE utf8mb4_unicode_ci NOT NULL,
+ `logging` int(11) DEFAULT 0,
+ `log_channel` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL,
+ PRIMARY KEY (`guild_id`)
+) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
+
+--
+-- Dumping data for table `guilds`
+--
+
+INSERT INTO `guilds` (`guild_id`, `logging`, `log_channel`) VALUES
+('195386426400047105', 0, NULL),
+('250767028397408256', 0, NULL);
+
+--
+-- Triggers `guilds`
+--
+DROP TRIGGER IF EXISTS `insert_settings`;
+DELIMITER $$
+CREATE TRIGGER `insert_settings` AFTER INSERT ON `guilds` FOR EACH ROW INSERT INTO guild_settings(guild_id) VALUES (new.guild_id)
+$$
+DELIMITER ;
+
+-- --------------------------------------------------------
+
+--
+-- Table structure for table `guild_settings`
+--
+
+DROP TABLE IF EXISTS `guild_settings`;
+CREATE TABLE IF NOT EXISTS `guild_settings` (
+ `guild_id` varchar(255) COLLATE utf8mb4_unicode_ci NOT NULL,
+ `music_role` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL,
+ `music_channel` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL,
+ `blacklist_exclude_channels` mediumtext COLLATE utf8mb4_unicode_ci DEFAULT NULL,
+ PRIMARY KEY (`guild_id`)
+) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
+
+--
+-- Dumping data for table `guild_settings`
+--
+
+INSERT INTO `guild_settings` (`guild_id`, `music_role`, `music_channel`, `blacklist_exclude_channels`) VALUES
+('195386426400047105', NULL, NULL, NULL),
+('250767028397408256', NULL, NULL, NULL);
+
+-- --------------------------------------------------------
+
+--
+-- Table structure for table `logging`
+--
+
+DROP TABLE IF EXISTS `logging`;
+CREATE TABLE IF NOT EXISTS `logging` (
+ `guild_id` varchar(255) COLLATE utf8mb4_unicode_ci NOT NULL,
+ `channel_id` varchar(255) COLLATE utf8mb4_unicode_ci NOT NULL,
+ `enabled` tinyint(4) NOT NULL,
+ PRIMARY KEY (`guild_id`,`channel_id`)
+) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
+
+-- --------------------------------------------------------
+
+--
+-- Table structure for table `log_message`
+--
+
+DROP TABLE IF EXISTS `log_message`;
+CREATE TABLE IF NOT EXISTS `log_message` (
+ `guild_id` varchar(255) COLLATE utf8mb4_unicode_ci NOT NULL,
+ `channel_id` varchar(255) COLLATE utf8mb4_unicode_ci NOT NULL,
+ `user_id` varchar(255) COLLATE utf8mb4_unicode_ci NOT NULL,
+ `date_sent` datetime NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp(),
+ `message_id` varchar(255) COLLATE utf8mb4_unicode_ci NOT NULL,
+ `message` varchar(2000) COLLATE utf8mb4_unicode_ci DEFAULT NULL,
+ `edited_message` varchar(2000) COLLATE utf8mb4_unicode_ci DEFAULT NULL,
+ PRIMARY KEY (`message_id`),
+ KEY `fk_log_guilds` (`guild_id`)
+) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
+
+-- --------------------------------------------------------
+
+--
+-- Table structure for table `permissions`
+--
+
+DROP TABLE IF EXISTS `permissions`;
+CREATE TABLE IF NOT EXISTS `permissions` (
+ `guild_id` varchar(255) COLLATE utf8mb4_unicode_ci NOT NULL,
+ `role_id` varchar(255) COLLATE utf8mb4_unicode_ci NOT NULL,
+ `type` int(11) DEFAULT NULL,
+ `command` int(11) DEFAULT NULL,
+ PRIMARY KEY (`guild_id`,`role_id`)
+) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
+
+-- --------------------------------------------------------
+
+--
+-- Table structure for table `web_users`
+--
+
+DROP TABLE IF EXISTS `web_users`;
+CREATE TABLE IF NOT EXISTS `web_users` (
+ `id` varchar(255) COLLATE utf8mb4_unicode_ci NOT NULL,
+ `email` mediumtext COLLATE utf8mb4_unicode_ci NOT NULL,
+ `token` varchar(255) COLLATE utf8mb4_unicode_ci NOT NULL,
+ `expires` timestamp NOT NULL DEFAULT current_timestamp(),
+ `refresh_token` varchar(255) COLLATE utf8mb4_unicode_ci NOT NULL,
+ `remember_token` varchar(100) COLLATE utf8mb4_unicode_ci DEFAULT NULL,
+ PRIMARY KEY (`id`)
+) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
+
+--
+-- Constraints for dumped tables
+--
+
+--
+-- Constraints for table `blacklist`
+--
+ALTER TABLE `blacklist`
+ ADD CONSTRAINT `fk_blacklist_guilds` FOREIGN KEY (`guild_id`) REFERENCES `guilds` (`guild_id`);
+
+--
+-- Constraints for table `guild_settings`
+--
+ALTER TABLE `guild_settings`
+ ADD CONSTRAINT `fk_guildid_guilds` FOREIGN KEY (`guild_id`) REFERENCES `guilds` (`guild_id`);
+
+--
+-- Constraints for table `log_message`
+--
+ALTER TABLE `log_message`
+ ADD CONSTRAINT `fk_log_guilds` FOREIGN KEY (`guild_id`) REFERENCES `guilds` (`guild_id`);
+COMMIT;
+
+/*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */;
+/*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */;
+/*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */;
diff --git a/src/main/java/netneutrality/GuildManager.java b/src/main/java/netneutrality/GuildManager.java
index 2824f91..0429cb2 100644
--- a/src/main/java/netneutrality/GuildManager.java
+++ b/src/main/java/netneutrality/GuildManager.java
@@ -42,6 +42,7 @@ public class GuildManager {
}
public String getSetting(String key) {
+ reloadSettings();
return guildEntity.getSettings().getSettingByKey(key);
}
diff --git a/src/main/java/netneutrality/command/AbstractMusicCommand.java b/src/main/java/netneutrality/command/AbstractMusicCommand.java
index b4f8ea5..7afcb52 100644
--- a/src/main/java/netneutrality/command/AbstractMusicCommand.java
+++ b/src/main/java/netneutrality/command/AbstractMusicCommand.java
@@ -20,7 +20,8 @@ public abstract class AbstractMusicCommand extends AbstractCommand {
@Override
public boolean canBeExecutedBy(Guild guild, Member member) {
- String roleDb = GuildManager.getManager(guild).getSetting("music_role");
+ String roleDb = GuildManager.getManager(guild).getSetting("music.role");
+ System.out.println(roleDb);
if (!roleDb.isEmpty()) {
Role neededRole = MusicBot.getJDA().getRoleById(roleDb);
diff --git a/src/main/java/netneutrality/db/controllers/DBBlacklist.java b/src/main/java/netneutrality/db/controllers/DBBlacklist.java
index fc6c757..c78d662 100644
--- a/src/main/java/netneutrality/db/controllers/DBBlacklist.java
+++ b/src/main/java/netneutrality/db/controllers/DBBlacklist.java
@@ -1,7 +1,6 @@
package netneutrality.db.controllers;
import java.util.ArrayList;
-import java.util.concurrent.ExecutionException;
import java.util.concurrent.atomic.AtomicBoolean;
import java.util.function.Consumer;
@@ -15,14 +14,10 @@ public class DBBlacklist extends AbstractController {
private final Logger logger = LoggerFactory.getLogger(DBBlacklist.class);
- public DBBlacklist() {
-
- }
-
public void add(MBlacklist obj, Consumer success) {
isAlreadyBlacklisted(obj.getWord(), obj.getServerId(), blacklisted -> {
if (blacklisted == 0) {
- database.prepareAndExecuteAsync("INSERT INTO blacklist VALUES(?,?,?,?)", obj.getWord(), obj.getServerId(), obj.isEnabled(), obj.getCreatorId()).async();
+ database.prepareAndExecuteAsync("INSERT INTO blacklist VALUES(?,?,?,?)", obj.getServerId(), obj.getWord(), obj.isEnabled(), obj.getCreatorId()).async();
success.accept(true);
} else {
success.accept(false);
@@ -34,7 +29,7 @@ public class DBBlacklist extends AbstractController {
public void delete(String word, String serverId, Consumer success) {
isAlreadyBlacklisted(word, serverId, blacklisted -> {
if (blacklisted >= 1) {
- database.prepareAndExecuteAsync("DELETE FROM blacklist WHERE word = ? AND serverId = ?", word, serverId).async();
+ database.prepareAndExecuteAsync("DELETE FROM blacklist WHERE word = ? AND guild_id = ?", word, serverId).async();
logger.debug("removed word from blacklist");
success.accept(true);
} else {
@@ -49,7 +44,7 @@ public class DBBlacklist extends AbstractController {
isAlreadyBlacklisted(word, serverId, blacklisted -> {
if (blacklisted >= 1) {
- database.prepareAndExecuteAsync("UPDATE blacklist SET isEnabled = 1 WHERE word = ? AND serverId = ?", word, serverId).async();
+ database.prepareAndExecuteAsync("UPDATE blacklist SET enabled = 1 WHERE word = ? AND guild_id = ?", word, serverId).async();
logger.info("enabled");
success.accept(true);
} else {
@@ -64,7 +59,7 @@ public class DBBlacklist extends AbstractController {
isAlreadyBlacklisted(word, serverId, blacklisted -> {
if (blacklisted >= 1) {
- database.prepareAndExecuteAsync("UPDATE blacklist SET isEnabled = 0 WHERE word = ? AND serverId = ?", word, serverId).async();
+ database.prepareAndExecuteAsync("UPDATE blacklist SET enabled = 0 WHERE word = ? AND guild_id = ?", word, serverId).async();
logger.info("disabled");
success.accept(true);
} else {
@@ -78,7 +73,7 @@ public class DBBlacklist extends AbstractController {
@Deprecated
public void getBlacklistForWord(String word, String serverId, Consumer success) {
- database.prepareAndExecuteAsync("SELECT * FROM blacklist WHERE word = ? AND serverId = ?", word, serverId).async((table -> {
+ database.prepareAndExecuteAsync("SELECT * FROM blacklist WHERE word = ? AND guild_id = ?", word, serverId).async((table -> {
MBlacklist blacklisted = null;
if (table.getNbRows() > 0) {
@@ -91,7 +86,7 @@ public class DBBlacklist extends AbstractController {
}
public void getBlacklistFromServer(String serverId, Consumer> success) {
- database.prepareAndExecuteAsync("SELECT * FROM blacklist WHERE serverId = ? AND isEnabled = 1", serverId).async(model -> {
+ database.prepareAndExecuteAsync("SELECT * FROM blacklist WHERE guild_id = ? AND enabled = 1", serverId).async(model -> {
ArrayList output = new ArrayList<>();
if (model.getNbRows() > 0) {
@@ -108,9 +103,9 @@ public class DBBlacklist extends AbstractController {
}
@Deprecated
- public ArrayList getBlacklistFromServer(String serverId) throws ExecutionException, InterruptedException {
+ public ArrayList getBlacklistFromServer(String serverId) {
- MTableModel model = database.prepareAndExecuteAsync("SELECT * FROM blacklist WHERE serverId = ? AND isEnabled = 1", serverId).blocking();
+ MTableModel model = database.prepareAndExecuteAsync("SELECT * FROM blacklist WHERE guild_id = ? AND enabled = 1", serverId).blocking();
ArrayList output = new ArrayList<>();
if (model.getNbRows() > 0) {
@@ -128,7 +123,7 @@ public class DBBlacklist extends AbstractController {
private boolean isAlreadyBlacklisted(String word, String serverId) {
AtomicBoolean result = new AtomicBoolean();
- database.prepareAndExecuteAsync("SELECT COUNT(*) FROM blacklist WHERE word = ? AND serverId = ?", word, serverId).async(table -> {
+ database.prepareAndExecuteAsync("SELECT COUNT(*) FROM blacklist WHERE word = ? AND guild_id = ?", word, serverId).async(table -> {
if (!table.isEmpty()) {
result.set((int) table.getRowModel(0).getItem(0) != 0);
}
@@ -140,7 +135,7 @@ public class DBBlacklist extends AbstractController {
private void isAlreadyBlacklisted(String word, String serverId, Consumer result) {
- database.prepareAndExecuteAsync("SELECT COUNT(*) FROM blacklist WHERE word = ? AND serverId = ?", word, serverId).async(table -> {
+ database.prepareAndExecuteAsync("SELECT COUNT(*) FROM blacklist WHERE word = ? AND guild_id = ?", word, serverId).async(table -> {
if (!table.isEmpty()) {
int count = Integer.parseInt(table.getRowModel(0).getItem(0).toString());
diff --git a/src/main/java/netneutrality/db/controllers/DBGuild.java b/src/main/java/netneutrality/db/controllers/DBGuild.java
index 8e946d9..cca67e1 100644
--- a/src/main/java/netneutrality/db/controllers/DBGuild.java
+++ b/src/main/java/netneutrality/db/controllers/DBGuild.java
@@ -13,7 +13,6 @@ public class DBGuild extends AbstractController {
public void insertGuildInDB(Guild g) {
if (!database.exists("guilds", "guild_id", g.getId())) {
database.prepareAndExecuteAsync("INSERT INTO guilds VALUES(?, ?, ?)", g.getId(), "0", null).blocking();
- database.prepareAndExecuteAsync("INSERT INTO guild_settings VALUES(?)", g.getId()).blocking();
}
}
diff --git a/src/main/java/netneutrality/db/controllers/DBMessage.java b/src/main/java/netneutrality/db/controllers/DBMessage.java
index 7386ac1..2988246 100644
--- a/src/main/java/netneutrality/db/controllers/DBMessage.java
+++ b/src/main/java/netneutrality/db/controllers/DBMessage.java
@@ -1,9 +1,7 @@
package netneutrality.db.controllers;
-import java.sql.SQLException;
-import java.time.format.DateTimeFormatter;
import java.util.ArrayList;
-import java.sql.ResultSet;
+import java.util.Date;
import java.util.function.Consumer;
import net.dv8tion.jda.api.entities.Guild;
@@ -15,16 +13,13 @@ import netneutrality.db.DBController;
import netneutrality.db.MysqlDatabase;
import netneutrality.db.models.MMessage;
import netneutrality.db.models.MTableModel;
-import netneutrality.handler.LogHandler;
-import netneutrality.utils.Settings;
+
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
public class DBMessage extends AbstractController {
private final static Logger logger = LoggerFactory.getLogger(DBMessage.class);
- public DBMessage() {
- }
/**
* Returns an instance of {@link MysqlDatabase} with the database name as set in the {@link DBController} class
@@ -39,7 +34,7 @@ public class DBMessage extends AbstractController {
String serverid = guild.getId();
String channelid = channel.getId();
String userid = author.getId();
- String datesent = message.getTimeCreated().format(DateTimeFormatter.ofPattern(Settings.getInstance().DATETIMEFORMAT));
+ Date datesent = new Date(message.getTimeCreated().toInstant().toEpochMilli());
String messageid = message.getId();
String msg = message.getContentRaw().trim();
@@ -47,12 +42,12 @@ public class DBMessage extends AbstractController {
}
public void logEdit(String messageId, String newMessage) {
- database.prepareAndExecuteAsync("UPDATE log_message SET editedMessage = ? WHERE messageId = ?", newMessage, messageId).async();
+ database.prepareAndExecuteAsync("UPDATE log_message SET edited_message = ? WHERE message_id = ?", newMessage, messageId).async();
}
public MMessage getMessage(String messageId) {
- MTableModel table = database.prepareAndExecuteAsync("SELECT * FROM log_message WHERE messageId = ?", messageId).blocking();
+ MTableModel table = database.prepareAndExecuteAsync("SELECT * FROM log_message WHERE message_id = ?", messageId).blocking();
if (table.getNbRows() > 0) {
return new MMessage(table.getRowModel(0));
}
@@ -61,7 +56,7 @@ public class DBMessage extends AbstractController {
}
public void getMessagesFromUser(String username, String serverName, int max, Consumer> success) {
- database.prepareAndExecuteAsync("SELECT * FROM log_message WHERE userId = ? AND serverId = ? ORDER BY dateSent DESC LIMIT ?", username, serverName, max).async(table -> {
+ database.prepareAndExecuteAsync("SELECT * FROM log_message WHERE user_id = ? AND server_id = ? ORDER BY dateSent DESC LIMIT ?", username, serverName, max).async(table -> {
ArrayList messages = new ArrayList<>();
if (table.getNbRows() > 0) {
@@ -79,7 +74,7 @@ public class DBMessage extends AbstractController {
public ArrayList getMessagesFromUser(String username, String serverName, int max) {
ArrayList messages = new ArrayList<>();
- MTableModel table = database.prepareAndExecuteAsync("SELECT * FROM log_message WHERE userId = ? AND serverId = ? ORDER BY dateSent DESC LIMIT ?", username, serverName, max).blocking();;
+ MTableModel table = database.prepareAndExecuteAsync("SELECT * FROM log_message WHERE user_id = ? AND server_id = ? ORDER BY date_sent DESC LIMIT ?", username, serverName, max).blocking();;
if (table.getNbRows() > 0) {
for (int row = 0; row < max; row++) {
messages.add(new MMessage(table.getRowModel(row)));
@@ -90,7 +85,7 @@ public class DBMessage extends AbstractController {
}
public String getMessageString(String messageId) {
- MTableModel table = database.prepareAndExecuteAsync("SELECT message FROM log_message WHERE messageId = ?", messageId).blocking();
+ MTableModel table = database.prepareAndExecuteAsync("SELECT message FROM log_message WHERE message_id = ?", messageId).blocking();
return (String) table.getRowModel(0).getItem(0);
}
diff --git a/src/main/java/netneutrality/http/server/AbstractHandler.java b/src/main/java/netneutrality/http/server/AbstractHandler.java
new file mode 100644
index 0000000..3fe8581
--- /dev/null
+++ b/src/main/java/netneutrality/http/server/AbstractHandler.java
@@ -0,0 +1,33 @@
+package netneutrality.http.server;/*
+ * Copyright (c) anthorob
+ *
+ * https://xtremcommunity.com/
+ * https://discord.gg/CdFcyQ
+ */
+
+
+import com.sun.net.httpserver.HttpExchange;
+import com.sun.net.httpserver.HttpHandler;
+
+import java.io.IOException;
+import java.io.OutputStream;
+
+public abstract class AbstractHandler implements HttpHandler {
+
+ public abstract void handle(HttpExchange exchange) throws IOException;
+
+ public void sendStringResponse(HttpExchange exchange, String str) throws IOException {
+ exchange.sendResponseHeaders(200, str.length());
+ OutputStream os = exchange.getResponseBody();
+ os.write(str.getBytes());
+ os.close();
+ }
+
+ public void sendJsonResponse(HttpExchange exchange, String str) throws IOException {
+ exchange.getResponseHeaders().add("Content-Type", "application/json");
+ exchange.sendResponseHeaders(200, str.length());
+ OutputStream os = exchange.getResponseBody();
+ os.write(str.getBytes());
+ os.close();
+ }
+}
diff --git a/src/main/java/netneutrality/http/server/ActionHandler.java b/src/main/java/netneutrality/http/server/ActionHandler.java
index 5d99f42..fc77d85 100644
--- a/src/main/java/netneutrality/http/server/ActionHandler.java
+++ b/src/main/java/netneutrality/http/server/ActionHandler.java
@@ -8,12 +8,15 @@ package netneutrality.http.server;/*
import com.sun.net.httpserver.HttpExchange;
import com.sun.net.httpserver.HttpHandler;
import netneutrality.MusicBot;
+import netneutrality.http.WebModule;
import org.apache.logging.log4j.LogManager;
import java.io.IOException;
import java.io.OutputStream;
+import java.util.Map;
+import java.util.TreeMap;
-public class ActionHandler implements HttpHandler {
+public class ActionHandler extends AbstractHandler {
@Override
public void handle(HttpExchange exchange) throws IOException {
@@ -21,12 +24,21 @@ public class ActionHandler implements HttpHandler {
if (path.equals("/actions/shutdown")) {
LogManager.getLogger(MusicBot.class).info("Request to shutdown received");
- WebApi.sendStringResponse(exchange, "Shutting down..");
+ sendStringResponse(exchange, "Shutting down..");
System.exit(0);
return;
}
- WebApi.sendStringResponse(exchange, path);
+ if (path.equals("/actions/status")) {
+ TreeMap json = new TreeMap<>();
+ json.put("health", String.valueOf(MusicBot.getJDA().getStatus()));
+ json.put("ping", String.valueOf(MusicBot.getJDA().getGatewayPing()));
+
+ sendJsonResponse(exchange, WebModule.createJson(json));
+ return;
+ }
+
+ sendStringResponse(exchange, path);
}
}
diff --git a/src/main/java/netneutrality/http/server/GuildBrowser.java b/src/main/java/netneutrality/http/server/GuildBrowser.java
deleted file mode 100644
index 06e7d02..0000000
--- a/src/main/java/netneutrality/http/server/GuildBrowser.java
+++ /dev/null
@@ -1,58 +0,0 @@
-package netneutrality.http.server;
-
-/*
- * Copyright (c) anthorob
- *
- * This file is closed-source. It should not be distributed or copied in any way or form
- */
-
-import com.sun.net.httpserver.HttpExchange;
-import com.sun.net.httpserver.HttpHandler;
-import net.dv8tion.jda.api.entities.Guild;
-import net.dv8tion.jda.api.entities.Member;
-import netneutrality.MusicBot;
-import netneutrality.http.WebModule;
-
-import java.io.IOException;
-import java.io.OutputStream;
-import java.util.TreeMap;
-
-public class GuildBrowser implements HttpHandler {
-
- @Override
- public void handle(HttpExchange he) throws IOException {
-
-
- String url[] = he.getRequestURI().toString().split("/");
- StringBuilder response = new StringBuilder();
- String json;
-
- if (url.length > 2) {
- TreeMap users = new TreeMap<>();
- for (Guild guild : MusicBot.getJDA().getGuilds()) {
- if (guild.getName().equalsIgnoreCase(url[2])) {
- for (Member member : guild.getMembers()) {
- users.put(member.getUser().getName(), member.getEffectiveName());
- }
- }
- }
-
- json = WebModule.createJsonArray(users);
-
- } else {
- for (Guild guild : MusicBot.getJDA().getGuilds()) {
- response.append("\"" + guild.getName() + "\"");
- response.append(",");
- }
- response.insert(0, "[");
-
- json = response.substring(0, response.length() - 1) + "]";
- }
-
- he.getResponseHeaders().add("Content-Type", "application/json");
- he.sendResponseHeaders(200, json.getBytes().length);
- OutputStream os = he.getResponseBody();
- os.write(json.getBytes());
- os.close();
- }
-}
diff --git a/src/main/java/netneutrality/http/server/GuildHandler.java b/src/main/java/netneutrality/http/server/GuildHandler.java
new file mode 100644
index 0000000..525684b
--- /dev/null
+++ b/src/main/java/netneutrality/http/server/GuildHandler.java
@@ -0,0 +1,47 @@
+package netneutrality.http.server;
+
+/*
+ * Copyright (c) anthorob
+ *
+ * https://xtremcommunity.com/
+ * https://discord.gg/CdFcyQ
+ */
+
+import com.sun.net.httpserver.HttpExchange;
+import com.sun.net.httpserver.HttpHandler;
+import net.dv8tion.jda.api.JDA;
+import net.dv8tion.jda.api.entities.Guild;
+import net.dv8tion.jda.api.entities.Member;
+import netneutrality.MusicBot;
+import netneutrality.http.WebModule;
+
+import java.io.IOException;
+import java.io.OutputStream;
+import java.util.*;
+
+public class GuildHandler extends AbstractHandler {
+
+ @Override
+ public void handle(HttpExchange exchange) throws IOException {
+
+ String path = exchange.getRequestURI().getRawPath();
+
+ if (path.equals("/guilds/owner")) {
+
+ TreeMap owners = new TreeMap<>();
+
+ JDA jda = MusicBot.getJDA();
+
+ jda.getGuilds().forEach(guild -> {
+ owners.put(guild.getId(), guild.getOwnerId());
+ });
+
+ sendJsonResponse(exchange, WebModule.createJsonArray(owners));
+ return;
+
+ }
+
+ sendStringResponse(exchange, path);
+
+ }
+}
diff --git a/src/main/java/netneutrality/http/server/RootHandler.java b/src/main/java/netneutrality/http/server/RootHandler.java
index 177c3a3..cee2056 100644
--- a/src/main/java/netneutrality/http/server/RootHandler.java
+++ b/src/main/java/netneutrality/http/server/RootHandler.java
@@ -3,7 +3,8 @@ package netneutrality.http.server;
/*
* Copyright (c) anthorob
*
- * This file is closed-source. It should not be distributed or copied in any way or form
+ * https://xtremcommunity.com/
+ * https://discord.gg/CdFcyQ
*/
import com.sun.net.httpserver.HttpExchange;
@@ -12,14 +13,13 @@ import com.sun.net.httpserver.HttpHandler;
import java.io.IOException;
import java.io.OutputStream;
-public class RootHandler implements HttpHandler {
+public class RootHandler extends AbstractHandler {
@Override
- public void handle(HttpExchange he) throws IOException {
+ public void handle(HttpExchange exchange) throws IOException {
+
String response = "Server start success if you see this message
";
- he.sendResponseHeaders(200, response.length());
- OutputStream os = he.getResponseBody();
- os.write(response.getBytes());
- os.close();
+
+ sendStringResponse(exchange, response);
}
}
diff --git a/src/main/java/netneutrality/http/server/WebApi.java b/src/main/java/netneutrality/http/server/WebApi.java
index dd1f128..13da7b1 100644
--- a/src/main/java/netneutrality/http/server/WebApi.java
+++ b/src/main/java/netneutrality/http/server/WebApi.java
@@ -3,17 +3,16 @@ package netneutrality.http.server;
/*
* Copyright (c) anthorob
*
- * This file is closed-source. It should not be distributed or copied in any way or form
+ * https://xtremcommunity.com/
+ * https://discord.gg/CdFcyQ
*/
-import com.sun.net.httpserver.HttpExchange;
import com.sun.net.httpserver.HttpServer;
import netneutrality.thread.BaseThread;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import java.io.IOException;
-import java.io.OutputStream;
import java.net.InetAddress;
import java.net.InetSocketAddress;
import java.util.concurrent.ExecutorService;
@@ -36,22 +35,15 @@ public class WebApi {
} catch (IOException e) {
e.printStackTrace();
}
+
server.createContext("/", new RootHandler());
server.createContext("/actions", new ActionHandler());
- server.createContext("/guild", new GuildBrowser());
+ server.createContext("/guilds", new GuildHandler());
server.setExecutor(executor);
server.start();
logger.info("Web server started at [" + server.getAddress() + "]");
}
- public static void sendStringResponse(HttpExchange exchange, String str) throws IOException {
- exchange.sendResponseHeaders(200, str.length());
- OutputStream os = exchange.getResponseBody();
- os.write(str.getBytes());
- os.close();
- }
-
-
}
diff --git a/src/main/java/netneutrality/music/TrackScheduler.java b/src/main/java/netneutrality/music/TrackScheduler.java
index cc9d1e7..81cc068 100644
--- a/src/main/java/netneutrality/music/TrackScheduler.java
+++ b/src/main/java/netneutrality/music/TrackScheduler.java
@@ -33,7 +33,7 @@ public class TrackScheduler extends AudioEventAdapter {
// something is playing, it returns false and does nothing. In that case the player was already playing so this
// track goes to the queue instead.
boolean start = player.startTrack(track, true);
- channel.getManager().setTopic(":speaker: Now playing : " + track.getInfo().title).queue();
+ //channel.getManager().setTopic(":speaker: Now playing : " + track.getInfo().title).queue();
if (!start) {
queue.offer(track);
@@ -55,7 +55,7 @@ public class TrackScheduler extends AudioEventAdapter {
public void resetTopic() {
if (this.channel != null) {
- this.channel.getManager().setTopic(this.topic).queue();
+ //this.channel.getManager().setTopic(this.topic).queue();
}
this.topic = "";
@@ -69,10 +69,10 @@ public class TrackScheduler extends AudioEventAdapter {
// giving null to startTrack, which is a valid argument and will simply stop the player.
AudioTrack track = queue.poll();
if (track != null) {
- channel.getManager().setTopic(":speaker: Now playing : " + track.getInfo().title).queue();
+ //channel.getManager().setTopic(":speaker: Now playing : " + track.getInfo().title).queue();
player.startTrack(track, false);
} else {
- channel.getManager().setTopic(topic).queue();
+ //channel.getManager().setTopic(topic).queue();
}
@@ -109,11 +109,11 @@ public class TrackScheduler extends AudioEventAdapter {
@Override
public void onTrackException(AudioPlayer player, AudioTrack track, FriendlyException exception) {
- // An already playing track threw an exception (track end event will still be received separately)
+ channel.sendMessage("Error while playing track: " + track.getInfo().title).queue();
}
@Override
public void onTrackStuck(AudioPlayer player, AudioTrack track, long thresholdMs) {
- // Audio track has been unable to provide us any audio, might want to just start a new track
+ nextTrack();
}
}