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/kvpncconfig.h

272 lines
7.9 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 __KVPNCCONFIG_H__
#define __KVPNCCONFIG_H__
//BEGIN INCLUDES
#include <qobject.h>
#include <qptrlist.h>
#include <qstring.h>
#include <qapplication.h>
#include <qcolor.h>
#include <qpoint.h>
#include <qsize.h>
#include <qfile.h>
#include <qtextstream.h>
#include <qtextedit.h>
#include <qcolor.h>
#include <qstringlist.h>
#include <kconfig.h>
#include <kwallet.h>
#include <kstatusbar.h>
#include "toolinfo.h"
#include "vpnaccountdata.h"
// ID for statusbar
#define ID_STATUS_MSG 1
#define ID_CONNECTION_MSG 2
#define ID_FLASH_MSG 3
//END INCLUDES
/**
This class holds global configuration data.
@author Christoph Thielecke <crissi99@gmx.de>
*/
class KVpncConfig : public QObject
{
public:
KVpncConfig(QWidget *parent,KStatusBar *statusbar);
~KVpncConfig();
public:
enum ConnectionStatus {disconnected=0, connecting=1, connected=2};
enum LogType {info=0, remote=1, error=2, success=3, debug=4};
QString pathToVpnc;
QString pathToCiscoVpnc;
QString pathToRacoon;
QString pathToRacoonctl;
QString pathToSetkey;
QString pathToIptables;
QString pathToOpenssl;
QString pathToIpsec;
QString pathToPppd;
QString pathToPptp;
QString pathToL2tpd;
QString pathToXl2tpd;
QString pathToOpenl2tp;
QString pathToKill;
QString pathToKillall;
QString pathToPing;
QString pathToOpenvpn;
QString pathToIp;
QString pathToIfconfig;
QString pathToRoute;
QString pathToNetstat;
QString pathToPkcs11Tool;
QString pathToVtund;
QString pathToCiscoCertMgr;
QString pathToTail;
QString pathToSsh;
QString pathToKsshAskpass;
QString pathToGnomeSshAskpass;
QString AutoConnectProfile;
QString RacoonDebugLevel;
QString Vpnc_pid_file;
QString Pppd_pid_file;
QString lastProfile;
QString logfileName;
QString InterpreterShell;
QString TmpPassword; //< from enter password dialog
QString TmpGroupPassword; //< from enter password dialog
QString TmpUsername; //< from enter password dialog
QString TmpPrivKeyPassStr;
QString TmpGatewayIP;
QString TmpXauthInterPasscode; //< from Xauth interactive passcode dialog
QString TmpPrivateKeyPass;
QString TmpHttpProxyPassword;
QString DnsDevice; //< device which the dns entry was added
QString OldDefaultGw; //< default gw before connect
QString OldDefaultDev; //< default gw dev before connect
QString NewDefaultGw;
QStringList PlutoDebug;
QStringList KlipsDebug;
bool minimizeAfterConnect;
bool showDebugConsole;
bool writeLogFile;
bool useDefaultPaths;
bool useSilentQuit;
bool holdGeneratedScripts;
bool programsInPath;
bool enableDebugPppd;
bool enableDebugPptpd;
bool enableDebugL2tpd;
bool enableDebugXl2tpd;
bool enableDebugOpenl2tp;
bool enableDebugXl2tpdNetwork;
bool enableDebugXl2tpdpacket;
bool enableDebugXl2tpdstate;
bool enableDebugXl2tpdtunnel;
bool enableFreeswanVerbose;
bool enableDebugOpenvpn;
bool useColorizedLogOutput;
bool showInterfaceIPinTooltip;
bool dontQuitOnCloseEvent;
bool doAutoConnectAtStartup;
bool useKwallet;
bool showStatusBar;
bool showToolBar;
bool hideMainWindow;
bool PppdDebugLevel;
bool firstUseOfKwallet; //< for importing passwords if there are stored before
bool shutdownIsCalled;
bool haveUserData; //< flag if user data already collected, set after data is entered and unset if authretry
bool skipKwalletStoring; //< true if save should skip saving into kwallet
bool hideOnCloseInfo;
bool feedbackMailSent;
bool doKillL2tpdIfStillRunning; //< kill l2tpd if its still running and not started from kvpnc
bool doKillXl2tpdIfStillRunning; //< kill xl2tpd if its still running and not started from kvpnc
bool doKillRacoonIfStillRunning; //< kill racoon if its still running and not started from kvpnc
bool showConnectionTimeInTooltip; //< True if the connection duration should be shown in kicker tooltip
bool WaitingForXauth; //< if waiting for xauth is set to true, needed to detect wrong xautn data on strongswan
bool prefDlgOpen; //< if true prefDlgOpen is open
bool OpenvpnNeedSecurityParameter;
int VpncDebugLevel;
int KvpncDebugLevel;
int OpenvpnDebugLevel;
int PptpLogLevel;
int PppdKernelLogLevel;
int SshDebugLevel;
int LogViewerFontSize;
int mainwindow_pos_x;
int mainwindow_pos_y;
int mainwindow_height;
int mainwindow_width;
int connectSleepDelay; //< time beetween retry
int connectSleepRetry; //< count of retries
int tryConnectTimeout; //< timeout in at connecting
int connectionStartTime;
int runningCheckCounter;
int runningCheckTimeout;
int OpenvpnManagementPort;
int AuthRetryCount; //< count of autn retry
int maxConnectRetry; // max connect tries
int currentConnectRetry;
QPtrList<ToolInfo> *ToolList;
QPtrList<VpnAccountData> *AccountList;
VpnAccountData *currentProfile;
QColor InfoLogColor;
QColor RemoteLogColor;
QColor ErrorLogColor;
QColor SuccessLogColor;
QColor DebugLogColor;
QColor DebugBackgroundcolor;
QApplication *appPointer;
QPoint pos;
ConnectionStatus status;
QFile logfile;
QTextStream logFileStream;
QTextEdit *LogOutput;
KWallet::Wallet *wallet;
KConfig* config; //< configuration data
QPoint WindowPos;
QSize WindowSize;
struct IpsecImportSection {
QString SectionName;
QStringList SectionData;
};
QPtrList<VpnAccountData> *ImportedAccountList;
QWidget *parent;
KStatusBar *statusbar;
/**
* Appends a log enty to debug console and log file
* @param msg the text to append
* @param type the type of the msg (info, debug, error, etc)
*/
void appendLogEntry( QString msg, LogType type );
/**
* Sets the output textedit for debug output
* @param LogOutput
*/
void setLogOutput(QTextEdit *LogOutput);
/**
* save configuration
*/
void saveOptions(bool saveOneProfile=false, QString Profile="" );
/**
* load configuration
*/
void loadOptions();
/**
* check the value of the paths
*/
void checkStandardPathValues();
/**
* collects the information of the external helper programs
*/
void getToolsInfo();
/**
* removes a entry from configuration file
* @param Name the entry which should be removed
*/
void removeEntry(QString Name);
VpnAccountData* findProfile(QPtrList<VpnAccountData> *list,const QString& Name);
QString removeWhiteSpaceAtBegin(const QString);
void slotStatusMsg( const QString &text, int id = ID_STATUS_MSG );
void doBackupConfig();
void restoreBackupConfig();
bool exportKvpncConfig(QString filename);
bool importKvpncConfig(QString filename, QString& Name, bool& openProfileManager); //< true if profiles imported
bool importIpsecConfig(QString filename, QString& Name, bool& openProfileManager);
bool importFritzboxConfig(QString filename, QString& Name, bool& openProfileManager);
};
#endif