Server Configuration

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发送有关激活(如果经过审核)和删除链接的新评论的通知。

wechat

有新评论时通过微信发送提醒(支持审核)

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

安全连接到服务器,允许的值: nonestarttlsssl 。请注意,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。申请方法为:
  1. 打开:使用浏览器打开 Server酱官网

  2. 登入:使用GitHub登入,在「发送消息」页面,就能看到您的 SCKEY

  3. 绑定:在「微信推送」页面,扫码关注公众号「方糖」的同时即可完成绑定。后面新消息就会推送到此公众号,当然只有您自己才能收到。

takey

同样是由Server酱提供的另一款服务:TalkAdmin,它提供两个类型的命令,其 文档是(大概看一眼有所了解):http://sc.ftqq.com/5.version,在这里用的 是下行命令。

在Isso中,您需要在TalkAdmin页面添加命令,如图示:

talkadmin_new

  • 交互界面模板的HTML代码是:
    <a href="{{$TA_activate}}" class="btn btn-primary font-white">通过 </a> &nbsp; | &nbsp;
    <a href="{{$TA_delete}}" class="btn btn-danger font-white">拒绝</a> &nbsp; | &nbsp;
    <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

注解

以上两个key不需要同时提供!

  • 审核功能 开启时,Isso会使用TalkAdmin服务,此时需要takey。

    有新评论时,调用Server酱向微信公众号「方糖」推送消息,绑定的微信收 到消息,其内容包含评论页面标题、详细内容、IP等,另外还有三个按钮, 分别是通过(激活)、拒绝(删除)、查看,用来审核新评论。

  • 审核功能 未开启时,Isso仅使用Server酱发送消息,此时需要sckey。

    有新评论时,Server酱向微信公众号推送消息,内容与邮件提醒的类似。

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-author

强制评论者在名字字段中输入值。不对提供的值执行验证。

不要忘记配置相应的 客户端

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, theadul 被允许。

allowed-attributes

允许在生成输出内容中使用的额外HTML属性(独立于元素),以逗号分隔。默认情况下,只有 alignhref 被允许。

要允许在评论中显示图片,您只需添加 allowed-elements = imgallowed-attributes = src

Hash

自定义使用的哈希函数以隐藏来自评论的实际邮件地址,但仍然能够生成一个标识图标。

[hash]
salt = Eech7co8Ohloopo9Ol6baimi
algorithm = pbkdf2
salt

加盐用来防御彩虹表。Isso还没有使用pepper(大概是机器人之类的)。自Isso发行以来,该默认值一直在使用,并且会在安装过程中为相同的地址生成相同的标识。

algorithm

要使用的哈希算法-来自Python的 hashlibPBKDF2 (一种计算量大的哈希函数)。

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