Commit graph

1657 commits

Author SHA1 Message Date
muxator
6d400050a3 Settings.js: support configuration via environment variables.
All the configuration values can be read from environment variables using the
syntax "${ENV_VAR_NAME}".
This is useful, for example, when running in a Docker container.

EXAMPLE:
   "port":     "${PORT}"
   "minify":   "${MINIFY}"
   "skinName": "${SKIN_NAME}"

Would read the configuration values for those items from the environment
variables PORT, MINIFY and SKIN_NAME.

REMARKS:
Please note that a variable substitution always needs to be quoted.
   "port":   9001,          <-- Literal values. When not using substitution,
   "minify": false              only strings must be quoted: booleans and
   "skin":   "colibris"         numbers must not.

   "port":   ${PORT}        <-- ERROR: this is not valid json
   "minify": ${MINIFY}
   "skin":   ${SKIN_NAME}

   "port":   "${PORT}"      <-- CORRECT: if you want to use a variable
   "minify": "${MINIFY}"        substitution, put quotes around its name,
   "skin":   "${SKIN_NAME}"     even if the required value is a number or a
                                boolean.
                                Etherpad will take care of rewriting it to
                                the proper type if necessary.

Resolves #3543
2019-03-11 08:11:30 +01:00
muxator
f96e139b17 Settings.js: factored out parseSettings()
No functional changes.
2019-03-11 08:11:30 +01:00
muxator
6353768256 Settings.js: factored out storeSettings()
Grouped copied & pasted code into a single function.
2019-03-11 08:11:30 +01:00
muxator
ab57edef33 Settings.js: exit gracefully if an invalid credentials.json is passed.
Before this commit, when passed a malformed credentials.json the application
crashed with a stack dump. Now we catch the error and fail in a controlled way
(like already done for settings.json).

Example of exception we no longer throw:
  MALFORMEDJSON
  ^

  SyntaxError: Unexpected token M in JSON at position 0
      at JSON.parse (<anonymous>)
      at Object.reloadSettings (<BASEDIR>/src/node/utils/Settings.js:390:24)
      at Object.<anonymous> (<BASEDIR>/src/node/utils/Settings.js:543:9)
      at Module._compile (module.js:635:30)
      at Object.Module._extensions..js (module.js:646:10)
      at Module.load (module.js:554:32)
      at tryModuleLoad (module.js:497:12)
      at Function.Module._load (module.js:489:3)
      at Module.require (module.js:579:17)
      at require (internal/module.js:11:18)
2019-03-11 08:11:30 +01:00
muxator
8fa52659f5 Settings.js: trivial rewording of abiword and soffice (libreoffice) error messages 2019-03-11 08:11:30 +01:00
muxator
d526c5ccca Settings.js: trivial reformatting 2019-03-11 08:11:30 +01:00
Ray Bellis
ac7663c337 db/DB.js: prevent DB layer from returning undefined
ueberDB2 can return either undefined or null for a missing key, depending on
which DB driver is used. This patch changes the promise version of the API so
that it will always return null.
2019-03-05 10:46:57 +00:00
Ray Bellis
769933786c allow some operations to proceed in parallel
some code chunks previously used `async.parallel` but if you
use `await` that forces them to be run serially.  Instead,
you can initiate the operation (getting a Promise) and then
_later_ `await` the result of that Promise.
2019-02-01 09:57:50 +00:00
Ray Bellis
e7c2fad7b0 convert some async loops into parallel loops
If you use `await` inside a loop it makes the loop inherently serial.

If you omit the `await` however, the tasks will all start but the loop
will finish while the tasks are still being scheduled.

So, to make a set of tasks run in parallel but then have the
code block after the loop once all the tasks have been completed
you have to get an array of Promises (one for each iteration) and
then use `Promise.all()` to wait for those promises to be resolved.
Using `Array#map` is a convenient way to go from an array of inputs
to the require array of Promises.
2019-02-01 00:07:06 +00:00
Ray Bellis
07ae44ddf4 PadMessageHandler.js: cope better with session disconnects 2019-01-31 15:46:25 +00:00
Ray Bellis
b1c5024bcf remove thenify use - no longer required 2019-01-31 14:48:22 +00:00
Ray Bellis
ccb49dcdc1 padDiff.js: convert to Promises/async 2019-01-31 14:38:56 +00:00
Ray Bellis
4622309dc2 TidyHtml.js: convert to promises
test case uses "nodeify" to convert the calls to TidyHtml back
into nodeback because it integrates better with the test framework
2019-01-31 13:42:41 +00:00
Ray Bellis
6d1b6b2796 db/Pad.js: convert to promises/async
Also updated some small chunks of dependent code that couldn't be converted
until this one had been done.
2019-01-31 11:14:38 +00:00
Ray Bellis
ebb8a64e3c errorhandling.js: use promise db.doShutdown interface 2019-01-31 11:14:27 +00:00
Ray Bellis
b664eb488c ImportHandler.js: ensure import connection closing happens at the right point 2019-02-08 14:46:05 +00:00
Ray Bellis
62345ac8f7 import/export: conversion to Promises/async
NB1: needs additional review and testing - no abiword available on my test bed
NB2: in ImportHandler.js, directly delete the file, and handle the eventual
     error later: checking before for existence is prone to race conditions,
     and does not handle any errors anyway.
2019-01-31 08:55:36 +00:00
Ray Bellis
5192a0c498 db/ReadOnlyManager.js: completed conversion
Requires temporary hack within `Pad.remove()` to allow for the lack of
callback on the rewritten version.
2019-01-30 16:19:51 +00:00
Ray Bellis
bb80325d2c PadMessageHandler.js: completed conversion 2019-01-30 15:27:42 +00:00
Ray Bellis
9246a1de26 PadMessageHandler.js: further conversion 2019-01-30 13:55:49 +00:00
Ray Bellis
d543d5ae6a PadMessageHandler.js: convert handleUserChanges() to Promises
- the call site still expects a nodeback function, so also introduced the
  `nodeify` module to allow that function to work as expected.
2019-01-30 10:43:01 +00:00
Ray Bellis
58d0e6cea4 APIHandler.js: further cleanup
- removed possible issue with failing to sanitize `padName` if `padId` was also
  supplied
- removed unnecessary `try` block
- simplified API and function name matching tests
2019-01-30 10:41:10 +00:00
Ray Bellis
982d4f380a db/Pad.js: start use of promise DB methods 2019-01-30 10:25:46 +00:00
Ray Bellis
7f19033cc0 SocketIORouter: code formatting cleanups 2019-01-30 10:25:01 +00:00
Ray Bellis
bbe4a5f756 db/PadManager.js: more conversion to Promises/async 2019-01-28 16:20:30 +00:00
Ray Bellis
8108964472 db/AuthorManager.js: further conversion
also fixes a missing await calling `.createAuthor` in db/Pad.js
2019-01-28 15:36:36 +00:00
Ray Bellis
005c0afa97 db/SessionManager.js: completely converted to Promises/async 2019-01-28 14:44:36 +00:00
Ray Bellis
e58da69cfb db/SecurityManager.js: converted checkAccess() to pure Promises
Also converted the handler functions that depend on checkAccess() into async
functions too.

NB: this commit needs specific attention to it because it touches a lot of
security related code!
2019-01-28 13:13:24 +00:00
Ray Bellis
e7dc0766fd db/API.js: complete conversion to Promises
This patch also contains significant refactoring relating to error checking of
arguments supplied to the functions (e.g. rev) facilitated by use of `throw`
instead of nodeback errors.
2019-01-25 18:08:34 +00:00
Ray Bellis
1b6430ae9f db/PadMessageHandler.js: partial conversion to Promises
Converted those functions that API.js still depends on, and others that at this
point are never called via the nodeback mechanism.
2019-01-25 18:07:01 +00:00
Ray Bellis
8f53e4407e db/AuthorManager.js: partial conversion to Promises 2019-01-25 15:47:25 +00:00
Ray Bellis
eedae98e2f db/PadManager.js: convert sanitizePadId() to Promises
The function is now iterative rather than recursive.
2019-01-25 15:15:16 +00:00
Ray Bellis
bf9e3f92b5 db/PadManager.js: renamed doesPadExists() -> doesPadExist()
Removed the 's' for consistency with the other `doesFooExist()` manager calls.
Retained an alias for plugins that might be using it.
2019-01-25 15:05:12 +00:00
Ray Bellis
a875ca6c30 db/SessionManager.js: mostly converted to Promises 2019-01-25 14:53:24 +00:00
Ray Bellis
16c4c33f49 db/AuthorManager.js: renamed doesAuthorExists() -> doesAuthorExist()
Removed the 's' for consistency with the other `doesFooExist()` manager calls.
Retained an alias for plugins that might be using it.
2019-01-25 13:37:24 +00:00
Ray Bellis
70a045ad3c db/GroupManager.js: mostly converted to Promises / async 2019-01-25 12:56:57 +00:00
Ray Bellis
29e9f86cad db/DB.js: add Promise-only API methods
Promisified methods:
  - get()
  - set()
  - findKeys()
  - getSub()
  - setSub()
  - remove()
  - doShutdown()
2019-01-23 18:08:47 +00:00
Ray Bellis
583ea92aaf db/SessionStore.js: do not migrate to Promises. Make optional all(), clear() and length()
1. This module was not migrated to Promises, because it is only used via
   express-session, which can't actually use promises anyway.

2. all(), clear() and length() depend on the presence of the `db.forEach()`
   function, which in ueberdb2 doesn't even exist.

   Fortunately those three methods are optional, so I made their existence
   conditional on the presence of `db.forEach`.

3. in SessionStore.clear(), replaced a call to db.db.remove() with db.remove()
2019-01-23 16:58:43 +00:00
muxator
630af9af7d db/SessionStore.js: call nextTick() only if there is something to do
Changed two occurrences of:

  process.nextTick(function() {
     if (fn) fn();
  });

with

  if (fn) {
    process.nextTick(fn);
  }

i.e. such that no function even gets added to the `nextTick` queue unless
there's actually a function to be called.

Extracted from Ray's work.
2019-02-09 00:14:53 +01:00
Ray Bellis
96d875b4d1 padurlsanitize.js: rewritten to consume promises 2019-01-23 16:36:28 +00:00
muxator
b699621e5a padurlsanitize.js: invert a condition prior to refactoring
Extracted from Ray's work.
2019-02-09 00:05:21 +01:00
Ray Bellis
d5d28717c4 access controls: promisification
`getPadAccess()` (src/node/padaccess.js) is now "promise only", resolving to
`true` or `false` as appropriate, and throwing an exception if there's an
error.

