Kissdx Server Signature

From KiSS DP 558 STAGE2 WiKi
Revision as of 16:19, 3 March 2012 by Lars (talk | contribs) (Created page with "Server signature [edit] Directive ServerSignature Goal : KiSS player needs before connecting to a pclink server (kissdx) to broadcast an "ARE_YOU_KISS_PCLINK_SERVER?" ...")
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to: navigation, search

Server signature [edit] Directive ServerSignature

Goal  : KiSS player needs before connecting to a pclink server (kissdx) to broadcast an "ARE_YOU_KISS_PCLINK_SERVER?"

         and all server should answer its name. KiSS player displays this list and enables user to choose the winner.
         For network configuration of multiple pclink server, it's enable an easy way to select a server.
         For exemple: 3 NLSU server hosting movies in range : [A-H]  [I-M]  [N-Z] 
         Basic feature of displaying hostname is not so convenient.

Syntaxe : ServerSignature = (mixed of free text and reserved keyword)

  {ShortHostName}        = Short hostname (ex: debian2)
  {FullHostName}         = Full described hostname (ex: debian2.homeip.net)
  {Version}              = Version of kissdx currently running (vX.XX-XX)
  {VersionDate}          = Date of this version (yyyy-mm-dd)
  {ConfigReloadStatus}   = PC-Link server research results in reloading configuration
                           Reparsing kissdx.conf may trigger a (OK) status or failed (conf!)
                           If failed, the last correct configuration is kept in memory.

Default : {Name} - kissdx {Version},{VersionDate}{ConfigReloadStatus} Exemple : debian2.homeip.net - kissdx v0.13-xx,2007-03-xx(OK)

[edit] Interaction "ServerSignature & ConfigAutoLoad"

Directive 'configautoload' enable not to reload configuration on reception of UDP broadcast If serversignature include 'ConfigReloadStatus' and 'configautoload' is disable (no), any UDP broadcast reception does not reload the configuration file and the serversignature information send back to KiSS player does ignore the 'ConfigReloadStatus' information

Log information (/var/log/syslog) track an "Identity request" and response to the players

... Extract of log (not verbose)... ... Extract of log verbose ...

[edit] kissdx code impact

Which part of kissdx code is to be modified and in which way ...

   Global synopsis of ServerSignature 

= Current state in 0.13.10a kissdx.c_main() : command line option analysis, then parse_config (read kissdx.conf), start udp listener, start daemon

= Proposition

  • parse_config() should isolate the configuration of serversignature, do a minimalist check
 if configuration of ServerSignature is accepted, then parse_config return OK and stores info
  • udp_responder() may not calculate for each request the correct answer to send back
  • do_daemon() may calculate once the correct answer and store it in 'config' object
  • config.h: typedef struct config_settings_s ...
  • config.c: config_settings_t config; // Holds the current config settings as read from kissdx.conf
   Code modification 

kissdx.conf Insert section with ServerSignature kissdx.c Extend dodaemon() and udp_responder() The existing function string_substitute(haystack, needle, substitute, haystack_size) in utils.c should be used for substituting values for the {keywords} in the signature template. config.c Parse .conf and detect ServerSignature, default value is set. unkown command is interpreted as free text An empty value for ServerSignature is the only fatal error that will return error=1 and display already existing message "Error(s) in the configuration file prevent kissdx from using the file." config.h Adapt config_settings_t structure to include "char serversignature[255];"

[edit] Unit test use case

01 serversignature = (none information following the equal sign) 02 serversignature = [A-H] films (targeted usage for end user) 03 #serversignature = (comment the line in configuration file) 04 serversignature = Uppercase {FULLHOSTNAME} (specification is case sensitive) 05 serversignature = {UnkownValue} 06 serversignature = A too long line with too much information xxxxxxxxxxxxx yyyyyyyyyyyyyyyy zzzzzzzzzzzzzzz 07 serversignature = multiple instance of {ShortHostName}-{Version}/{ShortHostName}-{Version}/{ShortHostName}-{Version} 08 ServerSignature = Use an upper first letter for directive name

kissdx behaviours to unit test

01 test passed (KiSS player needs something to display in server found list) Conf Fatal : Invalid line in config file: [serversignature =]. Expected [Option] = [Value] Error(s) in the configuration file prevent kissdx from using the file.

02 test passed, configuration accepted 03 test passed, default value is selected {ShortHostName} - kissdx {Version},{VersionDate} {ConfigReloadStatus} serversignature = ubuntugsi - kissdx v0.13.1x,2007-09-01 {ConfigReloadStatus}

04 test passed, wrong settings are not interpreted, and do not create errors serversignature = {FULLHOSTNAME}

05 test passed, same behaviours as test 04 06 test passed, KiSS player trucate line and finish with '...' 07 test passed, multi keywords are supported 08 test passed, directive name in configuration file are not case sensitive

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