Add database-only option of storing iiip-server
This commit is contained in:
parent
733aa237d1
commit
89317662de
14 changed files with 37 additions and 10 deletions
|
|
@ -90,6 +90,14 @@
|
|||
<code>{{ .Instance.System.PHP }}</code>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
IIP Image Server
|
||||
</td>
|
||||
<td>
|
||||
<code>{{ .Instance.System.IIPServer }}</code>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
OPCache Development Config
|
||||
|
|
|
|||
|
|
@ -37,6 +37,20 @@
|
|||
Changing the PHP version is possible at any time.
|
||||
</span>
|
||||
</div>
|
||||
<div class="pure-controls">
|
||||
<label for="iipserver" class="pure-checkbox">
|
||||
<input {{ if $rebuild }}{{ if .System.IIPServer }}checked{{end}}{{end}} type="checkbox" id="iipserver" />
|
||||
IIP Image Server
|
||||
</label>
|
||||
<span class="pure-form-message-inline">
|
||||
Run an <a href="https://iipimage.sourceforge.io/documentation/server" target="_blank" rel="noopener noreferer">IIPImage server</a> inside this instance.
|
||||
<br />
|
||||
This can be used for streaming 2D images inside this WissKI, see <a href="https://wiss-ki.eu/documentation/periphal-software/iip-image-server" target="_blank" rel="noopener noreferer">the WissKI Documentation</a> for more details.
|
||||
Please be aware that any installation or configuration steps are performed automatically by the distillery.
|
||||
<br />
|
||||
This option can be changed at any time.
|
||||
</span>
|
||||
</div>
|
||||
<div class="pure-controls">
|
||||
<label for="opcacheDevelopment" class="pure-checkbox">
|
||||
<input {{ if $rebuild }}{{ if .System.OpCacheDevelopment }}checked{{end}}{{end}} type="checkbox" id="opcacheDevelopment" />
|
||||
|
|
|
|||
|
|
@ -30,12 +30,12 @@ var AssetsAdmin = Assets{
|
|||
|
||||
// AssetsAdminProvision contains assets for the 'AdminProvision' entrypoint.
|
||||
var AssetsAdminProvision = Assets{
|
||||
Scripts: `<script nomodule defer src="/⛰/User.869c9a74.js"></script><script nomodule defer src="/⛰/Admin.b992cf94.js"></script><script type="module" src="/⛰/User.23a71b44.js"></script><script type="module" src="/⛰/Admin.c0a122d2.js"></script><script type="module" src="/⛰/Default.38d394c2.js"></script><script src="/⛰/Default.38d394c2.js" nomodule defer></script><script type="module" src="/⛰/AdminProvision.5bc6b324.js"></script><script src="/⛰/AdminProvision.53660f24.js" nomodule defer></script>`,
|
||||
Scripts: `<script nomodule defer src="/⛰/User.869c9a74.js"></script><script nomodule defer src="/⛰/Admin.b992cf94.js"></script><script type="module" src="/⛰/User.23a71b44.js"></script><script type="module" src="/⛰/Admin.c0a122d2.js"></script><script type="module" src="/⛰/Default.38d394c2.js"></script><script src="/⛰/Default.38d394c2.js" nomodule defer></script><script type="module" src="/⛰/AdminProvision.65c71f50.js"></script><script src="/⛰/AdminProvision.d01fac9b.js" nomodule defer></script>`,
|
||||
Styles: `<link rel="stylesheet" href="/⛰/Default.8912112e.css"><link rel="stylesheet" href="/⛰/Admin.db3e959a.css"><link rel="stylesheet" href="/⛰/User.68febbf8.css"><link rel="stylesheet" href="/⛰/User.09b09c46.css"><link rel="stylesheet" href="/⛰/Admin.9d294a13.css"><link rel="stylesheet" href="/⛰/AdminProvision.38d394c2.css">`,
|
||||
}
|
||||
|
||||
// AssetsAdminRebuild contains assets for the 'AdminRebuild' entrypoint.
|
||||
var AssetsAdminRebuild = Assets{
|
||||
Scripts: `<script nomodule defer src="/⛰/User.869c9a74.js"></script><script nomodule defer src="/⛰/Admin.b992cf94.js"></script><script type="module" src="/⛰/User.23a71b44.js"></script><script type="module" src="/⛰/Admin.c0a122d2.js"></script><script type="module" src="/⛰/Default.38d394c2.js"></script><script src="/⛰/Default.38d394c2.js" nomodule defer></script><script type="module" src="/⛰/AdminRebuild.ddc01020.js"></script><script src="/⛰/AdminRebuild.e4ce4c16.js" nomodule defer></script>`,
|
||||
Scripts: `<script nomodule defer src="/⛰/User.869c9a74.js"></script><script nomodule defer src="/⛰/Admin.b992cf94.js"></script><script type="module" src="/⛰/User.23a71b44.js"></script><script type="module" src="/⛰/Admin.c0a122d2.js"></script><script type="module" src="/⛰/Default.38d394c2.js"></script><script src="/⛰/Default.38d394c2.js" nomodule defer></script><script type="module" src="/⛰/AdminRebuild.d7ba1ab0.js"></script><script src="/⛰/AdminRebuild.0be08ae3.js" nomodule defer></script>`,
|
||||
Styles: `<link rel="stylesheet" href="/⛰/Default.8912112e.css"><link rel="stylesheet" href="/⛰/Admin.db3e959a.css"><link rel="stylesheet" href="/⛰/User.68febbf8.css"><link rel="stylesheet" href="/⛰/User.09b09c46.css"><link rel="stylesheet" href="/⛰/Admin.9d294a13.css"><link rel="stylesheet" href="/⛰/AdminRebuild.38d394c2.css">`,
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1 +1 @@
|
|||
var e="undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:"undefined"!=typeof window?window:"undefined"!=typeof global?global:{},t={},n={},o=e.parcelRequireafa4;null==o&&((o=function(e){if(e in t)return t[e].exports;if(e in n){var o=n[e];delete n[e];var r={id:e,exports:{}};return t[e]=r,o.call(r.exports,r,r.exports),r.exports}var l=Error("Cannot find module '"+e+"'");throw l.code="MODULE_NOT_FOUND",l}).register=function(e,t){n[e]=t},e.parcelRequireafa4=o),o("8xGhL");var r=o("12vpF");async function l(e){return await new Promise((t,n)=>{(0,r.createModal)("provision",[JSON.stringify(e)],{bufferSize:0,onClose:(o,r)=>{if(!o){n(Error(r??"unspecified error"));return}t(e.Slug)}})})}const i=document.getElementById("system"),a=document.getElementById("slug"),u=document.getElementById("php"),c=document.getElementById("opcacheDevelopment"),d=document.getElementById("contentsecuritypolicy");i.addEventListener("submit",e=>{e.preventDefault();let t=document.querySelector('input[name="flavor"]:checked'),n=t instanceof HTMLInputElement?t.value:"";l({Slug:a.value,Flavor:n,System:{PHP:u.value,OpCacheDevelopment:c.checked,ContentSecurityPolicy:d.value}}).then(e=>{location.href="/admin/instance/"+e}).catch(e=>{console.error(e),location.reload()})}),i.querySelector("fieldset")?.removeAttribute("disabled");
|
||||
var e="undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:"undefined"!=typeof window?window:"undefined"!=typeof global?global:{},t={},n={},o=e.parcelRequireafa4;null==o&&((o=function(e){if(e in t)return t[e].exports;if(e in n){var o=n[e];delete n[e];var r={id:e,exports:{}};return t[e]=r,o.call(r.exports,r,r.exports),r.exports}var l=Error("Cannot find module '"+e+"'");throw l.code="MODULE_NOT_FOUND",l}).register=function(e,t){n[e]=t},e.parcelRequireafa4=o),o("8xGhL");var r=o("12vpF");async function l(e){return await new Promise((t,n)=>{(0,r.createModal)("provision",[JSON.stringify(e)],{bufferSize:0,onClose:(o,r)=>{if(!o){n(Error(r??"unspecified error"));return}t(e.Slug)}})})}const i=document.getElementById("system"),a=document.getElementById("slug"),c=document.getElementById("php"),d=document.getElementById("opcacheDevelopment"),u=document.getElementById("contentsecuritypolicy"),s=document.getElementById("iipserver");i.addEventListener("submit",e=>{e.preventDefault();let t=document.querySelector('input[name="flavor"]:checked'),n=t instanceof HTMLInputElement?t.value:"";l({Slug:a.value,Flavor:n,System:{PHP:c.value,IIPServer:s.checked,OpCacheDevelopment:d.checked,ContentSecurityPolicy:u.value}}).then(e=>{location.href="/admin/instance/"+e}).catch(e=>{console.error(e),location.reload()})}),i.querySelector("fieldset")?.removeAttribute("disabled");
|
||||
|
|
@ -1 +1 @@
|
|||
!function(){var e="undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:"undefined"!=typeof window?window:"undefined"!=typeof global?global:{},t={},n={},o=e.parcelRequireafa4;null==o&&((o=function(e){if(e in t)return t[e].exports;if(e in n){var o=n[e];delete n[e];var r={id:e,exports:{}};return t[e]=r,o.call(r.exports,r,r.exports),r.exports}var l=Error("Cannot find module '"+e+"'");throw l.code="MODULE_NOT_FOUND",l}).register=function(e,t){n[e]=t},e.parcelRequireafa4=o),o("dK5Bi");var r=o("8vh0V");async function l(e){return await new Promise((t,n)=>{(0,r.createModal)("provision",[JSON.stringify(e)],{bufferSize:0,onClose:(o,r)=>{if(!o){n(Error(r??"unspecified error"));return}t(e.Slug)}})})}let i=document.getElementById("system"),a=document.getElementById("slug"),u=document.getElementById("php"),c=document.getElementById("opcacheDevelopment"),d=document.getElementById("contentsecuritypolicy");i.addEventListener("submit",e=>{e.preventDefault();let t=document.querySelector('input[name="flavor"]:checked'),n=t instanceof HTMLInputElement?t.value:"";l({Slug:a.value,Flavor:n,System:{PHP:u.value,OpCacheDevelopment:c.checked,ContentSecurityPolicy:d.value}}).then(e=>{location.href="/admin/instance/"+e}).catch(e=>{console.error(e),location.reload()})}),i.querySelector("fieldset")?.removeAttribute("disabled")}();
|
||||
!function(){var e="undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:"undefined"!=typeof window?window:"undefined"!=typeof global?global:{},t={},n={},o=e.parcelRequireafa4;null==o&&((o=function(e){if(e in t)return t[e].exports;if(e in n){var o=n[e];delete n[e];var r={id:e,exports:{}};return t[e]=r,o.call(r.exports,r,r.exports),r.exports}var l=Error("Cannot find module '"+e+"'");throw l.code="MODULE_NOT_FOUND",l}).register=function(e,t){n[e]=t},e.parcelRequireafa4=o),o("dK5Bi");var r=o("8vh0V");async function l(e){return await new Promise((t,n)=>{(0,r.createModal)("provision",[JSON.stringify(e)],{bufferSize:0,onClose:(o,r)=>{if(!o){n(Error(r??"unspecified error"));return}t(e.Slug)}})})}let i=document.getElementById("system"),a=document.getElementById("slug"),c=document.getElementById("php"),d=document.getElementById("opcacheDevelopment"),u=document.getElementById("contentsecuritypolicy"),f=document.getElementById("iipserver");i.addEventListener("submit",e=>{e.preventDefault();let t=document.querySelector('input[name="flavor"]:checked'),n=t instanceof HTMLInputElement?t.value:"";l({Slug:a.value,Flavor:n,System:{PHP:c.value,IIPServer:f.checked,OpCacheDevelopment:d.checked,ContentSecurityPolicy:u.value}}).then(e=>{location.href="/admin/instance/"+e}).catch(e=>{console.error(e),location.reload()})}),i.querySelector("fieldset")?.removeAttribute("disabled")}();
|
||||
1
internal/dis/component/server/assets/dist/AdminRebuild.0be08ae3.js
vendored
Normal file
1
internal/dis/component/server/assets/dist/AdminRebuild.0be08ae3.js
vendored
Normal file
|
|
@ -0,0 +1 @@
|
|||
!function(){var e="undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:"undefined"!=typeof window?window:"undefined"!=typeof global?global:{},t={},n={},r=e.parcelRequireafa4;null==r&&((r=function(e){if(e in t)return t[e].exports;if(e in n){var r=n[e];delete n[e];var o={id:e,exports:{}};return t[e]=o,r.call(o.exports,o,o.exports),o.exports}var i=Error("Cannot find module '"+e+"'");throw i.code="MODULE_NOT_FOUND",i}).register=function(e,t){n[e]=t},e.parcelRequireafa4=r),r("dK5Bi");var o=r("8vh0V");async function i(e,t){return await new Promise((n,r)=>{(0,o.createModal)("rebuild",[e,JSON.stringify(t)],{bufferSize:0,onClose:(t,o)=>{if(!t){r(Error(o??"unspecified error"));return}n(e)}})})}let l=document.getElementById("system"),d=document.getElementById("slug"),a=document.getElementById("php"),c=document.getElementById("opcacheDevelopment"),u=document.getElementById("contentsecuritypolicy"),f=document.getElementById("iipserver");l.addEventListener("submit",e=>{e.preventDefault(),i(d.value,{PHP:a.value,IIPServer:f.checked,OpCacheDevelopment:c.checked,ContentSecurityPolicy:u.value}).then(e=>{location.href="/admin/instance/"+e}).catch(e=>{console.error(e),location.reload()})}),l.querySelector("fieldset")?.removeAttribute("disabled")}();
|
||||
1
internal/dis/component/server/assets/dist/AdminRebuild.d7ba1ab0.js
vendored
Normal file
1
internal/dis/component/server/assets/dist/AdminRebuild.d7ba1ab0.js
vendored
Normal file
|
|
@ -0,0 +1 @@
|
|||
var e="undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:"undefined"!=typeof window?window:"undefined"!=typeof global?global:{},t={},n={},r=e.parcelRequireafa4;null==r&&((r=function(e){if(e in t)return t[e].exports;if(e in n){var r=n[e];delete n[e];var o={id:e,exports:{}};return t[e]=o,r.call(o.exports,o,o.exports),o.exports}var i=Error("Cannot find module '"+e+"'");throw i.code="MODULE_NOT_FOUND",i}).register=function(e,t){n[e]=t},e.parcelRequireafa4=r),r("8xGhL");var o=r("12vpF");async function i(e,t){return await new Promise((n,r)=>{(0,o.createModal)("rebuild",[e,JSON.stringify(t)],{bufferSize:0,onClose:(t,o)=>{if(!t){r(Error(o??"unspecified error"));return}n(e)}})})}const l=document.getElementById("system"),d=document.getElementById("slug"),a=document.getElementById("php"),c=document.getElementById("opcacheDevelopment"),u=document.getElementById("contentsecuritypolicy"),s=document.getElementById("iipserver");l.addEventListener("submit",e=>{e.preventDefault(),i(d.value,{PHP:a.value,IIPServer:s.checked,OpCacheDevelopment:c.checked,ContentSecurityPolicy:u.value}).then(e=>{location.href="/admin/instance/"+e}).catch(e=>{console.error(e),location.reload()})}),l.querySelector("fieldset")?.removeAttribute("disabled");
|
||||
|
|
@ -1 +0,0 @@
|
|||
var e="undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:"undefined"!=typeof window?window:"undefined"!=typeof global?global:{},t={},n={},o=e.parcelRequireafa4;null==o&&((o=function(e){if(e in t)return t[e].exports;if(e in n){var o=n[e];delete n[e];var r={id:e,exports:{}};return t[e]=r,o.call(r.exports,r,r.exports),r.exports}var i=Error("Cannot find module '"+e+"'");throw i.code="MODULE_NOT_FOUND",i}).register=function(e,t){n[e]=t},e.parcelRequireafa4=o),o("8xGhL");var r=o("12vpF");async function i(e,t){return await new Promise((n,o)=>{(0,r.createModal)("rebuild",[e,JSON.stringify(t)],{bufferSize:0,onClose:(t,r)=>{if(!t){o(Error(r??"unspecified error"));return}n(e)}})})}const l=document.getElementById("system"),a=document.getElementById("slug"),d=document.getElementById("php"),c=document.getElementById("opcacheDevelopment"),u=document.getElementById("contentsecuritypolicy");l.addEventListener("submit",e=>{e.preventDefault(),i(a.value,{PHP:d.value,OpCacheDevelopment:c.checked,ContentSecurityPolicy:u.value}).then(e=>{location.href="/admin/instance/"+e}).catch(e=>{console.error(e),location.reload()})}),l.querySelector("fieldset")?.removeAttribute("disabled");
|
||||
|
|
@ -1 +0,0 @@
|
|||
!function(){var e="undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:"undefined"!=typeof window?window:"undefined"!=typeof global?global:{},t={},n={},o=e.parcelRequireafa4;null==o&&((o=function(e){if(e in t)return t[e].exports;if(e in n){var o=n[e];delete n[e];var r={id:e,exports:{}};return t[e]=r,o.call(r.exports,r,r.exports),r.exports}var i=Error("Cannot find module '"+e+"'");throw i.code="MODULE_NOT_FOUND",i}).register=function(e,t){n[e]=t},e.parcelRequireafa4=o),o("dK5Bi");var r=o("8vh0V");async function i(e,t){return await new Promise((n,o)=>{(0,r.createModal)("rebuild",[e,JSON.stringify(t)],{bufferSize:0,onClose:(t,r)=>{if(!t){o(Error(r??"unspecified error"));return}n(e)}})})}let l=document.getElementById("system"),d=document.getElementById("slug"),a=document.getElementById("php"),u=document.getElementById("opcacheDevelopment"),c=document.getElementById("contentsecuritypolicy");l.addEventListener("submit",e=>{e.preventDefault(),i(d.value,{PHP:a.value,OpCacheDevelopment:u.checked,ContentSecurityPolicy:c.value}).then(e=>{location.href="/admin/instance/"+e}).catch(e=>{console.error(e),location.reload()})}),l.querySelector("fieldset")?.removeAttribute("disabled")}();
|
||||
|
|
@ -8,6 +8,7 @@ const slug = document.getElementById('slug') as HTMLInputElement
|
|||
const php = document.getElementById('php') as HTMLSelectElement
|
||||
const opcacheDevelopment = document.getElementById('opcacheDevelopment') as HTMLInputElement
|
||||
const contentSecurityPolicy = document.getElementById('contentsecuritypolicy') as HTMLInputElement
|
||||
const iipserver = document.getElementById('iipserver') as HTMLInputElement
|
||||
|
||||
// add an event handler to open the modal form!
|
||||
system.addEventListener('submit', (evt) => {
|
||||
|
|
@ -19,7 +20,7 @@ system.addEventListener('submit', (evt) => {
|
|||
Provision({
|
||||
Slug: slug.value,
|
||||
Flavor: flavor,
|
||||
System: { PHP: php.value, OpCacheDevelopment: opcacheDevelopment.checked, ContentSecurityPolicy: contentSecurityPolicy.value }
|
||||
System: { PHP: php.value, IIPServer: iipserver.checked, OpCacheDevelopment: opcacheDevelopment.checked, ContentSecurityPolicy: contentSecurityPolicy.value }
|
||||
})
|
||||
.then(slug => {
|
||||
location.href = '/admin/instance/' + slug
|
||||
|
|
|
|||
|
|
@ -8,12 +8,13 @@ const slug = document.getElementById('slug') as HTMLInputElement
|
|||
const php = document.getElementById('php') as HTMLSelectElement
|
||||
const opcacheDevelopment = document.getElementById('opcacheDevelopment') as HTMLInputElement
|
||||
const contentSecurityPolicy = document.getElementById('contentsecuritypolicy') as HTMLInputElement
|
||||
const iipserver = document.getElementById('iipserver') as HTMLInputElement
|
||||
|
||||
// add an event handler to open the modal form!
|
||||
system.addEventListener('submit', (evt) => {
|
||||
evt.preventDefault()
|
||||
|
||||
Rebuild(slug.value, { PHP: php.value, OpCacheDevelopment: opcacheDevelopment.checked, ContentSecurityPolicy: contentSecurityPolicy.value })
|
||||
Rebuild(slug.value, { PHP: php.value, IIPServer: iipserver.checked, OpCacheDevelopment: opcacheDevelopment.checked, ContentSecurityPolicy: contentSecurityPolicy.value })
|
||||
.then(slug => {
|
||||
location.href = '/admin/instance/' + slug
|
||||
})
|
||||
|
|
|
|||
|
|
@ -12,6 +12,7 @@ interface ProvisionFlags {
|
|||
|
||||
interface System {
|
||||
PHP: string
|
||||
IIPServer: boolean
|
||||
OpCacheDevelopment: boolean
|
||||
ContentSecurityPolicy: string
|
||||
}
|
||||
|
|
|
|||
|
|
@ -4,8 +4,9 @@ package models
|
|||
// It is embedded into the instances struct by gorm.
|
||||
type System struct {
|
||||
// NOTE(twiesing): Any changes here should be reflected in instance_{provision,rebuild}.html and remote/api.ts.
|
||||
PHP string `gorm:"column:php;not null"` // php version to use
|
||||
OpCacheDevelopment bool `gorm:"column:opcache_devel;not null"` // opcache development
|
||||
PHP string `gorm:"column:php;not null"` // php version to use
|
||||
IIPServer bool `gorm:"column:iipimage;not null;default:false"` // should we enable the IIPServer?
|
||||
OpCacheDevelopment bool `gorm:"column:opcache_devel;not null"` // opcache development
|
||||
|
||||
ContentSecurityPolicy string `gorm:"column:csp;not null"` // content security policy for the system
|
||||
}
|
||||
|
|
|
|||
|
|
@ -11,6 +11,7 @@ export function Backup(): WebSocketCall {
|
|||
type ProvisionParams = {
|
||||
Slug: string;
|
||||
Flavor?: "Drupal 10" | "Drupal 9",
|
||||
IIPServer?: string,
|
||||
System: SystemParams
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue