diff --git a/agkyra/agkyra/gui.py b/agkyra/agkyra/gui.py
index ade74b3653df3374c437463a0caddc906c88ee0c..fc1ead525c942c54cffb6bffb8c96ce707d8c733 100644
--- a/agkyra/agkyra/gui.py
+++ b/agkyra/agkyra/gui.py
@@ -13,18 +13,11 @@
# You should have received a copy of the GNU General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
-from wsgiref.simple_server import make_server
-# from ws4py.websocket import EchoWebSocket
-from agkyra.protocol import WebSocketProtocol
-from ws4py.server.wsgirefserver import WSGIServer, WebSocketWSGIRequestHandler
-from ws4py.server.wsgiutils import WebSocketWSGIApplication
from ws4py.client import WebSocketBaseClient
+from agkyra.protocol import HelperServer
from tempfile import NamedTemporaryFile
import subprocess
import json
-from os.path import abspath
-from threading import Thread
-from hashlib import sha1
import os
import logging
@@ -68,40 +61,10 @@ class GUI(WebSocketBaseClient):
self.close()
-class HelperServer(object):
- """Agkyra Helper Server sets a WebSocket server with the Helper protocol
- It also provided methods for running and killing the Helper server
- :param gui_id: Only the GUI with this ID is allowed to chat with the Helper
- """
-
- def __init__(self, port=0):
- """Setup the helper server"""
- self.gui_id = sha1(os.urandom(128)).hexdigest()
- WebSocketProtocol.gui_id = self.gui_id
- server = make_server(
- '', port,
- server_class=WSGIServer,
- handler_class=WebSocketWSGIRequestHandler,
- app=WebSocketWSGIApplication(handler_cls=WebSocketProtocol))
- server.initialize_websockets_manager()
- self.server, self.port = server, server.server_port
-
- def start(self):
- """Start the helper server in a thread"""
- Thread(target=self.server.serve_forever).start()
-
- def shutdown(self):
- """Shutdown the server (needs another thread) and join threads"""
- t = Thread(target=self.server.shutdown)
- t.start()
- t.join()
-
-
def run():
"""Prepare helper and GUI and run them in the proper order"""
server = HelperServer()
- addr = 'ws://localhost:%s' % server.port
- gui = GUI(addr, server.gui_id)
+ gui = GUI(server.addr, server.gui_id)
LOG.info('Start helper server')
server.start()
@@ -117,4 +80,4 @@ def run():
if __name__ == '__main__':
logging.basicConfig(filename='agkyra.log', level=logging.DEBUG)
- run(abspath('gui/app'))
+ run(os.path.abspath('gui/app'))
diff --git a/agkyra/agkyra/protocol.py b/agkyra/agkyra/protocol.py
index 7c579fb18ae5e7e4fa18343ebf3e6184780a4b1d..0f55e9b30991d2409c2f1e1d066800702c9b67c5 100644
--- a/agkyra/agkyra/protocol.py
+++ b/agkyra/agkyra/protocol.py
@@ -13,10 +13,15 @@
# You should have received a copy of the GNU General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
+from wsgiref.simple_server import make_server
from ws4py.websocket import WebSocket
+from ws4py.server.wsgiutils import WebSocketWSGIApplication
+from ws4py.server.wsgirefserver import WSGIServer, WebSocketWSGIRequestHandler
+from hashlib import sha1
+from threading import Thread
+import os
import json
import logging
-from os.path import abspath
from agkyra.syncer import (
syncer, setup, pithos_client, localfs_client, messaging)
from agkyra.config import AgkyraConfig, AGKYRA_DIR
@@ -25,6 +30,37 @@ from agkyra.config import AgkyraConfig, AGKYRA_DIR
LOG = logging.getLogger(__name__)
+class HelperServer(object):
+ """Agkyra Helper Server sets a WebSocket server with the Helper protocol
+ It also provided methods for running and killing the Helper server
+ :param gui_id: Only the GUI with this ID is allowed to chat with the Helper
+ """
+
+ def __init__(self, port=0):
+ """Setup the helper server"""
+ self.gui_id = sha1(os.urandom(128)).hexdigest()
+ WebSocketProtocol.gui_id = self.gui_id
+ server = make_server(
+ '', port,
+ server_class=WSGIServer,
+ handler_class=WebSocketWSGIRequestHandler,
+ app=WebSocketWSGIApplication(handler_cls=WebSocketProtocol))
+ server.initialize_websockets_manager()
+ self.addr = 'ws://%s:%s' % (server.server_name, server.server_port)
+ print self.addr
+ self.server = server
+
+ def start(self):
+ """Start the helper server in a thread"""
+ Thread(target=self.server.serve_forever).start()
+
+ def shutdown(self):
+ """Shutdown the server (needs another thread) and join threads"""
+ t = Thread(target=self.server.shutdown)
+ t.start()
+ t.join()
+
+
class WebSocketProtocol(WebSocket):
"""Helper-side WebSocket protocol for communication with GUI: