跳到正文

错误信息 ​

Signal Lab 在出错时可能显示的所有信息,按代码排列:运行报告、命令行和 API 给出的就是这个代码。花括号中的值会替换为出错的具体内容。

api ​

代码信息
api.not_found服务器没有此地址——界面与服务器的版本不一致
api.run_invalid无法读取运行请求
api.run_source只需指定一次实验:文档或模板
api.template_unknown没有内置模板 {name}

auth ​

代码信息
auth.host此服务器不响应该地址——请使用它自己的名称打开
auth.origin此请求来自其他站点,已被拒绝
auth.required请先登录此服务器

broadcast ​

代码信息
broadcast.cidr_invalid{value} 不是 CIDR 地址块——请使用 a.b.c.d/nn,例如 192.168.1.0/24
broadcast.interface_invalid{value} 不是 IPv4 地址——请输入接口的地址,或留空表示任意接口
broadcast.ipv6IPv6 没有广播——请改用组播
broadcast.join_failed无法加入组播组 {group}
broadcast.not_broadcast{target} 不是广播地址——请使用 255.255.255.255:port 或 x.x.x.255:port
broadcast.not_multicast{target} 不是组播组——请使用 224.0.0.0 到 239.255.255.255 之间的地址
broadcast.port_shared{target} 已被占用——请打开“共享端口”以便与其一同监听
broadcast.prefix_invalid/{value} 不是前缀长度——请使用 /0 到 /32
broadcast.rate_invalid信标速率必须大于 0
broadcast.rate_limit{targets} 个目标共计 {pps} 包/s,超过了 {max} pps 的上限——请降低速率或缩小目标范围
broadcast.reply_missing没有可发送的回复——请设置一个,或关闭“应答探测”
broadcast.sweep_port请设置要遍历的端口
broadcast.sweep_too_large/{prefix} 涵盖 {count} 个地址,而一次遍历最多覆盖 {max} 台主机——请缩小到 /{limit} 或更小的地址块
broadcast.target_required请至少输入一个目标

check ​

代码信息
check.body_missing响应中不包含 {text}
check.body_truncated响应({bytes} B)超过保留的 256 KiB,因此无法检查该文本
check.header_mismatch标头 {name} 为 {actual},其中不包含 {text}
check.header_missing响应中没有 {name} 标头
check.latency_failed响应耗时 {actual} ms,超过了 {limit} ms 的上限
check.no_response此步骤之前没有 HTTP 响应——请在每条路径上于它之前放置一个 HTTP 请求
check.status_failed预期 HTTP {expected},实际收到 {actual}
check.value_failed预期:{value} {op} {expected}

cli ​

代码信息
cli.bind_one--bind 只能设置一个模拟器的地址;但给出了多个
cli.emulate_nothing没有可模拟的内容:文件中不包含模拟器
cli.emulator_unknown{name} 不是文件,且 {path} 中没有该 ID 或名称的模拟器
cli.file_unknown{name} 既不是文件,也不是内置模板——signallab templates 会列出它们
cli.header_invalid{value} 不是标头——请使用 'Name: value'
cli.library_missing{path} 处没有库——应用在首次启动时会创建它;也可用 --library 指定其他库
cli.matrix_conflict{name} 被设置了两次——通过 --param 和矩阵,或通过 --matrix 和文件;请只设置一次
cli.matrix_file_invalid{path} 不是矩阵:应为 NAME: [values] 形式的对象,或由 NAME: value 形式的对象组成的列表
cli.matrix_invalid{value} 不是 NAME=V1,V2
cli.matrix_too_large{n} 种组合——一条命令最多 {max} 种
cli.matrix_too_wide{axes} 个维度相乘的结果超出可计数的范围——一条命令最多 {max} 种组合
cli.matrix_unknown--matrix {name}:给定的实验中都没有该名称的参数
cli.matrix_value_invalid{name}:矩阵值应为文本、数字或 true/false
cli.osc_arg_invalid{value} 不是 OSC 参数——请使用 i:3、f:0.5、d:1.5、h:64、s:text、b:hex、T、F 或 N
cli.param_invalid{value} 不是 NAME=VALUE
cli.server_ended来自 {url} 的应答在运行结束前就中断了
cli.server_invalid{url} 不是服务器地址——请使用类似 http://127.0.0.1:1430 的地址
cli.server_reply{url} 的应答不是来自 Signal Lab(HTTP {status})
cli.server_unreachable无法连接到 {url} 上的服务器
cli.signal_ambiguous有多个信号名为 {name}——请用 ID 指定其中一个:{ids}
cli.signal_unknown{path} 中没有信号 {name}
cli.status_unexpected响应为 {actual},而不是 {expected}
cli.token_empty令牌文件 {path} 为空

