first changes to docker
This commit is contained in:
470
QPKG/shared/web/index.php
Normal file
470
QPKG/shared/web/index.php
Normal file
@@ -0,0 +1,470 @@
|
||||
<?php
|
||||
include_once("/home/httpd/cgi-bin/qpkg/RoonServer/__include.php");
|
||||
include_once("/home/httpd/cgi-bin/qpkg/RoonServer/__functions.php");
|
||||
?>
|
||||
|
||||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=edge">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
|
||||
<meta name="description" content="">
|
||||
<meta name="author" content="Christopher Rieke">
|
||||
<title>RoonServer</title>
|
||||
|
||||
|
||||
<!-- Icons -->
|
||||
<link rel="apple-touch-icon" sizes="180x180" href="icons/apple-touch-icon.png">
|
||||
<link rel="icon" type="image/png" sizes="32x32" href="icons/favicon-32x32.png">
|
||||
<link rel="icon" type="image/png" sizes="16x16" href="icons/favicon-16x16.png">
|
||||
<link rel="manifest" href="icons/site.webmanifest">
|
||||
<link rel="mask-icon" href="icons/safari-pinned-tab.svg">
|
||||
<meta name="msapplication-TileColor" content="#2b5797">
|
||||
<meta name="theme-color" content="#ffffff">
|
||||
|
||||
|
||||
<!-- jquery asset -->
|
||||
<script src="assets/js/jquery-2.1.3.js"></script>
|
||||
|
||||
<!-- popper.js asset -->
|
||||
<script src="assets/js/popper.min.js"></script>
|
||||
|
||||
<!-- bootstrap asset -->
|
||||
<link href="assets/bootstrap/css/bootstrap.min.css" rel="stylesheet" type="text/css">
|
||||
<script src="assets/bootstrap/js/bootstrap.js"></script>
|
||||
|
||||
<!-- gijgo asset -->
|
||||
<script src="assets/gijgo/js/gijgo.min.js"></script>
|
||||
<link href="assets/gijgo/css/gijgo.css" rel="stylesheet" type="text/css">
|
||||
|
||||
<!-- fontawesome asset -->
|
||||
<script src="assets/fontawesome/js/fontawesome-all.min.js"></script>
|
||||
<link rel="stylesheet" href="assets/fontawesome/css/fa-svg-with-js.css">
|
||||
<link rel="stylesheet" href="assets/fontawesome-animated/font-awesome-animation.min.css">
|
||||
|
||||
<script src="assets/snapsvg/snap.svg-min.js"></script>
|
||||
|
||||
<!-- custom css -->
|
||||
<link rel="stylesheet" href="RoonServerQNAP.css">
|
||||
|
||||
|
||||
</head>
|
||||
<body>
|
||||
<iframe id="frame" style="display:none"></iframe>
|
||||
<!-- /.container -->
|
||||
<div class="fullcontainer">
|
||||
|
||||
|
||||
<?php
|
||||
if (!empty($_GET['debug'])) {
|
||||
$debug = filter_var($_GET['debug'], FILTER_SANITIZE_NUMBER_FLOAT);
|
||||
if ($debug == 1) {
|
||||
echo localize("DEBUG_ARCH") . ': ' . php_uname('m') . '<br>';
|
||||
echo localize("DEBUG_DATABASE") . ': ' . $dblocation . '<br>';
|
||||
echo localize("DEBUG_SID") . ': ' . $_COOKIE['NAS_SID'] . '<br>';
|
||||
echo localize("DEBUG_QPKG_ROOT") . ': ' . APPINSTALLPATH . "<br>";
|
||||
echo localize("DEBUG_LANGUAGE") . ': ' . $_COOKIE['nas_lang'] . "<br>";
|
||||
echo "RoonServer PID: " . isRunning('getpid') . '<br>';
|
||||
echo localize("DEBUG_QPKG_DOCROOT") . ': ' . NASHOST . '<br>';
|
||||
echo "HomeFeature disabled: " . $multimediaDisabled . '<br>';
|
||||
}
|
||||
|
||||
}
|
||||
?>
|
||||
<nav id="navigation" class="navbar navbar-expand-md navbar-dark bg-dark fixed-top">
|
||||
<a class="navbar-brand" href="index.php">
|
||||
<img src="img/roonIcon.svg" alt="Roon Icon" style="height: 40px;">
|
||||
</a>
|
||||
<button class="navbar-toggler" type="button" data-toggle="collapse" data-target="#navbarsExampleDefault"
|
||||
aria-controls="navbarsExampleDefault" aria-expanded="false" aria-label="Toggle navigation">
|
||||
<span class="navbar-toggler-icon"></span>
|
||||
</button>
|
||||
<div class="collapse navbar-collapse" id="navbarsExampleDefault">
|
||||
<ul class="navbar-nav mr-auto">
|
||||
<li class="nav-item">
|
||||
<a class="nav-link active" href="index.php"><?php echo localize("NAV_MENU_ROONSERVER"); ?></a>
|
||||
</li>
|
||||
</ul>
|
||||
';
|
||||
|
||||
<ul class="navbar-nav ml-auto">
|
||||
<li class="nav-item dropdown pull-right dropdown-menu-right">
|
||||
<a class="nav-link dropdown-toggle" href="#" id="dropdown01" data-toggle="dropdown"
|
||||
aria-haspopup="true" aria-expanded="false"><?php echo localize("NAV_MENU_MORE"); ?></a>
|
||||
<div class="dropdown-menu pull-right" aria-labelledby="dropdown01">
|
||||
<a class="dropdown-item" href="https://roonlabs.com/downloads.html" target="_blank">
|
||||
<?php echo localize("NAV_MENU_DOWNLOADS"); ?></a>
|
||||
<a class="dropdown-item" href="https://community.roonlabs.com"
|
||||
target="_blank"><?php echo localize("NAV_MENU_COMMUNITY"); ?></a>
|
||||
<a class="dropdown-item" href="https://kb.roonlabs.com/Roon_Server_on_NAS"
|
||||
target="_blank"><?php echo localize("NAV_MENU_ROON_ON_NAS"); ?></a>
|
||||
<a class="dropdown-item" href="https://roonlabs.com/pricing.html" target="_blank">
|
||||
<?php echo localize("NAV_MENU_TRY_ROON"); ?></a>
|
||||
</div>
|
||||
</li>
|
||||
<li class="nav-item">
|
||||
<a id="about" class="getModal nav-link float-right" href="#"><i class="fas fa-info-circle"></i> <?php echo localize('NAV_MENU_INFO'); ?></a>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
</nav>
|
||||
<div id="contentblock">
|
||||
<?php
|
||||
$section = "info";
|
||||
if (!isset($dblocation)) {
|
||||
$section = "main";
|
||||
}
|
||||
|
||||
include "content/{$section}.php"; ?>
|
||||
</div>
|
||||
|
||||
<div id="modalSection">
|
||||
<div class="modal fade" id="modal" tabindex="-1" role="dialog" aria-hidden="true">
|
||||
<div class="modal-dialog">
|
||||
<div id="modal-content" class="modal-content" style="width: 600px;">
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<script>
|
||||
|
||||
// Hide Modal
|
||||
$(document).on('hidden.bs.modal', '.modal', function () {
|
||||
|
||||
// Check and open modal again if helper script action is running.
|
||||
$.ajax({
|
||||
url: '<?php echo NASHOST;?>/cgi-bin/qpkg/RoonServer/ajax/ajax.php?a=checkHelperScript',
|
||||
dataType: 'json',
|
||||
success: function (response) {
|
||||
if (!response.success) {
|
||||
$('#modalblock').html('');
|
||||
} else {
|
||||
$('#modal').modal('show');
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
// Prevent Reload of info if database path is not set
|
||||
var action = 'dbPathIsSet';
|
||||
$.ajax({
|
||||
url: '<?php echo NASHOST;?>/cgi-bin/qpkg/RoonServer/ajax/ajax.php?a=' + action,
|
||||
dataType: 'json',
|
||||
success: function (response) {
|
||||
if (response.success) {
|
||||
$('#contentblock').load("content/info.php");
|
||||
}
|
||||
}
|
||||
});
|
||||
});
|
||||
|
||||
|
||||
// Function to download log files
|
||||
function downloadLogs () {
|
||||
var strUrl = '<?php echo NASHOST;?>/cgi-bin/qpkg/RoonServer/ajax/ajax.php?a=downloadlogs';
|
||||
var dlLink = "";
|
||||
var linkrcvd = false;
|
||||
$.ajax({
|
||||
url: strUrl,
|
||||
async: false,
|
||||
success: function (data) {
|
||||
dlLink = data;
|
||||
linkrcvd = true;
|
||||
}
|
||||
});
|
||||
|
||||
|
||||
|
||||
// if download link received
|
||||
if ( linkrcvd ) {
|
||||
var ifrm = document.getElementById("frame");
|
||||
ifrm.src = dlLink;
|
||||
|
||||
MODAL_LOGFILES_CHECK_DOWNLOAD_FOLDER = '<?php echo str_replace("'", "\'", localize("MODAL_LOGFILES_CHECK_DOWNLOAD_FOLDER"));?>';
|
||||
SuccessAni('#download-area', MODAL_LOGFILES_CHECK_DOWNLOAD_FOLDER);
|
||||
}
|
||||
}
|
||||
|
||||
function SuccessAni(targetDiv, checkmarkText) {
|
||||
if (targetDiv == null) {targetDiv = 'modal-body'};
|
||||
var checkani = "<svg class=\"checkmark\" xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 52 52\"><circle class=\"checkmark__circle\" cx=\"26\" cy=\"26\" r=\"25\" fill=\"none\"/><path class=\"checkmark__check\" fill=\"none\" d=\"M14.1 27.2l7.1 7.2 16.7-16.8\"/></svg>";
|
||||
|
||||
$(targetDiv).html(checkani + '<div class="text-center">' + checkmarkText + '</div>');
|
||||
|
||||
setTimeout(function() {
|
||||
$('#modal').modal('hide');
|
||||
}, 4000);
|
||||
}
|
||||
|
||||
|
||||
// Reinstall Roon Server
|
||||
function reinstall () {
|
||||
$('#download-area').html(
|
||||
'<br><div class="fa-4x text-center" style="text-align: center;"><svg id="loading" width="70" height="70"></svg></div>' +
|
||||
'<div class="text-center"><b><?php echo str_replace("'", "\'", localize("MODAL_REINSTALL_LOADING")); ?></b></div>'
|
||||
);
|
||||
|
||||
var s = Snap("#loading");
|
||||
|
||||
var svgSize = 70;
|
||||
var RoonCircle = s.circle(svgSize / 2, svgSize / 2, svgSize / 2);
|
||||
|
||||
var maskRect = s.paper.rect(0, 0, svgSize / 2, svgSize);
|
||||
maskRect.attr({
|
||||
fill: "#fff"
|
||||
});
|
||||
RoonCircle.attr({
|
||||
mask: maskRect
|
||||
});
|
||||
|
||||
linespacing = svgSize / 100 * 5;
|
||||
centerpoint = svgSize / 2;
|
||||
linew = svgSize / 100 * 5;
|
||||
line1h = svgSize / 100 * 90;
|
||||
line2h = svgSize / 100 * 40;
|
||||
line3h = svgSize / 100 * 60;
|
||||
line4h = svgSize / 100 * 22;
|
||||
var line1 = s.rect(centerpoint + (0 * (linew + linespacing)) + linespacing, centerpoint - (line1h / 2), linew, line1h);
|
||||
var line2 = s.rect(centerpoint + (1 * (linew + linespacing)) + linespacing, centerpoint - (line2h / 2), linew, line2h);
|
||||
var line3 = s.rect(centerpoint + (2 * (linew + linespacing)) + linespacing, centerpoint - (line3h / 2), linew, line3h);
|
||||
var line4 = s.rect(centerpoint + (3 * (linew + linespacing)) + linespacing, centerpoint - (line4h / 2), linew, line4h);
|
||||
|
||||
function cw($c_height) {
|
||||
|
||||
var $arr = new Array();
|
||||
$arr['y'] = (centerpoint-($c_height / 2) / 100 * svgSize);
|
||||
$arr['height'] = $c_height / 100 * svgSize;
|
||||
return $arr;
|
||||
|
||||
}
|
||||
|
||||
function roonAnimate() {
|
||||
|
||||
|
||||
line1.animate(
|
||||
cw(52), 200, function () {
|
||||
this.animate(
|
||||
cw(96), 200, function () {
|
||||
this.animate(
|
||||
cw(80), 240, function () {
|
||||
this.animate(
|
||||
cw(86), 200, function () {
|
||||
this.animate(
|
||||
cw(92), 40, function () {
|
||||
this.animate(
|
||||
cw(86), 40, function () {
|
||||
this.animate(
|
||||
{height: svgSize / 100 * 90, y: svgSize / 100 * 5}, 40
|
||||
)
|
||||
}
|
||||
)
|
||||
}
|
||||
)
|
||||
}
|
||||
)
|
||||
}
|
||||
)
|
||||
}
|
||||
)
|
||||
}
|
||||
);
|
||||
|
||||
line2.animate(
|
||||
cw(76), 280, function () {
|
||||
this.animate(
|
||||
cw(30), 200, function () {
|
||||
this.animate(
|
||||
cw(50), 240, function () {
|
||||
this.animate(
|
||||
cw(55), 120, function () {
|
||||
this.animate(
|
||||
cw(57), 40, function () {
|
||||
this.animate(
|
||||
cw(40), 40, function () {
|
||||
this.animate(
|
||||
{height: svgSize / 100 * 60, y: svgSize / 100 * 20}, 40
|
||||
)
|
||||
}
|
||||
)
|
||||
})
|
||||
})
|
||||
})
|
||||
})
|
||||
});
|
||||
|
||||
line3.animate(
|
||||
cw(63), 120, function () { // 3 frames
|
||||
this.animate(
|
||||
cw(30), 240, function () { // 6 frames
|
||||
this.animate(
|
||||
cw(70), 200, function () { //5 frames
|
||||
this.animate(
|
||||
cw(54), 240, function () { // 6 frames
|
||||
this.animate(
|
||||
cw(56), 40, function () { //1 frame
|
||||
this.animate(
|
||||
cw(42), 40, function () { // 1 frame
|
||||
this.animate(
|
||||
cw(58), 40), function () {
|
||||
this.animate(
|
||||
{height: svgSize / 100 * 22, y: svgSize / 100 * 56}, 40
|
||||
)
|
||||
}
|
||||
})
|
||||
})
|
||||
})
|
||||
})
|
||||
})
|
||||
});
|
||||
|
||||
line4.animate(
|
||||
cw(14), 200, function () {
|
||||
this.animate(
|
||||
cw(26), 200, function () {
|
||||
this.animate(
|
||||
cw(8), 240, function () {
|
||||
this.animate(
|
||||
cw(20), 200, function () {
|
||||
this.animate(
|
||||
cw(62), 40, function () {
|
||||
this.animate(
|
||||
cw(24), 40, function () {
|
||||
this.animate(
|
||||
{height: svgSize / 100 * 40, y: svgSize / 100 * 30}, 40
|
||||
)
|
||||
}
|
||||
)
|
||||
}
|
||||
)
|
||||
}
|
||||
)
|
||||
}
|
||||
)
|
||||
}
|
||||
)
|
||||
}
|
||||
);
|
||||
}
|
||||
|
||||
roonAnimate();
|
||||
setInterval(roonAnimate, 1000);
|
||||
|
||||
$.ajax({
|
||||
url: '<?php echo NASHOST;?>/cgi-bin/qpkg/RoonServer/ajax/ajax.php?a=redownload',
|
||||
success: function () {
|
||||
label_ReinstallDone = '<?php echo str_replace("'", "\'", localize("MODAL_REINSTALL_DONE")); ?>';
|
||||
SuccessAni('#download-area', label_ReinstallDone);
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
$('.reinstall').click(function () {
|
||||
$.ajax({
|
||||
type: "POST",
|
||||
url: "ajax/ajax.php?a=reinstall"
|
||||
});
|
||||
});
|
||||
|
||||
// check if selection is valid and enable/disable button
|
||||
|
||||
// Save Database Path
|
||||
function save_location() {
|
||||
var path = newdbpath;
|
||||
var action = 'updateformfield';
|
||||
var strUrl = '<?php echo NASHOST;?>/cgi-bin/qpkg/RoonServer/ajax/ajax.php?a=' + action + '&t=' + path;
|
||||
|
||||
$.ajax({
|
||||
url: strUrl,
|
||||
dataType: 'json'
|
||||
});
|
||||
}
|
||||
|
||||
function db_save_button() {
|
||||
if (!dbexist) {
|
||||
save_location();
|
||||
btn_LocationSaved = '<?php echo str_replace("'", "\'", localize("MODAL_SETUP_BTN_LOCATION_SAVED")); ?>';
|
||||
SuccessAni('#modal-body', btn_LocationSaved);
|
||||
dbexist = true;
|
||||
restartRoonServerAndRefresh();
|
||||
}
|
||||
else if (newdbpath != currentPath) {
|
||||
$('#modal-content').html('<div class="modal-header">' +
|
||||
'<h4 class="modal-title"><?php echo str_replace("'", "\'", localize("MODAL_SETUP_RESTART_HEADLINE")); ?></h4>' +
|
||||
'<button type="button" class="close" data-dismiss="modal" aria-hidden="true">×</button>' +
|
||||
'</div>' +
|
||||
'<div id="modal-body" class="modal-body">' +
|
||||
'<?php echo str_replace("'", "\'", localize("MODAL_SETUP_RESTART_TEXT")); ?>' +
|
||||
'<a id="saveDBrestartRoonServer" href="#" onclick="saveAndRestart()">' +
|
||||
'<div class="fa-4x text-center" style="text-align: center;">' +
|
||||
|
||||
'<span class="fa-layers fa-fw">' +
|
||||
'<i class="fas fa-circle"></i>' +
|
||||
'<i class="fa-inverse fas fa-redo-alt faa-shake animated" data-fa-transform="shrink-8"></i>' +
|
||||
'</span>' +
|
||||
'</div>' +
|
||||
'<div class="text-center">' +
|
||||
'<?php echo str_replace("'", "\'", localize("MODAL_SETUP_RESTART_ROONSERVER")); ?>' +
|
||||
'</div>' +
|
||||
'</a>' +
|
||||
'</div>');
|
||||
}
|
||||
else {
|
||||
$('#modal-content').html('<div class="modal-header">' +
|
||||
'<h4 class="modal-title"><?php echo str_replace("'", "\'", localize("MODAL_SETUP_RESTART_SAME_PATH")); ?></h4>' +
|
||||
'<button type="button" class="close" data-dismiss="modal" aria-hidden="true">×</button>' +
|
||||
'</div>' +
|
||||
'<div id="modal-body" class="modal-body">' +
|
||||
'<?php echo str_replace("'", "\'", localize("MODAL_SETUP_RESTART_SAME_PATH_TEXT")); ?>' +
|
||||
'<a id="restartRoonServer" href="#" data-dismiss="modal">' +
|
||||
'<div class="fa-4x text-center" style="text-align: center;">' +
|
||||
'<span class="fa-layers fa-fw">' +
|
||||
'<i class="fas fa-exclamation-circle faa-shake animated"></i>' +
|
||||
'</span>' +
|
||||
'</div>' +
|
||||
'<div class="text-center">' +
|
||||
'<?php echo str_replace("'", "\'", localize("BTN_CLOSE")); ?>' +
|
||||
'</div>' +
|
||||
'</a>' +
|
||||
'</div>');
|
||||
}
|
||||
}
|
||||
|
||||
function selectStorageSuccess() {
|
||||
|
||||
btn_LocationSaved = '<?php echo str_replace("'", "\'", localize("MODAL_SETUP_BTN_LOCATION_SAVED")); ?>';
|
||||
SuccessAni('#modal-body', btn_LocationSaved);
|
||||
}
|
||||
|
||||
function saveAndRestart() {
|
||||
save_location();
|
||||
restartRoonServer();
|
||||
btn_LocationSaved = '<?php echo str_replace("'", "\'", localize("MODAL_SETUP_BTN_LOCATION_SAVED")); ?>';
|
||||
SuccessAni('#modal-body', btn_LocationSaved);
|
||||
|
||||
}
|
||||
|
||||
function restartRoonServer() {
|
||||
$.ajax({
|
||||
url: '<?php echo NASHOST;?>/cgi-bin/qpkg/RoonServer/ajax/ajax.php?a=restartRoonServer'
|
||||
});
|
||||
}
|
||||
|
||||
function restartRoonServerAndRefresh() {
|
||||
|
||||
$.ajax({
|
||||
url: '<?php echo NASHOST;?>/cgi-bin/qpkg/RoonServer/ajax/ajax.php?a=restartRoonServer'
|
||||
});
|
||||
|
||||
$('#restartRoonServerAudioPanel').html('');
|
||||
|
||||
setTimeout(function() {
|
||||
$('#contentblock').load("content/info.php");
|
||||
}, 2000);
|
||||
|
||||
}
|
||||
</script>
|
||||
</body>
|
||||
|
||||
</html>
|
||||
Reference in New Issue
Block a user