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.
528 lines
15 KiB
528 lines
15 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. *
|
|
***************************************************************************/
|
|
//BEGIN INCLUDES
|
|
#include "toolsinfodialog.h"
|
|
#include "listviewtooltip.h"
|
|
#include <tdelistview.h>
|
|
//#include <tqlistviewitem.h>
|
|
#include <tqpixmap.h>
|
|
#include <tdeglobal.h>
|
|
#include <tqstring.h>
|
|
#include <kiconloader.h>
|
|
#include <iostream>
|
|
#include <tdelocale.h>
|
|
#include <tqcursor.h>
|
|
|
|
#include "utils.h"
|
|
//END INCLUDES
|
|
|
|
ToolsInfoDialog::ToolsInfoDialog(KVpncConfig *GlobalConfig, TQWidget *parent, const char *)
|
|
:KDialogBase( parent, "Tool_information", true, "",
|
|
KDialogBase::Ok|KDialogBase::Cancel, KDialogBase::Ok, true )
|
|
{
|
|
main = new ToolsInfoWidgetBase(this);
|
|
setMainWidget(main);
|
|
main->InfoListView->setMinimumSize(main->InfoListView->sizeHint());
|
|
|
|
TQPixmap ok_icon = TDEGlobal::iconLoader()->loadIcon( "button_ok", TDEIcon::NoGroup, 16 );
|
|
TQPixmap wrong_icon = TDEGlobal::iconLoader()->loadIcon( "button_cancel", TDEIcon::NoGroup, 16 );
|
|
ToolInfo *tool=0;
|
|
main->InfoListView->setSorting(1);
|
|
|
|
GlobalConfig->appPointer->setOverrideCursor( TQCursor(TQt::WaitCursor) );
|
|
|
|
for ( tool = GlobalConfig->ToolList->first(); tool; tool = GlobalConfig->ToolList->next() )
|
|
{
|
|
// std::cout << "tool: " << tool->Name.ascii() << std::endl;
|
|
// std::cout << "Version: " << tool->Version << std::endl;
|
|
// std::cout << "Path: " << tool->PathToExec << std::endl << std::endl;
|
|
TQString state="";
|
|
TQString usability="";
|
|
TQString requiredBy="";
|
|
TQString comment="";
|
|
|
|
tool->programsInPath = GlobalConfig->programsInPath;
|
|
|
|
// tool->collectToolInfo();
|
|
|
|
if (!tool->PathToExec.isEmpty() && TQFile (tool->PathToExec).exists() && TQFileInfo(tool->PathToExec).isFile() )
|
|
{
|
|
// state=i18n("Found");
|
|
if (tool->Name == "vpnc")
|
|
{
|
|
// FIXME use major/minor/subminor version
|
|
if ( tool->Version.find("0.3.",0,-1) > -1 || tool->Version.find("0.4.",0,-1) > -1)
|
|
{
|
|
usability=i18n("good");
|
|
comment=i18n("no certificate support");
|
|
}
|
|
if ( tool->Version.find("0.5.",0,-1) > -1 )
|
|
{
|
|
usability=i18n("good");
|
|
if( tool->Capabilities.find(i18n("openssl (certificate) support"),0,-1) > -1)
|
|
comment=i18n("hybrid support");
|
|
else
|
|
comment=i18n("no certificate support");
|
|
}
|
|
else if ( tool->Version.find("0.3.2",0,-1) > -1)
|
|
{
|
|
usability=i18n("limited");
|
|
comment=i18n("no split DNS support");
|
|
}
|
|
else if ( tool->Version.find("0.2.",0,-1) > -1)
|
|
{
|
|
usability=i18n("basic");
|
|
comment=i18n("no NAT-T, IPSec over IP, no split DNS support");
|
|
}
|
|
|
|
}
|
|
else if (tool->Name == "ciscovpnc")
|
|
{
|
|
usability=i18n("full");
|
|
}
|
|
else if (tool->Name == "ipsec")
|
|
{
|
|
// version is like this: "Openswan U2.4.4/K2.6.15" or "strongSwan U2.4.4/K2.6.15"
|
|
TQString realversion=tool->Version.section(' ',1,1).section('/',0,0).right(tool->Version.section(' ',1,1).section('/',0,0).length()-1);
|
|
int majorversion = realversion.section('.',0,0).toInt();
|
|
int minorversion = realversion.section('.',1,1).toInt();
|
|
int subminorversion = realversion.section('.',2,2).toInt();
|
|
TQString realtype=tool->Version.section(' ',0,0).lower();
|
|
|
|
if ( tool->Version.contains("Openswan"))
|
|
{
|
|
comment="Openswan";
|
|
comment+=", "+i18n("kernel %1 support").arg("2.6");
|
|
comment+=", "+i18n("smartcard support");
|
|
}
|
|
else if ( tool->Version.contains("strongSwan"))
|
|
{
|
|
comment="strongSwan";
|
|
comment+=", "+i18n("no aggressive mode");
|
|
comment+=", "+i18n("kernel %1 support").arg("2.4");
|
|
if (!(majorversion <= 2 && minorversion <= 8 && subminorversion <= 1))
|
|
comment+=", "+i18n("kernel %1 support").arg("2.6");
|
|
comment+=", "+i18n("smartcard support");
|
|
}
|
|
else
|
|
{
|
|
comment+="FreeS/WAN";
|
|
}
|
|
|
|
if ( realversion.find("2.",0,-1) > -1)
|
|
usability=i18n("full");
|
|
else if ( realversion.find("1.",0,-1) > -1)
|
|
{
|
|
usability=i18n("limited");
|
|
comment=+", "+i18n("no aggressive mode");
|
|
}
|
|
else
|
|
usability=i18n("unknown");
|
|
|
|
}
|
|
else if (tool->Name == "racoon")
|
|
{
|
|
//if ( tool->Version.find("2.",0,-1) > -1)
|
|
usability=i18n("full");
|
|
//else if ( tool->Version.find("2.",0,-1) > -1)
|
|
// usability=i18n("limited");
|
|
}
|
|
else if (tool->Name == "openvpn")
|
|
{
|
|
if ( tool->Version.find("2.",0,-1) > -1)
|
|
{
|
|
usability=i18n("full");
|
|
// int major=tool->Version.section('.',0,0).toInt();
|
|
// int minor=tool->Version.section('.',1,1).toInt();
|
|
// int subminor=tool->Version.section('.',2,2).toInt();
|
|
|
|
// if ( major >= 2 && minor >= 1)
|
|
if (tool->Capabilities.find( i18n("pkcs11 support"), 0, FALSE ) > -1 )
|
|
{
|
|
if (!comment.isEmpty())
|
|
comment+=", ";
|
|
comment+=i18n("smartcard support");
|
|
}
|
|
}
|
|
else if ( tool->Version.find("1.",0,-1) > -1)
|
|
//else
|
|
usability=i18n("limited");
|
|
}
|
|
else if (tool->Name == "pppd")
|
|
{
|
|
//if ( tool->Version.find("2.",0,-1) > -1)
|
|
usability=i18n("full");
|
|
//else if ( tool->Version.find("2.",0,-1) > -1)
|
|
// usability=i18n("limited");
|
|
|
|
Utils::PppdCapabilities pppdcap = Utils ( GlobalConfig ).checkPppdCapabilities();
|
|
comment="";
|
|
if (pppdcap.pppdHasMppeRequiredSupport==true)
|
|
{
|
|
if (!comment.isEmpty())
|
|
comment+=",";
|
|
comment+= "mppe required";
|
|
}
|
|
if (pppdcap.pppdHasRequireMppeSupport==true)
|
|
{
|
|
if (!comment.isEmpty())
|
|
comment+=",";
|
|
comment+= "require-mppe";
|
|
}
|
|
if (pppdcap.pppdHasReplacedefaultrouteSupport==true)
|
|
{
|
|
if (!comment.isEmpty())
|
|
comment+=",";
|
|
comment+="replacedefaultroute";
|
|
}
|
|
if (pppdcap.pppdHasMppeSupport==true)
|
|
{
|
|
if (!comment.isEmpty())
|
|
comment+=",";
|
|
comment+= "mppe support";
|
|
}
|
|
}
|
|
else if (tool->Name == "pptp")
|
|
{
|
|
//if ( tool->Version.find("2.",0,-1) > -1)
|
|
usability=i18n("full");
|
|
//else if ( tool->Version.find("2.",0,-1) > -1)
|
|
// usability=i18n("limited");
|
|
}
|
|
else if (tool->Name == "vtund")
|
|
{
|
|
//if ( tool->Version.find("2.",0,-1) > -1)
|
|
usability=i18n("full");
|
|
//else if ( tool->Version.find("2.",0,-1) > -1)
|
|
// usability=i18n("limited");
|
|
}
|
|
else if (tool->Name == "ping")
|
|
{
|
|
//if ( tool->Version.find("2.",0,-1) > -1)
|
|
usability=i18n("full");
|
|
//else if ( tool->Version.find("2.",0,-1) > -1)
|
|
// usability=i18n("limited");
|
|
}
|
|
else if (tool->Name == "pkcs11-tool")
|
|
{
|
|
//if ( tool->Version.find("2.",0,-1) > -1)
|
|
usability=i18n("full");
|
|
//else if ( tool->Version.find("2.",0,-1) > -1)
|
|
// usability=i18n("limited");
|
|
}
|
|
else if (tool->Name == "cisco_cert_mgr")
|
|
{
|
|
//if ( tool->Version.find("2.",0,-1) > -1)
|
|
usability=i18n("full");
|
|
//else if ( tool->Version.find("2.",0,-1) > -1)
|
|
// usability=i18n("limited");
|
|
requiredBy=i18n("Cisco (propritary)");
|
|
}
|
|
else if (tool->Name == "kill")
|
|
{
|
|
//if ( tool->Version.find("2.",0,-1) > -1)
|
|
usability=i18n("full");
|
|
//else if ( tool->Version.find("2.",0,-1) > -1)
|
|
// usability=i18n("limited");
|
|
}
|
|
else if (tool->Name == "ip")
|
|
{
|
|
//if ( tool->Version.find("2.",0,-1) > -1)
|
|
usability=i18n("full");
|
|
//else if ( tool->Version.find("2.",0,-1) > -1)
|
|
// usability=i18n("limited");
|
|
}
|
|
else if (tool->Name == "ifconfig")
|
|
{
|
|
//if ( tool->Version.find("2.",0,-1) > -1)
|
|
usability=i18n("full");
|
|
//else if ( tool->Version.find("2.",0,-1) > -1)
|
|
// usability=i18n("limited");
|
|
}
|
|
else if (tool->Name == "route")
|
|
{
|
|
//if ( tool->Version.find("2.",0,-1) > -1)
|
|
usability=i18n("full");
|
|
//else if ( tool->Version.find("2.",0,-1) > -1)
|
|
// usability=i18n("limited");
|
|
}
|
|
else if (tool->Name == "bash")
|
|
{
|
|
//if ( tool->Version.find("2.",0,-1) > -1)
|
|
usability=i18n("full");
|
|
//else if ( tool->Version.find("2.",0,-1) > -1)
|
|
// usability=i18n("limited");
|
|
}
|
|
else if (tool->Name == "iptables")
|
|
{
|
|
//if ( tool->Version.find("2.",0,-1) > -1)
|
|
usability=i18n("full");
|
|
//else if ( tool->Version.find("2.",0,-1) > -1)
|
|
// usability=i18n("limited");
|
|
}
|
|
else if (tool->Name == "killall")
|
|
{
|
|
//if ( tool->Version.find("2.",0,-1) > -1)
|
|
usability=i18n("full");
|
|
//else if ( tool->Version.find("2.",0,-1) > -1)
|
|
// usability=i18n("limited");
|
|
}
|
|
else if (tool->Name == "openssl")
|
|
{
|
|
//if ( tool->Version.find("2.",0,-1) > -1)
|
|
usability=i18n("full");
|
|
//else if ( tool->Version.find("2.",0,-1) > -1)
|
|
// usability=i18n("limited");
|
|
}
|
|
else if (tool->Name == "setkey")
|
|
{
|
|
//if ( tool->Version.find("2.",0,-1) > -1)
|
|
usability=i18n("full");
|
|
//else if ( tool->Version.find("2.",0,-1) > -1)
|
|
// usability=i18n("limited");
|
|
}
|
|
else if (tool->Name == "vpnclient")
|
|
{
|
|
//if ( tool->Version.find("2.",0,-1) > -1)
|
|
usability=i18n("full");
|
|
//else if ( tool->Version.find("2.",0,-1) > -1)
|
|
// usability=i18n("limited");
|
|
}
|
|
else if (tool->Name == "l2tpd")
|
|
{
|
|
//if ( tool->Version.find("2.",0,-1) > -1)
|
|
// usability=i18n("full");
|
|
//else if ( tool->Version.find("2.",0,-1) > -1)
|
|
// usability=i18n("limited");
|
|
}
|
|
else if (tool->Name == "xl2tpd")
|
|
{
|
|
//if ( tool->Version.find("2.",0,-1) > -1)
|
|
// usability=i18n("full");
|
|
//else if ( tool->Version.find("2.",0,-1) > -1)
|
|
// usability=i18n("limited");
|
|
}
|
|
else if (tool->Name == "openl2tp")
|
|
{
|
|
//if ( tool->Version.find("2.",0,-1) > -1)
|
|
// usability=i18n("full");
|
|
//else if ( tool->Version.find("2.",0,-1) > -1)
|
|
// usability=i18n("limited");
|
|
}
|
|
else if (tool->Name == "tail")
|
|
{
|
|
// comment+=", "+i18n("kernel %1 support").arg("2.6");
|
|
}
|
|
else if (tool->Name == "ssh")
|
|
{
|
|
int major=tool->Version.section('.',0,0).toInt();
|
|
int minor=tool->Version.section('.',1,1).section('p',0,0).toInt();
|
|
// std::cout << "ssh version: major: " << TQString().setNum(major).ascii() << " minor: " << TQString().setNum(minor).ascii() << std::endl;
|
|
if ( major > 4 || ( major == 4 && minor >= 3) )
|
|
{
|
|
usability=i18n("full");
|
|
}
|
|
else
|
|
{
|
|
if ( major < 4 )
|
|
//else
|
|
usability=i18n("unuseable");
|
|
comment+=i18n("no vpn support");
|
|
}
|
|
}
|
|
|
|
else
|
|
{
|
|
// other tools
|
|
usability=i18n("full");
|
|
}
|
|
|
|
}
|
|
else
|
|
{
|
|
// state=i18n("Not found");
|
|
usability=i18n("none");
|
|
}
|
|
|
|
// state=i18n("Found");
|
|
if (tool->Name == "vpnc")
|
|
{
|
|
requiredBy=i18n("Cisco (free)");
|
|
}
|
|
else if (tool->Name == "ciscovpnc")
|
|
{
|
|
requiredBy=i18n("Cisco (propritary)");
|
|
}
|
|
else if (tool->Name == "ipsec")
|
|
{
|
|
TQString realversion=tool->Version.section(' ',1,1).section('/',0,0).right(tool->Version.section(' ',1,1).section('/',0,0).length()-1);
|
|
TQString realtype=tool->Version.section(' ',0,0).lower();
|
|
|
|
if ( tool->Version.contains("Openswan"))
|
|
{
|
|
requiredBy=i18n("Openswan");
|
|
}
|
|
else if ( tool->Version.contains("strongSwan"))
|
|
{
|
|
requiredBy=i18n("strongSwan");
|
|
}
|
|
else
|
|
{
|
|
requiredBy=i18n("FreeS/WAN");
|
|
}
|
|
|
|
}
|
|
|
|
// std::cout << "Tool: " << tool->Name.ascii() << " Path: "<< tool->PathToExec.ascii() << " Version: " << tool->Version.ascii() << " Found: " << state.ascii() << std::endl;
|
|
|
|
else if (tool->Name == "racoon")
|
|
{
|
|
requiredBy=i18n("ipsec-tools (racoon)");
|
|
}
|
|
else if (tool->Name == "openvpn")
|
|
{
|
|
requiredBy=i18n("OpenVPN");
|
|
}
|
|
else if (tool->Name == "pppd")
|
|
{
|
|
requiredBy=i18n("PPTP");
|
|
}
|
|
else if (tool->Name == "pptp")
|
|
{
|
|
requiredBy=i18n("PPTP");
|
|
}
|
|
else if (tool->Name == "vtund")
|
|
{
|
|
requiredBy=i18n("VTun");
|
|
}
|
|
else if (tool->Name == "ping")
|
|
{
|
|
requiredBy=i18n("KVpnc");
|
|
}
|
|
else if (tool->Name == "pkcs11-tool")
|
|
{
|
|
requiredBy=i18n("Smartcard support");
|
|
}
|
|
|
|
else if (tool->Name == "cisco_cert_mgr")
|
|
{
|
|
requiredBy=i18n("Cisco (propritary)");
|
|
}
|
|
|
|
else if (tool->Name == "kill")
|
|
{
|
|
requiredBy=i18n("KVpnc");
|
|
}
|
|
else if (tool->Name == "ip")
|
|
{
|
|
requiredBy=i18n("KVpnc");
|
|
}
|
|
else if (tool->Name == "ifconfig")
|
|
{
|
|
requiredBy=i18n("KVpnc");
|
|
}
|
|
else if (tool->Name == "route")
|
|
{
|
|
requiredBy=i18n("KVpnc");
|
|
}
|
|
else if (tool->Name == "bash")
|
|
{
|
|
requiredBy=i18n("KVpnc");
|
|
}
|
|
else if (tool->Name == "iptables")
|
|
{
|
|
requiredBy=i18n("KVpnc");
|
|
}
|
|
else if (tool->Name == "killall")
|
|
{
|
|
requiredBy=i18n("KVpnc");
|
|
}
|
|
else if (tool->Name == "openssl")
|
|
{
|
|
requiredBy=i18n("Certificate support");
|
|
}
|
|
else if (tool->Name == "setkey")
|
|
{
|
|
requiredBy=i18n("ipsec-tools (racoon)");
|
|
}
|
|
else if (tool->Name == "vpnclient")
|
|
{
|
|
requiredBy=i18n("Cisco (propritary)");
|
|
}
|
|
else if (tool->Name == "l2tpd")
|
|
{
|
|
requiredBy=i18n("L2TP");
|
|
}
|
|
else if (tool->Name == "xl2tpd")
|
|
{
|
|
requiredBy=i18n("L2TP");
|
|
}
|
|
else if (tool->Name == "openl2tpd")
|
|
{
|
|
requiredBy=i18n("L2TP");
|
|
}
|
|
else if (tool->Name == "tail")
|
|
{
|
|
requiredBy=i18n("ipsec (Openswan, strongSwan, racoon)");
|
|
}
|
|
else if (tool->Name == "ssh")
|
|
{
|
|
requiredBy=i18n("SSH VPN");
|
|
}
|
|
else if (tool->Name == "ksshaskpass")
|
|
{
|
|
requiredBy=i18n("SSH VPN");
|
|
}
|
|
else if (tool->Name == "gnome-ssh-askpass")
|
|
{
|
|
requiredBy=i18n("SSH VPN");
|
|
}
|
|
else if (tool->Name == "netstat")
|
|
{
|
|
requiredBy = i18n("ipsec (Openswan, strongSwan, racoon)");
|
|
}
|
|
else
|
|
{
|
|
// other tools
|
|
}
|
|
|
|
|
|
|
|
TQListViewItem *item = new TQListViewItem(main->InfoListView, tool->Name,state, tool->Version, usability,requiredBy , tool->PathToExec, comment);
|
|
if (tool->found)
|
|
item->setPixmap(1,ok_icon);
|
|
else
|
|
item->setPixmap(1,wrong_icon);
|
|
main->InfoListView->insertItem(item);
|
|
|
|
}
|
|
|
|
TQToolTip::remove( main->InfoListView );
|
|
new ListViewToolTip( main->InfoListView );
|
|
|
|
this->resize(800,600);
|
|
main->InfoListView->resize(main->InfoListView->sizeHint());
|
|
main->resize(main->sizeHint());
|
|
//this->resize(sizeHint());
|
|
|
|
GlobalConfig->appPointer->restoreOverrideCursor();
|
|
}
|
|
|