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.
tork/src/hiddensrvs.ui.h

208 lines
8.2 KiB

/***************************************************************************
* 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 "tork.h"
#include "hidsrvwizard.h"
#include <tdelocale.h>
#include <kdebug.h>
#include <ntqtooltip.h>
#include <ntqpopupmenu.h>
#include <kurl.h>
#include <tdeapplication.h>
#include <kprocio.h>
#include <tdemessagebox.h>
#include <cstdlib>
void MyHidden::init()
{
TQStringList hiddenServices = TorkConfig::hiddenServices();
for ( TQStringList::Iterator it = hiddenServices.begin(); it != hiddenServices.end(); ++it )
{
if ((*it).isEmpty())
continue;
new TQListViewItem(servicesList,(*it).section("\n",-6,-6),(*it).section("\n",-5,-5),
(*it).section("\n",-4,-4),(*it).section("\n",-3,-3),(*it).section("\n",-2,-2),(*it).section("\n",-1));
}
deleteService->setEnabled(false);
startService->setEnabled(false);
testService->setEnabled(false);
publishService->setEnabled(false);
}
void MyHidden::destroyed()
{
}
void MyHidden::createService_clicked()
{
if (static_cast<tork*>(this->topLevelWidget()->parentWidget())->connectedToTor()){
HidSrvWizard wizard;
wizard.setCaption( i18n( "Hidden Services Wizard" ));
connect( &wizard, SIGNAL(createService(const TQString&,const TQString&)),this->topLevelWidget()->parent(), SLOT(createService(const TQString&,const TQString& )) );
connect( &wizard, SIGNAL(addService(const TQString&,const TQString&,const TQString&,const TQString&,const TQString&,const TQString&)), SLOT(addService(const TQString&,const TQString&,const TQString&,const TQString&,const TQString&,const TQString&)) );
wizard.exec();
}else{
TQString caption = i18n("Not Connected To Tor!");
TQString message = i18n("<p>TorK needs to be connected to Tor in order to create a hidden service. <br>"
"<b>To create a hidden service, first start TorK!");
KMessageBox::information (this, message, caption);
}
}
void MyHidden::updateServices()
{
if ( servicesList->childCount() > 0 ) {
TQStringList v_hiddenServices;
TQListViewItemIterator it( servicesList );
while ( it.current() ) {
TQString s_hiddenServices = it.current()->text(0) + "\n" + it.current()->text(1)
+ "\n" + it.current()->text(2) + "\n" + it.current()->text(3)
+ "\n" + it.current()->text(4)+ "\n" + it.current()->text(5);
v_hiddenServices.append(s_hiddenServices);
++it;
}
TorkConfig::setHiddenServices( v_hiddenServices );
}else
TorkConfig::setHiddenServices( "" );
TorkConfig::writeConfig();
}
void MyHidden::addService(const TQString& nick,const TQString& publicport,const TQString& actualaddress,const TQString& toraddress,const TQString& folder,const TQString& servicefolder)
{
new TQListViewItem(servicesList,toraddress,nick,publicport,actualaddress,folder,servicefolder);
updateServices();
}
void MyHidden::deleteService_clicked()
{
TQString serviceDetails = servicesList->currentItem()->text(5);
TQString serviceAddress = servicesList->currentItem()->text(0);
delete servicesList->currentItem();
TQString caption = i18n("Service deleted!");
TQString message = i18n("<p>The hidden service %1 has been de-configured. <br>"
"<b>However you will need to delete the service details in %2 yourself! Please do this!").arg(serviceAddress).arg(serviceDetails);
KMessageBox::information (this, message, caption);
updateServices();
}
void MyHidden::startService_clicked()
{
KProcIO* thttpdproc = new KProcIO();
thttpdproc->setUseShell(TRUE);
TQString curpath = (TQString) getenv("PATH");
thttpdproc->setEnvironment("PATH",curpath + ":/usr/local/sbin:/usr/sbin:/sbin:/usr/local/bin:/usr/bin:/bin");
*thttpdproc << "thttpd -p " << servicesList->currentItem()->text(3).section(":",1)
<< "-h " << servicesList->currentItem()->text(3).section(":",0,0)
<< "-d " << servicesList->currentItem()->text(4);
connect( thttpdproc, SIGNAL(processExited(TDEProcess *)),
SLOT(thttpdprocExited(TDEProcess *)) );
thttpdproc->start(KProcIO::NotifyOnExit) ;
}
void MyHidden::thttpdprocExited(TDEProcess *proc)
{
TQString caption;
TQString message;
if (proc->exitStatus() == 0){
caption = i18n("Hidden Web Service Started");
message = i18n("<p>Simple web service started. Test the service to ensure it's running. <br>"
"<b>thttpd -p %1 -h %2 -d %3").arg(servicesList->currentItem()->text(3).section(":",1))
.arg(servicesList->currentItem()->text(3).section(":",0,0))
.arg(servicesList->currentItem()->text(4));
}else{
caption = i18n("Hidden Web Service Failed");
message = i18n("<p>Couldn't start the simple web service. Thttpd may not be installed properly. <br>"
"<b>thttpd -p %1 -h %2 -d %3").arg(servicesList->currentItem()->text(3).section(":",1))
.arg(servicesList->currentItem()->text(3).section(":",0,0))
.arg(servicesList->currentItem()->text(4));
}
KMessageBox::information (this, message, caption);
}
void MyHidden::servicesList_selectionChanged()
{
if (servicesList->currentItem()->text(4).isEmpty())
startService->setEnabled(false);
else
startService->setEnabled(true);
deleteService->setEnabled(true);
testService->setEnabled(true);
publishService->setEnabled(true);
}
void MyHidden::startAllServices_clicked()
{
}
void MyHidden::testService_clicked()
{
if ((TorkConfig::kDEUsesTor()) &&
(static_cast<tork*>(this->topLevelWidget()->parentWidget())->connectedToTor())){
KURL url = TQString("http://%1").arg(servicesList->currentItem()->text(0));
kapp->invokeBrowser(url.url(), "0");
}else{
TQString caption = i18n("Not Connected To Tor!");
TQString message = i18n("<p>Konqueror and TorK need to be using Tor in order to test a hidden service. <br>"
"<b>To test a hidden service, first start TorK and enable Konqueror to use Tor!");
KMessageBox::information (this, message, caption);
}
}
void MyHidden::publishService_clicked()
{
if ((TorkConfig::kDEUsesTor()) &&
(static_cast<tork*>(this->topLevelWidget()->parentWidget())->connectedToTor())){
KURL url = TQString("tor:6sxoyfb3h2nvok2d.onion/tor/FrontPage?action=edit");
kapp->invokeBrowser(url.url(), "0");
}else{
TQString caption = i18n("Not Connected To Tor!");
TQString message = i18n("<p>Konqueror and TorK need to be using Tor in order to publish a hidden service. <br>"
"<b>To publish a hidden service, first start TorK and enable Konqueror to use Tor!");
KMessageBox::information (this, message, caption);
}
}