Created windows download logic

This commit is contained in:
Eric Wheeler 2016-12-23 10:33:26 -08:00
parent 810a369059
commit a41fc59c10
5 changed files with 65 additions and 23 deletions

View File

@ -1,12 +1,14 @@
{ {
"name": "sikofitt/tor-spider", "name": "sikofitt/tor-spider",
"description": "Tor Spider", "description": "Tor Spider",
"type": "library", "type": "project",
"license": "GPL-3.0", "license": "GPL-3.0",
"authors": [ "authors": [
{ {
"name": "sikofitt", "name": "sikofitt",
"email": "sikofitt@gmail.com" "email": "sikofitt@gmail.com",
"role": "Developer",
"homepage": "http://rewiv.com"
} }
], ],
"autoload": { "autoload": {
@ -16,8 +18,9 @@
}, },
"require": { "require": {
"php": ">=5.5", "php": ">=5.5",
"megahertz/guzzle-tor": "^1.0", "ext-curl":"*",
"guzzlehttp/guzzle": "^6.2", "guzzlehttp/guzzle": "^6.2",
"megahertz/guzzle-tor": "^1.0",
"symfony/browser-kit": "^2.8", "symfony/browser-kit": "^2.8",
"symfony/css-selector": "^2.8", "symfony/css-selector": "^2.8",
"symfony/process": "^2.8", "symfony/process": "^2.8",

7
composer.lock generated
View File

@ -4,8 +4,8 @@
"Read more about it at https://getcomposer.org/doc/01-basic-usage.md#composer-lock-the-lock-file", "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#composer-lock-the-lock-file",
"This file is @generated automatically" "This file is @generated automatically"
], ],
"hash": "7a82807babab3d996722517a360f1566", "hash": "f32953690bad3de29ca6b2542acc1b29",
"content-hash": "c31f2eb8e902c95a35f2557762156959", "content-hash": "149eb0993f5007ea0ffa28c7f9762f3b",
"packages": [ "packages": [
{ {
"name": "guzzlehttp/guzzle", "name": "guzzlehttp/guzzle",
@ -2219,7 +2219,8 @@
"prefer-stable": false, "prefer-stable": false,
"prefer-lowest": false, "prefer-lowest": false,
"platform": { "platform": {
"php": ">=5.5" "php": ">=5.5",
"ext-curl": "*"
}, },
"platform-dev": [], "platform-dev": [],
"platform-overrides": { "platform-overrides": {

View File

@ -10,13 +10,29 @@ namespace Sikofitt\OS;
class OSReleaseProber { class OSReleaseProber {
const DEBIAN_DIST = 1;
const GENTOO_DIST = 2;
const REDHAT_DIST = 3;
const WINDOWS = 4;
private $releaseType;
public function getReleaseFile() public function getReleaseFile()
{ {
if(in_array(PHP_OS, array('WIN', 'WINNT'), false)) {
return self::WINDOWS;
}
if(file_exists('/etc/gentoo-release')) {
return self::GENTOO_DIST;
}
if(file_exists('/etc/redhat-release')) {
return self::REDHAT_DIST;
}
if(file_exists('/etc/debian-release')) {
return self::DEBIAN_DIST;
}
} }
public function ParseReleaseFile() private function parseReleaseFile()
{ {
} }

View File

@ -9,6 +9,7 @@
namespace Sikofitt\Tor\Console\Command; namespace Sikofitt\Tor\Console\Command;
use GuzzleHttp\Client; use GuzzleHttp\Client;
use Sikofitt\OS\OSReleaseProber;
use Symfony\Component\Console\Command\Command; use Symfony\Component\Console\Command\Command;
use Symfony\Component\Console\Input\InputInterface; use Symfony\Component\Console\Input\InputInterface;
use Symfony\Component\Console\Output\OutputInterface; use Symfony\Component\Console\Output\OutputInterface;
@ -29,7 +30,7 @@ class TorDownloadCommand extends Command {
const TOR_APT_COMMAND = 'apt-get install tor -y'; //etc/os-release const TOR_APT_COMMAND = 'apt-get install tor -y'; //etc/os-release
const TOR_EMERGE_COMMAND = 'emerge -v net-misc/tor'; //etc/os-release const TOR_EMERGE_COMMAND = 'emerge -v net-misc/tor'; //etc/os-release
const TOR_YUM_COMMAND = 'yum install tor'; //etc/redhat-release const TOR_YUM_COMMAND = 'yum install tor'; //etc/redhat-release
const TOR_WINDOWS_COMMAND = '\tor-win32-0.2.8.11\Tor\tor.exe';
private $downloadUrls = [ private $downloadUrls = [
'linux' => [ 'linux' => [
'file' => 'https://www.torproject.org/dist/tor-0.2.9.8.tar.gz', 'file' => 'https://www.torproject.org/dist/tor-0.2.9.8.tar.gz',
@ -38,7 +39,8 @@ class TorDownloadCommand extends Command {
'b64' => 'LS0tLS1CRUdJTiBQR1AgU0lHTkFUVVJFLS0tLS0KCmlRSWNCQUFCQWdBR0JRSllWL043QUFvSkVHcis1dFNla3JZQkxPMFAvMGpxYU5GbW0vOVQxOGlUWFE1eWg1SWcKZVNqRENWZndvSFhCSXFjTC9GbGc0dkxGOWlaSEFDNWhTVU5BTjA1VVcrSWRFcllpb1lNSGFpdW5EbGJEdEh3Nwp2N2FRTDY0eHMxaWxJamh5Q0VlWXdqYXU0L0gwci9kVFNvREw1eFozOGpsOFlMY21MVXBmaDFmcWxxb1prbENTCnZDdHc5dDhsb2ppSlVZK1pyNVZCd1hrL2h4LzdEM2tSVzcxRzJBYTh6ODMxMFN3Q1JjRy8xTnh6dElQdlJWczAKeDZFYlorMTk1Zk1CMUwyL0FHeHFDSmdyeGQrekNqRGp2dGh6S0wrbldrTkQrUUk0MStmRTNiWUdFVHRkZ1B0Tgp0WkVlQU9sUVV3Ujl5RW5FbjlQYlpyQzdVZktCaFBtV0hFM3BSNzltUzNVa0ZVcWJXSUVkUVJrcDIvODh4RFpWCi9hbUtMMWdoVCtOUStCMXUrenJQamhvSGFHZzZRaUp0eGQzTTVMdHZjdytjUU1KblZKeFlTdXRYVXA4Y0c0WUIKN2UrQVhyM2szWTg5OTV1MUJ5UC9uYzd6ekdtSnJTZitSV3RuYnN6d01kK0x1RWpjajQ1TUY4MU84WHdlbXVtcwp2anorWGpzWUJPMDJuSXpYVUNKWER6QURGSlJTbEtRWDh2Y0haTXVtOVg2Rnl4eUp6MXF6TFlBL1dkWUtKMjdFCk11Yk9pSzZua3BmR3dRY1pFbFNCcjI3M1hvR01zRlFTTlZ0SHJnNEtiT2wyVm5ha2lObFVJZVlteFdadlkraisKUll3allpcVk4SjVCSDBId1pYcFBNU0MvSGV1d3I4K1o2bFJ2bXVoVDBpQU03cXNYdHJ2YzYwdCtVQ1RQSTU4cgp5L0t1NDI1VThIa1BuSkRpVVdGQwo9THZtOQotLS0tLUVORCBQR1AgU0lHTkFUVVJFLS0tLS0K', 'b64' => 'LS0tLS1CRUdJTiBQR1AgU0lHTkFUVVJFLS0tLS0KCmlRSWNCQUFCQWdBR0JRSllWL043QUFvSkVHcis1dFNla3JZQkxPMFAvMGpxYU5GbW0vOVQxOGlUWFE1eWg1SWcKZVNqRENWZndvSFhCSXFjTC9GbGc0dkxGOWlaSEFDNWhTVU5BTjA1VVcrSWRFcllpb1lNSGFpdW5EbGJEdEh3Nwp2N2FRTDY0eHMxaWxJamh5Q0VlWXdqYXU0L0gwci9kVFNvREw1eFozOGpsOFlMY21MVXBmaDFmcWxxb1prbENTCnZDdHc5dDhsb2ppSlVZK1pyNVZCd1hrL2h4LzdEM2tSVzcxRzJBYTh6ODMxMFN3Q1JjRy8xTnh6dElQdlJWczAKeDZFYlorMTk1Zk1CMUwyL0FHeHFDSmdyeGQrekNqRGp2dGh6S0wrbldrTkQrUUk0MStmRTNiWUdFVHRkZ1B0Tgp0WkVlQU9sUVV3Ujl5RW5FbjlQYlpyQzdVZktCaFBtV0hFM3BSNzltUzNVa0ZVcWJXSUVkUVJrcDIvODh4RFpWCi9hbUtMMWdoVCtOUStCMXUrenJQamhvSGFHZzZRaUp0eGQzTTVMdHZjdytjUU1KblZKeFlTdXRYVXA4Y0c0WUIKN2UrQVhyM2szWTg5OTV1MUJ5UC9uYzd6ekdtSnJTZitSV3RuYnN6d01kK0x1RWpjajQ1TUY4MU84WHdlbXVtcwp2anorWGpzWUJPMDJuSXpYVUNKWER6QURGSlJTbEtRWDh2Y0haTXVtOVg2Rnl4eUp6MXF6TFlBL1dkWUtKMjdFCk11Yk9pSzZua3BmR3dRY1pFbFNCcjI3M1hvR01zRlFTTlZ0SHJnNEtiT2wyVm5ha2lObFVJZVlteFdadlkraisKUll3allpcVk4SjVCSDBId1pYcFBNU0MvSGV1d3I4K1o2bFJ2bXVoVDBpQU03cXNYdHJ2YzYwdCtVQ1RQSTU4cgp5L0t1NDI1VThIa1BuSkRpVVdGQwo9THZtOQotLS0tLUVORCBQR1AgU0lHTkFUVVJFLS0tLS0K',
], ],
'windows' => [ 'windows' => [
'file' => 'https://www.torproject.org/dist/torbrowser/6.0.8/tor-win32-0.2.8.11.zip', 'file' => 'http://www.torproject.org/dist/torbrowser/6.0.8/tor-win32-0.2.8.11.zip',
'filename' => 'tor-win32-0.2.8.11.zip',
'sig' => 'https://www.torproject.org/dist/torbrowser/6.0.8/tor-win32-0.2.8.11.zip.asc', 'sig' => 'https://www.torproject.org/dist/torbrowser/6.0.8/tor-win32-0.2.8.11.zip.asc',
'b64' => 'LS0tLS1CRUdJTiBQR1AgU0lHTkFUVVJFLS0tLS0KCmlRSWNCQUFCQ2dBR0JRSllUKzF6QUFvSkVDNGF4bzdVQ0JUZ2ZTa1Avamk3aUtMTlR3UUNzNis3eEVDZFc5MkUKbU5QaFNpQ3pqS25nM0E5RCt0Sy9LQlVxOHVueDYvRll5WUQ0UFRpNU50clgvV3BPVU9xU1FZT3VFQmFaTnFuMgovemg0R0o3bi93bHQ0Y3Z0MHZvRXhRanhYMUFwS1lGNGJDb1hJcis2ZkloVlM3Z0ZJREtIVHBOQkZDQy85TExUCjNwbVkwbkhaQkk1SU11R2Jaell6THJWUEU4aWFEa0wzdVNkYUVBT3p3WW5wM29yY1Q4SlJnK04xS1o1MjZ2WGYKaml5NFF1MEV2RVZ6NmtGTmdqV3hTaitldVhlc081b2MvdjZtT1JsVWN4SURybDRGZnBmbjdsS0t3SnhQWS92cQpKc0M2Mlp0cFRjK0luWTJMV1dkVHhRMnpzdEo0bDZGZGxjSFNJd09SZDVKU1M0Um8rZjlBWEh5YjUvNW5nUnZ6CkR2eHRpV29tYTdzTkM2dWVSeHN6STIxRWtNZHdicXd2TWdTNG43R2U3d3ZWY1Z0WFByeEpJL3dITit1SnJYWkIKbmZaVUhaZkdqbENxdkhDS2ZWemVjamFLaVpSYjNiQzZadHNNWkF5UG9RbjlUUzhHTmtweGN4bG4ycHM1cUFqaAp6K0ttemxvTU1jWE93LzJRZ2pDMnJBeWdubTY1N0hHTFRQRFBzdDkwRkdvZmlpdExLVGJBRVpKZktKeTg3U1VvCnRYejhLSGE3WHBqRVhDSG85dVI1STJTMkUvL1o3aUZ6T1JXaTBYUms0S2FPOHNtNlNJK29BKzhUcSsrT2M0OSsKcmN5RlJzdG5QdXF6c1poZXgrZmwwWk9tN3c5RG5VWkpXWUtHak83b0RWQlJzSzZUVi9kZnFVdTVjdVU1ekVWLwpBbTNSRjJHQU5vUUg4TzVFS0Z1Vgo9ZnBPOQotLS0tLUVORCBQR1AgU0lHTkFUVVJFLS0tLS0K', 'b64' => 'LS0tLS1CRUdJTiBQR1AgU0lHTkFUVVJFLS0tLS0KCmlRSWNCQUFCQ2dBR0JRSllUKzF6QUFvSkVDNGF4bzdVQ0JUZ2ZTa1Avamk3aUtMTlR3UUNzNis3eEVDZFc5MkUKbU5QaFNpQ3pqS25nM0E5RCt0Sy9LQlVxOHVueDYvRll5WUQ0UFRpNU50clgvV3BPVU9xU1FZT3VFQmFaTnFuMgovemg0R0o3bi93bHQ0Y3Z0MHZvRXhRanhYMUFwS1lGNGJDb1hJcis2ZkloVlM3Z0ZJREtIVHBOQkZDQy85TExUCjNwbVkwbkhaQkk1SU11R2Jaell6THJWUEU4aWFEa0wzdVNkYUVBT3p3WW5wM29yY1Q4SlJnK04xS1o1MjZ2WGYKaml5NFF1MEV2RVZ6NmtGTmdqV3hTaitldVhlc081b2MvdjZtT1JsVWN4SURybDRGZnBmbjdsS0t3SnhQWS92cQpKc0M2Mlp0cFRjK0luWTJMV1dkVHhRMnpzdEo0bDZGZGxjSFNJd09SZDVKU1M0Um8rZjlBWEh5YjUvNW5nUnZ6CkR2eHRpV29tYTdzTkM2dWVSeHN6STIxRWtNZHdicXd2TWdTNG43R2U3d3ZWY1Z0WFByeEpJL3dITit1SnJYWkIKbmZaVUhaZkdqbENxdkhDS2ZWemVjamFLaVpSYjNiQzZadHNNWkF5UG9RbjlUUzhHTmtweGN4bG4ycHM1cUFqaAp6K0ttemxvTU1jWE93LzJRZ2pDMnJBeWdubTY1N0hHTFRQRFBzdDkwRkdvZmlpdExLVGJBRVpKZktKeTg3U1VvCnRYejhLSGE3WHBqRVhDSG85dVI1STJTMkUvL1o3aUZ6T1JXaTBYUms0S2FPOHNtNlNJK29BKzhUcSsrT2M0OSsKcmN5RlJzdG5QdXF6c1poZXgrZmwwWk9tN3c5RG5VWkpXWUtHak83b0RWQlJzSzZUVi9kZnFVdTVjdVU1ekVWLwpBbTNSRjJHQU5vUUg4TzVFS0Z1Vgo9ZnBPOQotLS0tLUVORCBQR1AgU0lHTkFUVVJFLS0tLS0K',
], ],
@ -57,20 +59,41 @@ class TorDownloadCommand extends Command {
public function execute(InputInterface $input, OutputInterface $output) public function execute(InputInterface $input, OutputInterface $output)
{ {
if(false === file_exists($this->baseDir . '/' . $this->downloadUrls['linux']['filename'])) $prober = new OSReleaseProber();
{ $dist = $prober->getReleaseFile();
$guzzle = new Client(); switch($dist) {
$file = $guzzle->get($this->downloadUrls['linux']['file']); case OSReleaseProber::DEBIAN_DIST;
file_put_contents($this->baseDir . '/' . $this->downloadUrls['linux']['filename'], $file->getBody()->getContents()); default:
} $command = self::TOR_APT_COMMAND;
break;
case OSReleaseProber::REDHAT_DIST;
$command = self::TOR_YUM_COMMAND;
break;
case OSReleaseProber::GENTOO_DIST;
$command = self::TOR_EMERGE_COMMAND;
break;
case OSReleaseProber::WINDOWS;
$command = self::TOR_WINDOWS_COMMAND;
break;
}
if($command !== self::TOR_WINDOWS_COMMAND) {
print 'run ' . $command . ' to install tor';
exit;
}
$fileData = $this->downloadUrls['windows'];
$tar = new ProcessBuilder(); if(false === file_exists($this->baseDir . '/' . $this->downloadUrls['windows']['filename'])) {
$tar->setPrefix('/bin/tar') $guzzle = new Client(['verify' => false]);
->setWorkingDirectory($this->baseDir)
->setArguments(array('-zxvf', $this->downloadUrls['linux']['filename']));
$process = $tar->getProcess();
$process->run();
$file = $guzzle->get($this->downloadUrls['windows']['file']);
file_put_contents($this->baseDir . '/' . $this->downloadUrls['windows']['filename'], $file->getBody()->getContents());
}
$zip = new \ZipArchive($this->baseDir . '/' . $this->downloadUrls['windows']['filename']);
$zip->open($this->baseDir . '/' . $this->downloadUrls['windows']['filename']);
$zip->extractTo($this->baseDir . '/tor');
$zip->close();
} }
} }

1
tor
View File

@ -1 +0,0 @@
tor.php