.
This commit is contained in:
parent
195002ca0f
commit
57cbc85d27
1 changed files with 84 additions and 64 deletions
148
llmongo.js
Normal file → Executable file
148
llmongo.js
Normal file → Executable file
|
@ -1,76 +1,96 @@
|
|||
var Redis = require('ioredis');
|
||||
var mongoose = require('mongoose');
|
||||
#!/usr/bin/env node
|
||||
|
||||
var db,
|
||||
lastLoginModel,
|
||||
redis;
|
||||
var Redis = require('ioredis');
|
||||
|
||||
var MongoClient = require('mongodb').MongoClient
|
||||
|
||||
var redis, mongodb, lastlogin;
|
||||
var mongoReplicaSet = 'mongodb://mongo-1.mail.tiscali.sys:27018,mongo-3.mail.tiscali.sys:27018,mongo-5.mail.tiscali.sys:27018/dovecot';
|
||||
|
||||
var quit = function() {
|
||||
if (redis ) {
|
||||
redis.quit();
|
||||
};
|
||||
|
||||
console.log("Mongoose status:", mongoose.connection.readyState);
|
||||
|
||||
mongoose.disconnect(function() {
|
||||
console.log('Mongoose disconnected on app termination');
|
||||
});
|
||||
};
|
||||
|
||||
var open = function() {
|
||||
var mongoReplicaSet = 'mongodb://mongo-1.mail.tiscali.sys:27018, mongo-3.mail.tiscali.sys:27018, mongo-5.mail.tiscali.sys:27018';
|
||||
redis = new Redis('redis://redis-ll.mail.tiscali.sys:6379/0');
|
||||
|
||||
var Schema = mongoose.Schema;
|
||||
|
||||
var lastLoginSchema = new Schema({
|
||||
user: String,
|
||||
ip: String,
|
||||
protocol: String,
|
||||
date: Date,
|
||||
});
|
||||
|
||||
lastLoginModel = mongoose.model('lastLogin', lastLoginSchema);
|
||||
|
||||
redis = new Redis('redis://redis-ll.mail.tiscali.sys:6379/0');
|
||||
|
||||
db = mongoose.createConnection(mongoReplicaSet, { mongos: true } );
|
||||
}
|
||||
|
||||
var readLog = function(user) {
|
||||
|
||||
};
|
||||
|
||||
open();
|
||||
|
||||
redis.spop('llindex', function(err, user){
|
||||
if( err != null) {
|
||||
console.log(err);
|
||||
quit();
|
||||
MongoClient.connect(mongoReplicaSet, function(err, db){
|
||||
if(err){
|
||||
console.log("err");
|
||||
if (redis ) {
|
||||
redis.quit();
|
||||
};
|
||||
process.exit(-1);
|
||||
}
|
||||
lastlogin = db.collection('lastlogin');
|
||||
|
||||
redis.llen(user, function(err, len){
|
||||
var readLogs = function(index) {
|
||||
if (index == (len-1) ){
|
||||
console.log("Done: ", index);
|
||||
var quit = function(){
|
||||
redis.quit();
|
||||
db.close();
|
||||
process.exit(0);
|
||||
}
|
||||
|
||||
// Legge uno user dal SET llindex e lo elimina; viene eseguita fino a quando ci sono users.
|
||||
// Calcola quante righe di lastlogin ci sono e chiama la funzione ricorsiva readLogs
|
||||
var readUsers = function() {
|
||||
console.log("readUsers");
|
||||
redis.spop('llindex', function(err, user){
|
||||
if( err ) {
|
||||
console.log(err);
|
||||
quit();
|
||||
} else {
|
||||
redis.rpop(user, function(err, log){
|
||||
if ( err != null ) {
|
||||
console.log(err);
|
||||
quit();
|
||||
process.exit(-1);
|
||||
}
|
||||
process.exit(-1);
|
||||
}
|
||||
if( user ) {
|
||||
console.log("readLogs");
|
||||
redis.llen(user, function(err, llen){
|
||||
|
||||
console.log("Log: ", index, log);
|
||||
readLogs(index+1);
|
||||
})
|
||||
};
|
||||
};
|
||||
if(user != null) {
|
||||
readLogs(0);
|
||||
} else {
|
||||
quit();
|
||||
}
|
||||
});
|
||||
console.log("logslen: ", llen);
|
||||
|
||||
// Legge una riga di log, la elimina da redis e la inserisce su mongo.
|
||||
// Viene eseguito n-1 volte, con n = numero di righe di log.
|
||||
var readLogs = function(lindex, user, len) {
|
||||
if (lindex == len ){
|
||||
// raggiunto il numero di righe da leggere, riparte con un altro user ( se esiste )
|
||||
console.log("Done: ", user, lindex);
|
||||
readUsers();
|
||||
} else {
|
||||
console.log("rpop log: ", user);
|
||||
redis.rpop(user, function(err, log){
|
||||
if ( err ) {
|
||||
console.log(err);
|
||||
quit();
|
||||
process.exit(-1);
|
||||
}
|
||||
|
||||
console.log("log: ", log);
|
||||
// imap:1432630259:10.39.75.60
|
||||
var slog = log.split(':');
|
||||
lastlogin.insert({
|
||||
user: user,
|
||||
protocol: slog[0],
|
||||
date: slog[1],
|
||||
ip: slog[2],
|
||||
}, function(err, r){
|
||||
if(err){
|
||||
console.log("insert error: ",err);
|
||||
} else {
|
||||
// Salvato il log su mongo, legge il successivo.
|
||||
console.log("Saved: ", log, lindex);
|
||||
readLogs(lindex+1, user, len);
|
||||
}
|
||||
});
|
||||
})
|
||||
};
|
||||
};
|
||||
|
||||
// Legge il primo record per lo user "user" per llen-1 volte.
|
||||
readLogs(0, user, llen-1);
|
||||
});
|
||||
} else {
|
||||
// Se non ci sono piu' users, chiude i DB ed esce.
|
||||
console.log("quit readUsers");
|
||||
quit();
|
||||
}
|
||||
});
|
||||
};
|
||||
|
||||
readUsers();
|
||||
});
|
||||
|
|
Loading…
Add table
Reference in a new issue