var config = require('./config'); const links = require('./helper/links'); var MongoClient = require ('mongodb').MongoClient; var ObjectID = require ('mongodb').ObjectID; var fs = require('fs'); var datetime = require('node-datetime'); var http = require('http'); const punycode = require('punycode'); MongoClient.connect(config.databaseURL).then(database => { let db = database; db.executeDbAdminCommand( { setParameter: true, textSearchEnabled : true}); db.collection('expired_list').createIndex({domainName: 'text'}, {unique: true}); db.collection('yesterday').drop(); db.collection('today').rename('yesterday'); db.createCollection('today'); //Get word list into memory fs.readFile(config.wordList, 'utf8', (err,data)=>{ if (err){ console.log(err); config.words=[]; }else{ config.words = data.split('\n'); config.words = config.words.map(word=>{ return word.toLowerCase(); }); config.domainList.map(url=>{ //get domain list from url links.getDomainList(url, (res)=>{ db.collection('today').insert(res,()=>{ //insertion done, compare domains with yesterday db.collection('yesterday').find({}).toArray((err,result)=>{ if (err){ console.log("Error : " + err); }else{ result.map((domain)=>{ db.collection('today').findOne({domainName:domain.domainName}, (err,result)=>{ if (result===null){ if (datetime.create().format('Y-m-d')===domain.expirationDate){ db.collection('expired_list').insert(domain); } } }); }); db.collection('expired_list').find({}).toArray((err,result)=>{ result.map(domain=>{ let checkLink = ''; switch(domain.tld){ case 'se': checkLink = config.seDomainCheck; break; case 'nu': checkLink = config.nuDomainCheck; break; } let fullName = domain.domainName + '.' + domain.tld; http.get(checkLink+punycode.toASCII(fullName), res => { res.setEncoding("utf8"); let body = ""; res.on("data", data => { body += data; }); res.on("end", () => { let status = body.split(' ')[0]; if (status !== 'free'){ db.collection('expired_list').remove({domainName:domain.domainName}); } }); }); }); process.exit(0); }); } }); }); }); }); } }); }).catch(reason=>{ console.log("Error : " + reason); });