command ​

代码信息
command.args_invalid引擎无法读取 {name} 的参数——界面与引擎的版本不一致
command.json_required服务器只接受 JSON 格式的命令
command.reply_invalid引擎无法编码其应答
command.unknown引擎没有命令 {name}——界面比引擎新

compare ​

代码信息
compare.not_numbers此比较要求 {value} 和 {expected} 都是数字

details ​

代码信息
details技术细节

doc ​

代码信息
doc.connection_duplicate连线 {from} → {to} 出现了两次
doc.connection_invalid连线 {from} → {to} 指向不存在的节点或指回自身
doc.name_required请为实验命名
doc.node_count一个实验包含 1–{max} 个节点
doc.node_id_duplicate有两个节点共用 ID {id}
doc.node_id_empty有节点的 ID 为空
doc.port_invalid未知输出 {port}
doc.position_invalid节点的位置无效
doc.start_end_count实验必须恰好有一个“开始”和一个“结束”
doc.version_unsupported不支持文件版本 {version};此版本的 Signal Lab 读取版本 {supported}

emulator ​

代码信息
emulator.accept_failed在 {target} 上接受连接时因错误而停止
emulator.arg_value{value} 不是 {type} 类型的值
emulator.args_too_many最多 {max} 个参数
emulator.bind_taken{target} 已被此实验中的另一个模拟器({other})占用
emulator.body_failed无法读取请求正文
emulator.body_too_large请求正文超过 {max} KB
emulator.busy等待中的回复超过 {max} 条——此回复已被丢弃
emulator.conditions_too_many最多 {max} 个条件
emulator.failed模拟器意外停止
emulator.header_value_invalid不是有效的标头值——不能包含换行符
emulator.headers_too_many最多 {max} 个标头
emulator.mqtt_client_id已拒绝一个没有 ID 却要求保留会话的客户端
emulator.mqtt_login已拒绝 {client}:用户名或密码错误
emulator.mqtt_password_aloneMQTT 3.1.1 无法在没有用户名的情况下携带密码,因此任何客户端都无法连接:请同时设置用户名
emulator.mqtt_protocol已拒绝使用 {protocol} 级别 {level} 的客户端:此代理使用 MQTT 3.1.1(级别 4)
emulator.name_unknown未知名称 {{{name}}}——回复只能读取 {{request…}} 和参数
emulator.node_unknown此实验中没有模拟器 {id}
emulator.not_in_run模拟器 {id} 不属于本次运行
emulator.not_running模拟器 #{id} 未在运行
emulator.params_only此处只能使用文本和参数:它在模拟器启动时、任何内容到达之前就已确定
emulator.path_param{value} 不是路径段名称——请使用由字母、数字和 _ 组成的 :name
emulator.path_rest* 只能作为完整的最后一段,如 /files/*
emulator.path_slash路径以 / 开头
emulator.response_required路由至少需要一个响应
emulator.responses_too_many最多 {max} 个响应
emulator.rules_too_many最多 {max} 条规则
emulator.secret_unsupported模拟器无法读取机密
emulator.weights_zero至少需要一个响应的权重大于 0

emulators ​

代码信息
emulators.encode无法将模拟器库写为 JSON
emulators.json_invalid{path} 不是有效的模拟器文件:第 {line} 行第 {column} 列有 JSON 错误——请修复该文件或将其移除

extract ​

代码信息
extract.header_missing响应中没有 {name} 标头
extract.json_missing响应中没有 {path}
extract.no_match/{pattern}/ 与响应正文不匹配
extract.not_json响应正文不是 JSON
extract.truncated响应({bytes} B)超过保留的 256 KiB,因此无法可靠地读取该值

feedback ​

代码信息
feedback.disabled暂不接收反馈——请发送邮件至 info@proanima.net
feedback.email_invalid这不是有效的电子邮件地址
feedback.failed反馈服务返回了 HTTP {status}
feedback.file_too_large{name} 超过 {max_mb} MB
feedback.file_type{name}:截图必须是 PNG、JPEG、WebP 或 GIF,日志必须是文本
feedback.invalid反馈服务不接受此表单
feedback.message_required请先填写留言
feedback.message_too_long留言超过 {max} 个字符
feedback.rate_limited此地址发送的消息暂时过多——请在 {retry_after_s} s 后重试
feedback.send_failed反馈服务无法将消息转交给邮件服务器;请稍后重试(编号 {id})
feedback.too_large所有内容总计超过 {max_mb} MB
feedback.too_many_files最多 {max} 个日志

file ​

代码信息
file.encode无法将实验写为 JSON
file.io无法读取或写入 {path}
file.json_invalid不是有效的实验文件:第 {line} 行第 {column} 列有 JSON 错误
file.not_found{path} 不是服务器数据文件夹中的文件
file.too_large实验文件最大 {max} MiB

firewall ​

代码信息
firewall.declined未授予管理员权限,因此防火墙未被更改
firewall.failed无法读取或更改防火墙规则
firewall.server服务器的防火墙需在服务器上设置:请在那里运行 signallab firewall allow,或联系其管理员
firewall.unsupported此处没有可更改的按程序防火墙——请在 ufw 或 firewalld 中开放端口

graph ​

代码信息
graph.cycle此节点处于环路中;只有“循环”节点的循环体可以连回该循环
graph.needs_http每条路径上都需要在它之前有一个 HTTP 请求
graph.outputs_required请连接必需的输出
graph.port_unexpected输出 {port} 不属于此节点
graph.start_input“开始”不能有输入
graph.unreachable无法从“开始”到达

hex ​

代码信息
hex.empty没有要发送的字节——请输入成对的 hex 数字,例如 de ad be ef
hex.invalid{value} 不是 hex 字节——请使用成对的数字,例如 de ad be ef

http ​

代码信息
http.client_failed无法启动 HTTP 客户端
http.digest_invalid服务器要求 Digest,但未提供 realm 或 nonce
http.digest_not_offered服务器返回了 401,但没有要求 Digest
http.digest_other_origin请求被转发到了 {origin},并由它要求 Digest——只会应答请求本身所指定的源
http.digest_unsupported服务器要求使用 {algorithm} 的 Digest,而 Signal Lab 不支持该算法(支持 MD5 和 SHA-256)
http.duration_invalid时长必须大于或等于 0 秒
http.rate_invalid速率必须为 0 或 {min}–{max} 请求/s

impair ​

代码信息
impair.bind_taken{target} 已被 {other} 占用:本次运行的两个套接字不能共用一个端口
impair.loop中继的数据包会经由 {target} 回到中继自身,无限循环——请将其目标指向设备
impair.not_running网络损伤 {id} 不属于本次运行
impair.relay_unknown此实验中没有网络损伤节点 {id}

inspect ​

代码信息
inspect.empty捕获为空——没有可保存的内容
inspect.frame_gone帧 #{seq} 已不在捕获中:已被更新的帧取代
inspect.no_payload帧 #{seq} 只记录了大小,没有记录字节

json_path ​

代码信息
json_path.invalid{path} 不是 JSON 路径——请使用 $.field、$.items[0] 或 $["a b"]

load ​

代码信息
load.nothing_planned此负载模式不发送任何请求
load.spike_outside尖峰必须在时长内结束
load.steps_out_of_range每一级的速率必须为 0–{max} 请求/s
load.threshold{metric} 为 {actual},阈值 {op} {value}
load.threshold_value阈值需要一个大于或等于 0 的数字
load.thresholds_too_many最多 {max} 个阈值
load.too_long各级阶梯的总时长超过了一次运行的时长上限({seconds} s)

loop ​

代码信息
loop.body_entered只有循环的“循环体”输出才能进入其循环体
loop.body_leaves在循环体内,每个输出都必须在循环体中继续,或连回循环
loop.body_parallel在循环体内,每个输出只能有一条连线:一次迭代作为一个分支运行
loop.body_unsupported循环体内不能有“开始”、“结束”、并行分支、汇合或其他循环
loop.limit迭代次数:{max};退出条件始终未成立(连接“上限”输出以继续)
loop.no_return“循环体”上没有任何路径连回此循环

mqtt ​

代码信息
mqtt.client_id_required请输入客户端 ID——代理会拒绝空 ID
mqtt.filter_required请至少添加一个主题过滤器
mqtt.no_answer{broker} 接受了连接,但未及时应答——它是 MQTT 代理吗?
mqtt.not_connected连接 #{id} 未打开——请先连接到代理
mqtt.protocol{broker} 的应答不是 MQTT 3.1.1
mqtt.refused{broker} 拒绝了连接(返回码 {code})
mqtt.refused_client_id{broker} 拒绝了此客户端 ID——请换一个
mqtt.refused_credentials{broker} 拒绝了用户名或密码
mqtt.refused_not_authorized{broker} 未授权此客户端——请检查其访问规则
mqtt.refused_protocol{broker} 不接受 MQTT 3.1.1 客户端
mqtt.refused_unavailable{broker} 当前不可用——请稍后重试
mqtt.subscribe_refused{broker} 拒绝了对 {filter} 的订阅
mqtt.topic_invalid无法向此主题发布
mqtt.topic_required请输入要发布到的主题

name ​

代码信息
name.no_value{name} 没有值
name.not_on_every_path{{{name}}} 并非在此步骤之前的每条路径上都已设置
name.unknown未知名称 {{{name}}}——请添加参数或提取变量

netsim ​

代码信息
netsim.not_running中继 {id} 已不在运行

node ​

代码信息
node.bind_invalid{value} 不是监听地址——请使用 IP:端口,例如 0.0.0.0:9001
node.header_invalid{value} 不是有效的标头名称
node.load_alone负载会取代“重复”和“重试”:请关闭它们
node.load_unsupported只有 HTTP 请求才能在负载下运行
node.method_invalid{value} 不是 HTTP 方法
node.not_found节点 {id} 已不存在
node.osc_addressOSC 地址以 / 开头({value})
node.params_only此处只能使用参数——运行会在第一个步骤之前订阅
node.range必须为 {min}–{max}
node.repeat_too_long重复所需时间超过了一次运行的时长上限({seconds} s)
node.repeat_too_many发送次数超过 {max}:请延长间隔或缩短时长
node.repeat_unsupported只有发送的步骤才能重复
node.required必填
node.retry_unsupported只有发送或监听的步骤才能重试
node.rules_too_many最多 {max} 条参数规则
node.target_invalid{value} 不是带端口的地址,例如 127.0.0.1:9000
node.too_long太长:最多 {max}
node.topic_filter{value} 不是主题过滤器:+ 代表完整的一级,# 只能代表完整的最后一级
node.topic_wildcard发布主题不能包含通配符 + 或 #
node.url_invalid{value} 不是 http:// 或 https:// URL

osc ​

代码信息
osc.packet_malformed格式错误的 OSC 数据包({bytes} B)
osc.pattern_charOSC 地址中此处不允许使用“{char}”
osc.pattern_empty_segment斜杠之间的部分为空
osc.pattern_empty_set[ ] 集合为空
osc.pattern_range范围 {range} 是倒序的
osc.pattern_slashOSC 地址模式以 / 开头
osc.pattern_too_long地址模式超过 {max} 个字符
osc.pattern_unclosed未闭合的 [ 或 {

param ​

代码信息
param.duplicate参数 {name} 定义了两次
param.name_invalid参数名“{name}”必须以字母或 _ 开头,且只能包含字母、数字和 _
param.name_reserved“{name}”是保留字,不能用作参数名
param.too_large参数 {name} 超过 {max} KiB
param.unknown未知参数 {name}

params ​

代码信息
params.too_many最多 {max} 个参数

position ​

代码信息
position位置 {position}

profile ​

代码信息
profile.active_missing当前配置 {name} 不存在
profile.duplicate配置 {name} 定义了两次
profile.name_invalid配置名称为 1–{max} 个字符
profile.unknown_param配置 {profile} 设置了 {name},但它不是参数
profile.values_too_many配置 {profile} 设置的值超过 {max} 个

profiles ​

代码信息
profiles.too_many最多 {max} 个配置

regex ​

代码信息
regex.invalid{pattern} 不是有效的正则表达式

run ​

代码信息
run.join_waiting“汇合分支”仍在等待 {count} 个分支——有一条进入它的连线从未被走到,例如某个分支走了别的路径
run.limit_range一次运行可持续 1 到 {max} 秒
run.no_end运行在到达“结束”之前就停止了
run.node_missing缺少节点 {id}
run.not_a_check此节点不是检查
run.not_a_wait此节点不是等待
run.not_an_action此节点不发送也不监听
run.override_unknown“自定义运行…”设置了 {name},但它不是参数
run.timeout运行超过 {seconds} s,已被停止

runs ​

代码信息
runs.name_invalid“{name}”不是运行报告
runs.not_found没有运行“{name}”:其报告已被删除

scan ​

代码信息
scan.host_required请输入要扫描的主机

secret ​

代码信息
secret.empty机密不能为空
secret.missing此计算机上未存储机密 {name}——请在“参数 → 机密”中设置
secret.name_invalid机密名称“{name}”必须以字母或 _ 开头,只能包含字母、数字和 _,且最多 {max} 个字符
secret.read_only此处的机密是只读的:请在服务器上设置 {name}(SIGNALLAB_SECRET_{name},或其机密文件夹中名为 {name} 的文件)
secret.store系统凭据存储处理 {name} 时出错
secret.too_large机密最大 {max} KiB
secret.unsupported机密保存在 Windows 凭据管理器中,而此系统没有

seed ​

代码信息
seed.range种子必须为 0–{max}

show ​

代码信息
show显示

signals ​

代码信息
signals.encode无法将信号库写为 JSON
signals.json_invalid{path} 不是有效的信号库:第 {line} 行第 {column} 列有 JSON 错误——请修复该文件或将其移除

socket ​

代码信息
socket.option_failed系统不接受套接字选项 {option}

template ​

代码信息
template.arg_empty参数为空
template.arg_integer{function}:{value} 不是整数
template.arg_invalid参数 {value} 必须加引号
template.arg_number{function}:{value} 不是数字
template.arg_quote参数中有未闭合的引号
template.args_pickpick(…) 至少需要一个选项
template.args_random_floatrandom_float(min, max[, digits]) 接受 2 或 3 个参数
template.args_random_intrandom_int(min, max) 接受 2 个参数
template.args_uuiduuid() 不接受参数
template.bad_call{text} 不是有效的函数调用
template.bad_name{text} 不是有效的名称
template.bad_path{text}:无效路径——请使用 .field、[0] 或 ["key"]
template.digitsrandom_float 接受 0–{max} 位小数
template.empty空的 {{ }}
template.needs_name{head} 需要名称:{head}.NAME
template.no_field{name} 没有字段 {path}
template.node_fieldsnode 只有 node.id
template.now_fieldsnow 只有 now.iso
template.range{function}:min {min} 必须小于 max {max}
template.run_fieldsrun 只有 run.id 和 run.seed
template.unclosed未闭合的 {{
template.unknown_function未知函数 {name}()

transport ​

代码信息
transport.address_in_use{target} 已被其他程序占用
transport.address_unavailable{target} 不是此计算机的地址
transport.denied系统或防火墙不允许访问 {target}
transport.dns无法解析 {target}——请检查主机名
transport.failed发送到 {target} 失败
transport.refused{target} 拒绝了连接——该端口上没有程序在监听
transport.reset{target} 关闭了连接
transport.target_invalid{target} 不是有效的地址
transport.timeout{target} 未及时应答
transport.tls无法与 {target} 建立安全连接(证书或 TLS)
transport.unreachable{target} 不可达——请检查网络和地址

unknown ​

代码信息
unknown意外的引擎错误({code})

variable ​

代码信息
variable.name_invalid变量名“{name}”必须以字母或 _ 开头,且只能包含字母、数字和 _
variable.name_reserved“{name}”是保留字,不能用作变量名
variable.shadows_param变量 {name} 与某个参数同名

wait ​

代码信息
wait.bind_failed无法监听 {target}
wait.not_listening未在监听 {target}
wait.receive_failed在 {target} 上的监听因错误而停止
wait.timeout{ms} ms 内没有匹配的消息({target} 上收到了 {unmatched} 条其他消息)

ws ​

代码信息
ws.close_code{code} 不是客户端可发送的关闭代码——请使用 1000,或用 3000–4999 表示应用程序自定义的代码
ws.closedWebSocket 连接已关闭({code})
ws.connection_after{id} 不在此步骤之前——此步骤使用的连接由它打开
ws.connection_unknown{id} 不是此实验中的“WebSocket 连接”节点
ws.handshake_failed与 {url} 的 WebSocket 升级失败
ws.handshake_status{url} 返回了 HTTP {status},而没有切换到 WebSocket
ws.header_invalid标头 {name} 不能随升级请求发送
ws.message_too_largeWebSocket 消息最大为 {max} 字节
ws.not_connected没有已打开的 WebSocket 连接 {id}
ws.payload_required请以文本或 hex 字节形式提供消息
ws.protocol_error与 {url} 的连接中断:服务器未遵守 WebSocket 协议
ws.protocol_invalid{value} 不是子协议名称:不能包含空格、逗号或斜杠
ws.subprotocol_refused{url} 没有接受所提供的任何子协议
ws.url_invalid{url} 不是 WebSocket 地址——请使用 ws://host:port/path 或 wss://…

字段 ​

信息对所涉及字段的称呼。

字段名称
address地址
argument参数
attempts尝试次数
auth认证
bind监听于
body正文
broker代理
burst_length突发长度
burst_start突发丢包
code关闭代码
condition条件
conditions条件
connection连接
corrupt损坏
delay_ms延时
duplicate重复
duration_s时长
emulator模拟器
expected预期值
expected_text预期文本
fallback无路由接收的请求
greeting问候语
header_name标头名称
header_value标头值
headers标头
hexHex 字节
host主机
jitter_ms抖动
json_pathJSON 路径
latency_ms延迟
listen监听于
load负载
load_base基础速率
load_concurrency并发数
load_duration时长
load_every每级时长
load_from起始
load_peak峰值速率
load_rate速率
load_spike尖峰
load_step步长
load_steps阶数
load_to结束
loop_max迭代次数
loss丢包
max_ms时间上限
message消息
method方法
ms时长
name名称
outage_down停机时长
outage_up在线时长
password密码
path路径
pattern模式
payload载荷
port端口
profile_name配置名称
protocols子协议
qosQoS
rate速率
rate_kbps带宽
reason原因
relay网络损伤
reorder乱序
repeat重复
repeat_count发送次数
repeat_duration重复时长
repeat_interval间隔
repeat_jitter抖动
reply回复
reply_address回复地址
reply_arg回复参数
reply_args回复参数
reply_bind接收回复于
reply_pattern回复模式
reply_payload回复载荷
reply_topic回复主题
reset连接重置
responses响应
retained保留消息
retry重试
retry_delay尝试间隔
rule规则
rule_value规则值
rules规则
stall半开
status状态
target目标
threshold阈值
thresholds阈值
timeout_ms超时
to回复到
token令牌
topic主题
urlURL
username用户名
value值
variable变量
weight权重