POE::Component::IRC,如何在请求后预测动作?
POE::Component::IRC, how to anticipate an action after requesting it?
我想要实现的目标:我的 PoCo::IRC 机器人请求您使用 RSA 密钥签署一条消息,但该消息在您每次识别时都有一个随机字符串(有点像 # bitcoin-otc 的 gribble bot,但使用 RSA 而不是比特币)。
我想让它说类似的话
<mybot> With the key for 'donkus', sign the message '2FrNGk7QoCKQecIz', pass through base64.
它需要预料到我签名消息的到来。然后我可以用我在 base64 中签名的消息回复,它会使用脚本中的硬编码 public 密钥进行验证(大概使用 Crypt::RSA)。这种交换将通过私人消息进行。
这样我就可以创建一堆机器人在我的 EFnet 频道上操纵我,是的,我知道我可以使用 Eggdrop,但我宁愿编写自己的 perl 脚本也不愿配置所有这些垃圾。
我会这样记录请求:
$requests{$user} = {
key_for => "donkus",
token => "2FrNGk7QoCKQecIz",
ts => time(),
};
这样一来,如果用户重新请求身份验证,旧的就会被破坏。
我会使用 ts
字段定期使身份验证请求过期,或者我会使用 $user
标识符的 LRU 缓存来限制正在播放的请求数量。如果我真的关心,我会同时做:有一个相对较高的 LRU 缓存限制(比如 100 个请求)和一个相对较低的超时时间,大约 2 分钟。
当来自 $user
的消息进来时,我会查看它们是否与 %requests
中的凭据相匹配。如果是,他们就在。如果不是,他们就留在外面。
我想要实现的目标:我的 PoCo::IRC 机器人请求您使用 RSA 密钥签署一条消息,但该消息在您每次识别时都有一个随机字符串(有点像 # bitcoin-otc 的 gribble bot,但使用 RSA 而不是比特币)。
我想让它说类似的话
<mybot> With the key for 'donkus', sign the message '2FrNGk7QoCKQecIz', pass through base64.
它需要预料到我签名消息的到来。然后我可以用我在 base64 中签名的消息回复,它会使用脚本中的硬编码 public 密钥进行验证(大概使用 Crypt::RSA)。这种交换将通过私人消息进行。
这样我就可以创建一堆机器人在我的 EFnet 频道上操纵我,是的,我知道我可以使用 Eggdrop,但我宁愿编写自己的 perl 脚本也不愿配置所有这些垃圾。
我会这样记录请求:
$requests{$user} = {
key_for => "donkus",
token => "2FrNGk7QoCKQecIz",
ts => time(),
};
这样一来,如果用户重新请求身份验证,旧的就会被破坏。
我会使用 ts
字段定期使身份验证请求过期,或者我会使用 $user
标识符的 LRU 缓存来限制正在播放的请求数量。如果我真的关心,我会同时做:有一个相对较高的 LRU 缓存限制(比如 100 个请求)和一个相对较低的超时时间,大约 2 分钟。
当来自 $user
的消息进来时,我会查看它们是否与 %requests
中的凭据相匹配。如果是,他们就在。如果不是,他们就留在外面。