2011-11-27 05:32:31 +00:00
|
|
|
/*
|
2019-02-08 22:20:57 +00:00
|
|
|
* This is a debug tool. It helps to extract all datas of a pad and move it from
|
|
|
|
* a productive environment and to a develop environment to reproduce bugs
|
|
|
|
* there. It outputs a dirtydb file
|
|
|
|
*/
|
2011-11-27 05:32:31 +00:00
|
|
|
|
2019-02-08 22:20:57 +00:00
|
|
|
if (process.argv.length != 3) {
|
2011-11-27 05:32:31 +00:00
|
|
|
console.error("Use: node extractPadData.js $PADID");
|
|
|
|
process.exit(1);
|
|
|
|
}
|
2019-02-08 22:20:57 +00:00
|
|
|
|
|
|
|
// get the padID
|
2011-11-27 05:32:31 +00:00
|
|
|
var padId = process.argv[2];
|
|
|
|
|
2013-01-13 11:20:49 +00:00
|
|
|
var db, dirty, padManager, pad, settings;
|
2011-11-27 05:32:31 +00:00
|
|
|
var neededDBValues = ["pad:"+padId];
|
|
|
|
|
2019-02-08 22:20:57 +00:00
|
|
|
var npm = require('../node_modules/ep_etherpad-lite/node_modules/npm');
|
|
|
|
var async = require('../node_modules/ep_etherpad-lite/node_modules/async');
|
2013-01-06 18:25:32 +00:00
|
|
|
|
2011-11-27 05:32:31 +00:00
|
|
|
async.series([
|
2013-01-06 18:25:32 +00:00
|
|
|
// load npm
|
|
|
|
function(callback) {
|
|
|
|
npm.load({}, function(er) {
|
2019-02-08 22:20:57 +00:00
|
|
|
if (er) {
|
2013-01-06 19:20:46 +00:00
|
|
|
console.error("Could not load NPM: " + er)
|
|
|
|
process.exit(1);
|
2019-02-08 22:20:57 +00:00
|
|
|
} else {
|
2013-01-06 19:20:46 +00:00
|
|
|
callback();
|
|
|
|
}
|
2013-01-06 18:25:32 +00:00
|
|
|
})
|
|
|
|
},
|
2019-02-08 22:20:57 +00:00
|
|
|
|
2013-01-06 18:25:32 +00:00
|
|
|
// load modules
|
|
|
|
function(callback) {
|
2013-02-27 15:26:22 +00:00
|
|
|
settings = require('../node_modules/ep_etherpad-lite/node/utils/Settings');
|
|
|
|
db = require('../node_modules/ep_etherpad-lite/node/db/DB');
|
2019-02-08 22:20:57 +00:00
|
|
|
dirty = require('../node_modules/ep_etherpad-lite/node_modules/ueberDB/node_modules/dirty')(padId + ".db");
|
2013-02-18 16:29:25 +00:00
|
|
|
callback();
|
2013-01-06 18:25:32 +00:00
|
|
|
},
|
2019-02-08 22:20:57 +00:00
|
|
|
|
|
|
|
// initialize the database
|
|
|
|
function (callback) {
|
2011-11-27 05:32:31 +00:00
|
|
|
db.init(callback);
|
|
|
|
},
|
2019-02-08 22:20:57 +00:00
|
|
|
|
|
|
|
// get the pad
|
|
|
|
function (callback) {
|
2013-02-27 15:26:22 +00:00
|
|
|
padManager = require('../node_modules/ep_etherpad-lite/node/db/PadManager');
|
2019-02-08 22:20:57 +00:00
|
|
|
|
|
|
|
padManager.getPad(padId, function(err, _pad) {
|
2011-11-27 05:32:31 +00:00
|
|
|
pad = _pad;
|
|
|
|
callback(err);
|
|
|
|
});
|
|
|
|
},
|
2019-02-08 22:20:57 +00:00
|
|
|
|
|
|
|
function (callback) {
|
|
|
|
// add all authors
|
2011-11-27 05:32:31 +00:00
|
|
|
var authors = pad.getAllAuthors();
|
2019-02-08 22:20:57 +00:00
|
|
|
for (var i = 0; i < authors.length; i++) {
|
|
|
|
neededDBValues.push('globalAuthor:' + authors[i]);
|
2011-11-27 05:32:31 +00:00
|
|
|
}
|
2019-02-08 22:20:57 +00:00
|
|
|
|
|
|
|
// add all revisions
|
2011-11-27 05:32:31 +00:00
|
|
|
var revHead = pad.head;
|
2019-02-08 22:20:57 +00:00
|
|
|
for (var i = 0; i <= revHead; i++) {
|
|
|
|
neededDBValues.push('pad:' + padId + ':revs:' + i);
|
2011-11-27 05:32:31 +00:00
|
|
|
}
|
2019-02-08 22:20:57 +00:00
|
|
|
|
|
|
|
// get all chat values
|
2011-11-27 05:32:31 +00:00
|
|
|
var chatHead = pad.chatHead;
|
2019-02-08 22:20:57 +00:00
|
|
|
for (var i = 0; i <= chatHead; i++) {
|
|
|
|
neededDBValues.push('pad:' + padId + ':chat:' + i);
|
2011-11-27 05:32:31 +00:00
|
|
|
}
|
2013-02-18 20:38:32 +00:00
|
|
|
|
2019-02-08 22:20:57 +00:00
|
|
|
// get and set all values
|
|
|
|
async.forEach(neededDBValues, function(dbkey, callback) {
|
|
|
|
db.db.db.wrappedDB.get(dbkey, function(err, dbvalue) {
|
|
|
|
if (err) { callback(err); return}
|
|
|
|
|
|
|
|
if (dbvalue && typeof dbvalue != 'object') {
|
|
|
|
dbvalue = JSON.parse(dbvalue); // if it's not json then parse it as json
|
2013-02-18 20:38:32 +00:00
|
|
|
}
|
2019-02-08 22:20:57 +00:00
|
|
|
|
2011-11-27 05:32:31 +00:00
|
|
|
dirty.set(dbkey, dbvalue, callback);
|
|
|
|
});
|
|
|
|
}, callback);
|
|
|
|
}
|
2019-02-08 22:20:57 +00:00
|
|
|
],
|
|
|
|
function (err) {
|
|
|
|
if (err) {
|
|
|
|
throw err;
|
|
|
|
} else {
|
2011-11-27 05:32:31 +00:00
|
|
|
console.log("finished");
|
|
|
|
process.exit();
|
|
|
|
}
|
|
|
|
});
|