Initial commit: split VNOX monorepo into VNOX-Server

Unified server binary (vnox-serverd) combining:
- Gateway (TCP, auth, channels, sessions, SQLite)
- Voice-node (UDP relay, Opus, jitter buffer)

Standalone gateway (vnox-gateway) and voice-node (vnox-voice-node) preserved as sub-crates.
This commit is contained in:
loki5512344 2026-07-09 11:52:56 +02:00
commit e751e0bf5b
94 changed files with 9771 additions and 0 deletions

View file

@ -0,0 +1,172 @@
#[repr(u16)]
#[derive(Debug, Clone, Copy, PartialEq, Eq)]
pub enum PacketId {
Hello = 0x0001,
Auth = 0x0002,
Session = 0x0003,
Ping = 0x0004,
Pong = 0x0005,
VoicePacket = 0x0010,
VoiceState = 0x0011,
ChatMessage = 0x0020,
ChatHistory = 0x0021,
JoinChannel = 0x0030,
LeaveChannel = 0x0031,
ChannelState = 0x0032,
ChannelCreate = 0x0033,
ChannelDelete = 0x0034,
ChannelList = 0x0035,
UserJoin = 0x0040,
UserLeave = 0x0041,
PermissionCheck = 0x0050,
PermissionDeny = 0x0051,
DmStart = 0x0060,
DmMessage = 0x0061,
DmHistory = 0x0062,
DmReadAck = 0x0063,
ReadReceipt = 0x0064,
ReadReceiptBroadcast = 0x0065,
MessageReactionAdd = 0x0066,
MessageReactionRemove = 0x0067,
MessageEdit = 0x0068,
MessageDelete = 0x0069,
TypingStart = 0x0070,
GuildCreate = 0x0100,
GuildDelete = 0x0101,
GuildList = 0x0102,
GuildMemberJoin = 0x0103,
GuildMemberLeave = 0x0104,
GuildMemberKick = 0x0105,
RoleCreate = 0x0106,
RoleDelete = 0x0107,
InviteCreate = 0x0108,
InviteAccept = 0x0109,
InviteDelete = 0x010A,
UserRoleUpdate = 0x010B,
GuildAuditLogFetch = 0x010C,
GuildAuditLog = 0x010D,
GuildMemberListFetch = 0x010E,
GuildMemberList = 0x010F,
GuildRoleAssign = 0x0110,
GuildRoleUnassign = 0x0111,
GuildRoleListFetch = 0x0112,
GuildRoleList = 0x0113,
PresenceUpdate = 0x0140,
PresenceSync = 0x0141,
PresenceEvent = 0x0142,
FriendRequest = 0x0150,
FriendAccept = 0x0151,
FriendDecline = 0x0152,
FriendRemove = 0x0153,
FriendList = 0x0154,
BlockUser = 0x0155,
UnblockUser = 0x0156,
BlockList = 0x0157,
Error = 0x00F0,
Disconnect = 0x00FF,
}
impl PacketId {
pub fn from_u16(v: u16) -> Option<Self> {
match v {
0x0001 => Some(Self::Hello),
0x0002 => Some(Self::Auth),
0x0003 => Some(Self::Session),
0x0004 => Some(Self::Ping),
0x0005 => Some(Self::Pong),
0x0010 => Some(Self::VoicePacket),
0x0011 => Some(Self::VoiceState),
0x0020 => Some(Self::ChatMessage),
0x0021 => Some(Self::ChatHistory),
0x0030 => Some(Self::JoinChannel),
0x0031 => Some(Self::LeaveChannel),
0x0032 => Some(Self::ChannelState),
0x0033 => Some(Self::ChannelCreate),
0x0034 => Some(Self::ChannelDelete),
0x0035 => Some(Self::ChannelList),
0x0040 => Some(Self::UserJoin),
0x0041 => Some(Self::UserLeave),
0x0050 => Some(Self::PermissionCheck),
0x0051 => Some(Self::PermissionDeny),
0x0060 => Some(Self::DmStart),
0x0061 => Some(Self::DmMessage),
0x0062 => Some(Self::DmHistory),
0x0063 => Some(Self::DmReadAck),
0x0064 => Some(Self::ReadReceipt),
0x0065 => Some(Self::ReadReceiptBroadcast),
0x0066 => Some(Self::MessageReactionAdd),
0x0067 => Some(Self::MessageReactionRemove),
0x0068 => Some(Self::MessageEdit),
0x0069 => Some(Self::MessageDelete),
0x0070 => Some(Self::TypingStart),
0x0100 => Some(Self::GuildCreate),
0x0101 => Some(Self::GuildDelete),
0x0102 => Some(Self::GuildList),
0x0103 => Some(Self::GuildMemberJoin),
0x0104 => Some(Self::GuildMemberLeave),
0x0105 => Some(Self::GuildMemberKick),
0x0106 => Some(Self::RoleCreate),
0x0107 => Some(Self::RoleDelete),
0x0108 => Some(Self::InviteCreate),
0x0109 => Some(Self::InviteAccept),
0x010A => Some(Self::InviteDelete),
0x010B => Some(Self::UserRoleUpdate),
0x010C => Some(Self::GuildAuditLogFetch),
0x010D => Some(Self::GuildAuditLog),
0x010E => Some(Self::GuildMemberListFetch),
0x010F => Some(Self::GuildMemberList),
0x0110 => Some(Self::GuildRoleAssign),
0x0111 => Some(Self::GuildRoleUnassign),
0x0112 => Some(Self::GuildRoleListFetch),
0x0113 => Some(Self::GuildRoleList),
0x0140 => Some(Self::PresenceUpdate),
0x0141 => Some(Self::PresenceSync),
0x0142 => Some(Self::PresenceEvent),
0x0150 => Some(Self::FriendRequest),
0x0151 => Some(Self::FriendAccept),
0x0152 => Some(Self::FriendDecline),
0x0153 => Some(Self::FriendRemove),
0x0154 => Some(Self::FriendList),
0x0155 => Some(Self::BlockUser),
0x0156 => Some(Self::UnblockUser),
0x0157 => Some(Self::BlockList),
0x00F0 => Some(Self::Error),
0x00FF => Some(Self::Disconnect),
_ => None,
}
}
}
#[repr(u8)]
#[derive(Debug, Clone, Copy, PartialEq, Eq)]
pub enum ErrorCode {
VersionMismatch = 0x01,
AuthFailed = 0x02,
SessionExpired = 0x03,
PermissionDenied = 0x04,
ChannelNotFound = 0x05,
RateLimited = 0x06,
InvalidPacket = 0x07,
NodeUnavailable = 0x08,
GuildNotFound = 0x09,
Blocked = 0x0A,
Internal = 0xFF,
}
impl ErrorCode {
pub fn from_u32(v: u32) -> Option<Self> {
match v {
0x01 => Some(Self::VersionMismatch),
0x02 => Some(Self::AuthFailed),
0x03 => Some(Self::SessionExpired),
0x04 => Some(Self::PermissionDenied),
0x05 => Some(Self::ChannelNotFound),
0x06 => Some(Self::RateLimited),
0x07 => Some(Self::InvalidPacket),
0x08 => Some(Self::NodeUnavailable),
0x09 => Some(Self::GuildNotFound),
0x0A => Some(Self::Blocked),
0xFF => Some(Self::Internal),
_ => None,
}
}
}