Retry downloading OFAC lists (#236)

* Retry downloading OFAC lists

* Update ofac sources on lamassu-update
This commit is contained in:
Rafael Taranto 2018-12-30 10:47:09 -03:00 committed by Josh Harvey
parent b9f9c6facc
commit 7043a3c408
5 changed files with 48 additions and 1 deletions

23
bin/lamassu-ofac-update-sources Executable file
View file

@ -0,0 +1,23 @@
#!/usr/bin/env node
'use strict'
const fs = require('fs')
const ofacSources = [
{
name: 'sdn_advanced',
url: 'https://www.treasury.gov/ofac/downloads/sanctions/1.0/sdn_advanced.xml'
},
{
name: 'cons_advanced',
url: 'https://www.treasury.gov/ofac/downloads/sanctions/1.0/cons_advanced.xml'
}
]
const options = require('../lib/options-loader')()
if (!options.opts.ofacSources) {
options.opts.ofacSources = ofacSources
fs.writeFileSync(options.path, JSON.stringify(options.opts, null, ' '), 'utf8')
}

View file

@ -55,6 +55,9 @@ decho "running migration"
lamassu-migrate >> ${LOG_FILE} 2>&1 lamassu-migrate >> ${LOG_FILE} 2>&1
lamassu-migrate-config >> ${LOG_FILE} 2>&1 lamassu-migrate-config >> ${LOG_FILE} 2>&1
decho "update ofac sources"
$SCRIPTPATH/bin/lamassu-ofac-update-sources
decho "updating supervisor conf" decho "updating supervisor conf"
perl -i -pe 's/command=.*/command=$ENV{NPM_BIN}\/lamassu-server/g' /etc/supervisor/conf.d/lamassu-server.conf >> ${LOG_FILE} 2>&1 perl -i -pe 's/command=.*/command=$ENV{NPM_BIN}\/lamassu-server/g' /etc/supervisor/conf.d/lamassu-server.conf >> ${LOG_FILE} 2>&1
perl -i -pe 's/command=.*/command=$ENV{NPM_BIN}\/lamassu-admin-server/g' /etc/supervisor/conf.d/lamassu-admin-server.conf >> ${LOG_FILE} 2>&1 perl -i -pe 's/command=.*/command=$ENV{NPM_BIN}\/lamassu-admin-server/g' /etc/supervisor/conf.d/lamassu-admin-server.conf >> ${LOG_FILE} 2>&1

View file

@ -75,4 +75,8 @@ function match (nameParts, birthDateString, options) {
return result return result
} }
module.exports = {load, match} function getStructs () {
return structs
}
module.exports = {load, match, getStructs}

View file

@ -103,6 +103,10 @@ function update () {
throw new Error('ofacDataDir must be defined in lamassu.json') throw new Error('ofacDataDir must be defined in lamassu.json')
} }
if (!options.ofacSources) {
logger.error('ofacSources must be defined in lamassu.json')
}
const OFAC_SOURCES_DIR = path.join(OFAC_DATA_DIR, 'sources') const OFAC_SOURCES_DIR = path.join(OFAC_DATA_DIR, 'sources')
const OFAC_ETAGS_FILE = path.join(OFAC_DATA_DIR, 'etags.json') const OFAC_ETAGS_FILE = path.join(OFAC_DATA_DIR, 'etags.json')

View file

@ -1,3 +1,5 @@
const _ = require('lodash/fp')
const plugins = require('./plugins') const plugins = require('./plugins')
const notifier = require('./notifier') const notifier = require('./notifier')
const T = require('./time') const T = require('./time')
@ -16,6 +18,7 @@ const SWEEP_HD_INTERVAL = T.minute
const TRADE_INTERVAL = 60 * T.seconds const TRADE_INTERVAL = 60 * T.seconds
const PONG_INTERVAL = 10 * T.seconds const PONG_INTERVAL = 10 * T.seconds
const PONG_CLEAR_INTERVAL = 1 * T.day const PONG_CLEAR_INTERVAL = 1 * T.day
const SANCTIONS_INITIAL_DOWNLOAD_INTERVAL = 5 * T.minutes
const SANCTIONS_UPDATE_INTERVAL = 1 * T.week const SANCTIONS_UPDATE_INTERVAL = 1 * T.week
const RADAR_UPDATE_INTERVAL = 5 * T.minutes const RADAR_UPDATE_INTERVAL = 5 * T.minutes
@ -35,6 +38,15 @@ function reload (__settings) {
function pi () { return _pi } function pi () { return _pi }
function settings () { return _settings } function settings () { return _settings }
function initialSanctionsDownload () {
const structs = sanctions.getStructs()
const isEmptyStructs = _.isNil(structs) || _.flow(_.values, _.all(_.isEmpty))(structs)
if (!isEmptyStructs) return Promise.resolve()
return updateAndLoadSanctions()
}
function updateAndLoadSanctions () { function updateAndLoadSanctions () {
const config = configManager.unscoped(settings().config) const config = configManager.unscoped(settings().config)
@ -75,6 +87,7 @@ function start (__settings) {
setInterval(() => pi().pong(), PONG_INTERVAL) setInterval(() => pi().pong(), PONG_INTERVAL)
setInterval(() => pi().pongClear(), PONG_CLEAR_INTERVAL) setInterval(() => pi().pongClear(), PONG_CLEAR_INTERVAL)
setInterval(() => notifier.checkNotification(pi()), CHECK_NOTIFICATION_INTERVAL) setInterval(() => notifier.checkNotification(pi()), CHECK_NOTIFICATION_INTERVAL)
setInterval(initialSanctionsDownload, SANCTIONS_INITIAL_DOWNLOAD_INTERVAL)
setInterval(updateAndLoadSanctions, SANCTIONS_UPDATE_INTERVAL) setInterval(updateAndLoadSanctions, SANCTIONS_UPDATE_INTERVAL)
setInterval(updateCoinAtmRadar, RADAR_UPDATE_INTERVAL) setInterval(updateCoinAtmRadar, RADAR_UPDATE_INTERVAL)
} }