|
|
|
/***************************************************************************
|
|
|
|
* 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 <tqobject.h>
|
|
|
|
#include <tqptrlist.h>
|
|
|
|
#include <tqstring.h>
|
|
|
|
#include <tqapplication.h>
|
|
|
|
#include <tqcolor.h>
|
|
|
|
#include <tqpoint.h>
|
|
|
|
#include <tqsize.h>
|
|
|
|
#include <tqfile.h>
|
|
|
|
#include <tqtextstream.h>
|
|
|
|
#include <tqtextedit.h>
|
|
|
|
#include <tqcolor.h>
|
|
|
|
#include <tqstringlist.h>
|
|
|
|
#include <tdeconfig.h>
|
|
|
|
#include <tdewallet.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 TQObject
|
|
|
|
{
|
|
|
|
public:
|
|
|
|
KVpncConfig(TQWidget *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};
|
|
|
|
|
|
|
|
TQString pathToVpnc;
|
|
|
|
TQString pathToCiscoVpnc;
|
|
|
|
TQString pathToRacoon;
|
|
|
|
TQString pathToRacoonctl;
|
|
|
|
TQString pathToSetkey;
|
|
|
|
TQString pathToIptables;
|
|
|
|
TQString pathToOpenssl;
|
|
|
|
TQString pathToIpsec;
|
|
|
|
TQString pathToPppd;
|
|
|
|
TQString pathToPptp;
|
|
|
|
TQString pathToL2tpd;
|
|
|
|
TQString pathToXl2tpd;
|
|
|
|
TQString pathToOpenl2tp;
|
|
|
|
TQString pathToKill;
|
|
|
|
TQString pathToKillall;
|
|
|
|
TQString pathToPing;
|
|
|
|
TQString pathToOpenvpn;
|
|
|
|
TQString pathToIp;
|
|
|
|
TQString pathToIfconfig;
|
|
|
|
TQString pathToRoute;
|
|
|
|
TQString pathToNetstat;
|
|
|
|
TQString pathToPkcs11Tool;
|
|
|
|
TQString pathToVtund;
|
|
|
|
TQString pathToCiscoCertMgr;
|
|
|
|
TQString pathToTail;
|
|
|
|
TQString pathToSsh;
|
|
|
|
TQString pathToKsshAskpass;
|
|
|
|
TQString pathToGnomeSshAskpass;
|
|
|
|
TQString AutoConnectProfile;
|
|
|
|
TQString RacoonDebugLevel;
|
|
|
|
TQString Vpnc_pid_file;
|
|
|
|
TQString Pppd_pid_file;
|
|
|
|
TQString lastProfile;
|
|
|
|
TQString logfileName;
|
|
|
|
TQString InterpreterShell;
|
|
|
|
|
|
|
|
TQString TmpPassword; //< from enter password dialog
|
|
|
|
TQString TmpGroupPassword; //< from enter password dialog
|
|
|
|
TQString TmpUsername; //< from enter password dialog
|
|
|
|
TQString TmpPrivKeyPassStr;
|
|
|
|
TQString TmpGatewayIP;
|
|
|
|
TQString TmpXauthInterPasscode; //< from Xauth interactive passcode dialog
|
|
|
|
TQString TmpPrivateKeyPass;
|
|
|
|
TQString TmpHttpProxyPassword;
|
|
|
|
TQString DnsDevice; //< device which the dns entry was added
|
|
|
|
|
|
|
|
TQString OldDefaultGw; //< default gw before connect
|
|
|
|
TQString OldDefaultDev; //< default gw dev before connect
|
|
|
|
|
|
|
|
TQString NewDefaultGw;
|
|
|
|
|
|
|
|
TQStringList PlutoDebug;
|
|
|
|
TQStringList 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 tdewallet
|
|
|
|
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;
|
|
|
|
|
|
|
|
TQPtrList<ToolInfo> *ToolList;
|
|
|
|
TQPtrList<VpnAccountData> *AccountList;
|
|
|
|
VpnAccountData *currentProfile;
|
|
|
|
|
|
|
|
TQColor InfoLogColor;
|
|
|
|
TQColor RemoteLogColor;
|
|
|
|
TQColor ErrorLogColor;
|
|
|
|
TQColor SuccessLogColor;
|
|
|
|
TQColor DebugLogColor;
|
|
|
|
TQColor DebugBackgroundcolor;
|
|
|
|
|
|
|
|
TQApplication *appPointer;
|
|
|
|
TQPoint pos;
|
|
|
|
ConnectionStatus status;
|
|
|
|
TQFile logfile;
|
|
|
|
TQTextStream logFileStream;
|
|
|
|
TQTextEdit *LogOutput;
|
|
|
|
KWallet::Wallet *wallet;
|
|
|
|
TDEConfig* config; //< configuration data
|
|
|
|
|
|
|
|
TQPoint WindowPos;
|
|
|
|
TQSize WindowSize;
|
|
|
|
|
|
|
|
struct IpsecImportSection {
|
|
|
|
TQString SectionName;
|
|
|
|
TQStringList SectionData;
|
|
|
|
};
|
|
|
|
|
|
|
|
TQPtrList<VpnAccountData> *ImportedAccountList;
|
|
|
|
|
|
|
|
TQWidget *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( TQString msg, LogType type );
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Sets the output textedit for debug output
|
|
|
|
* @param LogOutput
|
|
|
|
*/
|
|
|
|
void setLogOutput(TQTextEdit *LogOutput);
|
|
|
|
|
|
|
|
/**
|
|
|
|
* save configuration
|
|
|
|
*/
|
|
|
|
void saveOptions(bool saveOneProfile=false, TQString 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(TQString Name);
|
|
|
|
|
|
|
|
VpnAccountData* findProfile(TQPtrList<VpnAccountData> *list,const TQString& Name);
|
|
|
|
TQString removeWhiteSpaceAtBegin(const TQString);
|
|
|
|
|
|
|
|
void slotStatusMsg( const TQString &text, int id = ID_STATUS_MSG );
|
|
|
|
void doBackupConfig();
|
|
|
|
void restoreBackupConfig();
|
|
|
|
|
|
|
|
bool exportKvpncConfig(TQString filename);
|
|
|
|
bool importKvpncConfig(TQString filename, TQString& Name, bool& openProfileManager); //< true if profiles imported
|
|
|
|
|
|
|
|
bool importIpsecConfig(TQString filename, TQString& Name, bool& openProfileManager);
|
|
|
|
bool importFritzboxConfig(TQString filename, TQString& Name, bool& openProfileManager);
|
|
|
|
|
|
|
|
};
|
|
|
|
|
|
|
|
#endif
|