CC-3430: Live Stream: Admin should be able to kick out the source connection
- Clicking a button on UI triggers sending msg to pypo, which will lead running 'kick' command in liquidsoap.
This commit is contained in:
parent
2ee4b227fc
commit
c5c9fd7ba8
|
@ -7,6 +7,7 @@ class DashboardController extends Zend_Controller_Action
|
||||||
{
|
{
|
||||||
$ajaxContext = $this->_helper->getHelper('AjaxContext');
|
$ajaxContext = $this->_helper->getHelper('AjaxContext');
|
||||||
$ajaxContext->addActionContext('switch-source', 'json')
|
$ajaxContext->addActionContext('switch-source', 'json')
|
||||||
|
->addActionContext('disconnect-source', 'json')
|
||||||
->initContext();
|
->initContext();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -15,9 +16,17 @@ class DashboardController extends Zend_Controller_Action
|
||||||
// action body
|
// action body
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public function disconnectSourceAction(){
|
||||||
|
$request = $this->getRequest();
|
||||||
|
|
||||||
|
$sourcename = $request->getParam('sourcename');
|
||||||
|
$data = array("sourcename"=>$sourcename);
|
||||||
|
Application_Model_RabbitMq::SendMessageToPypo("disconnect_source", $data);
|
||||||
|
}
|
||||||
|
|
||||||
public function switchSourceAction(){
|
public function switchSourceAction(){
|
||||||
$request = $this->getRequest();
|
$request = $this->getRequest();
|
||||||
$baseUrl = $request->getBaseUrl();
|
|
||||||
$sourcename = $this->_getParam('sourcename');
|
$sourcename = $this->_getParam('sourcename');
|
||||||
$current_status = $this->_getParam('status');
|
$current_status = $this->_getParam('status');
|
||||||
$change_status_to = "on";
|
$change_status_to = "on";
|
||||||
|
|
|
@ -33,7 +33,7 @@
|
||||||
</li>
|
</li>
|
||||||
<li>
|
<li>
|
||||||
<div id="live_dj_div">
|
<div id="live_dj_div">
|
||||||
<?php if($this->isAdmin){?><a id="live_dj_connection" class="source-kick-button" onclick="kickSource(this)"></a><?php }?>
|
<?php if($this->isAdmin){?><a id="live_dj" class="source-kick-button" onclick="kickSource(this)"></a><?php }?>
|
||||||
Live DJ
|
Live DJ
|
||||||
<div class="line-to-on-air off"></div>
|
<div class="line-to-on-air off"></div>
|
||||||
<a href="#" id="live_dj" class="source-switch-button" onclick="<?php echo ($this->isAdmin)?"setSwitchListener(this);":"return false"?>"><span><?php echo $this->live_dj_switch?></span></a>
|
<a href="#" id="live_dj" class="source-switch-button" onclick="<?php echo ($this->isAdmin)?"setSwitchListener(this);":"return false"?>"><span><?php echo $this->live_dj_switch?></span></a>
|
||||||
|
@ -42,7 +42,7 @@
|
||||||
</li>
|
</li>
|
||||||
<li>
|
<li>
|
||||||
<div id="master_dj_div">
|
<div id="master_dj_div">
|
||||||
<?php if($this->isAdmin){?><a id="master_dj_connection" class="source-kick-button" onclick="kickSource(this)"></a><?php }?>
|
<?php if($this->isAdmin){?><a id="master_dj" class="source-kick-button" onclick="kickSource(this)"></a><?php }?>
|
||||||
Master DJ
|
Master DJ
|
||||||
<div class="line-to-on-air off"></div>
|
<div class="line-to-on-air off"></div>
|
||||||
<a href="#" id="master_dj" class="source-switch-button" onclick="<?php echo ($this->isAdmin)?"setSwitchListener(this);":"return false"?>"><span><?php echo $this->master_dj_switch?></span></a>
|
<a href="#" id="master_dj" class="source-switch-button" onclick="<?php echo ($this->isAdmin)?"setSwitchListener(this);":"return false"?>"><span><?php echo $this->master_dj_switch?></span></a>
|
||||||
|
|
|
@ -422,7 +422,7 @@ select {
|
||||||
display:block;
|
display:block;
|
||||||
}
|
}
|
||||||
|
|
||||||
.source-connection {
|
.source-kick-button {
|
||||||
border:1px solid #242424;
|
border:1px solid #242424;
|
||||||
color:#fff;
|
color:#fff;
|
||||||
min-height:14px;
|
min-height:14px;
|
||||||
|
@ -432,6 +432,11 @@ select {
|
||||||
float: left;
|
float: left;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.source-kick-button:hover{
|
||||||
|
cursor:pointer;
|
||||||
|
background-color:#FFFFFF;
|
||||||
|
}
|
||||||
|
|
||||||
.line-to-switch {
|
.line-to-switch {
|
||||||
float: right;
|
float: right;
|
||||||
width: 10px;
|
width: 10px;
|
||||||
|
|
|
@ -363,7 +363,14 @@ function setSwitchListener(ele){
|
||||||
}
|
}
|
||||||
|
|
||||||
function kickSource(ele){
|
function kickSource(ele){
|
||||||
|
var sourcename = $(ele).attr('id')
|
||||||
|
var source_connection = $(ele).parent().find(".line-to-switch").attr("class")
|
||||||
|
if(source_connection.indexOf("off") > 0){
|
||||||
|
alert("No source is connected to this input.")
|
||||||
|
return false
|
||||||
|
}else{
|
||||||
|
$.get("/Dashboard/disconnect-source/format/json/sourcename/"+sourcename)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
var stream_window = null;
|
var stream_window = null;
|
||||||
|
|
|
@ -95,13 +95,33 @@ class PypoFetch(Thread):
|
||||||
elif command == 'switch_source':
|
elif command == 'switch_source':
|
||||||
self.logger.info("switch_on_source show command received...")
|
self.logger.info("switch_on_source show command received...")
|
||||||
self.switch_source(m['sourcename'], m['status'])
|
self.switch_source(m['sourcename'], m['status'])
|
||||||
|
elif command == 'disconnect_source':
|
||||||
|
self.logger.info("disconnect_on_source show command received...")
|
||||||
|
self.disconnect_source(m['sourcename'])
|
||||||
except Exception, e:
|
except Exception, e:
|
||||||
import traceback
|
import traceback
|
||||||
top = traceback.format_exc()
|
top = traceback.format_exc()
|
||||||
self.logger.error('Exception: %s', e)
|
self.logger.error('Exception: %s', e)
|
||||||
self.logger.error("traceback: %s", top)
|
self.logger.error("traceback: %s", top)
|
||||||
self.logger.error("Exception in handling Message Handler message: %s", e)
|
self.logger.error("Exception in handling Message Handler message: %s", e)
|
||||||
|
|
||||||
|
def disconnect_source(self,sourcename):
|
||||||
|
self.logger.debug('Disconnecting source: %s', sourcename)
|
||||||
|
command = ""
|
||||||
|
if(sourcename == "master_dj"):
|
||||||
|
command += "master_harbor.kick\n"
|
||||||
|
elif(sourcename == "live_dj"):
|
||||||
|
command += "live_dj_harbor.kick\n"
|
||||||
|
|
||||||
|
try:
|
||||||
|
tn = telnetlib.Telnet(LS_HOST, LS_PORT)
|
||||||
|
tn.write(command)
|
||||||
|
tn.write('exit\n')
|
||||||
|
tn.read_all()
|
||||||
|
except Exception, e:
|
||||||
|
self.logger.debug(e)
|
||||||
|
self.logger.debug('Could not connect to liquidsoap')
|
||||||
|
|
||||||
def switch_source(self, sourcename, status):
|
def switch_source(self, sourcename, status):
|
||||||
self.logger.debug('Switching source: %s to "%s" status', sourcename, status)
|
self.logger.debug('Switching source: %s to "%s" status', sourcename, status)
|
||||||
command = "streams."
|
command = "streams."
|
||||||
|
|
|
@ -77,6 +77,9 @@ class PypoMessageHandler(Thread):
|
||||||
elif command == 'switch_source':
|
elif command == 'switch_source':
|
||||||
self.logger.info("switch_source command received...")
|
self.logger.info("switch_source command received...")
|
||||||
self.pypo_queue.put(message)
|
self.pypo_queue.put(message)
|
||||||
|
elif command == 'disconnect_source':
|
||||||
|
self.logger.info("disconnect_source command received...")
|
||||||
|
self.pypo_queue.put(message)
|
||||||
elif command == 'update_recorder_schedule':
|
elif command == 'update_recorder_schedule':
|
||||||
self.recorder_queue.put(message)
|
self.recorder_queue.put(message)
|
||||||
elif command == 'cancel_recording':
|
elif command == 'cancel_recording':
|
||||||
|
|
Loading…
Reference in New Issue