Beispiel #1
0
def main():
    session = database.make_session()
    try:
        print "WARNING: DO NOT RUN WHILE SPUTNIK IS RUNNING. SHUT EVERYTHING DOWN FIRST"
        leo = LowEarthOrbit(session)
        if len(sys.argv) == 1:
            try:
                while True:
                    leo.parse(raw_input("leo> "))
            except EOFError:
                pass
        else:
            leo.parse(" ".join(sys.argv[1:]))

        # Before committing run a sanity check on all contracts
        contracts = session.query(models.Contract)
        failures = [
            contract.ticker for contract in contracts
            if not contract.sanity_check
        ]
        if len(failures):
            print "CONTRACTS FAILED SANITY CHECK"
            print failures
            session.rollback()
        else:
            session.commit()

    except Exception, e:
        print e
        session.rollback()
        raise e
Beispiel #2
0
def main():
    session = database.make_session()
    try:
        print "WARNING: DO NOT RUN WHILE SPUTNIK IS RUNNING. SHUT EVERYTHING DOWN FIRST"
        leo = LowEarthOrbit(session)
        if len(sys.argv) == 1:
            try:
                while True:
                    leo.parse(raw_input("leo> "))
            except EOFError:
                pass
        else:
            leo.parse(" ".join(sys.argv[1:]))

        # Before committing run a sanity check on all contracts
        contracts = session.query(models.Contract)
        failures = [contract.ticker for contract in contracts if not contract.sanity_check]
        if len(failures):
            print "CONTRACTS FAILED SANITY CHECK"
            print failures
            session.rollback()
        else:
            session.commit()

    except Exception, e:
        print e
        session.rollback()
	raise e
Beispiel #3
0
    def setUp(self):
        logging.basicConfig(format='%(asctime)s - %(levelname)s - %(funcName)s() %(lineno)d:\t %(message)s',
                            level=logging.DEBUG)
        os.chdir(os.path.dirname(os.path.abspath(__file__)))
        fix_config()

        self.session = database.make_session()

        self.leo = leo.LowEarthOrbit(self.session)
        self.run_leo(db_init)
Beispiel #4
0
def main():
    log.startLogging(sys.stdout)
    session = database.make_session()
    ticker = args[0]

    try:
        contract = session.query(models.Contract).filter_by(ticker=ticker).one()
    except Exception, e:
        session.rollback()
        log.err("Cannot determine ticker id. %s" % e)
        log.err()
        raise e
Beispiel #5
0
def main():
    log.startLogging(sys.stdout)

    session = database.make_session()

    safe_price_subscriber = connect_subscriber(config.get("safe_price_forwarder", "zmq_backend_address"))
    safe_price_subscriber.subscribe('')
    sendmail = Sendmail(config.get("riskmanager", "from_email"))
    accountant = AccountantProxy("dealer",
                                 config.get("accountant", "riskmanager_export"),
                                 config.getint("accountant", "riskmanager_export_base_port"))

    riskmanager = RiskManager(session, sendmail, safe_price_subscriber, accountant)

    reactor.run()
Beispiel #6
0
def main():
    log.startLogging(sys.stdout)

    session = database.make_session()

    safe_price_subscriber = connect_subscriber(
        config.get("safe_price_forwarder", "zmq_backend_address"))
    safe_price_subscriber.subscribe('')
    sendmail = Sendmail(config.get("riskmanager", "from_email"))
    accountant = AccountantProxy(
        "dealer", config.get("accountant", "riskmanager_export"),
        config.getint("accountant", "riskmanager_export_base_port"))

    riskmanager = RiskManager(session, sendmail, safe_price_subscriber,
                              accountant)

    reactor.run()
