Browse Source

* cache pip requirements in dockerfile

* import blacklist into core
+ began work on blacklist command
* work on blacklist module
* modified dockerignore
tags/0.0.0
Kevin Froman 1 year ago
parent
commit
12d39393b4
No known key found for this signature in database GPG Key ID: D414D0FE405B63B
6 changed files with 49 additions and 14 deletions
  1. +2
    -0
      .dockerignore
  2. +7
    -6
      Dockerfile
  3. +0
    -1
      onionr/api.py
  4. +2
    -0
      onionr/core.py
  5. +15
    -0
      onionr/onionr.py
  6. +23
    -7
      onionr/onionrblacklist.py

+ 2
- 0
.dockerignore View File

@@ -1,2 +1,4 @@
onionr/data/**/*
onionr/data
RUN-WINDOWS.bat
MY-RUN.sh

+ 7
- 6
Dockerfile View File

@@ -6,16 +6,17 @@ ENV HOME /root
#Install needed packages
RUN apt update && apt install -y python3 python3-dev python3-pip tor

#Add Onionr source
COPY . /root
VOLUME /root/data
WORKDIR /srv/
ADD ./requirements.txt /srv/requirements.txt
RUN pip3 install -r requirements.txt

WORKDIR /root

RUN pip3 install -r requirements.txt
WORKDIR /root/
#Add Onionr source
COPY . /root/
VOLUME /root/data/

#Set upstart command
#CMD (! ${ENABLE_TOR} || tor&) && python zeronet.py --ui_ip 0.0.0.0 --fileserver_port 26552
CMD bash

#Expose ports


+ 0
- 1
onionr/api.py View File

@@ -506,7 +506,6 @@ class API:
def authFail(err):
self.requestFailed = True
resp = Response("403")

return resp

@app.errorhandler(401)


+ 2
- 0
onionr/core.py View File

@@ -21,6 +21,7 @@ import sqlite3, os, sys, time, math, base64, tarfile, getpass, simplecrypt, hash
from onionrblockapi import Block

import onionrutils, onionrcrypto, onionrproofs, onionrevents as events, onionrexceptions, onionrvalues
import onionrblacklist

if sys.version_info < (3, 6):
try:
@@ -71,6 +72,7 @@ class Core:
self._utils = onionrutils.OnionrUtils(self)
# Initialize the crypto object
self._crypto = onionrcrypto.OnionrCrypto(self)
self._blacklist = onionrblacklist.OnionrBlackList(self)

except Exception as error:
logger.error('Failed to initialize core Onionr library.', error=error)


+ 15
- 0
onionr/onionr.py View File

@@ -186,6 +186,8 @@ class Onionr:
'addaddress': self.addAddress,
'list-peers': self.listPeers,

'blacklist-block': self.banBlock,

'add-file': self.addFile,
'addfile': self.addFile,
'listconn': self.listConn,
@@ -258,6 +260,19 @@ class Onionr:
def getCommands(self):
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):
self.onionrCore.daemonQueueAdd('connectedPeers')



+ 23
- 7
onionr/onionrblacklist.py View File

@@ -29,21 +29,29 @@ class OnionrBlackList:
return
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):
conn = sqlite3.connect(self.blacklistDB)
c = conn.cursor()
c.execute(toExec)
retData = c.execute(toExec)
conn.commit()
conn.close()
return retData
def deleteBeforeDate(self, date):
# TODO, delete blacklist entries before date
return

def generateDB(self):
self._dbExecute'''CREATE TABLE blacklist(
self._dbExecute('''CREATE TABLE blacklist(
hash text primary key not null,
type text
);
@@ -53,10 +61,18 @@ class OnionrBlackList:
def clearDB(self):
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):
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():
raise Exception("Hashed data is not alpha numeric")
insert = (hashed,)
self._dbExecute('insert into blacklist (hash) VALUES(' + data + ');')
self._dbExecute("insert into blacklist (hash) VALUES('%s');" % (hashed,))

Loading…
Cancel
Save