mirror of
https://github.com/koush/scrypted.git
synced 2026-05-04 21:30:30 +01:00
server/core: support built in server updates
This commit is contained in:
4
plugins/core/package-lock.json
generated
4
plugins/core/package-lock.json
generated
@@ -1,12 +1,12 @@
|
||||
{
|
||||
"name": "@scrypted/core",
|
||||
"version": "0.1.128",
|
||||
"version": "0.1.129",
|
||||
"lockfileVersion": 2,
|
||||
"requires": true,
|
||||
"packages": {
|
||||
"": {
|
||||
"name": "@scrypted/core",
|
||||
"version": "0.1.128",
|
||||
"version": "0.1.129",
|
||||
"license": "Apache-2.0",
|
||||
"dependencies": {
|
||||
"@scrypted/common": "file:../../common",
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@scrypted/core",
|
||||
"version": "0.1.128",
|
||||
"version": "0.1.129",
|
||||
"description": "Scrypted Core plugin. Provides the UI, websocket, and engine.io APIs.",
|
||||
"author": "Scrypted",
|
||||
"license": "Apache-2.0",
|
||||
|
||||
@@ -149,20 +149,31 @@ export default {
|
||||
getComponentViewPath,
|
||||
async checkUpdateAvailable() {
|
||||
await this.$connectingScrypted;
|
||||
const info = await this.$scrypted.systemManager.getComponent("info");
|
||||
const version = await info.getVersion();
|
||||
this.currentVersion = version;
|
||||
const { updateAvailable } = await checkUpdate(
|
||||
"@scrypted/server",
|
||||
version
|
||||
const serviceControl = await this.$scrypted.systemManager.getComponent(
|
||||
"service-control"
|
||||
);
|
||||
this.updateAvailable = updateAvailable;
|
||||
if (updateAvailable) {
|
||||
try {
|
||||
this.updateAvailable = await serviceControl.getUpdateAvailable();
|
||||
}
|
||||
catch (e) {
|
||||
// old scrypted servers dont support this call, or it may be unimplemented
|
||||
// in which case fall back and determine what the install type is.
|
||||
const info = await this.$scrypted.systemManager.getComponent("info");
|
||||
const version = await info.getVersion();
|
||||
this.currentVersion = version;
|
||||
const { updateAvailable } = await checkUpdate(
|
||||
"@scrypted/server",
|
||||
version
|
||||
);
|
||||
this.updateAvailable = updateAvailable;
|
||||
}
|
||||
|
||||
if (this.updateAvailable) {
|
||||
const logger = this.$scrypted.deviceManager.getDeviceLogger();
|
||||
const u = new URL(window.location)
|
||||
u.hash = "#/component/settings";
|
||||
logger.clearAlerts();
|
||||
logger.a(`Scrypted Server update available: ${updateAvailable}. ${u}`);
|
||||
logger.a(`Scrypted Server update available: ${this.updateAvailable}. ${u}`);
|
||||
}
|
||||
},
|
||||
filterComponents: function (category) {
|
||||
|
||||
@@ -130,17 +130,28 @@ export default {
|
||||
const info = await this.$scrypted.systemManager.getComponent("info");
|
||||
const version = await info.getVersion();
|
||||
this.currentVersion = version;
|
||||
const { updateAvailable } = await checkUpdate(
|
||||
"@scrypted/server",
|
||||
version
|
||||
|
||||
const serviceControl = await this.$scrypted.systemManager.getComponent(
|
||||
"service-control"
|
||||
);
|
||||
this.updateAvailable = updateAvailable;
|
||||
try {
|
||||
this.updateAvailable = await serviceControl.getUpdateAvailable();
|
||||
}
|
||||
catch (e) {
|
||||
// old scrypted servers dont support this call, or it may be unimplemented
|
||||
// in which case fall back and determine what the install type is.
|
||||
const { updateAvailable } = await checkUpdate(
|
||||
"@scrypted/server",
|
||||
version
|
||||
);
|
||||
this.updateAvailable = updateAvailable;
|
||||
}
|
||||
},
|
||||
async loadEnv() {
|
||||
const info = await this.$scrypted.systemManager.getComponent("info");
|
||||
const env = await info.getScryptedEnv();
|
||||
this.showRestart = !!env.SCRYPTED_CAN_RESTART;
|
||||
this.canUpdate = !!env.SCRYPTED_NPM_SERVE || !!env.SCRYPTED_WEBHOOK_UPDATE;
|
||||
this.canUpdate = !!env.SCRYPTED_NPM_SERVE || !!env.SCRYPTED_WEBHOOK_UPDATE || !!env.SCRYPTED_CAN_UPDATE;
|
||||
},
|
||||
async doRestart() {
|
||||
this.restartStatus = "Restarting...";
|
||||
|
||||
4
server/package-lock.json
generated
4
server/package-lock.json
generated
@@ -1,12 +1,12 @@
|
||||
{
|
||||
"name": "@scrypted/server",
|
||||
"version": "0.24.0",
|
||||
"version": "0.29.0",
|
||||
"lockfileVersion": 3,
|
||||
"requires": true,
|
||||
"packages": {
|
||||
"": {
|
||||
"name": "@scrypted/server",
|
||||
"version": "0.24.0",
|
||||
"version": "0.29.0",
|
||||
"license": "ISC",
|
||||
"dependencies": {
|
||||
"@mapbox/node-pre-gyp": "^1.0.10",
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@scrypted/server",
|
||||
"version": "0.24.0",
|
||||
"version": "0.29.0",
|
||||
"description": "",
|
||||
"dependencies": {
|
||||
"@mapbox/node-pre-gyp": "^1.0.10",
|
||||
|
||||
@@ -83,11 +83,12 @@ export class ScryptedRuntime extends PluginHttp<HttpPluginData> {
|
||||
},
|
||||
});
|
||||
pluginComponent = new PluginComponent(this);
|
||||
servieControl = new ServiceControl(this);
|
||||
serviceControl = new ServiceControl(this);
|
||||
alerts = new Alerts(this);
|
||||
corsControl = new CORSControl(this);
|
||||
addressSettings = new AddressSettings(this);
|
||||
usersService = new UsersService(this);
|
||||
info = new Info();
|
||||
pluginHosts = new Map<string, RuntimeHost>();
|
||||
|
||||
constructor(public mainFilename: string, datastore: Level, insecure: http.Server, secure: https.Server, app: express.Application) {
|
||||
@@ -332,11 +333,11 @@ export class ScryptedRuntime extends PluginHttp<HttpPluginData> {
|
||||
case 'SCRYPTED_SECURE_PORT':
|
||||
return SCRYPTED_SECURE_PORT;
|
||||
case 'info':
|
||||
return new Info();
|
||||
return this.info;
|
||||
case 'plugins':
|
||||
return this.pluginComponent;
|
||||
case 'service-control':
|
||||
return this.servieControl;
|
||||
return this.serviceControl;
|
||||
case 'logger':
|
||||
return this.logger;
|
||||
case 'alerts':
|
||||
|
||||
@@ -325,7 +325,7 @@ async function start(mainFilename: string, options?: {
|
||||
for (const address of getHostAddresses(true, true)) {
|
||||
console.log(`Scrypted Server (Remote) : https://${address}:${SCRYPTED_SECURE_PORT}/`);
|
||||
}
|
||||
console.log(`Version: : ${await new Info().getVersion()}`);
|
||||
console.log(`Version: : ${await scrypted.info.getVersion()}`);
|
||||
console.log('#######################################################');
|
||||
console.log('Scrypted insecure http service port:', SCRYPTED_INSECURE_PORT);
|
||||
console.log('Ports can be changed with environment variables.')
|
||||
|
||||
@@ -15,6 +15,10 @@ export class ServiceControl {
|
||||
process.exit();
|
||||
}
|
||||
|
||||
async getUpdateAvailable(): Promise<string> {
|
||||
throw new Error('getUpdateAvailable is not implemented. Updates will come out of band through Docker or npm.');
|
||||
}
|
||||
|
||||
async update() {
|
||||
const webhookUpdate = process.env.SCRYPTED_WEBHOOK_UPDATE;
|
||||
if (webhookUpdate) {
|
||||
|
||||
Reference in New Issue
Block a user