You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
203 lines
6.8 KiB
203 lines
6.8 KiB
13 years ago
|
/***************************************************************************
|
||
|
* 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
|