Server Configuration¶
Isso配置文件是 INI-style 文本文件。它读取整数,布尔值,字符串和列表。这是默认的isso配置: isso.conf 。从头开始的基本配置如下所示:
[general]
dbpath = /var/lib/isso/comments.db
host = https://example.tld/
[server]
listen = http://localhost:1234/
要将配置文件与Isso一起使用,请将 -c /path/to/cfg
附加到可执行文件或使用环境变量运行Isso:
~> isso -c path/to/isso.cfg
~> env ISSO_SETTINGS=path/to/isso.cfg isso
本文档涵盖的部分:
General¶
在本节中,您将配置大多数与评论相关的选项,例如数据库路径、会话密钥和主机名。这是此部分的默认值:
[general]
dbpath = /tmp/isso.db
name =
host =
max-age = 15m
notify = stdout
log-file =
- dbpath
SQLite3数据库文件路径,强烈建议设置为非临时目录!
- name
在 multiple websites 下有效(多站点模式),否则不会使用。
- host
您的网站。如果Isso无法连接到至少一个站点,则在启动过程中会收到警告,并且Isso很可能无法正常运行。
您至少需要一个主机/网站才能运行Isso。这是出于安全原因:Isso使用 CORS 嵌入评论并限制仅您的网站才能评论,您必须设置网站 “白名单” 。
我建议第一个值是一个非SSL的网站,如果Firefox用户(并且只有这些用户)完全限制了他们的HTTP referer,那么该网站可以作为备用。
[general] host = http://example.tld/ https://example.tld/
- max-age
允许用户编辑/删除自己评论的时间范围。有效值请参见附录 Appendum: Timedelta 。
- notify
选择新增评论的通知后端,以逗号分隔。可用后端:
- stdout
记录到标准输出。如果未选择,则为默认值。注意,此功能自几个版本以后就损坏了。
- smtp
通过SMTP发送有关激活(如果经过审核)和删除链接的新评论的通知。
有新评论时通过微信发送提醒(支持审核)
- reply-notifications
允许用户在回复帖子时使用邮件通知。
强烈建议在启用此设置时也启用审核功能,否则Isso很容易被利用来发送垃圾邮件。
不要忘记配置相应的客户端。
- log-file
将控制台消息记录到文件而不是标准输出中。
- gravatar
当设置为
true
时,这将向每个评论添加包含链接到gravatar图像的属性 “gravatar_image” 。如果评论不包含电子邮件地址,则gravatar将呈现一个随机图标。仅当使用 “gravatar-url” 默认值(包含查询字符串参数d=identicon
)时,这才是正确的。- gravatar-url
gravatar图像的网址。 “{}” 是放置电子邮件哈希的位置。默认为 “https://www.gravatar.com/avatar/{}?d=identicon”
- latest-enabled
If True it will enable the
/latest
endpoint. Optional, defaults to False.
Moderation¶
启用审核队列并处理仍在审核队列中的评论
[moderation]
enabled = false
approve-if-email-previously-approved = false
purge-after = 30d
- enabled
启用评论审核队列。此选项仅影响新评论。除非激活它们,否则其他用户看不到审核队列中的评论。
- approve-if-email-previously-approved
automatically approve comments by an email address if that address has had a comment approved within the last 6 months. No ownership verification is done on the entered email address. This means that if someone is able to guess correctly the email address used by a previously approved author, they will be able to have their new comment auto-approved.
- purge-after
在给定的时间后,删除审核队列中未处理的评论。
Server¶
HTTP服务器配置。
[server]
listen = http://localhost:8080
reload = off
profile = off
- listen
监听接口。Isso支持TCP/IP和Unix域套接字:
; UNIX domain socket listen = unix:///tmp/isso.sock ; TCP/IP listen = http://localhost:1234/
当
gevent
可用时,它将自动用于 http:// 。当前,gevent无法处理unix域套接字上的http请求(有关详细信息,请参阅 #295 和 #299 )。不适用于 uWSGI 。
- public-endpoint
最终用户可以访问Isso的公共URL。应始终为 http:// 或 https:// 的绝对地址。如果留空,则尝试自动检测。通常,仅当与 listen 设置不同时才需要指定。
- reload
源代码更改后,重新加载应用程序。对开发有用。仅适用于内部Web服务器。
- profile
在每个请求之后,在Isso中显示10个最耗时的功能。请勿在生产中使用。
- trusted-proxies
an optional list of reverse proxies IPs behind which you have deployed your Isso web service (e.g. 127.0.0.1). This allow for proper remote address resolution based on a X-Forwarded-For HTTP header, which is important for the mechanism forbiding several comment votes coming from the same subnet.
SMTP¶
Isso可以在有新评论时使用SMTP发送通知。在邮件通知中,您还可以审核(=激活或删除)评论。不要忘记在 general 部分中配置 notify = smtp
。
[smtp]
username =
password =
host = localhost
port = 587
security = starttls
to =
from =
timeout = 10
- username
不言而喻,邮箱账号,可选。
- password
不言而喻,对应密码,可选。
- host
SMTP邮件服务器域名
- port
SMTP邮件服务器端口
- security
安全连接到服务器,允许的值: none ,starttls 或 ssl 。请注意,Python 2.7和3.3没有实现认证验证的简便方法,因此该连接容易受到中间人攻击。在这种情况下,您绝对应该为Isso使用专用的SMTP帐户。
- to
收件人地址,例如您的电子邮件地址
- from
发件人地址,例如 “Foo Bar” <isso@example.tld>
- timeout
指定超时(以秒为单位)以阻止诸如连接尝试之类的操作。
Wechat¶
Isso可以在有新评论时通过微信通知您(依靠 Server酱 的
服务,英文名「ServerChan」,是一款「程序员」和「服务器」之间的通信软件)。
在微信通知中,您还可以审核(=激活或删除)评论。不要忘记在服务端INI文件
的 general
中配置 notify = wechat
。
注解
这不是原Isso的功能,而是 staugur/isso-cn 专门为国内用户新增的功能。
所以需要安装新的Isso-cn,参考 安装一节 ,从 源码安装大致步骤如下:
# git clone https://github.com/staugur/isso-cn.git && cd isso-cn
# npm install -g node-sass requirejs bower jade # or `yarn global add`
# make init js
# pip install .
服务端INI配置文件示例:
[wechat]
sckey = Server酱发送消息的SCKEY
takey = Server酱TalkAdmin服务提供的WebHook回调地址的Key
- sckey
- 使用Server酱发送消息的基本服务,您需要有一个密钥,即SCKEY。申请方法为:
打开:使用浏览器打开 Server酱官网
登入:使用GitHub登入,在「发送消息」页面,就能看到您的 SCKEY
绑定:在「微信推送」页面,扫码关注公众号「方糖」的同时即可完成绑定。后面新消息就会推送到此公众号,当然只有您自己才能收到。
- takey
同样是由Server酱提供的另一款服务:TalkAdmin,它提供两个类型的命令,其 文档是(大概看一眼有所了解):http://sc.ftqq.com/5.version,在这里用的 是下行命令。
- 在Isso中,您需要在TalkAdmin页面添加命令,如图示:
- 交互界面模板的HTML代码是:
<a href="{{$TA_activate}}" class="btn btn-primary font-white">通过 </a> | <a href="{{$TA_delete}}" class="btn btn-danger font-white">拒绝</a> | <a href="{{$TA_view}}" class="btn btn-info font-white">查看</a>
参照此代码一般不用更改,代码中以 TA_ 开头的变量绝对不要更改, 其他样式参考官方文档编写。
- 交互界面自定义CSS,可根据模板中代码调整样式,如:
a.font-white {color:white!important}
命令正则、WebHook地址不需要填。
保存后,Server酱会自动生成WebHook地址,类似于
http://sc.ftqq.com/webhook/xxx
, 这个末尾的xxx,就是Isso需要的 takey !
Guard¶
启用基本的垃圾邮件防护功能
[guard]
enabled = true
ratelimit = 2
direct-reply = 3
reply-to-self = false
require-author = false
require-email = false
- enabled
启用功能,在生产中建议使用。对于调试没有用。
- ratelimit
限制每分钟最多N条新评论。
- direct-reply
有多少条评论直接发送给主题贴(预防简单的 while true; do curl …; done )
- reply-to-self
允许评论者在仍可以编辑评论时回复自己的评论。且,编辑时间段结束后,评论者仍然可以回复自己的评论。
不要忘记配置相应的 客户端
- require-email
强制评论者在邮件字段中输入值。不对提供的值执行验证。
不要忘记配置相应的 客户端
Markup¶
自定义标记并清理HTML。当前,仅支持Markdown(通过Misaka),但是相对而言,添加新语言相对容易。
[markup]
options = strikethrough, superscript, autolink
flags = skip-html, escape, hard-wrap
allowed-elements =
allowed-attributes =
- options
Misaka-specific Markdown extensions, all extension flags can be used there, separated by comma, either by their name or as `EXT_`_.
- flags
Misaka-specific HTML rendering flags, all html rendering flags can be used here, separated by comma, either by their name or as `HTML_`_. Per Misaka’s defaults, no flags are set.
- allowed-elements
允许在生成输出内容中使用的其他HTML标记,以逗号分隔。默认情况下,只有 a, blockquote, br, code, del, em, h1, h2, h3, h4, h5, h6, hr, ins, li, ol, p, pre, strong, table, tbody, td, th, thead 和 ul 被允许。
- allowed-attributes
允许在生成输出内容中使用的额外HTML属性(独立于元素),以逗号分隔。默认情况下,只有 align 和 href 被允许。
要允许在评论中显示图片,您只需添加 allowed-elements = img
和 allowed-attributes = src
。
Hash¶
自定义使用的哈希函数以隐藏来自评论的实际邮件地址,但仍然能够生成一个标识图标。
[hash]
salt = Eech7co8Ohloopo9Ol6baimi
algorithm = pbkdf2
- salt
加盐用来防御彩虹表。Isso还没有使用pepper(大概是机器人之类的)。自Isso发行以来,该默认值一直在使用,并且会在安装过程中为相同的地址生成相同的标识。
- algorithm
要使用的哈希算法-来自Python的 hashlib 或 PBKDF2 (一种计算量大的哈希函数)。
PBKDF2的实际标识符是 pbkdf2:1000:6:sha1 ,这意味着1000次迭代,要生成6个字节,sha1是用于密钥增强的伪随机家族。参数必须按此顺序排列,但可以缩减为 pbkdf2:4096 ,例如仅覆盖迭代。
RSS¶
Isso可以为每个评论主题帖提供一个Atom摘要。用户可以使用它们订阅评论并收到更改通知。一旦在此部分中定义了基本URL,就会启用Atom功能。
[rss]
base =
limit = 100
- base
用于在页面上构建完整URI的基本URL(通过从Isso附加URI)
- limit
要返回主题的最新评论数
Admin¶
Isso具有可选的Web管理界面,可用于审核评论。该接口位于Isso URL上的 /admin
下。
[admin]
enabled = true
password = secret
- enabled
是否启用管理界面
- password
用于登录管理界面的纯文本密码
Appendum(附录)¶
- Timedelta
时间范围的人性化表示形式: 1m 等于60秒。这适用于年(y),周(w),天(d)和秒(s),例如 30s 等于30秒。
您可以添加不同的类型: 1m30s 等于90秒, 3h45m12s 等于3小时45分钟12秒(12512秒)。
Environment variables(环境变量)¶
Isso还通过一些环境变量支持配置:
- ISSO_CORS_ORIGIN
默认情况下, isso 将使用 Host 或HTTP请求头的 Referrer 字段在响应中定义CORS Access-Control-Allow-Origin 的HTTP标头。此环境变量使您可以定义一个较大的固定值,例如方便在您子域的服务器之间共享单个Isso实例: ISSO_CORS_ORIGIN=*.example.test