Kissdx Administration control command 01

From KiSS DP 558 STAGE2 WiKi
Jump to: navigation, search

Objective of "Admin/Control Command"

Release 0.13.10a of kissdx is an self managed daemon in charge of streaming data to KiSS player. The objective of 'Admin' or 'Control' command is to manage a running kissdx daemon remotely: Stop, Reload config (after changing kissdx.conf), etc. ... [edit] How does kissdx internal design enable quick response to KiSS player streaming request

Each request received from a KiSS player is categorised as "heavy" or "light". Heavy request is treated via a child fork process (KML, PCLINK). To limit consuming unecessary time in creating fork environement, the "light" request are treated directly in the daemon part of code.


Each time KiSS player and kissdx server exchange information, a connection is used in TCP (not in UDP). Various type of connections have different timelifes :

   Request of media streaming (music,film) are long connection
   Request of media streaming (picture) are medium connection
   Request of library browsing are short connection 


[edit] Network topology - TCP Listener

/----------\ /----------------------------------\ | kissdx | | KiSS player | | daemon | <== Request UDP:8000 <== ARE_YOU_KISS_PCLINK_SERVER? | Menu:Searching PCLINK host | | daemon | ==> Response UDP:8000 ==== HOSTNAME ===============================> | (identification of mediacenter) | | | | | | daemon | <== Request PCLINK:8000 <== GET, SIZE, LIST, ACTION1, ACTION2 | Action from remote control | | (fork) | ==> Response PCLINK:8000 ==== MEDIA or BROWSING LIRARY ============> | (streaming video,music,picture) | | | | | | daemon | <== Request KML:8888 <== GET index.kml | Action from remote control | | (fork) | ==> Response KML:8888 ==== Any KML content page ================> | (browsing like web does) | | | | | | | \----------------------------------/ | | | | /--------------------------------\ | daemon | <== Request ADMCMD:8008 <== STOP, FORCESTOP, RELOAD_CONFIG,STATUS... | kissdx or any ADMCMD client | | (fork) | ==> Response ADMCMD:8008 ==========================================> | administration information | | | | | \----------/ \--------------------------------/

Target administration command line

kissdx --send COMMAND_ACTION --mediacenter MediaCenterFullHostName --port PORT_NUMBER kissdx -v -s STOP -m MediacenterName.home.fr -p 8008

[edit] Architecture of kissdx admin command service

Administration command are sent locally or remotly to a admin port listener :(default 8008)

Tips : Maybe a identity control is needed to prevent kissdx reception of STOP from corrupted client

   Discussion regarding : Specification for Command Protocol in SVN :[1] 

Client side is a autonome instance of kissdx that execute a send command over TCP/IP from master process (no child, fork is needed) because this instance focus only on this administration action and do not provide media through streaming.

Server side is more tricky because streaming action is continiously running. Server side process is running in a master daemon and trigger a child (fork) to treat long TCP request received. Server side process (daemon) accept to execute administrative task only if it's a short time consuming.

How does communication exist between server 'Daemon' and 'Child' ? - Daemon and child will not exchange through TCP/IP as it's too fat for so close process. - Daemon and child exchange between "Local Named Socket" established once per daemon (like a TCP port specifique to this process)

The 'hidden' feature invoke a mecanism of changing kissdx configuration. Analysis of its internal mecanism may be a model for admin command handling

