Add php-proxy-plugin-bundle to project
This commit is contained in:
parent
aee2d99391
commit
4ea82b5224
1
vendor/athlon1600/php-proxy-plugin-bundle
vendored
1
vendor/athlon1600/php-proxy-plugin-bundle
vendored
@ -1 +0,0 @@
|
||||
Subproject commit 172202c9b7913dc397b0a2eeacb68984a73f5c6e
|
21
vendor/athlon1600/php-proxy-plugin-bundle/LICENSE
vendored
Normal file
21
vendor/athlon1600/php-proxy-plugin-bundle/LICENSE
vendored
Normal file
@ -0,0 +1,21 @@
|
||||
MIT License
|
||||
|
||||
Copyright (c) 2016
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
of this software and associated documentation files (the "Software"), to deal
|
||||
in the Software without restriction, including without limitation the rights
|
||||
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
copies of the Software, and to permit persons to whom the Software is
|
||||
furnished to do so, subject to the following conditions:
|
||||
|
||||
The above copyright notice and this permission notice shall be included in all
|
||||
copies or substantial portions of the Software.
|
||||
|
||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||
SOFTWARE.
|
4
vendor/athlon1600/php-proxy-plugin-bundle/README.md
vendored
Normal file
4
vendor/athlon1600/php-proxy-plugin-bundle/README.md
vendored
Normal file
@ -0,0 +1,4 @@
|
||||
# php-proxy-plugin-bundle
|
||||
|
||||
A collection of useful plugins to be used with php-proxy or php-proxy-app. A lot of those are used on unblockvideos.com
|
||||
|
17
vendor/athlon1600/php-proxy-plugin-bundle/composer.json
vendored
Normal file
17
vendor/athlon1600/php-proxy-plugin-bundle/composer.json
vendored
Normal file
@ -0,0 +1,17 @@
|
||||
{
|
||||
"name": "athlon1600/php-proxy-plugin-bundle",
|
||||
"description": "A collection of useful plugins to be used with php-proxy",
|
||||
"type": "library",
|
||||
"license": "MIT",
|
||||
"autoload": {
|
||||
"psr-4": {
|
||||
"Proxy\\Plugin\\": "src/"
|
||||
},
|
||||
"files": [
|
||||
"src/utils.php"
|
||||
]
|
||||
},
|
||||
"require": {
|
||||
"athlon1600/youtube-downloader": "^1.0"
|
||||
}
|
||||
}
|
39
vendor/athlon1600/php-proxy-plugin-bundle/src/DailyMotionPlugin.php
vendored
Normal file
39
vendor/athlon1600/php-proxy-plugin-bundle/src/DailyMotionPlugin.php
vendored
Normal file
@ -0,0 +1,39 @@
|
||||
<?php
|
||||
|
||||
namespace Proxy\Plugin;
|
||||
|
||||
use Proxy\Plugin\AbstractPlugin;
|
||||
use Proxy\Event\ProxyEvent;
|
||||
|
||||
use Proxy\Html;
|
||||
|
||||
class DailyMotionPlugin extends AbstractPlugin {
|
||||
|
||||
protected $url_pattern = 'dailymotion.com';
|
||||
|
||||
public function onCompleted(ProxyEvent $event){
|
||||
|
||||
$response = $event['response'];
|
||||
$content = $response->getContent();
|
||||
|
||||
// http://www.dailymotion.com/json/video/{$id}?fields=stream_h264_sd_url,stream_h264_hq_url,stream_h264_url,stream_h264_hd_url
|
||||
if(preg_match('/"url":"([^"]+mp4[^"]*)"/m', $content, $matches)){
|
||||
|
||||
$video = stripslashes($matches[1]);
|
||||
|
||||
// generate our own player
|
||||
$player = vid_player($video, 1240, 478);
|
||||
|
||||
$content = Html::replace_inner("#player", $player, $content);
|
||||
}
|
||||
|
||||
// too many useless scripts on this site
|
||||
$content = Html::remove_scripts($content);
|
||||
|
||||
$response->setContent($content);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
?>
|
38
vendor/athlon1600/php-proxy-plugin-bundle/src/LogPlugin.php
vendored
Normal file
38
vendor/athlon1600/php-proxy-plugin-bundle/src/LogPlugin.php
vendored
Normal file
@ -0,0 +1,38 @@
|
||||
<?php
|
||||
|
||||
use Proxy\Plugin\AbstractPlugin;
|
||||
use Proxy\Event\ProxyEvent;
|
||||
|
||||
class LogPlugin extends AbstractPlugin {
|
||||
|
||||
public function onHeadersReceived(ProxyEvent $event){
|
||||
|
||||
// because this will be included in index.php - php-proxy-app/storage
|
||||
$storage_dir = realpath('./storage');
|
||||
|
||||
if(!is_writable($storage_dir)){
|
||||
return;
|
||||
}
|
||||
|
||||
$log_file = $storage_dir.'/'.date("Y-m-d").'.log';
|
||||
|
||||
$request = $event['request'];
|
||||
$response = $event['response'];
|
||||
|
||||
$data = array(
|
||||
'ip' => $_SERVER['REMOTE_ADDR'],
|
||||
'time' => time(),
|
||||
'url' => $request->getUri(),
|
||||
'status' => $response->getStatusCode(),
|
||||
'type' => $response->headers->get('content-type', 'unknown'),
|
||||
'size' => $response->headers->get('content-length', 'unknown')
|
||||
);
|
||||
|
||||
$message = implode("\t", $data)."\r\n";
|
||||
|
||||
@file_put_contents($log_file, $message, FILE_APPEND);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
?>
|
27
vendor/athlon1600/php-proxy-plugin-bundle/src/TwitterPlugin.php
vendored
Normal file
27
vendor/athlon1600/php-proxy-plugin-bundle/src/TwitterPlugin.php
vendored
Normal file
@ -0,0 +1,27 @@
|
||||
<?php
|
||||
|
||||
namespace Proxy\Plugin;
|
||||
|
||||
use Proxy\Plugin\AbstractPlugin;
|
||||
use Proxy\Event\ProxyEvent;
|
||||
|
||||
use Proxy\Html;
|
||||
|
||||
class TwitterPlugin extends AbstractPlugin {
|
||||
|
||||
protected $url_pattern = 'twitter.com';
|
||||
|
||||
public function onCompleted(ProxyEvent $event){
|
||||
|
||||
// there is some problem with content-length when submitting form...
|
||||
$response = $event['response'];
|
||||
$content = $response->getContent();
|
||||
|
||||
// remove all javascript
|
||||
$content = Html::remove_scripts($content);
|
||||
|
||||
$response->setContent($content);
|
||||
}
|
||||
}
|
||||
|
||||
?>
|
59
vendor/athlon1600/php-proxy-plugin-bundle/src/YoutubePlugin.php
vendored
Normal file
59
vendor/athlon1600/php-proxy-plugin-bundle/src/YoutubePlugin.php
vendored
Normal file
@ -0,0 +1,59 @@
|
||||
<?php
|
||||
|
||||
namespace Proxy\Plugin;
|
||||
|
||||
use Proxy\Plugin\AbstractPlugin;
|
||||
use Proxy\Event\ProxyEvent;
|
||||
|
||||
use Proxy\Html;
|
||||
|
||||
class YoutubePlugin extends AbstractPlugin {
|
||||
|
||||
protected $url_pattern = 'youtube.com';
|
||||
|
||||
// force old YouTube layout!
|
||||
public function onBeforeRequest(ProxyEvent $event){
|
||||
$event['request']->headers->set('Cookie', 'PREF=f6=8');
|
||||
$event['request']->headers->set('User-Agent', 'Opera/7.50 (Windows XP; U)');
|
||||
}
|
||||
|
||||
public function onCompleted(ProxyEvent $event){
|
||||
|
||||
$response = $event['response'];
|
||||
$url = $event['request']->getUrl();
|
||||
$output = $response->getContent();
|
||||
|
||||
// remove top banner that's full of ads
|
||||
$output = Html::remove("#header", $output);
|
||||
|
||||
// do this on all youtube pages
|
||||
$output = preg_replace('@masthead-positioner">@', 'masthead-positioner" style="position:static;">', $output, 1);
|
||||
|
||||
// replace future thumbnails with src=
|
||||
$output = preg_replace('#<img[^>]*data-thumb=#s','<img alt="Thumbnail" src=', $output);
|
||||
|
||||
$youtube = new \YouTubeDownloader();
|
||||
// cannot pass HTML directly because all the links in it are already "proxified"...
|
||||
$links = $youtube->getDownloadLinks($url, "mp4 360, mp4");
|
||||
|
||||
if($links){
|
||||
|
||||
$url = current($links)['url'];
|
||||
|
||||
$player = vid_player($url, 640, 390, 'mp4');
|
||||
|
||||
// this div blocks our player controls
|
||||
$output = Html::remove("#theater-background", $output);
|
||||
|
||||
// replace youtube player div block with our own
|
||||
$output = Html::replace_inner("#player-api", $player, $output);
|
||||
}
|
||||
|
||||
// causes too many problems...
|
||||
$output = Html::remove_scripts($output);
|
||||
|
||||
$response->setContent($output);
|
||||
}
|
||||
}
|
||||
|
||||
?>
|
45
vendor/athlon1600/php-proxy-plugin-bundle/src/utils.php
vendored
Normal file
45
vendor/athlon1600/php-proxy-plugin-bundle/src/utils.php
vendored
Normal file
@ -0,0 +1,45 @@
|
||||
<?php
|
||||
|
||||
function vid_player($url, $width, $height, $extension = false){
|
||||
|
||||
$path = parse_url($url, PHP_URL_PATH);
|
||||
|
||||
$html5 = false;
|
||||
|
||||
if($path){
|
||||
|
||||
$extension = $extension ? $extension : pathinfo($path, PATHINFO_EXTENSION);
|
||||
|
||||
if($extension == 'mp4' || $extension == 'webm' || $extension == 'ogg'){
|
||||
$html5 = true;
|
||||
}
|
||||
}
|
||||
|
||||
// this better be an absolute url and proxify_url function better already be included from somewhere
|
||||
$video_url = proxify_url($url);
|
||||
|
||||
if($html5){
|
||||
|
||||
$html = '<video width="100%" height="100%" controls autoplay>
|
||||
<source src="'.$video_url.'" type="video/'.$extension.'">
|
||||
Your browser does not support the video tag.
|
||||
</video>';
|
||||
|
||||
} else {
|
||||
|
||||
// encode before embedding it into player's parameters
|
||||
$video_url = rawurlencode($video_url);
|
||||
|
||||
$html = '<object id="flowplayer" width="'.$width.'" height="'.$height.'" data="//releases.flowplayer.org/swf/flowplayer-3.2.18.swf" type="application/x-shockwave-flash">
|
||||
|
||||
<param name="allowfullscreen" value="true" />
|
||||
<param name="wmode" value="transparent" />
|
||||
<param name="flashvars" value=\'config={"clip":"'.$video_url.'", "plugins": {"controls": {"autoHide" : false} }}\' />
|
||||
|
||||
</object>';
|
||||
}
|
||||
|
||||
return $html;
|
||||
}
|
||||
|
||||
?>
|
Loading…
Reference in New Issue
Block a user