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.
kvpnc/src/utils.h

203 lines
6.8 KiB

/***************************************************************************
* 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