Files
natsdotnet/src/NATS.Server/Protocol/ClientCommandMatrix.cs

32 lines
1.1 KiB
C#

namespace NATS.Server.Protocol;
public sealed class ClientCommandMatrix
{
public bool IsAllowed(global::NATS.Server.ClientKind kind, string? op)
{
if (string.IsNullOrWhiteSpace(op))
return true;
return (kind, op.ToUpperInvariant()) switch
{
(global::NATS.Server.ClientKind.Router, "RS+") => true,
(global::NATS.Server.ClientKind.Router, "RS-") => true,
(global::NATS.Server.ClientKind.Router, "RMSG") => true,
(global::NATS.Server.ClientKind.Gateway, "A+") => true,
(global::NATS.Server.ClientKind.Gateway, "A-") => true,
(global::NATS.Server.ClientKind.Leaf, "LS+") => true,
(global::NATS.Server.ClientKind.Leaf, "LS-") => true,
(global::NATS.Server.ClientKind.Leaf, "LMSG") => true,
(_, "RS+") => false,
(_, "RS-") => false,
(_, "RMSG") => false,
(_, "A+") => false,
(_, "A-") => false,
(_, "LS+") => false,
(_, "LS-") => false,
(_, "LMSG") => false,
_ => true,
};
}
}