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.
158 lines
5.0 KiB
158 lines
5.0 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 NETWORKINTERFACE_H
|
||
|
#define NETWORKINTERFACE_H
|
||
|
|
||
|
#include <qwidget.h>
|
||
|
#include <qprocess.h>
|
||
|
#include <qstringlist.h>
|
||
|
#include <qobject.h>
|
||
|
#include <qapplication.h>
|
||
|
#include <ktempfile.h>
|
||
|
#include <qhttp.h>
|
||
|
#include <qstringlist.h>
|
||
|
#include "kvpncconfig.h"
|
||
|
|
||
|
/**
|
||
|
Class for interaction with network interface
|
||
|
|
||
|
@author Christoph Thielecke
|
||
|
*/
|
||
|
class NetworkInterface : public QObject
|
||
|
{
|
||
|
Q_OBJECT
|
||
|
|
||
|
public:
|
||
|
/**
|
||
|
* Konstruktor
|
||
|
* @param parent Pointer to parent widget
|
||
|
* @param name Name of the object
|
||
|
* @return nothing
|
||
|
*/
|
||
|
NetworkInterface( KVpncConfig* config,QApplication *app, QObject *parent = 0, const char *name = 0 );
|
||
|
|
||
|
/**
|
||
|
* Destruktor
|
||
|
* @return nothing
|
||
|
*/
|
||
|
~NetworkInterface();
|
||
|
|
||
|
/**
|
||
|
* Tests if the interface exists
|
||
|
* @param Interface The interface to test
|
||
|
* @return True if interface exist
|
||
|
*/
|
||
|
bool interfaceExist(QString Interface);
|
||
|
|
||
|
/**
|
||
|
* Retrieves a list of all availiable interfaces
|
||
|
* @return List with all interfaces
|
||
|
*/
|
||
|
QStringList getAllNetworkInterfaces();
|
||
|
|
||
|
/**
|
||
|
* Gets the IP from a given interface
|
||
|
* @param Interface The interface from which the IP whould be given
|
||
|
* @return The IP
|
||
|
*/
|
||
|
QString getInterfaceIP(QString Interface);
|
||
|
|
||
|
QString getInterfaceIP2(QString Interface); // old style
|
||
|
/**
|
||
|
* Gets the device from a given IP
|
||
|
* @param IP The IP which the target interface has
|
||
|
* @return The interface where the IP is set
|
||
|
*/
|
||
|
QString getInterfaceAddress(QString IP);
|
||
|
|
||
|
/**
|
||
|
* Gets the interface where the default route points
|
||
|
* @return The interface
|
||
|
*/
|
||
|
QString getDefaultInterface();
|
||
|
|
||
|
/**
|
||
|
* Gets the gateway of a given interface
|
||
|
* @return The interface
|
||
|
*/
|
||
|
QString getGatewayOfInterface(QString interface);
|
||
|
|
||
|
QString getNetmaskOfInterface(QString interface);
|
||
|
|
||
|
bool inSameNetwork(QString ip1,QString Netmask1,QString ip2,QString Netmask2);
|
||
|
|
||
|
/**
|
||
|
* Gets the gateway of the default route
|
||
|
* @return The interface
|
||
|
*/
|
||
|
QString getGatewayOfDefaultInterface();
|
||
|
|
||
|
/**
|
||
|
* Gets the count of default route entries
|
||
|
* @return count
|
||
|
*/
|
||
|
int getDefaultRouteCount();
|
||
|
|
||
|
/**
|
||
|
* Gets the IP address which is used for communication with internet connections (same as local address if not behind router)
|
||
|
* @return The external IP address
|
||
|
*/
|
||
|
QString getExternalIpAddress();
|
||
|
|
||
|
bool inSameNetwork(QString ip1,QString ip2);
|
||
|
|
||
|
public slots:
|
||
|
void readFromStdout();
|
||
|
void readFromStderr();
|
||
|
void processHasFinished();
|
||
|
void readFromStdout_interfaceip();
|
||
|
void readFromStderr_interfaceip();
|
||
|
void externalIpDataRecieved(const QHttpResponseHeader & resp);
|
||
|
|
||
|
protected:
|
||
|
QProcess *proc; //< The process for starting external programs
|
||
|
QProcess *InterfaceExitsProc;
|
||
|
QProcess *InterfaceIpProc;
|
||
|
bool interfaceTest; //< True if interface test is running
|
||
|
bool retrieveInterfaceIP; //< True if retrieve interface IP is running
|
||
|
bool retrieveInterfaceAddress; //< True if retrieve interface address is running
|
||
|
QStringList InterfaceList; //< List with interfaces
|
||
|
QString InterfaceIP; //< IP for interface
|
||
|
QString InterfaceAddress; //< Device for IP
|
||
|
QString GatewayAddress; //< Gateway of Device
|
||
|
QString GatewayOfInterfaceAddress;
|
||
|
QString GatewayOfDefaultInterfaceAddress; //< Gateway of Device
|
||
|
bool interfaceExists; //< True if interface exists
|
||
|
QString ifconfigbin; //< Path to ifconfig
|
||
|
QString routebin; //< Path to route
|
||
|
QString defaultinterface; //< Interface with defaultroute
|
||
|
QString IPforInterface; //< The Ip for interface
|
||
|
QString tmpInterface; //< Interface for getting devname
|
||
|
QApplication *app;
|
||
|
bool readOutput,getExternalIpAddressRunning;
|
||
|
KTempFile *tmpfile;
|
||
|
QHttp *http;
|
||
|
QString ExternalIpAddress;
|
||
|
QStringList *env;
|
||
|
KVpncConfig *GlobalConfig;
|
||
|
};
|
||
|
|
||
|
#endif
|