Fix GetCatalog

This commit is contained in:
Ivan Vazhenin
2023-03-26 13:14:52 +03:00
parent 15ee28cb0c
commit 65c0b561a7
7 changed files with 54 additions and 15 deletions

50
main.py
View File

@@ -1,11 +1,15 @@
import datetime
from uuid import uuid4
from xmlrpc.server import SimpleXMLRPCServer
from xmlrpc.client import ServerProxy
import logging
import os
import requests.graphql
import os.path
from requests.graphql import get_catalog
from pygost import gost34112012256
import xml.etree.ElementTree as ET
from requests.request_xml_service import RequestXmlService
import zipfile
PASSWORD = 'gost_2012$a742ec53198ec2a5027086fba8814a89982a57112d1a72d02260161108f39b50'
@@ -29,25 +33,57 @@ def auth_response(challenge, server_id, is_server):
def auth_challenge():
logging.debug('get challenge')
# logging.debug('get challenge')
return uuid4().hex
def accept(params, files, url):
print(params, files, url)
print('Accept')
date = datetime.datetime.now()
if params['query_type'] == 4:
rxmls = RequestXmlService()
req = ET.fromstring(params['query_data'])
req_id = rxmls.get_request_uuid(req)
res_id = uuid4().hex
res = rxmls.get_request_document(res_id, req_id)
rxmls.set_result(res, 0, '')
response_params = {
'from': params['to'],
'to': params['from'],
'ts_added': date.timestamp(),
'user_id': '1',
'user_id_to': '3302',
'query_type': 1004,
'query_data': ET.tostring(res, encoding='unicode', xml_declaration=True)
}
catalog = get_catalog()
filename = uuid4().hex
filepath = '/tmp/' + filename
zipf = zipfile.ZipFile(filepath, "w")
zipf.writestr('WF.CLL', catalog)
zipf.close()
response_files = [{'name': filename, 'url': filepath, 'size': os.path.getsize(filepath)}]
proxy = ServerProxy(url)
proxy.send(response_params, response_files, 'http://10.10.8.27:9000/')
return True
def onSent(params, files, callback_url):
print('onSent')
def main():
print('Use Control-C to exit')
logging.basicConfig(level=logging.DEBUG)
server = SimpleXMLRPCServer(('0.0.0.0', 9000), logRequests=True)
server = SimpleXMLRPCServer(('0.0.0.0', 9000), logRequests=True, allow_none=True)
server.register_function(list_contents)
server.register_function(aud_add)
server.register_function(auth_response)
server.register_function(auth_challenge)
server.register_function(accept)
server.register_function(onSent)
try:
server.serve_forever()
except KeyboardInterrupt:
@@ -55,8 +91,10 @@ def main():
def test():
print(requests.graphql.get_classifier())
# print(requests.graphql.get_catalog())
params = {'from': 'tcp://kptsp_vb', 'query_data': '<?xml version="1.0" encoding="utf-8"?><request><header parcel_id="1665c872f24e46589f36d264a75a72dd"/><getCatalog from="1675776233.21" withRef="NO"/></request>', 'query_type': 4, 'to': 'tcp://bnd127', 'user_id': '1', 'ts_added': 1679213998.282467}
files = []
url = 'http://127.0.0.1:7000/xmlrpc'
accept(params, files, url)
if __name__ == '__main__':