mirror of
https://gitlab.xiph.org/xiph/icecast-server.git
synced 2024-12-04 14:46:30 -05:00
Feature: Support moving individual clients between mounts
This commit is contained in:
parent
81bd709acc
commit
2bf77f2012
@ -36,7 +36,11 @@
|
||||
<td><xsl:value-of select="role" /></td>
|
||||
<td><xsl:value-of select="connected" /></td>
|
||||
<td><xsl:value-of select="useragent" /></td>
|
||||
<td><a href="killclient.xsl?mount={../@mount}&id={id}">Kick</a></td>
|
||||
<td>
|
||||
<a href="killclient.xsl?mount={../@mount}&id={id}">Kick</a>
|
||||
 
|
||||
<a href="moveclients.xsl?mount={../@mount}&id={id}">Move</a>
|
||||
</td>
|
||||
</tr>
|
||||
</xsl:for-each>
|
||||
</tbody>
|
||||
|
@ -17,7 +17,15 @@
|
||||
</xsl:call-template>
|
||||
<xsl:choose>
|
||||
<xsl:when test="source">
|
||||
<p>Choose the mountpoint to which you want to move the listeners to:</p>
|
||||
<xsl:choose>
|
||||
<xsl:when test="param-id">
|
||||
<input type="hidden" name="id" value="{param-id}" />
|
||||
<p>Choose the mountpoint to which you want to move the listener to:</p>
|
||||
</xsl:when>
|
||||
<xsl:otherwise>
|
||||
<p>Choose the mountpoint to which you want to move the listeners to:</p>
|
||||
</xsl:otherwise>
|
||||
</xsl:choose>
|
||||
<form method="post" action="moveclients.xsl">
|
||||
<label for="moveto" class="hidden">
|
||||
Move from <code><xsl:value-of select="current_source" /></code> to
|
||||
|
13
src/admin.c
13
src/admin.c
@ -617,6 +617,8 @@ static void command_move_clients(client_t *client,
|
||||
admin_format_t response)
|
||||
{
|
||||
const char *dest_source;
|
||||
const char *idtext = NULL;
|
||||
connection_id_t id;
|
||||
source_t *dest;
|
||||
xmlDocPtr doc;
|
||||
xmlNodePtr node;
|
||||
@ -627,9 +629,18 @@ static void command_move_clients(client_t *client,
|
||||
if((COMMAND_OPTIONAL(client, "destination", dest_source))) {
|
||||
parameters_passed = 1;
|
||||
}
|
||||
if ((COMMAND_OPTIONAL(client, "id", idtext))) {
|
||||
id = atoi(idtext);
|
||||
} else {
|
||||
idtext = NULL;
|
||||
}
|
||||
ICECAST_LOG_DEBUG("Done optional check (%d)", parameters_passed);
|
||||
if (!parameters_passed) {
|
||||
doc = admin_build_sourcelist(source->mount);
|
||||
if (idtext) {
|
||||
xmlNodePtr root = xmlDocGetRootElement(doc);
|
||||
xmlNewTextChild(root, NULL, XMLSTR("param-id"), XMLSTR(idtext));
|
||||
}
|
||||
admin_send_response(doc, client, response,
|
||||
MOVECLIENTS_HTML_REQUEST);
|
||||
xmlFreeDoc(doc);
|
||||
@ -659,7 +670,7 @@ static void command_move_clients(client_t *client,
|
||||
node = admin_build_rootnode(doc, "iceresponse");
|
||||
xmlDocSetRootElement(doc, node);
|
||||
|
||||
source_move_clients(source, dest, NULL);
|
||||
source_move_clients(source, dest, idtext ? &id : NULL);
|
||||
|
||||
snprintf(buf, sizeof(buf), "Clients moved from %s to %s",
|
||||
source->mount, dest_source);
|
||||
|
Loading…
Reference in New Issue
Block a user