mirror of
https://github.com/ether/etherpad-lite.git
synced 2025-04-22 00:16:15 -04:00
formatting: bulk remove trailing whitespaces
Do not touch vendorized files (e.g. libraries that were imported from external projects). No functional changes. Command: find . -name '*.<EXTENSION>' -type f -print0 | xargs -0 sed -i 's/[[:space:]]*$//'
This commit is contained in:
parent
24abd9ca07
commit
312c72c364
28 changed files with 156 additions and 156 deletions
|
@ -1,6 +1,6 @@
|
|||
#!/usr/bin/env bash
|
||||
|
||||
# IMPORTANT
|
||||
# IMPORTANT
|
||||
# Protect against misspelling a var and rm -rf /
|
||||
set -u
|
||||
set -e
|
||||
|
|
|
@ -11,21 +11,21 @@ if [ -d "../bin" ]; then
|
|||
fi
|
||||
|
||||
#Is wget installed?
|
||||
hash wget > /dev/null 2>&1 || {
|
||||
hash wget > /dev/null 2>&1 || {
|
||||
echo "Please install wget" >&2
|
||||
exit 1
|
||||
exit 1
|
||||
}
|
||||
|
||||
#Is zip installed?
|
||||
hash zip > /dev/null 2>&1 || {
|
||||
hash zip > /dev/null 2>&1 || {
|
||||
echo "Please install zip" >&2
|
||||
exit 1
|
||||
exit 1
|
||||
}
|
||||
|
||||
#Is zip installed?
|
||||
hash unzip > /dev/null 2>&1 || {
|
||||
hash unzip > /dev/null 2>&1 || {
|
||||
echo "Please install unzip" >&2
|
||||
exit 1
|
||||
exit 1
|
||||
}
|
||||
|
||||
START_FOLDER=$(pwd);
|
||||
|
|
138
bin/convert.js
138
bin/convert.js
|
@ -26,10 +26,10 @@ log("open output file...");
|
|||
var sqlOutput = fs.openSync(sqlOutputFile, "w");
|
||||
var sql = "SET CHARACTER SET UTF8;\n" +
|
||||
"CREATE TABLE IF NOT EXISTS `store` ( \n" +
|
||||
"`key` VARCHAR( 100 ) NOT NULL , \n" +
|
||||
"`value` LONGTEXT NOT NULL , \n" +
|
||||
"`key` VARCHAR( 100 ) NOT NULL , \n" +
|
||||
"`value` LONGTEXT NOT NULL , \n" +
|
||||
"PRIMARY KEY ( `key` ) \n" +
|
||||
") ENGINE = INNODB;\n" +
|
||||
") ENGINE = INNODB;\n" +
|
||||
"START TRANSACTION;\n\n";
|
||||
fs.writeSync(sqlOutput, sql);
|
||||
log("done");
|
||||
|
@ -52,7 +52,7 @@ async.series([
|
|||
function(callback)
|
||||
{
|
||||
log("get all padIds out of the database...");
|
||||
|
||||
|
||||
etherpadDB.query("SELECT ID FROM PAD_META", [], function(err, _padIDs)
|
||||
{
|
||||
padIDs = _padIDs;
|
||||
|
@ -62,9 +62,9 @@ async.series([
|
|||
function(callback)
|
||||
{
|
||||
log("done");
|
||||
|
||||
|
||||
//create a queue with a concurrency 100
|
||||
var queue = async.queue(function (padId, callback)
|
||||
var queue = async.queue(function (padId, callback)
|
||||
{
|
||||
convertPad(padId, function(err)
|
||||
{
|
||||
|
@ -72,10 +72,10 @@ async.series([
|
|||
callback(err);
|
||||
});
|
||||
}, 100);
|
||||
|
||||
|
||||
//set the step callback as the queue callback
|
||||
queue.drain = callback;
|
||||
|
||||
|
||||
//add the padids to the worker queue
|
||||
for(var i=0,length=padIDs.length;i<length;i++)
|
||||
{
|
||||
|
@ -85,25 +85,25 @@ async.series([
|
|||
], function(err)
|
||||
{
|
||||
if(err) throw err;
|
||||
|
||||
|
||||
//write the groups
|
||||
var sql = "";
|
||||
for(var proID in proID2groupID)
|
||||
{
|
||||
var groupID = proID2groupID[proID];
|
||||
var subdomain = proID2subdomain[proID];
|
||||
|
||||
|
||||
sql+="REPLACE INTO store VALUES (" + etherpadDB.escape("group:" + groupID) + ", " + etherpadDB.escape(JSON.stringify(groups[groupID]))+ ");\n";
|
||||
sql+="REPLACE INTO store VALUES (" + etherpadDB.escape("mapper2group:subdomain:" + subdomain) + ", " + etherpadDB.escape(groupID)+ ");\n";
|
||||
}
|
||||
|
||||
|
||||
//close transaction
|
||||
sql+="COMMIT;";
|
||||
|
||||
|
||||
//end the sql file
|
||||
fs.writeSync(sqlOutput, sql, undefined, "utf-8");
|
||||
fs.closeSync(sqlOutput);
|
||||
|
||||
|
||||
log("finished.");
|
||||
process.exit(0);
|
||||
});
|
||||
|
@ -118,7 +118,7 @@ var padsDone = 0;
|
|||
function incrementPadStats()
|
||||
{
|
||||
padsDone++;
|
||||
|
||||
|
||||
if(padsDone%100 == 0)
|
||||
{
|
||||
var averageTime = Math.round(padsDone/((Date.now() - startTime)/1000));
|
||||
|
@ -149,10 +149,10 @@ function convertPad(padId, callback)
|
|||
function(callback)
|
||||
{
|
||||
var sql = "SELECT * FROM `PAD_CHAT_TEXT` WHERE NUMID = (SELECT `NUMID` FROM `PAD_CHAT_META` WHERE ID=?)";
|
||||
|
||||
|
||||
etherpadDB.query(sql, [padId], function(err, results)
|
||||
{
|
||||
if(!err)
|
||||
if(!err)
|
||||
{
|
||||
try
|
||||
{
|
||||
|
@ -163,7 +163,7 @@ function convertPad(padId, callback)
|
|||
}
|
||||
}catch(e) {err = e}
|
||||
}
|
||||
|
||||
|
||||
callback(err);
|
||||
});
|
||||
},
|
||||
|
@ -171,10 +171,10 @@ function convertPad(padId, callback)
|
|||
function(callback)
|
||||
{
|
||||
var sql = "SELECT * FROM `PAD_REVS_TEXT` WHERE NUMID = (SELECT `NUMID` FROM `PAD_REVS_META` WHERE ID=?)";
|
||||
|
||||
|
||||
etherpadDB.query(sql, [padId], function(err, results)
|
||||
{
|
||||
if(!err)
|
||||
if(!err)
|
||||
{
|
||||
try
|
||||
{
|
||||
|
@ -185,7 +185,7 @@ function convertPad(padId, callback)
|
|||
}
|
||||
}catch(e) {err = e}
|
||||
}
|
||||
|
||||
|
||||
callback(err);
|
||||
});
|
||||
},
|
||||
|
@ -193,10 +193,10 @@ function convertPad(padId, callback)
|
|||
function(callback)
|
||||
{
|
||||
var sql = "SELECT * FROM `PAD_REVMETA_TEXT` WHERE NUMID = (SELECT `NUMID` FROM `PAD_REVMETA_META` WHERE ID=?)";
|
||||
|
||||
|
||||
etherpadDB.query(sql, [padId], function(err, results)
|
||||
{
|
||||
if(!err)
|
||||
if(!err)
|
||||
{
|
||||
try
|
||||
{
|
||||
|
@ -207,7 +207,7 @@ function convertPad(padId, callback)
|
|||
}
|
||||
}catch(e) {err = e}
|
||||
}
|
||||
|
||||
|
||||
callback(err);
|
||||
});
|
||||
},
|
||||
|
@ -215,7 +215,7 @@ function convertPad(padId, callback)
|
|||
function(callback)
|
||||
{
|
||||
var sql = "SELECT `JSON` FROM `PAD_APOOL` WHERE `ID` = ?";
|
||||
|
||||
|
||||
etherpadDB.query(sql, [padId], function(err, results)
|
||||
{
|
||||
if(!err)
|
||||
|
@ -225,7 +225,7 @@ function convertPad(padId, callback)
|
|||
apool=JSON.parse(results[0].JSON).x;
|
||||
}catch(e) {err = e}
|
||||
}
|
||||
|
||||
|
||||
callback(err);
|
||||
});
|
||||
},
|
||||
|
@ -233,10 +233,10 @@ function convertPad(padId, callback)
|
|||
function(callback)
|
||||
{
|
||||
var sql = "SELECT * FROM `PAD_AUTHORS_TEXT` WHERE NUMID = (SELECT `NUMID` FROM `PAD_AUTHORS_META` WHERE ID=?)";
|
||||
|
||||
|
||||
etherpadDB.query(sql, [padId], function(err, results)
|
||||
{
|
||||
if(!err)
|
||||
if(!err)
|
||||
{
|
||||
try
|
||||
{
|
||||
|
@ -247,7 +247,7 @@ function convertPad(padId, callback)
|
|||
}
|
||||
}catch(e) {err = e}
|
||||
}
|
||||
|
||||
|
||||
callback(err);
|
||||
});
|
||||
},
|
||||
|
@ -255,17 +255,17 @@ function convertPad(padId, callback)
|
|||
function(callback)
|
||||
{
|
||||
var sql = "SELECT JSON FROM `PAD_META` WHERE ID=?";
|
||||
|
||||
|
||||
etherpadDB.query(sql, [padId], function(err, results)
|
||||
{
|
||||
if(!err)
|
||||
if(!err)
|
||||
{
|
||||
try
|
||||
{
|
||||
padmeta = JSON.parse(results[0].JSON).x;
|
||||
}catch(e) {err = e}
|
||||
}
|
||||
|
||||
|
||||
callback(err);
|
||||
});
|
||||
},
|
||||
|
@ -278,19 +278,19 @@ function convertPad(padId, callback)
|
|||
callback();
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
//get the proID out of this padID
|
||||
var proID = padId.split("$")[0];
|
||||
|
||||
|
||||
var sql = "SELECT subDomain FROM pro_domains WHERE ID = ?";
|
||||
|
||||
|
||||
etherpadDB.query(sql, [proID], function(err, results)
|
||||
{
|
||||
if(!err)
|
||||
{
|
||||
subdomain = results[0].subDomain;
|
||||
}
|
||||
|
||||
|
||||
callback(err);
|
||||
});
|
||||
}
|
||||
|
@ -300,105 +300,105 @@ function convertPad(padId, callback)
|
|||
{
|
||||
//saves all values that should be written to the database
|
||||
var values = {};
|
||||
|
||||
|
||||
//this is a pro pad, let's convert it to a group pad
|
||||
if(padId.indexOf("$") != -1)
|
||||
{
|
||||
var padIdParts = padId.split("$");
|
||||
var proID = padIdParts[0];
|
||||
var padName = padIdParts[1];
|
||||
|
||||
|
||||
var groupID
|
||||
|
||||
|
||||
//this proID is not converted so far, do it
|
||||
if(proID2groupID[proID] == null)
|
||||
{
|
||||
groupID = "g." + randomString(16);
|
||||
|
||||
|
||||
//create the mappers for this new group
|
||||
proID2groupID[proID] = groupID;
|
||||
proID2subdomain[proID] = subdomain;
|
||||
groups[groupID] = {pads: {}};
|
||||
}
|
||||
|
||||
|
||||
//use the generated groupID;
|
||||
groupID = proID2groupID[proID];
|
||||
|
||||
|
||||
//rename the pad
|
||||
padId = groupID + "$" + padName;
|
||||
|
||||
|
||||
//set the value for this pad in the group
|
||||
groups[groupID].pads[padId] = 1;
|
||||
}
|
||||
|
||||
|
||||
try
|
||||
{
|
||||
var newAuthorIDs = {};
|
||||
var oldName2newName = {};
|
||||
|
||||
|
||||
//replace the authors with generated authors
|
||||
// we need to do that cause where the original etherpad saves pad local authors, the new (lite) etherpad uses them global
|
||||
for(var i in apool.numToAttrib)
|
||||
{
|
||||
var key = apool.numToAttrib[i][0];
|
||||
var value = apool.numToAttrib[i][1];
|
||||
|
||||
|
||||
//skip non authors and anonymous authors
|
||||
if(key != "author" || value == "")
|
||||
continue;
|
||||
|
||||
|
||||
//generate new author values
|
||||
var authorID = "a." + randomString(16);
|
||||
var authorColorID = authors[i].colorId || Math.floor(Math.random()*32);
|
||||
var authorName = authors[i].name || null;
|
||||
|
||||
|
||||
//overwrite the authorID of the attribute pool
|
||||
apool.numToAttrib[i][1] = authorID;
|
||||
|
||||
|
||||
//write the author to the database
|
||||
values["globalAuthor:" + authorID] = {"colorId" : authorColorID, "name": authorName, "timestamp": timestamp};
|
||||
|
||||
|
||||
//save in mappers
|
||||
newAuthorIDs[i] = authorID;
|
||||
oldName2newName[value] = authorID;
|
||||
}
|
||||
|
||||
|
||||
//save all revisions
|
||||
for(var i=0;i<changesets.length;i++)
|
||||
{
|
||||
values["pad:" + padId + ":revs:" + i] = {changeset: changesets[i],
|
||||
values["pad:" + padId + ":revs:" + i] = {changeset: changesets[i],
|
||||
meta : {
|
||||
author: newAuthorIDs[changesetsMeta[i].a],
|
||||
timestamp: changesetsMeta[i].t,
|
||||
atext: changesetsMeta[i].atext || undefined
|
||||
}};
|
||||
}
|
||||
|
||||
|
||||
//save all chat messages
|
||||
for(var i=0;i<chatMessages.length;i++)
|
||||
{
|
||||
values["pad:" + padId + ":chat:" + i] = {"text": chatMessages[i].lineText,
|
||||
"userId": oldName2newName[chatMessages[i].userId],
|
||||
values["pad:" + padId + ":chat:" + i] = {"text": chatMessages[i].lineText,
|
||||
"userId": oldName2newName[chatMessages[i].userId],
|
||||
"time": chatMessages[i].time}
|
||||
}
|
||||
|
||||
|
||||
//generate the latest atext
|
||||
var fullAPool = (new AttributePool()).fromJsonable(apool);
|
||||
var keyRev = Math.floor(padmeta.head / padmeta.keyRevInterval) * padmeta.keyRevInterval;
|
||||
var atext = changesetsMeta[keyRev].atext;
|
||||
var curRev = keyRev;
|
||||
while (curRev < padmeta.head)
|
||||
while (curRev < padmeta.head)
|
||||
{
|
||||
curRev++;
|
||||
var changeset = changesets[curRev];
|
||||
atext = Changeset.applyToAText(changeset, atext, fullAPool);
|
||||
}
|
||||
|
||||
values["pad:" + padId] = {atext: atext,
|
||||
pool: apool,
|
||||
head: padmeta.head,
|
||||
|
||||
values["pad:" + padId] = {atext: atext,
|
||||
pool: apool,
|
||||
head: padmeta.head,
|
||||
chatHead: padmeta.numChatMessages }
|
||||
|
||||
|
||||
}
|
||||
catch(e)
|
||||
{
|
||||
|
@ -407,13 +407,13 @@ function convertPad(padId, callback)
|
|||
callback();
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
var sql = "";
|
||||
for(var key in values)
|
||||
{
|
||||
sql+="REPLACE INTO store VALUES (" + etherpadDB.escape(key) + ", " + etherpadDB.escape(JSON.stringify(values[key]))+ ");\n";
|
||||
}
|
||||
|
||||
|
||||
fs.writeSync(sqlOutput, sql, undefined, "utf-8");
|
||||
callback();
|
||||
}
|
||||
|
@ -429,24 +429,24 @@ function parsePage(array, pageStart, offsets, data, json)
|
|||
{
|
||||
var start = 0;
|
||||
var lengths = offsets.split(",");
|
||||
|
||||
|
||||
for(var i=0;i<lengths.length;i++)
|
||||
{
|
||||
var unitLength = lengths[i];
|
||||
|
||||
|
||||
//skip empty units
|
||||
if(unitLength == "")
|
||||
continue;
|
||||
|
||||
|
||||
//parse the number
|
||||
unitLength = Number(unitLength);
|
||||
|
||||
|
||||
//cut the unit out of data
|
||||
var unit = data.substr(start, unitLength);
|
||||
|
||||
|
||||
//put it into the array
|
||||
array[pageStart + i] = json ? JSON.parse(unit) : unit;
|
||||
|
||||
|
||||
//update start
|
||||
start+=unitLength;
|
||||
}
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
{
|
||||
"etherpadDB":
|
||||
"etherpadDB":
|
||||
{
|
||||
"host": "localhost",
|
||||
"port": 3306,
|
||||
|
|
|
@ -12,9 +12,9 @@ try:
|
|||
assert(os.path.exists(dirtydb_input))
|
||||
assert(not os.path.exists(dirtydb_output))
|
||||
except:
|
||||
print()
|
||||
print()
|
||||
print('Usage: %s /path/to/dirty.db' % sys.argv[0])
|
||||
print()
|
||||
print()
|
||||
print('Note: Will create a file named dirty.db.new in the same folder,')
|
||||
print(' please make sure permissions are OK and a file by that')
|
||||
print(' name does not exist already. This script works by omitting')
|
||||
|
|
|
@ -65,7 +65,7 @@ function processIncludes(inputFile, input, cb) {
|
|||
console.error(includes);
|
||||
var incCount = includes.length;
|
||||
if (incCount === 0) cb(null, input);
|
||||
|
||||
|
||||
includes.forEach(function(include) {
|
||||
var fname = include.replace(/^@include\s+/, '');
|
||||
if (!fname.match(/\.md$/)) fname += '.md';
|
||||
|
|
|
@ -8,8 +8,8 @@
|
|||
ERROR_HANDLING=0
|
||||
# Your email address which should receive the error messages
|
||||
EMAIL_ADDRESS="no-reply@example.com"
|
||||
# Sets the minimum amount of time between the sending of error emails.
|
||||
# This ensures you do not get spammed during an endless reboot loop
|
||||
# Sets the minimum amount of time between the sending of error emails.
|
||||
# This ensures you do not get spammed during an endless reboot loop
|
||||
# It's the time in seconds
|
||||
TIME_BETWEEN_EMAILS=600 # 10 minutes
|
||||
|
||||
|
@ -39,7 +39,7 @@ do
|
|||
if [ ! -f ${LOG} ]; then
|
||||
touch ${LOG} || ( echo "Logfile '${LOG}' is not writeable" && exit 1 )
|
||||
fi
|
||||
|
||||
|
||||
#Check if the file is writeable
|
||||
if [ ! -w ${LOG} ]; then
|
||||
echo "Logfile '${LOG}' is not writeable"
|
||||
|
@ -48,21 +48,21 @@ do
|
|||
|
||||
#Start the application
|
||||
bin/run.sh $@ >>${LOG} 2>>${LOG}
|
||||
|
||||
|
||||
#Send email
|
||||
if [ $ERROR_HANDLING = 1 ]; then
|
||||
TIME_NOW=$(date +%s)
|
||||
TIME_SINCE_LAST_SEND=$(($TIME_NOW - $LAST_EMAIL_SEND))
|
||||
|
||||
|
||||
if [ $TIME_SINCE_LAST_SEND -gt $TIME_BETWEEN_EMAILS ]; then
|
||||
printf "Server was restarted at: $(date)\nThe last 50 lines of the log before the error happens:\n $(tail -n 50 ${LOG})" | mail -s "Pad Server was restarted" $EMAIL_ADDRESS
|
||||
|
||||
|
||||
LAST_EMAIL_SEND=$TIME_NOW
|
||||
fi
|
||||
fi
|
||||
|
||||
|
||||
echo "RESTART!" >>${LOG}
|
||||
|
||||
|
||||
#Sleep 10 seconds before restart
|
||||
sleep 10
|
||||
done
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue