kissdx server => LIST VIDEO ||\n <= directory1|0001 directory1|1|\n (Last 1 means that's a directory) <= movie1|movie1|0|\n (Last 0 digit means a media file) <= EOL\n ./kissdx -s LIST_VIDEO List Video (PCLINK) ./kissdx -s lvi List Video (PCLINK) ./kissdx -s lpi List Picture (PCLINK) ./kissdx -s lau List Audio (PCLINK) ========================================================== === ADMCMD PROTOCOL / ACTION ======= TCP:8003 => kissdx server ================================================================== ./kissdx -s RELOAD_CONFIG Engine reload configuration file ./kissdx -s rlc Configuration reload : shortcut command v1 => RELOAD_CONFIG + close connection v2 => ADMCMD_ACTION|RELOAD_CONFIG|\n <= ADMCMD_ACK|RELOAD_CONFIG|OK\n <= (or) ADMCMD_ACK|RELOAD_CONFIG|ERR Error message\n <= EOL|\n <= close connection by kissdx server [RELOAD_CONFIG Client]kissdx.c => cmdclient.c:deliver_admcmd_reloadconfig => ConnectionId= GetTcpConnection(ADMCMD); => SendTcp ( ConnectionId, ADMCMD_ACTION|ADMCMD_RELOADCONFIG|\n ); if failed, close connection and log => ReceiveTcp ( ConnectionId, (*char) AckResponse ); [RELOAD_CONFIG Server]kissdx.c => cmdserver.c:handle_admincommand_reloadconfig => ParseConf and PrintConfInLog => Reception and treatment in the master daemon => ParseConf and PrintConfInLog => SendTcp (ADMCMD_ACK|ADMCMD_RELOADCONFIG|ADMCMD_SUCC or FAIL (If any error) => Connection close ========================================================== ./kissdx -s STOP Stop the engine and let current played media finish (Shortcut: s) ./kissdx -s s Stop : shortcut command v1 => STOP + close connection v2 => ADMCMD_ACTION|STOP|\n <= ADMCMD_ACK|STOP|OK\n <= EOL|\n Cst: ADMCMD_ACTION + ADMCMD_ACK + ADMCMD_STOP + ADMCMD_SUCC(OK) + ADMCMD_FAIL(ERR) ================================================================== ./kissdx -s FORCESTOP Stop immediatly the engine and all current played media (Shortcut: frs) ./kissdx -s frs Stop immediatly : shortcut command v1 => FORCESTOP + close connection v2 => ADMCMD_ACTION|STOP|\n <= ADMCMD_ACK|STOP|OK\n <= EOL||\n ================================================================== ./kissdx -s GET_TXT_CONFIG Return current configuration in a TEXT format ./kissdx -s gtc Shortcut of GET_TXT_CONFIG => GET_TXT_CONFIG ||\n <= set of string ended by \n finally close the connection ================================================================== ./kissdx -s v1 Set Verbose log level to 1 (1:error 2:warning 3:protocol 4:info 5:debug) ./kissdx -s verror => ADMCMD_SET|CFG_VERBOSE_LOG_LEVEL|[1..5]\n or => ADMCMD_SET|CFG_VERBOSE_LOG_LEVEL|ERROR.WARNING.PROTOCOL.INFORMATION.DEBUG or any first letter\n <= ADMCMD_ACK|CFG_VERBOSE_LOG_LEVEL|ADMCMD_SUCC\n or <= ADMCMD_ACK|CFG_VERBOSE_LOG_LEVEL|ADMCMD_FAIL msg\n =================================================================== == GETTER / SETTER ===== (Documented in ./kissdx -vh) ================== "ADMCMD_SET|CONFIGNAME|VALUE1 VAL2 VAL3\n" "ADMCMD_GET|CONFIGNAME|OPTION1 OPT2 OPT2\n" Option in {TXT,KML,XML}=(Output Format) Some admin command for developpers: -s Setter & Getter ----------------------------------- -s {verror;vwarn;vinfo;vproto;vdebug;v1..v5} Set VerboseLogLevel -s {slisthidden.yes;slisthidden.no;} Set ListHiddenEntry Yes/No -s {scal.yes;scal.no;} Set ConfigAutoLoad Yes/No -s {sdsn.yes;sdsn.no;} Set DisplaySequenceNumber Yes/No -s {gksv;gksvd} Get KissdxServerVersion; KissdxServerVersionDate -s {gverbose;glisthidden} Get VerboseLogLevel; ListHiddenEntry -s {gcal;gdsn} Get ConfigAutoLoad; DisplaySequenceNumber => ADMCMD_GET|LIST_HIDDEN_ENTRY|\n <= ADMCMD_ACK|LIST_HIDDEN_ENTRY|Value\n <= EOL||\n => ADMCMD_SET|CONFIG_AUTOLOAD|YES <= ADMCMD_ACK|CONFIG_AUTOLOAD|OK YES ==================================================================== General Tips ============== * Ending \r\n is optionnal and useless: Just after the socket read, a step of removing ending \r & \n occurs. * kissdx server close socket once an admin command is served. Long conversation is not enable at the moment. Chaining of C code part ================== [RELOAD_CONFIG]kissdx.c => cmdclient.c:deliver_admcmd => TcpSend("RELOAD_CONFIG",8003,NoResponse); CloseConnection; [RELOAD_CONFIG Receiver]kissdx.c => cmdserver.c:handle_admincommand_reloadconfig => ParseConf and PrintConfInLog */ ?> Kissdx Web Admin - Work

kissdx administration - Prototype

>Home

method=post>

Execution log - Based on ADMCMD PROTOCOL
  "; echo " Requested : listhiddenentry = [".$_REQUEST['listhiddenentry']."]

"; // == Update Verbose Log Level == echo "Connecting to ".$KISSDXSRV; $sock = socket_create(AF_INET, SOCK_STREAM, SOL_TCP); socket_connect($sock,$KISSDXSRV, 8003); $length=4096; switch(socket_select($r = array($sock), $w = array($sock), $f = array($sock), 5)) { case 2: echo "[-] Connection Refused
"; break; case 0: echo "[-] Timeout\n"; break; case 1: // Connection accepted $length=4096; //$sent_cmd = "ADMCMD_ACTION|STOP|"; //$sent_cmd = "ADMCMD_ACTION|FORCESTOP|"; //$sent_cmd = "ADMCMD_ACTION|RELOAD_CONFIG|"; //$sent_cmd = "ADMCMD_ACTION|GET_TXT_CONFIG|"; echo "=> ".$sent_cmd; //$sent_cmd = "ADMCMD_GET|CONFIG_AUTOLOAD|"; echo "=> ".$sent_cmd; $sent_cmd = "ADMCMD_SET|VERBOSE_LOG_LEVEL|".$_REQUEST['verboseloglevel']; echo "=> ".$sent_cmd; socket_write ($sock, $sent_cmd, strlen ($sent_cmd)); // GET the response $recv = socket_read ($sock, $length, PHP_BINARY_READ); $recv = ereg_replace("\n", "\\n", $recv); // Replace \n to
for html output echo "
<=".$recv."
"; socket_close($sock); // (done earlier by kissdx server already) break; } // end switch // == Update List Hidden Entry == $sock = socket_create(AF_INET, SOCK_STREAM, SOL_TCP); socket_connect($sock,$KISSDXSRV, 8003); $sent_cmd = "ADMCMD_SET|LIST_HIDDEN_ENTRY|".$_REQUEST['listhiddenentry']; echo "=> ".$sent_cmd; $readyFD= socket_select($r = array($sock), $w = array($sock), $f = array($sock), 5); if ($readyFD==1) { socket_write ($sock, $sent_cmd, strlen ($sent_cmd)); $recv = socket_read ($sock, $length, PHP_BINARY_READ);socket_close($sock); $recv = ereg_replace("\n", "\\n", $recv); echo "
<= ".$recv." "; } else { echo "do not get a new socket".$readyFD;} //================================================================= if ( $Wanted_Test_LOAD==1) { //== Load test == echo "
LOAD 01 "; $sock = socket_create(AF_INET, SOCK_STREAM, SOL_TCP); socket_connect($sock,$KISSDXSRV, 8003); $readyFD= socket_select($r = array($sock), $w = array($sock), $f = array($sock), 5); if ($readyFD==1) { socket_write ($sock, $sent_cmd, strlen ($sent_cmd)); $recv = socket_read ($sock, $length, PHP_BINARY_READ);socket_close($sock); $recv = ereg_replace("\n", "\\n", $recv); echo "- ".$recv." "; } else { echo "do not get a new socket".$readyFD;} echo "
LOAD 02 "; $sock = socket_create(AF_INET, SOCK_STREAM, SOL_TCP); socket_connect($sock,$KISSDXSRV, 8003); $readyFD= socket_select($r = array($sock), $w = array($sock), $f = array($sock), 5); if ($readyFD==1) { socket_write ($sock, $sent_cmd, strlen ($sent_cmd)); $recv = socket_read ($sock, $length, PHP_BINARY_READ);socket_close($sock); $recv = ereg_replace("\n", "\\n", $recv); echo "- ".$recv." "; } else { echo "do not get a new socket".$readyFD;} echo "
LOAD 03 "; $sock = socket_create(AF_INET, SOCK_STREAM, SOL_TCP); socket_connect($sock,$KISSDXSRV, 8003); $readyFD= socket_select($r = array($sock), $w = array($sock), $f = array($sock), 5); if ($readyFD==1) { socket_write ($sock, $sent_cmd, strlen ($sent_cmd)); $recv = socket_read ($sock, $length, PHP_BINARY_READ);socket_close($sock); $recv = ereg_replace("\n", "\\n", $recv); echo "- ".$recv." "; } else { echo "do not get a new socket".$readyFD;} $readyFD= socket_select($r = array($sock), $w = array($sock), $f = array($sock), 5); if ($readyFD==1) { socket_write ($sock, $sent_cmd, strlen ($sent_cmd)); $recv = socket_read ($sock, $length, PHP_BINARY_READ);socket_close($sock); $recv = ereg_replace("\n", "\\n", $recv); echo "- ".$recv." "; } else { echo "do not get a new socket".$readyFD;} echo "
LOAD 04 "; $sock = socket_create(AF_INET, SOCK_STREAM, SOL_TCP); socket_connect($sock,$KISSDXSRV, 8003); $readyFD= socket_select($r = array($sock), $w = array($sock), $f = array($sock), 5); if ($readyFD==1) { socket_write ($sock, $sent_cmd, strlen ($sent_cmd)); $recv = socket_read ($sock, $length, PHP_BINARY_READ);socket_close($sock); $recv = ereg_replace("\n", "\\n", $recv); echo "- ".$recv." "; } else { echo "do not get a new socket".$readyFD;} echo "
LOAD 05 "; $sock = socket_create(AF_INET, SOCK_STREAM, SOL_TCP); socket_connect($sock,$KISSDXSRV, 8003); $readyFD= socket_select($r = array($sock), $w = array($sock), $f = array($sock), 5); if ($readyFD==1) { socket_write ($sock, $sent_cmd, strlen ($sent_cmd)); $recv = socket_read ($sock, $length, PHP_BINARY_READ);socket_close($sock); $recv = ereg_replace("\n", "\\n", $recv); echo "- ".$recv." "; } else { echo "do not get a new socket".$readyFD;} echo "
LOAD 06 "; $sock = socket_create(AF_INET, SOCK_STREAM, SOL_TCP); socket_connect($sock,$KISSDXSRV, 8003); $readyFD= socket_select($r = array($sock), $w = array($sock), $f = array($sock), 5); if ($readyFD==1) { socket_write ($sock, $sent_cmd, strlen ($sent_cmd)); $recv = socket_read ($sock, $length, PHP_BINARY_READ);socket_close($sock); $recv = ereg_replace("\n", "\\n", $recv); echo "- ".$recv." "; } else { echo "do not get a new socket".$readyFD;} echo "
LOAD 07 "; $sock = socket_create(AF_INET, SOCK_STREAM, SOL_TCP); socket_connect($sock,$KISSDXSRV, 8003); $readyFD= socket_select($r = array($sock), $w = array($sock), $f = array($sock), 5); if ($readyFD==1) { socket_write ($sock, $sent_cmd, strlen ($sent_cmd)); $recv = socket_read ($sock, $length, PHP_BINARY_READ);socket_close($sock); $recv = ereg_replace("\n", "\\n", $recv); echo "- ".$recv." "; } else { echo "do not get a new socket".$readyFD;} echo "
LOAD 08 "; $sock = socket_create(AF_INET, SOCK_STREAM, SOL_TCP); socket_connect($sock,$KISSDXSRV, 8003); $readyFD= socket_select($r = array($sock), $w = array($sock), $f = array($sock), 5); if ($readyFD==1) { socket_write ($sock, $sent_cmd, strlen ($sent_cmd)); $recv = socket_read ($sock, $length, PHP_BINARY_READ);socket_close($sock); $recv = ereg_replace("\n", "\\n", $recv); echo "- ".$recv." "; } else { echo "do not get a new socket".$readyFD;} echo "
LOAD 09 "; $sock = socket_create(AF_INET, SOCK_STREAM, SOL_TCP); socket_connect($sock,$KISSDXSRV, 8003); $readyFD= socket_select($r = array($sock), $w = array($sock), $f = array($sock), 5); if ($readyFD==1) { socket_write ($sock, $sent_cmd, strlen ($sent_cmd)); $recv = socket_read ($sock, $length, PHP_BINARY_READ);socket_close($sock); $recv = ereg_replace("\n", "\\n", $recv); echo "- ".$recv." "; } else { echo "do not get a new socket".$readyFD;} echo "
LOAD 10 "; $sock = socket_create(AF_INET, SOCK_STREAM, SOL_TCP); socket_connect($sock,$KISSDXSRV, 8003); $readyFD= socket_select($r = array($sock), $w = array($sock), $f = array($sock), 5); if ($readyFD==1) { socket_write ($sock, $sent_cmd, strlen ($sent_cmd)); $recv = socket_read ($sock, $length, PHP_BINARY_READ);socket_close($sock); $recv = ereg_replace("\n", "\\n", $recv); echo "- ".$recv." "; } else { echo "do not get a new socket".$readyFD;} } // wanted load test } // end if _REQUEST value exist //================================================================= ?>


Configuration change request
 Verbose Log Level   
 List Hidden Entry   


VIA PCLINK PROTOCOL

"; $sock = socket_create(AF_INET, SOCK_STREAM, SOL_TCP); //socket_set_nonblock($sock); socket_connect($sock,$KISSDXSRV, 8000); //socket_set_block($sock); switch(socket_select($r = array($sock), $w = array($sock), $f = array($sock), 5)) { case 2: // Connection refused echo "[-] Connection Refused\n"; break; case 1: // Connection accepted echo "[+] Connected\n"; $length=4096; $sent_cmd = "LIST VIDEO ||\r\n"; echo ">> Send '$sent_cmd'\n"; socket_write ($sock, $sent_cmd, strlen ($sent_cmd)); $recv = socket_read ($sock, $length, PHP_BINARY_READ); $recv = ereg_replace("\n", "\\n
", $recv); echo "
=== Reception ===
"; echo $recv; echo "
=============
"; break; case 0: // Connection timeout echo "[-] Timeout\n"; break; } *********************************************************** */ ?>