* cache pip requirements in dockerfile
* import blacklist into core + began work on blacklist command * work on blacklist module * modified dockerignoremaster
parent
1e37684163
commit
12d39393b4
|
@ -1,2 +1,4 @@
|
||||||
onionr/data/**/*
|
onionr/data/**/*
|
||||||
onionr/data
|
onionr/data
|
||||||
|
RUN-WINDOWS.bat
|
||||||
|
MY-RUN.sh
|
||||||
|
|
15
Dockerfile
15
Dockerfile
|
@ -6,16 +6,17 @@ ENV HOME /root
|
||||||
#Install needed packages
|
#Install needed packages
|
||||||
RUN apt update && apt install -y python3 python3-dev python3-pip tor
|
RUN apt update && apt install -y python3 python3-dev python3-pip tor
|
||||||
|
|
||||||
#Add Onionr source
|
WORKDIR /srv/
|
||||||
COPY . /root
|
ADD ./requirements.txt /srv/requirements.txt
|
||||||
VOLUME /root/data
|
|
||||||
|
|
||||||
WORKDIR /root
|
|
||||||
|
|
||||||
RUN pip3 install -r requirements.txt
|
RUN pip3 install -r requirements.txt
|
||||||
|
|
||||||
|
|
||||||
|
WORKDIR /root/
|
||||||
|
#Add Onionr source
|
||||||
|
COPY . /root/
|
||||||
|
VOLUME /root/data/
|
||||||
|
|
||||||
#Set upstart command
|
#Set upstart command
|
||||||
#CMD (! ${ENABLE_TOR} || tor&) && python zeronet.py --ui_ip 0.0.0.0 --fileserver_port 26552
|
|
||||||
CMD bash
|
CMD bash
|
||||||
|
|
||||||
#Expose ports
|
#Expose ports
|
||||||
|
|
|
@ -506,7 +506,6 @@ class API:
|
||||||
def authFail(err):
|
def authFail(err):
|
||||||
self.requestFailed = True
|
self.requestFailed = True
|
||||||
resp = Response("403")
|
resp = Response("403")
|
||||||
|
|
||||||
return resp
|
return resp
|
||||||
|
|
||||||
@app.errorhandler(401)
|
@app.errorhandler(401)
|
||||||
|
|
|
@ -21,6 +21,7 @@ import sqlite3, os, sys, time, math, base64, tarfile, getpass, simplecrypt, hash
|
||||||
from onionrblockapi import Block
|
from onionrblockapi import Block
|
||||||
|
|
||||||
import onionrutils, onionrcrypto, onionrproofs, onionrevents as events, onionrexceptions, onionrvalues
|
import onionrutils, onionrcrypto, onionrproofs, onionrevents as events, onionrexceptions, onionrvalues
|
||||||
|
import onionrblacklist
|
||||||
|
|
||||||
if sys.version_info < (3, 6):
|
if sys.version_info < (3, 6):
|
||||||
try:
|
try:
|
||||||
|
@ -71,6 +72,7 @@ class Core:
|
||||||
self._utils = onionrutils.OnionrUtils(self)
|
self._utils = onionrutils.OnionrUtils(self)
|
||||||
# Initialize the crypto object
|
# Initialize the crypto object
|
||||||
self._crypto = onionrcrypto.OnionrCrypto(self)
|
self._crypto = onionrcrypto.OnionrCrypto(self)
|
||||||
|
self._blacklist = onionrblacklist.OnionrBlackList(self)
|
||||||
|
|
||||||
except Exception as error:
|
except Exception as error:
|
||||||
logger.error('Failed to initialize core Onionr library.', error=error)
|
logger.error('Failed to initialize core Onionr library.', error=error)
|
||||||
|
|
|
@ -186,6 +186,8 @@ class Onionr:
|
||||||
'addaddress': self.addAddress,
|
'addaddress': self.addAddress,
|
||||||
'list-peers': self.listPeers,
|
'list-peers': self.listPeers,
|
||||||
|
|
||||||
|
'blacklist-block': self.banBlock,
|
||||||
|
|
||||||
'add-file': self.addFile,
|
'add-file': self.addFile,
|
||||||
'addfile': self.addFile,
|
'addfile': self.addFile,
|
||||||
'listconn': self.listConn,
|
'listconn': self.listConn,
|
||||||
|
@ -258,6 +260,19 @@ class Onionr:
|
||||||
def getCommands(self):
|
def getCommands(self):
|
||||||
return self.cmds
|
return self.cmds
|
||||||
|
|
||||||
|
def banBlock(self):
|
||||||
|
try:
|
||||||
|
ban = sys.argv[2]
|
||||||
|
except IndexError:
|
||||||
|
while True:
|
||||||
|
ban = logger.readline('Enter a block hash:')
|
||||||
|
if self.onionrUtils.validateHash(ban):
|
||||||
|
if not self.onionrCore._blacklist.inBlacklist(ban):
|
||||||
|
self.onionrCore._blacklist.addToDB(ban)
|
||||||
|
|
||||||
|
return
|
||||||
|
|
||||||
|
|
||||||
def listConn(self):
|
def listConn(self):
|
||||||
self.onionrCore.daemonQueueAdd('connectedPeers')
|
self.onionrCore.daemonQueueAdd('connectedPeers')
|
||||||
|
|
||||||
|
|
|
@ -29,21 +29,29 @@ class OnionrBlackList:
|
||||||
return
|
return
|
||||||
|
|
||||||
def inBlacklist(self, data):
|
def inBlacklist(self, data):
|
||||||
return
|
hashed = self._core._utils.bytesToStr(self._core._crypto.sha3Hash(data))
|
||||||
|
retData = False
|
||||||
|
if not hashed.isalnum():
|
||||||
|
raise Exception("Hashed data is not alpha numeric")
|
||||||
|
|
||||||
|
for i in self._dbExecute("select * from blacklist where hash='%s'" % (hashed,)):
|
||||||
|
retData = True # this only executes if an entry is present by that hash
|
||||||
|
break
|
||||||
|
return retData
|
||||||
|
|
||||||
def _dbExecute(self, toExec):
|
def _dbExecute(self, toExec):
|
||||||
conn = sqlite3.connect(self.blacklistDB)
|
conn = sqlite3.connect(self.blacklistDB)
|
||||||
c = conn.cursor()
|
c = conn.cursor()
|
||||||
c.execute(toExec)
|
retData = c.execute(toExec)
|
||||||
conn.commit()
|
conn.commit()
|
||||||
conn.close()
|
return retData
|
||||||
|
|
||||||
def deleteBeforeDate(self, date):
|
def deleteBeforeDate(self, date):
|
||||||
# TODO, delete blacklist entries before date
|
# TODO, delete blacklist entries before date
|
||||||
return
|
return
|
||||||
|
|
||||||
def generateDB(self):
|
def generateDB(self):
|
||||||
self._dbExecute'''CREATE TABLE blacklist(
|
self._dbExecute('''CREATE TABLE blacklist(
|
||||||
hash text primary key not null,
|
hash text primary key not null,
|
||||||
type text
|
type text
|
||||||
);
|
);
|
||||||
|
@ -53,10 +61,18 @@ class OnionrBlackList:
|
||||||
def clearDB(self):
|
def clearDB(self):
|
||||||
self._dbExecute('''delete from blacklist;);''')
|
self._dbExecute('''delete from blacklist;);''')
|
||||||
|
|
||||||
|
def getList(self):
|
||||||
|
data = self._dbExecute('select * from blacklist')
|
||||||
|
myList = []
|
||||||
|
for i in data:
|
||||||
|
myList.append(i[0])
|
||||||
|
return myList
|
||||||
|
|
||||||
def addToDB(self, data):
|
def addToDB(self, data):
|
||||||
hashed = self._core._crypto.sha3Hash(data)
|
'''Add to the blacklist. Intended to be block hash, block data, peers, or transport addresses'''
|
||||||
|
# we hash the data so we can remove data entirely from our node's disk
|
||||||
|
hashed = self._core._utils.bytesToStr(self._core._crypto.sha3Hash(data))
|
||||||
if not hashed.isalnum():
|
if not hashed.isalnum():
|
||||||
raise Exception("Hashed data is not alpha numeric")
|
raise Exception("Hashed data is not alpha numeric")
|
||||||
insert = (hashed,)
|
insert = (hashed,)
|
||||||
self._dbExecute('insert into blacklist (hash) VALUES(' + data + ');')
|
self._dbExecute("insert into blacklist (hash) VALUES('%s');" % (hashed,))
|
||||||
|
|
Loading…
Reference in New Issue