* send introduce command instead of using duplicated logic
* remove unnecessary imports * improve if self-address peer comparison to avoid some config reads
This commit is contained in:
parent
d18f56eee2
commit
2d20ecdfd3
@ -19,11 +19,11 @@
|
|||||||
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/>.
|
||||||
'''
|
'''
|
||||||
import sys, os, core, config, json, requests, time, logger, threading, base64, onionr, uuid, binascii
|
import sys, os, time
|
||||||
from dependencies import secrets
|
import core, config, logger, onionr
|
||||||
import onionrexceptions, onionrpeers, onionrevents as events, onionrplugins as plugins, onionrblockapi as block
|
import onionrexceptions, onionrpeers, onionrevents as events, onionrplugins as plugins, onionrblockapi as block
|
||||||
from communicatorutils import onionrdaemontools, servicecreator, onionrcommunicatortimers
|
from communicatorutils import onionrdaemontools, servicecreator, onionrcommunicatortimers
|
||||||
from communicatorutils import proxypicker, downloadblocks, lookupblocks, lookupadders
|
from communicatorutils import downloadblocks, lookupblocks, lookupadders
|
||||||
from communicatorutils import servicecreator, connectnewpeers, uploadblocks
|
from communicatorutils import servicecreator, connectnewpeers, uploadblocks
|
||||||
from communicatorutils import daemonqueuehandler
|
from communicatorutils import daemonqueuehandler
|
||||||
import onionrservices, onionr, onionrproofs
|
import onionrservices, onionr, onionrproofs
|
||||||
|
@ -17,7 +17,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/>.
|
||||||
'''
|
'''
|
||||||
import sqlite3, os, sys, time, math, base64, tarfile, nacl, logger, json, netcontroller, math, config, uuid
|
import sqlite3, os, sys, time, json, uuid
|
||||||
|
import logger, netcontroller, config
|
||||||
from onionrblockapi import Block
|
from onionrblockapi import Block
|
||||||
import deadsimplekv as simplekv
|
import deadsimplekv as simplekv
|
||||||
import onionrutils, onionrcrypto, onionrproofs, onionrevents as events, onionrexceptions
|
import onionrutils, onionrcrypto, onionrproofs, onionrevents as events, onionrexceptions
|
||||||
@ -160,11 +161,11 @@ class Core:
|
|||||||
Add an address to the address database (only tor currently)
|
Add an address to the address database (only tor currently)
|
||||||
'''
|
'''
|
||||||
|
|
||||||
if address == config.get('i2p.ownAddr', None) or address == self.hsAddress:
|
|
||||||
return False
|
|
||||||
if type(address) is None or len(address) == 0:
|
if type(address) is None or len(address) == 0:
|
||||||
return False
|
return False
|
||||||
if self._utils.validateID(address):
|
if self._utils.validateID(address):
|
||||||
|
if address == config.get('i2p.ownAddr', None) or address == self.hsAddress:
|
||||||
|
return False
|
||||||
conn = sqlite3.connect(self.addressDB, timeout=30)
|
conn = sqlite3.connect(self.addressDB, timeout=30)
|
||||||
c = conn.cursor()
|
c = conn.cursor()
|
||||||
# check if address is in database
|
# check if address is in database
|
||||||
@ -226,6 +227,8 @@ class Core:
|
|||||||
conn.close()
|
conn.close()
|
||||||
dataSize = sys.getsizeof(onionrstorage.getData(self, block))
|
dataSize = sys.getsizeof(onionrstorage.getData(self, block))
|
||||||
self._utils.storageCounter.removeBytes(dataSize)
|
self._utils.storageCounter.removeBytes(dataSize)
|
||||||
|
else:
|
||||||
|
raise onionrexceptions.InvalidHexHash
|
||||||
|
|
||||||
def createAddressDB(self):
|
def createAddressDB(self):
|
||||||
'''
|
'''
|
||||||
@ -797,7 +800,7 @@ class Core:
|
|||||||
logger.error(allocationReachedMessage)
|
logger.error(allocationReachedMessage)
|
||||||
retData = False
|
retData = False
|
||||||
else:
|
else:
|
||||||
# Tell the api server through localCommand to wait for the daemon to upload this block to make stastical analysis more difficult
|
# Tell the api server through localCommand to wait for the daemon to upload this block to make statistical analysis more difficult
|
||||||
if self._utils.localCommand('/ping', maxWait=10) == 'pong!':
|
if self._utils.localCommand('/ping', maxWait=10) == 'pong!':
|
||||||
self._utils.localCommand('/waitforshare/' + retData, post=True, maxWait=5)
|
self._utils.localCommand('/waitforshare/' + retData, post=True, maxWait=5)
|
||||||
self.daemonQueueAdd('uploadBlock', retData)
|
self.daemonQueueAdd('uploadBlock', retData)
|
||||||
@ -815,27 +818,8 @@ class Core:
|
|||||||
'''
|
'''
|
||||||
Introduces our node into the network by telling X many nodes our HS address
|
Introduces our node into the network by telling X many nodes our HS address
|
||||||
'''
|
'''
|
||||||
|
if self._utils.localCommand('/ping', maxWait=10) == 'pong!':
|
||||||
if(self._utils.isCommunicatorRunning(timeout=30)):
|
self.daemonQueueAdd('announceNode')
|
||||||
announceAmount = 2
|
logger.info('Introduction command will be processed.')
|
||||||
nodeList = self.listAdders()
|
|
||||||
|
|
||||||
if len(nodeList) == 0:
|
|
||||||
for i in self.bootstrapList:
|
|
||||||
if self._utils.validateID(i):
|
|
||||||
self.addAddress(i)
|
|
||||||
nodeList.append(i)
|
|
||||||
|
|
||||||
if announceAmount > len(nodeList):
|
|
||||||
announceAmount = len(nodeList)
|
|
||||||
|
|
||||||
for i in range(announceAmount):
|
|
||||||
self.daemonQueueAdd('announceNode', nodeList[i])
|
|
||||||
|
|
||||||
events.event('introduction', onionr = None)
|
|
||||||
|
|
||||||
return True
|
|
||||||
else:
|
else:
|
||||||
logger.error('Onionr daemon is not running.')
|
logger.warn('No running node detected. Cannot introduce.')
|
||||||
return False
|
|
||||||
return
|
|
@ -25,8 +25,7 @@ MIN_PY_VERSION = 6
|
|||||||
if sys.version_info[0] == 2 or sys.version_info[1] < MIN_PY_VERSION:
|
if sys.version_info[0] == 2 or sys.version_info[1] < MIN_PY_VERSION:
|
||||||
sys.stderr.write('Error, Onionr requires Python 3.%s+' % (MIN_PY_VERSION,))
|
sys.stderr.write('Error, Onionr requires Python 3.%s+' % (MIN_PY_VERSION,))
|
||||||
sys.exit(1)
|
sys.exit(1)
|
||||||
import os, base64, random, getpass, shutil, time, platform, datetime, re, json, getpass, sqlite3
|
import os, base64, random, shutil, time, platform, signal
|
||||||
import webbrowser, uuid, signal
|
|
||||||
from threading import Thread
|
from threading import Thread
|
||||||
import api, core, config, logger, onionrplugins as plugins, onionrevents as events
|
import api, core, config, logger, onionrplugins as plugins, onionrevents as events
|
||||||
import onionrutils
|
import onionrutils
|
||||||
@ -34,7 +33,6 @@ import netcontroller
|
|||||||
from netcontroller import NetController
|
from netcontroller import NetController
|
||||||
from onionrblockapi import Block
|
from onionrblockapi import Block
|
||||||
import onionrproofs, onionrexceptions, communicator, setupconfig
|
import onionrproofs, onionrexceptions, communicator, setupconfig
|
||||||
from onionrusers import onionrusers
|
|
||||||
import onionrcommands as commands # Many command definitions are here
|
import onionrcommands as commands # Many command definitions are here
|
||||||
|
|
||||||
try:
|
try:
|
||||||
|
@ -17,7 +17,9 @@
|
|||||||
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/>.
|
||||||
'''
|
'''
|
||||||
import nacl.signing, nacl.encoding, nacl.public, nacl.hash, nacl.pwhash, nacl.utils, nacl.secret, os, binascii, base64, hashlib, logger, onionrproofs, time, math, sys, hmac
|
import os, binascii, base64, hashlib, time, sys, hmac
|
||||||
|
import nacl.signing, nacl.encoding, nacl.public, nacl.hash, nacl.pwhash, nacl.utils, nacl.secret
|
||||||
|
import logger, onionrproofs
|
||||||
import onionrexceptions, keymanager, core
|
import onionrexceptions, keymanager, core
|
||||||
# secrets module was added into standard lib in 3.6+
|
# secrets module was added into standard lib in 3.6+
|
||||||
if sys.version_info[0] == 3 and sys.version_info[1] < 6:
|
if sys.version_info[0] == 3 and sys.version_info[1] < 6:
|
||||||
|
@ -17,7 +17,7 @@
|
|||||||
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/>.
|
||||||
'''
|
'''
|
||||||
import multiprocessing, nacl.encoding, nacl.hash, nacl.utils, time, math, threading, binascii, sys, base64, json
|
import multiprocessing, nacl.encoding, nacl.hash, nacl.utils, time, math, threading, binascii, sys, json
|
||||||
import core, onionrutils, config, logger, onionrblockapi
|
import core, onionrutils, config, logger, onionrblockapi
|
||||||
|
|
||||||
def getDifficultyModifier(coreOrUtilsInst=None):
|
def getDifficultyModifier(coreOrUtilsInst=None):
|
||||||
|
@ -18,10 +18,11 @@
|
|||||||
along with this program. If not, see <https://www.gnu.org/licenses/>.
|
along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||||
'''
|
'''
|
||||||
# Misc functions that do not fit in the main api, but are useful
|
# Misc functions that do not fit in the main api, but are useful
|
||||||
import getpass, sys, requests, os, socket, hashlib, logger, sqlite3, config, binascii, time, base64, json, glob, shutil, math, json, re, urllib.parse, string
|
import sys, os, sqlite3, binascii, time, base64, json, glob, shutil, math, re, urllib.parse, string
|
||||||
|
import requests
|
||||||
import nacl.signing, nacl.encoding
|
import nacl.signing, nacl.encoding
|
||||||
from onionrblockapi import Block
|
from onionrblockapi import Block
|
||||||
import onionrexceptions
|
import onionrexceptions, config, logger
|
||||||
from onionr import API_VERSION
|
from onionr import API_VERSION
|
||||||
import onionrevents
|
import onionrevents
|
||||||
import storagecounter
|
import storagecounter
|
||||||
|
@ -18,7 +18,7 @@
|
|||||||
along with this program. If not, see <https://www.gnu.org/licenses/>.
|
along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||||
'''
|
'''
|
||||||
|
|
||||||
import core, api, uuid, json
|
import core, json
|
||||||
|
|
||||||
class SerializedData:
|
class SerializedData:
|
||||||
def __init__(self, coreInst):
|
def __init__(self, coreInst):
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
#!/usr/bin/env python3
|
#!/usr/bin/env python3
|
||||||
import subprocess, os
|
import subprocess, os
|
||||||
import multiprocessing, threading, time, json, math
|
import multiprocessing, threading, time, json
|
||||||
from multiprocessing import Pipe, Process
|
from multiprocessing import Pipe, Process
|
||||||
import core, onionrblockapi, config, onionrutils, logger, onionrproofs
|
import core, onionrblockapi, config, onionrutils, logger, onionrproofs
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user