summaryrefslogtreecommitdiffstats
path: root/src/utils.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/utils.h')
-rw-r--r--src/utils.h202
1 files changed, 202 insertions, 0 deletions
diff --git a/src/utils.h b/src/utils.h
new file mode 100644
index 0000000..50492e0
--- /dev/null
+++ b/src/utils.h
@@ -0,0 +1,202 @@
+/***************************************************************************
+ * Copyright (C) 2004 by Christoph Thielecke *
+ * crissi99@gmx.de *
+ * *
+ * 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. *
+ * *
+ * 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. *
+ ***************************************************************************/
+#ifndef __UTILS_H____
+#define __UTILS_H____
+
+#include <qobject.h>
+#include <qprocess.h>
+#include <qvaluelist.h>
+#include "kvpncconfig.h"
+#include "kvpnc.h"
+#include "toolinfo.h"
+#include <qstringlist.h>
+#include <ktempfile.h>
+
+/**
+Provides various help functions.
+
+@author Christoph Thielecke
+*/
+class Utils : public QObject
+{
+ Q_OBJECT
+public:
+ Utils(KVpncConfig* config,QObject *parent = 0, const char *name = 0);
+
+ ~Utils();
+
+ bool isValidIPv4Address(QString Address);
+ bool isValidIPv4NetworkAddress(QString Address);
+ bool isValidIPv4BroadcastAddress(QString Address);
+ bool isValidIPv4Netmask(QString Netmask);
+ bool tunDevExists();
+ bool createTunDev();
+ bool loadKernelModule(QString Name,QApplication *app);
+ bool unloadKernelModule(QString Name,QApplication *app, bool force=true);
+ bool doChmod(QString file, QString mode);
+ bool resolvConfAvailable();
+ QStringList getOpenvpnCiphers();
+ QStringList getOpenvpnDigests();
+ QPtrList<ToolInfo>* getToolList();
+ ToolInfo* getToolInfo( QString name);
+ QString resolveName(QString Name);
+ QString removeSpecialCharsForFilename(QString filename);
+ QString getNameAndPidOfProgramListen(int port);
+ QString getEmailAddressOfCert(QString cert);
+ QString getHostname();
+ QStringList getSmartcardSlots(QString ProviderLib);
+ QStringList getSmartcardCertsFromSlot(QString slot,QString IdType,QString ProviderLib);
+ QStringList getOpenvpnPkcs11Ids(QString ProviderLib);
+ bool getNeedsPassphrase(QString key);
+ QStringList getCertsFromCiscoCertStore(QString type="user");
+ QString dec2bin(int n);
+ int dottedIpv4Netmask2NetmaskBytes(QString dottedIpv4Netmask);
+ QString IpsecAlgoCurrent;
+ struct IpsecAlgos {
+ QStringList IpsecIkeEncryptionAlgorithms;
+ QStringList IpsecIkeHashAlgorithms;
+ QStringList IpsecIkeDhGroups;
+ QStringList IpsecEspEncryptionAlgorithms;
+ QStringList IpsecEspAuthenticationAlgorithms;
+ QStringList IpsecCompressionAlgorithms;
+ };
+
+ struct PppdCapabilities {
+ bool pppdHasMppeRequiredSupport;
+ bool pppdHasRequireMppeSupport;
+ bool pppdHasReplacedefaultrouteSupport;
+
+ /* options for pppd depending on pppd version */
+
+ // MPPE
+ QString RequireMppeOption;
+ QString Require128BitMppeOption;
+ QString RefuseMppeOption;
+ QString Refuse40BitMppeOption;
+ QString Refuse128BitMppeOption;
+ QString RequireStatelessOption;
+ QString RequireStatefulOption;
+ bool MppeOptionsInALine; // older pppd need all in one line
+
+ // AUTH
+ QString RequireAuthChapOption;
+ QString RequireAuthMschapOption;
+ QString RequireAuthMschapv2Option;
+ QString RequireAuthPapOption;
+
+ bool pppdHasMppeSupport; //< true if pppd has mppe support
+ bool oldPppdStyle; //< true if old style was found ('mppe require')
+ bool pppdOk; // if pppd could started
+ };
+
+ struct IpsecAlgos getKernelCrypto();
+ struct IpsecAlgos getIpsecAlgos();
+ struct PppdCapabilities checkPppdCapabilities();
+
+public slots:
+ void readStdOutCreateTunDev();
+ void readStdErrCreateTunDev();
+ void readStdOutLoadKernelModule();
+ void readStdErrLoadKernelModule();
+ void readStdOutToolsTest();
+ void readStdErrToolsTest();
+ void readStdOutRetriveOpenvpnCiphers();
+ void readStdErrRetriveOpenvpnCiphers();
+ void readStdOutRetriveIpsecAlgos();
+ void readStdErrRetriveIpsecAlgos();
+ void readStdOutRetriveOpenvpnDigests();
+ void readStdErrRetriveOpenvpnDigests();
+ void readStdOutGetNameAndPidOfProgramListen();
+ void readStdErrGetNameAndPidOfProgramListen();
+ void readOutGetEmailAddressOfCert();
+ void readOutGetSmartcardSlots(KProcess * proc, char * buffer, int buflen);
+ void readOutGetSmartcardCertsFromSlot();
+ void readOutGetOpenvpnPkcs11Ids();
+ void readOutNeedsPassphrase();
+ void readOutGetCertsFromCiscoCertStoreSlot();
+ void readPppdtestProcessOutput();
+ void readStdOutGetHostname();
+ void readStdErrGetHostname();
+
+
+private:
+ bool modprobeSuccess;
+ bool toolsTestSuccess;
+ bool retrieveOpenvpnCiphers;
+ bool retrieveOpenvpnDigests;
+ bool retrieveIpsecAlgos;
+ bool retrieveNameAndPidOfProgramListen;
+ bool retrieveHotsname;
+ bool needsPassphrase;
+ bool testPppdReplacedefaultroute;
+ bool testPppdRequireMppe128;
+ bool testPppdMppeRequiredSupport;
+ bool testPppdNomppeStatefulSupport;
+ bool testPppdStatelessSupport;
+ bool testOldPppdStyle;
+ bool testPppdRequireMppe;
+ bool testPppdMppeRequired;
+
+ QString tooltest_logfile;
+ QProcess *ModprobeProcess;
+ QProcess *createProcess;
+ QProcess *NetworkDeviceTestProcess;
+ QProcess *toolsTestProcess;
+ QProcess *OpenvpnCiphersProcess;
+ QProcess *OpenvpnDigestProcess;
+ QProcess *NameAndPidOfProgramListenProcess;
+ QProcess *GetEmailAddressOfCertProcess;
+ KProcess *GetSmartcardSlotsProcess;
+ QProcess *GetSmartcardCertsFromSlotProcess;
+ QProcess *OpenvpnPkcs11IdsProcess;
+ QProcess *GetCertsFromCiscoCertStoreProcess;
+ QProcess *NeedsPassphraseProcess;
+ QProcess *IpsecAlgosProcess;
+ QProcess *TestPppdProcess;
+ QProcess *GetHostnameProcess;
+
+ QString resolvedIP;
+ bool resolveFinished;
+ QValueList<QHostAddress> list;
+ QStringList *env;
+ KVpncConfig *config;
+ KTempFile *tmpfile;
+ bool retrieveValidNetworkdevice;
+ bool Pkcs11CertFound;
+ QStringList OpenvpnCiphers;
+ QStringList OpenvpnDigests;
+ QStringList KernelCrypto;
+ QString NameAndPidOfProgramListen;
+ QString EmailAddressOfCert;
+ QString OpenvpnDigestString;
+ QString IdType;
+ QString Hostname;
+ QStringList SmartcardSlots;
+ QStringList SmartcardCertsFromSlot;
+ QStringList CertsFromCiscoCertStore;
+ QStringList OpenvpnPkcs11Ids;
+
+ int CertsFromCiscoCertPos;
+ int ListenPort;
+ int OpenvpnDigestCount;
+ PppdCapabilities pppdcap;
+};
+
+#endif