mirror of
https://gitlab.xiph.org/xiph/icecast-server.git
synced 2024-12-04 14:46:30 -05:00
Updated listener_remove handler:
* added ip= and agent=, * Some cleanup && made code more uniform, * avoid int for size_t vars. actions: close #1422 svn path=/icecast/trunk/icecast/; revision=18798
This commit is contained in:
parent
2c3108387b
commit
40bc1e7659
@ -189,14 +189,23 @@ static auth_result url_remove_listener (auth_client *auth_user)
|
||||
ice_config_t *config;
|
||||
int port;
|
||||
char *userpwd = NULL, post [4096];
|
||||
const char *agent;
|
||||
char *user_agent, *ipaddr;
|
||||
|
||||
if (url->removeurl == NULL)
|
||||
return AUTH_OK;
|
||||
|
||||
config = config_get_config ();
|
||||
server = util_url_escape (config->hostname);
|
||||
port = config->port;
|
||||
config_release_config ();
|
||||
|
||||
agent = httpp_getvar (client->parser, "user-agent");
|
||||
if (agent)
|
||||
user_agent = util_url_escape (agent);
|
||||
else
|
||||
user_agent = strdup ("-");
|
||||
|
||||
if (client->username)
|
||||
username = util_url_escape (client->username);
|
||||
else
|
||||
@ -212,16 +221,19 @@ static auth_result url_remove_listener (auth_client *auth_user)
|
||||
if (mountreq == NULL)
|
||||
mountreq = httpp_getvar (client->parser, HTTPP_VAR_URI);
|
||||
mount = util_url_escape (mountreq);
|
||||
ipaddr = util_url_escape (client->con->ip);
|
||||
|
||||
snprintf (post, sizeof (post),
|
||||
"action=listener_remove&server=%s&port=%d&client=%lu&mount=%s"
|
||||
"&user=%s&pass=%s&duration=%lu",
|
||||
"&user=%s&pass=%s&duration=%lu&ip=%s&agent=%s",
|
||||
server, port, client->con->id, mount, username,
|
||||
password, (long unsigned)duration);
|
||||
password, (long unsigned)duration, ipaddr, user_agent);
|
||||
free (server);
|
||||
free (mount);
|
||||
free (username);
|
||||
free (password);
|
||||
free (ipaddr);
|
||||
free (user_agent);
|
||||
|
||||
if (strchr (url->removeurl, '@') == NULL)
|
||||
{
|
||||
@ -232,7 +244,7 @@ static auth_result url_remove_listener (auth_client *auth_user)
|
||||
/* auth'd requests may not have a user/pass, but may use query args */
|
||||
if (client->username && client->password)
|
||||
{
|
||||
int len = strlen (client->username) + strlen (client->password) + 2;
|
||||
size_t len = strlen (client->username) + strlen (client->password) + 2;
|
||||
userpwd = malloc (len);
|
||||
snprintf (userpwd, len, "%s:%s", client->username, client->password);
|
||||
curl_easy_setopt (url->handle, CURLOPT_USERPWD, userpwd);
|
||||
@ -283,16 +295,20 @@ static auth_result url_add_listener (auth_client *auth_user)
|
||||
server = util_url_escape (config->hostname);
|
||||
port = config->port;
|
||||
config_release_config ();
|
||||
|
||||
agent = httpp_getvar (client->parser, "user-agent");
|
||||
if (agent == NULL)
|
||||
agent = "-";
|
||||
user_agent = util_url_escape (agent);
|
||||
if (agent)
|
||||
user_agent = util_url_escape (agent);
|
||||
else
|
||||
user_agent = strdup ("-");
|
||||
|
||||
if (client->username)
|
||||
username = util_url_escape (client->username);
|
||||
username = util_url_escape (client->username);
|
||||
else
|
||||
username = strdup ("");
|
||||
|
||||
if (client->password)
|
||||
password = util_url_escape (client->password);
|
||||
password = util_url_escape (client->password);
|
||||
else
|
||||
password = strdup ("");
|
||||
|
||||
@ -353,7 +369,7 @@ static auth_result url_add_listener (auth_client *auth_user)
|
||||
/* auth'd requests may not have a user/pass, but may use query args */
|
||||
if (client->username && client->password)
|
||||
{
|
||||
int len = strlen (client->username) + strlen (client->password) + 2;
|
||||
size_t len = strlen (client->username) + strlen (client->password) + 2;
|
||||
userpwd = malloc (len);
|
||||
snprintf (userpwd, len, "%s:%s", client->username, client->password);
|
||||
curl_easy_setopt (url->handle, CURLOPT_USERPWD, userpwd);
|
||||
|
Loading…
Reference in New Issue
Block a user