aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorGravatar Elvio Basello2008-08-29 02:48:51 +0000
committerGravatar Elvio Basello2008-08-29 02:48:51 +0000
commit508ef8b6b7aaaae0bcf29d844c812a957d7f7568 (patch)
tree197d6ce8208383c2c9c7e9320d4b1e869d639e7e /src
parentLow level support for STARTTLS. Needs polishing, though. (diff)
downloadKVIrc-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.h4
-rw-r--r--src/kvirc/kernel/kvi_ircconnection.cpp8
-rw-r--r--src/kvirc/kernel/kvi_ircconnectionstatedata.cpp2
-rw-r--r--src/kvirc/kernel/kvi_ircconnectionstatedata.h6
-rw-r--r--src/kvirc/sparser/kvi_sp_numeric.cpp11
-rw-r--r--src/kvirc/sparser/kvi_sp_tables.cpp2
-rw-r--r--src/kvirc/sparser/kvi_sparser.h1
-rwxr-xr-xsrc/modules/options/mkcreateinstanceproc.sh26
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
-######################################################################################################
+#################################################################################