From dc55038b3230492bbcb93b89d217ab394dba9f0f Mon Sep 17 00:00:00 2001 From: Chewbaka Date: Sat, 23 Mar 2019 17:17:55 +0100 Subject: [PATCH 1/9] Add plex alert to all admin page and home and update timeout alert --- fuel/app/classes/controller/admin.php | 2 +- fuel/app/classes/controller/admin/libraries.php | 1 - fuel/app/classes/controller/home.php | 2 +- public/assets/js/plex_alert.js | 2 +- 4 files changed, 3 insertions(+), 4 deletions(-) diff --git a/fuel/app/classes/controller/admin.php b/fuel/app/classes/controller/admin.php index 2df54ef..3ee5da7 100755 --- a/fuel/app/classes/controller/admin.php +++ b/fuel/app/classes/controller/admin.php @@ -22,7 +22,7 @@ class Controller_Admin extends Controller_Template $this->template->user = Session::get('user'); - $this->template->js_bottom = []; + $this->template->js_bottom = ['plex_alert.js']; } public function action_index() diff --git a/fuel/app/classes/controller/admin/libraries.php b/fuel/app/classes/controller/admin/libraries.php index 490145c..0fb4545 100644 --- a/fuel/app/classes/controller/admin/libraries.php +++ b/fuel/app/classes/controller/admin/libraries.php @@ -20,7 +20,6 @@ class Controller_Admin_Libraries extends Controller_Admin public function action_permissions() { - $this->template->js_bottom = ['plex_alert.js']; $body = View::forge('admin/libraries/permissions'); diff --git a/fuel/app/classes/controller/home.php b/fuel/app/classes/controller/home.php index 4543c86..ecb658c 100755 --- a/fuel/app/classes/controller/home.php +++ b/fuel/app/classes/controller/home.php @@ -38,7 +38,7 @@ class Controller_Home extends Controller_Template $this->template->MenuServer = $server; $this->template->MenuLibraries = $libraries; - $this->template->js_bottom = ['clappr.min.js', 'player.js']; + $this->template->js_bottom = ['clappr.min.js', 'player.js', 'plex_alert.js']; } public function action_index() diff --git a/public/assets/js/plex_alert.js b/public/assets/js/plex_alert.js index 1b133ba..00aa8ab 100755 --- a/public/assets/js/plex_alert.js +++ b/public/assets/js/plex_alert.js @@ -23,7 +23,7 @@ function show_alert(type, message) { document.body.appendChild(div_container); - setTimeout(hide_alert, 10000); + setTimeout(hide_alert, 1000); } function hide_alert() { From 5be8ba55c3b3634fdcaa247cd8331a2a90eb6fe6 Mon Sep 17 00:00:00 2001 From: Chewbaka Date: Sat, 23 Mar 2019 17:21:22 +0100 Subject: [PATCH 2/9] Add premissions to libraries But not applying --- fuel/app/classes/controller/rest/install.php | 20 ++++- fuel/app/classes/controller/rest/library.php | 52 +++++++++++++ .../classes/controller/settings/libraries.php | 16 ++++ fuel/app/classes/model/library/permission.php | 17 +++++ .../views/settings/libraries/permissions.php | 74 +++++++++++-------- public/assets/css/settings.css | 63 ++++++++++++++++ 6 files changed, 208 insertions(+), 34 deletions(-) create mode 100644 fuel/app/classes/controller/rest/library.php create mode 100644 fuel/app/classes/model/library/permission.php diff --git a/fuel/app/classes/controller/rest/install.php b/fuel/app/classes/controller/rest/install.php index 36efaa7..9d7453d 100755 --- a/fuel/app/classes/controller/rest/install.php +++ b/fuel/app/classes/controller/rest/install.php @@ -109,6 +109,7 @@ class Controller_Rest_Install extends Controller_Rest array( 'id' => array('constraint' => 36, 'type' => 'varchar'), 'user_id' => array('constraint' => 36, 'type' => 'varchar'), + 'https' => array('constraint' => 1, 'type' => 'int'), 'url' => array('constraint' => 255, 'type' => 'varchar'), 'port' => array('constraint' => 2, 'type' => 'int', 'null' => true), 'token' => array('constraint' => 255, 'type' => 'varchar'), @@ -228,6 +229,7 @@ class Controller_Rest_Install extends Controller_Rest ), array('id'), false, 'InnoDB', 'utf8_unicode_ci' ); + DBUtil::create_index('movie', 'title', 'searchTitle', 'fulltext'); $logs .= 'Movie table create!'."\r\n"; $logs .= 'Creation table configuration'."\r\n"; @@ -254,6 +256,7 @@ class Controller_Rest_Install extends Controller_Rest array( 'id' => array('constraint' => 36, 'type' => 'varchar'), 'name' => array('constraint' => 255, 'type' => 'varchar'), + 'parameters' => array('constraint' => 1, 'type' => 'int', 'default' => 0), 'disable' => array('constraint' => 1, 'type' => 'int', 'default' => 0) ), array('id'), false, 'InnoDB', 'utf8_unicode_ci' @@ -265,7 +268,7 @@ class Controller_Rest_Install extends Controller_Rest * CREATE TABLE USER'S PERMISSION */ DBUtil::create_table( - 'libraries_permission', + 'library_permission', array( 'id' => array('constraint' => 36, 'type' => 'varchar'), 'permission_id' => array('constraint' => 36, 'type' => 'varchar'), @@ -376,7 +379,7 @@ class Controller_Rest_Install extends Controller_Rest 'on_update' => 'NO ACTION', 'on_delete' => 'NO ACTION', )); - DBUtil::add_foreign_key('libraries_permission', array( + DBUtil::add_foreign_key('library_permission', array( 'constraint' => 'constraintPermissionLibrariesPermission', 'key' => 'permission_id', 'reference' => array( @@ -386,11 +389,11 @@ class Controller_Rest_Install extends Controller_Rest 'on_update' => 'NO ACTION', 'on_delete' => 'NO ACTION', )); - DBUtil::add_foreign_key('libraries_permission', array( + DBUtil::add_foreign_key('library_permission', array( 'constraint' => 'constraintLibraryLibrariesPermission', 'key' => 'library_id', 'reference' => array( - 'table' => 'permission', + 'table' => 'library', 'column' => 'id', ), 'on_update' => 'NO ACTION', @@ -469,6 +472,15 @@ class Controller_Rest_Install extends Controller_Rest $logs .= 'Foreign key create!'."\r\n"; + DB::insert('permission',['name', 'parameters']) + ->values(['RIGHT_WATCH']) + ->values(['RIGHT_MAX_WATCH', 1]) + ->values(['RIGHT_MAX_QUALITY', 1]) + ->values(['RIGHT_MAX_CONCURRENT_STREAM', 1]) + ->values(['RIGHT_DOWNLOAD', 1]) + ->values(['RIGHT_MAX_DOWNLOAD', 1]) + ; + DB::commit_transaction(); $logs .= 'All Tables and Foreign Key successfully!'."\r\n"; diff --git a/fuel/app/classes/controller/rest/library.php b/fuel/app/classes/controller/rest/library.php new file mode 100644 index 0000000..dd622d2 --- /dev/null +++ b/fuel/app/classes/controller/rest/library.php @@ -0,0 +1,52 @@ +id; + + $library_permission = Model_Library_Permission::find_one_by(function ($query) use ($library_id, $permission_id) { + $query + ->where('library_id', $library_id) + ->and_where('permission_id', $permission_id); + }); + + + if ($library_permission === null) { + $library_permission = new Model_Library_Permission(); + $library_permission->library_id = $library_id; + $library_permission->permission_id = $permission_id; + } + + if ($checked === 'false') + $library_permission->disable = true; + else + $library_permission->disable = false; + + if($parameter !== null) + $library_permission->value = $parameter; + + $library_permission->save(); + + return $this->response(['error' => false, 'message' => 'Permission modify successfully']); + } catch (Exception $exception) { + return $this->response(['error' => true, 'message' => $exception->getMessage()]); + } + } +} \ No newline at end of file diff --git a/fuel/app/classes/controller/settings/libraries.php b/fuel/app/classes/controller/settings/libraries.php index 55bd32a..275f7ba 100644 --- a/fuel/app/classes/controller/settings/libraries.php +++ b/fuel/app/classes/controller/settings/libraries.php @@ -8,6 +8,7 @@ class Controller_Settings_Libraries extends Controller_Settings public function action_index() { $this->template->js_bottom = ['plex_alert.js', 'server_refresh.js']; + $this->template->css = ['settings.css']; $body = View::forge('settings/libraries'); @@ -27,7 +28,22 @@ class Controller_Settings_Libraries extends Controller_Settings $permissions = Model_Permission::find_all(); + $library_permissions = Model_Library_Permission::find_by('library_id', $library_id); + + $library_permissions = $library_permissions ?: []; + + $temp = []; + + // ORDER ARRAY BY PERMISSION ID + foreach ($library_permissions as $library_permission) { + $temp[$library_permission->permission_id] = $library_permission; + } + + $library_permissions = $temp; + + $body->set('library_id', $library_id); $body->set('permissions', $permissions); + $body->set('library_permissions', $library_permissions); $body->set('user', Session::get('user')); $this->template->body = $body; diff --git a/fuel/app/classes/model/library/permission.php b/fuel/app/classes/model/library/permission.php new file mode 100644 index 0000000..908b8a2 --- /dev/null +++ b/fuel/app/classes/model/library/permission.php @@ -0,0 +1,17 @@ +
-
-
-
-
-
SAISONS
-
-
-
-
- -
-
-
- -
- name; ?> - -
-
-
-
- 13 épisodes -
-
-
- -
-
-
+ + +
+
+
+ name; ?> + + + +

