summaryrefslogtreecommitdiffstats
path: root/knetworkconf/knetworkconf/knetworkconfigparser.h
diff options
context:
space:
mode:
Diffstat (limited to 'knetworkconf/knetworkconf/knetworkconfigparser.h')
-rw-r--r--knetworkconf/knetworkconf/knetworkconfigparser.h181
1 files changed, 181 insertions, 0 deletions
diff --git a/knetworkconf/knetworkconf/knetworkconfigparser.h b/knetworkconf/knetworkconf/knetworkconfigparser.h
new file mode 100644
index 0000000..0c2254e
--- /dev/null
+++ b/knetworkconf/knetworkconf/knetworkconfigparser.h
@@ -0,0 +1,181 @@
+/***************************************************************************
+ knetworkconfigparser.h - description
+ -------------------
+ begin : Mon Jan 13 2003
+ copyright : (C) 2003 by Juan Luis Baptiste
+ email : jbaptiste@merlinux.org
+ ***************************************************************************/
+
+/***************************************************************************
+ * *
+ * 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 option) any later version. *
+ * *
+ ***************************************************************************/
+
+#ifndef KNETWORKCONFIGPARSER_H
+#define KNETWORKCONFIGPARSER_H
+
+#define BACKEND_PATH "knetworkconf/backends/network-conf"
+#define ETHERNET_IFACE_TYPE "ethernet"
+#define WIRELESS_IFACE_TYPE "wireless"
+#define LOOPBACK_IFACE_TYPE "loopback"
+
+#define WIRELESS_WEP_KEY_TYPE_ASCII "ascii"
+#define WIRELESS_WEP_KEY_TYPE_HEXADECIMAL "hexadecimal"
+
+#include <sys/types.h>
+#include <unistd.h>
+#include <stdlib.h>
+
+#include <kapp.h>
+#include <kmessagebox.h>
+#include <klocale.h>
+#include <qobject.h>
+#include <qdir.h>
+#include <qfile.h>
+#include <qstring.h>
+#include <qprocess.h>
+#include <qdom.h>
+#include <qlabel.h>
+#include <qcheckbox.h>
+
+#include <klistbox.h>
+#include <ksimpleconfig.h>
+#include <kstandarddirs.h>
+#include <kdebug.h>
+
+#include "knetworkinfo.h"
+#include "kdetectdistrodlg.h"
+#include "kreloadnetworkdlg.h"
+#include "kinterfaceupdowndlg.h"
+#include "kselectdistrodlg.h"
+
+/**
+ *@author Juan Luis Baptiste
+ */
+
+class KNetworkConfigParser : public QObject {
+ Q_OBJECT
+ public:
+ KNetworkConfigParser();
+ ~KNetworkConfigParser();
+ /** return tyhe number of configured devices. */
+ unsigned numDevices();
+ void setProgramVersion(QString ver);
+ /** Reads /proc/net/route looking for the default gateway. */
+ void loadRoutingInfo(KRoutingInfo *routingInfo);
+ /** Saves the new network configuration. */
+ void saveNetworkInfo(KNetworkInfo *networkInfo);
+ /** Loads the network info from a xml file generated by the gnome system tools
+ network backends that are included with this app. */
+ KNetworkInfo * getNetworkInfo();
+ QProcess * proc;
+ QProcess * procDetect;
+ QProcess * procSaveNetworkInfo;
+ /** Variable to know if there is an dhcp device configured, so we can know if we need to save the defauilt gw info or not. */
+ bool dhcpDevice;
+ KNetworkInterface * getDeviceInfo(QString device);
+
+
+ public slots:
+ /** runs gst to find out the state of network devices.It runs the command:
+ $knetworkconf_home/backends/networkconf [--platform platform] -d list_ifaces */
+ void listIfaces(const QString &platform);
+
+ private slots:
+ /** Runs the gst backend to get network values. You can pass to the script a specific platform to load using the platform parameter. */
+ void runDetectionScript(QString platform);
+ void readIfconfigOutput();
+ void readNetworkInfo();
+ void readFromStdoutReloadScript();
+ /** emits a signal when the network changes have benn saved. */
+ void sendNetworkInfoSavedSignalSlot();
+ /** Concatenates into a QString the xml output of the network backend. */
+ void concatXMLOutputSlot();
+ void readXMLErrSlot();
+ /** Shows the dialog with all the supported platforms by GST. */
+ void showSupportedPlatformsDialogSlot();
+ /** Parses the xml ouput generated by GST that has all the supported platforms. */
+ void readSupportedPlatformsSlot();
+ /** No descriptions */
+ void readListIfacesSlot();
+ void readFromStdoutSaveNetworkInfo();
+ /** Calls runDetectionScript(). */
+ void listIfacesSlot();
+ /** save process has exited */
+ void processExitedSlot();
+
+ private:
+ //QPtrList<KNetworkInterface> deviceList;
+ QPtrList<KNetworkInterface> tempList;
+ KNetworkInterface *newDevice;
+ bool isUp;
+ /** Counts the number of configured devices that had been found. */
+ unsigned _numDevices;
+ KRoutingInfo *routingInfo;
+ KDNSInfo *dnsInfo;
+ QString programVersion;
+ /** The output of ifconfig command that needs to be parsed in readIfconfigOutput()*/
+ QString ifconfigOutput;
+ KNetworkInfo * networkInfo;
+ QPtrList<KKnownHostInfo> knownHostsList;
+ QString hexIPv4ToDecIPv4(const QString &hex);
+ /** lists all platforms supported by GST. */
+ void loadSupportedPlatforms();
+ /** Returns the info of a platform in the form of 'key:value' . */
+ QString getPlatformInfo(QDomElement platform);
+ /** save process is running */
+ bool processRunning;
+
+ /** Shows a progress dialog while the networl is being reloaded. */
+ KInterfaceUpDownDlg * kpdReloadStatusDlg;
+ QProcess *procReloadNetwork;
+ QString reloadScriptOutput;
+ /** Contains the network configuration en xml format. */
+ /** List of supported platforms. */
+ QStringList supportedPlatformsList;
+ QString xmlOuput;
+ QString xmlErr;
+ /** Temporal device list to be used when loading the dhcp devices info */
+ QPtrList<KNetworkInterface> tempDevList;
+ /** Parses all of the <statichost>...</statichost> entries in the xml configuration file. */
+ KKnownHostInfo * getStaticHostInfo(QDomElement host);
+ /** Saves the option to show again or not the platform using KSimpleConfig*/
+ void saveAskAgain(const QString &platform, bool askAgain);
+ /**Returns if the show platform should be shown again or not and the saved platform*/
+ bool readAskAgain(QString &platform);
+ void parseNetworkInfo(QDomNode node, KNetworkInfo *networkInfo, bool isProfile);
+ void addRoutingInfoToXMLDoc(QDomDocument *doc, QDomNode *root, KRoutingInfo *routingInfo);
+ void addDNSInfoToXMLDoc(QDomDocument *doc, QDomNode *root, KDNSInfo *dnsInfo);
+ void addNetworkInterfacesToXMLDoc(QDomDocument *doc, QDomNode *root, QPtrList<KNetworkInterface> devList);
+ void addNetworkProfilesToXMLDoc(QDomDocument *doc, QDomNode *root, QPtrList<KNetworkInfo> profileList);
+
+ protected: // Protected methods
+ /** Parses all of the <interface>...</interface> entries in the xml configuration file. */
+ virtual KNetworkInterface *getInterfaceInfo(QDomElement interface, const QString &type);
+ /** Parses all of the <interface>...</interface> entries in the xml configuration file. Returns a KWirelessInterface
+ object that contains all the info of the wireless interface. */
+ virtual KWirelessInterface *getWirelessInterfaceInfo(QDomElement interface, const QString &type);
+
+ signals: // Signals
+ /** emmited when the xml file is finished reading. */
+ void readyLoadingNetworkInfo();
+
+ /** emmited when the xml file saved and the backend has finished executing. */
+// void readySavingNetworkInfo();
+
+ /** Signal that is sent when fillDevices() has finished fllind the dhcp devices. */
+ void readyIfconfigOutputSignal();
+ /** Signal emmited when the platform can't be auto-detected. */
+ void errorDetectingPlatform();
+ /** signal emmited when the parsing of the xml of the supported platform list. */
+ void readyLoadingSupportedPlatforms();
+ /** signal emmited when the config parser needs to set read only the GUI because
+ some error in the parsing, or the platform isn't supported.*/
+ void setReadOnly(bool);
+};
+
+#endif