20#include <znc/zncconfig.h>
42 : m_sUsername(sUsername), m_sPassword(sPassword), m_pSock(pSock) {}
51 m_sUsername = sUsername;
52 m_sPassword = sPassword;
252 bool bReconnect =
true);
276 const CString& sAuthorizationId);
283 void HandleCap(
const CMessage& Message);
284 void RespondCap(
const CString& sResponse);
285 void ParsePass(
const CString& sAuthLine);
286 void ParseIdentifier(
const CString& sAuthLine);
288 template <
typename T>
289 void AddBuffer(
const T& Message);
290 void EchoMessage(
const CMessage& Message);
292 std::set<CChan*> MatchChans(
const CString& sPatterns)
const;
293 unsigned int AttachChans(
const std::set<CChan*>& sChans);
294 unsigned int DetachChans(
const std::set<CChan*>& sChans);
298 void AbortSASL(
const CString& sFullIRCLine);
304 SCString EnumerateSASLMechanisms()
const;
311 bool OnPingMessage(
CMessage& Message);
312 bool OnPongMessage(
CMessage& Message);
317 bool OnOtherMessage(
CMessage& Message);
362 static const std::map<
CString, std::function<void(
CClient*,
bool bVal)>>&
std::set< CString > SCString
Definition ZNCString.h:37
virtual void AcceptedLogin(CUser &User)=0
const CString & GetPassword() const
Definition Client.h:60
void AcceptLogin(CUser &User)
CAuthBase(const CAuthBase &)=delete
CAuthBase & operator=(const CAuthBase &)=delete
const CString & GetUsername() const
Definition Client.h:59
virtual ~CAuthBase()
Definition Client.h:44
virtual void RefusedLogin(const CString &sReason)=0
virtual void Invalidate()
CAuthBase(const CString &sUsername, const CString &sPassword, CZNCSock *pSock)
Definition Client.h:40
Csock * GetSocket() const
Definition Client.h:61
virtual void SetLoginInfo(const CString &sUsername, const CString &sPassword, CZNCSock *pSock)
Definition Client.h:49
void RefuseLogin(const CString &sReason)
CString GetRemoteIP() const
CClientAuth(CClient *pClient, const CString &sUsername, const CString &sPassword)
void Invalidate() override
Definition Client.h:87
CClientAuth(const CClientAuth &)=delete
CClientAuth & operator=(const CClientAuth &)=delete
virtual ~CClientAuth()
Definition Client.h:82
CClient * m_pClient
Definition Client.h:96
void AcceptedLogin(CUser &User) override
void RefusedLogin(const CString &sReason) override
CString GetNickMask() const
bool HasSelfMessage() const
Definition Client.h:128
bool IsTagEnabled(const CString &sTag) const
Definition Client.h:224
void SetNetwork(CIRCNetwork *pNetwork, bool bDisconnect=true, bool bReconnect=true)
CString GetFullName() const
bool m_bEchoMessage
Definition Client.h:336
CIRCNetwork * m_pNetwork
Definition Client.h:342
void SendRequiredPasswordNotice()
bool PutClientRaw(const CString &sLine)
Sends a raw data line to the client.
void SetTagSupport(const CString &sTag, bool bState)
Registers a tag as being supported or unsupported by the client.
void UserCommand(CString &sLine)
CString m_sNick
Definition Client.h:343
const CIRCSock * GetIRCSock() const
bool m_bMessageTagCap
Definition Client.h:338
bool m_bAccountNotify
Definition Client.h:327
CClient & operator=(const CClient &)=delete
static bool IsValidIdentifier(const CString &sIdentifier)
bool m_bAway
Definition Client.h:333
bool HasCapNotify() const
Definition Client.h:116
void PutClient(const CString &sLine)
Sends a message to the client.
CString m_sNetwork
Definition Client.h:347
bool m_bBatch
Definition Client.h:335
void PutIRC(const CString &sLine)
bool m_bChgHost
Definition Client.h:332
std::shared_ptr< CAuthBase > m_spAuth
Definition Client.h:355
CClient(const CClient &)=delete
CString GetNick(bool bAllowIRCNick=true) const
unsigned int PutStatus(const CTable &table)
bool m_bInCap
Definition Client.h:324
void AcceptSASLLogin(CUser &User)
void StatusCTCP(const CString &sCommand)
CString GetIdentifier() const
Definition Client.h:113
bool m_bSASLCap
Definition Client.h:339
bool m_bGotNick
Definition Client.h:321
bool HasCap302() const
Definition Client.h:115
void ReadLine(const CString &sData) override
bool IsPlaybackActive() const
Definition Client.h:138
CString m_sPass
Definition Client.h:344
SCString m_ssAcceptedCaps
Definition Client.h:356
bool m_bGotPass
Definition Client.h:320
bool IsAttached() const
Definition Client.h:136
void SendSASLChallenge(CString sMessage)
Sends AUTHENTIATE message to client.
bool HasServerTime() const
Definition Client.h:125
CString m_sSASLMechanism
Definition Client.h:351
void HelpUser(const CString &sFilter="")
bool HasBatch() const
Definition Client.h:126
bool HasUHNames() const
Definition Client.h:122
bool HasAwayNotify() const
Definition Client.h:117
void StartSASLPasswordCheck(const CString &sUser, const CString &sPassword, const CString &sAuthorizationId)
Start potentially asynchronous process of checking the credentials.
SCString m_ssPreviouslyFailedSASLMechanisms
Definition Client.h:358
bool HasChgHost() const
Definition Client.h:123
void PutStatusNotice(const CString &sLine)
void SetPlaybackActive(bool bActive)
Definition Client.h:139
unsigned short int m_uCapVersion
Definition Client.h:323
void PutIRCStripping(CMessage Message)
bool m_bServerTime
Definition Client.h:334
void ReachedMaxBuffer() override
This WARNING event is called when your buffer for readline exceeds the warning threshold and triggers...
void RefuseSASLLogin(const CString &sReason)
SCString m_ssSupportedTags
Definition Client.h:357
bool IsCapEnabled(const CString &sCap) const
Definition Client.h:220
void PutStatus(const CString &sLine)
void Timeout() override
Sock Timed out event.
bool m_bGotUser
Definition Client.h:322
void SetAway(bool bAway)
Definition Client.h:249
bool m_bSelfMessage
Definition Client.h:337
CUser * m_pUser
Definition Client.h:341
void SetNick(const CString &s)
friend class CCoreCaps
Definition Client.h:366
void Disconnected() override
Disconnected event.
void UserPortCommand(CString &sLine)
void Connected() override
Connected event.
void PutModNotice(const CString &sModule, const CString &sLine)
bool m_bPlaybackActive
Definition Client.h:340
bool IsAway() const
Definition Client.h:124
bool m_bNamesx
Definition Client.h:330
friend class ClientTest
Definition Client.h:365
bool HasEchoMessage() const
Definition Client.h:127
bool HasAccountNotify() const
Definition Client.h:118
bool HasExtendedJoin() const
Definition Client.h:120
void PutModule(const CString &sModule, const CString &sLine)
void NotifyServerDependentCap(const CString &sCap, bool bValue, const CString &sValue)
Notifies client about one specific cap which server has just notified us about.
void AcceptLogin(CUser &User)
CString m_sUser
Definition Client.h:346
bool m_bAwayNotify
Definition Client.h:326
static const std::map< CString, std::function< void(CClient *, bool bVal)> > & CoreCaps()
bool m_bExtendedJoin
Definition Client.h:329
bool m_bCapNotify
Definition Client.h:325
bool HasNamesx() const
Definition Client.h:121
void ConnectionRefused() override
Connection Refused Event.
CUser * GetUser() const
Definition Client.h:250
CString ParseUser(const CString &sAuthLine)
Gathers username, client id, network name, if present.
CString m_sSASLBuffer
Definition Client.h:349
CIRCNetwork * GetNetwork() const
Definition Client.h:253
unsigned short int CapVersion() const
Definition Client.h:114
bool m_bInviteNotify
Definition Client.h:328
const std::vector< CClient * > & GetClients() const
bool m_bUHNames
Definition Client.h:331
bool HasInviteNotify() const
Definition Client.h:119
bool PutClient(const CMessage &Message)
Sends a message to the client.
CString m_sSASLUser
Definition Client.h:354
CString m_sIdentifier
Definition Client.h:348
void RefuseLogin(const CString &sReason)
Definition Translation.h:103
Definition IRCNetwork.h:40
Base IRC socket for client<->ZNC, and ZNC<->server.
Definition Socket.h:309
Here is a small explanation of how messages on IRC work, and how you can use this class to get useful...
Definition Message.h:57
String class that is used inside ZNC.
Definition ZNCString.h:68
Generate a grid-like or list-like output from a given input.
Definition Utils.h:173
Basic socket class.
Definition Csocket.h:564