Merge branch 'master' of gitea.azcona-becker.net:mochapowered/mocha-python

This commit is contained in:
Michael Becker 2025-02-16 11:05:12 -05:00
commit a6edede5c3
7 changed files with 50 additions and 10 deletions

View File

@ -3,9 +3,17 @@ from mocha.web.WebServer import WebServer
from mocha.oms import Oms from mocha.oms import Oms
from mocha.oms.memory import MemoryOms from mocha.oms.memory import MemoryOms
import sys import os, sys
from getopt import getopt from getopt import getopt
import signal
def keyi(signum, frame):
print("stopping all servers")
svrmgr.stop()
print("mocha-cup done")
if __name__ == "__main__": if __name__ == "__main__":
port = 8081 port = 8081
@ -22,11 +30,17 @@ if __name__ == "__main__":
svrmgr = ServerManager() svrmgr = ServerManager()
if len(remaining) == 0: if len(remaining) == 0:
print("error: no server configurations specified") if os.path.isfile("Mochafile"):
print("[ INFO ]: percolating from Mochafile")
svrmgr.add_server_config("Mochafile")
else:
print("error: no server configurations specified, or Mochafile not present")
for library in remaining: for library in remaining:
svrmgr.add_server_config(library) svrmgr.add_server_config(library)
signal.signal(signal.SIGINT, keyi)
svrmgr.start() svrmgr.start()
# from mocha.lib.LibraryManager import MochaLibraryManager # from mocha.lib.LibraryManager import MochaLibraryManager

View File

@ -0,0 +1,6 @@
class WebRequest:
def __init__(self, path : list):
self._path = path

View File

@ -6,12 +6,16 @@ import json
from ..oms import Oms from ..oms import Oms
from ..web.AssetLocation import LocalAssetLocation, RemoteAssetLocation from ..web.AssetLocation import LocalAssetLocation, RemoteAssetLocation
from ..web.WebRequest import WebRequest
class WebRequestHandler(BaseHTTPRequestHandler): class WebRequestHandler(BaseHTTPRequestHandler):
def __init__(self, request, client_address, server): def __init__(self, request, client_address, server):
BaseHTTPRequestHandler.__init__(self, request, client_address, server) BaseHTTPRequestHandler.__init__(self, request, client_address, server)
self.__oms = server._oms self.__oms = server._oms
def version_string(self) -> str:
return "Mocha User Interface Service"
@cached_property @cached_property
def url(self): def url(self):
return urlparse(self.path) return urlparse(self.path)
@ -166,8 +170,9 @@ Disallow: /
if path[1] == "d": if path[1] == "d":
if len(path) > 2: if len(path) > 2:
if path[2] == "home.htmld": if path[2] == "home.htmld":
from .pages import HomeWebPage from .ui.pages import HomeWebPage
page = HomeWebPage() page = HomeWebPage()
page.request = WebRequest(path)
self.respond_with_content(200, "OK", "application/xhtml+xml", page.render_html()) self.respond_with_content(200, "OK", "application/xhtml+xml", page.render_html())
jj = self.get_json_response() jj = self.get_json_response()

View File

@ -37,6 +37,10 @@ class WebServer():
from http.server import HTTPServer from http.server import HTTPServer
server = HTTPServer(self.__tup, WebRequestHandler) server = HTTPServer(self.__tup, WebRequestHandler)
self._server = server
server._oms = self._oms server._oms = self._oms
server._server = self server._server = self
server.serve_forever() server.serve_forever()
def shutdown(self):
self._server.shutdown()

View File

@ -8,6 +8,7 @@ class ServerManager:
def __init__(self): def __init__(self):
self._servers = [ ] self._servers = [ ]
self._threads = [ ]
def add_server_config(self, filename): def add_server_config(self, filename):
import yaml import yaml
@ -72,6 +73,11 @@ class ServerManager:
for server in self._servers: for server in self._servers:
t = threading.Thread(target = self._serve, args = [ server ]) t = threading.Thread(target = self._serve, args = [ server ])
t.start() t.start()
self._threads.append(t)
def stop(self):
for server in self._servers:
server.shutdown()
def _serve(self, server): def _serve(self, server):
server.serve_forever() server.serve_forever()

View File

@ -22,17 +22,22 @@ class BaseWebPage (WebPage):
self._oms = oms self._oms = oms
def get_client_config_script(self): def get_client_config_script(self):
tenant_name = ""
if not self.get_oms() is None:
tenant_name = self.get_oms().get_tenant_name()
return WebScript("text/javascript", content=""" return WebScript("text/javascript", content="""
// Add properties to mocha // Add properties to mocha
window.mocha = window.mocha || {}; window.mocha = window.mocha || {};
mocha.tenant = '""" + self.get_oms().get_tenant_name() + """'; mocha.tenant = '""" + tenant_name + """';
mocha.clientOrigin = 'https://wd5-impl.workday.com'; mocha.clientOrigin = 'https://wd5-impl.workday.com';
mocha.language = 'en_US'; mocha.language = 'en_US';
mocha.clientVersion = '0'; mocha.clientVersion = '0';
mocha.systemConfidenceLevel = 'PROD'; mocha.systemConfidenceLevel = 'PROD';
mocha.oauthAuthorizationPending = false; mocha.oauthAuthorizationPending = false;
mocha.proxyLoginEnabled = false; mocha.proxyLoginEnabled = false;
mocha.maintenancePageUrl = 'https://wd5-impl.workday.com/wday/drs/outage?t=cityoforlando3'; mocha.maintenancePageUrl = 'https://wd5-impl.workday.com/madi/drs/outage?t=""" + tenant_name + """';
mocha.deviceTrustDetailsUrl = ''; mocha.deviceTrustDetailsUrl = '';
mocha.pendingAuthDetailsUrl = ''; mocha.pendingAuthDetailsUrl = '';
mocha.webAuthnDetailsUrl = ''; mocha.webAuthnDetailsUrl = '';
@ -40,8 +45,8 @@ class BaseWebPage (WebPage):
// Construct init params for GWT app // Construct init params for GWT app
mocha.initParams = { mocha.initParams = {
authGatewayPath: '/wday/authgwy', authGatewayPath: '/madi/authgwy',
baseDir: '/wday/asset/ui-html/', baseDir: '/madi/asset/ui-html/',
systemConfidenceLevel: 'PROD', systemConfidenceLevel: 'PROD',
cdn: { cdn: {
endpoint: 'wd5-impl.workdaycdn.com', endpoint: 'wd5-impl.workdaycdn.com',
@ -51,8 +56,8 @@ class BaseWebPage (WebPage):
proxyEnabled: false, proxyEnabled: false,
currentVersion: '20.0.04.045', currentVersion: '20.0.04.045',
serviceType: 'authgwy', serviceType: 'authgwy',
loginAuthURL: '/cityoforlando3/login-auth.xml', loginAuthURL: '/""" + tenant_name + """/login-auth.xml',
environment: 'Implementation - cityoforlando3', environment: 'Implementation - """ + tenant_name + """',
environmentType: 'IMPL' environmentType: 'IMPL'
}; };
""") """)