Beispiel #7
0
def main():
    log.startLogging(sys.stdout)
    monitors = ["administrator", "cashier", "ledger", "webserver"]
    session = database.make_session()
    proxy = AlertsProxy(config.get("alerts", "export"))
    watchdogs = {}
    for name in monitors:
        watchdogs[name] = Watchdog(name, config.get("watchdog", name), proxy)
        watchdogs[name].run()

    num_accountants = config.getint("accountant", "num_procs")
    for i in range(num_accountants):
        name = "accountant_%d" % i
        watchdogs[name] = Watchdog(name, config.get("watchdog", "accountant") % (config.getint("watchdog", "accountant_base_port") + i), proxy)
        watchdogs[name].run()

    engine_base_port = config.getint("watchdog", "engine_base_port")
    for contract in session.query(models.Contract).filter_by(active=True).all():
        if contract.contract_type != "cash":
            watchdogs[contract.ticker] = Watchdog(contract.ticker, config.get("watchdog", "engine") % (engine_base_port +
                                                                                          int(contract.id)), proxy)
            watchdogs[contract.ticker].run()

    reactor.run()
Beispiel #8
0
def main():
    log.startLogging(sys.stdout)

    accountant = AccountantProxy("dealer",
            config.get("accountant", "cashier_export"),
            config.getint("accountant", "cashier_export_base_port"))

    session = db.make_session()
    bitcoin_conf = config.get("cashier", "bitcoin_conf")

    log.msg('connecting to bitcoin client')

    bitcoinrpc = {'BTC': BitcoinRpc(bitcoin_conf, 1)}
    compropago = Compropago(config.get("cashier", "compropago_key"))
    cold_wallet_period = config.getint("cashier", "cold_wallet_period")
    sendmail=Sendmail(config.get("administrator", "email"))
    minimum_confirmations = config.getint("cashier", "minimum_confirmations")
    alerts_proxy = AlertsProxy(config.get("alerts", "export"))
    bitgo_config = {'use_production': not config.getboolean("cashier", "testnet"),
                    'client_id': config.get("bitgo", "client_id"),
                    'client_secret': config.get("bitgo", "client_secret")}
    bitgo = BitGo(**bitgo_config)
    bitgo_private_key_file = config.get("cashier", "bitgo_private_key_file")

    cashier = Cashier(session, accountant, bitcoinrpc, compropago,
                      cold_wallet_period=cold_wallet_period,
                      sendmail=sendmail,
                      minimum_confirmations=minimum_confirmations,
                      alerts=alerts_proxy,
                      bitgo=bitgo,
                      bitgo_private_key_file=bitgo_private_key_file,
                      testnet=config.getboolean("cashier", "testnet"),
    )

    administrator_export = AdministratorExport(cashier)
    accountant_export = AccountantExport(cashier)
    webserver_export = WebserverExport(cashier)

    watchdog(config.get("watchdog", "cashier"))
    router_share_async(administrator_export,
                     config.get("cashier", "administrator_export"))
    pull_share_async(accountant_export,
                    config.get("cashier", "accountant_export"))
    router_share_async(webserver_export,
                       config.get("cashier", "webserver_export"))

    public_server = Resource()
    public_server.putChild('compropago', CompropagoHook(cashier))
    private_server = Resource()
    private_server.putChild('bitcoin', BitcoinNotify(cashier))


    if config.getboolean("webserver", "ssl"):
        key = config.get("webserver", "ssl_key")
        cert = config.get("webserver", "ssl_cert")
        cert_chain = config.get("webserver", "ssl_cert_chain")
        contextFactory = ssl.ChainedOpenSSLContextFactory(key, cert_chain)

        reactor.listenSSL(config.getint("cashier", "public_port"),
                      Site(public_server), contextFactory,
                      interface=config.get("cashier", "public_interface"))
    else:
        reactor.listenTCP(config.getint("cashier", "public_port"),
                      Site(public_server),
                      interface=config.get("cashier", "public_interface"))

    reactor.listenTCP(config.getint("cashier", "private_port"), Site(private_server),
                      interface=config.get("cashier", "private_interface"))

    reactor.run()
