diff --git a/fuel/app/classes/controller/rest/settings.php b/fuel/app/classes/controller/rest/settings.php
index a8bf92b..4edbac9 100644
--- a/fuel/app/classes/controller/rest/settings.php
+++ b/fuel/app/classes/controller/rest/settings.php
@@ -2,6 +2,8 @@
use Fuel\Core\Controller_Rest;
use Fuel\Core\FuelException;
+use Fuel\Core\Input;
+use Fuel\Core\Request;
use Fuel\Core\Session;
use Fuel\Core\View;
@@ -9,7 +11,7 @@ class Controller_Rest_Settings extends Controller_Rest
{
public function get_modal_server()
{
- $view = View::forge('modal/modal');
+ $view = View::forge('modal/server');
return $this->response($view->render());
}
@@ -21,10 +23,19 @@ class Controller_Rest_Settings extends Controller_Rest
$url = Input::post('url');
$port = Input::post('port');
$token = Input::post('token');
+ $https = Input::post('https') === 'true' ? true : false;
//@TODO CHECK AND REMOVE HTTP AND HTTPS
- $curl = Request::forge('http://' . $url . ($port ? ':' . $port : '') . '/?X-Plex-Token=' . $token, 'curl');
+ $curl = Request::forge(($https ? 'https' : 'http') . '://' . $url . ($port ? ':' . $port : '') . '/?X-Plex-Token=' . $token, 'curl');
+
+ if($https) {
+ $curl->set_options([
+ CURLOPT_SSL_VERIFYPEER => false,
+ CURLOPT_SSL_VERIFYHOST => false
+ ]);
+ }
+
$result = $curl->execute();
if(!$result)
@@ -33,6 +44,7 @@ class Controller_Rest_Settings extends Controller_Rest
$server = ($server_id === '' ? Model_Server::forge() : Model_Server::find_by_pk($server_id));
$server->set([
'user_id' => Session::get('user')->id,
+ 'https' => $https,
'url' => $url,
'port' => $port,
'token' => $token,
@@ -40,9 +52,9 @@ class Controller_Rest_Settings extends Controller_Rest
]);
$server->save();
- return $this->response(array('error' => false));
+ return $this->response(['error' => false]);
} catch (FuelException $e) {
- return $this->response(array('error' => true, 'message' => $e->getMessage() ?: 'Wrong parameters'), $e->getCode());
+ return $this->response(['error' => true, 'message' => $e->getMessage() ?: 'Wrong parameters'], $e->getCode() > 100 ? $e->getCode() : null);
}
}
diff --git a/fuel/app/classes/model/library.php b/fuel/app/classes/model/library.php
index 96de899..4ec58ba 100644
--- a/fuel/app/classes/model/library.php
+++ b/fuel/app/classes/model/library.php
@@ -58,7 +58,15 @@ class Model_Library extends Model_Overwrite
try {
$libraries_id_array = [];
- $curl = Request::forge('http://' . $server->url . ($server->port ? ':' . $server->port : '') . '/library/sections?X-Plex-Token=' . $server->token, 'curl');
+ $curl = Request::forge(($server->https ? 'https' : 'http') . '://' . $server->url . ($server->port ? ':' . $server->port : '') . '/library/sections?X-Plex-Token=' . $server->token, 'curl');
+
+ if($server->https) {
+ $curl->set_options([
+ CURLOPT_SSL_VERIFYPEER => false,
+ CURLOPT_SSL_VERIFYHOST => false
+ ]);
+ }
+
$curl->execute();
if ($curl->response()->status !== 200)
@@ -114,7 +122,15 @@ class Model_Library extends Model_Overwrite
*/
public static function getSectionsContent($server, $library)
{
- $curl = Request::forge('http://' . $server->url . ($server->port? ':' . $server->port : '') . '/library/sections/' . $library->plex_key . '/all?X-Plex-Token=' . $server->token, 'curl');
+ $curl = Request::forge(($server->https ? 'https' : 'http').'://' . $server->url . ($server->port? ':' . $server->port : '') . '/library/sections/' . $library->plex_key . '/all?X-Plex-Token=' . $server->token, 'curl');
+
+ if($server->https) {
+ $curl->set_options([
+ CURLOPT_SSL_VERIFYPEER => false,
+ CURLOPT_SSL_VERIFYHOST => false
+ ]);
+ }
+
$curl->execute();
if($curl->response()->status !== 200)
diff --git a/fuel/app/classes/model/movie.php b/fuel/app/classes/model/movie.php
index 41ec472..42f2187 100644
--- a/fuel/app/classes/model/movie.php
+++ b/fuel/app/classes/model/movie.php
@@ -129,11 +129,22 @@ class Model_Movie extends Model_Overwrite
$curl = null;
if (!$width && !$height)
- $curl = Request::forge('http://' . $this->_server->url . ($this->_server->port ? ':' . $this->_server->port : '') . $path . '?X-Plex-Token=' . $this->_server->token, 'curl');
+ $curl = Request::forge(($this->_server->https === '1' ? 'https' : 'http').'://' . $this->_server->url . ($this->_server->port ? ':' . $this->_server->port : '') . $path . '?X-Plex-Token=' . $this->_server->token, 'curl');
else
- $curl = Request::forge('http://' . $this->_server->url . ($this->_server->port ? ':' . $this->_server->port : '') . '/photo/:/transcode?width=' . $width . '&height=' . $height . '&minSize=1&url=' . $path . '&X-Plex-Token=' . $this->_server->token, 'curl');
+ $curl = Request::forge(($this->_server->https === '1' ? 'https' : 'http').'://' . $this->_server->url . ($this->_server->port ? ':' . $this->_server->port : '') . '/photo/:/transcode?width=' . $width . '&height=' . $height . '&minSize=1&url=' . $path . '&X-Plex-Token=' . $this->_server->token, 'curl');
- $curl->execute();
+ if($this->_server->https === '1') {
+ $curl->set_options([
+ CURLOPT_SSL_VERIFYPEER => false,
+ CURLOPT_SSL_VERIFYHOST => false
+ ]);
+ }
+
+ try {
+ $curl->execute();
+ } catch (Exception $exception) {
+ Cache::set($this->id . $path_cache, null);
+ }
if ($curl->response()->status !== 200)
return false;
@@ -164,6 +175,29 @@ class Model_Movie extends Model_Overwrite
}
}
+ public function getArt($width = null, $height = null)
+ {
+ $path_cache = null;
+ $art = null;
+
+ if(!$width && !$height)
+ $path_cache = '.art';
+ else
+ $path_cache = '.art_' . $width . '_' . $height;
+
+ try {
+ $art = Cache::get($this->id . $path_cache);
+
+ if ($art)
+ return $art;
+ } catch (CacheNotFoundException $e) {
+ $this->getPicture($this->art, $path_cache, $width, $height);
+
+ $art = Cache::get($this->id . $path_cache);
+ return $art;
+ }
+ }
+
/**
* @return array|mixed
* @throws FuelException
@@ -178,7 +212,15 @@ class Model_Movie extends Model_Overwrite
if(!$this->_server)
$this->getServer();
- $curl = Request::forge('http://' . $this->_server->url . ($this->_server->port ? ':' . $this->_server->port : '') . $this->plex_key . '?X-Plex-Token=' . $this->_server->token, 'curl');
+ $curl = Request::forge(($this->_server->https === '1' ? 'https' : 'http').'://' . $this->_server->url . ($this->_server->port ? ':' . $this->_server->port : '') . $this->plex_key . '?X-Plex-Token=' . $this->_server->token, 'curl');
+
+ if($this->_server->https === '1') {
+ $curl->set_options([
+ CURLOPT_SSL_VERIFYPEER => false,
+ CURLOPT_SSL_VERIFYHOST => false
+ ]);
+ }
+
$curl->execute();
$array = Format::forge($curl->response()->body, 'xml')->to_array();
@@ -258,7 +300,8 @@ class Model_Movie extends Model_Overwrite
$subtitleSize = isset($user_settings->subtitle) ? $user_settings->subtitle : 100;
$language = isset($user_settings->language) ? $user_settings->language : false;
- $request = 'http://' . $this->_server->url . ($this->_server->port ? ':' . $this->_server->port : '');
+ $request = $this->_server->https === '1' ? 'https' : 'http';
+ $request .= '://' . $this->_server->url . ($this->_server->port ? ':' . $this->_server->port : '');
//$request .= '/video/:/transcode/universal/decision?hasMDE=1'; // DASH
$request .= '/video/:/transcode/universal/start.m3u8'; // HLS
$request .= '?identifier=[PlexShare]';
@@ -281,6 +324,13 @@ class Model_Movie extends Model_Overwrite
$curl = Request::forge($request, 'curl');
+ if($this->_server->https === '1') {
+ $curl->set_options([
+ CURLOPT_SSL_VERIFYPEER => false,
+ CURLOPT_SSL_VERIFYHOST => false
+ ]);
+ }
+
$curl->execute();
if ($curl->response()->status !== 200)
@@ -298,9 +348,12 @@ class Model_Movie extends Model_Overwrite
$this->_session = $split[1];
- return 'http://' . $this->_server->url . ($this->_server->port ? ':' . $this->_server->port : '') . '/video/:/transcode/universal/session/' . $this->_session . '/base/index.m3u8';
+ return ($this->_server->https === '1' ? 'https' : 'http') . '://' . $this->_server->url . ($this->_server->port ? ':' . $this->_server->port : '') . '/video/:/transcode/universal/session/' . $this->_session . '/base/index.m3u8';
} catch (Exception $exception) {
- throw new FuelException('Cannot connect to the server.
The token must be outdated!',$exception->getCode());
+ if($exception->getCode() === 403)
+ throw new FuelException('Cannot connect to the server.
The token must be outdated!',$exception->getCode());
+ else
+ throw new FuelException($exception->getMessage(),$exception->getCode());
}
}
@@ -387,12 +440,10 @@ class Model_Movie extends Model_Overwrite
public static function getThirtyLastedTvShows($server)
{
- $conf = Config::get('db');
-
- return self::find(function ($query) use ($server, $conf) {
+ return self::find(function ($query) use ($server) {
/** @var Database_Query_Builder_Select $query */
return $query
- ->select('movie.*', DB::expr('COUNT(' . $conf['default']['table_prefix'] . 'movie.type) AS count'))
+ ->select('movie.*', DB::expr('COUNT(' . DB::table_prefix('movie') . '.type) AS count'))
->join('season', 'LEFT')
->on('movie.season_id', '=', 'season.id')
->join('tvshow', 'LEFT')
@@ -404,7 +455,7 @@ class Model_Movie extends Model_Overwrite
->where('server.id', $server->id)
->and_where('movie.type', 'episode')
->order_by('movie.addedAt', 'DESC')
- ->order_by(DB::expr('MAX(' . $conf['default']['table_prefix'] .'movie.addedAt)'), 'DESC ')//'movie.addedAt', 'DESC')
+ ->order_by(DB::expr('MAX(' . DB::table_prefix('movie') .'.addedAt)'), 'DESC ')//'movie.addedAt', 'DESC')
->group_by('movie.season_id')
->limit(30)
;
diff --git a/fuel/app/classes/model/season.php b/fuel/app/classes/model/season.php
index 51f59c8..f3424ec 100644
--- a/fuel/app/classes/model/season.php
+++ b/fuel/app/classes/model/season.php
@@ -88,9 +88,16 @@ class Model_Season extends Model_Overwrite
$curl = null;
if(!$width && !$height)
- $curl = Request::forge('http://' . $this->_server->url . ($this->_server->port ? ':' . $this->_server->port : '') . $path . '?X-Plex-Token=' . $this->_server->token, 'curl');
+ $curl = Request::forge(($this->_server->https ? 'https' : 'http').'://' . $this->_server->url . ($this->_server->port ? ':' . $this->_server->port : '') . $path . '?X-Plex-Token=' . $this->_server->token, 'curl');
else
- $curl = Request::forge('http://' . $this->_server->url . ($this->_server->port ? ':' . $this->_server->port : '') . '/photo/:/transcode?width='.$width.'&height='.$height.'&minSize=1&url='.$path.'&X-Plex-Token='.$this->_server->token, 'curl');
+ $curl = Request::forge(($this->_server->https ? 'https' : 'http').'://' . $this->_server->url . ($this->_server->port ? ':' . $this->_server->port : '') . '/photo/:/transcode?width='.$width.'&height='.$height.'&minSize=1&url='.$path.'&X-Plex-Token='.$this->_server->token, 'curl');
+
+ if($this->_server->https) {
+ $curl->set_options([
+ CURLOPT_SSL_VERIFYPEER => false,
+ CURLOPT_SSL_VERIFYHOST => false
+ ]);
+ }
$curl->execute();
@@ -164,7 +171,15 @@ class Model_Season extends Model_Overwrite
public static function getMovies($server, $season)
{
try {
- $curl = Request::forge('http://' . $server->url . ($server->port ? ':' . $server->port : '') . $season->plex_key . '?X-Plex-Token=' . $server->token, 'curl');
+ $curl = Request::forge(($server->https ? 'https' : 'http').'://' . $server->url . ($server->port ? ':' . $server->port : '') . $season->plex_key . '?X-Plex-Token=' . $server->token, 'curl');
+
+ if($server->https) {
+ $curl->set_options([
+ CURLOPT_SSL_VERIFYPEER => false,
+ CURLOPT_SSL_VERIFYHOST => false
+ ]);
+ }
+
$curl->execute();
if ($curl->response()->status !== 200)
diff --git a/fuel/app/classes/model/server.php b/fuel/app/classes/model/server.php
index 600cdee..bfe2a51 100755
--- a/fuel/app/classes/model/server.php
+++ b/fuel/app/classes/model/server.php
@@ -11,6 +11,7 @@ class Model_Server extends Model_Overwrite
protected static $_properties = array(
'id',
'user_id',
+ 'https',
'url',
'port',
'token',
@@ -61,7 +62,15 @@ class Model_Server extends Model_Overwrite
if($server->disable)
continue;
- $curl = Request::forge('http://' . $server->url . ($server->port? ':' . $server->port : '') . '/?X-Plex-Token=' . $server->token, 'curl');
+ $curl = Request::forge(($server->https ? 'https' : 'http').'://' . $server->url . ($server->port? ':' . $server->port : '') . '/?X-Plex-Token=' . $server->token, 'curl');
+
+ if($server->https) {
+ $curl->set_options([
+ CURLOPT_SSL_VERIFYPEER => false,
+ CURLOPT_SSL_VERIFYHOST => false
+ ]);
+ }
+
$curl->execute();
$dataServer = Format::forge($curl->response()->body, 'xml')->to_array();
diff --git a/fuel/app/classes/model/tvshow.php b/fuel/app/classes/model/tvshow.php
index 71ed80c..e5123bf 100644
--- a/fuel/app/classes/model/tvshow.php
+++ b/fuel/app/classes/model/tvshow.php
@@ -87,9 +87,16 @@ class Model_Tvshow extends Model_Overwrite
$curl = null;
if(!$width && !$height)
- $curl = Request::forge('http://' . $this->_server->url . ($this->_server->port ? ':' . $this->_server->port : '') . $path . '?X-Plex-Token=' . $this->_server->token, 'curl');
+ $curl = Request::forge(($this->_server->https ? 'https' : 'http').'://' . $this->_server->url . ($this->_server->port ? ':' . $this->_server->port : '') . $path . '?X-Plex-Token=' . $this->_server->token, 'curl');
else
- $curl = Request::forge('http://' . $this->_server->url . ($this->_server->port ? ':' . $this->_server->port : '') . '/photo/:/transcode?width='.$width.'&height='.$height.'&minSize=1&url='.$path.'&X-Plex-Token='.$this->_server->token, 'curl');
+ $curl = Request::forge(($this->_server->https ? 'https' : 'http').'://' . $this->_server->url . ($this->_server->port ? ':' . $this->_server->port : '') . '/photo/:/transcode?width='.$width.'&height='.$height.'&minSize=1&url='.$path.'&X-Plex-Token='.$this->_server->token, 'curl');
+
+ if($this->_server->https) {
+ $curl->set_options([
+ CURLOPT_SSL_VERIFYPEER => false,
+ CURLOPT_SSL_VERIFYHOST => false
+ ]);
+ }
$curl->execute();
@@ -112,7 +119,15 @@ class Model_Tvshow extends Model_Overwrite
$plex_key = preg_split('/\/children/', $this->plex_key)[0];
- $curl = Request::forge('http://' . $this->_server->url . ($this->_server->port ? ':' . $this->_server->port : '') . $plex_key . '?X-Plex-Token=' . $this->_server->token, 'curl');
+ $curl = Request::forge(($this->_server->https ? 'https' : 'http').'://' . $this->_server->url . ($this->_server->port ? ':' . $this->_server->port : '') . $plex_key . '?X-Plex-Token=' . $this->_server->token, 'curl');
+
+ if($this->_server->https) {
+ $curl->set_options([
+ CURLOPT_SSL_VERIFYPEER => false,
+ CURLOPT_SSL_VERIFYHOST => false
+ ]);
+ }
+
$curl->execute();
$array = Format::forge($curl->response()->body, 'xml')->to_array();
@@ -197,7 +212,15 @@ class Model_Tvshow extends Model_Overwrite
public static function getTvShowSeasons($server, $tvshow)
{
try {
- $curl = Request::forge('http://' . $server->url . ($server->port ? ':' . $server->port : '') . $tvshow->plex_key . '?X-Plex-Token=' . $server->token, 'curl');
+ $curl = Request::forge(($server->https ? 'https' : 'http').'://' . $server->url . ($server->port ? ':' . $server->port : '') . $tvshow->plex_key . '?X-Plex-Token=' . $server->token, 'curl');
+
+ if($server->https) {
+ $curl->set_options([
+ CURLOPT_SSL_VERIFYPEER => false,
+ CURLOPT_SSL_VERIFYHOST => false
+ ]);
+ }
+
$curl->execute();
if ($curl->response()->status !== 200)
diff --git a/fuel/app/tasks/server.php b/fuel/app/tasks/server.php
index 78ef4a7..9927327 100644
--- a/fuel/app/tasks/server.php
+++ b/fuel/app/tasks/server.php
@@ -10,23 +10,28 @@ use Model_Server;
use Model_Tvshow;
use function time;
use Fuel\Core\Request;
-use function var_dump;
class Server
{
-
- public function run($message = 'Hello!')
- {
- echo $message;
- }
-
public function ping()
{
$servers = Model_Server::find();
foreach ($servers as $server) {
try {
- $curl = Request::forge('http://' . $server->url . ($server->port ? ':' . $server->port : '') . '?X-Plex-Token=' . $server->token, 'curl');
+ $curl = Request::forge(($this->_server->https === '1' ? 'https' : 'http').'://' . $server->url . ($server->port ? ':' . $server->port : '') . '?X-Plex-Token=' . $server->token, 'curl');
+
+ $curl->set_options([
+ CURLOPT_CONNECTTIMEOUT => 1
+ ]);
+
+ if($this->_server->https === '1') {
+ $curl->set_options([
+ CURLOPT_SSL_VERIFYPEER => false,
+ CURLOPT_SSL_VERIFYHOST => false
+ ]);
+ }
+
$curl->execute();
if ($curl->response()->status !== 200)
diff --git a/fuel/app/views/modal/modal.php b/fuel/app/views/modal/server.php
old mode 100755
new mode 100644
similarity index 82%
rename from fuel/app/views/modal/modal.php
rename to fuel/app/views/modal/server.php
index 4b544d0..e3db95d
--- a/fuel/app/views/modal/modal.php
+++ b/fuel/app/views/modal/server.php
@@ -12,6 +12,17 @@