aboutsummaryrefslogtreecommitdiffstats
path: root/src/modules/upnp/xmlfunctions.cpp
diff options
context:
space:
mode:
authorGravatar Fabio Bas2008-08-09 11:32:17 +0000
committerGravatar Fabio Bas2008-08-09 11:32:17 +0000
commitef736944c9d8a7833bb1b6e7a78b8266554d5cea (patch)
tree3946bb8b8f3e4ca21aeda2147bc72baae85a996f /src/modules/upnp/xmlfunctions.cpp
parentupdated german translation (diff)
downloadKVIrc-ef736944c9d8a7833bb1b6e7a78b8266554d5cea.tar.gz
KVIrc-ef736944c9d8a7833bb1b6e7a78b8266554d5cea.tar.bz2
KVIrc-ef736944c9d8a7833bb1b6e7a78b8266554d5cea.zip
added first test of a upnp module (gateway control point that enables port-forwarding and getting external ip address); based on code from Diederik van der Boor
git-svn-id: https://svn.kvirc.de/svn/trunk/kvirc@2219 17fca916-40b9-46aa-a4ea-0a15b648b75c
Diffstat (limited to 'src/modules/upnp/xmlfunctions.cpp')
-rw-r--r--src/modules/upnp/xmlfunctions.cpp126
1 files changed, 126 insertions, 0 deletions
diff --git a/src/modules/upnp/xmlfunctions.cpp b/src/modules/upnp/xmlfunctions.cpp
new file mode 100644
index 000000000..c311f4d97
--- /dev/null
+++ b/src/modules/upnp/xmlfunctions.cpp
@@ -0,0 +1,126 @@
+//=============================================================================
+//
+// Creation date : Fri Aug 08 18:00:00 2000 GMT by Szymon Stefanek
+//
+// This file is part of the KVirc irc client distribution
+// 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
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with this program. If not, write to the Free Software Foundation,
+// Inc. ,59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+//
+// Original Copyright following:
+//=============================================================================
+
+/***************************************************************************
+ xmlfunctions.cpp - description
+ -------------------
+ begin : Sun Jul 24 2005
+ copyright : (C) 2005 by Diederik van der Boor
+ email : vdboor --at-- codingdomain.com
+ ***************************************************************************/
+
+#include "xmlfunctions.h"
+
+#include <QStringList>
+
+
+// Helper function, get a specific node
+QDomNode XmlFunctions::getNode( const QDomNode &rootNode, const QString &path )
+{
+
+ QStringList pathItems = QStringList::split( "/", path, false );
+ QDomNode childNode = rootNode.namedItem( pathItems[0] ); // can be a null node
+
+ uint i = 1;
+ while( i < pathItems.count() )
+ {
+ if( childNode.isNull() )
+ {
+ break;
+ }
+
+ childNode = childNode.namedItem( pathItems[ i ] );
+ i++; // not using for loop so i is always correct for kdDebug() below.
+ }
+
+ if( childNode.isNull() ) {
+ qDebug() << "XmlFunctions::getNode() - notice: node '" << pathItems[ i - 1 ] << "'"
+ << " does not exist (root=" << rootNode.nodeName() << " path=" << path << ")." << endl;
+ }
+
+ return childNode;
+}
+
+
+
+// Helper function, get the attribute text of a node
+QString XmlFunctions::getNodeAttribute( const QDomNode &node, const QString &attribute )
+{
+
+ // Writing this is not funny
+ return node.attributes().namedItem( attribute ).toAttr().value();
+// node.toElement().attribute( attribute ); does not work for const nodes.
+}
+
+
+
+// Helper function, get a specific child node
+QDomNode XmlFunctions::getNodeChildByKey( const QDomNodeList &childNodes, const QString &keyTagName, const QString &keyValue )
+{
+
+ for( uint i = 0; i < childNodes.count(); i++ )
+ {
+// kdDebug() << "node " << childNodes.item(i).nodeName() << "/" << keyTagName
+// << "=" << childNodes.item(i).namedItem(keyTagName).toElement().text() << " == " << keyValue << "?" << endl;
+
+ // If the node has an childname with a certain value... e.g. <childNodes> <item><name>value</name></item> .. </childNodes>
+ if( childNodes.item( i ).namedItem( keyTagName ).toElement().text() == keyValue)
+ {
+ // Return the node
+ return childNodes.item( i );
+ }
+ }
+
+ // Return a null node (is there a better way?)
+ return childNodes.item( childNodes.count() );
+}
+
+
+
+// Helper function, get the text value of a node
+QString XmlFunctions::getNodeValue( const QDomNode &rootNode, const QString &path )
+{
+
+ // Added code to avoid more assertion errors, and trace the cause.
+ if( rootNode.isNull() )
+ {
+ qWarning() << "XmlFunctions::getNodeValue: Attempted to request '" << path << "' on null root node." << endl;
+ return QString::null;
+ }
+
+
+ // Because writing node.namedItem("childItem").namedItem("child2").toElement().text() is not funny.
+ return getNode( rootNode, path ).toElement().text();
+}
+
+
+// Helper function, get the source XML of a node.
+QString XmlFunctions::getSource( const QDomNode &node, int indent )
+{
+ QString source;
+ QTextStream textStream( &source, IO_WriteOnly );
+ node.save( textStream, indent );
+ return source;
+}
+