This commit is contained in:
retoor 2025-06-08 20:36:45 +02:00
parent d3c0e138d8
commit da9566c11f
5 changed files with 7 additions and 32 deletions
src/snek
service
static
system
templates
view

View File

@ -233,8 +233,6 @@ class PushService(BaseService):
print( print(
f"Failed to send notification to user {user_uid} via endpoint {endpoint}: {response.status}" f"Failed to send notification to user {user_uid} via endpoint {endpoint}: {response.status}"
) )
else:
print(f"No push subscriptions found for user {user_uid}")
async def register( async def register(
self, user_uid: str, endpoint: str, key_auth: str, key_p256dh: str self, user_uid: str, endpoint: str, key_auth: str, key_p256dh: str

View File

@ -52,15 +52,13 @@ self.addEventListener("notificationclose", (event) => {
}) })
self.addEventListener("fetch", (event) => { self.addEventListener("fetch", (event) => {
// console.log("Fetch event for ", event.request.url);
event.respondWith( event.respondWith(
caches.match(event.request).then((response) => { caches.match(event.request).then((response) => {
if (response) { if (response) {
// console.log("Found response in cache: ", response); // console.log("Found response in cache: ", response);
return response; return response;
} }
// console.log("No response found in cache. About to fetch from network...");
return fetch(event.request); return fetch(event.request);
}) })
); );
}) })

View File

@ -39,7 +39,6 @@ class ComposeFileManager:
loop = asyncio.get_event_loop() loop = asyncio.get_event_loop()
while True: while True:
line = await loop.run_in_executor(None,os.read,stream,1024) line = await loop.run_in_executor(None,os.read,stream,1024)
print("XXX",line)
if not line: if not line:
break break
await event_handler(container_name,"stdout",line) await event_handler(container_name,"stdout",line)
@ -117,13 +116,12 @@ class ComposeFileManager:
) )
stdout, _ = await proc.communicate() stdout, _ = await proc.communicate()
running_services = stdout.decode().split() running_services = stdout.decode().split()
print(running_services)
return "running" if name in running_services else "stopped" return "running" if name in running_services else "stopped"
async def write_stdin(self, name, data): async def write_stdin(self, name, data):
await self.event_handler(name, "stdin", data) await self.event_handler(name, "stdin", data)
proc = self.running_instances.get(name) proc = self.running_instances.get(name)
print("Found proc:",proc)
print(name,data)
if not proc: if not proc:
return False return False
try: try:
@ -177,11 +175,9 @@ class ComposeFileManager:
stderr=asyncio.subprocess.PIPE, stderr=asyncio.subprocess.PIPE,
) )
stdout,stderr = await proc.communicate() stdout,stderr = await proc.communicate()
print(stdout, stderr)
if proc.returncode != 0: if proc.returncode != 0:
print(f"Failed to start {name}: {stderr.decode(errors='ignore')}") print(f"Failed to start {name}: {stderr.decode(errors='ignore')}")
return False return False
master, slave = pty.openpty() master, slave = pty.openpty()
proc = await asyncio.create_subprocess_exec( proc = await asyncio.create_subprocess_exec(
"docker", "compose", "-f", self.compose_path, "exec", name, "/bin/bash", "docker", "compose", "-f", self.compose_path, "exec", name, "/bin/bash",
@ -189,25 +185,8 @@ class ComposeFileManager:
stdout=slave, stdout=slave,
stderr=slave, stderr=slave,
) )
proc = {'proc': proc, 'master': master, 'slave': slave}
proc = {'proc':proc,'master':master,'slave':slave} self.running_instances[name] = proc
# stdin,stderr = await proc.communicate()
self.running_instances[name] = proc
#if stdout:
# await self.event_handler(name, "stdout", stdout)
#if stderr:
# await self.event_handler(name,"stdout",stderr)
await self._create_readers(name) await self._create_readers(name)
return True return True
#return stdout and stdout.decode(errors="ignore") or stderr.decode(errors="ignore")
# Example usage:
# mgr = ComposeFileManager()
# mgr.create_instance('web', 'nginx:latest', cpus=1, memory='512m', ports={80:8080}, volumes=['./data:/data'])
# print(mgr.list_instances())
# mgr.duplicate_instance('web', 'web_copy')
# mgr.remove_instance('web_copy')
# await mgr.start('web')

View File

@ -79,7 +79,7 @@
app.channelUid = '{{ channel.uid.value }}' app.channelUid = '{{ channel.uid.value }}'
window.getContainer = function(){ window.getContainer = function(){
return new Container(app.channelUid,true) return new Container(app.channelUid,false)
} }
{% endif %} {% endif %}
let installPrompt = null let installPrompt = null
@ -93,7 +93,6 @@ let installPrompt = null
button.addEventListener("click", async ()=>{ button.addEventListener("click", async ()=>{
const result = await installPrompt.prompt() const result = await installPrompt.prompt()
console.info(result.outcome)
}) })

View File

@ -389,7 +389,8 @@ class RPCView(BaseView):
) )
async def _send_json(self, obj): async def _send_json(self, obj):
await self.ws.send_str(json.dumps(obj, default=str)) if not self.ws.closed:
await self.ws.send_str(json.dumps(obj, default=str))
async def get_online_users(self, channel_uid): async def get_online_users(self, channel_uid):
self._require_login() self._require_login()