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:
parent
8dcbcd1656
commit
7d9dc69ae1
7 changed files with 172 additions and 13 deletions
|
|
@ -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");
|
||||
|
|
|
|||
|
|
@ -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:
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue