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.
451 lines
14 KiB
451 lines
14 KiB
11 years ago
|
/***************************************************************************
|
||
|
* $Id: torservers.ui.h,v 1.22 2009/01/17 15:49:08 hoganrobert Exp $
|
||
|
* Copyright (C) 2006 - 2008 Robert Hogan *
|
||
|
* robert@roberthogan.net *
|
||
|
* *
|
||
|
* 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., *
|
||
|
* 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA. *
|
||
|
***************************************************************************/
|
||
|
#include "torkconfig.h"
|
||
|
#include "crypto.h"
|
||
|
#include <klocale.h>
|
||
|
#include <qtooltip.h>
|
||
|
#include <qpopupmenu.h>
|
||
|
#include <kdebug.h>
|
||
|
#include <kiconloader.h>
|
||
|
|
||
|
#ifndef EXTERNAL_GEOIP
|
||
|
# include "GeoIP-1.4.0/libGeoIP/GeoIP.h"
|
||
|
#else
|
||
|
# include <GeoIP.h>
|
||
|
#endif
|
||
|
|
||
|
typedef QMap<QString, QString> codemap;
|
||
|
QString ccode;
|
||
|
QString cname;
|
||
|
codemap ccodes;
|
||
|
QStringList blockCCs;
|
||
|
|
||
|
void TorServers::init()
|
||
|
{
|
||
|
|
||
|
ExcludeNodes->setSelectionMode( QListView::Extended );
|
||
|
ExcludeNodes->setColumnWidthMode(0, QListView::Manual);
|
||
|
ExcludeNodes->hideColumn(0);
|
||
|
ExcludeNodes->header()->setResizeEnabled(FALSE, 0);
|
||
|
ExcludeNodes->setColumnWidthMode(1, QListView::Manual);
|
||
|
ExcludeNodes->hideColumn(1);
|
||
|
ExcludeNodes->header()->setResizeEnabled(FALSE, 1);
|
||
|
ExcludeNodes->setColumnWidthMode(2, QListView::Manual);
|
||
|
ExcludeNodes->hideColumn(2);
|
||
|
ExcludeNodes->header()->setResizeEnabled(FALSE, 2);
|
||
|
ExcludeNodes->setResizeMode( QListView::LastColumn );
|
||
|
|
||
|
ExitNodes->setSelectionMode( QListView::Extended );
|
||
|
ExitNodes->setColumnWidthMode(0, QListView::Manual);
|
||
|
ExitNodes->hideColumn(0);
|
||
|
ExitNodes->header()->setResizeEnabled(FALSE, 0);
|
||
|
ExitNodes->setColumnWidthMode(1, QListView::Manual);
|
||
|
ExitNodes->hideColumn(1);
|
||
|
ExitNodes->header()->setResizeEnabled(FALSE, 1);
|
||
|
ExitNodes->setColumnWidthMode(2, QListView::Manual);
|
||
|
ExitNodes->hideColumn(2);
|
||
|
ExitNodes->header()->setResizeEnabled(FALSE, 2);
|
||
|
ExitNodes->setResizeMode( QListView::LastColumn );
|
||
|
QListViewItem *tm;
|
||
|
QString fp;
|
||
|
QString nick;
|
||
|
QString geoipcc;
|
||
|
QString countryName;
|
||
|
|
||
|
QStringList excludeCountries = TorkConfig::excludeCountries();
|
||
|
for ( QStringList::Iterator it = excludeCountries.begin(); it != excludeCountries.end(); ++it )
|
||
|
{
|
||
|
countryName = GeoIP_country_name[(*it).toInt()];
|
||
|
ccodes[countryName] = (*it);
|
||
|
CountryList->insertItem(countryName);
|
||
|
}
|
||
|
|
||
|
// QStringList preferredCountries = TorkConfig::preferredCountries();
|
||
|
// for ( QStringList::Iterator it = preferredCountries.begin(); it != preferredCountries.end(); ++it )
|
||
|
// {
|
||
|
// countryName = GeoIP_country_name[(*it).toInt()];
|
||
|
// ccodes[countryName] = (*it);
|
||
|
// PreferredCountryList->insertItem(countryName);
|
||
|
// }
|
||
|
|
||
|
QStringList existingServers = TorkConfig::excludeServersHistory();
|
||
|
|
||
|
for ( QStringList::Iterator it = existingServers.begin(); it != existingServers.end(); ++it )
|
||
|
{
|
||
|
if ((*it).isEmpty())
|
||
|
continue;
|
||
|
|
||
|
fp.setLength(0);
|
||
|
nick.setLength(0);
|
||
|
geoipcc = (*it).section("-",0,0);
|
||
|
fp = (*it).section("-",1,1);
|
||
|
nick = (*it).section("-",2);
|
||
|
countryName = GeoIP_country_name[(geoipcc).toInt()];
|
||
|
|
||
|
tm = new QListViewItem(ExcludeNodes,countryName,geoipcc,fp,nick);
|
||
|
tm->setPixmap(3,QPixmap(SmallIcon("tork_" + QString(GeoIP_country_code[geoipcc.toInt()]).lower())));
|
||
|
|
||
|
|
||
|
}
|
||
|
|
||
|
existingServers = TorkConfig::includeServersHistory();
|
||
|
|
||
|
for ( QStringList::Iterator it = existingServers.begin(); it != existingServers.end(); ++it )
|
||
|
{
|
||
|
|
||
|
if ((*it).isEmpty())
|
||
|
continue;
|
||
|
|
||
|
fp.setLength(0);
|
||
|
nick.setLength(0);
|
||
|
geoipcc = (*it).section("-",0,0);
|
||
|
fp = (*it).section("-",1,1);
|
||
|
nick = (*it).section("-",2);
|
||
|
countryName = GeoIP_country_name[(geoipcc).toInt()];
|
||
|
|
||
|
tm = new QListViewItem(ExitNodes,countryName,geoipcc,fp,nick);
|
||
|
tm->setPixmap(3,QPixmap(SmallIcon("tork_" + QString(GeoIP_country_code[geoipcc.toInt()]).lower())));
|
||
|
|
||
|
// CandidateList->insertItem( nick );
|
||
|
|
||
|
}
|
||
|
QStringList mapAddresses = TorkConfig::mapAddress();
|
||
|
|
||
|
for ( QStringList::Iterator it = mapAddresses.begin(); it != mapAddresses.end(); ++it )
|
||
|
{
|
||
|
if ((*it).isEmpty())
|
||
|
continue;
|
||
|
QString entry = (*it).section(" ",1,1);
|
||
|
QString destination = entry.section(".",0,-3);
|
||
|
QString server = entry.section(".",-2,-2);
|
||
|
QString waypoint = entry.section(".",-1,-1);
|
||
|
|
||
|
tm = new QListViewItem(MapAddress,destination,server,waypoint);
|
||
|
}
|
||
|
|
||
|
QListViewItemIterator it(AllowUnverifiedNodes);
|
||
|
while ( it.current() ) {
|
||
|
if (TorkConfig::allowUnverifiedNodes().contains(it.current()->text(0)))
|
||
|
AllowUnverifiedNodes->setSelected(*it,true);
|
||
|
++it;
|
||
|
}
|
||
|
|
||
|
CountryList->sort(true);
|
||
|
// PreferredCountryList->sort(true);
|
||
|
|
||
|
kcfg_StrictExitNodes->setEnabled((ExitNodes->childCount() == 0)?false:true);
|
||
|
|
||
|
}
|
||
|
|
||
|
void TorServers::destroy()
|
||
|
{
|
||
|
// QStringList cclist;
|
||
|
// for (unsigned int index = 0; index != CountryList->count(); ++index){
|
||
|
// cclist.append(ccodes[CountryList->item(index)->text()]);
|
||
|
// }
|
||
|
// TorkConfig::setExcludeCountries(cclist);
|
||
|
//
|
||
|
// cclist.clear();
|
||
|
// for (unsigned int index = 0; index != PreferredCountryList->count(); ++index){
|
||
|
// cclist.append(ccodes[PreferredCountryList->item(index)->text()]);
|
||
|
// }
|
||
|
// TorkConfig::setPreferredCountries(cclist);
|
||
|
//
|
||
|
// TorkConfig::writeConfig();
|
||
|
|
||
|
}
|
||
|
|
||
|
QString TorServers::ccode(const QString &country)
|
||
|
{
|
||
|
return ccodes[country];
|
||
|
}
|
||
|
|
||
|
void TorServers::pushButton6_clicked()
|
||
|
{
|
||
|
|
||
|
new QListViewItem(MapAddress,Destination->text(), CandidateList->currentText(), WayPoints->currentText());
|
||
|
}
|
||
|
|
||
|
|
||
|
|
||
|
void TorServers::MapAddress_contextMenuRequested( QListViewItem *, const QPoint &point, int )
|
||
|
{
|
||
|
|
||
|
QPopupMenu *menu = new QPopupMenu( MapAddress );
|
||
|
|
||
|
menu->clear();
|
||
|
menu->insertItem( "Delete Entry", this,SLOT(slotDeleteEntry()) );
|
||
|
menu->popup( point );
|
||
|
|
||
|
}
|
||
|
|
||
|
|
||
|
void TorServers::slotDeleteEntry( )
|
||
|
{
|
||
|
|
||
|
QListViewItemIterator it(MapAddress, QListViewItemIterator::Selected);
|
||
|
while ( it.current() ) {
|
||
|
if (MapAddress->isSelected( it.current()))
|
||
|
delete it.current();
|
||
|
++it;
|
||
|
}
|
||
|
|
||
|
|
||
|
}
|
||
|
|
||
|
|
||
|
void TorServers::MapAddress_returnPressed( QListViewItem * )
|
||
|
{
|
||
|
|
||
|
}
|
||
|
|
||
|
|
||
|
void TorServers::clearSelectedCountries_clicked()
|
||
|
{
|
||
|
|
||
|
QValueList<QListViewItem*> itemsToDelete;
|
||
|
|
||
|
QListViewItemIterator it(ExcludeNodes, QListViewItemIterator::Selected);
|
||
|
while ( it.current() ) {
|
||
|
if (CountryList->findItem(it.current()->text(0))->isSelected()){
|
||
|
itemsToDelete << it.current();
|
||
|
}
|
||
|
++it;
|
||
|
}
|
||
|
|
||
|
for ( QValueList<QListViewItem*>::Iterator itt = itemsToDelete.begin(); itt != itemsToDelete.end(); ++itt ){
|
||
|
delete (*itt);
|
||
|
}
|
||
|
|
||
|
QValueList<QListBoxItem*> countriesToDelete;
|
||
|
|
||
|
for (unsigned int index = 0; index != CountryList->count(); ++index){
|
||
|
if (CountryList->item(index)->isSelected() )
|
||
|
countriesToDelete << CountryList->item(index);
|
||
|
}
|
||
|
|
||
|
for ( QValueList<QListBoxItem*>::Iterator itb = countriesToDelete.begin();
|
||
|
itb != countriesToDelete.end(); ++itb ){
|
||
|
delete (*itb);
|
||
|
}
|
||
|
|
||
|
CountryList->clearSelection();
|
||
|
}
|
||
|
|
||
|
|
||
|
void TorServers::clearSelectedNodes_clicked()
|
||
|
{
|
||
|
|
||
|
QValueList<QListViewItem*> itemsToDelete;
|
||
|
|
||
|
QListViewItemIterator it(ExcludeNodes, QListViewItemIterator::Selected);
|
||
|
while ( it.current() ) {
|
||
|
itemsToDelete << it.current();
|
||
|
++it;
|
||
|
}
|
||
|
|
||
|
for ( QValueList<QListViewItem*>::Iterator itt = itemsToDelete.begin(); itt != itemsToDelete.end(); ++itt ){
|
||
|
delete (*itt);
|
||
|
}
|
||
|
|
||
|
CountryList->clearSelection();
|
||
|
}
|
||
|
|
||
|
|
||
|
// void TorServers::clearSelectedPreferredCountries_clicked()
|
||
|
// {
|
||
|
//
|
||
|
// QValueList<QListViewItem*> itemsToDelete;
|
||
|
//
|
||
|
// QListViewItemIterator it(ExitNodes, QListViewItemIterator::Selected);
|
||
|
// while ( it.current() ) {
|
||
|
// if (PreferredCountryList->findItem(it.current()->text(0))->isSelected()){
|
||
|
// itemsToDelete << it.current();
|
||
|
// }
|
||
|
// ++it;
|
||
|
// }
|
||
|
//
|
||
|
// for ( QValueList<QListViewItem*>::Iterator itt = itemsToDelete.begin(); itt != itemsToDelete.end(); ++itt ){
|
||
|
// delete (*itt);
|
||
|
// }
|
||
|
//
|
||
|
// QValueList<QListBoxItem*> countriesToDelete;
|
||
|
//
|
||
|
// for (unsigned int index = 0; index != PreferredCountryList->count(); ++index){
|
||
|
// if (PreferredCountryList->item(index)->isSelected() )
|
||
|
// countriesToDelete << PreferredCountryList->item(index);
|
||
|
// }
|
||
|
//
|
||
|
// for ( QValueList<QListBoxItem*>::Iterator itb = countriesToDelete.begin();
|
||
|
// itb != countriesToDelete.end(); ++itb ){
|
||
|
// delete (*itb);
|
||
|
// }
|
||
|
//
|
||
|
// PreferredCountryList->clearSelection();
|
||
|
// }
|
||
|
|
||
|
|
||
|
void TorServers::clearSelectedPreferredNodes_clicked()
|
||
|
{
|
||
|
|
||
|
QValueList<QListViewItem*> itemsToDelete;
|
||
|
|
||
|
QListViewItemIterator it(ExitNodes, QListViewItemIterator::Selected);
|
||
|
while ( it.current() ) {
|
||
|
itemsToDelete << it.current();
|
||
|
++it;
|
||
|
}
|
||
|
|
||
|
for ( QValueList<QListViewItem*>::Iterator itt = itemsToDelete.begin(); itt != itemsToDelete.end(); ++itt ){
|
||
|
delete (*itt);
|
||
|
}
|
||
|
|
||
|
if (ExitNodes->childCount() == 0){
|
||
|
kcfg_StrictExitNodes->setEnabled(false);
|
||
|
kcfg_StrictExitNodes->setChecked(false);
|
||
|
}
|
||
|
}
|
||
|
|
||
|
|
||
|
|
||
|
void TorServers::pushButton6_2_clicked()
|
||
|
{
|
||
|
|
||
|
QListViewItemIterator it(AllowUnverifiedNodes, QListViewItemIterator::Selected);
|
||
|
while ( it.current() ) {
|
||
|
it.current()->listView()->setSelected(it.current(),false);
|
||
|
++it;
|
||
|
}
|
||
|
|
||
|
}
|
||
|
|
||
|
void TorServers::CountryList_clicked( )
|
||
|
{
|
||
|
|
||
|
QStringList selectedCountries;
|
||
|
for ( unsigned int i = 0; i < CountryList->count(); ++i){
|
||
|
if (CountryList->isSelected(i)){
|
||
|
selectedCountries.append(CountryList->item(i)->text());
|
||
|
}
|
||
|
}
|
||
|
|
||
|
kdDebug() << "country list clicked" << endl;
|
||
|
QListViewItemIterator it( ExcludeNodes );
|
||
|
while ( it.current() ) {
|
||
|
QListViewItem *item = it.current();
|
||
|
if (selectedCountries.contains(item->text(0)))
|
||
|
item->setSelected(true);
|
||
|
else
|
||
|
item->setSelected(false);
|
||
|
it++;
|
||
|
}
|
||
|
ExcludeNodes->repaintContents();
|
||
|
|
||
|
}
|
||
|
|
||
|
// void TorServers::PreferredCountryList_clicked( QListBoxItem * curitem)
|
||
|
// {
|
||
|
//
|
||
|
// QListViewItemIterator it( ExitNodes );
|
||
|
// while ( it.current() ) {
|
||
|
// QListViewItem *item = it.current();
|
||
|
// if (curitem){
|
||
|
// if (item->text(0) == curitem->text())
|
||
|
// item->setSelected(curitem->isSelected());
|
||
|
// }
|
||
|
// it++;
|
||
|
// }
|
||
|
// ExitNodes->repaintContents();
|
||
|
//
|
||
|
// }
|
||
|
|
||
|
|
||
|
|
||
|
// <connections>
|
||
|
// <connection>
|
||
|
// <sender>pushButton6</sender>
|
||
|
// <signal>clicked()</signal>
|
||
|
// <receiver>TorServers</receiver>
|
||
|
// <slot>pushButton6_clicked()</slot>
|
||
|
// </connection>
|
||
|
// <connection>
|
||
|
// <sender>MapAddress</sender>
|
||
|
// <signal>contextMenuRequested(QListViewItem*,const QPoint&,int)</signal>
|
||
|
// <receiver>TorServers</receiver>
|
||
|
// <slot>MapAddress_contextMenuRequested(QListViewItem*,const QPoint&,int)</slot>
|
||
|
// </connection>
|
||
|
// <connection>
|
||
|
// <sender>MapAddress</sender>
|
||
|
// <signal>returnPressed(QListViewItem*)</signal>
|
||
|
// <receiver>TorServers</receiver>
|
||
|
// <slot>MapAddress_returnPressed(QListViewItem*)</slot>
|
||
|
// </connection>
|
||
|
// <connection>
|
||
|
// <sender>clearSelected</sender>
|
||
|
// <signal>clicked()</signal>
|
||
|
// <receiver>TorServers</receiver>
|
||
|
// <slot>clearSelected_clicked()</slot>
|
||
|
// </connection>
|
||
|
// <connection>
|
||
|
// <sender>clearSelected_2</sender>
|
||
|
// <signal>clicked()</signal>
|
||
|
// <receiver>TorServers</receiver>
|
||
|
// <slot>clearSelected_2_clicked()</slot>
|
||
|
// </connection>
|
||
|
// <connection>
|
||
|
// <sender>clearSelected_3</sender>
|
||
|
// <signal>clicked()</signal>
|
||
|
// <receiver>TorServers</receiver>
|
||
|
// <slot>clearSelected_3_clicked()</slot>
|
||
|
// </connection>
|
||
|
// <connection>
|
||
|
// <sender>clearSelected_3_2</sender>
|
||
|
// <signal>clicked()</signal>
|
||
|
// <receiver>TorServers</receiver>
|
||
|
// <slot>clearSelected_3_2_clicked()</slot>
|
||
|
// </connection>
|
||
|
// <connection>
|
||
|
// <sender>pushButton6_2</sender>
|
||
|
// <signal>clicked()</signal>
|
||
|
// <receiver>TorServers</receiver>
|
||
|
// <slot>pushButton6_2_clicked()</slot>
|
||
|
// </connection>
|
||
|
// </connections>
|
||
|
// <includes>
|
||
|
// <include location="local" impldecl="in implementation">torservers.ui.h</include>
|
||
|
// </includes>
|
||
|
// <slots>
|
||
|
// <slot>pushButton6_clicked()</slot>
|
||
|
// <slot>MapAddress_contextMenuRequested( QListViewItem *, const QPoint & point, int )</slot>
|
||
|
// <slot>slotDeleteEntry()</slot>
|
||
|
// <slot>MapAddress_returnPressed( QListViewItem * )</slot>
|
||
|
// <slot>clearSelected_clicked()</slot>
|
||
|
// <slot>clearSelected_2_clicked()</slot>
|
||
|
// <slot>clearSelected_3_clicked()</slot>
|
||
|
// <slot>clearSelected_3_2_clicked()</slot>
|
||
|
// <slot>pushButton6_2_clicked()</slot>
|
||
|
// </slots>
|
||
|
// <functions>
|
||
|
// <function access="private" specifier="non virtual">init()</function>
|
||
|
// </functions>
|
||
|
// <layoutdefaults spacing="6" margin="11"/>
|
||
|
// </UI>
|