The two call sites (padreadonly.js and importexport.js) updated to match.
2019-01-23 16:29:36 +00:00
Ray Bellis
34fdaa4e8c db/SecurityManager.js: convert checkAccess() to thenify 2019-01-23 16:25:29 +00:00
Ray Bellis
23a3a079a6 tests.js: remove use of async.js
Use real `async` instead of async.js where applicable.
The `getPluginTests()` function was never truly async anyway because it only
contains calls to synchronous `fs` modules.
2019-01-23 16:21:40 +00:00
Ray Bellis
0c2d662541 plugins download and search: converted to Promises
Also fixed a bug where the system would make a request to the central server for
the plugin list for every search even if the list was already cached.
2019-01-23 12:24:53 +00:00
Ray Bellis
5ef4a2d1d5 more thenify in node/utils/* 2019-01-22 17:30:33 +00:00
Ray Bellis
584e481430 PadMessageHandler.js: migrate to thenify 2019-01-22 15:48:29 +00:00
Ray Bellis
5d7162ac9a utils/ImportHtml.js: migrate to thenify 2019-01-22 14:58:25 +00:00
Ray Bellis
c4f1f83747 APIHandler.js: use promises 2019-01-22 13:30:28 +00:00
Ray Bellis
ec5baa2ab3 PadMessageHandler.js: convert two remaining API calls to thenify 2019-01-22 12:58:26 +00:00
Ray Bellis
17fe32ec0c start using "thenify" to support callback and promises
PadManager.sanitizePadId() can't use thenify: single arg callback
2019-01-21 16:28:05 +00:00
muxator
40c45077ef db/GroupManager.js: factored out a variable
Extracted from Ray's work.
2019-02-09 01:15:50 +01:00
Ray Bellis
4877ec319a server.js: rewritten to use Promises 2019-01-18 16:10:25 +00:00
Ray Bellis
3802073695 db/DB.js: allow a Promise return instead of callbacks in init() 2019-01-18 13:48:46 +00:00
muxator
b0846ded14 db/SessionManager.js: "authorMangager" -> "authorManager"
Extracted from Ray's work.
2019-02-09 02:19:14 +01:00
muxator
98993fe156 db/SessionManager.js: "groupMangager" -> "groupManager"
Extracted from Ray's work.
2019-02-09 02:18:36 +01:00
muxator
11453d544c prepare to async: stricter checks
This change is in preparation of the future async refactoring by Ray. It tries
to extract as many changes in boolean conditions as possible, in order to make
more evident identifying eventual logic bugs in the future work.

This proved already useful in at least one case.

BEWARE: this commit exposes an incoherency in the DB API, in which, depending
on the driver used, some functions can return null or undefined. This condition
will be externally fixed by the final commit in this series ("db/DB.js: prevent
DB layer from returning undefined"). Until that commit, the code base may have
some bugs.
2019-03-01 09:43:41 +01:00
muxator
e841798314 prepare to async: typos in error messages
This change extracts the grammar correction performed on the async branch,
anticipating them in a single commit. It cannot be folded with the previous
one, as it is not purely cosmetic.
2019-02-15 22:52:53 +01:00
muxator
9497ee734f prepare to async: trivial reformatting
This change is only cosmetic. Its aim is do make it easier to understand the
async changes that are going to be merged later on. It was extracted from the
original work from Ray Bellis.

To verify that nothing has changed, you can run the following command on each
file touched by this commit:
  npm install uglify-es
  diff --unified <(uglify-js --beautify bracketize <BEFORE.js>) <(uglify-js --beautify bracketize <AFTER.js>)



This is a complete script that does the same automatically (works from a
mercurial clone):

```bash
#!/usr/bin/env bash

set -eu

REVISION=<THIS_REVISION>

PARENT_REV=$(hg identify --rev "${REVISION}" --template '{p1rev}')
FILE_LIST=$(hg status --no-status --change ${REVISION})
UGLIFYJS="node_modules/uglify-es/bin/uglifyjs"

for FILE_NAME in ${FILE_LIST[@]}; do
  echo "Checking ${FILE_NAME}"
  diff --unified \
    <("${UGLIFYJS}" --beautify bracketize <(hg cat --rev "${PARENT_REV}" "${FILE_NAME}")) \
    <("${UGLIFYJS}" --beautify bracketize <(hg cat --rev "${REVISION}"   "${FILE_NAME}"))
done
```
2019-02-08 23:20:57 +01:00
muxator
cc23bd18a4 db/API.js: require() Changeset library at top of file
Introduced with d246a191c6 ("Added option to restore revisions #1791") on
2014-11-08.
2019-03-07 00:39:41 +01:00
muxator
06756e49ee db/API.js: reuse the already required padMessageHandler (2 of 2)
It was introduced on 2014-11-12 by commit 9d39c9591a ("update pad clients").
2019-03-07 00:14:49 +01:00
muxator
72260b86de db/API.js: reuse the already required padMessageHandler (1 of 2)
Commit 94cb743ca8 ("Fix API call appendChatMessage to send new message to all
connected clients") fixed a bug, but introduced a redundant require().
2019-03-07 00:04:08 +01:00
muxator
10172af199 db/API.js: no need to parseInt(time) here
We are already sure that time is an int
2019-03-07 00:02:24 +01:00
muxator
b34fc2de2b use Date.now() instead of new Date().getTime()
This is documented to be more performant.

The substitution was made on frontend code, too (i.e., the one in /static),
because Date.now() is supported since IE 9, and we are life supporting only
IE 11.

Commands:
  find . -name *.js | xargs sed --in-place "s/new Date().getTime()/Date.now()/g"
  find . -name *.js | xargs sed --in-place "s/(new Date()).getTime()/Date.now()/g"

Not done on jQuery.
2019-02-26 23:25:15 +01:00
muxator
90bfbeb38d PadMessageHandler.js: fixed logic error in a guard condition
The guard condition on count being non negative and < 100 used the wrong
boolean operator. In its form it was impossible.

This error was introduced in 2013, in 5592c4b0fe.
Fixes #3499
2019-02-27 00:56:41 +01:00
muxator
4b913172fe PadMessageHandler.js: renamed parameter in handleCustomMessage() to avoid name clash 2019-02-26 22:19:49 +01:00
muxator
791012bb9b PadMessageHandler.js: removed redundant return statement 2019-02-26 19:15:22 +01:00
muxator
46fdeb8dc4 ExportTxt.js: getPadTXT() does not need to be exported
This function is used only inside this module, and does not belong to its
external interface.
2019-02-22 23:32:10 +01:00
muxator
169a06793d db/API.js: almost removed optional argument handling
The HTTP API doesn't ever omit arguments, it always passes `undefined` for a
parameter that wasn't supplied in the request.

The functions that were simplified are:
  - getRevisionChangeset()
  - getText()
  - getHTML()
  - saveRevision()

The only function still supporting optional arguments is getPadSafe(), which is
only called from this module.
2019-02-19 00:15:54 +01:00
muxator
26f3f1bcd0 db/Pad.js: make "force" parameter non optional in Pad.prototype.copy()
This function was simulating two overloads:
  1. copy(destinationID, force, callback)
  2. copy(destinationID, callback), in this case "force" would be assumed false

But all the call sites always used the version with arity 3.
Thus, we can remove that optionality and always assume that the funcion will be
called with three parameters. This will simplify future work.
2019-02-13 14:01:24 +01:00
muxator
59a6f2e9b8 node8: get rid of node < 0.7 compatibility when deleting files.
- path.exists() is no longer part of nodejs
- fs.exists() is deprecated (as of nodejs >= 8)
- checking a file for existence before using it is open to raca condition. It is
  preferable to go ahead and use the file, and eventually handle the error
- we can afford two simple synchronous fs operations here
2019-02-19 22:01:12 +01:00
muxator
6d36bb2c53 node8: we can safely use os.tmpdir()
Since we are requiring node >= 8, we can safely use native functionalities.
2019-02-19 22:01:12 +01:00
muxator
09949c242a node8: we no longer need to use a shim for Object.values in stats.js 2019-02-19 22:01:12 +01:00
muxator
9d35d15ae3 node8: require nodejs >= 8.9.0, npm >= 6.4
Next version will be Etherpad 1.8. As planned in #3424, we are going to require
NodeJS >=8.9.0 and npm >= 6.4.

This commit implements that change and updates documentation and scripts.
Subsequent changes will get rid of old idioms, dating back to node < 0.7, that
still survive in the code.
Once migrated to NodeJS 8, we will be able to start working on migrating the
code base from callbacks to async/await, greatly simplifying legibility (see
#3540).

Closes #3557
2019-02-19 22:01:12 +01:00
muxator
9d9b7c9faf NodeVersion.js: do not use callbacks, simplify calling style in server.js 2019-02-19 00:46:37 +01:00
muxator
36addd2205 server.js: group together the loading of the stats system
No functional changes, this is intended to simplify subsequent patches.
2019-02-19 00:41:51 +01:00
muxator
d5d428c4ee windows: allow graceful shutdown on Windows, too
Until Etherpad 1.7.5, process.on('SIGTERM') and process.on('SIGINT') were not
hooked up under Windows, because old nodejs versions did not support them.
This excluded the possibility of doing a graceful shutdown of the database
connection under that platform.

According to nodejs 6.x documentation, it is now safe to do so. This allows to
gracefully close the DB connection when hitting CTRL+C under Windows, for
example.

Source: https://nodejs.org/docs/latest-v6.x/api/process.html#process_signal_events

  - SIGTERM is not supported on Windows, it can be listened on.
  - SIGINT from the terminal is supported on all platforms, and can usually be
    generated with <Ctrl>+C (though this may be configurable). It is not
    generated when terminal raw mode is enabled.
2019-02-16 00:14:39 +01:00
muxator
631b23f7a2 utils/AbsolutePaths.js: do not break when running as a Windows manual install
A Windows manual install has the same directory layout of a normal Unix one
(e.g. the nice symlink node_modules/ep_etherpad-lite -> ../src).
Only when running from the pre-built Windows package the directory layout is
different (e.g. src is physically copied into node_modules/ep_etherpad-lite).
The previous version of the code wrongly assumed that all Windows installs would
be run from the pre-built pakage.

In this version the path search is the same on all platform. If it fails, and we
are on Windows, there is a fallback for the specific case of the pre-built
package.

Fixes #3550
2019-02-11 03:28:02 +01:00
muxator
78c057af31 NodeVersion.js: factor out require('semver') 2019-02-08 19:10:49 +01:00
Ray Bellis
c8e5d87268 api: simplify version table
This commit vastly shortens (and simplifies) the version table within
handler/APIHandler.js by building each version's entry incrementally based off
the previous version.

The resulting table has been validated by comparing the "before" and "after"
output of the following loop on both versions of the code (albeit with an
intermediate "sort" step to account for the different insertion order)

  for (let v in version) {
    let m = version[v];
    for (let [k, a] of Object.entries(m)) {
      console.log(v, k, a);
    }
  }

The patch also fixes a few typos, and removes a duplicate definition of
getChatHistory which in each applicable version was defined with two different
parameter lists, but where only the second would be used.
2019-01-22 22:51:22 +01:00
HairyFotr
fce55df2b7 Fix typos 2019-01-16 11:14:04 +01:00
muxator
5b88882e34 LibreOffice: add debugging log statements 2018-11-01 00:22:27 +01:00
muxator
4b8a0ff4ac LibreOffice: rename variables (conversion is generic and not PDF-specific) 2018-11-01 00:18:26 +01:00
muxator
73d09f1c6c LibreOffice: rephrase comments (conversion is generic and not PDF-specific) 2018-10-31 22:34:11 +01:00
muxator
df5618b274 ImportHandler: flattened code
Removed redundant else, no functional changes
2018-10-31 23:34:15 +01:00
muxator
fcd88de900 ImportHandler: flattened code
Removed redundant else, no functional changes
2018-10-31 23:31:23 +01:00
muxator
49a7572cee ImportHandler: early return by condition inversion
No functional changes
2018-10-31 23:28:52 +01:00
muxator
df15daac0e ImportHandler: early return by condition inversion
No functional changes
2018-10-31 23:27:22 +01:00
muxator
12bb97dc2d ImportHandler: early return by condition inversion
No functional changes
2018-10-31 23:24:56 +01:00
muxator
2b8e45e2bd ImportHandler: anticipated the error checking
No functional changes.
2018-10-31 23:22:50 +01:00
muxator
4c2ad68b69 ImportHandler: early return via DeMorgan's law
Inverted a boolean condition, no functional changes.
2018-10-31 23:20:55 +01:00
muxator
f652ba8c52 ImportHandler: flattened code
Removed redundant else, no functional changes
2018-10-31 23:16:20 +01:00
muxator
fb552b2dbb ImportHandler: early return via DeMorgan's law
Inverted a boolean condition, no functional changes.
2018-10-31 23:15:01 +01:00
muxator
9d104cc4b0 ImportHandler: early return via DeMorgan's law
Inverted a boolean condition, no functional changes.
2018-10-31 23:09:27 +01:00
muxator
395db73eb1 ImportHandler: early return by condition inversion
No functional changes
2018-10-31 23:00:45 +01:00
muxator
6727a77073 ImportHandler: flatten code
No functional changes
2018-10-31 22:55:58 +01:00
Luc Didry
e8558e3497 Allow to import files using soffice
Currently, you have to use Abiword to convert odt, pdf and doc files to be able to import those files.
This add soffice as convertor too.
2018-10-31 22:21:48 +01:00
muxator
1a93ab4eb5 db/Pad: reversed truthy condition to make core logic evident
Since the original comparison compared for truthy and not for "===", and it's
3 AM now, I blindly negated it, in order to show how fragile it was in the first
instance.

No functional changes.

This is the final commit of this refactoring series.
2018-08-29 03:03:34 +02:00
muxator
69e1bf28aa db/Pad: reversed condition to make core logic evident. No functional changes
Here it was legal to replace a lax comparison with a strict one, since we are
using indexOf(), whose return value is known.
2018-08-29 02:52:26 +02:00
muxator
d931a700b4 db/Pad: reversed condition to make error handling evident. No functional changes
Here it was legal to replace a lax comparison with a strict one, since we are
using indexOf(), whose return value is known.
2018-08-29 02:49:40 +02:00
muxator
0e8789863c db/Pad: removed unuseful else clause, no functional changes 2018-08-29 02:46:08 +02:00
muxator
049f5f2859 db/Pad: removed unuseful else clause, no functional changes 2018-08-29 02:44:51 +02:00
muxator
e90487c3e2 db/GroupManager: early return, no functional changes 2018-08-29 02:42:29 +02:00
muxator
a1d21c0cd2 db/GroupManager: early return, no functional changes 2018-08-29 02:41:53 +02:00
muxator
9ed7608421 db/GroupManager: early return, no functional changes 2018-08-29 02:41:14 +02:00
muxator
da8faa1aa9 db/GroupManager: early return, no functional changes 2018-08-29 02:40:14 +02:00
muxator
f7254a47ea db/GroupManager: early return, no functional changes 2018-08-29 02:39:05 +02:00
muxator
604952bc97 db/GroupManager: fix indentation
This is to make easier on the eye the next change.
2018-08-29 02:38:09 +02:00
muxator
c85bcf0614 db/GroupManager: move inner function on top. No functional change
This is to make easier on the eye the next change.
2018-08-29 02:36:25 +02:00
muxator
6af419a88e SecurityManager.js: early return, no functional changes 2018-08-29 02:33:29 +02:00
muxator
61823e7689 db/AuthorManager: early return, no functional changes 2018-08-29 02:28:40 +02:00
muxator
2b8646a855 db/AuthorManager: early return, no functional changes 2018-08-29 02:28:35 +02:00
muxator
b59818676e db/API.js: early return to make error handling evident. No functional changes 2018-08-29 02:18:32 +02:00
muxator
67ce19eddb db/API.js: removed unuseful else clause, no functional changes 2018-08-29 02:16:24 +02:00
muxator
610a6db8c8 db/API.js: early return, no functional changes 2018-08-29 02:13:06 +02:00
muxator
fef57efd46 db/API.js: early return, no functional changes 2018-08-29 02:10:45 +02:00
muxator
42bc0a59e1 db/API.js: early return, no functional changes 2018-08-29 02:09:33 +02:00
muxator
05a33f1533 db/API.js, SessionManager: lot of copied & pasted code in integer parsing
Replaced with an early return, no functional changes.
2018-08-29 02:08:05 +02:00
muxator
1d45a63864 db/API.js: early return, no functional changes 2018-08-29 01:57:00 +02:00
muxator
30d814d8ed db/API.js: early return, no functional changes 2018-08-29 01:57:28 +02:00
muxator
4728736dd8 db/PadManager: early return, no functional changes 2018-08-29 01:47:38 +02:00
muxator
ecb0c41d29 db/PadManager: early return, no functional changes 2018-08-29 01:46:18 +02:00
muxator
12f224ae72 db/PadManager: early return, no functional changes 2018-08-29 01:44:13 +02:00
muxator
391bd79e03 padurlsanitize: early return, no functional changes 2018-08-29 01:38:55 +02:00
muxator
d19436d044 adminsettings: early return, no functional changes. 2018-08-29 01:34:45 +02:00
muxator
b60c0b122c PadMessageHandler: reversed condition to make core logic evident. No behavioural changes.
This one replaces a big "if (message)" negating its truthy condition.

Being lame, I erred on the safe side and wrote a super ugly statement that is
guaranteed to respect the original logic.

In the hope that eventual logic errors become more evident now.

See: https://stackoverflow.com/questions/36661748/what-is-the-exact-negation-of-ifvariable-in-javascript#36661843
2018-08-29 01:23:38 +02:00
muxator
324929ca2d PadMessageHandler: early return to reduce code depth.
Get rid of an else branch to simplify code layout. No functional changes at all.

==============

This series is an attempt to reduce the control structure depth of the code
base, maintaining at the same time its exact same behaviour, bugs included. It
is, in a sense, an initial attempt at a refactoring in the spirit of its
original definition [0].

The idea beyond this refactoring is that reducing the code depth and, sometimes,
inverting some conditions, bugs and logic errors may become easier to spot, and
the code easier to read.

When looked at ignoring whitespace changes, all of these diffs should appear
trivial.

[0] https://refactoring.com/
2018-08-29 00:57:28 +02:00
muxator
fb1f8dd239 toolbar: missing var declaration
Without this, Etherpad would fail to start in strict mode:
  "ReferenceError: SelectButton is not defined"
2018-08-27 01:34:01 +02:00
muxator
27b3b0ecd2 logs: on the server, use template literals when possible
It's just synctactic sugar, but it is always better than executing string
concatenations in one's mind.

Do not do this with files in src/static, because we want to keep IE 11
compatibility.
2018-08-27 01:29:37 +02:00
muxator
0e972aaecf settings: reword some log messages 2018-08-27 01:56:33 +02:00
muxator
9c990ab08a skins: finalize support for multiple skins
The old "static/custom" directory is replaced by "static/skins/<skinName>",
where <skinName> is taken from settings.json.
When no value is found, a default of "no-skin" is assumed, so that backward
compatibility is maintained.

The most evident security concerns have been addressed.

Closes #3471.
2018-08-26 21:17:04 +02:00
muxator
e34c74b24d skins: the settings class understands skinName. Send skinName value to the client
skinName must be a single string (no directory separators in it) pointing to an
existing directory under /src/static/skins.
In case these conditions are not met, its value is rewritten to "no-skin".

Also, the value of skinName if sent to the client via clientVars for allowing
its use it in the browser.
2018-08-26 21:17:04 +02:00
Luc Didry
2cc32d7fe9 Add --writer option to soffice convert command
If you edit `src/templates/export_html.html` to remove the
`<meta name="changedby" content="Etherpad">` tag[1], PDF export with
soffice has a bug: the first word of the pad is deleted and a blank page
is inserted as first page (the pad's text begins on the second page).
The `--writer` soffice option avoids that bug.

[1] you may want to delete that tag since it is inserted as a comment in
.doc or .odt soffice export.
2018-08-24 18:26:51 +02:00
muxator
d1481041c2 specialpages: replace relative paths for sendfile() with absolute ones
This file uses it for robots.txt and favicon.ico.

This makes use of the new stable settings.root introduced with #3466, and will
be modified when introducing support for custom skins.
2018-08-23 23:39:38 +02:00
muxator
9db5fd7884 AbsolutePaths: introduced isSubdir()
It can be used to check whether a user input or a configuration settings tries
to traverse the directory hierarchy, going out of its allowed bounds.

source: https://stackoverflow.com/questions/37521893/determine-if-a-path-is-subdirectory-of-another-in-node-js#45242825
2018-08-23 07:20:17 +02:00
muxator
ce14a99606 settings, APIHandler: use makeAbsolute() for locating APIKEY and SESSIONKEY 2018-08-23 07:02:45 +02:00
muxator
8247d5eef3 settings: use makeAbsolute() for locating settings.json and credentials.json
This should look to consistent locations when looking for relative paths,
without depending on current working directory.
For absolute paths, nothing changes.
2018-08-23 07:02:45 +02:00
muxator
435b2a4edf settings: the dirtyDb file path is interpreted using makeAbsolute()
Otherwise its position depended on process.cwd
2018-08-23 07:02:45 +02:00
muxator
5406472d65 AbsolutePaths: makeAbsolute() computes an absolute path from a relative one
The base is assumed to be exports.findEtherpadRoot(), without depending on
process.cwd.
2018-08-23 07:02:45 +02:00
muxator
1b938a7a40 settings: compute exports.root via AbsolutePaths.findEtherpadRoot()
First steps for fixing #3466.
2018-08-23 07:02:45 +02:00
muxator
b1a0e14ee2 AbsolutePaths: written findEtherpadRoot()
This is just a function (with an ugly side effect for caching purposes) that
heuristically tries to compute the Etherpad installation path when running under
Unix and win32 (they have different file system layouts).

This path can be used by Etherpad as a base for all the relative paths, in order
to be deterministic and not depending on cwd.
2018-08-23 07:02:45 +02:00
muxator
cbce3c1b08 AbsolutePaths: written utility function popIfEndsWith()
It will be necessary in the next commit to evaluate the Etherpad base
install path.
2018-08-23 07:02:45 +02:00
muxator
dbf7eff1fc AbsolutePaths: module for deterministically computing relative Etherpad paths
Empty for now.
2018-08-23 07:02:45 +02:00
muxator
ec5573f88c settings, APIHandler: generate more informative logs 2018-08-21 00:05:15 +02:00
muxator
b635371d52 settings: the default dirty.db location should be var/dirty.db
This is the location that is choosen by default when Etherpad starts with no
settings.json file.
It was different than the one contained into setting.json.template.
2018-08-21 21:57:13 +02:00
muxator
cb07805022 NodeVersion: take responsibility for ugly code 2018-08-22 00:12:53 +02:00
muxator
fc14f60a4b runtime: polyfill Object.values()
Minimum supported Node version is 6.9.0, but Object.values() was introduced in
Node < 7. Let's use a polyfill if needed.

This will be removed when minimum supported Node version is raised to 8.9.0.

Fixes #3459
2018-08-15 22:34:05 +02:00
muxator
9d815c58b8 deprecations: get rid of DEP0005 about Buffer()
Similar code still lives in some dependent libraries.
It will be updated when upgrading the dependencies.

Fixes #3446
2018-08-14 19:45:03 +02:00
muxator
6d5a6cf795 caching_middleware: removed unnecessary escape in regex
Found by eslint with "no-useless-escape"
2018-08-14 19:33:10 +02:00
"muxator ext:(%22)
42a0772955 dependencies: updated measured 1.1.0 -> measured-core 1.11.2
When installing dependencies, npm informed us that measured had been deprecated,
and renamed to measured-core. Let's follow the advice, and get rid of the
warning.

  npm WARN deprecated measured@1.1.0: This package has been renamed to
  measured-core, all versions of measured have been re-released under
  measured-core, please update your package and consider updating to the newest
  version. See https://github.com/yaorg/node-measured for latest updates.

This package is used to expose a single endpoint ("/stats"), whose output does
not change after this commit.

Fixes #3458
2018-08-14 13:22:41 +02:00
Masaru Nagaku
392f39b623 fix bug for getPadPlainText 2018-08-11 11:02:20 -03:00
Muh Muhten
3cedf474e5 Fix misparse of port when binding Unix socket
The hostname:port of URIs used in Minify are currently bogus and refer
to localhost only for historical reasons; there's no reason to retain
them and omitting them avoids generating an invalid URI when "port" is
not an integer.

Context: settings.port is passed to express's listen; if not numeric, it
is used a filename for a Unix domain socket.
This allows e.g. starting a server to be reverse-proxied on a multi-user
system, using the filesystem to handle access control and avoiding need
to allocate port numbers.

Before this change, etherpad-lite starts without error when configured
to listen on a Unix domain socket in this manner. However, `pad.js` and
`ace2_common.js` are generated incorrecting, causing an error
"Uncaught Error: The module at "ep_etherpad-lite/static/js/rjquery" does not exist."
when loading the editor:

When settings.port is a non-numeric string, e.g. `etherpad.sock`, a URI
of the form `http://localhost:etherpad.sock/static/js/rjquery.js` is
generated and parsed to find the file needed. In this case, the file
searched for is `:etherpad.sock/static/js/rjquery.js`, rather than the
expected `static/js/rjquery.js`. No such file exists, and the required
code is silently omitted from the bundle.

As a workaround, hard-code a (meaningless) hostname which can be parsed
correctly, since the current code makes no use of it anyway.
2018-08-10 01:57:30 +02:00
Michael Braun
971853ca58 remove -k argument as it is currently for both sessionkey and apikey 2018-08-09 19:42:14 +02:00
muxator
a69f8a3db9 runtime: deprecate Node <= 7. From Etherpad 1.8.0 minimum Node version will be 8 2018-07-28 23:33:24 +02:00
muxator
7544585908 runtime: enforce minimal node version to 6.9.0
Etherpad 1.6.6 does not run on node <= 5 already.
Node 6.9 is the first LTS release in the 6 series, and comes with npm 3.10.8.

Declarations in package.json are advisory unless the user has set
`engine-strict` config flag.

Updated the docs accordingly.
2018-07-28 23:33:24 +02:00
ilmar
a96aa88dad merge with ether/etherpad-lite develop branch 2018-05-21 16:18:40 +03:00
ilmar
4feccff530 merge with develop branch 2018-05-21 15:41:49 +03:00
ilmar
3c66425b60 List indent fix 2018-05-21 13:07:08 +03:00
ilmar
016497dbb4 prevLine/nextLine check fix 2018-05-14 22:57:15 +03:00
ilmar
47e20a2f49 line parsing fix 2018-05-03 00:07:07 +03:00
ilmar
6684f9bfe8 hook callAll to aCallAll 2018-05-02 11:45:48 +03:00
ilmar
55ecf31786 html export fix 2018-05-02 11:12:58 +03:00
ilmar
c9863f81ad sync with ether/etherpad-lite 2018-05-02 11:08:57 +03:00
ilmar
8d27f3cf03 upgrade to 1.6.5 2018-04-24 13:31:40 +03:00
ilmar
7cc7bb1abc upgrade to 1.6.5 2018-04-24 12:25:56 +03:00
ilmar
d6fa065ef2 export html to original structure 2018-04-24 12:13:31 +03:00
anugu-chegg
7b6a4aba30 Remove leftover code from earlier commits 2018-04-19 23:23:16 +02:00
anugu-chegg
b4068144c3 Refactor code 2018-04-19 23:23:16 +02:00
anugu-chegg
461ed413b7 Fix few mistakes 2018-04-19 23:23:16 +02:00
anugu-chegg
d41e184a3c Send commits missed during the reconnect 2018-04-19 23:23:16 +02:00
anugu-chegg
bf05e9ae89 Handle client reconnect properly 2018-04-19 23:23:16 +02:00
ilmar
517b249394 D 2018-04-10 00:08:42 +03:00
Olivier Tétard
5b1e1f0c35 Fix typo in apicalls.js which prevents from importing isValidJSONPName. 2018-04-09 20:56:29 +02:00
ilmar
8502c04bee html lists export fix 2018-04-09 15:37:28 +03:00
John McLear
fa83de778c Password check fix 2018-04-07 10:31:47 +01:00
Peter 'Pita' Martischka
6d5dc93dbf merged 2018-04-07 10:23:49 +01:00
thomas
ffe24c3dd9
Update webaccess.js 2018-04-06 22:21:33 +02:00
ilmar
b4ad7cf452 Export lists fix + code linting and readability update 2018-04-05 23:27:02 +03:00
Peter 'Pita' Martischka
a08c4383b8 check pad exists before importing / exporting 2018-04-04 21:48:32 +01:00
John McLear
6388055f51
Merge pull request #12 from nashe/no_findkeys_export
No findkeys during export
2018-04-04 19:36:59 +01:00
Peter 'Pita' Martischka
806c9207e3 remove findkeys from pad export 2018-04-04 18:02:54 +01:00
Mikk Andresen
20428bb427 Merge remote-tracking branch 'upstream/develop' into develop 2018-04-04 13:52:27 +03:00
Mikk Andresen
a67aaa8f49 Merge remote-tracking branch 'upstream/master' into develop 2018-04-04 13:52:08 +03:00
John McLear
f15c7d7186
Merge pull request #3280 from lmagniez/ImprovedReadibility
Improved readibility
2018-04-03 17:22:08 +01:00
John McLear
f4f032afc0
Merge pull request #3297 from apenwarr/auth-sequence
Call authentication hooks before default basic authentication.
2018-04-03 13:41:51 +01:00
John McLear
2765a95774
Merge pull request #3218 from klausweiss/develop
Feature: New server-side hook: onAccessCheck
2018-04-03 13:38:47 +01:00
John McLear
d393bf4dd8
Merge pull request #3232 from michael-dev/develop
Make APIKEY and SESSIONKEY file customizable
2018-04-03 13:34:49 +01:00
John McLear
18dd90139a
Merge pull request #3115 from noerw/redirect_fix
redirect /admin properly (fix #3114)
2018-04-03 13:10:36 +01:00
John McLear
022783a774
Merge pull request #3239 from jainendra/jainendra-feature-support-for-rtf
Feature: Support for uploading .rtf files rich text format
2018-04-03 13:07:00 +01:00
John McLear
bb40aa00be
Update express.js 2018-04-03 10:59:10 +01:00
John McLear
50bbcb87bb
Merge pull request #4 from nashe/jsonp_fix
Added a jsonp var checker
2018-04-03 10:29:52 +01:00
Mikk Andresen
6f2466bebc Merge with upstream develop. 2018-04-02 13:47:16 +03:00
John McLear
8767410a36
be more strict on password check 2018-03-23 19:21:52 +00:00
Peter 'Pita' Martischka
dd7894d3c9 Added a jsonp var checker 2018-03-23 11:17:39 +00:00
Luc Didry
82816acf4a Fix .doc export with LibreOffice (soffice) (#3338)
When using LibreOffice to convert pads to doc, we got `Error: no export filter for /tmp/xxxx.doc` (tested with LO 5 and 6). Maybe it's a regression from LO. Anyway, converting HTML to odt, then to doc works.

Thx to lpagliari for her review!
2018-03-08 10:44:11 -03:00
Luiza Pagliari
187e51948d
[fix] Don't show "pad deleted" message when copying pad (#3320)
Fix #3183
2018-02-16 14:18:51 -02:00
Man Yue Mo
a2992b3624 fix jsonp checking. 2018-02-07 08:43:07 +00:00
Stefan
b292e137ed Added missing require for is-var-name 2018-02-03 12:33:33 +01:00
Robert Helmer
f56936c936 better sanitize jsonp 2018-01-30 12:52:19 -08:00
Joas Souza
f1fcd16894 Add settings to scroll on edition out of viewport (#3282)
* Add scroll when it edits a line out of viewport

By default, when there is an edition of a line, which is out of the
viewport, Etherpad scrolls the minimum necessary to make this line
visible. This makes that the line stays either on the top or the bottom
of the viewport. With this commit, we add a setting to make possible to
scroll to a position x% pixels from the viewport. Besides of that, we
add a setting to make an animation of this scroll.
If nothing is changed on settings.json the Etherpad default behavior is
kept
2018-01-03 19:57:28 -02:00
Avery Pennarun
e0582797f2 Call authentication hooks before default basic authentication.
This allows authenticators to do any extra session setup for a given user,
even if their username/password happens to match settings.json.
2017-12-31 12:32:50 +00:00
Loick Magniez
54e834194b Changed the color palette and changed the pad's font size to 16px 2017-11-22 16:04:17 +01:00
Rainer Rillke
f12debd5c7 Catch SIGTERM for graceful shutdown (#3266)
Shut down database connection and exit the node process
when SIGTERM is encountered. This is especially important
when nodejs is run as PID1, e.g. in a docker container.

Shutting down connections to clients (browsers) is beyond
this patche's scope.

Resolves #3265
2017-11-04 19:59:19 -02:00
ilmar
76f211b0bf ExportHtml.js update 2017-11-01 09:48:23 +02:00
ilmar
5469ce85cd exportHTML update 2017-10-31 22:46:24 +02:00
ilmar
724b1d734b updated html export, run hooks also with lists 2017-10-31 16:23:41 +02:00
ilmar
c36a3264fe fix to ether/etherpad-lite#2486 2017-10-21 01:04:53 +03:00
ilmar
69bf32cd46 fix to https://github.com/ether/etherpad-lite/issues/2486 2017-10-19 16:11:40 +03:00
Jainendra Mandavi
b4ddd0276d Use abiword to process .rft files 2017-08-04 03:23:12 +05:30
Michael Braun
4cce3bcbed Make APIKEY und SESSIONKEY file customizable
Running multiple instances sometimes requires different api- and session-keys for security reasons.
2017-07-31 15:31:45 +02:00
Stefan
5382b06ede Merge pull request #3231 from jainendra/fix-2864-import-pdf
FIX-2864: Add useAbiword flag
2017-07-30 11:42:39 +02:00
Jainendra Mandavi
e4ddb42e11 FIX-2864: Add useAbiword flag
This is a fix for the issue - 2864
Which is import failure of PDF after importing a text file
2017-07-28 23:13:07 +05:30
Luiza Pagliari
3e5d71ad5a Merge pull request #3214 from patrickeasters/add_credentials_arg
Add credentials arg to CLI module
2017-07-12 07:22:17 -03:00
Mikołaj Biel
2508b9749c fix typo 2017-07-10 20:59:08 +02:00
Mikołaj Biel
35702a0589 [feat] New server-side hook: onAccessCheck 2017-07-10 20:54:32 +02:00
Patrick Easters
d72d79ea82 Fetch credentials arg from CLI 2017-07-05 15:20:02 -04:00
Luiza Pagliari
fc89034a55 [feat] New server-side hook: padCopy
Let plugins know when a pad is copied.
2017-05-18 18:52:14 -03:00
Luiza Pagliari
0cb8d31e95 [fix] Have one setting for each shortcut to create ordered list
This is an adjustment to #2891.
2017-05-11 14:56:09 -03:00
Luiza Pagliari
97038c2183 [fix] Fix shortcut enabling flag for 'ESC'
This is an adjustment to #2891.
2017-05-11 12:36:20 -03:00
Luiza Pagliari
cf686282ef Do not use cookie for pad shortcuts
Users still cannot choose which shortcuts they want to enable/disable,
so it does not make sense (yet) to have a cookie with that preference.

This can be reverted once we create an UI to change shortcuts, but
PLEASE PLEASE PLEASE do not read the cookie every time handleKeyEvent is
called!!!

This is an adjustment to #2891.
2017-05-11 12:26:14 -03:00
Luiza Pagliari
1ebcf0dc47 Merge pull request #2891 from bhldev/padShortcutDisable
Added pad shortcut disabling feature to settings.json
2017-05-11 11:29:25 -03:00
Luiza Pagliari
009cd31243 [feature] Create option to automatically reconnect after a few seconds
On some erros that display a modal with "Force reconnect" button, allow
Etherpad to automatically reload pad after a few seconds. Amount of
seconds is defined on settings.json.

Still need to create tests for this feature, and implement i18n.
2017-04-04 11:09:24 -03:00
Luiza Pagliari
203a48b42d Merge pull request #3136 from joassouza/fix_minify
Fix minification of JS files
2017-02-08 04:14:44 -02:00
joassouza
0025613ba6 Refactor code 2017-02-07 15:06:49 -02:00
joassouza
d1e6c8492d Fix minification of code 2017-02-07 13:04:22 -02:00
Sjoerd Langkemper
21a6e66e25 Remove deprecated comment
The session key is currently stored in SESSIONKEY.txt, so it is no longer reset
every time the server starts.
2017-01-26 09:59:09 +01:00
noerw
cc69e76200 redirect /admin properly (fix #3114) 2017-01-06 18:19:38 +01:00
Stefan
be9ff4a0de Fixed crash on invalid export url 2016-12-22 23:04:06 +01:00
Stefan
efb25f417a Merge pull request #2993 from ether/fixes-2945
fixes #2945
2016-12-20 22:08:05 +01:00
Stefan
a1ec061017 Merge pull request #3053 from danfuzz/fix-timeslider-lists
Fix timeslider lists / indents, but also make CSS `@import` work
2016-12-20 22:06:31 +01:00
Stefan
aefa617797 Merge branch 'develop' into improve_cookies 2016-12-20 21:31:11 +01:00
Nobody Really
97fd1ab2fe Added LibreJS support 2016-09-20 09:30:35 +02:00
Dan Bornstein
0a9d02562d Handle relative paths properly, when @importing. 2016-09-09 12:59:02 -07:00
Dan Bornstein
a5a7ebea3d Handle @import during CSS minification.
This meant plumbing a callback through to `compressCSS()`, which meant that
I had to alter the innards of `getFileCompressed()`. I tried to	leave that
function looking more understandable than when I found it; for example,	I
flattened out the nested `if`.

I went ahead and upgraded the version of `clean-css` while I was in the
territory.
2016-09-09 12:32:24 -07:00
Dan Bornstein
a0403ffc22 Remove unused parameter noDocType.
My editor also auto-stripped some EOL whitespace.
2016-09-08 09:46:13 -07:00
Dan Bornstein
879ae7c67d Remove the noDocType argument, which was only ever passed as false. 2016-09-08 09:41:23 -07:00
Dan Bornstein
6d7f128b87 Use an EEJS template for HTML export instead of inlining it in the JS code.
The semantics of all the substitutions are identical to what they were before.
I _did_ take the liberty of formatting the CSS to be a bit more readable
(at the cost of adding a little bit of whitespace).
2016-08-24 16:25:31 -07:00
Stefan
009b61b338 Make express-session cookie scheme dependent 2016-07-10 12:44:45 +02:00
Stefan
6b9711cb70 Fixed path check 2016-06-20 00:22:29 +02:00
John McLear
b3b17c2190 Merge pull request #2991 from LokeshN/deactivate-settings
Issue #2960 - deactivate settings.json
2016-06-13 14:41:30 +08:00
Stefan
4ea9c4f98d Add secure flag to express-session cookies 2016-06-08 21:15:26 +02:00
Stefan
44370f11be Merge pull request #2957 from ether/dependency_updates
Dependency updates
2016-06-07 21:32:20 +02:00
John McLear
d545630912 fixes #2945 2016-05-28 22:25:44 +01:00
LokeshN
a8d5dc0693 Issue #2960 - deactivate settings.json
Deactivate settings.json in Admin dashboard
2016-05-22 21:12:21 +05:30
Stefan
835bca7967 Use fs.statSync instead of fs.existsSync (deprecated) 2016-05-16 16:51:12 +02:00
Stefan
14e1f3bf22 Update socket.io to version 1.4.5 2016-04-26 18:55:58 +02:00
John McLear
6b6a028355 include the padId 2016-04-09 20:01:49 +01:00
Brian Lim
26aeb7b705 Added pad shortcut disabling feature 2016-01-21 07:38:41 -05:00
Brian Lim
295672f598 Set language cookie on initial load 2016-01-17 21:44:03 -05:00
John McLear
ef9cf974a2 Merge branch 'develop' of github.com:ether/etherpad-lite into drag-and-drop-between-frames-sandbox 2016-01-10 14:37:44 +00:00
John McLear
793b34d17b hrm, removal 2016-01-08 13:39:32 +00:00
John McLear
f16616d23b seems to work 2016-01-08 13:26:46 +00:00
John McLear
638757fdb5 Update DB.js 2016-01-06 00:01:48 +00:00
John McLear
b519f9f156 include req and res in export convert hook 2015-12-21 17:32:05 +00:00
Chris Birk
d6033de0da Use new exportAvailable() check to include check for SOffice along with Abiword in importexport hook 2015-12-18 00:14:13 -06:00
Chris Birk
7f517eca0b check for soffice before removing export paths 2015-12-17 21:54:04 -06:00
John McLear
e2a0e3cd7f whoops 2015-12-02 12:10:25 +00:00
John McLear
98016665e4 working logic 2015-12-02 11:54:37 +00:00
John McLear
f44c444720 Merge pull request #2831 from fcassin/develop
Protect against a null atext value in cloneAText
2015-12-01 17:50:29 +00:00
John McLear
1a8462fb4f remove unused variable 2015-12-01 17:40:16 +00:00
John McLear
4ae88b2ee7 Hook for export ocnvert control 2015-12-01 17:38:52 +00:00
John McLear
8a79ae6e02 regex incoming colors 2015-11-26 15:55:26 +00:00
John McLear
a8c2833759 clean up 2015-11-24 14:03:38 +00:00
John McLear
039a761eaf allow settings to be applied from the filesystem 2015-11-24 14:02:37 +00:00
Francois Cassin
2bd698343a Protects against a null atext in cloneAText 2015-11-10 16:21:43 +01:00
Luiza Pagliari
92a8253449 Create hook exportHtmlAdditionalTagsWithData
The new hook does the same as exportHtmlAdditionalTags, but is declared
in another hook to avoid confusion about how to export tags when they
are stored as ['tag', 'value'] on attribute pool.

This complements #2762, as per @Gared suggestions.
2015-11-03 07:16:55 -02:00
Bradley Arvin
a9d7ab9e18 Fix for #2809 2015-10-28 13:28:54 -04:00
John McLear
3aff0001a1 Merge pull request #2798 from ypid/fixed_get_git_hash
Get git commit hash even if the repo only points to a bare repo.
2015-10-22 16:13:58 +01:00
John McLear
50171a4c3c Merge pull request #2805 from storytouch/indentationSetting
Create setting to control if a new line will be indented or not
2015-10-22 16:12:07 +01:00
John McLear
5652adb4eb Merge pull request #2813 from simong/export-libreoffice
Allow LibreOffice to be used when exporting a pad
2015-10-22 16:11:26 +01:00
Simon Gaeremynck
7289e89070 Use Etherpad rather than Etherpad Lite when exporting HTML 2015-10-22 16:09:44 +01:00
Simon Gaeremynck
2bfc3026d2 Allow LibreOffice to be used when exporting a pad
This commit adds support for LibreOffice when exporting a pad to doc, pdf, ..

This commit also cleans up some export logic when exporting to txt
2015-10-20 19:46:08 +01:00
Ted Mielczarek
a675659dc2 Add an appendText API 2015-10-19 15:27:09 -04:00
Stefan
504cc102a0 Merge pull request #2762 from storytouch/exportTagsAsArrays
Accepting Arrays on 'exportHtmlAdditionalTags'
2015-10-17 18:24:18 +02:00
Luiza Pagliari
5deb06d589 Create setting to control if a new line will be indented or not
Currently pressing ENTER on a line that ends with ':', '[', '(' or '{'
automaticaly indents the new line with 4 spaces. The variable added by
this commit to settings.json allow an Etherpad instance to not have this
behavior.
2015-10-13 18:39:23 -03:00
Stefan
9d29b15def Merge pull request #2730 from emilyxxie/clientready_hook
added clientReady hook
2015-10-10 13:30:36 +02:00
Stefan
22bf9c9297 Merge pull request #2799 from Gared/fix_url_location_error
Fix decode error if pad name contains special characters and is sanitized
2015-10-10 13:21:40 +02:00
webzwo0i
1ee1f818db if granularity is negative, endNum is negative and loop 2015-10-09 14:55:59 +02:00
webzwo0i
31f7c7e0f2 check if ChangesetRequest granularity is a number (#2796) 2015-10-09 14:55:19 +02:00
Stefan
f6cebdad98 Fix decode error if pad name contains special characters and is sanitized 2015-10-08 20:46:15 +02:00
Robin Schneider
29441a8ae1
Get git commit hash even if the repo only points to a bare repo.
* Used by https://github.com/debops/ansible-etherpad
2015-10-07 15:43:29 +02:00
Andreas Fried
e6b0e954b5 Fix off-by-one: The chatHead is in fact a valid message index.
This fixes #2751.
2015-09-30 00:48:15 +02:00
Luiza Pagliari
1d134f0b13 Fixing ed52626. It was closing the span with </span data-TAG=VALUE>, not </span> 2015-09-17 15:30:09 -03:00
Luiza Pagliari
ed5262650a Generating pad HTML with tags like <span data-TAG="VALUE"> instead of <TAG:VALUE> 2015-09-07 03:55:56 -07:00
Stefan
cc9f88e7ed Merge pull request #2757 from Gared/doc_append_chat_message
Add appendChatMessage API to docs
2015-08-30 18:15:51 +02:00
Luiza Pagliari
1a5985dc75 Accepting Arrays on 'exportHtmlAdditionalTags' to handle attributes stored as ['key', 'value'] (and not only ['key', 'true']) 2015-08-24 07:58:45 -07:00
Stefan
f27aacc5bf Fix missing bracket 2015-08-15 22:41:59 +02:00
Stefan
94cb743ca8 Fix API call appendChatMessage to send new message to all connected clients 2015-08-15 22:05:31 +02:00
Thomas Russell Murphy
b557927b72 Fix link to etherpad-lite on GitHub 2015-08-03 21:53:54 -05:00
Emily Xie
21f0d12d31 clientReady hook- pass entire message, updated doc 2015-07-20 11:45:41 -04:00
Xavid
ad137fa4c8 Restore newline-adding to setText() if passed string does not end in '\n'.
Add a test for the ending-in-'\n' case and update tests for the other case.
2015-06-30 04:47:55 -04:00
Clark Boylan
1060595676 Check for valid session in handleUserInfoUpdate
Address issue 2674 by checking that the session is valid and has a valid
author and padId before using it to update the userInfo for that
session. Otherwise it is possible that by the time we try to update a
session with new userInfo that session has disconnected and is no longer
available to be updated. Without this commit the etherpad-lite service
gracefully shutsdown whenever this happens.
2015-06-24 15:18:35 -07:00
Xavid
a4fe0d0dc8 Add an 'author' entry to the context for the padCreate and padUpdate hooks. 2015-06-21 11:29:17 -04:00
Xavid
0713553906 Allow a pad to only end with a single newline, rather than requiring two. 2015-06-19 14:02:18 -04:00
Stéphane Alnet
0b3216ecb6 Do not extend Array.prototype 2015-05-22 12:27:08 +02:00
John McLear
757ad765d3 use removeItem instead of remove namespace 2015-05-22 11:09:21 +01:00
John McLear
3944a0e79b more read only mode fixes andadd support for handleMessageSecurity hook 2015-05-20 01:05:53 +01:00
John McLear
818408cf49 other bits required for read only 2015-05-19 16:57:53 +01:00
John McLear
41d24a8c8f Merge branch 'develop' of github.com:ether/etherpad-lite into develop 2015-05-19 16:44:57 +01:00
John McLear
b662d5c618 dont show editing buttons in R/O view 2015-05-19 16:43:19 +01:00
Simon Gaeremynck
7fe99cccad Using log4js in TidyHtml 2015-05-18 17:43:46 +01:00
Simon Gaeremynck
786b43efc8 Tidy HTML before trying to convert it with abiword 2015-05-18 16:24:41 +01:00
John McLear
9e9207d8b6 Merge pull request #2657 from simong/cookie-parser
Use the cookie parser middleware
2015-05-11 15:10:45 +01:00
Simon Gaeremynck
5a7750781b Use the cookie parser middleware 2015-05-07 18:35:21 +01:00
Xavid
9e86fb279b Fix backend tests with new setText() implementation; tests depended
on the old setText() behavior leaving the last character.
2015-05-06 08:45:22 -04:00
Xavid
5e64c292a4 When using setText(), replace the entire existing text of the pad,
rather than replacing all except the last letter.
2015-05-05 14:18:27 -04:00
John McLear
4938c7be38 plugins always return html so use that endpoint 2015-04-29 20:54:41 +01:00
John McLear
1f471b0f81 show versions of plugins at startup, fixes #2642 2015-04-28 23:41:55 +01:00
John McLear
254edffa9c fixes #2547 2015-04-24 14:17:49 +01:00
Andreas Åkre Solberg
ec7b3fc787 Adding support for providing intermediate CA certificates when running etherpad-lite with ssl through Node/expressjs 2015-04-22 20:29:19 +02:00
Tom Hunkapiller
6ff7d4e9a6 revert to old path handling, but strip out "..". fixes #2614 2015-04-15 14:31:21 -05:00
louis
0fa7650df8 dont allow directory traversal #2 2015-04-12 17:12:35 +02:00
John McLear
e3f95d0c9c Merge pull request #2604 from ether/pad-options
session key is now ignored and also padOptions are available in settings
2015-04-11 22:33:46 +01:00
Peter 'Pita' Martischka
fc0cac0cad merge object settings into default settings 2015-04-11 22:01:46 +01:00
John McLear
8ed12c7776 session key is now ignored and also padOptions are available in settings 2015-04-11 21:22:00 +01:00
John McLear
4a70837de9 Merge pull request #2602 from devoidfury/fix/import-large-etherpad
fix large etherpad import, fixes #2524
2015-04-11 20:09:01 +01:00
Stefan
43687f6e8b Merge pull request #2601 from Gared/session_key_file
Move sessionKey setting from settings.json to SESSIONKEY.txt
2015-04-11 19:10:18 +02:00
Tom Hunkapiller
a896d67e8c make setPadRaw async; streamline .etherpad file import handling chain 2015-04-11 12:02:19 -05:00
Stefan
a3ed82ad06 Move sessionKey setting from settings.json to SESSIONKEY.txt 2015-04-11 18:45:14 +02:00
John McLear
25092fcb90 Merge pull request #2600 from devoidfury/fix/junk-binary-files
fix: only match /javascript/* for caching middleware
2015-04-11 16:00:02 +01:00
Tom Hunkapiller
133188320a fix: only match /javascript/* for caching middleware 2015-04-11 09:54:40 -05:00
John McLear
5ef22e649b Merge pull request #2302 from Gared/create_pad_special_characters
Add check for special url characters to createPad API function
2015-04-11 14:56:26 +01:00
Stefan
aa0d14c7d7 Merge branch 'master' of git://github.com/ether/etherpad-lite into create_pad_special_characters 2015-04-11 12:10:37 +02:00
John McLear
acc1a0626a use latest ejs 2015-04-11 09:53:27 +01:00
Tom Hunkapiller
0b0a349081 clearer comments about the path handling behavior 2015-04-11 09:05:51 +01:00
Tom Hunkapiller
5409eb314c fix an issue in the path handling that allowed directory traversal 2015-04-11 09:05:32 +01:00
Tom Hunkapiller
2e4374c08d clearer comments about the path handling behavior 2015-04-10 20:19:26 -05:00
Tom Hunkapiller
3ebb19d8a2 fix an issue in the path handling that allowed directory traversal 2015-04-10 20:03:00 -05:00
John McLear
402e53d88e Merge pull request #2584 from devoidfury/express4
Express 4 support
2015-04-11 00:13:45 +01:00
Stefan
db5bdc8719 Log version number and git-sha on server start 2015-04-11 00:13:04 +02:00
Stefan
8e4c961207 Add version number to plugins-info page 2015-04-10 23:52:17 +02:00
John McLear
9d4e5f6e35 dont allow directory traversal 2015-04-10 22:02:22 +01:00
Tom Hunkapiller
fd1d285a77 fix the rest of the deprecation warnings 2015-04-10 14:18:30 -05:00
Tom Hunkapiller
6fad2ca39a fix vulnerability 2015-04-10 06:16:17 -05:00
Tom Hunkapiller
de67714cf8 fix minify route path; update deprecated calls 2015-04-10 05:52:58 -05:00
Tom Hunkapiller
d0b39c01fb update for express 4.x 2015-04-08 23:12:11 -05:00
John McLear
a5345524e1 Merge pull request #2566 from ether/editbar-accessibility
Accessibility
2015-04-07 21:25:27 +01:00
John McLear
3a969f8dd8 pass error messages to pad text if shown during startup 2015-04-06 00:13:38 +01:00
John McLear
e027083136 timeslider settings for fonts 2015-04-05 15:18:36 +01:00
John McLear
ee5833b9c6 Merge branch 'develop' of github.com:ether/etherpad-lite into editbar-accessibility 2015-04-02 00:05:25 +01:00
John McLear
27ae48686d reintroduce removed api points that were removed by mistake 2015-04-01 13:56:52 +01:00
John McLear
32a09ff461 tests and fix up sloppy code by original author 2015-04-01 13:52:56 +01:00
John McLear
c705a058fb Merge branch 'feature/append-chat-api' of github.com:derosm2/etherpad-lite into append-chat-api 2015-04-01 13:32:07 +01:00
John McLear
fef746e80e fix import issue with txt files and abiword #2572 2015-04-01 00:19:42 +01:00
John McLear
0b90da19d2 Merge branch 'develop' of github.com:ether/etherpad-lite into editbar-accessibility 2015-03-31 23:32:15 +01:00
John McLear
b404af7c17 Merge pull request #2530 from webzwo0i/exception-handling-for-mimatched-composition
do not crash when encountering mismatched compositions. log the changese...
2015-03-31 23:17:51 +01:00
John McLear
e47992f5b7 Merge pull request #2538 from webzwo0i/check-author-attribution
Check author attribution and fix clearAuthorship test
2015-03-31 23:14:22 +01:00
John McLear
662216b6cf slightly different alt stuff 2015-03-31 16:36:44 +01:00
John McLear
ef38bcad9f make buttons i18n friendly and a better experience 2015-03-31 13:57:18 +01:00
John McLear
7b726cbc02 more working logic and also pretty nice screen reader experience 2015-03-26 13:58:57 +00:00
John McLear
ec1956b4b6 read for button activity 2015-03-26 12:42:07 +00:00
John McLear
5761e998de first semi working alt f9 functionality 2015-03-25 11:03:45 +00:00
webzwo0i
a0fb65205c oops, fix export with wildcards 2015-03-14 00:02:23 +01:00
webzwo0i
f249b42ab4 empty author should be allowed to support clearAuthorship functionality 2015-03-03 16:39:14 +01:00
webzwo0i
0693c0ae97 - operator do not show up in the attribs of a pad, but authors could still leak to the pool 2015-03-03 15:37:56 +01:00
webzwo0i
01cd82427a check author in = operator 2015-03-03 15:20:33 +01:00
webzwo0i
0f82cd8711 print revision numbers - not changesets - in warn-log 2015-03-02 11:14:24 +01:00
webzwo0i
683c9dfb7c callback with argument error in async.series instead 2015-03-02 11:05:33 +01:00
John McLear
152f51aeab Merge pull request #2527 from ldidry/issue-1870-get-saved-revisions-count
Fixes #1870
2015-02-27 12:03:03 +00:00
webzwo0i
7719117e1e do not crash when encountering mismatched compositions. log the changesets and padid 2015-02-26 14:57:49 +01:00
John McLear
178309e10d Merge branch 'develop' of github.com:ether/etherpad-lite into develop 2015-02-26 12:13:41 +00:00
Luc Didry
92022e493e Add backend tests for new API functions
These new functions are:
* getSavedRevisionsCount
* listSavedRevisions
* saveRevision

+ typo fixing in backend tests
2015-02-25 01:05:58 +01:00
Luc Didry
845788c39d Add a saveRevision API function
Calling saveRevision create an author which name is "API"
2015-02-25 01:04:27 +01:00
Luc Didry
a08c50a77d Fixes #1870
Add two functions to API :
 * getSavedRevisionsCount
 * listSavedRevisions
2015-02-24 23:42:35 +01:00
John McLear
470b0ba2a6 Merge pull request #2520 from ether/load-testing-settings
allow for load testing connections to hit by a setting
2015-02-22 14:41:09 +00:00
John McLear
d5bec1701e fix export of bad pads and also limit import to files 2015-02-21 12:33:30 +00:00
John McLear
ec6a2b5ba9 allow for load testing connections to hit by a setting 2015-02-16 23:02:19 +00:00
webzwo0i
37924e441a add try-catch clause around calls to applyToAText 2015-02-16 09:01:30 +01:00
webzwo0i
59328aa33a Revert "51c14d994756e60333b0b60eccb7255cf0c86461 changed the return value of"
This reverts commit 66582b19e7.
2015-02-16 06:22:49 +01:00
webzwo0i
66582b19e7 51c14d9947 changed the return value of
applyToText to an array that includes if there was an error in the
newline part of an changeset op.
easysync_tests need to know this too
2015-02-15 16:21:07 +01:00
John McLear
ddc69831b2 working, need to test though 2015-02-11 17:59:05 +00:00
Mike DeRosa
4c6bd37286 Adding api call for appending a chat message. 2015-02-09 00:18:12 -05:00
John McLear
b9802616b6 use latest cleanCSS 2015-02-04 17:57:34 +00:00
Stefan
4c64b7a670 Revert 'asyncLineHTMLForExport' hook 2015-01-25 22:08:40 +01:00
John McLear
aca745ddf6 tell installer if old etherpad needs updating during plugin install 2015-01-25 02:44:10 +00:00
John McLear
831151cfba Merge pull request #2487 from ether/html-e-hook
Better HTML Export rewrite hook allows functions to be passed instead of strings means state is saved between plugins
2015-01-25 00:07:34 +00:00
John McLear
c798a27ad8 boop 2015-01-24 13:39:45 +00:00
webzwo0i
6b0cf29af6 Stop processing a message without auth (i.e. a client did not send
CLIENT_READY)
2015-01-24 06:34:41 +01:00
John McLear
1890ba3976 working, might need polish its pretty late 2015-01-24 05:14:38 +00:00
John McLear
9abb85799c realization how aCallAll works 2015-01-24 04:31:50 +00:00
John McLear
372063295f beginning of a hook, needs docs etc 2015-01-24 04:09:13 +00:00
John McLear
6fd0285d4d include lineContent in hok 2015-01-21 21:36:11 +00:00
John McLear
cb65224997 better logic for author handling 2015-01-21 00:28:00 +00:00
John McLear
5f9bbd0666 restrict expor4t to only expose this pad ID 2015-01-21 00:03:39 +00:00
John McLear
4f637befeb more fixing 2015-01-19 02:59:17 +00:00
John McLear
85fffbe14c more handling 2015-01-19 02:57:10 +00:00
John McLear
cadb83ac5a bumpage 2015-01-19 02:51:32 +00:00
John McLear
6bc74a9adb more export logic handling 2015-01-18 23:33:29 +00:00
John McLear
e50ea6ffea whoops proper regexp fix for listNumber 2015-01-18 23:24:20 +00:00
John McLear
bd9ff770fe reset all numbers on first item 2015-01-18 23:21:34 +00:00
John McLear
af70902bef support deeper nested elements on exports 2015-01-18 23:16:58 +00:00
John McLear
689ced8443 and this one.. 2015-01-18 20:15:17 +00:00
John McLear
a553b44dbc refix plugins 2015-01-11 23:59:18 +00:00
Timothy Gu
9b9a747167 Support ejs 2.0
Fixes #2437.

This is still relying on undocumented behavior, but should unbreak the app
in the mean time.
2015-01-11 08:17:17 -08:00
John McLear
17ce67d936 final html export hook 2015-01-06 16:31:52 +00:00
John McLear
26c839063f check file system that abiword exists 2015-01-04 14:47:08 +00:00
John McLear
036b7d2890 Merge pull request #2418 from ether/etherpad-export-and-import
Full Pad portability (Export/Import)
2014-12-31 13:32:09 +00:00
John McLear
4b6df17e99 Merge pull request #2421 from webzwo0i/fix-swagger
hack to avoid warnings in swagger usage
2014-12-31 13:27:00 +00:00
John McLear
01c667aa2e export html more styles 2014-12-31 00:53:20 +00:00
webzwo0i
b0da214ad5 hack to avoid warnings in swagger usage 2014-12-30 18:06:41 +01:00
Stefan
c20a7e9bce Merge pull request #2406 from Gared/fix/author-not-set-callback
Fix missing callback of #2400 and ignore missing author on timeslider on client-side
2014-12-30 14:55:49 +01:00
John McLear
90e83ed6b5 more styling 2014-12-30 14:53:44 +01:00
John McLear
716b1c6113 Merge branch 'develop' of github.com:ether/etherpad-lite into develop 2014-12-30 14:44:55 +01:00
John McLear
16713d8b3b some demo export loic for handling OL incrementation 2014-12-30 14:43:00 +01:00
John McLear
4687d226c6 Merge pull request #2417 from webzwo0i/fix-export
Fix ExportHtml.js list parsing code
2014-12-30 13:47:31 +01:00
John McLear
a07d1722fc no errors on chrome client 2014-12-30 12:12:24 +01:00
John McLear
5ba3cab445 better take some responsibility 2014-12-30 00:13:01 +01:00
John McLear
ac4f9eb4ce licensing 2014-12-30 00:12:26 +01:00
John McLear
99a239fa9a remove console log 2014-12-30 00:10:08 +01:00
John McLear
0676d2fe24 working author import 2014-12-30 00:01:15 +01:00
John McLear
b8648b4a49 remove error logging 2014-12-29 23:08:42 +01:00
John McLear
1e0de620be more author logic 2014-12-29 23:08:17 +01:00
John McLear
ec2b844f94 authors 2014-12-29 22:51:31 +01:00
John McLear
a6400b3f61 allow only for pads less than 10 to be overwritten 2014-12-29 22:02:24 +01:00
John McLear
ab5e7381a2 working for all files 2014-12-29 21:35:10 +01:00
John McLear
1081156f13 whoopsi, required files 2014-12-29 21:13:49 +01:00
John McLear
3773b6346b semi working requires browser refresh 2014-12-29 20:57:58 +01:00
webzwo0i
6e4e034e42 fix closing of lists 2014-12-29 16:27:40 +01:00
John McLear
302ceb665b delay write to fix copypad -- bad practice but due to db.set not allowing callback 2014-12-29 14:59:22 +01:00
John McLear
3fe802077c Merge pull request #2091 from webzwo0i/disconnect-if-an-old-cs-is-submitted-twice
disconnect client if it submits an already accepted changeset based on a...
2014-12-29 02:01:03 +01:00
John McLear
c4959b089f resolve merge conflict 2014-12-29 01:54:44 +01:00
John McLear
8603fb4583 fix sockets of switch to pad 2014-12-29 00:46:47 +01:00
John McLear
6b1fee400d Merge branch 'switch-to-pad' of github.com:derosm2/etherpad-lite into localTest 2014-12-29 00:40:07 +01:00
webzwo0i
6ca2c91fdf close and open lists according to the actual line.listLevel 2014-12-28 02:32:53 +01:00
webzwo0i
d71b11f4b2 fix export of lists with bullets; <li> are closed before the next list starts. also, when closing, ensure that list-items are not nested 2014-12-28 02:31:26 +01:00
John McLear
dd09f6144b Merge pull request #2398 from ether/indentLevels
Indent levels
2014-12-27 23:27:11 +01:00
Gared
9cf19b99fe Fix missing callback of #2400 and ignore missing author on timeslider on client-side 2014-12-27 22:25:24 +01:00
John McLear
7df944b3fd Merge pull request #2404 from webzwo0i/sanity-in-atext
block changeset if it deletes more lines than exist in the whole pad
2014-12-27 18:36:13 +01:00
Stefan
a645aeef5c Merge pull request #2400 from Gared/fix/author-not-set
Prevent server crash if author is not set
2014-12-27 16:15:26 +01:00
Gared
40c7ee9df9 Prevent server crash if author is not set 2014-12-27 14:26:05 +01:00
John McLear
ae22332f71 removing dokuwiki 2014-12-27 14:08:45 +01:00
John McLear
6ac99ab03f support for export 2014-12-27 13:27:07 +01:00
John McLear
fdc930de3d Merge branch 'develop' of github.com:ether/etherpad-lite into hook_for_exportHTMLStyles 2014-12-21 23:43:21 +00:00
John McLear
ee3f3b8060 move clean css back to fix minification on TS 2014-12-21 23:42:56 +00:00
John McLear
12aac2d0d0 Merge branch 'develop' of github.com:ether/etherpad-lite into hook_for_exportHTMLStyles 2014-12-21 23:12:59 +00:00
webzwo0i
69bad8b30c fix typo in addSavedRevisions 2014-12-17 01:10:20 +01:00
webzwo0i
b204aa2085 remove more dead requires. 2014-12-16 19:10:01 +01:00
John McLear
cfa3f15f94 Merge pull request #2373 from webzwo0i/avoid-global-vairables
dont make local variables global
2014-12-16 00:41:41 +00:00
webzwo0i
5d15f655f0 dont make local variables global 2014-12-14 22:01:28 +01:00
John McLear
197a41627d allow plugins to add multiple styles 2014-12-09 17:34:52 +00:00
John McLear
3a2669b704 additional tag support hook 2014-12-09 16:13:52 +00:00
John McLear
f2c155ee1a blah use async 2014-12-08 19:44:40 +00:00
John McLear
7cf0e4a9ae allow padId to be passed into the hook 2014-12-08 19:11:45 +00:00
John McLear
2218cbd252 docs 2014-12-08 19:08:12 +00:00
webzwo0i
5306f0c98a wrap appendRevision in try-catch block 2014-12-04 16:05:02 +01:00
John McLear
6fea3a25f8 stop death on no session 2014-11-30 21:21:58 +00:00
John McLear
12f25d8a45 bump cleancss 2014-11-29 01:31:04 +00:00
John McLear
3bf9f3cf1d Merge branch 'develop' of github.com:ether/etherpad-lite into require-kernel-change 2014-11-28 17:43:01 +00:00
John McLear
c13301966f yeah need htis too 2014-11-27 02:56:42 +00:00
John McLear
16f3ebb3ba handle auth fails 2014-11-26 17:34:44 +00:00
John McLear
0a84379364 make additional line break at end of imported doc 2014-11-26 15:19:22 +00:00
John McLear
8851b8ab6b Merge branch 'develop' of github.com:ether/etherpad-lite into jsdom-go-away 2014-11-25 22:48:09 +00:00
John McLear
881763f663 remove jsdom dep 2014-11-25 22:15:29 +00:00
John McLear
77de2d918b multiline 2014-11-25 22:14:48 +00:00
luto
5c3874c0a1 really recreate socketio-client in expressCreateServer, fixes #2342
When using plugins, the express server gets restarted. When we do that,
the socketio-server should also get restarted. It doesn't. That means
that all the events in SocketIORouter.js are bound twice, which causes
chaos all over etherpad.

This changes our socketio.js so it fully recreates the io-instance when
we restart the server.

introduced in 95e7b0f156, but catching
that would have been hard.
2014-11-25 22:38:22 +01:00
John McLear
2a062f8dc3 mheh no browser requirement at all 2014-11-25 18:18:42 +00:00
John McLear
c2c0cb6907 so yeah, prolly can do this anyway? 2014-11-25 18:07:34 +00:00
John McLear
60d44cd3df use cheerio instead of jsdom 2014-11-25 17:26:09 +00:00
John McLear
a3f6b2edb7 more fixes 2014-11-23 22:33:56 +00:00
John McLear
555d22245d Merge pull request #2335 from ether/javascript-bower
swap out jquery browser for bower but expose browser object to all pages...
2014-11-23 14:15:41 +00:00
John McLear
73bcbbcb89 final commit 2014-11-23 14:15:03 +00:00
John McLear
0eb7cc7864 Merge branch 'develop' of github.com:ether/etherpad-lite into fix-socket-admin-etc 2014-11-23 14:14:11 +00:00
John McLear
ae7da122d7 fix session management 2014-11-23 14:14:01 +00:00
John McLear
9b66c93d6b swap out jquery browser for bower but expose browser object to all pages also enable minification.. Seems to work well 2014-11-22 19:11:35 +00:00
John McLear
764b8af5e3 Merge pull request #2334 from luto/api-mystery-crash
fix api mystery crash
2014-11-22 15:50:23 +00:00
luto
4eee89ad12 fix api mystery crash 2014-11-22 16:46:37 +01:00
John McLear
703440acd7 missing socketio fix 2014-11-21 00:11:50 +00:00
John McLear
3e8f3cd938 hrm I dont trust this security 2014-11-18 14:56:40 +00:00
John McLear
ff603d7b58 stability restored now to handle the auth issues 2014-11-18 14:12:02 +00:00
John McLear
020b636b1f template of a semi-fix 2014-11-18 14:08:44 +00:00
John McLear
865829e159 Merge pull request #1682 from luto/fix-listSessionsOfGroup
Don't error in listSessionsOfGroup when there are non-existing sessions
2014-11-15 16:25:23 +00:00
John McLear
3bf108f3b4 Merge pull request #2203 from ether/setting-to-not-import-unknown-file-types
Allow for a setting so you can stop unknown file types from being imported
2014-11-15 15:41:08 +00:00
John McLear
cce2d7279a resolve merge issues 2014-11-15 15:34:18 +00:00
Cristo
0253156dbb Update APIHandler.js 2014-11-12 19:55:37 +01:00
Cristo
f7dd756642 Update API.js 2014-11-12 19:53:56 +01:00
Cristo
f59238fe58 Update API.js 2014-11-12 19:50:43 +01:00
Cristo
24ac082cae Update API.js 2014-11-12 19:49:08 +01:00
Cristo
9d39c9591a update pad clients 2014-11-12 19:46:50 +01:00
Stefan
573a912e4f Add check for special url characters to createPad API function 2014-11-08 17:26:40 +01:00
Cristo
46bc328896 new api ver 2014-11-08 01:41:23 +01:00
Cristo
c33c6e085e comment addded 2014-11-08 01:39:27 +01:00
Cristo
d246a191c6 Added option to restore revisions #1791 2014-11-08 01:12:40 +01:00
John McLear
053ff3097d whoops I missed this one 2014-11-04 23:29:45 +00:00
John McLear
9fa77cdea2 working handling of setting client ip and anonymizing etc 2014-11-04 23:25:18 +00:00
John McLear
f418dfa205 fix author notification handler 2014-11-04 22:37:10 +00:00
John McLear
af3e8e5e15 fix room client leave 2014-11-04 22:34:43 +00:00
John McLear
8391f902fb re-apply roomsize 2014-11-04 22:31:09 +00:00
John McLear
a6cbb4af40 working messages 2014-11-04 19:58:38 +00:00
John McLear
68eaa09708 Begin to repair damage done to rooms logic 2014-11-04 19:55:05 +00:00
John McLear
95e7b0f156 transports 2014-11-04 19:11:06 +00:00
John McLear
cb28d10963 move logging into debug environment variable .. sighs 2014-11-04 18:32:26 +00:00
John McLear
5d0ccb5f8f auth fix 2014-11-04 18:17:39 +00:00
John McLear
adef0af227 more stuff required to stop it crashing, now we have identified what needs fixing we can fix it 2014-11-04 18:01:41 +00:00
John McLear
1e53c4f5f0 identify which parts are causing issues and comment them out, obviously this needs fixing 2014-11-04 17:57:18 +00:00
John McLear
2c801cc558 no errors but no connections 2014-11-01 22:36:19 +00:00
John McLear
a67e805da0 basics, still not working 2014-11-01 21:25:49 +00:00
John McLear
124ae31137 blah push back for imports 2014-11-01 21:15:31 +00:00
John McLear
ff549db261 use latest jsdom 2014-11-01 20:58:56 +00:00
Prateek Saxena
437b2bfc64 Move title attribute of buttons from <span> to <a>
The `.toolbar ul li a` that holds the `span.button` has a
padding of `4px 5px`. This means if the mouse is on the edge
of the button the `:hover` state is active but the relevant
tooltip does not show up. Moving the `title` attribute to
the `<a>` itself solves this problem.

Also removed some extra whitespace.
2014-10-11 20:22:31 +05:30
Olivier Tétard
bfde869948 If exportFileName hook isn’t defined don’t return empty filename.
This commit should fix #2251.

If ``exportFileName`` hook is not defined, ``hookFileName`` should be an empty array. Test the length of ``hookFileName`` before overriding ``fileName``, the export filename.
2014-09-28 14:53:07 +02:00
John McLear
4b7562de58 Merge pull request #2184 from qknight/patch-1
added /abs/path/settings.json handling
2014-08-23 21:24:46 +01:00
Simon Gaeremynck
2f8b860e69 Added a userLeave hook that gets called when a user leaves a pad 2014-08-08 15:49:15 +01:00
Joachim Schiele
63b89b693d Update Settings.js
added brackets to match etherpad lite devs' coding style
2014-07-24 12:06:52 +02:00
John McLear
17f26b8c2c Support to allow for a setting so you can stop unknown file types from being imported 2014-07-22 15:46:31 +01:00
Mike DeRosa
25f6c9bf9a Checking if the author for the sessions match instead of comparing the entire session. 2014-07-12 16:40:59 -04:00
Mike DeRosa
7861cae763 Cleaning up switchToPad functionality so that we only need one call to the server("SWITCH_TO_PAD") instead of two (cleaning session info and client ready).
Also Clearing chat messages when switchToPad is called in pad.js instead of having the server tell the client to clear the chat messages.
2014-07-12 16:27:00 -04:00
Marcel Klehr
9d1eca42b3 Merge pull request #2174 from ether/fix/copy-pad-update-lists
Fix #2136: update cache and group list when copying pads
2014-07-08 19:07:35 +00:00
Marcel Klehr
3cafd689af Fix Pad#copy routine for updating group list 2014-07-07 21:14:00 +02:00
Joachim Schiele
e17044d60e added /abs/path/settings.json handling
before this path, one could only supply a relative path like:
 --settings ../relative/path/settings.js
now one can also use it with absolute paths like:
 --settings /abs/path/settings.json
2014-06-22 20:56:21 +02:00
Marcel Klehr
b1b972a2b4 Merge pull request #1787 from goldquest/dev_nopass_whensession
Grant access for valid session to password protected group pads

so, if user has valid session, they don't need the password
2014-06-17 14:01:16 +02:00
John McLear
c627608ea5 Merge pull request #1619 from ether/stricter-transport
Enable HSTS on TLS connections
2014-06-17 12:58:47 +01:00
Marcel Klehr
897f5189b0 Enable HSTS for TLS connections
Don't use X-Frame-Options: deny for now
2014-06-17 13:21:38 +02:00
John McLear
44cb676ba2 Merge pull request #2150 from ether/export-file-name-hook
Server side hook to modify the export file name
2014-06-16 16:47:15 +01:00
Mike DeRosa
4ccd7131d3 Added function to switch to a different pad without having to reload the whole page. 2014-06-14 14:25:56 -04:00
Marcel Klehr
c4f9828825 Fix #2136: update cache and group list when copying pads 2014-06-11 22:23:43 +02:00
Marcel Klehr
cd294c608b Merge pull request #2149 from ether/dont-use-abiword-for-html
abiword shouldnt be used for HTML native documents
2014-06-11 14:47:33 +02:00
Stephan Jauernick
fc3ce3429e Corrected the API Version number. 2014-06-01 21:21:08 +02:00
Stephan Jauernick
412bdd1857 Renamed the variable to prevent possible problems. 2014-06-01 21:19:15 +02:00
Stephan Jauernick
d42a9eb3a6 Enhanced the Example for the API Method getPadID and make the return value consistent to other functions 2014-05-31 11:53:44 +02:00
Stephan Jauernick
fffdde0c59 Implemented the the new API method getPadID for reversing the Readonly ID. Based on: ff88c19fc1 2014-05-31 00:43:31 +02:00
Stephan Jauernick
493636ec36 Added a new API method getPadID for reversing the Readonly ID and introduced the API level 1.4.1. Based on: 97402f60b8 2014-05-31 00:39:36 +02:00
Marcel Klehr
19be8763c9 Fix race condition 2014-05-15 12:47:28 +00:00
John McLear
c63cb812e8 Update ExportHandler.js 2014-05-15 10:53:37 +01:00
John McLear
44b1ac2b16 Merge pull request #1984 from ldidry/fix/getRevisionChangeset-crash
Fix getRevisionChangeset API call making etherpad crash
2014-05-14 14:10:44 +01:00
John McLear
a82823ede2 use full string not first char 2014-05-12 15:15:10 +01:00
John McLear
d09e66e271 use call first and update docs 2014-05-12 15:08:32 +01:00
John McLear
b74c43889e Update ImportHandler.js 2014-05-09 13:50:00 +01:00
John McLear
ec6dc4fa0e make async, please check 2014-05-07 16:27:41 +01:00
John McLear
69ba3cc104 remove eplite add etherpad 2014-05-07 15:17:14 +01:00
John McLear
1f7fcd54f1 working logic for allowing a server side hook to modify the export file name but NOT the extension 2014-05-06 21:13:22 +01:00
John McLear
6d38b05623 abiword shouldnt be used for HTML native documents 2014-05-06 17:32:45 +01:00
Marcel Klehr
6054cda473 Create a customizable timeslider toolbar 2014-03-30 13:02:41 +02:00
John McLear
56fd078469 Merge pull request #2092 from webzwo0i/fix-crash-with-queued-messages
Fix crash with queued messages
2014-03-26 19:39:19 +00:00
Marcel Klehr
f6f319960d Fix REQ_CS rev boundary check
fixes #2096
2014-03-20 21:34:01 +01:00
John McLear
e1fa43e640 quick formatting clean up 2014-03-17 19:20:32 +00:00
Marcel Klehr
da5970dda3 Refactor toolbar.js to use consistent naming 2014-03-16 15:14:21 +01:00
Marcel Klehr
a369347d86 Merge branch 'pr/1579' into toolbar-test
Conflicts:
	settings.json.template
	src/static/js/pad_editbar.js
2014-03-16 13:30:22 +01:00
goldquest
a00c505403 Sometimes, the author2session / group2session don't exist anymore, but the session does.
It should be possible to delete a session, if they don't exist
2014-03-14 17:50:37 +01:00
webzwo0i
8245e65d3f disconnect client if it submits an already accepted changeset based on an old revision 2014-02-20 18:13:30 +01:00
webzwo0i
fa681d43f7 remember user session because it can be gone when finalHandler is called 2014-02-20 17:38:25 +01:00
webzwo0i
c8c2866087 fix crash if disconnect happens for sessions that have messages queued 2014-02-20 16:33:42 +01:00
Simon Gaeremynck
cfdd57b487 Addressed a potential never finishing forEach in PadMessageHandler.padUsers
If the session info for a client would be null or undefined, the forEach
callback would never get called which means the padUsers callback would
never get trigged. This could potentially block API request as this function
is exposed at an HTTP API endpoint.
2014-02-19 10:48:15 +00:00
webzwo0i
a43123880a fix randomstring 2014-01-24 01:19:14 +01:00
Robert Helmer
348d9a838f convert over to server-side crypto 2014-01-15 11:44:57 -08:00
Robert Helmer
ae99c5ea6f new randomString function should take len arg 2014-01-15 11:44:41 -08:00
Robert Helmer
9ef709e7f7 mozilla bug 844796 - use node crypto module for randomString 2014-01-15 10:58:50 -08:00
Marcel Klehr
adf05576b2 Don't crash if CHANGESET_REQ fails 2013-12-17 16:20:57 +01:00
s1341
5add63165d Fix server side bug index overflow
The server wasn't properly checking that the changesets it needed to
return for changeset_requests actually existed.
2013-12-17 15:37:35 +02:00
John McLear
7d47d91a08 Merge pull request #1514 from ether/dont-die-on-bad-html
dont die on bad html but only warn to api logger but dont tell client th...
2013-12-16 03:08:42 -08:00
Lennart Brinkmann
dd8af99e2e Add input validation for html param in setHTML() 2013-12-14 21:14:56 +01:00
John McLear
58cd71dcce Merge branch 'fix-exporthtml-styling-tags' of https://github.com/webzwo0i/etherpad-lite into develop 2013-12-10 19:25:36 +00:00
John McLear
58bbfd8a65 resolve merge conflict 2013-12-09 21:55:04 +00:00
John McLear
24e96c4f8b Merge pull request #2028 from webzwo0i/remove-deadcode
Remove deadcode
2013-12-09 10:49:57 -08:00
John McLear
438f3fc717 Merge pull request #2030 from ether/import_hook
Working import hooks
2013-12-09 10:22:40 -08:00
John McLear
3180b96213 Remove console logs 2013-12-09 18:13:07 +00:00
webzwo0i
9400425b1e [virtual_lines] remove traces of virtual_lines/makeVirtualLineView. this code was used for FF2 key handling code and is long unused 2013-12-08 17:33:58 +01:00
webzwo0i
aadcfbb3d1 do not send globalPadId in clientvars - its not used anywhere 2013-12-08 17:29:41 +01:00
webzwo0i
ca6f877db2 [padDiff] remove unused functions a?lines_length 2013-12-08 17:28:43 +01:00
webzwo0i
e1fbb1d1aa fix loop 2013-12-08 13:53:26 +01:00
webzwo0i
9557dc9dba remove unused require 2013-12-08 13:48:21 +01:00
webzwo0i
c3081c046b function scope: variables only need to be declared once 2013-12-08 13:47:05 +01:00
webzwo0i
0fa0d6dc2c remove now unused code 2013-12-08 13:45:45 +01:00
webzwo0i
27e0c37779 refactor export of style attributes
1. mark all attributes that are used
2. find the outermost attribute that is no longer used
3. close all tags upto this attribute
4. open all tags that are used and not open
(5. close all open tags)
2013-12-08 13:39:50 +01:00
webzwo0i
f968b5a057 useless var statement (function scope) 2013-12-08 11:37:47 +01:00
webzwo0i
51769585a9 workaround so that at least one tag stays open if its the outermost tag. saves some space in the output 2013-12-08 11:37:07 +01:00
webzwo0i
656a558af9 be more clear about the value in propVals 2013-12-08 11:35:28 +01:00
webzwo0i
a534b1ec22 some more docs for attribute export and cleanup empty lines 2013-12-08 11:34:11 +01:00
webzwo0i
70c51d731b add some documentation for styling attributes export 2013-12-08 11:33:20 +01:00
webzwo0i
86791707cd fix export so no tags are omitted 2013-12-08 11:31:23 +01:00
webzwo0i
01c71085e4 fix closing of </title> tag 2013-12-07 00:18:36 +01:00
Luc Didry
3d8452b143 Replace tabs indentation with spaces indentation
Some files are obviously external libraries, I didn't touch them
2013-12-05 08:41:29 +01:00
John McLear
271dd663bf foo 2013-11-28 17:22:34 +00:00
John McLear
6fcc7c77f9 not working and erally confused 2013-11-27 00:23:11 +00:00
s1341
9b7203d4d2 have the server parse the settings file using minify and strip commas 2013-11-26 10:20:59 +02:00
s1341
45e0680484 move copy/move pad into a new api version 2013-11-24 22:34:56 +02:00
s1341
52a99eb9e5 fix bugs, add force option to overwrite destination 2013-11-18 08:25:46 +02:00
s1341
93fcab0461 change parameter names 2013-11-17 21:01:02 +02:00
s1341
29d8bb7716 add pad copy/move API functions 2013-11-17 17:02:44 +00:00
Luc Didry
4a9602cc57 Fix getRevisionChangeset API call making etherpad crash 2013-11-07 22:49:20 +01:00
Marcel Klehr
8ab2442cc9 Update padList correctly
fixes #1971
2013-11-01 14:16:26 +01:00
Marcel Klehr
7b84e7308b Merge branch 'metrics' into develop
Conflicts:
	src/node/handler/PadMessageHandler.js
2013-10-28 12:11:25 +01:00
Marcel Klehr
3ad4b1b837 stats: Add http500, memoryUsage, pendingEdits gauges
and turn edits metric into a timer instead of a simple meter
2013-10-27 21:43:32 +01:00
Marcel Klehr
387091c5c9 Expose current stats at /stats 2013-10-27 18:11:50 +01:00
Marcel Klehr
940f114a84 Record metrics with 'measured' 2013-10-27 17:42:55 +01:00
Kenan Sulayman
7ab65d7112 Refactors APIHandler:callAPI
Refactors and optimizes the APIHandler->callAPI.
2013-10-25 12:14:22 +02:00
Grant Woodford
fbe4e43c3d Privacy: Add an option to disable IP logging 2013-10-19 21:37:11 +02:00
John McLear
a120d78b7e Merge pull request #1943 from ether/fix/listAllPads-fix
Pad list cache: You can't change the cache if it's not initiated
2013-10-14 09:21:27 -07:00
Marcel Klehr
22b0bafafd Pad list cache: You can't change the cache if it's not initiated
(as per 200f250717 - doh.)
2013-10-14 18:20:24 +02:00
vileda
77c2313025 pass correct padID to checkAccess if pad is requested via readOnly link 2013-10-13 22:31:41 +02:00
Marcel Klehr
200f250717 You don't need the padList if you want to alter it
Don't query the db for caching a list of pads if you only want to alter the list
2013-10-13 21:20:19 +02:00
John McLear
680d9a2811 Don't try to populate padlist on each req
This is an important fix, prolly wants merging into master ASAP.  

Before this fix each new pad request would re-populate the all pads object, this is a blocking procedure and slows down the loading to a point where it's almost useless :(

Testing didn't find this because our testing stack isn't populated with pad data :|  TLDR.  Our tests still suck, hard.
2013-10-13 16:39:45 +01:00
Marcel Klehr
64392542f9 Merge pull request #1938 from ether/fix/unknown-connection-message
Drop messages from unknown connections
2013-10-12 11:24:51 -07:00
Marcel Klehr
aa77a615da Drop messages from unknown connections
fixes #1908
2013-10-12 18:51:04 +02:00
Marcel Klehr
048d55a64c Don't create new pad if a non-existant read-only pad is accessed
fixes #1848
2013-10-12 18:41:48 +02:00
Marcel Klehr
7f10b9a42f Add explanations for more disconnect scenarios 2013-10-10 21:11:15 +02:00
Marcel Klehr
de50efc71a Merge pull request #1927 from ether/fix/client-side-error-logging-in-server-log
Polish logging of client-side errors on the server
2013-10-10 11:14:54 -07:00
Marcel Klehr
b7c7685dc7 Polish logging of client-side errors on the server 2013-10-10 18:45:22 +02:00
Marcel Klehr
d4c99d40b8 Never keep processing a changeset if it's corrupted 2013-10-10 18:19:25 +02:00
Marcel Klehr
6689a3c02e Catch errors during preparation of client vars
... and disconnect the user
2013-10-10 16:38:41 +02:00
John McLear
d86d99bc16 Merge pull request #1925 from ether/move-padlist-init
Move padlist init
2013-10-09 11:45:59 -07:00