92 lines
2.2 KiB
Python
92 lines
2.2 KiB
Python
import base64
|
|
import uuid
|
|
import json
|
|
import http.client
|
|
import webbrowser
|
|
|
|
|
|
def start_http_server():
|
|
"""start debug"""
|
|
webbrowser.open("ksowpscloudsvr://start=RelayHttpServer")
|
|
|
|
|
|
def get_version():
|
|
"""check http status by get version"""
|
|
try:
|
|
conn = http.client.HTTPConnection("127.0.0.1", 58890)
|
|
conn.request("POST", "/version", body="{}", headers={})
|
|
response = conn.getresponse()
|
|
response.read()
|
|
conn.close()
|
|
return response.status == 200
|
|
except:
|
|
return False
|
|
|
|
|
|
def invoke_wps_func(func, args):
|
|
|
|
# 可能触发是否允许访问
|
|
invoke_param = {
|
|
"method": func,
|
|
"args": json.dumps(args),
|
|
"AppType": "et",
|
|
}
|
|
|
|
req_uui = str(uuid.uuid4())
|
|
|
|
info = f"{json.dumps(invoke_param)});\
|
|
var xhr = new XMLHttpRequest();\
|
|
xhr.open('POST', 'http://127.0.0.1:58890/transferEcho/runParams');\
|
|
xhr.send(JSON.stringify({{id: '{req_uui}', response: res}}));void(0"
|
|
|
|
data = {
|
|
"name": "xbot-et",
|
|
"function": "var res = InvokeFromXbot",
|
|
"info": info,
|
|
"showToFront": True,
|
|
"jsPluginsXml": "",
|
|
}
|
|
|
|
payload = {
|
|
"id": req_uui,
|
|
"app": "et",
|
|
"data": "ksowebstartupet://"
|
|
+ base64.b64encode(json.dumps(data).encode()).decode(),
|
|
"mode": False,
|
|
}
|
|
|
|
conn = http.client.HTTPConnection("127.0.0.1", 58890)
|
|
payload = json.dumps(payload)
|
|
|
|
conn.request("POST", "/transfer/runParams", payload)
|
|
|
|
http_response = conn.getresponse()
|
|
data = http_response.read()
|
|
conn.close()
|
|
|
|
try:
|
|
return json.loads(data.decode("utf-8"))
|
|
except Exception as e:
|
|
print(data.decode("utf-8"))
|
|
return {"message": "failed to parse response"}
|
|
|
|
|
|
if __name__ == "__main__":
|
|
start_http_server()
|
|
print(get_version())
|
|
|
|
# print(get_version())
|
|
path = r"C:\Users\32075\OneDrive\文档\Code\RPA_Script\wps-js-extension\XbotWps\py-et\et.js"
|
|
with open(path, "r", encoding="utf8") as f:
|
|
code = f.read()
|
|
|
|
func = "inject"
|
|
args = {"code": code}
|
|
res = invoke_wps_func(func, args)
|
|
print(res)
|
|
|
|
func = "getSheets"
|
|
args = {"text": "123"}
|
|
res = invoke_wps_func(func, args)
|
|
print(res)
|