first changes to docker

This commit is contained in:
jt-chris
2026-04-10 02:25:36 +02:00
parent 1c94d0d810
commit 615cf26bdd
114 changed files with 65043 additions and 0 deletions

View File

@@ -0,0 +1,408 @@
<?php
if (isset($_COOKIE['NAS_USER']) && isset($_COOKIE['NAS_SID'])) {
$context = stream_context_create(array('ssl'=>array(
'verify_peer' => false,
'verify_peer_name' => false
)));
libxml_set_streams_context($context);
$url = (isset($_SERVER['HTTPS']) ? "https" : "http") . "://127.0.0.1:$_SERVER[SERVER_PORT]/cgi-bin/authLogin.cgi?sid=".$_COOKIE['NAS_SID'];
$xml = simplexml_load_file($url);
unset($context);
if ( (false === $xml) || !isset($xml->authPassed) || !isset($xml->username) || !isset($xml->isAdmin) ) {
die('Unable to retrieve xml authentication info from your qnap device.');
}
if ( !(bool)(int)$xml->authPassed[0] || !(bool)(int)$xml->isAdmin[0] || (string)$xml->username[0] !== $_COOKIE['NAS_USER']) {
die('No authentic session id of an admin user!');
}
} else {
die('Not logged in!');
}
$ContributorsManual = array(
array(
'login' => 'RoonLabs',
'avatar_url' => 'https://avatars2.githubusercontent.com/u/15744118?v=4',
'html_url' => 'https://github.com/RoonLabs',
'description' => 'For the continuous support and help.'
),
array(
'login' => 'QNAP',
'avatar_url' => 'https://www.qnap.com/i/images/q_logo.jpg',
'html_url' => 'https://www.qnap.com',
'description' => ''
),
array(
'login' => 'marianoglas',
'avatar_url' => 'https://avatars0.githubusercontent.com/u/5198307?v=4',
'html_url' => 'https://github.com/marianoglas',
'description' => 'For your help with the API and AJAX.'
),
array(
'login' => 'Ignaas Vanden Poel',
'description' => 'Dutch translation'
),
array(
'login' => 'Aldewin Bedoya',
'description' => 'Spanish translation'
)
);
?>
<div class="modal-header">
<h4 id="modal-title" class="modal-title"><?php echo localize("MODAL_ABOUT_HEADLINE"); ?></h4>
<button type="button" class="close" data-dismiss="modal" aria-hidden="true">×</button>
</div>
<div id="modal-body" class="modal-body modal-content">
<div class="container">
<div id="cr">
<img src="img/cr_logo.svg" width="70px" height="70px"><br>
Copyright 2016-<?php echo date("Y"); ?> Christopher Rieke<br>
<a href="https://roononnas.org" target="_blank">roononnas.org</a>
</div><br><br>
<div style="border: 5px; padding: 10px; text-align: center; border-style: dotted;">
<?php echo localize("MODAL_ABOUT_COFFEE"); ?>
<div style="text-align: center; font-size: 50px;">
<span class="fa-layers fa-fw">
<i class="fas fa-coffee" data-fa-transform="shrink-8" data-fa-mask="fas fa-circle"></i>
<i class="far fa-heart" style="color: #000000" data-fa-transform="shrink-12.5w left-0.5 up-0.8"></i>
</span>
</div>
<form action="https://www.paypal.com/cgi-bin/webscr" method="post" target="_blank">
<div style="text-align: center;">
<input type="hidden" name="cmd" value="_s-xclick">
<input type="hidden" name="hosted_button_id" value="27D9FUZPC3JNC">
<input type="hidden" name="lc" value="<?php echo substr(localize("SYSTEM_LOCALE"), -2); ?>">
<input type="image"
src="https://www.paypalobjects.com/<?php echo localize("SYSTEM_LOCALE"); ?>/i/btn/btn_donate_SM.gif"
border="0"
name="submit" alt="PayPal - The safer, easier way to pay online!">
<img alt="" border="0" src="https://www.paypalobjects.com/de_DE/i/scr/pixel.gif" width="1"
height="1">
</form>
</div>
</div>
<br><br>
<div id="about-github" style="background-color: #d7d7d7; padding: 20px; text-align: center;">
<div>
<?php echo localize("MODAL_ABOUT_GITHUB"); ?><br>
<div style="text-align: center; font-size: 50px;">
<i class="fab fa-github-alt"></i>
</div>
</div>
<div class="row" style="justify-content: center; align-items: center; text-align: center;">
<button id="btnFA" class="btn btn-primary"
onclick="window.open('https://github.com/crieke/RoonServer_QNAP_Installer')">
<i class="fab fa-github"></i>
<?php echo localize("MODAL_ABOUT_BTN_GITHUB"); ?><br>
</button>
</div>
</div>
<br><br>
<h4><?php echo localize("MODAL_ABOUT_THANKS"); ?>:</h4><br>
<div id="contrib"></div>
<script>
var manualContrib = JSON.parse('<?php echo json_encode($ContributorsManual)?>');
$(document).ready(function () {
$('#contrib').html('<div class="fa-4x text-center" style="text-align: center;"><svg id="loading" width="70" height="70"></svg></div>');
var repo = 'https://api.github.com/repos/crieke/RoonServer_QNAP_Installer/contributors';
requestJSON(repo, function (json) {
var gitAndManual = json.concat(manualContrib);
var outhtml = '<ul class=\"media-list\">';
jQuery.each(gitAndManual, function (i, obj) {
// else we have a user and we display their info
var username = obj.login;
var aviurl = obj.avatar_url;
var userprofile = obj.html_url;
var contr = obj.contributions;
var descrText = obj.description;
if (aviurl == undefined) {
aviurl = 'assets/identicon.php?string=' + username;
}
outhtml = outhtml + '<li id="contriblist" class="media contriblist">';
outhtml = outhtml + '<span class="pull-left">';
if (userprofile != undefined) {
outhtml = outhtml + '<a href="' + userprofile + '" target="_blank">';
}
outhtml = outhtml + '<img class="media-object d-block" style="max-height: 80px" src="' + aviurl + '" alt="...">';
if (userprofile != undefined) {
outhtml = outhtml + '</a>';
}
outhtml = outhtml + '</span>';
outhtml = outhtml + '<div class="media-body" style="padding-left: 15px; display:inline;">';
if (userprofile != undefined) {
outhtml = outhtml + '<a href="' + userprofile + '" target="_blank">';
}
outhtml = outhtml + '<h4 class="media-heading">' + username + '</h4>';
if (userprofile != undefined) {
outhtml = outhtml + '</a>';
}
if (contr != undefined) {
outhtml = outhtml + '<div style="ghicon"><i class="fab fa-github"></i>-Contributions: ' + contr + '</div>';
}
if (descrText != undefined) {
outhtml = outhtml + '<p> ' + descrText + '</p>';
}
outhtml = outhtml + '</div>';
outhtml = outhtml + '</li>';
}); // end each
outhtml = outhtml + '</ul>';
function outputPageContent() {
$('#contrib').html(outhtml);
} // end outputPageContent()
outputPageContent();
}); // end requestJSON Ajax call
}); // end click event handler
function requestJSON(url, callback) {
$.ajax({
url: url,
complete: function (xhr) {
callback.call(null, xhr.responseJSON);
}
});
}
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);
</script>
<br>
<br>
<br>
<?php
// USED ASSETS AND LIBRARIES
echo localize("MODAL_ABOUT_ASSETS"); ?><br><br>
<ul class="list-group list-group-flush">
<?php $assetList = array(
array(
'assetName' => 'Bootstrap',
'author' => 'Twitter',
'href' => 'https://github.com/twbs/bootstrap',
'license' => 'MIT'
),
array(
'assetName' => 'Popper.js',
'author' => 'Federico Zivolo',
'href' => 'https://github.com/FezVrasta/popper.js',
'license' => 'MIT'
),
array(
'assetName' => 'Jquery',
'author' => 'JS Foundation',
'href' => 'http://jquery.com',
'license' => 'MIT'
),
array(
'assetName' => 'Gijgo Tree',
'author' => 'Atanas Atanasov',
'href' => 'https://github.com/atatanasov/gijgo',
'license' => 'MIT'
),
array(
'assetName' => 'Fontawesome',
'author' => 'Fort Awesome',
'href' => 'https://fontawesome.com',
'license' => 'MIT, CC'
),
array(
'assetName' => 'Fontawesome Animation',
'author' => 'Louis LIN',
'href' => 'https://github.com/l-lin/font-awesome-animation',
'license' => 'MIT'
),
array(
'assetName' => 'Snap.svg',
'author' => 'Adobe',
'href' => 'https://github.com/adobe-webplatform/Snap.svg',
'license' => 'Apache 2.0'
)
);
$usedAssets = '<ul class="media-list">';
foreach ($assetList as $singleAsset) {
$usedAssets = $usedAssets . '<li class="list-group-item"><b><a href="' . $singleAsset['href'] . '" target="_blank">' . $singleAsset['assetName'] . '</a></b> ' . localize("MODAL_ABOUT_BY") . ' ' . $singleAsset['author'] . '<br>' . localize("MODAL_ABOUT_LICENSE") . ': ' . $singleAsset['license'] . '</li>';
}
$usedAssets = $usedAssets . '</ul>';
echo $usedAssets;
?>
</div>
<div class="modal-footer">
<button type="button" class="btn btn-outline-secondary"
data-dismiss="modal"><?php echo localize("BTN_CLOSE"); ?></button>