Skip to content

Instantly share code, notes, and snippets.

@crizstian
Created October 30, 2017 15:35
Show Gist options
  • Save crizstian/1bba690162f06b01a79c4f6f890b7398 to your computer and use it in GitHub Desktop.
Save crizstian/1bba690162f06b01a79c4f6f890b7398 to your computer and use it in GitHub Desktop.
'use strict'
const cluster = require('cluster')
const watch = require('node-watch')
const FtpClient = require('ftp-client')
const fs = require('fs')
const config = require('./config/config')
const readLogFiles = require('./read-files')
const saveToDB = require('./db-actions')
const moveAndDelete = require('./move-delete-files')
const geoip = require('./geo-ip')
let files = []
const reForkOnExit = (readlogs, savelogs, deletelogs, movelogs, geolocation) => {
readlogs.on('exit', (worker, code, signal) => {
console.log('worker exited =>', worker)
readlogs = cluster.fork({WorkerName: 'readlogs'})
})
savelogs.on('exit', (worker, code, signal) => {
console.log('worker exited =>', worker)
savelogs = cluster.fork({WorkerName: 'savelogs'})
})
deletelogs.on('exit', (worker, code, signal) => {
console.log('worker exited =>', worker)
deletelogs = cluster.fork({WorkerName: 'deletelogs'})
})
movelogs.on('exit', (worker, code, signal) => {
console.log('worker exited =>', worker)
movelogs = cluster.fork({WorkerName: 'movelogs'})
})
geolocation.on('exit', (worker, code, signal) => {
console.log('worker exited =>', worker)
geolocation = cluster.fork({WorkerName: 'geolocation'})
})
}
const readLastFiles = () => {
return new Promise((resolve, reject) => {
fs.readdir(`${__dirname}/logs`, (err, list) => {
if (err) {
reject(err)
}
console.log(`\nCHECKING REMAINING FILES TO PARSE =>`)
let dirfiles = list.filter(item => !(/^\.\w+/g).test(item))
console.log('TOTAL REMAINING FILES => ', dirfiles.length)
if (dirfiles.length > 0) {
let last = dirfiles[dirfiles.length - 1]
let file = `${__dirname}/logs/${last}`
console.log('LAST FILES =>', [...files, file])
resolve([...files, file])
} else {
resolve([])
}
})
})
}
const readBackup = (type) => {
return new Promise((resolve, reject) => {
fs.readdir(`${__dirname}/backup/${type}`, (err, back) => {
if (err) {
reject(err)
}
console.log(`\nCHECKING BACKUP/${type} HAS FILES TO SAVE =>`)
let dirfiles = back.filter(item => !(/^\.\w+/g).test(item))
let records = []
console.log('BACKUP FILES =>', dirfiles.length)
if (dirfiles.length > 0) {
dirfiles = dirfiles.map((file) => {
console.log('BACKUP FILE =>', `${__dirname}/backup/${type}/${file}`)
try {
const data = fs.readFileSync(`${__dirname}/backup/${type}/${file}`, 'utf8')
let d = JSON.parse(data)
records = [...records, ...d[type]]
} catch (e) {
console.log('something wrong happend with the file, e' + e)
}
return `${__dirname}/backup/${type}/${file}`
})
}
resolve({records, dirfiles})
})
})
}
const openFTP = () => {
return new FtpClient(
config.ftpSettings.connection, {
logging: 'basic'
})
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment