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.
168 lines
5.0 KiB
168 lines
5.0 KiB
/***************************************************************************
|
|
** $Id: torioslave.cpp,v 1.7 2008/07/31 19:56:29 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 <ntqcstring.h>
|
|
#include <ntqsocket.h>
|
|
#include <ntqdatetime.h>
|
|
#include <ntqbitarray.h>
|
|
|
|
#include <stdlib.h>
|
|
#include <math.h>
|
|
#include <unistd.h>
|
|
#include <sys/socket.h>
|
|
#include <sys/types.h>
|
|
#include <netinet/in.h>
|
|
#include <netdb.h>
|
|
|
|
#include <tdeapplication.h>
|
|
#include <kdebug.h>
|
|
#include <tdemessagebox.h>
|
|
#include <kinstance.h>
|
|
#include <tdeglobal.h>
|
|
#include <kstandarddirs.h>
|
|
#include <tdelocale.h>
|
|
#include <kurl.h>
|
|
#include <ksock.h>
|
|
#include <dcopref.h>
|
|
#include <dcopclient.h>
|
|
#include <kdebug.h>
|
|
#include <tdelocale.h>
|
|
#include <krun.h>
|
|
#include <kprocio.h>
|
|
|
|
#include "torioslave.h"
|
|
|
|
using namespace TDEIO;
|
|
|
|
|
|
tdeio_torProtocol::tdeio_torProtocol(const TQCString &pool_socket, const TQCString &app_socket)
|
|
: SlaveBase("tdeio_tor", pool_socket, app_socket)
|
|
{
|
|
}
|
|
|
|
|
|
tdeio_torProtocol::~tdeio_torProtocol()
|
|
{
|
|
}
|
|
|
|
|
|
void tdeio_torProtocol::get(const KURL& url )
|
|
{
|
|
|
|
TQString wait;
|
|
TQByteArray output;
|
|
|
|
TQTextStream os( output, IO_WriteOnly );
|
|
os.setEncoding( TQTextStream::Latin1 ); // In fast ASCII
|
|
|
|
TQString cleanedurl = url.prettyURL().replace("tor://","");
|
|
cleanedurl = cleanedurl.replace("tor:/","");
|
|
cleanedurl = cleanedurl.replace("tor:","");
|
|
cleanedurl = cleanedurl.replace(" ","");
|
|
bool cantdo = false;
|
|
|
|
if (cleanedurl.contains(".txt"))
|
|
cantdo = true;
|
|
|
|
if (cleanedurl.contains("://") && (cleanedurl.left(4) != "http"))
|
|
cantdo = true;
|
|
|
|
if (cantdo){
|
|
|
|
os << TQString("<html><head><title>Tor</title></head><body>%1 is not a valid URL for this feature. Websites only I'm afraid. And no file extensions either!</body></html>").arg(cleanedurl);
|
|
|
|
data( output );
|
|
finished();
|
|
return;
|
|
}
|
|
|
|
if ((cleanedurl.left(7) != "http://") && (cleanedurl.left(8) != "https://"))
|
|
cleanedurl.prepend("http://");
|
|
|
|
bool m_torkrunning = false;
|
|
bool anonymized = false;
|
|
|
|
DCOPClient* p_dcopServer= new DCOPClient();
|
|
p_dcopServer->attach ();
|
|
|
|
if (p_dcopServer->isApplicationRegistered ("tork")){
|
|
m_torkrunning = true;
|
|
DCOPRef tork( "tork", "DCOPTork" );
|
|
anonymized = tork.call( "getTDESetting" );
|
|
}
|
|
|
|
|
|
|
|
if (m_torkrunning){
|
|
DCOPRef("tork*", "DCOPTork").send("startEverything");
|
|
if (!anonymized)
|
|
DCOPRef("tork*", "DCOPTork").send("toggleTDESetting");
|
|
wait = "3";
|
|
}else{
|
|
KProcIO *whichproc = new KProcIO();
|
|
whichproc->setUseShell(TRUE);
|
|
TQString whichCommand="tork --toggleTDE";
|
|
|
|
*whichproc<<whichCommand;
|
|
|
|
whichproc->start(KProcIO::NotifyOnExit,TRUE);
|
|
|
|
//KRun::runCommand( "tork --toggleTDE");
|
|
wait = "10";
|
|
}
|
|
|
|
|
|
os << TQString("<html><head><title>Tor</title><META HTTP-EQUIV='Refresh' CONTENT='%1; URL=%2'></head><body>Will load %3 anonymously in a moment.</body></html>").arg(wait).arg(cleanedurl).arg(cleanedurl);
|
|
|
|
data( output );
|
|
finished();
|
|
|
|
}
|
|
|
|
|
|
void tdeio_torProtocol::mimetype(const KURL & /*url*/)
|
|
{
|
|
mimeType("text/html");
|
|
finished();
|
|
}
|
|
|
|
|
|
extern "C"
|
|
{
|
|
int kdemain(int argc, char **argv)
|
|
{
|
|
TDEInstance instance( "tdeio_tor" );
|
|
|
|
kdDebug(7101) << "*** Starting tdeio_tor " << endl;
|
|
|
|
if (argc != 4) {
|
|
kdDebug(7101) << "Usage: tdeio_tor protocol domain-socket1 domain-socket2" << endl;
|
|
exit(-1);
|
|
}
|
|
|
|
tdeio_torProtocol slave(argv[2], argv[3]);
|
|
slave.dispatchLoop();
|
|
|
|
kdDebug(7101) << "*** tdeio_tor Done" << endl;
|
|
return 0;
|
|
}
|
|
}
|