diff options
| author | Ruben Beltran del Rio <git@r.bdr.sh> | 2025-02-09 22:44:21 +0100 |
|---|---|---|
| committer | Ruben Beltran del Rio <git@r.bdr.sh> | 2025-02-09 22:44:21 +0100 |
| commit | c402a8923d2e89607a007f46ee4cde15714d746d (patch) | |
| tree | 597f0e436cac0ec2dda2eb8437cfb57de6c95a82 /src/field/utils | |
| parent | 48408b9e42eaeeaf0944f9a37f7882ba9ddc7f19 (diff) | |
Restart with fields module
Diffstat (limited to 'src/field/utils')
| -rw-r--r-- | src/field/utils/access_privileges.rs | 47 | ||||
| -rw-r--r-- | src/field/utils/banner_type.rs | 9 | ||||
| -rw-r--r-- | src/field/utils/mod.rs | 6 | ||||
| -rw-r--r-- | src/field/utils/user_flags.rs | 22 |
4 files changed, 84 insertions, 0 deletions
diff --git a/src/field/utils/access_privileges.rs b/src/field/utils/access_privileges.rs new file mode 100644 index 0000000..eea9557 --- /dev/null +++ b/src/field/utils/access_privileges.rs @@ -0,0 +1,47 @@ +//! This module contains utilities to deal with the user access bitmap + +pub const CAN_DELETE_FILES: u64 = 2_u64.pow(0); +pub const CAN_UPLOAD_FILES: u64 = 2_u64.pow(1); +pub const CAN_DOWNLOAD_FILES: u64 = 2_u64.pow(2); +pub const CAN_RENAME_FILES: u64 = 2_u64.pow(3); +pub const CAN_MOVE_FILES: u64 = 2_u64.pow(4); +pub const CAN_CREATE_FOLDERS: u64 = 2_u64.pow(5); +pub const CAN_DELETE_FOLDERS: u64 = 2_u64.pow(6); +pub const CAN_RENAME_FOLDERS: u64 = 2_u64.pow(7); +pub const CAN_MOVE_FOLDERS: u64 = 2_u64.pow(8); +pub const CAN_READ_CHATS: u64 = 2_u64.pow(9); +pub const CAN_SEND_CHATS: u64 = 2_u64.pow(10); +pub const CAN_OPEN_CHATS: u64 = 2_u64.pow(11); +pub const CAN_CLOSE_CHATS: u64 = 2_u64.pow(12); +pub const CAN_BE_SHOWN_IN_LIST: u64 = 2_u64.pow(13); +pub const CAN_CREATE_USERS: u64 = 2_u64.pow(14); +pub const CAN_DELETE_USERS: u64 = 2_u64.pow(15); +pub const CAN_OPEN_USERS: u64 = 2_u64.pow(16); +pub const CAN_MODIFY_USERS: u64 = 2_u64.pow(17); +pub const CAN_CHANGE_OWN_PASSWORD: u64 = 2_u64.pow(18); +pub const CAN_SEND_PRIVATE_MESSAGES: u64 = 2_u64.pow(19); +pub const CAN_READ_NEWS_ARTICLES: u64 = 2_u64.pow(20); +pub const CAN_POST_NEWS_ARTICLES: u64 = 2_u64.pow(21); +pub const CAN_DISCONNECT_USERS: u64 = 2_u64.pow(22); +pub const CANNOT_BE_DISCONNECTED: u64 = 2_u64.pow(23); +pub const CAN_GET_CLIENT_INFO: u64 = 2_u64.pow(24); +pub const CAN_UPLOAD_ANYWHERE: u64 = 2_u64.pow(25); +pub const CAN_USE_ANY_NAME: u64 = 2_u64.pow(26); +pub const CAN_SKIP_AGREEMENT: u64 = 2_u64.pow(27); +pub const CAN_SET_FILE_COMMENT: u64 = 2_u64.pow(28); +pub const CAN_SET_FOLDER_COMMENT: u64 = 2_u64.pow(29); +pub const CAN_VIEW_DROP_BOXES: u64 = 2_u64.pow(30); +pub const CAN_MAKE_ALIASES: u64 = 2_u64.pow(31); +pub const CAN_BROADCAST: u64 = 2_u64.pow(32); +pub const CAN_DELETE_NEWS_ARTICLES: u64 = 2_u64.pow(33); +pub const CAN_CREATE_NEWS_CATEGORIES: u64 = 2_u64.pow(34); +pub const CAN_DELETE_NEWS_CATEGORIES: u64 = 2_u64.pow(35); +pub const CAN_CREATE_NEWS_FOLDERS: u64 = 2_u64.pow(36); +pub const CAN_DELETE_NEWS_FOLDERS: u64 = 2_u64.pow(37); +pub const CAN_UPLOAD_FOLDERS: u64 = 2_u64.pow(38); +pub const CAN_DOWNLOAD_FOLDERS: u64 = 2_u64.pow(39); +pub const CAN_SEND_MESSAGES: u64 = 2_u64.pow(40); + +pub fn can(permission: u64, bits: u64) -> bool { + bits & permission != 0 +} diff --git a/src/field/utils/banner_type.rs b/src/field/utils/banner_type.rs new file mode 100644 index 0000000..eb4e10c --- /dev/null +++ b/src/field/utils/banner_type.rs @@ -0,0 +1,9 @@ +#[repr(u16)] +#[derive(Debug, Clone, Copy, PartialEq, Eq)] +pub enum BannerType { + URL = 1, + JPEG = 3, + GIF = 4, + BMP = 5, + PICT = 6, +} diff --git a/src/field/utils/mod.rs b/src/field/utils/mod.rs new file mode 100644 index 0000000..83b3239 --- /dev/null +++ b/src/field/utils/mod.rs @@ -0,0 +1,6 @@ +//! This module contains utilities to interact with specialized fields (eg. +//! bitmaps) + +pub mod access_privileges; +pub mod banner_type; +pub mod user_flags; diff --git a/src/field/utils/user_flags.rs b/src/field/utils/user_flags.rs new file mode 100644 index 0000000..6c79e8b --- /dev/null +++ b/src/field/utils/user_flags.rs @@ -0,0 +1,22 @@ +//! This module contains utilities to read the data in a UserFlags bitmap. + +const AWAY: u32 = 0b0001; +const ADMIN_OR_DISCONNECTED: u32 = 0b0010; +const REFUSES_PRIVATE_MESSAGES: u32 = 0b0100; +const REFUSES_PRIVATE_CHAT: u32 = 0b1000; + +pub fn is_away(bits: u32) -> bool { + bits & AWAY != 0 +} + +pub fn is_admin_or_disconnected(bits: u32) -> bool { + bits & ADMIN_OR_DISCONNECTED != 0 +} + +pub fn refuses_private_messages(bits: u32) -> bool { + bits & REFUSES_PRIVATE_MESSAGES != 0 +} + +pub fn refuses_private_chat(bits: u32) -> bool { + bits & REFUSES_PRIVATE_CHAT != 0 +} |