Add clang-format configuration.

For now, it uses tabs like before, to make the diff easier to read/check.
One of following commits will switch it to spaces.
This commit is contained in:
Alexey Sokolov
2015-12-06 22:36:35 +00:00
parent 02f8749a8b
commit 33b0627d75
132 changed files with 12743 additions and 8904 deletions
+169 -87
View File
@@ -22,16 +22,22 @@ using std::set;
class CBounceDCCMod;
class CDCCBounce : public CSocket {
public:
public:
CDCCBounce(CBounceDCCMod* pMod, unsigned long uLongIP, unsigned short uPort,
const CString& sFileName, const CString& sRemoteNick,
const CString& sRemoteIP, bool bIsChat = false);
CDCCBounce(CBounceDCCMod* pMod, const CString& sHostname, unsigned short uPort,
const CString& sRemoteNick, const CString& sRemoteIP,
const CString& sFileName, int iTimeout = 60, bool bIsChat = false);
const CString& sFileName, const CString& sRemoteNick,
const CString& sRemoteIP, bool bIsChat = false);
CDCCBounce(CBounceDCCMod* pMod, const CString& sHostname,
unsigned short uPort, const CString& sRemoteNick,
const CString& sRemoteIP, const CString& sFileName,
int iTimeout = 60, bool bIsChat = false);
virtual ~CDCCBounce();
static unsigned short DCCRequest(const CString& sNick, unsigned long uLongIP, unsigned short uPort, const CString& sFileName, bool bIsChat, CBounceDCCMod* pMod, const CString& sRemoteIP);
static unsigned short DCCRequest(const CString& sNick,
unsigned long uLongIP,
unsigned short uPort,
const CString& sFileName, bool bIsChat,
CBounceDCCMod* pMod,
const CString& sRemoteIP);
void ReadLine(const CString& sData) override;
void ReadData(const char* data, size_t len) override;
@@ -46,7 +52,9 @@ public:
void Shutdown();
void PutServ(const CString& sLine);
void PutPeer(const CString& sLine);
bool IsPeerConnected() { return (m_pPeer) ? m_pPeer->IsConnected() : false; }
bool IsPeerConnected() {
return (m_pPeer) ? m_pPeer->IsConnected() : false;
}
// Setters
void SetPeer(CDCCBounce* p) { m_pPeer = p; }
@@ -64,21 +72,21 @@ public:
bool IsRemote() { return m_bIsRemote; }
bool IsChat() { return m_bIsChat; }
// !Getters
private:
protected:
CString m_sRemoteNick;
CString m_sRemoteIP;
CString m_sConnectIP;
CString m_sLocalIP;
CString m_sFileName;
CBounceDCCMod* m_pModule;
CDCCBounce* m_pPeer;
unsigned short m_uRemotePort;
bool m_bIsChat;
bool m_bIsRemote;
private:
protected:
CString m_sRemoteNick;
CString m_sRemoteIP;
CString m_sConnectIP;
CString m_sLocalIP;
CString m_sFileName;
CBounceDCCMod* m_pModule;
CDCCBounce* m_pPeer;
unsigned short m_uRemotePort;
bool m_bIsChat;
bool m_bIsRemote;
static const unsigned int m_uiMaxDCCBuffer;
static const unsigned int m_uiMinDCCBuffer;
static const unsigned int m_uiMaxDCCBuffer;
static const unsigned int m_uiMinDCCBuffer;
};
// If we buffer more than this in memory, we will throttle the receiving side
@@ -87,7 +95,7 @@ const unsigned int CDCCBounce::m_uiMaxDCCBuffer = 10 * 1024;
const unsigned int CDCCBounce::m_uiMinDCCBuffer = 2 * 1024;
class CBounceDCCMod : public CModule {
public:
public:
void ListDCCsCommand(const CString& sLine) {
CTable Table;
Table.AddColumn("Type");
@@ -99,7 +107,7 @@ public:
set<CSocket*>::const_iterator it;
for (it = BeginSockets(); it != EndSockets(); ++it) {
CDCCBounce* pSock = (CDCCBounce*) *it;
CDCCBounce* pSock = (CDCCBounce*)*it;
CString sSockName = pSock->GetSockName();
if (!(pSock->IsRemote())) {
@@ -142,29 +150,32 @@ public:
MODCONSTRUCTOR(CBounceDCCMod) {
AddHelpCommand();
AddCommand("ListDCCs", static_cast<CModCommand::ModCmdFunc>(&CBounceDCCMod::ListDCCsCommand),
"", "List all active DCCs");
AddCommand("UseClientIP", static_cast<CModCommand::ModCmdFunc>(&CBounceDCCMod::UseClientIPCommand),
"<true|false>");
AddCommand("ListDCCs", static_cast<CModCommand::ModCmdFunc>(
&CBounceDCCMod::ListDCCsCommand),
"", "List all active DCCs");
AddCommand("UseClientIP", static_cast<CModCommand::ModCmdFunc>(
&CBounceDCCMod::UseClientIPCommand),
"<true|false>");
}
virtual ~CBounceDCCMod() {}
CString GetLocalDCCIP() {
return GetUser()->GetLocalDCCIP();
}
CString GetLocalDCCIP() { return GetUser()->GetLocalDCCIP(); }
bool UseClientIP() {
return GetNV("UseClientIP").ToBool();
}
bool UseClientIP() { return GetNV("UseClientIP").ToBool(); }
EModRet OnUserCTCP(CString& sTarget, CString& sMessage) override {
if (sMessage.StartsWith("DCC ")) {
CString sType = sMessage.Token(1, false, " ", false, "\"", "\"", true);
CString sFile = sMessage.Token(2, false, " ", false, "\"", "\"", false);
unsigned long uLongIP = sMessage.Token(3, false, " ", false, "\"", "\"", true).ToULong();
unsigned short uPort = sMessage.Token(4, false, " ", false, "\"", "\"", true).ToUShort();
unsigned long uFileSize = sMessage.Token(5, false, " ", false, "\"", "\"", true).ToULong();
CString sType =
sMessage.Token(1, false, " ", false, "\"", "\"", true);
CString sFile =
sMessage.Token(2, false, " ", false, "\"", "\"", false);
unsigned long uLongIP = sMessage.Token(3, false, " ", false, "\"",
"\"", true).ToULong();
unsigned short uPort = sMessage.Token(4, false, " ", false, "\"",
"\"", true).ToUShort();
unsigned long uFileSize = sMessage.Token(5, false, " ", false, "\"",
"\"", true).ToULong();
CString sIP = GetLocalDCCIP();
if (!UseClientIP()) {
@@ -172,15 +183,22 @@ public:
}
if (sType.Equals("CHAT")) {
unsigned short uBNCPort = CDCCBounce::DCCRequest(sTarget, uLongIP, uPort, "", true, this, "");
unsigned short uBNCPort = CDCCBounce::DCCRequest(
sTarget, uLongIP, uPort, "", true, this, "");
if (uBNCPort) {
PutIRC("PRIVMSG " + sTarget + " :\001DCC CHAT chat " + CString(CUtils::GetLongIP(sIP)) + " " + CString(uBNCPort) + "\001");
PutIRC("PRIVMSG " + sTarget + " :\001DCC CHAT chat " +
CString(CUtils::GetLongIP(sIP)) + " " +
CString(uBNCPort) + "\001");
}
} else if (sType.Equals("SEND")) {
// DCC SEND readme.txt 403120438 5550 1104
unsigned short uBNCPort = CDCCBounce::DCCRequest(sTarget, uLongIP, uPort, sFile, false, this, "");
unsigned short uBNCPort = CDCCBounce::DCCRequest(
sTarget, uLongIP, uPort, sFile, false, this, "");
if (uBNCPort) {
PutIRC("PRIVMSG " + sTarget + " :\001DCC SEND " + sFile + " " + CString(CUtils::GetLongIP(sIP)) + " " + CString(uBNCPort) + " " + CString(uFileSize) + "\001");
PutIRC("PRIVMSG " + sTarget + " :\001DCC SEND " + sFile +
" " + CString(CUtils::GetLongIP(sIP)) + " " +
CString(uBNCPort) + " " + CString(uFileSize) +
"\001");
}
} else if (sType.Equals("RESUME")) {
// PRIVMSG user :DCC RESUME "znc.o" 58810 151552
@@ -188,20 +206,27 @@ public:
set<CSocket*>::const_iterator it;
for (it = BeginSockets(); it != EndSockets(); ++it) {
CDCCBounce* pSock = (CDCCBounce*) *it;
CDCCBounce* pSock = (CDCCBounce*)*it;
if (pSock->GetLocalPort() == uResumePort) {
PutIRC("PRIVMSG " + sTarget + " :\001DCC " + sType + " " + sFile + " " + CString(pSock->GetUserPort()) + " " + sMessage.Token(4) + "\001");
PutIRC("PRIVMSG " + sTarget + " :\001DCC " + sType +
" " + sFile + " " +
CString(pSock->GetUserPort()) + " " +
sMessage.Token(4) + "\001");
}
}
} else if (sType.Equals("ACCEPT")) {
// Need to lookup the connection by port, filter the port, and forward to the user
// Need to lookup the connection by port, filter the port, and
// forward to the user
set<CSocket*>::const_iterator it;
for (it = BeginSockets(); it != EndSockets(); ++it) {
CDCCBounce* pSock = (CDCCBounce*) *it;
CDCCBounce* pSock = (CDCCBounce*)*it;
if (pSock->GetUserPort() == sMessage.Token(3).ToUShort()) {
PutIRC("PRIVMSG " + sTarget + " :\001DCC " + sType + " " + sFile + " " + CString(pSock->GetLocalPort()) + " " + sMessage.Token(4) + "\001");
PutIRC("PRIVMSG " + sTarget + " :\001DCC " + sType +
" " + sFile + " " +
CString(pSock->GetLocalPort()) + " " +
sMessage.Token(4) + "\001");
}
}
}
@@ -216,46 +241,72 @@ public:
CIRCNetwork* pNetwork = GetNetwork();
if (sMessage.StartsWith("DCC ") && pNetwork->IsUserAttached()) {
// DCC CHAT chat 2453612361 44592
CString sType = sMessage.Token(1, false, " ", false, "\"", "\"", true);
CString sFile = sMessage.Token(2, false, " ", false, "\"", "\"", false);
unsigned long uLongIP = sMessage.Token(3, false, " ", false, "\"", "\"", true).ToULong();
unsigned short uPort = sMessage.Token(4, false, " ", false, "\"", "\"", true).ToUShort();
unsigned long uFileSize = sMessage.Token(5, false, " ", false, "\"", "\"", true).ToULong();
CString sType =
sMessage.Token(1, false, " ", false, "\"", "\"", true);
CString sFile =
sMessage.Token(2, false, " ", false, "\"", "\"", false);
unsigned long uLongIP = sMessage.Token(3, false, " ", false, "\"",
"\"", true).ToULong();
unsigned short uPort = sMessage.Token(4, false, " ", false, "\"",
"\"", true).ToUShort();
unsigned long uFileSize = sMessage.Token(5, false, " ", false, "\"",
"\"", true).ToULong();
if (sType.Equals("CHAT")) {
CNick FromNick(Nick.GetNickMask());
unsigned short uBNCPort = CDCCBounce::DCCRequest(FromNick.GetNick(), uLongIP, uPort, "", true, this, CUtils::GetIP(uLongIP));
unsigned short uBNCPort = CDCCBounce::DCCRequest(
FromNick.GetNick(), uLongIP, uPort, "", true, this,
CUtils::GetIP(uLongIP));
if (uBNCPort) {
CString sIP = GetLocalDCCIP();
PutUser(":" + Nick.GetNickMask() + " PRIVMSG " + pNetwork->GetCurNick() + " :\001DCC CHAT chat " + CString(CUtils::GetLongIP(sIP)) + " " + CString(uBNCPort) + "\001");
PutUser(":" + Nick.GetNickMask() + " PRIVMSG " +
pNetwork->GetCurNick() + " :\001DCC CHAT chat " +
CString(CUtils::GetLongIP(sIP)) + " " +
CString(uBNCPort) + "\001");
}
} else if (sType.Equals("SEND")) {
// DCC SEND readme.txt 403120438 5550 1104
unsigned short uBNCPort = CDCCBounce::DCCRequest(Nick.GetNick(), uLongIP, uPort, sFile, false, this, CUtils::GetIP(uLongIP));
unsigned short uBNCPort = CDCCBounce::DCCRequest(
Nick.GetNick(), uLongIP, uPort, sFile, false, this,
CUtils::GetIP(uLongIP));
if (uBNCPort) {
CString sIP = GetLocalDCCIP();
PutUser(":" + Nick.GetNickMask() + " PRIVMSG " + pNetwork->GetCurNick() + " :\001DCC SEND " + sFile + " " + CString(CUtils::GetLongIP(sIP)) + " " + CString(uBNCPort) + " " + CString(uFileSize) + "\001");
PutUser(":" + Nick.GetNickMask() + " PRIVMSG " +
pNetwork->GetCurNick() + " :\001DCC SEND " + sFile +
" " + CString(CUtils::GetLongIP(sIP)) + " " +
CString(uBNCPort) + " " + CString(uFileSize) +
"\001");
}
} else if (sType.Equals("RESUME")) {
// Need to lookup the connection by port, filter the port, and forward to the user
// Need to lookup the connection by port, filter the port, and
// forward to the user
unsigned short uResumePort = sMessage.Token(3).ToUShort();
set<CSocket*>::const_iterator it;
for (it = BeginSockets(); it != EndSockets(); ++it) {
CDCCBounce* pSock = (CDCCBounce*) *it;
CDCCBounce* pSock = (CDCCBounce*)*it;
if (pSock->GetLocalPort() == uResumePort) {
PutUser(":" + Nick.GetNickMask() + " PRIVMSG " + pNetwork->GetCurNick() + " :\001DCC " + sType + " " + sFile + " " + CString(pSock->GetUserPort()) + " " + sMessage.Token(4) + "\001");
PutUser(":" + Nick.GetNickMask() + " PRIVMSG " +
pNetwork->GetCurNick() + " :\001DCC " + sType +
" " + sFile + " " +
CString(pSock->GetUserPort()) + " " +
sMessage.Token(4) + "\001");
}
}
} else if (sType.Equals("ACCEPT")) {
// Need to lookup the connection by port, filter the port, and forward to the user
// Need to lookup the connection by port, filter the port, and
// forward to the user
set<CSocket*>::const_iterator it;
for (it = BeginSockets(); it != EndSockets(); ++it) {
CDCCBounce* pSock = (CDCCBounce*) *it;
CDCCBounce* pSock = (CDCCBounce*)*it;
if (pSock->GetUserPort() == sMessage.Token(3).ToUShort()) {
PutUser(":" + Nick.GetNickMask() + " PRIVMSG " + pNetwork->GetCurNick() + " :\001DCC " + sType + " " + sFile + " " + CString(pSock->GetLocalPort()) + " " + sMessage.Token(4) + "\001");
PutUser(":" + Nick.GetNickMask() + " PRIVMSG " +
pNetwork->GetCurNick() + " :\001DCC " + sType +
" " + sFile + " " +
CString(pSock->GetLocalPort()) + " " +
sMessage.Token(4) + "\001");
}
}
}
@@ -267,9 +318,11 @@ public:
}
};
CDCCBounce::CDCCBounce(CBounceDCCMod* pMod, unsigned long uLongIP, unsigned short uPort,
const CString& sFileName, const CString& sRemoteNick,
const CString& sRemoteIP, bool bIsChat) : CSocket(pMod) {
CDCCBounce::CDCCBounce(CBounceDCCMod* pMod, unsigned long uLongIP,
unsigned short uPort, const CString& sFileName,
const CString& sRemoteNick, const CString& sRemoteIP,
bool bIsChat)
: CSocket(pMod) {
m_uRemotePort = uPort;
m_sConnectIP = CUtils::GetIP(uLongIP);
m_sRemoteIP = sRemoteIP;
@@ -288,9 +341,11 @@ CDCCBounce::CDCCBounce(CBounceDCCMod* pMod, unsigned long uLongIP, unsigned shor
}
}
CDCCBounce::CDCCBounce(CBounceDCCMod* pMod, const CString& sHostname, unsigned short uPort,
const CString& sRemoteNick, const CString& sRemoteIP, const CString& sFileName,
int iTimeout, bool bIsChat) : CSocket(pMod, sHostname, uPort, iTimeout) {
CDCCBounce::CDCCBounce(CBounceDCCMod* pMod, const CString& sHostname,
unsigned short uPort, const CString& sRemoteNick,
const CString& sRemoteIP, const CString& sFileName,
int iTimeout, bool bIsChat)
: CSocket(pMod, sHostname, uPort, iTimeout) {
m_uRemotePort = 0;
m_bIsChat = bIsChat;
m_pModule = pMod;
@@ -328,7 +383,8 @@ void CDCCBounce::ReachedMaxBuffer() {
CString sType = (m_bIsChat) ? "Chat" : "Xfer";
m_pModule->PutModule("DCC " + sType + " Bounce (" + m_sRemoteNick + "): Too long line received");
m_pModule->PutModule("DCC " + sType + " Bounce (" + m_sRemoteNick +
"): Too long line received");
Close();
}
@@ -340,14 +396,15 @@ void CDCCBounce::ReadData(const char* data, size_t len) {
if (BufLen >= m_uiMaxDCCBuffer) {
DEBUG(GetSockName() << " The send buffer is over the "
"limit (" << BufLen <<"), throttling");
"limit (" << BufLen << "), throttling");
PauseRead();
}
}
}
void CDCCBounce::ReadPaused() {
if (!m_pPeer || m_pPeer->GetInternalWriteBuffer().length() <= m_uiMinDCCBuffer)
if (!m_pPeer ||
m_pPeer->GetInternalWriteBuffer().length() <= m_uiMinDCCBuffer)
UnPauseRead();
}
@@ -363,9 +420,13 @@ void CDCCBounce::Timeout() {
sHost = ".";
}
m_pModule->PutModule("DCC " + sType + " Bounce (" + m_sRemoteNick + "): Timeout while connecting" + sHost);
m_pModule->PutModule("DCC " + sType + " Bounce (" + m_sRemoteNick +
"): Timeout while connecting" + sHost);
} else {
m_pModule->PutModule("DCC " + sType + " Bounce (" + m_sRemoteNick + "): Timeout waiting for incoming connection [" + Csock::GetLocalIP() + ":" + CString(Csock::GetLocalPort()) + "]");
m_pModule->PutModule("DCC " + sType + " Bounce (" + m_sRemoteNick +
"): Timeout waiting for incoming connection [" +
Csock::GetLocalIP() + ":" +
CString(Csock::GetLocalPort()) + "]");
}
}
@@ -380,7 +441,8 @@ void CDCCBounce::ConnectionRefused() {
sHost = ".";
}
m_pModule->PutModule("DCC " + sType + " Bounce (" + m_sRemoteNick + "): Connection Refused while connecting" + sHost);
m_pModule->PutModule("DCC " + sType + " Bounce (" + m_sRemoteNick +
"): Connection Refused while connecting" + sHost);
}
void CDCCBounce::SockError(int iErrno, const CString& sDescription) {
@@ -393,9 +455,13 @@ void CDCCBounce::SockError(int iErrno, const CString& sDescription) {
sHost = "[" + sHost + " " + CString(Csock::GetPort()) + "]";
}
m_pModule->PutModule("DCC " + sType + " Bounce (" + m_sRemoteNick + "): Socket error [" + sDescription + "]" + sHost);
m_pModule->PutModule("DCC " + sType + " Bounce (" + m_sRemoteNick +
"): Socket error [" + sDescription + "]" + sHost);
} else {
m_pModule->PutModule("DCC " + sType + " Bounce (" + m_sRemoteNick + "): Socket error [" + sDescription + "] [" + Csock::GetLocalIP() + ":" + CString(Csock::GetLocalPort()) + "]");
m_pModule->PutModule("DCC " + sType + " Bounce (" + m_sRemoteNick +
"): Socket error [" + sDescription + "] [" +
Csock::GetLocalIP() + ":" +
CString(Csock::GetLocalPort()) + "]");
}
}
@@ -421,14 +487,21 @@ Csock* CDCCBounce::GetSockObj(const CString& sHost, unsigned short uPort) {
m_sRemoteIP = sHost;
}
CDCCBounce* pSock = new CDCCBounce(m_pModule, sHost, uPort, m_sRemoteNick, m_sRemoteIP, m_sFileName, m_bIsChat);
CDCCBounce* pRemoteSock = new CDCCBounce(m_pModule, sHost, uPort, m_sRemoteNick, m_sRemoteIP, m_sFileName, m_bIsChat);
CDCCBounce* pSock = new CDCCBounce(m_pModule, sHost, uPort, m_sRemoteNick,
m_sRemoteIP, m_sFileName, m_bIsChat);
CDCCBounce* pRemoteSock =
new CDCCBounce(m_pModule, sHost, uPort, m_sRemoteNick, m_sRemoteIP,
m_sFileName, m_bIsChat);
pSock->SetPeer(pRemoteSock);
pRemoteSock->SetPeer(pSock);
pRemoteSock->SetRemote(true);
pSock->SetRemote(false);
CZNC::Get().GetManager().Connect(m_sConnectIP, m_uRemotePort, "DCC::" + CString((m_bIsChat) ? "Chat" : "XFER") + "::Remote::" + m_sRemoteNick, 60, false, m_sLocalIP, pRemoteSock);
CZNC::Get().GetManager().Connect(
m_sConnectIP, m_uRemotePort,
"DCC::" + CString((m_bIsChat) ? "Chat" : "XFER") + "::Remote::" +
m_sRemoteNick,
60, false, m_sLocalIP, pRemoteSock);
pSock->SetSockName(GetSockName());
return pSock;
@@ -447,17 +520,26 @@ void CDCCBounce::PutPeer(const CString& sLine) {
}
}
unsigned short CDCCBounce::DCCRequest(const CString& sNick, unsigned long uLongIP, unsigned short uPort, const CString& sFileName, bool bIsChat, CBounceDCCMod* pMod, const CString& sRemoteIP) {
CDCCBounce* pDCCBounce = new CDCCBounce(pMod, uLongIP, uPort, sFileName, sNick, sRemoteIP, bIsChat);
unsigned short uListenPort = CZNC::Get().GetManager().ListenRand("DCC::" + CString((bIsChat) ? "Chat" : "Xfer") + "::Local::" + sNick,
pMod->GetLocalDCCIP(), false, SOMAXCONN, pDCCBounce, 120);
unsigned short CDCCBounce::DCCRequest(const CString& sNick,
unsigned long uLongIP,
unsigned short uPort,
const CString& sFileName, bool bIsChat,
CBounceDCCMod* pMod,
const CString& sRemoteIP) {
CDCCBounce* pDCCBounce = new CDCCBounce(pMod, uLongIP, uPort, sFileName,
sNick, sRemoteIP, bIsChat);
unsigned short uListenPort = CZNC::Get().GetManager().ListenRand(
"DCC::" + CString((bIsChat) ? "Chat" : "Xfer") + "::Local::" + sNick,
pMod->GetLocalDCCIP(), false, SOMAXCONN, pDCCBounce, 120);
return uListenPort;
}
template<> void TModInfo<CBounceDCCMod>(CModInfo& Info) {
template <>
void TModInfo<CBounceDCCMod>(CModInfo& Info) {
Info.SetWikiPage("bouncedcc");
}
USERMODULEDEFS(CBounceDCCMod, "Bounces DCC transfers through ZNC instead of sending them directly to the user. ")
USERMODULEDEFS(CBounceDCCMod,
"Bounces DCC transfers through ZNC instead of sending them "
"directly to the user. ")