aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTrumeet <yuuta@yuuta.moe>2022-07-13 12:48:12 -0700
committerTrumeet <yuuta@yuuta.moe>2022-07-13 12:48:12 -0700
commit39352c6ecc154bac07ac6f6d4ca9abea09fa9db3 (patch)
treee8a3b0f2ade688af55e0e129040f6da59cf5d21c
parent8af5fa7157be6bfec041cbfebb55f4503892f4ab (diff)
downloadacron-39352c6ecc154bac07ac6f6d4ca9abea09fa9db3.tar
acron-39352c6ecc154bac07ac6f6d4ca9abea09fa9db3.tar.gz
acron-39352c6ecc154bac07ac6f6d4ca9abea09fa9db3.tar.bz2
acron-39352c6ecc154bac07ac6f6d4ca9abea09fa9db3.zip
Use error 403 instead of cmd_denied to represent permission denial
API:CHANGE Signed-off-by: Trumeet <yuuta@yuuta.moe>
-rw-r--r--README.md4
-rw-r--r--src/main/java/moe/ymc/acron/net/WSFrameHandler.java5
-rw-r--r--src/main/java/moe/ymc/acron/s2c/response/EventCmdDenied.java8
-rw-r--r--src/main/java/moe/ymc/acron/s2c/response/EventError.java4
-rw-r--r--src/main/java/moe/ymc/acron/serialization/Serializer.java6
5 files changed, 14 insertions, 13 deletions
diff --git a/README.md b/README.md
index e1284a6..6d952cb 100644
--- a/README.md
+++ b/README.md
@@ -343,6 +343,10 @@ This shows that the command is scheduled.
If the connection breaks before it is done, it is still executed without any output to the connection.
+Possible failures:
+
+* 403: This client is not allowed to execute this command. (Configured by rules)
+
**Command output:**
When the command prints a line, Acron will send the following response:
diff --git a/src/main/java/moe/ymc/acron/net/WSFrameHandler.java b/src/main/java/moe/ymc/acron/net/WSFrameHandler.java
index 713d433..f03fc36 100644
--- a/src/main/java/moe/ymc/acron/net/WSFrameHandler.java
+++ b/src/main/java/moe/ymc/acron/net/WSFrameHandler.java
@@ -13,7 +13,6 @@ import moe.ymc.acron.c2s.Request;
import moe.ymc.acron.cmd.CmdQueue;
import moe.ymc.acron.jvav.Pair;
import moe.ymc.acron.s2c.EventQueue;
-import moe.ymc.acron.s2c.response.EventCmdDenied;
import moe.ymc.acron.s2c.response.EventError;
import moe.ymc.acron.s2c.response.EventOk;
import moe.ymc.acron.serialization.Serializer;
@@ -77,7 +76,9 @@ public class WSFrameHandler extends SimpleChannelInboundHandler<WebSocketFrame>
final Pair<Action, Boolean> res = PolicyChecker.check(identification.client(),
reqCmd.cmd());
if (res.l() == Action.DENY) {
- ctx.channel().writeAndFlush(Serializer.serialize(new EventCmdDenied(reqCmd.id())));
+ ctx.channel().writeAndFlush(Serializer.serialize(new EventError(reqCmd.id(),
+ EventError.Code.FORBIDDEN.value, "This client is not allowed to " +
+ "execute this command.")));
return;
}
// Write it before enqueueing to prevent potential
diff --git a/src/main/java/moe/ymc/acron/s2c/response/EventCmdDenied.java b/src/main/java/moe/ymc/acron/s2c/response/EventCmdDenied.java
deleted file mode 100644
index 85fcf8d..0000000
--- a/src/main/java/moe/ymc/acron/s2c/response/EventCmdDenied.java
+++ /dev/null
@@ -1,8 +0,0 @@
-package moe.ymc.acron.s2c.response;
-
-import com.google.gson.annotations.SerializedName;
-import moe.ymc.acron.s2c.Event;
-
-public record EventCmdDenied(@SerializedName("id") int id)
- implements Event {
-}
diff --git a/src/main/java/moe/ymc/acron/s2c/response/EventError.java b/src/main/java/moe/ymc/acron/s2c/response/EventError.java
index d2a03c3..370e8f3 100644
--- a/src/main/java/moe/ymc/acron/s2c/response/EventError.java
+++ b/src/main/java/moe/ymc/acron/s2c/response/EventError.java
@@ -10,7 +10,9 @@ public record EventError(@SerializedName("id") int id,
implements Event {
public enum Code {
SERVER_ERROR(500),
- BAD_REQUEST(400);
+ BAD_REQUEST(400),
+ FORBIDDEN(403)
+ ;
public final int value;
Code(int value) {
diff --git a/src/main/java/moe/ymc/acron/serialization/Serializer.java b/src/main/java/moe/ymc/acron/serialization/Serializer.java
index 6d06388..2cc7976 100644
--- a/src/main/java/moe/ymc/acron/serialization/Serializer.java
+++ b/src/main/java/moe/ymc/acron/serialization/Serializer.java
@@ -10,7 +10,10 @@ import moe.ymc.acron.c2s.ReqSetConfig;
import moe.ymc.acron.c2s.Request;
import moe.ymc.acron.s2c.Event;
import moe.ymc.acron.s2c.event.*;
-import moe.ymc.acron.s2c.response.*;
+import moe.ymc.acron.s2c.response.EventCmdOut;
+import moe.ymc.acron.s2c.response.EventCmdRes;
+import moe.ymc.acron.s2c.response.EventError;
+import moe.ymc.acron.s2c.response.EventOk;
import org.jetbrains.annotations.NotNull;
public class Serializer {
@@ -45,7 +48,6 @@ public class Serializer {
.registerSubtype(EventCmdOut.class, "cmd_output")
.registerSubtype(EventCmdRes.class, "cmd_result")
.registerSubtype(EventLagging.class, "lagging")
- .registerSubtype(EventCmdDenied.class, "cmd_denied")
.registerSubtype(EventError.class, "error")
.registerSubtype(EventOk.class, "ok");
final Gson gson = new GsonBuilder()