/plex/web/index.php
PHP | 215 lines | 176 code | 18 blank | 21 comment | 16 complexity | a423b77d1b863967e09b1e7f83942723 MD5 | raw file
- <?php
- /* vim:set softtabstop=4 shiftwidth=4 expandtab: */
- /**
- *
- * LICENSE: GNU General Public License, version 2 (GPLv2)
- * Copyright 2001 - 2015 Ampache.org
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public License v2
- * as published by the Free Software Foundation.
- *
- * 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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
- *
- */
- require_once 'init.php';
- ?>
- <html>
- <head>
- <title>Ampache/Plex Configuration</title>
- <link rel="stylesheet" href="style.css" />
- <script>
- function changeUniqid()
- {
- if (confirm("<?php echo T_('Changing the server UUID could break clients connectivity. Do you confirm?'); ?>")) {
- document.location='/web/?plexact=change_uniqid';
- }
- }
- </script>
- </head>
- <body>
- <div id="main">
- <div id="maincontainer">
- <img src="/images/plex-icon-256.png" /><br />
- <?php
- function init_db()
- {
- if (!Preference::exists('myplex_username')) {
- Preference::insert('myplex_username','myPlex Username','','25','string','internal');
- Preference::insert('myplex_authtoken','myPlex Auth Token','','25','string','internal');
- Preference::insert('myplex_published','Plex Server is published to myPlex','0','25','boolean','internal');
- Preference::insert('plex_uniqid','Plex Server Unique Id', uniqid(),'25','string','internal');
- Preference::insert('plex_servername','Plex Server Name','Ampache','25','string','internal');
- Preference::insert('plex_public_address','Plex Public Address','','25','string','internal');
- Preference::insert('plex_public_port','Plex Public Port','32400','25','string','internal');
- Preference::insert('plex_local_auth','myPlex authentication required on local network','0','25','boolean','internal');
- Preference::insert('plex_match_email','Link myPlex users to Ampache based on e-mail address','1','25','boolean','internal');
- User::rebuild_all_preferences();
- }
- }
- init_db();
- $myplex_username = Plex_XML_Data::getMyPlexUsername();
- $myplex_authtoken = Plex_XML_Data::getMyPlexAuthToken();
- $myplex_published = Plex_XML_Data::getMyPlexPublished();
- $plex_servername = Plex_XML_Data::getServerName();
- $plex_public_address = Plex_XML_Data::getServerPublicAddress();
- $plex_public_port = Plex_XML_Data::getServerPublicPort();
- $plex_local_port = Plex_XML_Data::getServerPort();
- $plex_local_auth = AmpConfig::get('plex_local_auth');
- $plex_match_email = AmpConfig::get('plex_match_email');
- $plexact = $_REQUEST['plexact'];
- switch ($plexact) {
- case 'auth_myplex':
- $myplex_username = $_POST['myplex_username'];
- $myplex_password = $_POST['myplex_password'];
- $plex_public_port = $_POST['plex_public_port'];
- if (!empty($myplex_username)) {
- // Register the server on myPlex and get auth token
- $myplex_authtoken = Plex_Api::validateMyPlex($myplex_username, $myplex_password);
- if (!empty($myplex_authtoken)) {
- echo T_('myPlex authentication completed.') . "<br />\r\n";
- Preference::update('myplex_username', -1, $myplex_username, true, true);
- Preference::update('myplex_authtoken', -1, $myplex_authtoken, true, true);
- Preference::update('plex_public_port', -1, $plex_public_port, true, true);
- AmpConfig::set('plex_public_port', $plex_public_port, true);
- $plex_public_address = Plex_Api::getPublicIp();
- Preference::update('plex_public_address', -1, $plex_public_address, true, true);
- $ret = Plex_Api::registerMyPlex($myplex_authtoken);
- if ($ret['status'] == '201') {
- Plex_Api::publishDeviceConnection($myplex_authtoken);
- $myplex_published = true;
- echo T_('Server registration completed.') . "<br />\r\n";
- } else {
- $myplex_published = false;
- echo "<p class='error'>" . T_('Cannot register the server on myPlex.') . "</p>";
- }
- Preference::update('myplex_published', -1, $myplex_published, true, true);
- } else {
- $myplex_authtoken = '';
- $myplex_published = false;
- echo "<p class='error'>" . T_('Cannot authenticate on myPlex.') . "</p>";
- }
- }
- break;
- case 'unauth_myplex':
- Plex_Api::unregisterMyPlex($myplex_authtoken);
- $myplex_username = '';
- $myplex_authtoken = '';
- $myplex_published = false;
- Preference::update('myplex_username', -1, $myplex_username, true, true);
- Preference::update('myplex_authtoken', -1, $myplex_authtoken, true, true);
- Preference::update('myplex_published', -1, $myplex_published, true, true);
- break;
- case 'save':
- $plex_servername = $_POST['plex_servername'];
- $plex_local_auth = $_POST['plex_local_auth'] ?: '0';
- $plex_match_email = $_POST['plex_match_email'] ?: '0';
- Preference::update('plex_servername', -1, $plex_servername, true, true);
- Preference::update('plex_local_auth', -1, $plex_local_auth, true, true);
- Preference::update('plex_match_email', -1, $plex_match_email, true, true);
- break;
- case 'change_uniqid':
- Preference::update('plex_uniqid', -1,uniqid(), true, true);
- echo T_('Server UUID changed.') . "<br />\r\n";
- break;
- }
- ?>
- <p class="info">Configure your Plex server settings bellow.</p>
- <div class="configform">
- <h3>Server Settings</h3>
- <form action="" method="POST" enctype="multipart/form-data">
- <input type="hidden" name="plexact" value="save" />
- <div class="field">
- <label for="plex_servername">Server Name:</label>
- <input id="plex_servername" class="field_value" type="text" name="plex_servername" value="<?php echo $plex_servername; ?>" />
- </div>
- <div class="field">
- <label for="plex_local_auth">myPlex authentication required on local network</label>
- <input type="checkbox" id="plex_local_auth" name="plex_local_auth" value="1" <?php if ($plex_local_auth) { echo "checked"; } ?>>
- </div>
- <div class="field">
- <label for="plex_match_email">Link myPlex users to Ampache based on e-mail address</label>
- <input type="checkbox" id="plex_match_email" name="plex_match_email" value="1" <?php if ($plex_match_email) { echo "checked"; } ?>>
- </div>
- <div class="formbuttons">
- <input type="submit" value="Save" />
- </div>
- </form>
- </div><br />
- <?php if (empty($myplex_authtoken)) { ?>
- <div class="configform">
- <h3>myPlex authentication / server publish</h3>
- <form action="" method="POST" enctype="multipart/form-data">
- <input type="hidden" name="plexact" value="auth_myplex" />
- <div class="field">
- <label for="myplex_username">myPlex Username:</label>
- <input type="text" id="myplex_username" class="field_value" name="myplex_username" value="<?php echo $myplex_username; ?>" />
- </div>
- <div class="field">
- <label for="myplex_password">myPlex Password:</label>
- <input id="myplex_password" type="password" class="field_value" name="myplex_password" />
- </div>
- <div class="field">
- <label for="plex_public_port">Public Server Port (optional):</label>
- <input type="text" id="plex_public_port" class="field_value" name="plex_public_port" value="<?php echo $plex_public_port; ?>" />
- </div>
- <?php if ($plex_local_port != 32400) { ?>
- <div style="color: orange;">
- Plex servers should locally listen on port 32400. Current local listing port for your Plex backend is <?php echo $plex_local_port; ?>. Ampache applies a small URI `hack` to work with custom port
- as Plex server, but be aware that this will not work with all clients.
- </div>
- <?php } ?>
- <div class="formbuttons">
- <input type="submit" value="Auth/Publish" />
- </div>
- </form>
- </div><br />
- <?php } else { ?>
- <div class="configform">
- <h3>myPlex authentication / server publish</h3>
- <form action="" method="POST" enctype="multipart/form-data">
- <label>myPlex user: <b><?php echo $myplex_username; ?></b></label><br />
- <label>Public server address: <b><?php echo $plex_public_address; ?>:<?php echo $plex_public_port; ?></b></label>
- <input type="hidden" name="plexact" value="unauth_myplex" />
- <div class="formbuttons">
- <input type="submit" value="Unregister" />
- </div>
- </form>
- </div><br />
- <?php } ?>
- <br />
- <div class="configform">
- <h3>Tools</h3><form>
- <div class="formbuttons">
- <input type="button" value="Change Server UUID" onclick="changeUniqid();" />
- </div></form>
- </div><br />
- </div>
- </div>
- </body>
- </html>