diff options
author | Timothy Pearson <[email protected]> | 2011-12-06 12:36:58 -0600 |
---|---|---|
committer | Timothy Pearson <[email protected]> | 2011-12-06 12:36:58 -0600 |
commit | d08a0ede1d2cb15bb14b0ff75eacf5c682b1fa0a (patch) | |
tree | e5ce4701bac540038a279b4e208c86390a24ba11 /src/toolsinfodialog.cpp | |
download | kvpnc-d08a0ede1d2cb15bb14b0ff75eacf5c682b1fa0a.tar.gz kvpnc-d08a0ede1d2cb15bb14b0ff75eacf5c682b1fa0a.zip |
Initial import of year-and-a-half-old upstream version 0.9.6a
Diffstat (limited to 'src/toolsinfodialog.cpp')
-rw-r--r-- | src/toolsinfodialog.cpp | 527 |
1 files changed, 527 insertions, 0 deletions
diff --git a/src/toolsinfodialog.cpp b/src/toolsinfodialog.cpp new file mode 100644 index 0000000..26e8041 --- /dev/null +++ b/src/toolsinfodialog.cpp @@ -0,0 +1,527 @@ +/*************************************************************************** + * Copyright (C) 2004 by Christoph Thielecke * + * [email protected] * + * * + * 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 <klistview.h> +//#include <qlistviewitem.h> +#include <qpixmap.h> +#include <kglobal.h> +#include <qstring.h> +#include <kiconloader.h> +#include <iostream> +#include <klocale.h> +#include <qcursor.h> + +#include "utils.h" +//END INCLUDES + +ToolsInfoDialog::ToolsInfoDialog(KVpncConfig *GlobalConfig, QWidget *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()); + + QPixmap ok_icon = KGlobal::iconLoader()->loadIcon( "button_ok", KIcon::NoGroup, 16 ); + QPixmap wrong_icon = KGlobal::iconLoader()->loadIcon( "button_cancel", KIcon::NoGroup, 16 ); + ToolInfo *tool=0; + main->InfoListView->setSorting(1); + + GlobalConfig->appPointer->setOverrideCursor( QCursor(Qt::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; + QString state=""; + QString usability=""; + QString requiredBy=""; + QString comment=""; + + tool->programsInPath = GlobalConfig->programsInPath; + +// tool->collectToolInfo(); + + if (!tool->PathToExec.isEmpty() && QFile (tool->PathToExec).exists() && QFileInfo(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" + QString 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(); + QString 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: " << QString().setNum(major).ascii() << " minor: " << QString().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") + { + QString realversion=tool->Version.section(' ',1,1).section('/',0,0).right(tool->Version.section(' ',1,1).section('/',0,0).length()-1); + QString 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 + } + + + + QListViewItem *item = new QListViewItem(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); + + } + + QToolTip::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(); +} + |