mirror of
https://github.com/ossrs/srs.git
synced 2025-03-09 15:49:59 +00:00
private the srs_vhost_resolve
This commit is contained in:
parent
17bb31cab1
commit
fba1122835
3 changed files with 40 additions and 77 deletions
|
@ -41,6 +41,46 @@ using namespace std;
|
|||
#include <srs_rtmp_stack.hpp>
|
||||
#include <srs_protocol_io.hpp>
|
||||
|
||||
/**
|
||||
* resolve the vhost in query string
|
||||
* @pram vhost, update the vhost if query contains the vhost.
|
||||
* @param app, may contains the vhost in query string format:
|
||||
* app?vhost=request_vhost
|
||||
* app...vhost...request_vhost
|
||||
* @param param, the query, for example, ?vhost=xxx
|
||||
*/
|
||||
void srs_vhost_resolve(string& vhost, string& app, string& param)
|
||||
{
|
||||
// get original param
|
||||
size_t pos = 0;
|
||||
if ((pos = app.find("?")) != std::string::npos) {
|
||||
param = app.substr(pos);
|
||||
}
|
||||
|
||||
// filter tcUrl
|
||||
app = srs_string_replace(app, ",", "?");
|
||||
app = srs_string_replace(app, "...", "?");
|
||||
app = srs_string_replace(app, "&&", "?");
|
||||
app = srs_string_replace(app, "=", "?");
|
||||
|
||||
if ((pos = app.find("?")) != std::string::npos) {
|
||||
std::string query = app.substr(pos + 1);
|
||||
app = app.substr(0, pos);
|
||||
|
||||
if ((pos = query.find("vhost?")) != std::string::npos) {
|
||||
query = query.substr(pos + 6);
|
||||
if (!query.empty()) {
|
||||
vhost = query;
|
||||
}
|
||||
if ((pos = vhost.find("?")) != std::string::npos) {
|
||||
vhost = vhost.substr(0, pos);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/* others */
|
||||
}
|
||||
|
||||
void srs_discovery_tc_url(
|
||||
string tcUrl,
|
||||
string& schema, string& host, string& vhost,
|
||||
|
@ -77,38 +117,6 @@ void srs_discovery_tc_url(
|
|||
srs_vhost_resolve(vhost, app, param);
|
||||
}
|
||||
|
||||
void srs_vhost_resolve(string& vhost, string& app, string& param)
|
||||
{
|
||||
// get original param
|
||||
size_t pos = 0;
|
||||
if ((pos = app.find("?")) != std::string::npos) {
|
||||
param = app.substr(pos);
|
||||
}
|
||||
|
||||
// filter tcUrl
|
||||
app = srs_string_replace(app, ",", "?");
|
||||
app = srs_string_replace(app, "...", "?");
|
||||
app = srs_string_replace(app, "&&", "?");
|
||||
app = srs_string_replace(app, "=", "?");
|
||||
|
||||
if ((pos = app.find("?")) != std::string::npos) {
|
||||
std::string query = app.substr(pos + 1);
|
||||
app = app.substr(0, pos);
|
||||
|
||||
if ((pos = query.find("vhost?")) != std::string::npos) {
|
||||
query = query.substr(pos + 6);
|
||||
if (!query.empty()) {
|
||||
vhost = query;
|
||||
}
|
||||
if ((pos = vhost.find("?")) != std::string::npos) {
|
||||
vhost = vhost.substr(0, pos);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/* others */
|
||||
}
|
||||
|
||||
void srs_random_generate(char* bytes, int size)
|
||||
{
|
||||
static bool _random_initialized = false;
|
||||
|
|
|
@ -62,18 +62,6 @@ extern void srs_discovery_tc_url(
|
|||
std::string& app, int& port, std::string& param
|
||||
);
|
||||
|
||||
/**
|
||||
* resolve the vhost in query string
|
||||
* @pram vhost, update the vhost if query contains the vhost.
|
||||
* @param app, may contains the vhost in query string format:
|
||||
* app?vhost=request_vhost
|
||||
* app...vhost...request_vhost
|
||||
* @param param, the query, for example, ?vhost=xxx
|
||||
*/
|
||||
extern void srs_vhost_resolve(
|
||||
std::string& vhost, std::string& app, std::string& param
|
||||
);
|
||||
|
||||
/**
|
||||
* generate ramdom data for handshake.
|
||||
*/
|
||||
|
|
|
@ -423,39 +423,6 @@ VOID TEST(ProtocolHandshakeTest, BytesEqual)
|
|||
EXPECT_FALSE(srs_bytes_equals(a1, b2, 1));
|
||||
}
|
||||
|
||||
/**
|
||||
* resolve vhost from tcUrl.
|
||||
*/
|
||||
VOID TEST(ProtocolUtilityTest, VhostResolve)
|
||||
{
|
||||
std::string vhost = "vhost";
|
||||
std::string app = "app";
|
||||
std::string param;
|
||||
srs_vhost_resolve(vhost, app, param);
|
||||
EXPECT_STREQ("vhost", vhost.c_str());
|
||||
EXPECT_STREQ("app", app.c_str());
|
||||
|
||||
app = "app?vhost=changed";
|
||||
srs_vhost_resolve(vhost, app, param);
|
||||
EXPECT_STREQ("changed", vhost.c_str());
|
||||
EXPECT_STREQ("app", app.c_str());
|
||||
|
||||
app = "app?vhost=changed1&&query=true";
|
||||
srs_vhost_resolve(vhost, app, param);
|
||||
EXPECT_STREQ("changed1", vhost.c_str());
|
||||
EXPECT_STREQ("app", app.c_str());
|
||||
|
||||
app = "app?other=true&&vhost=changed2&&query=true";
|
||||
srs_vhost_resolve(vhost, app, param);
|
||||
EXPECT_STREQ("changed2", vhost.c_str());
|
||||
EXPECT_STREQ("app", app.c_str());
|
||||
|
||||
app = "app...other...true...vhost...changed3...query...true";
|
||||
srs_vhost_resolve(vhost, app, param);
|
||||
EXPECT_STREQ("changed3", vhost.c_str());
|
||||
EXPECT_STREQ("app", app.c_str());
|
||||
}
|
||||
|
||||
/**
|
||||
* discovery tcUrl to schema/vhost/host/port/app
|
||||
*/
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue