1 line
2.0 KiB
JavaScript
1 line
2.0 KiB
JavaScript
|
|
import View from"./view.mjs";import sessions from"../../sessions.mjs";import{Module}from"../../packages/_module.mjs";import*as packages from"../../packages/views.mjs";export default class ApplicationUpdateView extends View{route="/update";socket="getUpdateData";_template="update";_methods=["get","post"];async handleGet(e,s){if(config.license.needsSignature)return s.redirect(`${e.baseUrl}/license`);if(global.game.world)return e.user?s.redirect(`${e.baseUrl}/game`):s.redirect(`${e.baseUrl}/join`);if(!sessions.authenticateAdmin(e,s).success)return s.redirect(`${e.baseUrl}/auth`);const a=View._getStaticContent({setup:!0}),t={layout:"setup",bodyClass:`update auth flexcol theme-${config.options.cssTheme}`,messages:sessions.getMessages(e,{clear:!1}),requireAuth:!1,scripts:a.scripts,styles:a.styles};s.render(this._template,t)}async handlePost(e,s){let a={};const{config:t,game:r}=global,{action:o,...i}=e.body,c=sessions.authenticateAdmin(e,s);if(!(!r.world&&c.success))return s.status(403),s.json({error:"You lack server administrator permission to submit this request."});switch(o){case"updateCheck":try{a=await t.updater.check(i),a||(a={info:"SETUP.UpdateNotAvailable"})}catch(e){const{message:s,stack:t,messageCode:r}=e;a={error:s,stack:t,messageCode:r}}break;case"updateDownload":try{a=await t.updater.update()}catch(e){a={error:e.message,stack:e.stack}}break;case"createSnapshot":a=packages.handleCreateSnapshot(e.body);break;case"checkCreateSnapshotDiskSpace":a=await global.packages.backups.checkCreateSnapshotDiskSpace();break;case"previewCompatibility":a=await packages.handlePreviewCompatibility(e.body);break;default:a={error:`Unsupported ApplicationUpdateView action "${o}" submitted`}}return s.json(a)}async handleSocket(e,s){const a=global.config;if(a.adminPassword&&!e.admin||game.world)return s({});return s({options:a.options.vend(),release:global.release,addresses:a.express.getInvitationLinks(),coreUpdate:await a.updater.checkCoreUpdateAvailability(),worlds:[],systems:[],modules:Module.getPackages({coreTranslation:!0}).map((e=>e.vend()))})}}
|