diff options
Diffstat (limited to 'src/utils.h')
-rw-r--r-- | src/utils.h | 202 |
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 |