diff options
| author | 2008-08-29 02:48:51 +0000 | |
|---|---|---|
| committer | 2008-08-29 02:48:51 +0000 | |
| commit | 508ef8b6b7aaaae0bcf29d844c812a957d7f7568 (patch) | |
| tree | 197d6ce8208383c2c9c7e9320d4b1e869d639e7e /src | |
| parent | Low level support for STARTTLS. Needs polishing, though. (diff) | |
| download | KVIrc-508ef8b6b7aaaae0bcf29d844c812a957d7f7568.tar.gz KVIrc-508ef8b6b7aaaae0bcf29d844c812a957d7f7568.tar.bz2 KVIrc-508ef8b6b7aaaae0bcf29d844c812a957d7f7568.zip | |
work on STARTTLS protocol SHOULD be complete: please test!
updated TODOs;
updated ChangeLogs;
updated kvirc translation files;
git-svn-id: https://svn.kvirc.de/svn/trunk/kvirc@2344 17fca916-40b9-46aa-a4ea-0a15b648b75c
Diffstat (limited to 'src')
| -rw-r--r-- | src/kvilib/config/kvi_sourcesdate.h | 4 | ||||
| -rw-r--r-- | src/kvirc/kernel/kvi_ircconnection.cpp | 8 | ||||
| -rw-r--r-- | src/kvirc/kernel/kvi_ircconnectionstatedata.cpp | 2 | ||||
| -rw-r--r-- | src/kvirc/kernel/kvi_ircconnectionstatedata.h | 6 | ||||
| -rw-r--r-- | src/kvirc/sparser/kvi_sp_numeric.cpp | 11 | ||||
| -rw-r--r-- | src/kvirc/sparser/kvi_sp_tables.cpp | 2 | ||||
| -rw-r--r-- | src/kvirc/sparser/kvi_sparser.h | 1 | ||||
| -rwxr-xr-x | src/modules/options/mkcreateinstanceproc.sh | 26 |
8 files changed, 42 insertions, 18 deletions
diff --git a/src/kvilib/config/kvi_sourcesdate.h b/src/kvilib/config/kvi_sourcesdate.h index a571bc521..862100847 100644 --- a/src/kvilib/config/kvi_sourcesdate.h +++ b/src/kvilib/config/kvi_sourcesdate.h @@ -28,8 +28,8 @@ #include "kvi_settings.h" -#define KVI_SOURCES_DATE "20080805" -#define KVI_SOURCES_DATE_NUMERIC 0x20080805 +#define KVI_SOURCES_DATE "20080829" +#define KVI_SOURCES_DATE_NUMERIC 0x20080829 // this is the date of the sources before that we should force a setup // this is usually changed only when a setup is really needed because diff --git a/src/kvirc/kernel/kvi_ircconnection.cpp b/src/kvirc/kernel/kvi_ircconnection.cpp index 486aac793..f25e8dfa8 100644 --- a/src/kvirc/kernel/kvi_ircconnection.cpp +++ b/src/kvirc/kernel/kvi_ircconnection.cpp @@ -930,6 +930,14 @@ void KviIrcConnection::trySTARTTLS() m_pConsole->output(KVI_OUT_SYSTEMMESSAGE,__tr2qs("Impossible to send STARTTLS command to the IRC server. Your connection will NOT be encrypted")); return; } + m_pStateData->setSentStartTls(); + + // HACK: this is needed to avoid timeouts connecting + if(!sendFmtData("PING :%s",pServer->hostName().data())) + { + m_pConsole->output(KVI_OUT_SYSTEMMESSAGE,__tr2qs("Impossible to send STARTTLS command to the IRC server. Your connection will NOT be encrypted")); + return; + } } } diff --git a/src/kvirc/kernel/kvi_ircconnectionstatedata.cpp b/src/kvirc/kernel/kvi_ircconnectionstatedata.cpp index 083ab0dbc..1f5400130 100644 --- a/src/kvirc/kernel/kvi_ircconnectionstatedata.cpp +++ b/src/kvirc/kernel/kvi_ircconnectionstatedata.cpp @@ -28,6 +28,7 @@ KviIrcConnectionStateData::KviIrcConnectionStateData() { + m_bSentStartTls = false; m_bSentQuit = false; m_uLoginNickIndex = 0; m_bSimulateUnexpectedDisconnect = false; @@ -39,4 +40,3 @@ KviIrcConnectionStateData::KviIrcConnectionStateData() KviIrcConnectionStateData::~KviIrcConnectionStateData() { } - diff --git a/src/kvirc/kernel/kvi_ircconnectionstatedata.h b/src/kvirc/kernel/kvi_ircconnectionstatedata.h index 12da18bd4..e26e7eb1a 100644 --- a/src/kvirc/kernel/kvi_ircconnectionstatedata.h +++ b/src/kvirc/kernel/kvi_ircconnectionstatedata.h @@ -6,7 +6,7 @@ // Created on Sat 26 Jun 2004 09:31:52 by Szymon Stefanek // // This file is part of the KVIrc IRC client distribution -// Copyright (C) 2004 Szymon Stefanek <pragma at kvirc dot net> +// Copyright (C) 2008 Szymon Stefanek <pragma at kvirc dot net> // // This program is FREE software. You can redistribute it and/or // modify it under the terms of the GNU General Public License @@ -44,6 +44,7 @@ public: KviIrcConnectionStateData(); ~KviIrcConnectionStateData(); protected: + bool m_bSentStartTls; // the state of STARTTLS protocol bool m_bSentQuit; // have we sent the quit message for this connection ? unsigned int m_uLoginNickIndex; // the index of the identity nicknames used until now (see KviIrcConnection::loginToIrcServer()) QString m_szCommandToExecAfterConnect; // yes.. this is a special command to execute after connection @@ -52,6 +53,9 @@ protected: kvi_time_t m_tLastSentChannelWhoRequest; // the time that we have sent our last channel who request kvi_time_t m_tLastReceivedWhoisReply; // the time that we have received the last whois reply, reset to 0 when we receive an /END OF WHOIS public: + bool sentStartTls(){ return m_bSentStartTls; }; + void setSentStartTls(){ m_bSentStartTls = true; }; + bool sentQuit(){ return m_bSentQuit; }; void setSentQuit(){ m_bSentQuit = true; }; diff --git a/src/kvirc/sparser/kvi_sp_numeric.cpp b/src/kvirc/sparser/kvi_sp_numeric.cpp index 323958a9d..31805280b 100644 --- a/src/kvirc/sparser/kvi_sp_numeric.cpp +++ b/src/kvirc/sparser/kvi_sp_numeric.cpp @@ -2039,3 +2039,14 @@ void KviServerParser::parseNumericStartTls(KviIrcMessage * msg) msg->connection()->enableStartTlsSupport(bEnable); } + +void KviServerParser::parseNumericNotRegistered(KviIrcMessage * msg) +{ + // 451: ERR_NOTREGISTERED + // :prefix 451 PING :You have not registered + + KviIrcConnectionStateData * pStateData = msg->connection()->stateData(); + + if(pStateData->sentStartTls()) + msg->connection()->enableStartTlsSupport(false); +} diff --git a/src/kvirc/sparser/kvi_sp_tables.cpp b/src/kvirc/sparser/kvi_sp_tables.cpp index 0486c87f3..5a79e8136 100644 --- a/src/kvirc/sparser/kvi_sp_tables.cpp +++ b/src/kvirc/sparser/kvi_sp_tables.cpp @@ -536,7 +536,7 @@ messageParseProc KviServerParser::m_numericParseProcTable[1000]= 0, // 448 0, // 449 0, // 450 - 0, // 451 + PTM(parseNumericNotRegistered) , // 451 ERR_NOTREGISTERED 0, // 452 0, // 453 0, // 454 diff --git a/src/kvirc/sparser/kvi_sparser.h b/src/kvirc/sparser/kvi_sparser.h index 8563a239f..bd6240a54 100644 --- a/src/kvirc/sparser/kvi_sparser.h +++ b/src/kvirc/sparser/kvi_sparser.h @@ -248,6 +248,7 @@ private: // void parseCtcpReply(const char * msg_ptr,KviIrcUser &source,const char * target); // STARTTLS support void parseNumericStartTls(KviIrcMessage * msg); + void parseNumericNotRegistered(KviIrcMessage * msg); public: static void encodeCtcpParameter(const char * param,KviStr &buffer,bool bSpaceBreaks = true); static void encodeCtcpParameter(const char * param,QString &buffer,bool bSpaceBreaks = true); diff --git a/src/modules/options/mkcreateinstanceproc.sh b/src/modules/options/mkcreateinstanceproc.sh index 4a1c828c3..dc6a7bcac 100755 --- a/src/modules/options/mkcreateinstanceproc.sh +++ b/src/modules/options/mkcreateinstanceproc.sh @@ -1,18 +1,18 @@ #!/bin/sh -##################################################################################################### +################################################################################# # # Generator for instances.h and instances.cpp # # This file is part of the KVirc irc client distribution # Copyright (C) 2001-2008 Szymon Stefanek (pragma at kvirc dot net) # -##################################################################################################### +################################################################################# echo "" > instances.h -###################################################################################################### +################################################################################# cat >> instances.h <<EOF #ifndef __OPTIONS_INSTANCES_H__ @@ -106,7 +106,7 @@ TARGET="instances.cpp" echo "" > $TARGET -###################################################################################################### +################################################################################# cat >> instances.cpp <<EOF // @@ -138,14 +138,14 @@ cat >> instances.cpp <<EOF // EOF -###################################################################################################### +################################################################################# for afile in optw_*.h; do echo "#include \"$afile\"" >> $TARGET done -###################################################################################################### +################################################################################# cat >> instances.cpp <<EOF #include "kvi_locale.h" @@ -155,7 +155,7 @@ cat >> instances.cpp <<EOF int g_iOptionWidgetInstances = 0; EOF -###################################################################################################### +################################################################################# for aclass in $CLASS_LIST; do @@ -167,19 +167,19 @@ for aclass in $CLASS_LIST; do echo "" >> $TARGET done -###################################################################################################### +################################################################################# cat >> instances.cpp <<EOF EOF -###################################################################################################### +################################################################################# for aclass in $CLASS_LIST; do echo "static const char * g_szName_$aclass = KVI_OPTIONS_WIDGET_NAME_$aclass;" >> $TARGET echo "static const char * g_szClassName_$aclass = \"$aclass\";" >> $TARGET done -###################################################################################################### +################################################################################# cat >> instances.cpp <<EOF KviOptionsInstanceManager::KviOptionsInstanceManager() @@ -192,7 +192,7 @@ KviOptionsInstanceManager::KviOptionsInstanceManager() m_pInstanceTree->setAutoDelete(true); EOF -###################################################################################################### +################################################################################# CLASSDIR=".classtmp" @@ -295,7 +295,7 @@ addchildren 0 NOPARENT "" rm -fr $CLASSDIR -###################################################################################################### +################################################################################# cat >> $TARGET <<EOF } @@ -438,5 +438,5 @@ KviOptionsWidgetInstanceEntry * KviOptionsInstanceManager::findInstanceEntry(con #endif EOF -###################################################################################################### +################################################################################# |