Feature HIDDEN (existing): KiSS player browses library, selects hidden file in image folder >> KiSS (when selecting the 'hidden' image, send a TCP request to kissdx >> Daemon.TCP.Request opens a child fork and treat PCLINK exchange, detects HIDDEN feature request

  (no lock on Daemon)(sending an image is a long process)

>> >> Child open a Local Named Socket (Local Command) to tell back Daemon to treat this HIDDEN feature >> >> >> Daemon.LocalCommand receives a command HIDDEN (not time consuming action) and treat it Conclusion: a go and return between Daemon and child needed due to PCLINK transport of 'Hidden' request Each PCLINK request is calibrated as 'long' connection and trigger the creation of a child dedicated to answer it

RELOAD_CONFIG (proposal on HIDDEN model): kissdx client send a TCP:8008 RELOAD_CONFIG request Considering RELOAD_CONFIG as a 'long' connection, a child may be trigger to treat the request >> Daemon.TCP.Request opens a child fork and treat ADMCMD exchange, detects RELOAD_CONFIG feature request

  (no lock on Daemon)

>> >> Child open a Local Named Socket (Local Command) to tell Daemon to treat this RELOAD_CONFIG feature >> >> >> Daemon.LocalCommand receives a command RELOAD_CONFIG (not time consuming action) and treat it

Question : Should we implement RELOAD_CONFIG directly in Daemon with no use of child ? Based on the fact that a double invocation of Daemon process for short admin command execution is a waste of resource/time.

Implement in child : Avoid Daemon to treat an admin command and keep it focus on incoming streaming request Implement in daemon: In fine, what else the mecanism, the command RELOAD_CONFIG is treated in Daemon process The fact : Only a parsing section could be included in Daemon process

  And depending on the categorisation of the request (long / short), a child fork may be used

Proposition to treat administration command in Daemon :

STOP (e.q. signal(SIGTERM)), FORCESTOP and RELOAD_CONFIG (e.q. parse_config()) are identified in Daemon

 and treated without a fork mecanism, because they are non resource consuming mecanism.

Consistency with rest of kissdx code :

Existing part of code already apply this philosophy of "quick action are treated in daemon": The UDP broadcasting of KiSS player is treated in daemon via function UDP.Handle.

[edit] kissdx STOP - FORCESTOP command design

Usual status of kissdx is streaming media to KiSS players. A single daemon and multiple child to stream media. At home, the KiSS player number are reduced and child stream are limited. In an hotel type of media broadcast, the number of child may be larger.

The end user impact of a 'Stop' command invoked on kissdx, may be of two types:

   STOP : target = the master daemon : Current streamings are continuing, but no more request are accepted
   FORCESTOP : target = all process of kissdx : All current streaming child are stopped and no more request are accepted. 

In which case, do you need the usage of kissdx STOP or FORCESTOP command ?

   You will need the command STOP in case of a configuration change or installation of new release of kissdx ....

In this case, the multiple KiSS player connected to your server should not be disturbed. In fact, it's the child (the copy of daemon) in memory that serves actually the media to KiSS player. Thus, the current streaming child may survive as they do not depend on anything else than source media. The running code is in memory. The code of kissdx binaries on disk may change without interference with current streaming.

   You will need the command FORCESTOP in case of emergency situation to stop instantly everything 

FORCESTOP is a drastic invocation, due to the instantly stop of any streaming with end user client. KiSS players will display an error as they expect their media to be continiously streamed up to the end of these one. Emergency context may need those behavior. Deep reorganisation of file system hosting media source, or complete reorganisation may need a not any more access to media situation as a prerequisite. [edit] kissdx STOP - FORCESTOP Implementation design

STOP command implementation

STOP action should only affect the master daemon and keep alive current streaming child. On daemon STOP command reception, send a gracefull SIGTERM signal to kissdx (daemon pid : getpid()) kill(daemon_pid, SIGTERM);

 This way, classical already existing procedure of shutdown is reused (remove temp file, log ...)

FORCESTOP command implementation

On daemon FORCESTOP command reception, send a gracefull SIGTERM to any of kissdx process group // if kill(pid == 0) => All processes in the same process group as the sender. kill(0, SIGTERM); This will include the master daemon and all the child already created

Lecture GNU C kill() kill(daemon_pid,SIGTERM) / http://www.delorie.com/gnu/docs/glibc/libc_501.html

[edit] kissdx.conf - new section - Adminstration command

  1. Administration server settings: listen for request on tcp port 8008 by default
  2. Administration server is not activated by default for security reasons
  3. adminserver_port = 8008
  4. adminserver_enable = yes / no

Directive 'adminserver_port' set the listing port for administation server. Default value is 8008

Directive 'adminserver_enable' activate the adminstration server Default value is no ( for security reason : the user tell explicitly what service to open)

[edit] function chaining for admin command

Client sending :

   terminal command line : kissdx -s STOP -m MediacenterName.home.fr
   kissdx.c: main().command_line_option_parsing, fork any admin command to perform
   kissdx.c: perform_admcmd_stop() : send tcp command stop, wait for confirmation, close socket 

Server reception (in kissdx existing standard): based on pclink chaining ...

   kissdx.c: main() : do_daemon() : receive tcp request and trigger handle_request()
   connection.c: handle_request() : do_recv and parse command: LIST => handle_list(), GET => handle_get(), SIZE => handle_size()
   connection.c: get information and do_send() 

Server reception (admin command):

   kissdx.c: main().do_daemon() : receive and trigger handle_admin_command_request().
   connection.c: parse_admcmd_request() : do_recv and parse command: STOP => handle_admincommand_stop(),
   ... FORCESTOP => handle_admincommand_forcestop() ... RELOADCONFIG => handle_admincommand_reloadconfig()
   connection.c: handle_admcmd_stop() : confirm to client (acknowledge receipt) and perform action 

Current implementation (Revision 107) does not include the "acknowledge receipt" sent back to client.

[edit] Unit test post implementation

   Check of standard kissdx feature 

2007.03.15 = ok

Searching pclink server / select picture library / select a picture display/ back/retrieve in recently used / redisplay Music listening/ retrieve and played from recently Video viewing/ retrieve and played from recently

./kissdx -vc kissd.conf ==> running in verbose mode ./kissdx -s STOP -m 127.0.0.1 ==> kissdx stop gracefully ./kissdx -s STOP -m ubuntudev.home.fr ==> kissdx stop gracefully ./kissdx -s STOP ==> kissdx stop gracefully

./kissdx -vc kissd.conf ==> running in verbose mode and a CHILD is serving a long media (music or video) ./kissdx -s STOP ==> kissdx stop gracefully but terminal windows, does not give back the prompt (a CTRL C is needed to retrieve it) ???

2007.03.21 = Check clean end of child [edit] Start + stop of kissdx

Terminal 1 = ./kissdx -vc kissdx.conf

no client connection, no streaming serving currently
only one process in memory (ps aux|grep kissdx)

Terminal 2 = ./kissdx -s STOP Terminal 1 = Give back the prompt

Server : [ 6692] 2007-03-21 21:58:21 handle_admin_command: Read 4 bytes from socket 7 [ 6692] 2007-03-21 21:58:21 Admin command received: [STOP] [ 6688] 2007-03-21 21:58:21 Child process [ 6692] exited [ 6688] 2007-03-21 21:58:21 shutting down kissdx... Client : [ 6691] 2007-03-21 21:58:21 kissdx Administration Client with command [STOP][4] [ 6691] 2007-03-21 21:58:21 CLIENT Admin Command request  : STOP [ 6691] 2007-03-21 21:58:21 CLIENT Admin Mediacenter name  : 127.0.0.1 [ 6691] 2007-03-21 21:58:21 CLIENT Admin Mediacenter tcp.port: 8008 [ 6691] 2007-03-21 21:58:21 CLIENT Admin Sending command  : STOP


[edit] Start, stream and in same time stop of kissdx

Terminal 1 = ./kissdx -vc kissdx.conf

Streaming is served by a child
  olivier   6792  0.0  0.1   4176   932 pts/0    S+   22:02   0:00 ./kissdx -vc kissd.conf  (Daemon)
  olivier   6804  0.0  0.2   4204  1108 pts/0    S+   22:02   0:00 ./kissdx -vc kissd.conf  (Child)

Terminal 2 = ./kissdx -s STOP Terminal 1 = Streaming continue / Child receive the Give back the prompt ?? ... [ 6846] 2007-03-21 22:04:08 kissdx requested to terminate gracefuly [ 6846] 2007-03-21 22:04:08 DEBUG handle_admin_command: Daemon socket 7 [ 6846] 2007-03-21 22:04:08 DEBUG handle_admin_command: Daemon pid 6792 [ 6846] 2007-03-21 22:04:08 DEBUG handle_admin_command: Child pid 6846 [ 6846] 2007-03-21 22:04:08 handle_admin_command: Read 4 bytes from socket 7 [ 6846] 2007-03-21 22:04:08 Admin command received: [STOP] .... [ 6804] 2007-03-21 22:06:35 <-- [GET /home/olivier/Shared_Kiss/Musique/Lisa Ekdahl/Lisa Ekdahl - All.mp3| 5963942 20813 |oqmzybpxqdu1|] [ 6804] 2007-03-21 22:06:35 --> [20813 bytes at offset 5963942] [ 6804] 2007-03-21 22:06:35 do_recv 169: Reading from socket 7 [ 6804] 2007-03-21 22:06:42 do_recv 169: EOF on socket 7 [ 6804] 2007-03-21 22:06:42 do_recv 170: Reading from socket 7 [ 6804] 2007-03-21 22:06:42 do_recv 170: EOF on socket 7 [ 6804] 2007-03-21 22:06:42 ++++++++++ Closing B2B file [ 6804] 2007-03-21 22:06:42 KiSS closed connection . Terminal 1 does not give back the prompt Terminal 2 : ps aux

olivier@ubuntudev:~/eclipse/CommandProtocol$ ps aux | grep kiss
olivier   6997  0.0  0.1   2844   756 pts/1    R+   22:09   0:00 grep kiss

[edit] Streaming server stop properly according 'ps' command

SERVER [ 7123] 2007-03-21 22:14:04 do_recv 14: Reading from socket 7 [ 7123] 2007-03-21 22:14:06 do_recv 14: Read 110 bytes from socket 7 [ 7123] 2007-03-21 22:14:06 <-- [GET /home/olivier/Shared_Kiss/Musique/Lisa Ekdahl/{kissdx-B2B}Lisa Ekdahl.mp3| 364125 36362 |oqmzybpxqdu1|] [ 7123] 2007-03-21 22:14:06 --> [36362 bytes at offset 364125] from Lisa Ekdahl - All I really want is love (with Henri Salvador).mp3 [ 7123] 2007-03-21 22:14:06 do_recv 15: Reading from socket 7 [ 7127] 2007-03-21 22:14:06 kissdx admin command started connection [ 7127] 2007-03-21 22:14:06 kissdx requested to terminate gracefuly [ 7127] 2007-03-21 22:14:06 DEBUG handle_admin_command: Daemon socket 7 [ 7127] 2007-03-21 22:14:06 DEBUG handle_admin_command: Daemon pid 7112 [ 7127] 2007-03-21 22:14:06 DEBUG handle_admin_command: Child pid 7127 [ 7127] 2007-03-21 22:14:06 handle_admin_command: Read 4 bytes from socket 7 [ 7127] 2007-03-21 22:14:06 Admin command received: [STOP] [ 7112] 2007-03-21 22:14:06 shutting down kissdx...

interpretation: 7112 master daemon started and 7123 serving music ... 7112 master daemon receive a STOP, start a child 7127 to handle admin command (heritage of daemon pid and it's own pid) 7127 send a SIGTERM to 7112 that shutting down ? does 7127 closed himself properly ? >>> yes a ps -efl | grep Z does not detect zombies (SIGINT or SIGTERM is same effect) ? does 7123 closed himself properly at the end of media serving ?

==> A single ENTER key in terminal 1 give back the prompt (then maybe never mind for this tips) ==> ps does not detect any strange process not stopped  !

Seems child streaming music correctly closed at the end of music or stop on remote control [ 7123] 2007-03-21 22:23:22 KiSS closed connection


CLIENT olivier@ubuntudev:~/eclipse/CommandProtocol$ ./kissdx -vs STOP [ 7126] 2007-03-21 22:14:06 kissdx Administration Client with command [STOP][4] [ 7126] 2007-03-21 22:14:06 CLIENT Admin Command request  : STOP [ 7126] 2007-03-21 22:14:06 CLIENT Admin Mediacenter name  : 127.0.0.1 [ 7126] 2007-03-21 22:14:06 CLIENT Admin Mediacenter tcp.port: 8008 [ 7126] 2007-03-21 22:14:06 CLIENT Admin Sending command  : STOP ... continuing to serve the media ... olivier@ubuntudev:~/eclipse/CommandProtocol$ ps aux | grep kiss olivier 7123 0.0 0.2 4176 1048 pts/2 S 22:13 0:00 ./kissdx -v olivier 7198 0.0 0.1 2844 756 pts/1 R+ 22:16 0:00 grep kiss


[edit] First analysis (3 march 2007) before developping - System trace : "connection and child duration"

[16601] 2007-03-05 23:04:42 Received identity request from 10.39.10.5 [16601] 2007-03-05 23:04:42 Using config file /etc/kissdx.conf [16601] 2007-03-05 23:04:42 kissdx v0.13-10a, 2007-01-30 is now using the following configuration: [16601] 2007-03-05 23:04:42 audiopath = /home/media/audio [16601] 2007-03-05 23:04:42 videopath = /home/media/video [16601] 2007-03-05 23:04:42 picturepath = /home/media/image [16601] 2007-03-05 23:04:42 persistentstoragepath = /home/media/persitent [16601] 2007-03-05 23:04:42 kmlurl = http://www.famille-kahn.com/kml/home/index.kml [16601] 2007-03-05 23:04:42 pretrigger = [16601] 2007-03-05 23:04:42 posttrigger = [16601] 2007-03-05 23:04:42 audiofileextensions = mp3,ogg,wma,wav [16601] 2007-03-05 23:04:42 videofileextensions = mpg,mpeg,vob,avi,wmv,ts,mp4 [16601] 2007-03-05 23:04:42 picturefileextensions = jpg,jpeg,png,bmp [16601] 2007-03-05 23:04:42 isofileextensions = iso,img [16601] 2007-03-05 23:04:42 max_recent_files = 30 [16601] 2007-03-05 23:04:42 server_character_set = [16601] 2007-03-05 23:04:42 client_character_set = [16601] 2007-03-05 23:04:42 subtitle_catchall_pattern = {name}*.* [16601] 2007-03-05 23:04:42 picturetargetwidth = 720 [16601] 2007-03-05 23:04:42 picturetargetheight = 576 [16601] 2007-03-05 23:04:42 picturemaxzoompercent = 100 [16601] 2007-03-05 23:04:42 picturecachesize = 200 [16601] 2007-03-05 23:04:42 picturecachetrimminginterval = 5 [16601] 2007-03-05 23:04:42 networktimeoutinterval = 0 [16601] 2007-03-05 23:04:42 enablehiddenfilestext = Hidden feature [16601] 2007-03-05 23:04:42 enablehiddenfilesminutes = 1 [16601] 2007-03-05 23:04:42 recentlyusedfoldername = [>> Récement joué <<]


[16892] 2007-03-05 23:04:57 KiSS started connection [16892] 2007-03-05 23:04:57 do_recv 1: Reading from socket 6 [16892] 2007-03-05 23:04:57 do_recv 1: Read 17 bytes from socket 6 [16892] 2007-03-05 23:04:57 <-- [LIST VIDEO ||] [16892] 2007-03-05 23:04:57 --> [[>> Récement joué <<]|[>> Récement joué <<]|1| ] [16892] 2007-03-05 23:04:57 --> [dvd-iso|dvd-iso|1| ] [16892] 2007-03-05 23:04:57 --> [ext-mount|ext-mount|1| ] [16892] 2007-03-05 23:04:57 --> [kids_video|kids_video|1| ] [16892] 2007-03-05 23:04:57 --> [JeuneFillePerle.avi|/home/media/video/JeuneFillePerle.avi|0| ] [16892] 2007-03-05 23:04:57 --> [EOL ] [16892] 2007-03-05 23:04:57 do_recv 2: Reading from socket 6 [16892] 2007-03-05 23:04:57 do_recv 2: EOF on socket 6 [16892] 2007-03-05 23:04:57 ++++++++++ Closing B2B file [16892] 2007-03-05 23:04:57 KiSS closed connection [16601] 2007-03-05 23:04:57 Child process [16892] exited [16903] 2007-03-05 23:05:35 KiSS started connection [16903] 2007-03-05 23:05:35 do_recv 1: Reading from socket 6 [16903] 2007-03-05 23:05:35 do_recv 1: Read 19 bytes from socket 6 [16903] 2007-03-05 23:05:35 <-- [LIST PICTURE ||] [16903] 2007-03-05 23:05:35 --> [[>> Récement joué <<]|[>> Récement joué <<]|1| ] [16903] 2007-03-05 23:05:35 --> [2006_12_25|2006_12_25|1| ] [16903] 2007-03-05 23:05:35 --> [Filtred_Noel_2006|Filtred_Noel_2006|1| ] [16903] 2007-03-05 23:05:35 --> [web_photo|web_photo|1| ] [16903] 2007-03-05 23:05:35 --> [larochelle.jpg|/home/media/image/larochelle.jpg|0| ] [16903] 2007-03-05 23:05:35 --> [noel.jpg|/home/media/image/noel.jpg|0| ] [16903] 2007-03-05 23:05:35 --> [VoeuxGSI.2007.01.jpg|/home/media/image/VoeuxGSI.2007.01.jpg|0| ] [16903] 2007-03-05 23:05:35 --> [VoeuxGSI.2007.02.jpg|/home/media/image/VoeuxGSI.2007.02.jpg|0| ] [16903] 2007-03-05 23:05:35 --> [Hidden feature.jpg|/home/media/image/Hidden feature.jpg|0| ] [16903] 2007-03-05 23:05:35 --> [EOL ] [16903] 2007-03-05 23:05:35 do_recv 2: Reading from socket 6 [16903] 2007-03-05 23:05:35 do_recv 2: EOF on socket 6 [16903] 2007-03-05 23:05:35 ++++++++++ Closing B2B file [16903] 2007-03-05 23:05:35 KiSS closed connection [16601] 2007-03-05 23:05:35 Child process [16903] exited [16904] 2007-03-05 23:05:45 KiSS started connection [16904] 2007-03-05 23:05:45 do_recv 1: Reading from socket 6 [16904] 2007-03-05 23:05:45 do_recv 1: Read 46 bytes from socket 6 [16904] 2007-03-05 23:05:45 <-- [ACTION 2 /home/media/image/Hidden feature.jpg|] [16904] 2007-03-05 23:05:45 --> [200] [16904] 2007-03-05 23:05:45 do_recv 2: Reading from socket 6 [16904] 2007-03-05 23:05:45 do_recv 2: Read 47 bytes from socket 6 [16904] 2007-03-05 23:05:45 <-- [SIZE /home/media/image/Hidden feature.jpg| ] [16904] 2007-03-05 23:05:45 --> [000000000033898] [16904] 2007-03-05 23:05:45 do_recv 3: Reading from socket 6 [16904] 2007-03-05 23:05:45 do_recv 3: Read 67 bytes from socket 6 [16904] 2007-03-05 23:05:45 <-- [GET /home/media/image/Hidden feature.jpg| 0 4096 |oqmzybpxqdu1|] [16904] 2007-03-05 23:05:45 do_recv 4: Reading from socket 6 [16904] 2007-03-05 23:05:45 do_recv 4: Read 70 bytes from socket 6 [16904] 2007-03-05 23:05:45 <-- [GET /home/media/image/Hidden feature.jpg| 4096 4096 |oqmzybpxqdu1|] [16904] 2007-03-05 23:05:45 do_recv 5: Reading from socket 6 [16904] 2007-03-05 23:05:45 do_recv 5: Read 70 bytes from socket 6 [16904] 2007-03-05 23:05:45 <-- [GET /home/media/image/Hidden feature.jpg| 8192 4096 |oqmzybpxqdu1|] [16904] 2007-03-05 23:05:45 do_recv 6: Reading from socket 6 [16904] 2007-03-05 23:05:45 do_recv 6: Read 71 bytes from socket 6 [16904] 2007-03-05 23:05:45 <-- [GET /home/media/image/Hidden feature.jpg| 12288 4096 |oqmzybpxqdu1|] [16904] 2007-03-05 23:05:45 do_recv 7: Reading from socket 6 [16904] 2007-03-05 23:05:45 do_recv 7: Read 71 bytes from socket 6 [16904] 2007-03-05 23:05:45 <-- [GET /home/media/image/Hidden feature.jpg| 16384 4096 |oqmzybpxqdu1|] [16904] 2007-03-05 23:05:45 do_recv 8: Reading from socket 6 [16904] 2007-03-05 23:05:45 do_recv 8: Read 71 bytes from socket 6 [16904] 2007-03-05 23:05:45 <-- [GET /home/media/image/Hidden feature.jpg| 20480 4096 |oqmzybpxqdu1|] [16904] 2007-03-05 23:05:45 do_recv 9: Reading from socket 6 [16904] 2007-03-05 23:05:45 do_recv 9: Read 71 bytes from socket 6 [16904] 2007-03-05 23:05:45 <-- [GET /home/media/image/Hidden feature.jpg| 24576 4096 |oqmzybpxqdu1|] [16904] 2007-03-05 23:05:45 do_recv 10: Reading from socket 6 [16904] 2007-03-05 23:05:45 do_recv 10: Read 71 bytes from socket 6 [16904] 2007-03-05 23:05:45 <-- [GET /home/media/image/Hidden feature.jpg| 28672 4096 |oqmzybpxqdu1|] [16904] 2007-03-05 23:05:45 do_recv 11: Reading from socket 6 [16904] 2007-03-05 23:05:45 do_recv 11: Read 71 bytes from socket 6 [16904] 2007-03-05 23:05:45 <-- [GET /home/media/image/Hidden feature.jpg| 32768 1129 |oqmzybpxqdu1|] [16904] 2007-03-05 23:05:45 do_recv 12: Reading from socket 6 [16904] 2007-03-05 23:05:45 do_recv 12: EOF on socket 6 [16904] 2007-03-05 23:05:45 Sending local command: SET LIST_HIDDEN_ENTRIES ON [16601] 2007-03-05 23:05:45 handle_local_command: Read 26 bytes from socket 6 [16601] 2007-03-05 23:05:45 local command received: [SET LIST_HIDDEN_ENTRIES ON] [16601] 2007-03-05 23:05:45 Option list_hidden_entries has been turned ON [16904] 2007-03-05 23:05:45 do_recv 13: Reading from socket 6 [16904] 2007-03-05 23:05:45 do_recv 13: EOF on socket 6 [16904] 2007-03-05 23:05:45 ++++++++++ Closing B2B file [16904] 2007-03-05 23:05:45 KiSS closed connection [16601] 2007-03-05 23:05:45 Child process [16904] exited


[16992] 2007-03-05 23:19:31 KiSS started connection [16992] 2007-03-05 23:19:31 do_recv 1: Reading from socket 7 [16992] 2007-03-05 23:19:31 do_recv 1: Read 28 bytes from socket 7 [16992] 2007-03-05 23:19:31 <-- [LIST PICTURE |web_photo|] [16992] 2007-03-05 23:19:31 --> [ArbreGenealogique|ArbreGenealogique|1| ] [16992] 2007-03-05 23:19:31 --> [Select.2006_12_21.LaDefense.Noel|Select.2006_12_21.LaDefense.Noel|1| ] [16992] 2007-03-05 23:19:31 --> [720-480.jpg|/home/media/image/web_photo/720-480.jpg|0| ] [16992] 2007-03-05 23:19:31 --> [Dsc01707s.jpg|/home/media/image/web_photo/Dsc01707s.jpg|0| ] [16992] 2007-03-05 23:19:31 --> [hamac.nacelle.jpg|/home/media/image/web_photo/hamac.nacelle.jpg|0| ] [16992] 2007-03-05 23:19:31 --> [P4050589s.JPG|/home/media/image/web_photo/P4050589s.JPG|0| ] [16992] 2007-03-05 23:19:31 --> [Pauline.lunette.jpg|/home/media/image/web_photo/Pauline.lunette.jpg|0| ] [16992] 2007-03-05 23:19:31 --> [EOL ] [16992] 2007-03-05 23:19:31 do_recv 2: Reading from socket 7 [16992] 2007-03-05 23:19:31 do_recv 2: EOF on socket 7 [16992] 2007-03-05 23:19:31 ++++++++++ Closing B2B file [16992] 2007-03-05 23:19:31 KiSS closed connection [16601] 2007-03-05 23:19:31 Child process [16992] exited

Retrieved from "http://www.famille-kahn.com/kissdxmanual/Kissdx_develop_manual:_Admin_Control_command"