aboutsummaryrefslogtreecommitdiff
path: root/src/message/handshake/features.rs
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--src/message/handshake/features.rs67
1 files changed, 67 insertions, 0 deletions
diff --git a/src/message/handshake/features.rs b/src/message/handshake/features.rs
new file mode 100644
index 0000000..e7557e9
--- /dev/null
+++ b/src/message/handshake/features.rs
@@ -0,0 +1,67 @@
+use crate::primitive::StringList;
+
+pub enum Feature {
+ /// --
+ SynchronizedMarkerLine = 0x00000001,
+ /// --
+ SaslAuthentication = 0x00000002,
+ /// --
+ SaslExternal = 0x00000004,
+ /// --
+ HideInactiveNetworks = 0x00000008,
+ /// --
+ PasswordChange = 0x00000010,
+ /// IRCv3 capability negotiation, account tracking
+ CapNegotiation = 0x00000020,
+ /// IRC server SSL validation
+ VerifyServerSSL = 0x00000040,
+ /// IRC server custom message rate limits
+ CustomRateLimits = 0x00000080,
+ /// Currently not supported
+ DccFileTransfer = 0x00000100,
+ /// Timestamp formatting in away (e.g. %%hh:mm%%)
+ AwayFormatTimestamp = 0x00000200,
+ /// Support for exchangeable auth backends
+ Authenticators = 0x00000400,
+ /// Sync buffer activity status
+ BufferActivitySync = 0x00000800,
+ /// Core-Side highlight configuration and matching
+ CoreSideHighlights = 0x00001000,
+ /// Show prefixes for senders in backlog
+ SenderPrefixes = 0x00002000,
+ /// Supports RPC call disconnectFromCore to remotely disconnect a client
+ RemoteDisconnect = 0x00004000,
+ /// Transmit features as list of strings
+ ExtendedFeatures = 0x00008000,
+ /// Serialize message time as 64-bit
+ LongTime,
+ /// Real Name and Avatar URL in backlog
+ RichMessages,
+ /// Backlogmanager supports filtering backlog by messagetype
+ BacklogFilterType,
+ /// ECDSA keys for CertFP in identities
+ EcdsaCertfpKeys,
+ /// 64-bit IDs for messages
+ LongMessageId,
+ /// CoreInfo dynamically updated using signals
+ SyncedCoreInfo,
+}
+
+impl Feature {
+ pub fn get() -> StringList {
+ let mut features = StringList::new();
+ features.push("ExtendedFeatures".to_string());
+ #[cfg(feature = "long-message-id")]
+ features.push("LongMessageId".to_string());
+ #[cfg(feature = "long-time")]
+ features.push("LongTime".to_string());
+ #[cfg(feature = "rich-messages")]
+ features.push("RichMessages".to_string());
+ #[cfg(feature = "sender-prefixes")]
+ features.push("SenderPrefixes".to_string());
+ #[cfg(feature = "authenticators")]
+ features.push("Authenticators".to_string());
+
+ return features;
+ }
+}