20 #include <znc/zncconfig.h> 41 : m_sUsername(sUsername), m_sPassword(sPassword), m_pSock(pSock) {}
50 m_sUsername = sUsername;
51 m_sPassword = sPassword;
107 m_bAwayNotify(false),
108 m_bAccountNotify(false),
109 m_bExtendedJoin(false),
113 m_bServerTime(false),
115 m_bEchoMessage(false),
116 m_bSelfMessage(false),
117 m_bPlaybackActive(false),
120 m_sNick(
"unknown-nick"),
130 {
false, [
this](
bool bVal) { m_bNamesx = bVal; }}},
131 {
"userhost-in-names",
132 {
false, [
this](
bool bVal) { m_bUHNames = bVal; }}},
134 {
false, [
this](
bool bVal) { m_bEchoMessage = bVal; }}},
136 {
false, [
this](
bool bVal) {
137 m_bServerTime = bVal;
138 SetTagSupport(
"time", bVal);
140 {
"batch", {
false, [
this](
bool bVal) {
142 SetTagSupport(
"batch", bVal);
145 {
false, [
this](
bool bVal) { m_bCapNotify = bVal; }}},
147 {
true, [
this](
bool bVal) { m_bAwayNotify = bVal; }}},
149 {
true, [
this](
bool bVal) { m_bAccountNotify = bVal; }}},
151 {
true, [
this](
bool bVal) { m_bExtendedJoin = bVal; }}},
156 SetMaxBufferThreshold(1024);
159 m_mCoreCaps[
"znc.in/server-time-iso"] = m_mCoreCaps[
"server-time"];
160 m_mCoreCaps[
"znc.in/batch"] = m_mCoreCaps[
"batch"];
161 m_mCoreCaps[
"znc.in/self-message"] = {
162 false, [
this](
bool bVal) { m_bSelfMessage = bVal; }};
170 void SendRequiredPasswordNotice();
174 CString GetNick(
bool bAllowIRCNick =
true)
const;
189 static bool IsValidIdentifier(
const CString& sIdentifier);
191 void UserCommand(
CString& sLine);
192 void UserPortCommand(
CString& sLine);
193 void StatusCTCP(
const CString& sCommand);
200 void PutIRC(
const CString& sLine);
210 void PutClient(
const CString& sLine);
257 bool PutClient(
const CMessage& Message);
258 unsigned int PutStatus(
const CTable& table);
259 void PutStatus(
const CString& sLine);
260 void PutStatusNotice(
const CString& sLine);
265 return 1 == m_ssAcceptedCaps.count(sCap);
269 return 1 == m_ssSupportedTags.count(sTag);
275 void SetTagSupport(
const CString& sTag,
bool bState);
277 void NotifyServerDependentCaps(
const SCString& ssCaps);
278 void ClearServerDependentCaps();
280 void ReadLine(
const CString& sData)
override;
282 void HelpUser(
const CString& sFilter =
"");
284 void Connected()
override;
285 void Timeout()
override;
286 void Disconnected()
override;
287 void ConnectionRefused()
override;
288 void ReachedMaxBuffer()
override;
290 void SetNick(
const CString& s);
293 void SetNetwork(
CIRCNetwork* pNetwork,
bool bDisconnect =
true,
294 bool bReconnect =
true);
296 const std::vector<CClient*>& GetClients()
const;
302 void HandleCap(
const CMessage& Message);
303 void RespondCap(
const CString& sResponse);
304 void ParsePass(
const CString& sAuthLine);
305 void ParseUser(
const CString& sAuthLine);
306 void ParseIdentifier(
const CString& sAuthLine);
308 template <
typename T>
309 void AddBuffer(
const T& Message);
310 void EchoMessage(
const CMessage& Message);
312 std::set<CChan*> MatchChans(
const CString& sPatterns)
const;
313 unsigned int AttachChans(
const std::set<CChan*>& sChans);
314 unsigned int DetachChans(
const std::set<CChan*>& sChans);
322 bool OnPingMessage(
CMessage& Message);
323 bool OnPongMessage(
CMessage& Message);
327 bool OnOtherMessage(
CMessage& Message);
359 std::map<CString, std::pair<bool, std::function<void(bool bVal)>>>
365 friend class ClientTest;
368 #endif // !ZNC_CLIENT_H virtual void RefusedLogin(const CString &sReason)=0
void Invalidate() override
Definition: Client.h:86
bool m_bCapNotify
Definition: Client.h:334
Definition: Message.h:302
Definition: Message.h:245
CString m_sPass
Definition: Client.h:349
bool m_bServerTime
Definition: Client.h:341
bool IsTagEnabled(const CString &sTag) const
Definition: Client.h:268
bool HasAccountNotify() const
Definition: Client.h:179
SCString m_ssAcceptedCaps
Definition: Client.h:354
bool m_bSelfMessage
Definition: Client.h:344
std::map< CString, std::pair< bool, std::function< void(bool bVal)> > > m_mCoreCaps
Definition: Client.h:360
bool m_bGotNick
Definition: Client.h:331
CAuthBase(const CString &sUsername, const CString &sPassword, CZNCSock *pSock)
Definition: Client.h:39
bool HasBatch() const
Definition: Client.h:185
const CString & GetUsername() const
Definition: Client.h:58
CString m_sNick
Definition: Client.h:348
virtual void Invalidate()
Base IRC socket for client<->ZNC, and ZNC<->server.
Definition: Socket.h:304
bool IsAttached() const
Definition: Client.h:195
bool HasCapNotify() const
Definition: Client.h:177
Definition: Message.h:281
Definition: Message.h:259
bool HasSelfMessage() const
Definition: Client.h:187
void SetAway(bool bAway)
Definition: Client.h:291
bool IsAway() const
Definition: Client.h:183
bool m_bUHNames
Definition: Client.h:339
std::set< CString > SCString
Definition: ZNCString.h:35
bool HasExtendedJoin() const
Definition: Client.h:180
Definition: Message.h:228
void RefuseLogin(const CString &sReason)
bool m_bEchoMessage
Definition: Client.h:343
bool HasEchoMessage() const
Definition: Client.h:186
Definition: Message.h:288
CUser * GetUser() const
Definition: Client.h:292
Definition: Message.h:217
Basic socket class.
Definition: Csocket.h:548
Definition: IRCNetwork.h:40
bool HasAwayNotify() const
Definition: Client.h:178
String class that is used inside ZNC.
Definition: ZNCString.h:68
bool m_bPlaybackActive
Definition: Client.h:345
CString m_sNetwork
Definition: Client.h:351
bool m_bAccountNotify
Definition: Client.h:336
CUser * m_pUser
Definition: Client.h:346
CString GetIdentifier() const
Definition: Client.h:176
Csock * GetSocket() const
Definition: Client.h:60
bool m_bExtendedJoin
Definition: Client.h:337
CClient()
Definition: Client.h:100
virtual void SetLoginInfo(const CString &sUsername, const CString &sPassword, CZNCSock *pSock)
Definition: Client.h:48
SCString m_ssServerDependentCaps
Definition: Client.h:363
CIRCNetwork * m_pNetwork
Definition: Client.h:347
bool m_bGotPass
Definition: Client.h:330
bool IsPlaybackActive() const
Definition: Client.h:197
virtual ~CClientAuth()
Definition: Client.h:81
CIRCNetwork * GetNetwork() const
Definition: Client.h:295
Definition: Message.h:295
bool m_bAwayNotify
Definition: Client.h:335
bool m_bNamesx
Definition: Client.h:338
bool m_bInCap
Definition: Client.h:333
bool HasNamesx() const
Definition: Client.h:181
const CString & GetPassword() const
Definition: Client.h:59
virtual ~CAuthBase()
Definition: Client.h:43
CString GetRemoteIP() const
CAuthBase & operator=(const CAuthBase &)=delete
CClient * m_pClient
Definition: Client.h:95
void SetPlaybackActive(bool bActive)
Definition: Client.h:198
std::shared_ptr< CAuthBase > m_spAuth
Definition: Client.h:353
CString m_sIdentifier
Definition: Client.h:352
Definition: Message.h:238
bool m_bAway
Definition: Client.h:340
bool HasUHNames() const
Definition: Client.h:182
bool m_bBatch
Definition: Client.h:342
bool HasServerTime() const
Definition: Client.h:184
Generate a grid-like output from a given input.
Definition: Utils.h:141
SCString m_ssSupportedTags
Definition: Client.h:355
bool IsCapEnabled(const CString &sCap) const
Definition: Client.h:264
bool m_bGotUser
Definition: Client.h:332
CString m_sUser
Definition: Client.h:350
Here is a small explanation of how messages on IRC work, and how you can use this class to get useful...
Definition: Message.h:63
virtual void AcceptedLogin(CUser &User)=0
void AcceptLogin(CUser &User)