from uuid import uuid4 from xmlrpc.server import SimpleXMLRPCServer from xmlrpc.client import ServerProxy import logging import os import requests.graphql from pygost import gost34112012256 PASSWORD = 'gost_2012$a742ec53198ec2a5027086fba8814a89982a57112d1a72d02260161108f39b50' # Expose a function def list_contents(dir_name): logging.debug('list_contents(%s)', dir_name) return os.listdir(dir_name) def aud_add(message): logging.debug(message) return 'OK' def auth_response(challenge, server_id, is_server): # logging.debug(f'Challenge: {challenge}, Server: {server_id}, IsServer: {is_server}') msg = '%s%s%s' % (challenge, server_id, PASSWORD) response = gost34112012256.new(msg.encode('utf-8')[::-1]).digest()[::-1].hex() return {'error': False, 'response': response} def auth_challenge(): logging.debug('get challenge') return uuid4().hex def accept(params, files, url): print(params, files, url) print('Accept') return True def main(): print('Use Control-C to exit') logging.basicConfig(level=logging.DEBUG) server = SimpleXMLRPCServer(('0.0.0.0', 9000), logRequests=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) try: server.serve_forever() except KeyboardInterrupt: print('Exiting') def test(): print(requests.graphql.get_classifier()) # print(requests.graphql.get_catalog()) if __name__ == '__main__': main() # test()