Etherpad-lite: 导出名为*的Pad会导致无响应的etherpad实例

创建于 2017-04-15  ·  13评论  ·  资料来源: ether/etherpad-lite

名为*的Pad导致导出时100%的CPU使用率。

我使用了etherpad导出功能。

我的猜测是,*匹配所有填充名称并尝试导出整个实例。
我使用具有很多历史记录的名为“ foobar”的便笺本在实例上对此进行了测试,并尝试导出名为“ foo *”的新创建的便笺本。 存在其他键盘,例如foobaz和foofoo。

foo *的导出文件大于foobar的导出文件。

Serious Bug

最有用的评论

向上? 这是一个严重的保密问题。

所有13条评论

https://github.com/ether/etherpad-lite/tree/fix/export-wildcards作为解决方法。 过去在https://github.com/ether/etherpad-lite/commit/a0fb65205c7d7ff95f00eb9fd88e93b300f30c3d之前,可以指定一个前缀并导出与该前缀匹配的打击垫。

为了更好地理解此错误,某人需要了解ueberdb中的query-builder部分。

使用sql后端时,请为ex命名一个pad。 ___将以3个字母的名称导出所有便笺本。

看到:
https://dev.mysql.com/doc/refman/5.7/zh-CN/pattern-matching.html
https://github.com/Pita/ueberDB/blob/5c2ef4dc1476ef24bc475885817816c3e602ec8b/mysql_db.js

ueberdb将如何查找密钥(*和%在修补的etherpad中被过滤掉,但是_也是一个特殊字符):
选择keystore哪里key喜欢?

谢谢! 因为ueberdb支持许多不同的数据库后端,所以我们可能还需要检查它们?

如果我们支持填充名称中的字符并且不只是过滤它们,而是在它们到达数据库之前转义它们,那将是很好的。 我明天会调查这个。

至少sqlite和postgresql将有相同的问题。

不确定其他数据库后端。

抱歉,花了这么长时间...
mysql,postgresql,sqlite和crate使用%和_
cassandra,couch,rethink,mongo,dirty,redis可能支持PCRE风格的正则表达式

leveldb和lmdb不实现findKeys

向上? 这是一个严重的保密问题。

FWIW,由于这个特定原因,我们禁用了etherpad导出端点。 当我阅读代码时,我意识到etherpad导出端点不像egt txt端点那样使用padmanager,而是直接调用db函数。 从现在开始,我将承认ethepad的内部知识为0,但是由于export txt端点不存在此问题,也许值得修改etherpad端点以使用padmanager而不是在数据库级别上解决这个问题吗?

你好
这个错误的状态是什么?

我认为这个问题也应该在https://github.com/Pita/ueberDB中创建

这个问题不是关于崩溃节点(当查询恰巧与太多条目匹配时发生),而是关于能够导出etherpad服务器的完整内容而无需知道pad的名称。

因此,我认为过滤掉所有sql LIKE特殊字符是有意义的,直到在ueberDB中将其修复为止。

应该在https://github.com/ether/etherpad-lite/commit/806c9207e365304ef0f3130d7d3ec59f362f8f9d中修复,因为它不再调用findKeys了。 你确定吗?

您好,相同的问题,但有一点不同

我一打开键盘,节点就变得非常贪婪,CPU使用率达到100%,锦鲤吗?

此页面是否有帮助?
0 / 5 - 0 等级