def __init__(self, args): global emacs_width, emacs_height, eaf_config_dir, proxy_string (emacs_width, emacs_height, proxy_host, proxy_port, proxy_type, config_dir, emacs_server_port, var_dict_string) = args emacs_width = int(emacs_width) emacs_height = int(emacs_height) eaf_config_dir = os.path.join(os.path.expanduser(config_dir), '') self.buffer_dict = {} self.view_dict = {} self.emacs_var_dict = {} self.update_emacs_var_dict(var_dict_string) self.server = ThreadingEPCServer(('localhost', 0), log_traceback=True) self.server.logger.setLevel(logging.DEBUG) ch = logging.FileHandler( filename=os.path.expanduser('~/.emacs.d/eaf/epc_log.txt'), mode='w') ch.setLevel(logging.DEBUG) self.server.logger.addHandler(ch) self.server_thread = threading.Thread(target=self.server.serve_forever) self.server_thread.allow_reuse_address = True self.server.register_instance(self) self.server_thread.start() # NOTE: # Emacs epc client need fetch port from Python process print. # And this print must be first print code, otherwise Emacs client will failed to start. self.server.print_port() self.emacs_server_connect = build_emacs_server_connect( int(emacs_server_port)) self.first_start(self.webengine_include_private_codec()) self.session_file = os.path.join(eaf_config_dir, "session.json") # Set Network proxy. if proxy_host != "" and proxy_port != "": proxy_string = "{0}://{1}:{2}".format(proxy_type, proxy_host, proxy_port) proxy = QNetworkProxy() if proxy_type == "socks5": proxy.setType(QNetworkProxy.Socks5Proxy) elif proxy_type == "http": proxy.setType(QNetworkProxy.HttpProxy) proxy.setHostName(proxy_host) proxy.setPort(int(proxy_port)) QNetworkProxy.setApplicationProxy(proxy)
def __init__(self, args): global emacs_width, emacs_height, eaf_config_dir, proxy_string # Parse init arguments. (emacs_width, emacs_height, proxy_host, proxy_port, proxy_type, config_dir, emacs_server_port, var_dict_string) = args emacs_width = int(emacs_width) emacs_height = int(emacs_height) eaf_config_dir = os.path.join(os.path.expanduser(config_dir), '') # Init variables. self.buffer_dict = {} self.view_dict = {} self.emacs_var_dict = {} self.session_file = os.path.join(eaf_config_dir, "session.json") # Update Emacs var dictionary. self.update_emacs_var_dict(var_dict_string) # Init EPC client port. init_epc_client(int(emacs_server_port)) # Build EPC server. self.server = ThreadingEPCServer(('localhost', 0), log_traceback=True) self.server.logger.setLevel(logging.DEBUG) self.server.allow_reuse_address = True if not os.path.exists(eaf_config_dir): os.makedirs(eaf_config_dir) ch = logging.FileHandler(filename=os.path.join(eaf_config_dir, 'epc_log.txt'), mode='w') ch.setLevel(logging.DEBUG) self.server.logger.addHandler(ch) self.server.register_instance( self) # register instance functions let elisp side call # Start EPC server with sub-thread, avoid block Qt main loop. self.server_thread = threading.Thread(target=self.server.serve_forever) self.server_thread.start() # Pass epc port and webengine codec information to Emacs when first start EAF. eval_in_emacs('eaf--first-start', [ self.server.server_address[1], self.webengine_include_private_codec() ]) # Set Network proxy. self.proxy = (proxy_type, proxy_host, proxy_port) self.is_proxy = False if proxy_type != "" and proxy_host != "" and proxy_port != "": self.enable_proxy()
def setup_epc(self): self.server = ThreadingEPCServer(('localhost', 0), log_traceback=True) # Setup logger self.server.logger.setLevel(logging.DEBUG) ch = logging.FileHandler(filename='python-epc.log', mode='w') ch.setLevel(logging.DEBUG) self.server.logger.addHandler(ch) # Setup server thread self.server_thread = threading.Thread(target=self.server.serve_forever) self.server_thread.allow_reuse_address = True # Define and register RPC functions def destroy(): gobject.idle_add(gtk.Widget.destroy, self.window) def set_button_label(label): gobject.idle_add(self.button.set_label, label) self.server.register_function(destroy) self.server.register_function(set_button_label)
def restore_cookies(self): if os.path.exists(self.cookie_path): with open(self.cookie_path, 'r') as f: lines = '' for line in f: lines = lines + line allCookies = QNetworkCookie.parseCookies(lines) QNetworkCookieJar.setAllCookies(self, allCookies) if __name__ == '__main__': import sys import signal app = QApplication(sys.argv) server = ThreadingEPCServer(('localhost', 0), log_traceback=True) server_thread = threading.Thread(target=server.serve_forever) server_thread.allow_reuse_address = True emacs_xwindow_id = 0 buffer_dict = {} cookie_jar = CookieJar() print_console_info = False if len(sys.argv) >= 2 and sys.argv[1] == "--enable-proxy": QNetworkProxy.setApplicationProxy(QNetworkProxy(QNetworkProxy.Socks5Proxy, "127.0.0.1", 7070))
def __init__(self, args): global emacs_width, emacs_height, proxy_string # Parse init arguments. (emacs_width, emacs_height, emacs_server_port) = args emacs_width = int(emacs_width) emacs_height = int(emacs_height) # Init variables. self.module_dict = {} self.buffer_dict = {} self.view_dict = {} for name in [ "scroll_other_buffer", "eval_js_function", "eval_js_code", "action_quit", "send_key", "send_key_sequence", "handle_search_forward", "handle_search_backward", "set_focus_text" ]: self.build_buffer_function(name) for name in [ "execute_js_function", "execute_js_code", "execute_function", "execute_function_with_args" ]: self.build_buffer_return_function(name) # Init EPC client port. init_epc_client(int(emacs_server_port)) # Build EPC server. self.server = ThreadingEPCServer(('localhost', 0), log_traceback=True) self.server.allow_reuse_address = True # import logging # self.server = ThreadingEPCServer(('localhost', 0) # self.server.logger.setLevel(logging.DEBUG) eaf_config_dir = get_emacs_config_dir() self.session_file = os.path.join(eaf_config_dir, "session.json") if not os.path.exists(eaf_config_dir): os.makedirs(eaf_config_dir) # ch = logging.FileHandler(filename=os.path.join(eaf_config_dir, 'epc_log.txt'), mode='w') # formatter = logging.Formatter('%(asctime)s | %(levelname)-8s | %(lineno)04d | %(message)s') # ch.setFormatter(formatter) # ch.setLevel(logging.DEBUG) # self.server.logger.addHandler(ch) self.server.register_instance( self) # register instance functions let elisp side call # Start EPC server with sub-thread, avoid block Qt main loop. self.server_thread = threading.Thread(target=self.server.serve_forever) self.server_thread.start() # Pass epc port and webengine codec information to Emacs when first start EAF. eval_in_emacs('eaf--first-start', [self.server.server_address[1]]) # Disable use system proxy, avoid page slow when no network connected. QNetworkProxyFactory.setUseSystemConfiguration(False) # Set Network proxy. (proxy_host, proxy_port, proxy_type) = get_emacs_vars( ["eaf-proxy-host", "eaf-proxy-port", "eaf-proxy-type"]) self.proxy = (proxy_type, proxy_host, proxy_port) self.is_proxy = False if proxy_type != "" and proxy_host != "" and proxy_port != "": self.enable_proxy()
#epc_browser.py from browser import Browser from epc.server import EPCServer from epc.server import ThreadingEPCServer import threading global server server = None try: __IPYTHON__ server = ThreadingEPCServer(('localhost', 0)) except: server = EPCServer(('localhost', 0)) class EpcBrowser(Browser): def setup(self): result = Browser.setup(self, visible=True, driver="firefox_firebug") return result global browser browser = EpcBrowser() browser.setup() def js_ex(string): print "js_ex " result = browser.js_ex(string) print result return result
def __init__(self, args): global emacs_width, emacs_height, eaf_config_dir, proxy_string # Parse init arguments. (emacs_width, emacs_height, proxy_host, proxy_port, proxy_type, config_dir, emacs_server_port, var_dict_string) = args emacs_width = int(emacs_width) emacs_height = int(emacs_height) eaf_config_dir = os.path.join(os.path.expanduser(config_dir), '') # Init variables. self.buffer_dict = {} self.view_dict = {} self.emacs_var_dict = {} self.session_file = os.path.join(eaf_config_dir, "session.json") # Update Emacs var dictionary. self.update_emacs_var_dict(var_dict_string) # Build EPC client. self.client = EPCClient(("localhost", int(emacs_server_port)), log_traceback=True) # Build EPC server. self.server = ThreadingEPCServer(('localhost', 0), log_traceback=True) self.server.logger.setLevel(logging.DEBUG) self.server.allow_reuse_address = True if not os.path.exists(eaf_config_dir): os.makedirs(eaf_config_dir) ch = logging.FileHandler(filename=os.path.join(eaf_config_dir, 'epc_log.txt'), mode='w') ch.setLevel(logging.DEBUG) self.server.logger.addHandler(ch) self.server.register_instance( self) # register instance functions let elisp side call # Start EPC server with sub-thread, avoid block Qt main loop. self.server_thread = threading.Thread(target=self.server.serve_forever) self.server_thread.start() # Pass epc port and webengine codec information to Emacs when first start EAF. self.first_start(self.server.server_address[1], self.webengine_include_private_codec()) # Set Network proxy. if proxy_host != "" and proxy_port != "": proxy_string = "{0}://{1}:{2}".format(proxy_type, proxy_host, proxy_port) proxy = QNetworkProxy() if proxy_type == "socks5": proxy.setType(QNetworkProxy.Socks5Proxy) elif proxy_type == "http": proxy.setType(QNetworkProxy.HttpProxy) proxy.setHostName(proxy_host) proxy.setPort(int(proxy_port)) QNetworkProxy.setApplicationProxy(proxy)