stem
This commit is contained in:
parent
d24657a1b8
commit
79d3270a8d
@ -54,6 +54,7 @@ commands, or the filename of the nodes file for the nodes command.
|
||||
--onions experimental
|
||||
config - check your /etc/tor/torrc configuration
|
||||
test - test your /etc/tor/torrc configuration
|
||||
exits - cleans exists with no Contact Info listed
|
||||
|
||||
"""
|
||||
|
||||
@ -74,6 +75,8 @@ import json
|
||||
import warnings
|
||||
warnings.filterwarnings('ignore')
|
||||
|
||||
from wrapper_tests import support_testing as ts
|
||||
|
||||
try:
|
||||
# https://pypi.org/project/msgpack/
|
||||
import msgpack
|
||||
@ -83,6 +86,10 @@ try:
|
||||
import yaml
|
||||
except ImportError as e:
|
||||
yaml = None
|
||||
try:
|
||||
import stem
|
||||
except ImportError as e:
|
||||
stem = None
|
||||
try:
|
||||
# https://pypi.org/project/coloredlogs/
|
||||
import coloredlogs
|
||||
@ -90,6 +97,7 @@ try:
|
||||
os.environ['COLOREDLOGS_LEVEL_STYLES'] = 'spam=22;debug=28;verbose=34;notice=220;warning=202;success=118,bold;error=124;critical=background=red'
|
||||
except ImportError as e:
|
||||
coloredlogs = False
|
||||
|
||||
try:
|
||||
# https://git.plastiras.org/emdee/toxygen_wrapper
|
||||
from wrapper.toxencryptsave import ToxEncryptSave
|
||||
@ -112,6 +120,18 @@ except ImportError as e:
|
||||
|
||||
LOG = logging.getLogger('TSF')
|
||||
|
||||
def LOG_error(a): print('EROR> '+a)
|
||||
def LOG_warn(a): print('WARN> '+a)
|
||||
def LOG_info(a):
|
||||
bVERBOSE = hasattr(__builtins__, 'oArgs') and oArgs.log_level <= 20
|
||||
if bVERBOSE: print('INFO> '+a)
|
||||
def LOG_debug(a):
|
||||
bVERBOSE = hasattr(__builtins__, 'oArgs') and oArgs.log_level <= 10-1
|
||||
if bVERBOSE: print('DBUG> '+a)
|
||||
def LOG_trace(a):
|
||||
bVERBOSE = hasattr(__builtins__, 'oArgs') and oArgs.log_level < 10
|
||||
if bVERBOSE: print('TRAC> '+a)
|
||||
|
||||
# Fix for Windows
|
||||
sDIR = os.environ.get('TMPDIR', '/tmp')
|
||||
sTOX_VERSION = "1000002018"
|
||||
@ -708,11 +728,11 @@ ip=""
|
||||
declare -a ports
|
||||
jq '.|with_entries(select(.key|match("nodes"))).nodes[]|select(.status_tcp)|select(.ipv4|match("."))|.ipv4,.tcp_ports' | while read line ; do
|
||||
if [ -z "$ip" ] ; then
|
||||
ip=`echo $line|sed -e 's/"//g'`
|
||||
ports=()
|
||||
continue
|
||||
ip=`echo $line|sed -e 's/"//g'`
|
||||
ports=()
|
||||
continue
|
||||
elif [ "$line" = '[' ] ; then
|
||||
continue
|
||||
continue
|
||||
elif [ "$line" = ']' ] ; then
|
||||
if ! route | grep -q ^def ; then
|
||||
echo ERROR no route
|
||||
@ -1017,15 +1037,15 @@ def iOsSystemNmapTcp(l, oArgs):
|
||||
iErrs += iErr
|
||||
return iErrs
|
||||
|
||||
def vSetupLogging(loglevel=logging.DEBUG):
|
||||
def vSetupLogging(log_level=logging.DEBUG):
|
||||
global LOG
|
||||
if coloredlogs:
|
||||
aKw = dict(level=loglevel,
|
||||
aKw = dict(level=log_level,
|
||||
logger=LOG,
|
||||
fmt='%(name)s %(levelname)s %(message)s')
|
||||
coloredlogs.install(**aKw)
|
||||
else:
|
||||
aKw = dict(level=loglevel,
|
||||
aKw = dict(level=log_level,
|
||||
format='%(name)s %(levelname)-4s %(message)s')
|
||||
logging.basicConfig(**aKw)
|
||||
|
||||
@ -1057,6 +1077,23 @@ def iTestTorConfig(sProOrNodes, oArgs, bClean=False):
|
||||
# add_bootstrap
|
||||
return 0
|
||||
|
||||
def iTestTorExits(sProOrNodes, oArgs, bClean=False):
|
||||
LOG.info(f"iTestTorExits")
|
||||
# import pdb; pdb.set_trace()
|
||||
# sProOrNodes
|
||||
try:
|
||||
if hasattr(ts, 'oSTEM_CONTROLER') and ts.oSTEM_CONTROLER \
|
||||
and controller.is_set('ExcludeExitNodes'):
|
||||
LOG_info(f"ExcludeExitNodes is set so we cant continue")
|
||||
return 0
|
||||
LOG_info(f"ExcludeExitNodes is not set so we can continue")
|
||||
l = ts.lExitExcluder(iPort=9051)
|
||||
except Exception as e:
|
||||
LOG.error(f"ExcludeExitNodes errored {e}")
|
||||
return 1
|
||||
|
||||
return 0
|
||||
|
||||
def iTestTorTest(sProOrNodes, oArgs, bClean=False):
|
||||
# test_onion
|
||||
# check_mapaddress
|
||||
@ -1216,6 +1253,12 @@ def iMain(sProOrNodes, oArgs):
|
||||
i = iTestTorTest(sProOrNodes, oArgs)
|
||||
iRet = i
|
||||
|
||||
elif oArgs.onions == 'exits':
|
||||
i = iTestTorExits(sProOrNodes, oArgs)
|
||||
iRet = i
|
||||
else:
|
||||
RuntimeError( oArgs.onions)
|
||||
|
||||
elif oArgs.command in ['info', 'edit']:
|
||||
|
||||
if oArgs.command in ['edit']:
|
||||
@ -1370,7 +1413,7 @@ def oMainArgparser(_=None):
|
||||
parser.add_argument('--download_nodes_url', type=str,
|
||||
default='https://nodes.tox.chat/json')
|
||||
parser.add_argument('--onions', type=str, default='',
|
||||
choices=['config', 'test'] if bHAVE_TOR else [],
|
||||
choices=['config', 'test', 'exits'] if bHAVE_TOR else [],
|
||||
help='Action for onion command (requires tor)')
|
||||
|
||||
parser.add_argument('--encoding', type=str, default=sENC)
|
||||
@ -1400,6 +1443,7 @@ if __name__ == '__main__':
|
||||
print('Supported Quads: section,num,key,type ' +sEDIT_HELP)
|
||||
sys.exit(0)
|
||||
|
||||
__builtins__.oArgs = oArgs
|
||||
vSetupLogging(oArgs.log_level)
|
||||
i = 0
|
||||
for sProOrNodes in oArgs.lprofile:
|
||||
|
Loading…
Reference in New Issue
Block a user