2024-05-10 18:29:48 +00:00
|
|
|
|
using System;
|
2022-08-30 15:00:58 +00:00
|
|
|
|
|
|
|
|
|
namespace SharpChat.Packet {
|
|
|
|
|
public class AuthFailPacket : ServerPacket {
|
2024-05-13 20:55:54 +00:00
|
|
|
|
public enum FailReason {
|
|
|
|
|
AuthInvalid,
|
|
|
|
|
MaxSessions,
|
|
|
|
|
Banned,
|
|
|
|
|
Null,
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private readonly FailReason Reason;
|
2024-05-14 22:17:25 +00:00
|
|
|
|
private readonly long Expires;
|
2022-08-30 15:00:58 +00:00
|
|
|
|
|
2024-05-13 20:55:54 +00:00
|
|
|
|
public AuthFailPacket(FailReason reason) {
|
2022-08-30 15:00:58 +00:00
|
|
|
|
Reason = reason;
|
2024-05-10 18:29:48 +00:00
|
|
|
|
}
|
2022-08-30 15:00:58 +00:00
|
|
|
|
|
2024-05-10 18:29:48 +00:00
|
|
|
|
public AuthFailPacket(DateTimeOffset expires) {
|
2024-05-13 20:55:54 +00:00
|
|
|
|
Reason = FailReason.Banned;
|
2024-05-14 22:17:25 +00:00
|
|
|
|
Expires = expires.Year >= 2100 ? -1 : expires.ToUnixTimeSeconds();
|
2022-08-30 15:00:58 +00:00
|
|
|
|
}
|
|
|
|
|
|
2024-05-10 15:24:43 +00:00
|
|
|
|
public override string Pack() {
|
2024-05-10 17:28:52 +00:00
|
|
|
|
string packet = string.Format("1\tn\t{0}fail", Reason switch {
|
2024-05-13 20:55:54 +00:00
|
|
|
|
FailReason.AuthInvalid => "auth",
|
|
|
|
|
FailReason.MaxSessions => "sock",
|
|
|
|
|
FailReason.Banned => "join",
|
2024-05-10 17:28:52 +00:00
|
|
|
|
_ => "user",
|
|
|
|
|
});
|
2022-08-30 15:00:58 +00:00
|
|
|
|
|
2024-05-13 20:55:54 +00:00
|
|
|
|
if(Reason == FailReason.Banned)
|
2024-05-14 22:17:25 +00:00
|
|
|
|
packet += string.Format("\t{0}", Expires);
|
2022-08-30 15:00:58 +00:00
|
|
|
|
|
2024-05-10 17:28:52 +00:00
|
|
|
|
return packet;
|
2022-08-30 15:00:58 +00:00
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|