Software: Apache/2.4.41 (Ubuntu). PHP/8.0.30 uname -a: Linux apirnd 5.4.0-204-generic #224-Ubuntu SMP Thu Dec 5 13:38:28 UTC 2024 x86_64 uid=33(www-data) gid=33(www-data) groups=33(www-data) Safe-mode: OFF (not secure) /usr/local/lib/node_modules/homebridge-config-ui-x/public/ drwxr-xr-x | |
| Viewing file: Select action/file-type: (self.webpackChunkui=self.webpackChunkui||[]).push([[116],{5116:function(t,e,s){"use strict";s.r(e),s.d(e,{DockerModule:function(){return J}});var i=s(38583),r=s(3679),o=s(71271),a=s(95935),n=s(36592),c=s(40294),l=s(63423),p=s(64762),h=s(37716),u=s(92503),d=s(79274),g=s(58605),m=s(64959),f=s(49344);function w(t,e){1&t&&h._UZ(0,"i",13)}function v(t,e){if(1&t){const t=h.EpF();h.TgZ(0,"ngx-monaco-editor",14),h.NdJ("onInit",function(e){return h.CHM(t),h.oxw().onEditorInit(e)})("keydown.control.s",function(e){h.CHM(t);const s=h.oxw();return e.preventDefault(),s.onSave()})("keydown.meta.s",function(e){h.CHM(t);const s=h.oxw();return e.preventDefault(),s.onSave()}),h.qZA()}if(2&t){const t=h.oxw();h.Q6J("options",t.editorOptions)("model",t.monacoEditorModel)}}function _(t,e){if(1&t){const t=h.EpF();h.TgZ(0,"textarea",15),h.NdJ("ngModelChange",function(e){return h.CHM(t),h.oxw().startupScript=e}),h._uU(1," "),h.qZA()}if(2&t){const t=h.oxw();h.Q6J("ngModel",t.startupScript)}}let k=(()=>{class t{constructor(t,e,s,i,r,o,a){this.$settings=t,this.$api=e,this.$md=s,this.$monacoEditor=i,this.$toastr=r,this.translate=o,this.$route=a,this.isMobile=!1,this.options={printMargin:!1},this.editorOptions={language:"shell",theme:this.$settings.theme.startsWith("dark-mode")?"vs-dark":"vs-light",automaticLayout:!0},this.isMobile=this.$md.detect.mobile()}ngOnInit(){this.visualViewPortEventCallback=()=>this.visualViewPortChanged(),this.lastHeight=window.innerHeight,window.visualViewport&&!this.isMobile&&(window.visualViewport.addEventListener("resize",this.visualViewPortEventCallback,!0),this.$md.disableTouchMove()),this.$route.data.subscribe(t=>{this.startupScript=t.startupScript.script}),this.monacoEditorModel={value:"",language:"shell"}}onEditorInit(t){this.monacoEditor=t,this.monacoEditor.getModel().setValue(this.startupScript)}onSave(){return(0,p.mG)(this,void 0,void 0,function*(){if(!this.saveInProgress){if(this.saveInProgress=!0,this.isMobile||(yield this.monacoEditor.getAction("editor.action.formatDocument").run(),this.startupScript=this.monacoEditor.getModel().getValue()),"#!/bin/sh"!==this.startupScript.split("\n")[0].trim())return this.$toastr.error(this.translate.instant("platform.docker.startup_script.toast_script_must_use_hashbang"),this.translate.instant("platform.docker.startup_script.toast_title_script_error")),this.startupScript="#!/bin/sh\n\n"+this.startupScript,this.isMobile||this.monacoEditor.getModel().setValue(this.startupScript),void(this.saveInProgress=!1);try{yield this.$api.put("/platform-tools/docker/startup-script",{script:this.startupScript}).toPromise(),this.$toastr.success(this.translate.instant("platform.docker.startup_script.toast_restart_required"),this.translate.instant("platform.docker.startup_script.toast_title_script_saved"))}catch(t){this.$toastr.error(t.message,this.translate.instant("toast.title_error"))}this.saveInProgress=!1}})}visualViewPortChanged(){this.lastHeight<window.visualViewport.height&&document.activeElement.blur(),window.visualViewport.height<window.innerHeight?(this.$md.enableTouchMove(),this.lastHeight=window.visualViewport.height):window.visualViewport.height===window.innerHeight&&(this.$md.disableTouchMove(),this.lastHeight=window.visualViewport.height)}ngOnDestroy(){window.visualViewport&&(window.visualViewport.removeEventListener("resize",this.visualViewPortEventCallback,!0),this.$md.enableTouchMove()),this.monacoEditor&&this.monacoEditor.dispose()}}return t.\u0275fac=function(e){return new(e||t)(h.Y36(u.g),h.Y36(d.s),h.Y36(g.L),h.Y36(m.L),h.Y36(f._W),h.Y36(a.sK),h.Y36(l.gz))},t.\u0275cmp=h.Xpm({type:t,selectors:[["app-startup-script"]],decls:18,vars:8,consts:[[1,"flex-column","d-flex","align-items-stretch","h-100"],[1,"row"],[1,"col-sm-8","d-none","d-sm-block"],[1,"primary-text","m-0"],[1,"d-none","d-md-inline"],[1,"col-sm-4","text-right"],[1,"btn","btn-primary","waves-effect","m-0",3,"disabled","click"],["class","fas fa-spinner fa-pulse",4,"ngIf"],[1,"row","mt-3"],[1,"col-md-12"],["role","alert",1,"alert","alert-warning",3,"translate"],["class","flex-grow-1 h-100 w-100 mb-3 mt-3",3,"options","model","onInit","keydown.control.s","keydown.meta.s",4,"ngIf"],["wrap","off","class","hb-plain-text-editor align-self-end h-100 w-100 mb-3 mt-3","autocomplete","off","autocorrect","off","autocapitalize","off","spellcheck","false",3,"ngModel","ngModelChange",4,"ngIf"],[1,"fas","fa-spinner","fa-pulse"],[1,"flex-grow-1","h-100","w-100","mb-3","mt-3",3,"options","model","onInit","keydown.control.s","keydown.meta.s"],["wrap","off","autocomplete","off","autocorrect","off","autocapitalize","off","spellcheck","false",1,"hb-plain-text-editor","align-self-end","h-100","w-100","mb-3","mt-3",3,"ngModel","ngModelChange"]],template:function(t,e){1&t&&(h.TgZ(0,"div",0),h.TgZ(1,"div",1),h.TgZ(2,"div",2),h.TgZ(3,"h3",3),h.TgZ(4,"span",4),h._uU(5,"Docker Container"),h.qZA(),h._uU(6," startup.sh"),h.qZA(),h.qZA(),h.TgZ(7,"div",5),h.TgZ(8,"button",6),h.NdJ("click",function(){return e.onSave()}),h._uU(9),h.ALo(10,"translate"),h.YNc(11,w,1,0,"i",7),h.qZA(),h.qZA(),h.qZA(),h.TgZ(12,"div",8),h.TgZ(13,"div",9),h.TgZ(14,"div",10),h._uU(15," This script will be executed each time the docker container starts. You can use this to install any extra packages your plugins may need such as ffmpeg or libpcap-dev. "),h.qZA(),h.qZA(),h.qZA(),h.YNc(16,v,1,2,"ngx-monaco-editor",11),h.YNc(17,_,2,1,"textarea",12),h.qZA()),2&t&&(h.xp6(8),h.Q6J("disabled",e.saveInProgress),h.xp6(1),h.hij(" ",h.lcZ(10,6,"form.button_save")," "),h.xp6(2),h.Q6J("ngIf",e.saveInProgress),h.xp6(3),h.Q6J("translate","platform.docker.startup_script.message_script_help"),h.xp6(2),h.Q6J("ngIf",!e.isMobile),h.xp6(1),h.Q6J("ngIf",e.isMobile))},directives:[i.O5,a.Pi,n.PG,r.Fj,r.JJ,r.On],pipes:[a.X$],styles:[""]}),t})();var Z=s(45417),b=s(48703);function x(t,e){1&t&&h._UZ(0,"app-spinner")}function $(t,e){1&t&&(h.TgZ(0,"p",8),h._uU(1," Please wait, this page will automatically redirect when the Homebridge is back online."),h.qZA()),2&t&&h.Q6J("translate","restart.message_please_wait_while_server_restarts")}function y(t,e){if(1&t&&(h.TgZ(0,"p",9),h._uU(1),h.qZA()),2&t){const t=h.oxw();h.xp6(1),h.Oqu(t.error)}}function T(t,e){1&t&&(h.TgZ(0,"div"),h.TgZ(1,"p",8),h._uU(2," Server restart is taking a long time. You may need to bring up the Docker container manually."),h.qZA(),h.TgZ(3,"p",10),h.ALo(4,"translate"),h._uU(5,"Make sure you're running the Docker container with "),h.TgZ(6,"strong"),h._uU(7,"--restart=always"),h.qZA(),h.qZA(),h.qZA()),2&t&&(h.xp6(1),h.Q6J("translate","platform.docker.restart_container.message_server_taking_long_time_to_restart"),h.xp6(2),h.Q6J("innerHTML",h.lcZ(4,2,"platform.docker.restart_container.message_run_with_restart_always"),h.oJD))}let M=(()=>{class t{constructor(t,e,s,i,r,o){this.$api=t,this.$ws=e,this.$settings=s,this.$toastr=i,this.translate=r,this.$router=o,this.io=this.$ws.connectToNamespace("status"),this.resp={},this.timeout=!1,this.error=!1}ngOnInit(){this.io.connected.subscribe(()=>{this.io.socket.emit("monitor-server-status"),this.$settings.getAppSettings().catch()}),this.$api.put("/platform-tools/docker/restart-container",{}).subscribe(t=>{this.resp=t,this.checkIfServerUp()},t=>{const e=this.translate.instant("restart.toast_server_restart_error");this.error=e+".",this.$toastr.error(`${e}: ${t.message}`,this.translate.instant("toast.title_error"))})}checkIfServerUp(){this.checkDelay=setTimeout(()=>{this.io.socket.on("homebridge-status",t=>{"up"!==t.status&&"pending"!==t.status||(this.$toastr.success(this.translate.instant("platform.docker.restart_container.toast_container_restarted"),this.translate.instant("toast.title_success")),this.$router.navigate(["/"]))})},1e4),this.checkTimeout=setTimeout(()=>{this.$toastr.warning(this.translate.instant("restart.toast_sever_restart_timeout"),this.translate.instant("toast.title_warning"),{timeOut:1e4}),this.timeout=!0},6e4)}ngOnDestroy(){this.io.end(),clearTimeout(this.checkDelay),clearTimeout(this.checkTimeout)}}return t.\u0275fac=function(e){return new(e||t)(h.Y36(d.s),h.Y36(Z.r),h.Y36(u.g),h.Y36(f._W),h.Y36(a.sK),h.Y36(l.F0))},t.\u0275cmp=h.Xpm({type:t,selectors:[["app-container-restart"]],decls:10,vars:5,consts:[[4,"ngIf"],[1,"row"],[1,"col-md-12","text-center"],[1,"primary-text"],[1,"fab","fa-docker"],[1,"primary-text",3,"translate"],["class","grey-text",3,"translate",4,"ngIf"],["class","grey-text",4,"ngIf"],[1,"grey-text",3,"translate"],[1,"grey-text"],[1,"primary-text",3,"innerHTML"]],template:function(t,e){1&t&&(h.YNc(0,x,1,0,"app-spinner",0),h.TgZ(1,"div",1),h.TgZ(2,"div",2),h.TgZ(3,"h1",3),h._UZ(4,"i",4),h.qZA(),h.TgZ(5,"h3",5),h._uU(6,"Restarting Docker Container"),h.qZA(),h.YNc(7,$,2,1,"p",6),h.YNc(8,y,2,1,"p",7),h.YNc(9,T,8,4,"div",0),h.qZA(),h.qZA()),2&t&&(h.Q6J("ngIf",!e.error),h.xp6(5),h.Q6J("translate","platform.docker.restart_container.title_restarting"),h.xp6(2),h.Q6J("ngIf",!e.timeout&&!e.error),h.xp6(1),h.Q6J("ngIf",e.error),h.xp6(1),h.Q6J("ngIf",e.timeout))},directives:[i.O5,a.Pi,b.O],pipes:[a.X$],encapsulation:2}),t})(),I=(()=>{class t{constructor(t,e,s){this.$api=t,this.$toastr=e,this.$router=s}resolve(t,e){return this.$api.get("/platform-tools/docker/startup-script").toPromise().catch(t=>{this.$toastr.error(t.message,"Failed to Load Startup Script"),this.$router.navigate(["/"])})}}return t.\u0275fac=function(e){return new(e||t)(h.LFG(d.s),h.LFG(f._W),h.LFG(l.F0))},t.\u0275prov=h.Yz7({token:t,factory:t.\u0275fac}),t})();const A=[{path:"",redirectTo:"/",pathMatch:"full"},{path:"startup-script",component:k,resolve:{startupScript:I}},{path:"restart-container",component:M}];let q=(()=>{class t{}return t.\u0275fac=function(e){return new(e||t)},t.\u0275mod=h.oAB({type:t}),t.\u0275inj=h.cJS({imports:[[l.Bz.forChild(A)],l.Bz]}),t})(),J=(()=>{class t{}return t.\u0275fac=function(e){return new(e||t)},t.\u0275mod=h.oAB({type:t}),t.\u0275inj=h.cJS({providers:[I],imports:[[i.ez,r.u5,r.UX,n.nm,o.IJ,a.aw.forChild(),c.I,q]]}),t})()}}]); |
:: Command execute :: | |
--[ c99shell v. 2.5 [PHP 8 Update] [24.05.2025] | Generation time: 0.0061 ]-- |