mirror of
https://gitlab.xiph.org/xiph/icecast-server.git
synced 2024-12-04 14:46:30 -05:00
Feature: Added support to give navigation direction via admin call for command_move_clients()
This commit is contained in:
parent
7474fb8d8d
commit
704df45ce5
@ -26,9 +26,9 @@
|
|||||||
</xsl:otherwise>
|
</xsl:otherwise>
|
||||||
</xsl:choose>
|
</xsl:choose>
|
||||||
<form method="post" action="/admin/moveclients.xsl">
|
<form method="post" action="/admin/moveclients.xsl">
|
||||||
<label for="moveto" class="hidden">
|
Move from
|
||||||
Move from <code><xsl:value-of select="current_source" /></code> to
|
<code><xsl:value-of select="current_source" /></code>
|
||||||
</label>
|
to
|
||||||
<select name="destination" id="moveto">
|
<select name="destination" id="moveto">
|
||||||
<xsl:for-each select="source">
|
<xsl:for-each select="source">
|
||||||
<option value="{@mount}">
|
<option value="{@mount}">
|
||||||
@ -36,6 +36,13 @@
|
|||||||
</option>
|
</option>
|
||||||
</xsl:for-each>
|
</xsl:for-each>
|
||||||
</select>
|
</select>
|
||||||
|
with direction
|
||||||
|
<select name="direction">
|
||||||
|
<option value="up">up</option>
|
||||||
|
<option value="down">down</option>
|
||||||
|
<option value="replace-current">replace</option>
|
||||||
|
<option value="replace-all">forget and replace</option>
|
||||||
|
</select>
|
||||||
<input type="hidden" name="mount" value="{current_source}" />
|
<input type="hidden" name="mount" value="{current_source}" />
|
||||||
 
|
 
|
||||||
<input type="submit" value="Move listeners" />
|
<input type="submit" value="Move listeners" />
|
||||||
|
@ -716,6 +716,7 @@ static void command_move_clients(client_t *client,
|
|||||||
{
|
{
|
||||||
const char *dest_source;
|
const char *dest_source;
|
||||||
const char *idtext = NULL;
|
const char *idtext = NULL;
|
||||||
|
const char *directiontext = NULL;
|
||||||
connection_id_t id;
|
connection_id_t id;
|
||||||
source_t *dest;
|
source_t *dest;
|
||||||
char buf[255];
|
char buf[255];
|
||||||
@ -730,6 +731,8 @@ static void command_move_clients(client_t *client,
|
|||||||
} else {
|
} else {
|
||||||
idtext = NULL;
|
idtext = NULL;
|
||||||
}
|
}
|
||||||
|
COMMAND_OPTIONAL(client, "direction", directiontext);
|
||||||
|
|
||||||
ICECAST_LOG_DEBUG("Done optional check (%d)", parameters_passed);
|
ICECAST_LOG_DEBUG("Done optional check (%d)", parameters_passed);
|
||||||
if (!parameters_passed) {
|
if (!parameters_passed) {
|
||||||
xmlDocPtr doc = admin_build_sourcelist(source->mount, client, response);
|
xmlDocPtr doc = admin_build_sourcelist(source->mount, client, response);
|
||||||
@ -766,7 +769,7 @@ static void command_move_clients(client_t *client,
|
|||||||
|
|
||||||
ICECAST_LOG_INFO("source is \"%s\", destination is \"%s\"", source->mount, dest->mount);
|
ICECAST_LOG_INFO("source is \"%s\", destination is \"%s\"", source->mount, dest->mount);
|
||||||
|
|
||||||
source_move_clients(source, dest, idtext ? &id : NULL);
|
source_move_clients(source, dest, idtext ? &id : NULL, navigation_str_to_direction(directiontext, NAVIGATION_DIRECTION_DOWN));
|
||||||
|
|
||||||
snprintf(buf, sizeof(buf), "Clients moved from %s to %s",
|
snprintf(buf, sizeof(buf), "Clients moved from %s to %s",
|
||||||
source->mount, dest_source);
|
source->mount, dest_source);
|
||||||
|
@ -36,6 +36,24 @@ const char * navigation_direction_to_str(navigation_direction_t dir)
|
|||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
navigation_direction_t navigation_str_to_direction(const char *str, navigation_direction_t def)
|
||||||
|
{
|
||||||
|
if (!str || !*str)
|
||||||
|
return def;
|
||||||
|
|
||||||
|
if (strcasecmp(str, "up") == 0) {
|
||||||
|
return NAVIGATION_DIRECTION_UP;
|
||||||
|
} else if (strcasecmp(str, "down") == 0) {
|
||||||
|
return NAVIGATION_DIRECTION_DOWN;
|
||||||
|
} else if (strcasecmp(str, "replace_current") == 0 || strcasecmp(str, "replace-current") == 0) {
|
||||||
|
return NAVIGATION_DIRECTION_REPLACE_CURRENT;
|
||||||
|
} else if (strcasecmp(str, "replace_all") == 0 || strcasecmp(str, "replace-all") == 0) {
|
||||||
|
return NAVIGATION_DIRECTION_REPLACE_ALL;
|
||||||
|
} else {
|
||||||
|
return def;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
static int mount_identifier_compare__for_tree(void *compare_arg, void *a, void *b)
|
static int mount_identifier_compare__for_tree(void *compare_arg, void *a, void *b)
|
||||||
{
|
{
|
||||||
const char *id_a, *id_b;
|
const char *id_a, *id_b;
|
||||||
|
@ -30,6 +30,7 @@ typedef enum {
|
|||||||
REFOBJECT_FORWARD_TYPE(mount_identifier_t);
|
REFOBJECT_FORWARD_TYPE(mount_identifier_t);
|
||||||
|
|
||||||
const char * navigation_direction_to_str(navigation_direction_t dir);
|
const char * navigation_direction_to_str(navigation_direction_t dir);
|
||||||
|
navigation_direction_t navigation_str_to_direction(const char *str, navigation_direction_t def);
|
||||||
|
|
||||||
void navigation_initialize(void);
|
void navigation_initialize(void);
|
||||||
void navigation_shutdown(void);
|
void navigation_shutdown(void);
|
||||||
|
Loading…
Reference in New Issue
Block a user