ISSO评论系统折腾记录
在过去的一年,许多评论系统相继扑街了。这个博客也没有评论系统裸奔了不少时间。
国内的服务商都苟延残喘,而外国的则难以触及。
在可见的未来由于政策与环境原因,国内想来是没什么能用的评论系统了,是时候着眼开源方案了。
现在较为成熟的方案有
其实对于不怎么折腾的人,第一个与第二个方案开箱即用体验很好。
但这两个方案都有致命的缺陷,由于依赖公共服务而必须在前端暴露 apiKey
,这简直不能忍。
做个比喻的话,就像出门不锁门一样,叫人浑身难受。
当然这两个方案可以通过自己架设代理处理请求来确保安全性,但这样就又变成了的后端方案。相比之下,当然是先从现成的轮子着手。
前言
官网提供了pip
,可执行文件,和源码安装三种方案。
官网上的安装步骤比较详细,这里就不多赘述,准备好环境就好。当然,此外也有人整合了docker 方案,开箱即用。
当然如果仅仅是这样,这篇文章就不会诞生了。现有的 ISSO 版本为0.10.6
,是 16 年释出的。诸如 gravater 头像、邮箱提醒、回复等都评论系统的主流功能都未实装。虽然在这两年里,有开发者完成了这些功能并提交给 ISSO,但最新的 master 版本,不出意料并不能顺利运行。下一个 release 版本看上去也是遥遥无期,没办法,需要自己动手,丰衣足食了。
折腾记录
现在探查的时候,在网上发现了一个修改版本,实现了 gravatar 头像功能,从他开始,再将 emial 功能的 request 并入代码。
当然事情不会这么一帆风顺,在 ISSO 停更的时间里,他所用的 markdown 渲染器更新了,如果发生了下述报错,需要修改渲染方法的参数
1 | File "/home/pi/ISSO/isso/utils/html.py", line 70, in Markdown |
需要将 extensions 的字符串参数改为常量参数
1 | def Markdown(extensions=("strikethrough", "superscript", "autolink", |
to
1 | def Markdown(): |
ISSO 使用 SMTP 邮件服务发送邮件,对于大多数的邮件服务供应商,都存在发信频率限制,当出现下述错误时,就要注意分离发信请求的时间间隔了。
1 | File "/home/pi/ISSO/isso/ext/notifications.py", line 84, in __enter__ |
ISSO 本身并没有为短时间多次发生邮件设计,这里需要将邮件提醒模块改为队列形式
1 | def _retry(self): |
第一次有了自己的博客,第一次搭了自己的评论系统,可是。。ISSO 的邮件提醒还是简陋的文字版
为了视觉的统一性,这里加入了邮件模板,并修改了邮件生成机制
1 | def format(self, thread, comment, admin=False): |
需要注意的是,css 语法中的{
,}
与 python 的模板字符串系列方法冲突,需要写成双大括号来忽略
尾声
到这里 ISSO 改造算是告一段落了,诸位可以在这里下载源码自行安装
https://github.com/oodavy41/isso
后日谈
最近好像魔都的网络管制又变严了,本来指向家里的 ddns 服务(by dnspod)经常大姨妈,架设在家里树莓派上的 isso 服务也就跟着大姨妈。当然把它放到我的搬瓦工上,也是会面临一样的情况。至于国内的主机?不会买的,这辈子也不会买的,价格贵量也少,我又用不到那点延迟差距。
所以思考再三,还是向纯前端屈服了(真香,valine 做的挺不错的,还有人写了个后台管理器,简直完美,对我来说已经够用了。前端 key 暴露了?想要就来拿吧!(拿了也没用就是了