Description of the right, will come here!

+ parameters === 1) : ?> +

+
-
\ No newline at end of file + + +
+ \ No newline at end of file diff --git a/public/assets/css/settings.css b/public/assets/css/settings.css index 5943f06..408bdcf 100644 --- a/public/assets/css/settings.css +++ b/public/assets/css/settings.css @@ -23,4 +23,67 @@ -webkit-animation: rotating 1s linear infinite;; -o-animation: rotating 1s linear infinite;; animation: rotating 1s linear infinite;; +} + +/* The switch - the box around the slider */ +.switch { + position: relative; + display: inline-block; + width: 40px; + height: 18px; +} + +/* Hide default HTML checkbox */ +.switch input { + opacity: 0; + width: 0; + height: 0; +} + +/* The slider */ +.slider { + position: absolute; + cursor: pointer; + top: 0; + left: 0; + right: 0; + bottom: 0; + background-color: #636363; + -webkit-transition: .4s; + transition: .4s; +} + +.slider:before { + position: absolute; + content: ""; + height: 14px; + width: 14px; + left: 2px; + bottom: 2px; + background-color: white; + -webkit-transition: .4s; + transition: .4s; +} + +input:checked + .slider { + background-color: #cc7b19; +} + +input:focus + .slider { + box-shadow: 0 0 1px #cc7b19; +} + +input:checked + .slider:before { + -webkit-transform: translateX(22px); + -ms-transform: translateX(22px); + transform: translateX(22px); +} + +/* Rounded sliders */ +.slider.round { + border-radius: 34px; +} + +.slider.round:before { + border-radius: 50%; } \ No newline at end of file From b3dfbc19a4f361c18a93803eb06b7bcbaab2d518 Mon Sep 17 00:00:00 2001 From: Chewbaka Date: Sat, 23 Mar 2019 17:22:46 +0100 Subject: [PATCH 3/9] Update player List next episode Add button to play next episode like netflix Clean HTML --- fuel/app/views/stream/index.php | 50 ++++++++---- public/assets/js/player.js | 139 +++++++++++++++++++++++++------- 2 files changed, 144 insertions(+), 45 deletions(-) diff --git a/fuel/app/views/stream/index.php b/fuel/app/views/stream/index.php index 1842adb..311ef16 100644 --- a/fuel/app/views/stream/index.php +++ b/fuel/app/views/stream/index.php @@ -1,5 +1,5 @@ - - + +
- -
-
-
+ style="left: 9.5px; width: 3px; background-color: rgb(249, 190, 3); transition-duration: 477.391ms; transform: scaleY(0.9);"> @@ -88,10 +81,23 @@ +
@@ -259,7 +277,7 @@ class="VolumeSlider-track-2WJDz Slider-track-28JOS">
+ class="Slider-thumbTrack-21hGV" style="transform: translateX(-100%);"> +
+
+
+
+ {$TITLE$} +
+
+ {$YEAR$}
+
+ + + + +
+
Épisodes
+ +
+ + + + \ No newline at end of file From bf874c3d2cc0efd877e491e0f04d1b4217761d9e Mon Sep 17 00:00:00 2001 From: Chewbaka Date: Sat, 23 Mar 2019 17:26:31 +0100 Subject: [PATCH 5/9] Add HTTPS to server settings Update cUrl request to use https --- fuel/app/classes/controller/rest/settings.php | 20 ++++- fuel/app/classes/model/library.php | 20 ++++- fuel/app/classes/model/movie.php | 75 ++++++++++++++++--- fuel/app/classes/model/season.php | 21 +++++- fuel/app/classes/model/server.php | 11 ++- fuel/app/classes/model/tvshow.php | 31 +++++++- fuel/app/tasks/server.php | 21 ++++-- .../app/views/modal/{modal.php => server.php} | 11 +++ fuel/app/views/settings/servers.php | 5 +- 9 files changed, 180 insertions(+), 35 deletions(-) rename fuel/app/views/modal/{modal.php => server.php} (82%) mode change 100755 => 100644 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 @@
Plex server information:
+
+ +
+ +
+
+Created By Chewbaka69 // https://github.com/Chewbaka69/PlexShare \ No newline at end of file diff --git a/fuel/app/views/movie/index.php b/fuel/app/views/movie/index.php index d2758c3..c0ecb33 100644 --- a/fuel/app/views/movie/index.php +++ b/fuel/app/views/movie/index.php @@ -96,7 +96,7 @@
+ metadata['Genre'])) :?> metadata['Genre'] as $genre) : ?> metadata['Genre']['@attributes']) ? $movie->metadata['Genre'] : $genre; ?> diff --git a/fuel/app/views/register/index.php b/fuel/app/views/register/index.php index 96a33fa..cdf715e 100755 --- a/fuel/app/views/register/index.php +++ b/fuel/app/views/register/index.php @@ -123,5 +123,6 @@ $('#password').pwstrength(); }); +Created By Chewbaka69 // https://github.com/Chewbaka69/PlexShare \ No newline at end of file diff --git a/fuel/app/views/settings/body.php b/fuel/app/views/settings/body.php index e0bc046..ef2d4cd 100644 --- a/fuel/app/views/settings/body.php +++ b/fuel/app/views/settings/body.php @@ -1,3 +1,5 @@ + + PlexShare :: Settings @@ -5,6 +7,7 @@ Date: Sat, 23 Mar 2019 17:27:46 +0100 Subject: [PATCH 7/9] Add search view result and refactor --- fuel/app/views/layout/nav_bar_header.php | 39 ++++++++++++++++-------- 1 file changed, 26 insertions(+), 13 deletions(-) diff --git a/fuel/app/views/layout/nav_bar_header.php b/fuel/app/views/layout/nav_bar_header.php index c95ace4..b06c539 100644 --- a/fuel/app/views/layout/nav_bar_header.php +++ b/fuel/app/views/layout/nav_bar_header.php @@ -5,21 +5,25 @@