Beispiel #9
0
def main():
    log.startLogging(sys.stdout)

    accountant = AccountantProxy(
        "dealer", config.get("accountant", "cashier_export"),
        config.getint("accountant", "cashier_export_base_port"))

    session = db.make_session()
    bitcoin_conf = config.get("cashier", "bitcoin_conf")

    log.msg('connecting to bitcoin client')

    bitcoinrpc = {'BTC': BitcoinRpc(bitcoin_conf, 1)}
    compropago = Compropago(config.get("cashier", "compropago_key"))
    cold_wallet_period = config.getint("cashier", "cold_wallet_period")
    sendmail = Sendmail(config.get("administrator", "email"))
    minimum_confirmations = config.getint("cashier", "minimum_confirmations")
    alerts_proxy = AlertsProxy(config.get("alerts", "export"))
    bitgo_config = {
        'use_production': not config.getboolean("cashier", "testnet"),
        'client_id': config.get("bitgo", "client_id"),
        'client_secret': config.get("bitgo", "client_secret")
    }
    bitgo = BitGo(**bitgo_config)
    bitgo_private_key_file = config.get("cashier", "bitgo_private_key_file")

    cashier = Cashier(
        session,
        accountant,
        bitcoinrpc,
        compropago,
        cold_wallet_period=cold_wallet_period,
        sendmail=sendmail,
        minimum_confirmations=minimum_confirmations,
        alerts=alerts_proxy,
        bitgo=bitgo,
        bitgo_private_key_file=bitgo_private_key_file,
        testnet=config.getboolean("cashier", "testnet"),
    )

    administrator_export = AdministratorExport(cashier)
    accountant_export = AccountantExport(cashier)
    webserver_export = WebserverExport(cashier)

    watchdog(config.get("watchdog", "cashier"))
    router_share_async(administrator_export,
                       config.get("cashier", "administrator_export"))
    pull_share_async(accountant_export,
                     config.get("cashier", "accountant_export"))
    router_share_async(webserver_export,
                       config.get("cashier", "webserver_export"))

    public_server = Resource()
    public_server.putChild('compropago', CompropagoHook(cashier))
    private_server = Resource()
    private_server.putChild('bitcoin', BitcoinNotify(cashier))

    if config.getboolean("webserver", "ssl"):
        key = config.get("webserver", "ssl_key")
        cert = config.get("webserver", "ssl_cert")
        cert_chain = config.get("webserver", "ssl_cert_chain")
        contextFactory = ssl.ChainedOpenSSLContextFactory(key, cert_chain)

        reactor.listenSSL(config.getint("cashier", "public_port"),
                          Site(public_server),
                          contextFactory,
                          interface=config.get("cashier", "public_interface"))
    else:
        reactor.listenTCP(config.getint("cashier", "public_port"),
                          Site(public_server),
                          interface=config.get("cashier", "public_interface"))

    reactor.listenTCP(config.getint("cashier", "private_port"),
                      Site(private_server),
                      interface=config.get("cashier", "private_interface"))

    reactor.run()
Beispiel #10
0
# This Source Code Form is subject to the terms of the Mozilla Public
# License, v. 2.0. If a copy of the MPL was not distributed with this
# file, You can obtain one at http://mozilla.org/MPL/2.0/.
#

from sqlalchemy.orm.exc import NoResultFound
import sys
import os

from sputnik.database import database, models
from sputnik.rpc import txbitcoinrpc
import getpass
from sputnik import config
from twisted.internet import defer, reactor, task

db_session = database.make_session(username=getpass.getuser())
print config.get("cashier", "bitcoin_conf")
conn = txbitcoinrpc.BitcoinRpc(config.get("cashier", "bitcoin_conf"))

#conn.walletpassphrase('pass',10, dont_raise=True)
count = 0


def go():
    d = conn.keypoolrefill()

    def get_addresses(result):
        quantity = 100

        dl = defer.DeferredList(
            [conn.getnewaddress() for i in range(quantity)])
# This Source Code Form is subject to the terms of the Mozilla Public
# License, v. 2.0. If a copy of the MPL was not distributed with this
# file, You can obtain one at http://mozilla.org/MPL/2.0/.
#

from sqlalchemy.orm.exc import NoResultFound
import sys
import os

from sputnik.database import database, models
from sputnik.rpc import txbitcoinrpc
import getpass
from sputnik import config
from twisted.internet import defer, reactor, task

db_session = database.make_session(username=getpass.getuser())
print config.get("cashier", "bitcoin_conf")
conn = txbitcoinrpc.BitcoinRpc(config.get("cashier", "bitcoin_conf"))

# conn.walletpassphrase('pass',10, dont_raise=True)
count = 0


def go():
    d = conn.keypoolrefill()

    def get_addresses(result):
        quantity = 100

        dl = defer.DeferredList([conn.getnewaddress() for i in range(quantity)])