大家好 ![]()
我提前为这篇长文致歉,但或许熟悉 Discourse 的朋友能直接给出答案。
我共同运营一个兴趣论坛,该论坛设有版主。我们共有两人,另一位同事用 Ruby 编写了该软件。现有的论坛是完全定制的软件,其显著特点是比 PHP-BB 和 Vbulletin 等软件更简洁(而后者不断遭到黑客攻击)。数据库大小约为 40GB,包含 20 万条帖子。出于多种原因,我们正考虑将数据库迁移到其他平台,Discourse 看起来是个不错的选择。
初步测试表明,其整体功能相当不错,例如支持嵌入图片和视频。甚至从安卓手机上传多张图片也能正常工作!
不过,我们需要一些自定义功能;主要是简化用户界面。以下示例按重要性排序不分先后:
-
不显示用户的总发帖数——这是为了防止新成员感到 intimidated(受挫/畏惧)。
-
限制用户在一定时间后编辑其帖子(目前我们设置为 2 小时)——这是为了防止在该领域常见的某种 trolling(恶意捣乱)行为。
-
分类广告版块,并支持付费发布广告(PayPal)……我知道这并非易事,因为涉及定价结构配置、支付链接等。
-
在帖子日期中醒目地显示年份。
-
管理员能够访问某个用户,查看同一浏览器安装下还有哪些其他活跃用户(基本上就是基于 Cookie)。我看到 Discourse 已有此功能,但它是基于 IP 的,如今这已不太有效(许多人使用移动数据,尤其是那些试图运行多个身份的人)。我读过这个帖子:
Handling trolls with multiple accounts over VPNs - #18 by ljpp
以及其他相关讨论,显然许多人已走过这条路,但对于擅长使用 VPN 等的用户,目前尚无解决方案;他们最终往往会通过发帖风格暴露自己,或因发布极其恶劣的内容而被封禁。我还建议,检测相同的密码哈希值将是一大助力,因为许多人会为所有账号使用相同密码
-
为管理员提供一个简单的线性帖子列表,以便在手机上快速浏览最近的 x 条帖子。我想这可以通过少量代码直接访问数据库,并在子域名上实现。在此列表中,应包含“删除”和“封禁”按钮,以便快速移除发布恶劣内容的人(不幸的是,这在论坛中并不罕见)。
-
这可能已存在:管理员将某个主题中选定(或全部)的帖子合并到另一个主题,并确保目标主题中的帖子按正确的时间顺序排列。我意识到这可能会破坏帖子链接,除非链接是站点唯一的(例如,使用数据库中的帖子编号,而非主题内的帖子编号)。
-
管理员生成一个 CSV 格式的邮件列表,包含过去 12 或 24 个月内登录过的所有用户。我们发现,向较老(更不活跃)的用户发送邮件会大大增加被列入黑名单(RBL 等)的风险,尽管我们的邮件发送(主要是关于每年几次的聚会)速度很慢,每分钟仅 1 封邮件,以尽量降低风险(我们也在邮件列表中屏蔽所有已知的临时邮箱地址,例如 sharklasers.com)。
-
在用户个人资料中设置一个选项,让用户选择是否接收这些邮件,以符合 GDPR 要求。
我刚刚阅读了这里关于 GDPR 的帖子。据我了解,在英国,发帖者无权要求删除其帖子。他可以要求删除登录凭据。我想知道 Discourse 在此方面是否在某些方面更容易受到攻击。在我们的论坛上,几乎每个人都使用昵称。
-
管理员有权阅读私信(PM)。这至关重要,因为许多垃圾邮件发送者注册后只发私信而不发帖。除非有人投诉,否则我们无法发现,但很多新注册账号都很可疑(尽管并非明显如此),因此我们会观察一段时间……例如,我们在用户个人资料中设置了“国家”字段,必须在注册时填写。如果某人填写的是德国,但 IP 地址来自泰国,那很可能有问题,但也可能是身在泰国的德国人!
-
用户位置的国家设置,在注册时强制填写(我意识到他们可以在那里随意填写)。
我意识到,如果对代码进行修改,应用更新可能会很困难甚至不可能……
可疑注册确实是个大问题。据我估计,目前 10-20% 的注册是可疑的,因此如果不采取行动,未来会出现很多问题。通常的行为是注册后等待一周,然后向论坛发送垃圾邮件。
不幸的是,我对 Ruby 一无所知。我学过一点点 PHP。我的 IT 专长更广泛:POP 和 SMTP 服务器、虚拟机、VPN、FTP、SPF、DKIM、路由器配置。简单的 HTML 但不懂 CSS……我以前的 IT 专长是嵌入式系统硬件和软件(汇编语言和 C 语言)。编写原始软件的那位同事愿意协助迁移数据库。我有一些联系人可以处理其他部分,但目前没有直接的 Ruby 专长……我在 Linode 服务器上运行着几个站点,运行非常可靠,因此那将是首选的托管方案。
提前感谢大家读完这篇长文,并希望能得到一些指点,了解其中有多少功能已经存在,以及完成其余部分需要多少工作量,或者是否有类似方案 ![]()