Merge pull request #613 from michael-loki/minor_python_js_warnings

Minor warnings fixes in python/javascript code
pull/616/head v0.4.3
Jeff 5 years ago committed by GitHub
commit 83ede0c961
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

@ -6,6 +6,8 @@ import requests
import json
import sys
from requests.exceptions import RequestException
def jsonrpc(method, **args):
return requests.post('http://127.0.0.1:1190/', data=json.dumps(
@ -25,9 +27,9 @@ def exit_sessions_main():
try:
j = jsonrpc("llarp.admin.exit.list")
count = len(j['result'])
except:
except RequestException:
pass
print("lokinet.exit.sessions {}".format(outbound))
print("lokinet.exit.sessions {}".format(count))
def peers_main():
@ -50,7 +52,7 @@ def peers_main():
outbound += 1
else:
inbound += 1
except:
except RequestException:
pass
print("lokinet.peers.outbound {}".format(outbound))

@ -2,7 +2,7 @@ function iniToJSON(data) {
const lines = data.split(/\n/)
var section = 'unknown'
var config = {}
for(var i in lines) {
for (var i in lines) {
var line = lines[i].trim()
if (line.match(/#/)) {
var parts = line.split(/#/)
@ -13,7 +13,7 @@ function iniToJSON(data) {
// check for section
if (line[0] == '[' && line[line.length - 1] == ']') {
section = line.substring(1, line.length -1)
section = line.substring(1, line.length - 1)
//console.log('found section', section)
continue
}
@ -22,29 +22,28 @@ function iniToJSON(data) {
var parts = line.split(/=/)
var key = parts.shift().trim()
var value = parts.join('=').trim()
if (value === 'true') value = true
if (value === 'true') value = true
if (value === 'false') value = false
//console.log('key/pair ['+section+']', key, '=', value)
if (config[section] === undefined) config[section] = {}
config[section][key]=value
config[section][key] = value
continue
}
console.error('config ['+section+'] not section or key/value pair', line)
console.error('config [' + section + '] not section or key/value pair', line)
}
return config
}
function jsonToINI(json) {
var lastSection = 'unknown'
var config = ''
for(var section in json) {
for (var section in json) {
config += "\n" + '[' + section + ']' + "\n"
var keys = json[section]
for(var key in keys) {
for (var key in keys) {
//console.log('key', key, 'value', keys[key])
// if keys[key] is an array, then we need to send the same key each time
if (keys[key] !== undefined && keys[key].constructor.name == 'Array') {
for(var i in keys[key]) {
for (var i in keys[key]) {
var v = keys[key][i]
config += key + '=' + v + "\n"
}

@ -1,13 +1,16 @@
// no npm!
const os = require('os')
const fs = require('fs')
const dns = require('dns')
const net = require('net')
const ini = require('./ini')
const path = require('path')
const http = require('http')
const https = require('https')
const { spawn, exec } = require('child_process')
const os = require('os')
const fs = require('fs')
const dns = require('dns')
const net = require('net')
const ini = require('./ini')
const path = require('path')
const http = require('http')
const https = require('https')
const {
spawn,
exec
} = require('child_process')
// FIXME: disable rpc if desired
const VERSION = 0.6
@ -15,10 +18,10 @@ console.log('lokinet launcher version', VERSION, 'registered')
function log() {
var args = []
for(var i in arguments) {
for (var i in arguments) {
var arg = arguments[i]
//console.log('arg type', arg, 'is', typeof(arg))
if (typeof(arg) == 'object') {
if (typeof (arg) == 'object') {
arg = JSON.stringify(arg)
}
args.push(arg)
@ -29,9 +32,9 @@ function log() {
function getBoundIPv4s() {
var nics = os.networkInterfaces()
var ipv4s = []
for(var adapter in nics) {
for (var adapter in nics) {
var ips = nics[adapter]
for(var ipIdx in ips) {
for (var ipIdx in ips) {
var ipMap = ips[ipIdx]
if (ipMap.address.match(/\./)) {
ipv4s.push(ipMap.address)
@ -51,12 +54,12 @@ function getNetworkIP(callback) {
//log('getNetworkIP from', ip, auto_config_test_port)
var socket = net.createConnection(auto_config_test_port, ip)
socket.setTimeout(5000)
socket.on('connect', function() {
socket.on('connect', function () {
callback(undefined, socket.address().address)
socket.end()
})
var abort = false
socket.on('timeout', function() {
socket.on('timeout', function () {
if (socket.address().address) {
abort = true
var resultIp = socket.address().address
@ -69,7 +72,7 @@ function getNetworkIP(callback) {
//callback('timeout', 'error')
}
})
socket.on('error', function(e) {
socket.on('error', function (e) {
console.error('NETWORK: getNetworkIP error', e)
// FIXME: maybe a retry here
log('getNetworkIP failure test', socket.address().address)
@ -84,10 +87,9 @@ function getNetworkIP(callback) {
function getIfNameFromIP(ip) {
var nics = os.networkInterfaces()
var ipv4s = []
for(var adapter in nics) {
for (var adapter in nics) {
var ips = nics[adapter]
for(var ipIdx in ips) {
for (var ipIdx in ips) {
var ipMap = ips[ipIdx]
if (ipMap.address == ip) {
return adapter
@ -110,7 +112,7 @@ function httpGet(url, cb) {
}
// well somehow this can get hung on macos
var abort = false
var watchdog = setInterval(function() {
var watchdog = setInterval(function () {
if (shuttingDown) {
//if (cb) cb()
// [', url, ']
@ -151,8 +153,7 @@ function httpGet(url, cb) {
cb(data)
})
}).on("error", (err) => {
console.error("NETWORK: httpGet Error: " + err.message, 'port', urlDetails.port)
//console.log('err', err)
console.error("NETWORK: httpGet Error: ", err.message, 'port', urlDetails.port)
cb()
})
}
@ -162,10 +163,11 @@ function dynDNSHandler(data, cb) {
}
function getPublicIPv6(cb) {
//v6.ident.me
//v6.ident.me
}
var getPublicIPv4_retries = 0
function getPublicIPv4(cb) {
// trust more than one source
// randomly find 2 matching sources
@ -173,29 +175,43 @@ function getPublicIPv4(cb) {
// dns is faster than http
// dig +short myip.opendns.com @resolver1.opendns.com
// httpGet doesn't support https yet...
var publicIpServices = [
{ url: 'https://api.ipify.org' },
{ url: 'https://ipinfo.io/ip' },
{ url: 'https://ipecho.net/plain' },
var publicIpServices = [{
url: 'https://api.ipify.org'
},
{
url: 'https://ipinfo.io/ip'
},
{
url: 'https://ipecho.net/plain'
},
//{ url: 'http://api.ipify.org' },
//{ url: 'http://ipinfo.io/ip' },
//{ url: 'http://ipecho.net/plain' },
{ url: 'http://ifconfig.me' },
{ url: 'http://ipv4.icanhazip.com' },
{ url: 'http://v4.ident.me' },
{ url: 'http://checkip.amazonaws.com' },
{
url: 'http://ifconfig.me'
},
{
url: 'http://ipv4.icanhazip.com'
},
{
url: 'http://v4.ident.me'
},
{
url: 'http://checkip.amazonaws.com'
},
//{ url: 'https://checkip.dyndns.org', handler: dynDNSHandler },
]
var service = []
service[0] = Math.floor(Math.random() * publicIpServices.length)
service[1] = Math.floor(Math.random() * publicIpServices.length)
var done = [ false, false ]
var done = [false, false]
function markDone(idx, value) {
if (value === undefined) value = ''
done[idx] = value.trim()
let ready = true
//log('done', done)
for(var i in done) {
for (var i in done) {
if (done[i] === false) {
ready = false
log('getPublicIPv4', i, 'is not ready')
@ -220,7 +236,7 @@ function getPublicIPv4(cb) {
}
function doCall(number) {
httpGet(publicIpServices[service[number]].url, function(ip) {
httpGet(publicIpServices[service[number]].url, function (ip) {
if (ip === false) {
service[number] = (Math.random() * publicIpServices.length)
// retry
@ -248,7 +264,7 @@ function randomString(len) {
function isDnsPort(ip, port, cb) {
const resolver = new dns.Resolver()
resolver.setServers([ip + ':' + port])
resolver.resolve(auto_config_test_host, function(err, records) {
resolver.resolve(auto_config_test_host, function (err, records) {
if (err) console.error('resolve error:', err)
log(auto_config_test_host, records)
cb(records !== undefined)
@ -260,12 +276,12 @@ function testDNSForLokinet(server, cb) {
resolver.setServers([server])
// incase server is 127.0.0.1:undefined
try {
resolver.resolve('localhost.loki', function(err, records) {
resolver.resolve('localhost.loki', function (err, records) {
if (err) console.error('NETWORK: localhost.loki resolve err:', err)
//log(server, 'localhost.loki test results', records)
cb(records)
})
} catch(e) {
} catch (e) {
console.error('NETWORK: testDNSForLokinet error, incorrect server?', server)
cb()
}
@ -275,18 +291,18 @@ function lookup(host, cb) {
var resolver = new dns.Resolver()
//console.log('lokinet lookup servers', runningConfig.dns.bind)
resolver.setServers([runningConfig.dns.bind])
resolver.resolve(host, function(err, records) {
resolver.resolve(host, function (err, records) {
if (err) {
// not as bad... that's at least a properly formatted response
if (err.code == 'ENOTFOUND') {
records = null
} else
// leave bad
if (err.code == 'ETIMEOUT') {
records = undefined
} else {
console.error('lokinet lookup unknown err', err)
}
// leave bad
if (err.code == 'ETIMEOUT') {
records = undefined
} else {
console.error('lokinet lookup unknown err', err)
}
}
//console.log(host, 'lokinet dns test results', records)
cb(records)
@ -296,7 +312,8 @@ function lookup(host, cb) {
function findLokiNetDNS(cb) {
const localIPs = getBoundIPv4s()
var checksLeft = 0
var servers = []
var servers = []
function checkDone() {
if (shuttingDown) {
//if (cb) cb()
@ -304,7 +321,7 @@ function findLokiNetDNS(cb) {
return
}
checksLeft--
if (checksLeft<=0) {
if (checksLeft <= 0) {
log('readResolv done')
cb(servers)
}
@ -332,10 +349,10 @@ function findLokiNetDNS(cb) {
}
*/
// maybe check all local ips too
for(var i in localIPs) {
for (var i in localIPs) {
const server = localIPs[i]
checksLeft++
testDNSForLokinet(server, function(isLokinet) {
testDNSForLokinet(server, function (isLokinet) {
if (isLokinet !== undefined) {
// lokinet
log(server, 'is a lokinet DNS server')
@ -360,7 +377,7 @@ function readResolv(dns_ip, cb) {
}
checksLeft--
//log('readResolv reports left', checksLeft)
if (checksLeft<=0) {
if (checksLeft <= 0) {
log('readResolv done')
cb(servers)
}
@ -368,7 +385,7 @@ function readResolv(dns_ip, cb) {
var resolvers = dns.getServers()
log('Current resolvers', resolvers)
for(var i in resolvers) {
for (var i in resolvers) {
const server = resolvers[i]
if (server == dns_ip) {
log('preventing DNS loop on', dns_ip)
@ -378,7 +395,7 @@ function readResolv(dns_ip, cb) {
if (idx != -1) {
log('local DNS server detected', server)
checksLeft++ // wait for it
testDNSForLokinet(server, function(isLokinet) {
testDNSForLokinet(server, function (isLokinet) {
if (isLokinet === undefined) {
// not lokinet
log(server, 'is not a lokinet DNS server')
@ -441,7 +458,7 @@ function readResolv(dns_ip, cb) {
// this can really delay the start of lokinet
function findFreePort53(ips, index, cb) {
log('testing', ips[index], 'port 53')
isDnsPort(ips[index], 53, function(res) {
isDnsPort(ips[index], 53, function (res) {
//console.log('isDnsPort res', res)
// false
if (!res) {
@ -459,7 +476,9 @@ function findFreePort53(ips, index, cb) {
}
// https://stackoverflow.com/a/40686853
function mkDirByPathSync(targetDir, { isRelativeToScript = false } = {}) {
function mkDirByPathSync(targetDir, {
isRelativeToScript = false
} = {}) {
const sep = path.sep
const initDir = path.isAbsolute(targetDir) ? sep : ''
const baseDir = isRelativeToScript ? __dirname : '.'
@ -493,7 +512,8 @@ function makeMultiplatformPath(path) {
}
var cleanUpBootstrap = false
var cleanUpIni = false
var cleanUpIni = false
function generateINI(config, need, markDone, cb) {
const homeDir = os.homedir()
//console.log('homeDir', homeDir)
@ -523,7 +543,7 @@ function generateINI(config, need, markDone, cb) {
use_lokinet_rpc_port: use_lokinet_rpc_port,
}
if (config.bootstrap_url) {
httpGet(config.bootstrap_url, function(bootstrapData) {
httpGet(config.bootstrap_url, function (bootstrapData) {
if (bootstrapData) {
cleanUpBootstrap = true
const tmpRcPath = os.tmpdir() + '/' + randomString(8) + '.lokinet_signed'
@ -540,14 +560,14 @@ function generateINI(config, need, markDone, cb) {
//params.lokinet_bootstrap_path = ''
markDone('bootstrap', params)
}
readResolv(config.dns_ip, function(servers) {
readResolv(config.dns_ip, function (servers) {
upstreamDNS_servers = servers
params.upstreamDNS_servers = servers
upstreams = 'upstream='+servers.join('\nupstream=')
upstreams = 'upstream=' + servers.join('\nupstream=')
markDone('upstream', params)
})
log('trying', 'http://'+config.rpc_ip+':'+config.rpc_port)
httpGet('http://'+config.rpc_ip+':'+config.rpc_port, function(testData) {
log('trying', 'http://' + config.rpc_ip + ':' + config.rpc_port)
httpGet('http://' + config.rpc_ip + ':' + config.rpc_port, function (testData) {
//log('rpc has', testData)
if (testData !== undefined) {
log('Bumping RPC port', testData)
@ -562,7 +582,7 @@ function generateINI(config, need, markDone, cb) {
skipDNS = true
markDone('dnsBind', params)
}
getNetworkIP(function(e, ip) {
getNetworkIP(function (e, ip) {
if (ip == 'error' || !ip) {
console.error('NETWORK: can\'t detect default adapter IP address')
// can't handle the exits here because we don't know if it's an actual requirements
@ -583,7 +603,7 @@ function generateINI(config, need, markDone, cb) {
tryIps.push('127.3.2.1')
}
tryIps.push(ip)
findFreePort53(tryIps, 0, function(free53Ip) {
findFreePort53(tryIps, 0, function (free53Ip) {
if (free53Ip === undefined) {
console.error('NETWORK: Cant automatically find an IP to put a lokinet DNS server on')
// can't handle the exits here because we don't know if it's an actual requirements
@ -597,7 +617,7 @@ function generateINI(config, need, markDone, cb) {
markDone('dnsBind', params)
})
})
getPublicIPv4(function(ip) {
getPublicIPv4(function (ip) {
//log('generateINI - ip', ip)
params.publicIP = ip
markDone('publicIP', params)
@ -650,24 +670,26 @@ function applyConfig(file_config, config_obj) {
var runningConfig = {}
var genSnCallbackFired
function generateSerivceNodeINI(config, cb) {
const homeDir = os.homedir()
var done = {
bootstrap: false,
upstream : false,
rpcCheck : false,
dnsBind : false,
netIf : false,
publicIP : false,
upstream: false,
rpcCheck: false,
dnsBind: false,
netIf: false,
publicIP: false,
}
if (config.publicIP) {
done.publicIP = undefined
}
genSnCallbackFired = false
function markDone(completeProcess, params) {
done[completeProcess] = true
let ready = true
for(var i in done) {
for (var i in done) {
if (!done[i]) {
ready = false
log(i, 'is not ready')
@ -688,7 +710,7 @@ function generateSerivceNodeINI(config, cb) {
if (config.lokid.data_dir) {
keyPath = config.lokid.data_dir
// make sure it has a trailing slash
if (keyPath[keyPath.length - 1]!='/') {
if (keyPath[keyPath.length - 1] != '/') {
keyPath += '/'
}
}
@ -719,8 +741,7 @@ function generateSerivceNodeINI(config, cb) {
bind: {
// will be set after
},
network: {
},
network: {},
api: {
enabled: true,
bind: config.rpc_ip + ':' + params.use_lokinet_rpc_port
@ -734,12 +755,12 @@ function generateSerivceNodeINI(config, cb) {
}
}
if (useNAT) {
runningConfig.router['public-ip'] = params.publicIP
runningConfig.router['public-ip'] = params.publicIP
runningConfig.router['public-port'] = config.public_port
}
// inject manual NAT config?
if (config.public_ip) {
runningConfig.router['public-ip'] = config.public_ip
runningConfig.router['public-ip'] = config.public_ip
runningConfig.router['public-port'] = config.public_port
}
runningConfig.bind[params.lokinet_nic] = config.public_port
@ -757,18 +778,20 @@ function generateSerivceNodeINI(config, cb) {
}
var genClientCallbackFired
function generateClientINI(config, cb) {
var done = {
bootstrap: false,
upstream : false,
rpcCheck : false,
dnsBind : false,
upstream: false,
rpcCheck: false,
dnsBind: false,
}
genClientCallbackFired = false
function markDone(completeProcess, params) {
done[completeProcess] = true
let ready = true
for(var i in done) {
for (var i in done) {
if (!done[i]) {
ready = false
log(i, 'is not ready')
@ -795,8 +818,7 @@ function generateClientINI(config, cb) {
netdb: {
dir: params.lokinet_nodedb,
},
network: {
},
network: {},
api: {
enabled: true,
bind: config.rpc_ip + ':' + params.use_lokinet_rpc_port
@ -816,6 +838,7 @@ function generateClientINI(config, cb) {
var shuttingDown
var lokinet
var lokinetLogging = true
function preLaunchLokinet(config, cb) {
//console.log('userInfo', os.userInfo('utf8'))
//console.log('started as', process.getuid(), process.geteuid())
@ -826,12 +849,12 @@ function preLaunchLokinet(config, cb) {
console.error('MacOS requires you start this with sudo')
process.exit()
}
// leave the linux commentary for later
/*
} else {
if (process.getuid() == 0) {
console.error('Its not recommended you run this as root')
} */
// leave the linux commentary for later
/*
} else {
if (process.getuid() == 0) {
console.error('Its not recommended you run this as root')
} */
}
if (os.platform() == 'linux') {
@ -933,7 +956,7 @@ function launchLokinet(config, cb) {
if (!shuttingDown) {
if (config.restart) {
// restart it in 30 seconds to avoid pegging the cpu
setTimeout(function() {
setTimeout(function () {
log('loki_daemon is still running, restarting lokinet')
launchLokinet(config)
}, 30 * 1000)
@ -950,25 +973,25 @@ function checkConfig(config) {
if (config === undefined) config = {}
if (config.auto_config_test_ips === undefined) config.auto_config_test_ips = ['1.1.1.1', '8.8.8.8']
if (config.auto_config_test_host === undefined ) config.auto_config_test_host='www.imdb.com'
if (config.auto_config_test_port === undefined ) config.auto_config_test_port=80
if (config.auto_config_test_host === undefined) config.auto_config_test_host = 'www.imdb.com'
if (config.auto_config_test_port === undefined) config.auto_config_test_port = 80
auto_config_test_port = config.auto_config_test_port
auto_config_test_host = config.auto_config_test_host
auto_config_test_ips = config.auto_config_test_ips
auto_config_test_ips = config.auto_config_test_ips
if (config.binary_path === undefined ) config.binary_path='/usr/local/bin/lokinet'
if (config.binary_path === undefined) config.binary_path = '/usr/local/bin/lokinet'
// we don't always want a bootstrap (seed mode)
// maybe if no port we shouldn't configure it
if (config.rpc_ip === undefined ) config.rpc_ip='127.0.0.1'
if (config.rpc_port === undefined ) config.rpc_port=0
if (config.rpc_ip === undefined) config.rpc_ip = '127.0.0.1'
if (config.rpc_port === undefined) config.rpc_port = 0
// set public_port ?
}
function waitForUrl(url, cb) {
httpGet(url, function(data) {
httpGet(url, function (data) {
//console.log('rpc data', data)
// will be undefined if down (ECONNREFUSED)
// if success
@ -982,7 +1005,7 @@ function waitForUrl(url, cb) {
log('not going to start lokinet, shutting down')
return
}
setTimeout(function() {
setTimeout(function () {
waitForUrl(url, cb)
}, 1000)
}
@ -997,12 +1020,12 @@ function startServiceNode(config, cb) {
config.restart = true
// FIXME: check for bootstrap stomp and strip it
// only us lokinet devs will need to make our own seed node
preLaunchLokinet(config, function() {
preLaunchLokinet(config, function () {
// test lokid rpc port first
// also this makes sure the service key file exists
var url = 'http://'+config.lokid.rpc_user+':'+config.lokid.rpc_pass+'@'+config.lokid.rpc_ip+':'+config.lokid.rpc_port
var url = 'http://' + config.lokid.rpc_user + ':' + config.lokid.rpc_pass + '@' + config.lokid.rpc_ip + ':' + config.lokid.rpc_port
log('lokinet waiting for lokid RPC server')
waitForUrl(url, function() {
waitForUrl(url, function () {
launchLokinet(config, cb)
})
})
@ -1010,9 +1033,9 @@ function startServiceNode(config, cb) {
function startClient(config, cb) {
checkConfig(config)
if (config.bootstrap_path === undefined && config.bootstrap_url === undefined ) config.bootstrap_url='https://i2p.rocks/bootstrap.signed'
if (config.bootstrap_path === undefined && config.bootstrap_url === undefined) config.bootstrap_url = 'https://i2p.rocks/bootstrap.signed'
config.ini_writer = generateClientINI
preLaunchLokinet(config, function() {
preLaunchLokinet(config, function () {
launchLokinet(config, cb)
})
}
@ -1033,7 +1056,7 @@ function isPidRunning(pid) {
process.kill(pid, 0)
//console.log('able to kill', pid)
return true
} catch(e) {
} catch (e) {
if (e.code == 'ERR_INVALID_ARG_TYPE') {
// means pid was undefined
return true
@ -1049,11 +1072,11 @@ function isPidRunning(pid) {
console.log(pid, 'isRunning', e.code)
return false
}
return false
}
// intent to stop lokinet and don't restart it
var retries = 0
function stop() {
shuttingDown = true
if (lokinet && lokinet.killed) {
@ -1073,7 +1096,7 @@ function stop() {
lokinet.killed = true
// HACK: lokinet on macos can not be killed if rpc port is in use
var monitorTimerStart = Date.now()
var monitorTimer = setInterval(function() {
var monitorTimer = setInterval(function () {
if (!isPidRunning(lokinet.pid)) {
// launcher can't exit until this interval is cleared
clearInterval(monitorTimer)
@ -1091,7 +1114,7 @@ function stop() {
console.error('Lokinet is still running 30s after we intentionally killed lokinet?')
var handles = process._getActiveHandles()
console.log('handles', handles.length)
for(var i in handles) {
for (var i in handles) {
var handle = handles[i]
console.log(i, 'type', handle._type, handle)
}
@ -1127,7 +1150,7 @@ function stop() {
// isRunning covers this too well
function getPID() {
return (lokinet && !lokinet.killed && lokinet.pid)?lokinet.pid:0
return (lokinet && !lokinet.killed && lokinet.pid) ? lokinet.pid : 0
}
function enableLogging() {
@ -1144,7 +1167,7 @@ function getLokiNetIP(cb) {
log('lokinet seems to be running, querying', runningConfig.dns.bind)
// where's our DNS server?
//log('RunningConfig says our lokinet\'s DNS is on', runningConfig.dns.bind)
testDNSForLokinet(runningConfig.dns.bind, function(ips) {
testDNSForLokinet(runningConfig.dns.bind, function (ips) {
//log('lokinet test', ips)
if (ips && ips.length) {
cb(ips[0])
@ -1163,8 +1186,8 @@ function getLokiNetIP(cb) {
}
if (runningConfig.api.enabled) {
log('wait for lokinet startup', runningConfig.api)
var url = 'http://'+runningConfig.api.bind+'/'
waitForUrl(url, function() {
var url = 'http://' + runningConfig.api.bind + '/'
waitForUrl(url, function () {
checkDNS()
})
} else {
@ -1173,24 +1196,24 @@ function getLokiNetIP(cb) {
}
module.exports = {
startServiceNode : startServiceNode,
startClient : startClient,
checkConfig : checkConfig,
findLokiNetDNS : findLokiNetDNS,
lookup : lookup,
isRunning : isRunning,
stop : stop,
getLokiNetIP : getLokiNetIP,
enableLogging : enableLogging,
disableLogging : disableLogging,
getPID : getPID,
startServiceNode: startServiceNode,
startClient: startClient,
checkConfig: checkConfig,
findLokiNetDNS: findLokiNetDNS,
lookup: lookup,
isRunning: isRunning,
stop: stop,
getLokiNetIP: getLokiNetIP,
enableLogging: enableLogging,
disableLogging: disableLogging,
getPID: getPID,
// FIXME: should we allow hooking of log() too?
onMessage : function(data) {
onMessage: function (data) {
if (lokinetLogging) {
console.log(`lokinet: ${data}`)
}
},
onError : function(data) {
onError: function (data) {
console.log(`lokineterr: ${data}`)
},
}

@ -1,13 +1,13 @@
const lokinet = require('./lokinet') // currently using the 0.5 api
const fs = require('fs')
const ping = require ("net-ping")
const fs = require('fs')
const ping = require("net-ping")
// horrible library that shells out to use ping...
//const ping = require('ping')
// score successful actions
// while we monitor snode and loki addresses
var session = ping.createSession ()
var session = ping.createSession()
// probably should nuke profiles.dat each round to level the playing field
if (fs.existsSync('profiles.dat')) {
@ -21,35 +21,37 @@ if (fs.existsSync('profiles.dat')) {
// FIXME: take in a binary_path as an option...
var lokinet_config = {
binary_path : '../../lokinet',
// clients will default to i2p.rocks
// bootstrap_url : 'http://206.81.100.174/n-st-1.signed',
// rpc_ip : '127.0.0.1',
// rpc_port : 28082,
// auto_config_test_host: 'www.google.com',
// auto_config_test_port: 80,
// testnet : true,
// verbose : true,
binary_path: '../../lokinet',
// clients will default to i2p.rocks
// bootstrap_url : 'http://206.81.100.174/n-st-1.signed',
// rpc_ip : '127.0.0.1',
// rpc_port : 28082,
// auto_config_test_host: 'www.google.com',
// auto_config_test_port: 80,
// testnet : true,
// verbose : true,
}
score_time = null
score_time = null
score_total = 0
var lokinet_version = 'unknown'
var known_snodes = []
var snodes_stats = {}
function addSnode(snode) {
var idx = known_snodes.indexOf(snode)
if (idx == -1) {
known_snodes.push(snode)
function lookupSnode(snode) {
lokinet.lookup(snode, function(records) {
lokinet.lookup(snode, function (records) {
console.log(snode, 'mapped to', records)
// if no response or not found, retry
if (records === undefined || records === null) {
// failure retry
setTimeout(function() {
setTimeout(function () {
console.log('retry lookup for', snode)
lookupSnode(snode)
}, 5000)
@ -70,7 +72,7 @@ function addSnode(snode) {
offlines: 0,
}
// trigger monitor update?
var snodeMonitor = setInterval(function() {
setInterval(function () {
/*
ping.sys.probe(ip, function(isAlive){
if (isAlive) {
@ -83,7 +85,7 @@ function addSnode(snode) {
}
})
*/
session.pingHost(ip, function(err, target) {
session.pingHost(ip, function (err, target) {
if (err) {
console.warn(target, 'ping err', err);
console.log(snode, ip, 'is offline')
@ -102,10 +104,10 @@ function addSnode(snode) {
}
}
setInterval(function() {
setInterval(function () {
// can be known but not mapped yet...
console.log('snode score card,', known_snodes.length, 'known routers')
for(var snode in snodes_stats) {
for (var snode in snodes_stats) {
var stats = snodes_stats[snode]
var total = stats.onlines + stats.offlines
var onlinePer = (stats.onlines / total) * 100
@ -113,10 +115,10 @@ setInterval(function() {
}
}, 30 * 1000)
lokinet.onMessage = function(data) {
lokinet.onMessage = function (data) {
console.log(`monitor: ${data}`)
var lines = data.split(/\n/)
for(var i in lines) {
for (var i in lines) {
var tline = lines[i].trim()
// lokinet-0.4.0-59e6a4bc (dev build)
if (tline.match('lokinet-0.')) {
@ -181,16 +183,16 @@ lokinet.onMessage = function(data) {
// path TX=8826efd28bede66c59782af9894eed08 RX=a994770a8c6d61700b8ca65e4a3adea3 on OBContext:default:3y3ch3m6c8xgmutxwe8fger6n963hn3mkn6tk14j67w1zdxj1n1y.loki-icxqqcpd3sfkjbqifn53h7rmusqa1fyxwqyfrrcgkd37xcikwa7y.loki is built, took 2321 ms
var parts = tline.split('path TX=')
if (parts.length > 1) {
var two = parts[1].split(' RX=')
var two = parts[1].split(' RX=')
if (two.length > 1) {
var tx = two[0]
var three = two[1].split(' on OBContext:')
var tx = two[0]
var three = two[1].split(' on OBContext:')
if (three.length > 1) {
var rx = three[0]
var four = three[1].split(' is built, took ')
var rx = three[0]
var four = three[1].split(' is built, took ')
if (four.length > 1) {
var context = four[0]
var ms = four[1]
var ms = four[1]
console.log('PATH BUILT', tx, rx, context, ms)
}
}
@ -211,7 +213,6 @@ lokinet.onMessage = function(data) {
if (parts.length > 1) {
var two = parts[1].split(' failed to select hop ')
if (two.length) {
var snode = two[0]
var hops = two[1]
//console.log('hopSelectionFailure', snode, hops)
}
@ -222,7 +223,7 @@ lokinet.onMessage = function(data) {
var parts = tline.split('obtained an exit via ')
if (parts.length > 1) {
var two = parts[1].split('.snode')
var snode = two[0]+'.snode'
var snode = two[0] + '.snode'
addSnode(snode)
}
score_total++
@ -235,8 +236,8 @@ lokinet.onMessage = function(data) {
if (two.length > 1) {
var three = two[1].split(' on SNode::')
if (three.length > 1) {
var tx = two[0]
var rx = three[0]
var tx = two[0]
var rx = three[0]
console.log('EXIT', tx, rx, 'rest', three[1])
}
}
@ -249,13 +250,13 @@ lokinet.onMessage = function(data) {
}
}
}
lokinet.onError = function(data) {
lokinet.onError = function (data) {
console.log(`monitorerr: ${data}`)
// start on 2019-04-30T15:40:55.540314745-07:00 X Records
// buffer until
// end on \n\n
var lines = data.toString().split(/\n/)
for(var i in lines) {
for (var i in lines) {
var tline = lines[i].trim()
if (tline.match('utp.session.sendq.')) {
//console.log('sendq')
@ -290,7 +291,7 @@ lokinet.onError = function(data) {
//
function checkIP(cb) {
lokinet.getLokiNetIP(function(ip) {
lokinet.getLokiNetIP(function (ip) {
if (ip === undefined) {
checkIP(cb)
return
@ -300,21 +301,21 @@ function checkIP(cb) {
})
}
lokinet.startClient(lokinet_config, function() {
lokinet.startClient(lokinet_config, function () {
// lokinet isn't necessarily running at this point
console.log('Starting monitor')
score_time = Date.now()
checkIP(function(ip) {
checkIP(function (ip) {
console.log('lokinet interface ip', ip)
lokinet.findLokiNetDNS(function(servers) {
lokinet.findLokiNetDNS(function (servers) {
console.log('monitor detected DNS Servers', servers)
})
setInterval(function() {
console.log('score', score_total, 'time', ((Date.now() - score_time)/1000))
setInterval(function () {
console.log('score', score_total, 'time', ((Date.now() - score_time) / 1000))
}, 30000)
// maybe run until a specific time and quit for comparison
// 1200s (two 10min sessions)
setTimeout(function() {
setTimeout(function () {
console.log(lokinet_config.binary_path, 'version', lokinet_version, 'final score', score_total)
process.exit()
}, 3 * 600 * 1000) // 3x 10m sessions worth

@ -58,11 +58,10 @@ def makeClient(settings, name, id):
peer = makeBase(settings, name, id)
basedir = getSetting(settings, 'baseDir', 'tmp')
nodeconf(peer['config'], basedir, name)
fname = os.path.join(basedir, "test-service.ini")
peer['config']['network'] = {
'type': 'null',
'tag':'test',
'prefetch-tag':'test'
'tag': 'test',
'prefetch-tag': 'test'
}
return peer

Loading…
Cancel
Save