gpt4 book ai didi

rest - CoTURN:如何使用 TURN REST API?

转载 作者:行者123 更新时间:2023-12-01 18:09:01 27 4
gpt4 key购买 nike

我已经构建了 coturn 并成功运行它。 ip:192.168.1.111。现在我面临的问题是通过REST API获取Turn凭证。 https://datatracker.ietf.org/doc/html/draft-uberti-behave-turn-rest-00根据该段落,请求格式应为

GET/?service=turn&username=mbzrxpgjys

响应应该是JSON。现在我的问题是:

a) 如何配置和命令 TURN SERVER 使其在 REST API 模式下运行?

b) 如何以正确的格式编写http请求以便TURN SERVER能够正确回复?你能给我举个例子吗?

最佳答案

这里需要澄清的几件事是:

  • GET/?service=turn&username=mbzrxpgjys 返回 JSON,只是用于检索时间限制建议 uri从服务器 TURN 凭据,您不必遵循这一点,您的 uri 可以只是 /?giveMeCredentials。事实上,我使用套接字连接来检索此数据,而不是使用 json 响应直接进行 http 调用。归根结底,只要这些凭证有效,您(使用所述 TURN 的客户端)如何获取这些凭证并不重要。

  • 您不会直接向 TURN 服务器发出任何请求,对 TURN 服务器的没有任何 REST API 调用均在您的控制之下。

  • 你在启动 TURN 服务器时分配一个 key ,这可以从数据库中获取(因此可以动态更改),但我很懒,只是硬编码,并在轮次配置中给出了它文件,还记得启用 REST API。作为turn命令的一部分,turnserver ... --use-auth-secret --static-auth-secret=MySecretKey

  • 现在,在您的应用程序服务器中,您将使用相同的 key 来生成凭据,对于用户名,它是 UNIX 时间戳和一些由 分隔的字符串(可以是随机的或用户 ID 或其他内容): 密码将是用户名的 HMAC 和您的 key 。

  • 关于 UNIX 时间戳,这是 TURN 服务器中的时间,在此之前您的凭据必须有效,因此计算此时间可确保您考虑到应用程序服务器与您的轮次之间的时钟时间差服务器。

现在一些示例代码取 self 对另一个 question 的回答

声明TURN服务器的命令:

turnserver -v --syslog -a -L xx.xxx.xx.xx -X yy.yyy.yyy.yy -E zz.zzz.zz.zzz --max-bps=3000000 -f -m 3 --min-port=32355 --max-port=65535 --use-auth-secret --static-auth-secret=my_secret --realm=north.gov --cert=turn_server_cert.pem --pkey=turn_server_pkey.pem --log-file=stdout -q 100 -Q 300 --cipher-list=ALL

node.js 用于在应用程序服务器中创建 TURN 凭证的代码:

var crypto = require('crypto');

function getTURNCredentials(name, secret){

var unixTimeStamp = parseInt(Date.now()/1000) + 24*3600, // this credential would be valid for the next 24 hours
username = [unixTimeStamp, name].join(':'),
password,
hmac = crypto.createHmac('sha1', secret);
hmac.setEncoding('base64');
hmac.write(username);
hmac.end();
password = hmac.read();
return {
username: username,
password: password
};
}

使用此功能的浏览器代码:

  ...
iceServers:[
{
urls: "turn:turn_server_ip",
username: username,
credential:password
}
...

关于rest - CoTURN:如何使用 TURN REST API?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35766382/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com