mirror of
https://github.com/overte-org/overte.git
synced 2025-08-07 05:09:23 +02:00
Merge pull request #8680 from Atlante45/console
Backup old content on update
This commit is contained in:
commit
e165c0515a
8 changed files with 295 additions and 24 deletions
172
server-console/src/content-update.css
Normal file
172
server-console/src/content-update.css
Normal file
|
@ -0,0 +1,172 @@
|
||||||
|
@font-face {
|
||||||
|
font-family: 'Raleway';
|
||||||
|
src: url('vendor/Raleway/Raleway-Regular.ttf');
|
||||||
|
font-weight: normal;
|
||||||
|
font-style: normal;
|
||||||
|
}
|
||||||
|
@font-face {
|
||||||
|
font-family: 'Raleway';
|
||||||
|
src: url('vendor/Raleway/Raleway-ExtraLight.ttf');
|
||||||
|
font-weight: 200;
|
||||||
|
font-style: normal;
|
||||||
|
}
|
||||||
|
@font-face {
|
||||||
|
font-family: 'Raleway';
|
||||||
|
src: url('vendor/Raleway/Raleway-SemiBold.ttf');
|
||||||
|
font-weight: bold;
|
||||||
|
font-style: normal;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
* {
|
||||||
|
font-family: "Raleway", "Open Sans", Arial, Helvetica, sans-serif;
|
||||||
|
line-height: 130%;
|
||||||
|
}
|
||||||
|
|
||||||
|
body {
|
||||||
|
margin: 0;
|
||||||
|
padding: 0;
|
||||||
|
color: #808785;
|
||||||
|
margin: 0 auto;
|
||||||
|
text-align: left;
|
||||||
|
font-size: 13.5pt;
|
||||||
|
-webkit-touch-callout: none; -webkit-user-select: none;
|
||||||
|
cursor: default;
|
||||||
|
overflow: hidden;
|
||||||
|
font-variant-numeric: lining-nums;
|
||||||
|
-moz-font-feature-settings: "lnum";
|
||||||
|
-webkit-font-feature-settings: "lnum";
|
||||||
|
font-feature-settings: "lnum";
|
||||||
|
}
|
||||||
|
|
||||||
|
.selectable {
|
||||||
|
-webkit-touch-callout: text;
|
||||||
|
-webkit-user-select: text;
|
||||||
|
cursor: text;
|
||||||
|
}
|
||||||
|
|
||||||
|
a:link,
|
||||||
|
a:visited,
|
||||||
|
a:hover,
|
||||||
|
a:active {
|
||||||
|
color: #B4B4B4;
|
||||||
|
}
|
||||||
|
|
||||||
|
a:hover {
|
||||||
|
color: #2D88A4;
|
||||||
|
}
|
||||||
|
|
||||||
|
.header{
|
||||||
|
width: 95%;
|
||||||
|
left: 2.5%
|
||||||
|
}
|
||||||
|
.colmask{
|
||||||
|
width: 95%;
|
||||||
|
left: 2.5%
|
||||||
|
}
|
||||||
|
.colmid{ right: 25% }
|
||||||
|
.colin{ right: 25% }
|
||||||
|
.colleft{ right: 25% }
|
||||||
|
.col1{
|
||||||
|
width: 23%;
|
||||||
|
left: 101%
|
||||||
|
}
|
||||||
|
.col2{
|
||||||
|
width: 23%;
|
||||||
|
left: 53%
|
||||||
|
}
|
||||||
|
.col3{
|
||||||
|
width: 23%;
|
||||||
|
left: 80%
|
||||||
|
}
|
||||||
|
.col4{
|
||||||
|
width: 23%;
|
||||||
|
left: 82%
|
||||||
|
}
|
||||||
|
.footer{
|
||||||
|
width: 95%;
|
||||||
|
left: 2.5%
|
||||||
|
}
|
||||||
|
.header{
|
||||||
|
clear: both;
|
||||||
|
float: left;
|
||||||
|
position: relative;
|
||||||
|
border-bottom: #000 1px solid;
|
||||||
|
background-color: #b4d2f7
|
||||||
|
}
|
||||||
|
.colmask{
|
||||||
|
clear: both;
|
||||||
|
float: left;
|
||||||
|
overflow: hidden;
|
||||||
|
position: relative;
|
||||||
|
|
||||||
|
}
|
||||||
|
.colmid{
|
||||||
|
float: left;
|
||||||
|
width: 100%;
|
||||||
|
position: relative;
|
||||||
|
|
||||||
|
}
|
||||||
|
.colin{
|
||||||
|
float: left;
|
||||||
|
width: 100%;
|
||||||
|
position: relative;
|
||||||
|
|
||||||
|
}
|
||||||
|
.colleft{
|
||||||
|
float: left;
|
||||||
|
width: 100%;
|
||||||
|
position: relative;
|
||||||
|
|
||||||
|
}
|
||||||
|
.col1{
|
||||||
|
padding: 0px 0px 1em 0px;
|
||||||
|
overflow: hidden;
|
||||||
|
float: left;
|
||||||
|
position: relative;
|
||||||
|
|
||||||
|
}
|
||||||
|
.col2{
|
||||||
|
padding: 0px 0px 1em 0px;
|
||||||
|
overflow: hidden;
|
||||||
|
float: left;
|
||||||
|
position: relative;
|
||||||
|
|
||||||
|
}
|
||||||
|
.col3{
|
||||||
|
padding: 0px 0px 1em 0px;
|
||||||
|
overflow: hidden;
|
||||||
|
float: left;
|
||||||
|
position: relative;
|
||||||
|
|
||||||
|
}
|
||||||
|
.col4{
|
||||||
|
padding: 0px 0px 1em 0px;
|
||||||
|
overflow: hidden;
|
||||||
|
float: left;
|
||||||
|
position: relative;
|
||||||
|
|
||||||
|
}
|
||||||
|
.footer{
|
||||||
|
clear: both;
|
||||||
|
float: left;
|
||||||
|
position: relative;
|
||||||
|
padding-top: 8px;
|
||||||
|
border-top: #000 1px solid;
|
||||||
|
|
||||||
|
}
|
||||||
|
.bottom{
|
||||||
|
clear: both;
|
||||||
|
width: 100%;
|
||||||
|
float: left;
|
||||||
|
position: relative;
|
||||||
|
|
||||||
|
}
|
||||||
|
body {
|
||||||
|
border-width: 0px;
|
||||||
|
padding: 0px;
|
||||||
|
margin: 0px;
|
||||||
|
font-size: 90%;
|
||||||
|
width: 100%;
|
||||||
|
min-width: 600px;
|
||||||
|
}
|
53
server-console/src/content-update.html
Normal file
53
server-console/src/content-update.html
Normal file
|
@ -0,0 +1,53 @@
|
||||||
|
<!DOCTYPE html>
|
||||||
|
<html>
|
||||||
|
<head>
|
||||||
|
<title>Server Backup</title>
|
||||||
|
<script src="content-update.js"></script>
|
||||||
|
<link rel="stylesheet" type="text/css" href="content-update.css"></link>
|
||||||
|
</head>
|
||||||
|
<body onload="ready()">
|
||||||
|
<div class="colmask">
|
||||||
|
<h3>We backed up your old Sandbox content, just in case.</h3>
|
||||||
|
<p><b>To restore it, follow these steps:</b>
|
||||||
|
|
||||||
|
<div class="colmid">
|
||||||
|
<div class="colin">
|
||||||
|
|
||||||
|
<div class="colleft">
|
||||||
|
|
||||||
|
<!-- I know the content of the columns are swapped -->
|
||||||
|
<!-- If you manage to fix the CSS, you get to swap it back! -->
|
||||||
|
<div class="col1">
|
||||||
|
<img src="images/step2.jpg" alt="Step 2">
|
||||||
|
<p><b>2.</b> Go to your backup directory:
|
||||||
|
<span id="directory"></span>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="col2">
|
||||||
|
<img src="images/step1.jpg" alt="Step 1">
|
||||||
|
<p><b>1.</b> Stop your Sandbox server.
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="col3">
|
||||||
|
<img src="images/step3.jpg" alt="Step 3">
|
||||||
|
<p><b>3.</b> Copy the backed up content and paste it into the parent directory.
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="col4">
|
||||||
|
<img src="images/step4.jpg" alt="Step 4">
|
||||||
|
<p><b>4.</b> Restart your Sandbox server.
|
||||||
|
</div>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="footer">
|
||||||
|
|
||||||
|
<p>For more information about managing your high Fidelity Sandbox Server, check out our docs: <a href="https://wiki.highfidelity.com/wiki/Sandbox" target="_blank">wiki.highfidelity.com/wiki/Sandbox</a>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</body>
|
||||||
|
</html>
|
12
server-console/src/content-update.js
Normal file
12
server-console/src/content-update.js
Normal file
|
@ -0,0 +1,12 @@
|
||||||
|
function ready() {
|
||||||
|
console.log("Ready");
|
||||||
|
|
||||||
|
const electron = require('electron');
|
||||||
|
window.$ = require('./vendor/jquery/jquery-2.1.4.min.js');
|
||||||
|
|
||||||
|
electron.ipcRenderer.on('update', function(event, message) {
|
||||||
|
$('#directory').html(message);
|
||||||
|
});
|
||||||
|
|
||||||
|
electron.ipcRenderer.send('ready');
|
||||||
|
}
|
BIN
server-console/src/images/step1.jpg
Normal file
BIN
server-console/src/images/step1.jpg
Normal file
Binary file not shown.
After Width: | Height: | Size: 10 KiB |
BIN
server-console/src/images/step2.jpg
Normal file
BIN
server-console/src/images/step2.jpg
Normal file
Binary file not shown.
After Width: | Height: | Size: 3.3 KiB |
BIN
server-console/src/images/step3.jpg
Normal file
BIN
server-console/src/images/step3.jpg
Normal file
Binary file not shown.
After Width: | Height: | Size: 6.2 KiB |
BIN
server-console/src/images/step4.jpg
Normal file
BIN
server-console/src/images/step4.jpg
Normal file
Binary file not shown.
After Width: | Height: | Size: 9.8 KiB |
|
@ -408,6 +408,13 @@ var labels = {
|
||||||
logWindow.open();
|
logWindow.open();
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
restoreBackup: {
|
||||||
|
label: 'Restore Backup Instructions',
|
||||||
|
click: function() {
|
||||||
|
var folder = getRootHifiDataDirectory() + "/Server Backup";
|
||||||
|
openBackupInstructions(folder);
|
||||||
|
}
|
||||||
|
},
|
||||||
share: {
|
share: {
|
||||||
label: 'Share',
|
label: 'Share',
|
||||||
click: function() {
|
click: function() {
|
||||||
|
@ -443,6 +450,7 @@ function buildMenuArray(serverState) {
|
||||||
menuArray.push(labels.stopServer);
|
menuArray.push(labels.stopServer);
|
||||||
menuArray.push(labels.settings);
|
menuArray.push(labels.settings);
|
||||||
menuArray.push(labels.viewLogs);
|
menuArray.push(labels.viewLogs);
|
||||||
|
menuArray.push(labels.restoreBackup);
|
||||||
menuArray.push(separator);
|
menuArray.push(separator);
|
||||||
menuArray.push(labels.share);
|
menuArray.push(labels.share);
|
||||||
menuArray.push(separator);
|
menuArray.push(separator);
|
||||||
|
@ -488,27 +496,62 @@ function updateTrayMenu(serverState) {
|
||||||
|
|
||||||
const httpStatusPort = 60332;
|
const httpStatusPort = 60332;
|
||||||
|
|
||||||
function deleteResourceDirectories() {
|
function backupResourceDirectories(folder) {
|
||||||
const dsResourceDirectory = getDomainServerClientResourcesDirectory();
|
|
||||||
try {
|
try {
|
||||||
fs.removeSync(dsResourceDirectory);
|
fs.mkdirSync(folder);
|
||||||
console.log("Deleted directory " + dsResourceDirectory);
|
console.log("Created directory " + folder);
|
||||||
} catch (e) {
|
|
||||||
console.log(e);
|
|
||||||
}
|
var dsBackup = path.join(folder, '/domain-server');
|
||||||
const acResourceDirectory = getAssignmentClientResourcesDirectory();
|
fs.renameSync(getDomainServerClientResourcesDirectory(), dsBackup);
|
||||||
try {
|
console.log("Moved directory " + getDomainServerClientResourcesDirectory());
|
||||||
fs.removeSync(acResourceDirectory);
|
console.log("to " + dsBackup);
|
||||||
console.log("Deleted directory " + acResourceDirectory);
|
|
||||||
|
var acBackup = path.join(folder, '/assignment-client');
|
||||||
|
fs.renameSync(getAssignmentClientResourcesDirectory(), acBackup);
|
||||||
|
console.log("Moved directory " + getDomainServerClientResourcesDirectory());
|
||||||
|
console.log("to " + acBackup);
|
||||||
|
return true;
|
||||||
} catch (e) {
|
} catch (e) {
|
||||||
console.log(e);
|
console.log(e);
|
||||||
|
return false;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
function deleteResourceDirectoriesAndRestart() {
|
function openBackupInstructions(folder) {
|
||||||
|
// Explain user how to restore server
|
||||||
|
var window = new BrowserWindow({
|
||||||
|
icon: appIcon,
|
||||||
|
width: 800,
|
||||||
|
height: 520,
|
||||||
|
});
|
||||||
|
window.loadURL('file://' + __dirname + '/content-update.html');
|
||||||
|
if (!debug) {
|
||||||
|
window.setMenu(null);
|
||||||
|
}
|
||||||
|
window.show();
|
||||||
|
|
||||||
|
electron.ipcMain.on('ready', function() {
|
||||||
|
console.log("got ready");
|
||||||
|
window.webContents.send('update', folder);
|
||||||
|
});
|
||||||
|
|
||||||
|
}
|
||||||
|
function backupResourceDirectoriesAndRestart() {
|
||||||
homeServer.stop();
|
homeServer.stop();
|
||||||
deleteResourceDirectories();
|
|
||||||
maybeInstallDefaultContentSet(onContentLoaded);
|
var folder = getRootHifiDataDirectory() + "/Server Backup - " + Date.now();
|
||||||
|
if (backupResourceDirectories(folder)) {
|
||||||
|
maybeInstallDefaultContentSet(onContentLoaded);
|
||||||
|
openBackupInstructions(folder);
|
||||||
|
} else {
|
||||||
|
dialog.showMessageBox({
|
||||||
|
type: 'warning',
|
||||||
|
buttons: ['Ok'],
|
||||||
|
title: 'Update Error',
|
||||||
|
message: 'There was an error updating the content, aborting.'
|
||||||
|
}, function() {});
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
function checkNewContent() {
|
function checkNewContent() {
|
||||||
|
@ -537,16 +580,7 @@ function checkNewContent() {
|
||||||
message: 'A newer version of the home content set is available.\nDo you wish to update?'
|
message: 'A newer version of the home content set is available.\nDo you wish to update?'
|
||||||
}, function(idx) {
|
}, function(idx) {
|
||||||
if (idx === 0) {
|
if (idx === 0) {
|
||||||
dialog.showMessageBox({
|
backupResourceDirectoriesAndRestart();
|
||||||
type: 'question',
|
|
||||||
buttons: ['Yes', 'No'],
|
|
||||||
title: 'Are you sure?',
|
|
||||||
message: 'This action will delete your current sandbox content.\nDo you wish to continue?'
|
|
||||||
}, function(idx) {
|
|
||||||
if (idx === 0 && homeServer) {
|
|
||||||
deleteResourceDirectoriesAndRestart();
|
|
||||||
}
|
|
||||||
});
|
|
||||||
} else {
|
} else {
|
||||||
// They don't want to update, mark content set as current
|
// They don't want to update, mark content set as current
|
||||||
userConfig.set('homeContentLastModified', new Date());
|
userConfig.set('homeContentLastModified', new Date());
|
||||||
|
|
Loading…
Reference in a new issue