Add localplatform stuff to its own package

This commit is contained in:
marios8543
2023-10-17 23:51:57 +03:00
parent 19793d71e6
commit 36c145bb3a
12 changed files with 11 additions and 95 deletions
+1 -1
View File
@@ -17,7 +17,7 @@ from enum import IntEnum
from typing import Dict, List, TypedDict from typing import Dict, List, TypedDict
# Local modules # Local modules
from .localplatform import chown, chmod from .localplatform.localplatform import chown, chmod
from .loader import Loader, Plugins from .loader import Loader, Plugins
from .helpers import get_ssl_context, download_remote_binary_to_path from .helpers import get_ssl_context, download_remote_binary_to_path
from .settings import SettingsManager from .settings import SettingsManager
+1 -1
View File
@@ -10,7 +10,7 @@ import certifi
from aiohttp.web import Request, Response, middleware from aiohttp.web import Request, Response, middleware
from aiohttp.typedefs import Handler from aiohttp.typedefs import Handler
from aiohttp import ClientSession from aiohttp import ClientSession
from . import localplatform from .localplatform import localplatform
from .customtypes import UserType from .customtypes import UserType
from logging import getLogger from logging import getLogger
-84
View File
@@ -1,84 +0,0 @@
class PluginEventTarget extends EventTarget { }
method_call_ev_target = new PluginEventTarget();
window.addEventListener("message", function(evt) {
let ev = new Event(evt.data.call_id);
ev.data = evt.data.result;
method_call_ev_target.dispatchEvent(ev);
}, false);
async function call_server_method(method_name, arg_object={}) {
const token = await fetch("http://127.0.0.1:1337/auth/token").then(r => r.text());
const response = await fetch(`http://127.0.0.1:1337/methods/${method_name}`, {
method: 'POST',
credentials: "include",
headers: {
'Content-Type': 'application/json',
Authentication: token
},
body: JSON.stringify(arg_object),
});
const dta = await response.json();
if (!dta.success) throw dta.result;
return dta.result;
}
// Source: https://stackoverflow.com/a/2117523 Thanks!
function uuidv4() {
return ([1e7]+-1e3+-4e3+-8e3+-1e11).replace(/[018]/g, c =>
(c ^ crypto.getRandomValues(new Uint8Array(1))[0] & 15 >> c / 4).toString(16)
);
}
async function fetch_nocors(url, request={}) {
let args = { method: "POST", headers: {}, body: "" };
request = {...args, ...request};
request.url = url;
request.data = request.body;
delete request.body; //maintain api-compatibility with fetch
return await call_server_method("http_request", request);
}
async function call_plugin_method(method_name, arg_object={}) {
if (plugin_name == undefined)
throw new Error("Plugin methods can only be called from inside plugins (duh)");
const token = await fetch("http://127.0.0.1:1337/auth/token").then(r => r.text());
const response = await fetch(`http://127.0.0.1:1337/plugins/${plugin_name}/methods/${method_name}`, {
method: 'POST',
credentials: "include",
headers: {
'Content-Type': 'application/json',
Authentication: token
},
body: JSON.stringify({
args: arg_object,
}),
});
const dta = await response.json();
if (!dta.success) throw dta.result;
return dta.result;
}
async function execute_in_tab(tab, run_async, code) {
return await call_server_method("execute_in_tab", {
'tab': tab,
'run_async': run_async,
'code': code
});
}
async function inject_css_into_tab(tab, style) {
return await call_server_method("inject_css_into_tab", {
'tab': tab,
'style': style
});
}
async function remove_css_from_tab(tab, css_id) {
return await call_server_method("remove_css_from_tab", {
'tab': tab,
'css_id': css_id
});
}
+3 -3
View File
@@ -16,8 +16,8 @@ from typing import TYPE_CHECKING
if TYPE_CHECKING: if TYPE_CHECKING:
from .main import PluginManager from .main import PluginManager
from .injector import get_tab, get_gamepadui_tab from .injector import get_gamepadui_tab
from .plugin import PluginWrapper from .plugin.plugin import PluginWrapper
Plugins = dict[str, PluginWrapper] Plugins = dict[str, PluginWrapper]
ReloadQueue = Queue[Tuple[str, str, bool | None] | Tuple[str, str]] ReloadQueue = Queue[Tuple[str, str, bool | None] | Tuple[str, str]]
@@ -143,7 +143,7 @@ class Loader:
self.plugins.pop(plugin.name, None) self.plugins.pop(plugin.name, None)
if plugin.passive: if plugin.passive:
self.logger.info(f"Plugin {plugin.name} is passive") self.logger.info(f"Plugin {plugin.name} is passive")
self.plugins[plugin.name] = plugin.start() self.plugins[plugin.name] = plugin
self.logger.info(f"Loaded {plugin.name}") self.logger.info(f"Loaded {plugin.name}")
if not batch: if not batch:
self.loop.create_task(self.dispatch_plugin(plugin.name, plugin.version)) self.loop.create_task(self.dispatch_plugin(plugin.name, plugin.version))
@@ -1,6 +1,6 @@
import os, pwd, grp, sys, logging import os, pwd, grp, sys, logging
from subprocess import call, run, DEVNULL, PIPE, STDOUT from subprocess import call, run, DEVNULL, PIPE, STDOUT
from .customtypes import UserType from ..customtypes import UserType
logger = logging.getLogger("localplatform") logger = logging.getLogger("localplatform")
+1 -1
View File
@@ -1,7 +1,7 @@
# Change PyInstaller files permissions # Change PyInstaller files permissions
import sys import sys
from typing import Dict from typing import Dict
from .localplatform import (chmod, chown, service_stop, service_start, from .localplatform.localplatform import (chmod, chown, service_stop, service_start,
ON_WINDOWS, get_log_level, get_live_reload, ON_WINDOWS, get_log_level, get_live_reload,
get_server_port, get_server_host, get_chown_plugin_path, get_server_port, get_server_host, get_chown_plugin_path,
get_privileged_path) get_privileged_path)
+1 -1
View File
@@ -1,7 +1,7 @@
from json import dump, load from json import dump, load
from os import mkdir, path, listdir, rename from os import mkdir, path, listdir, rename
from typing import Any, Dict from typing import Any, Dict
from .localplatform import chown, folder_owner, get_chown_plugin_path from .localplatform.localplatform import chown, folder_owner, get_chown_plugin_path
from .customtypes import UserType from .customtypes import UserType
from .helpers import get_homebrew_path from .helpers import get_homebrew_path
+1 -1
View File
@@ -8,7 +8,7 @@ from os import getcwd, path, remove
from typing import TYPE_CHECKING, List, TypedDict from typing import TYPE_CHECKING, List, TypedDict
if TYPE_CHECKING: if TYPE_CHECKING:
from .main import PluginManager from .main import PluginManager
from .localplatform import chmod, service_restart, ON_LINUX, get_keep_systemd_service, get_selinux from .localplatform.localplatform import chmod, service_restart, ON_LINUX, get_keep_systemd_service, get_selinux
from aiohttp import ClientSession, web from aiohttp import ClientSession, web
+2 -2
View File
@@ -18,9 +18,9 @@ from .browser import PluginInstallRequest, PluginInstallType
if TYPE_CHECKING: if TYPE_CHECKING:
from .main import PluginManager from .main import PluginManager
from .injector import inject_to_tab, get_gamepadui_tab, close_old_tabs, get_tab from .injector import inject_to_tab, get_gamepadui_tab, close_old_tabs, get_tab
from .localplatform import ON_WINDOWS from .localplatform.localplatform import ON_WINDOWS
from . import helpers from . import helpers
from .localplatform import service_stop, service_start, get_home_path, get_username from .localplatform.localplatform import service_stop, service_start, get_home_path, get_username
class FilePickerObj(TypedDict): class FilePickerObj(TypedDict):
file: Path file: Path