finish up removing daemon queue, migrate shutdown to event system
parent
a801960179
commit
88fe605762
|
@ -21,7 +21,6 @@ from communicatorutils import lookupblocks
|
||||||
from communicatorutils import lookupadders
|
from communicatorutils import lookupadders
|
||||||
from communicatorutils import connectnewpeers
|
from communicatorutils import connectnewpeers
|
||||||
from communicatorutils import uploadblocks
|
from communicatorutils import uploadblocks
|
||||||
from communicatorutils import daemonqueuehandler
|
|
||||||
from communicatorutils import announcenode, deniableinserts
|
from communicatorutils import announcenode, deniableinserts
|
||||||
from communicatorutils import cooldownpeer
|
from communicatorutils import cooldownpeer
|
||||||
from communicatorutils import housekeeping
|
from communicatorutils import housekeeping
|
||||||
|
@ -32,7 +31,6 @@ from etc import humanreadabletime
|
||||||
import onionrservices
|
import onionrservices
|
||||||
import filepaths
|
import filepaths
|
||||||
from onionrblocks import storagecounter
|
from onionrblocks import storagecounter
|
||||||
from coredb import daemonqueue
|
|
||||||
from coredb import dbfiles
|
from coredb import dbfiles
|
||||||
from netcontroller import NetController
|
from netcontroller import NetController
|
||||||
from . import bootstrappeers
|
from . import bootstrappeers
|
||||||
|
@ -120,10 +118,6 @@ class OnionrCommunicatorDaemon:
|
||||||
# to avoid downloading full lists all the time
|
# to avoid downloading full lists all the time
|
||||||
self.dbTimestamps = {}
|
self.dbTimestamps = {}
|
||||||
|
|
||||||
# Clear the daemon queue for any dead messages
|
|
||||||
if os.path.exists(dbfiles.daemon_queue_db):
|
|
||||||
daemonqueue.clear_daemon_queue()
|
|
||||||
|
|
||||||
# Loads in and starts the enabled plugins
|
# Loads in and starts the enabled plugins
|
||||||
plugins.reload()
|
plugins.reload()
|
||||||
|
|
||||||
|
@ -183,11 +177,6 @@ class OnionrCommunicatorDaemon:
|
||||||
self, uploadblocks.upload_blocks_from_communicator,
|
self, uploadblocks.upload_blocks_from_communicator,
|
||||||
5, my_args=[self], requires_peer=True, max_threads=1)
|
5, my_args=[self], requires_peer=True, max_threads=1)
|
||||||
|
|
||||||
# Timer to process the daemon command queue
|
|
||||||
OnionrCommunicatorTimers(
|
|
||||||
self, daemonqueuehandler.handle_daemon_commands,
|
|
||||||
6, my_args=[self], max_threads=3)
|
|
||||||
|
|
||||||
# Setup direct connections
|
# Setup direct connections
|
||||||
if config.get('general.socket_servers', False):
|
if config.get('general.socket_servers', False):
|
||||||
self.services = onionrservices.OnionrServices()
|
self.services = onionrservices.OnionrServices()
|
||||||
|
|
|
@ -18,7 +18,6 @@ from communicator import onlinepeers
|
||||||
from onionrutils import blockmetadata
|
from onionrutils import blockmetadata
|
||||||
from onionrutils import validatemetadata
|
from onionrutils import validatemetadata
|
||||||
from coredb import blockmetadb
|
from coredb import blockmetadb
|
||||||
from coredb import daemonqueue
|
|
||||||
from onionrutils.localcommand import local_command
|
from onionrutils.localcommand import local_command
|
||||||
import onionrcrypto
|
import onionrcrypto
|
||||||
import onionrstorage
|
import onionrstorage
|
||||||
|
|
|
@ -1 +1 @@
|
||||||
from . import keydb, blockmetadb, daemonqueue
|
from . import keydb, blockmetadb
|
|
@ -1,9 +1,14 @@
|
||||||
'''
|
"""
|
||||||
Onionr - Private P2P Communication
|
Onionr - Private P2P Communication
|
||||||
|
|
||||||
Shutdown the node either hard or cleanly
|
Shutdown the node either hard or cleanly
|
||||||
'''
|
"""
|
||||||
'''
|
from flask import Blueprint, Response
|
||||||
|
from flask import g
|
||||||
|
from onionrblocks import onionrblockapi
|
||||||
|
import onionrexceptions
|
||||||
|
from onionrutils import stringvalidators
|
||||||
|
"""
|
||||||
This program is free software: you can redistribute it and/or modify
|
This program is free software: you can redistribute it and/or modify
|
||||||
it under the terms of the GNU General Public License as published by
|
it under the terms of the GNU General Public License as published by
|
||||||
the Free Software Foundation, either version 3 of the License, or
|
the Free Software Foundation, either version 3 of the License, or
|
||||||
|
@ -16,12 +21,8 @@
|
||||||
|
|
||||||
You should have received a copy of the GNU General Public License
|
You should have received a copy of the GNU General Public License
|
||||||
along with this program. If not, see <https://www.gnu.org/licenses/>.
|
along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||||
'''
|
"""
|
||||||
from flask import Blueprint, Response
|
|
||||||
from onionrblocks import onionrblockapi
|
|
||||||
import onionrexceptions
|
|
||||||
from onionrutils import stringvalidators
|
|
||||||
from coredb import daemonqueue
|
|
||||||
shutdown_bp = Blueprint('shutdown', __name__)
|
shutdown_bp = Blueprint('shutdown', __name__)
|
||||||
|
|
||||||
def shutdown(client_api_inst):
|
def shutdown(client_api_inst):
|
||||||
|
@ -35,5 +36,5 @@ def shutdown(client_api_inst):
|
||||||
@shutdown_bp.route('/shutdownclean')
|
@shutdown_bp.route('/shutdownclean')
|
||||||
def shutdown_clean():
|
def shutdown_clean():
|
||||||
# good for calling from other clients
|
# good for calling from other clients
|
||||||
daemonqueue.daemon_queue_add('shutdown')
|
g.too_many.get_by_string("OnionrCommunicatorDaemon").shutdown = True
|
||||||
return Response("bye")
|
return Response("bye")
|
|
@ -8,6 +8,7 @@ import platform
|
||||||
import sqlite3
|
import sqlite3
|
||||||
from threading import Thread
|
from threading import Thread
|
||||||
from gevent import time
|
from gevent import time
|
||||||
|
from gevent import spawn
|
||||||
|
|
||||||
import toomanyobjs
|
import toomanyobjs
|
||||||
|
|
||||||
|
@ -19,7 +20,6 @@ from onionrplugins import onionrevents as events
|
||||||
from netcontroller import NetController
|
from netcontroller import NetController
|
||||||
from onionrutils import localcommand
|
from onionrutils import localcommand
|
||||||
import filepaths
|
import filepaths
|
||||||
from coredb import daemonqueue
|
|
||||||
from etc import onionrvalues, cleanup
|
from etc import onionrvalues, cleanup
|
||||||
from onionrcrypto import getourkeypair
|
from onionrcrypto import getourkeypair
|
||||||
from utils import hastor, logoheader
|
from utils import hastor, logoheader
|
||||||
|
@ -166,7 +166,10 @@ def kill_daemon():
|
||||||
events.event('daemon_stop')
|
events.event('daemon_stop')
|
||||||
net = NetController(config.get('client.port', 59496))
|
net = NetController(config.get('client.port', 59496))
|
||||||
try:
|
try:
|
||||||
daemonqueue.daemon_queue_add('shutdown')
|
spawn(
|
||||||
|
localcommand.local_command,
|
||||||
|
'/shutdownclean'
|
||||||
|
).get(timeout=5)
|
||||||
except sqlite3.OperationalError:
|
except sqlite3.OperationalError:
|
||||||
pass
|
pass
|
||||||
|
|
||||||
|
|
|
@ -20,7 +20,6 @@
|
||||||
|
|
||||||
import onionrplugins, logger
|
import onionrplugins, logger
|
||||||
from onionrutils import localcommand
|
from onionrutils import localcommand
|
||||||
from coredb import daemonqueue
|
|
||||||
|
|
||||||
class PluginAPI:
|
class PluginAPI:
|
||||||
def __init__(self, pluginapi):
|
def __init__(self, pluginapi):
|
||||||
|
|
|
@ -150,18 +150,6 @@ def createForwardKeyDB():
|
||||||
conn.close()
|
conn.close()
|
||||||
return
|
return
|
||||||
|
|
||||||
def createDaemonDB():
|
|
||||||
'''
|
|
||||||
Create the daemon queue database
|
|
||||||
'''
|
|
||||||
if os.path.exists(dbfiles.daemon_queue_db):
|
|
||||||
raise FileExistsError("Daemon queue db already exists")
|
|
||||||
conn = sqlite3.connect(dbfiles.daemon_queue_db, timeout=10)
|
|
||||||
c = conn.cursor()
|
|
||||||
# Create table
|
|
||||||
c.execute('''CREATE TABLE commands (id integer primary key autoincrement, command text, data text, date text, responseID text)''')
|
|
||||||
conn.commit()
|
|
||||||
conn.close()
|
|
||||||
|
|
||||||
def create_blacklist_db():
|
def create_blacklist_db():
|
||||||
if os.path.exists(dbfiles.blacklist_db):
|
if os.path.exists(dbfiles.blacklist_db):
|
||||||
|
@ -180,4 +168,6 @@ def create_blacklist_db():
|
||||||
conn.close()
|
conn.close()
|
||||||
|
|
||||||
|
|
||||||
create_funcs = [createAddressDB, createPeerDB, createBlockDB, createBlockDataDB, createForwardKeyDB, createDaemonDB, create_blacklist_db]
|
create_funcs = [createAddressDB, createPeerDB,
|
||||||
|
createBlockDB, createBlockDataDB,
|
||||||
|
createForwardKeyDB, create_blacklist_db]
|
Loading…
Reference in New Issue