1
0
Fork 0
mirror of https://github.com/ossrs/srs.git synced 2025-03-09 15:49:59 +00:00

SRT: Support encrypt, with utest (#3223)

* SRT: support encrypt, with utest

* SRT: refine set srt option error log
This commit is contained in:
john 2022-10-28 16:55:35 +08:00 committed by GitHub
parent 8dcbcd1656
commit 7d9dc69ae1
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
7 changed files with 172 additions and 13 deletions

View file

@ -2332,7 +2332,7 @@ srs_error_t SrsConfig::check_normal_config()
&& n != "peerlatency" && n != "tlpkdrop" && n != "connect_timeout"
&& n != "sendbuf" && n != "recvbuf" && n != "payloadsize"
&& n != "default_app" && n != "sei_filter" && n != "mix_correct"
&& n != "tlpktdrop" && n != "tsbpdmode") {
&& n != "tlpktdrop" && n != "tsbpdmode" && n != "passphrase" && n != "pbkeylen") {
return srs_error_new(ERROR_SYSTEM_CONFIG_INVALID, "illegal srt_server.%s", n.c_str());
}
}
@ -7768,6 +7768,40 @@ int SrsConfig::get_srto_payloadsize()
return atoi(conf->arg0().c_str());
}
string SrsConfig::get_srto_passphrase()
{
SRS_OVERWRITE_BY_ENV_STRING("srs.srt_server.passphrase");
static string DEFAULT = "";
SrsConfDirective* conf = root->get("srt_server");
if (!conf) {
return DEFAULT;
}
conf = conf->get("passphrase");
if (!conf || conf->arg0().empty()) {
return DEFAULT;
}
return conf->arg0();
}
int SrsConfig::get_srto_pbkeylen()
{
SRS_OVERWRITE_BY_ENV_INT("srs.srt_server.pbkeylen");
static int DEFAULT = 0;
SrsConfDirective* conf = root->get("srt_server");
if (!conf) {
return DEFAULT;
}
conf = conf->get("pbkeylen");
if (!conf || conf->arg0().empty()) {
return DEFAULT;
}
return atoi(conf->arg0().c_str());
}
string SrsConfig::get_default_app_name()
{
SRS_OVERWRITE_BY_ENV_STRING("srs.srt_server.default_app");

View file

@ -684,6 +684,10 @@ public:
virtual int get_srto_recvbuf();
// SRTO_PAYLOADSIZE
virtual int get_srto_payloadsize();
// Get the srt SRTO_PASSPHRASE, default is empty.
virtual std::string get_srto_passphrase();
// Get the srt SRTO_PBKEYLEN, default is 0.
virtual int get_srto_pbkeylen();
// Get the default app.
virtual std::string get_default_app_name();
private:

View file

@ -66,51 +66,63 @@ srs_error_t SrsSrtAcceptor::set_srt_opt()
srs_error_t err = srs_success;
if ((err = srs_srt_set_maxbw(listener_->fd(), _srs_config->get_srto_maxbw())) != srs_success) {
return srs_error_wrap(err, "set opt");
return srs_error_wrap(err, "set opt maxbw=%d failed", _srs_config->get_srto_maxbw());
}
if ((err = srs_srt_set_mss(listener_->fd(), _srs_config->get_srto_mss())) != srs_success) {
return srs_error_wrap(err, "set opt");
return srs_error_wrap(err, "set opt mss=%d failed", _srs_config->get_srto_mss());
}
if ((err = srs_srt_set_tsbpdmode(listener_->fd(), _srs_config->get_srto_tsbpdmode())) != srs_success) {
return srs_error_wrap(err, "set opt");
return srs_error_wrap(err, "set opt tsbpdmode=%d failed", _srs_config->get_srto_tsbpdmode());
}
if ((err = srs_srt_set_latency(listener_->fd(), _srs_config->get_srto_latency())) != srs_success) {
return srs_error_wrap(err, "set opt");
return srs_error_wrap(err, "set opt latency=%d failed", _srs_config->get_srto_latency());
}
if ((err = srs_srt_set_rcv_latency(listener_->fd(), _srs_config->get_srto_recv_latency())) != srs_success) {
return srs_error_wrap(err, "set opt");
return srs_error_wrap(err, "set opt recvlatency=%d failed", _srs_config->get_srto_recv_latency());
}
if ((err = srs_srt_set_peer_latency(listener_->fd(), _srs_config->get_srto_peer_latency())) != srs_success) {
return srs_error_wrap(err, "set opt");
return srs_error_wrap(err, "set opt peerlatency=%d failed", _srs_config->get_srto_peer_latency());
}
if ((err = srs_srt_set_tlpktdrop(listener_->fd(), _srs_config->get_srto_tlpktdrop())) != srs_success) {
return srs_error_wrap(err, "set opt");
return srs_error_wrap(err, "set opt tlpkdrop=%d failed", _srs_config->get_srto_tlpktdrop());
}
if ((err = srs_srt_set_connect_timeout(listener_->fd(), srsu2msi(_srs_config->get_srto_conntimeout()))) != srs_success) {
return srs_error_wrap(err, "set opt");
return srs_error_wrap(err, "set opt connect_timeout=%d failed", _srs_config->get_srto_conntimeout());
}
if ((err = srs_srt_set_peer_idle_timeout(listener_->fd(), srsu2msi(_srs_config->get_srto_peeridletimeout()))) != srs_success) {
return srs_error_wrap(err, "set opt");
return srs_error_wrap(err, "set opt peer_idle_timeout=%d failed", _srs_config->get_srto_peeridletimeout());
}
if ((err = srs_srt_set_sndbuf(listener_->fd(), _srs_config->get_srto_sendbuf())) != srs_success) {
return srs_error_wrap(err, "set opt");
return srs_error_wrap(err, "set opt sendbuf=%d failed", _srs_config->get_srto_sendbuf());
}
if ((err = srs_srt_set_rcvbuf(listener_->fd(), _srs_config->get_srto_recvbuf())) != srs_success) {
return srs_error_wrap(err, "set opt");
return srs_error_wrap(err, "set opt recvbuf=%d failed", _srs_config->get_srto_recvbuf());
}
if ((err = srs_srt_set_payload_size(listener_->fd(), _srs_config->get_srto_payloadsize())) != srs_success) {
return srs_error_wrap(err, "set opt");
return srs_error_wrap(err, "set opt payload_size=%d failed", _srs_config->get_srto_payloadsize());
}
string passphrase = _srs_config->get_srto_passphrase();
if (! passphrase.empty()) {
if ((err = srs_srt_set_passphrase(listener_->fd(), passphrase)) != srs_success) {
return srs_error_wrap(err, "set opt passphrase=%s failed", passphrase.c_str());
}
int pbkeylen = _srs_config->get_srto_pbkeylen();
if ((err = srs_srt_set_pbkeylen(listener_->fd(), pbkeylen)) != srs_success) {
return srs_error_wrap(err, "set opt pbkeylen=%d failed", pbkeylen);
}
}
return err;