Browse Source

fix standalone joinmarketd listening on all interfaces

master
undeath 8 years ago
parent
commit
467053beb9
  1. 20
      jmclient/jmclient/client_protocol.py
  2. 3
      jmdaemon/jmdaemon/__init__.py
  3. 16
      jmdaemon/jmdaemon/daemon_protocol.py
  4. 15
      scripts/joinmarketd.py

20
jmclient/jmclient/client_protocol.py

@ -1,26 +1,17 @@
#! /usr/bin/env python
from __future__ import print_function
from twisted.python.log import startLogging, err
from twisted.internet import protocol, reactor, task
from twisted.internet.task import LoopingCall
from twisted.internet.error import (ConnectionLost, ConnectionAborted,
ConnectionClosed, ConnectionDone)
from twisted.python import failure
from twisted.protocols import amp
from twisted.internet.protocol import ClientFactory
from twisted.internet.endpoints import TCP4ClientEndpoint
try:
from twisted.internet.ssl import ClientContextFactory
from twisted.internet import ssl
except ImportError:
pass
from jmbase import commands
from sys import stdout
import json
import random
import string
import time
import hashlib
import os
import sys
@ -473,7 +464,7 @@ def start_reactor(host, port, factory, ish=True, daemon=False, rs=True, gui=Fals
usessl = True if jm_single().config.get("DAEMON", "use_ssl") != 'false' else False
if daemon:
try:
from jmdaemon import JMDaemonServerProtocolFactory
from jmdaemon import JMDaemonServerProtocolFactory, start_daemon
except ImportError:
jlog.error("Cannot start daemon without jmdaemon package; "
"either install it, and restart, or, if you want "
@ -484,13 +475,8 @@ def start_reactor(host, port, factory, ish=True, daemon=False, rs=True, gui=Fals
orgport = port
while True:
try:
if usessl:
reactor.listenSSL(port, dfactory,
ssl.DefaultOpenSSLContextFactory(
"./ssl/key.pem", "./ssl/cert.pem"),
interface=host)
else:
reactor.listenTCP(port, dfactory, interface=host)
start_daemon(host, port, dfactory, usessl,
'./ssl/key.pem', './ssl/cert.pem')
jlog.info("Listening on port " + str(port))
break
except Exception:

3
jmdaemon/jmdaemon/__init__.py

@ -9,7 +9,8 @@ from jmbase.support import get_log
from .message_channel import MessageChannel, MessageChannelCollection
from .orderbookwatch import OrderbookWatch
from jmbase import commands
from .daemon_protocol import JMDaemonServerProtocolFactory, JMDaemonServerProtocol
from .daemon_protocol import (JMDaemonServerProtocolFactory, JMDaemonServerProtocol,
start_daemon)
from .protocol import (COMMAND_PREFIX, ORDER_KEYS, NICK_HASH_LENGTH,
NICK_MAX_ENCODED, JM_VERSION, JOINMARKET_NICK_HEADER)
from .message_channel import MessageChannelCollection

16
jmdaemon/jmdaemon/daemon_protocol.py

@ -13,13 +13,12 @@ from .irc import IRCMessageChannel
from jmbase.commands import *
from jmbase import _byteify
from twisted.protocols import amp
from twisted.internet import reactor
from twisted.internet import reactor, ssl
from twisted.internet.protocol import ServerFactory
from twisted.internet.error import (ConnectionLost, ConnectionAborted,
ConnectionClosed, ConnectionDone)
from twisted.python import failure, log
import json
import time
import threading
import os
import copy
@ -597,4 +596,15 @@ class JMDaemonServerProtocolFactory(ServerFactory):
protocol = JMDaemonServerProtocol
def buildProtocol(self, addr):
return JMDaemonServerProtocol(self)
return JMDaemonServerProtocol(self)
def start_daemon(host, port, factory, usessl=False, sslkey=None, sslcert=None):
if usessl:
assert sslkey
assert sslcert
reactor.listenSSL(
port, factory, ssl.DefaultOpenSSLContextFactory(sslkey, sslcert),
interface=host)
else:
reactor.listenTCP(port, factory, interface=host)

15
scripts/joinmarketd.py

@ -3,7 +3,7 @@ from twisted.internet import reactor, ssl
from twisted.python.log import startLogging, err
import jmdaemon
def startup_joinmarketd(port, usessl, finalizer=None, finalizer_args=None):
def startup_joinmarketd(host, port, usessl, finalizer=None, finalizer_args=None):
"""Start event loop for joinmarket daemon here.
Args:
port : port over which to serve the daemon
@ -12,11 +12,8 @@ def startup_joinmarketd(port, usessl, finalizer=None, finalizer_args=None):
"""
startLogging(sys.stdout)
factory = jmdaemon.JMDaemonServerProtocolFactory()
if usessl:
reactor.listenSSL(port, factory, ssl.DefaultOpenSSLContextFactory(
"./ssl/key.pem", "./ssl/cert.pem"))
else:
reactor.listenTCP(port, factory)
jmdaemon.start_daemon(host, port, factory, usessl,
'./ssl/key.pem', './ssl/cert.pem')
if finalizer:
reactor.addSystemEventTrigger("after", "shutdown", finalizer,
finalizer_args)
@ -32,4 +29,8 @@ if __name__ == "__main__":
if len(sys.argv) > 2:
if int(sys.argv[2]) != 0:
usessl = True
startup_joinmarketd(port, usessl)
if len(sys.argv) > 3:
host = sys.argv[3]
else:
host = 'localhost'
startup_joinmarketd(host, port, usessl)

Loading…
Cancel
Save