28 Jun, 2011, Scandum wrote in the 1st comment:
Votes: 0
I've removed all servers and codebases closing the connection after an MSSP data transfer from the specification as MSSP is intended to be usable by both MUD crawlers and MUD clients.

I originally let it slide because I was tired of the bickering and it was isolated to plain text implementations, but that isn't the case anymore.
29 Jun, 2011, Rarva.Riendf wrote in the 2nd comment:
Votes: 0
I found on tintin homapage some script to test servers for some capabilities (like mxp), but not yet how to put them into it(chuckle), but the real question is do you have a full test suite scripted so us mud admin test it against the specs ?
30 Jun, 2011, Scandum wrote in the 3rd comment:
Votes: 0
I got the following script for telnet mssp. Place it in a file, use #read <filename> then connect to any given mud using: #session <name> <host> <port> and it'll generate an overview when receiving mssp data with errors highlighted.

#config {packet patch} {1}
#config {connect retry} {0}

#list vars create
{
{PLAYERS}{UPTIME}{HOSTNAME}{PORT}{CRAWL DELAY}{CODEBASE}{CONTACT}
{CREATED}{ICON}{IP}{LANGUAGE}{LOCATION}{MINIMUM AGE}{NAME}{WEBSITE}
{FAMILY}{GENRE}{GAMEPLAY}{GAMESYSTEM}{INTERMUD}{STATUS}{SUBGENRE}
{AREAS}{HELPFILES}{MOBILES}{OBJECTS}{ROOMS}{CLASSES}{LEVELS}{RACES}
{SKILLS}{ANSI}{GMCP}{MCCP}{MCP}{MSDP}{MSP}{MXP}{PUEBLO}{UTF-8}{VT100}
{XTERM 256 COLORS}{PAY TO PLAY}{PAY FOR PERKS}{HIRING BUILDERS}
{HIRING CODERS}
}

#var nums
{
{CRAWL DELAY};{CREATED};{MINIMUM AGE};{AREAS};{HELPFILES};
{MOBILES};{OBJECTS};{ROOMS};{CLASSES};{LEVELS};{RACES};
{SKILLS};{ANSI};{GMCP};{MCCP};{MCP};{MSDP};{MSP};{MXP};
{PUEBLO};{UTF-8}{VT100};{XTERM 256 COLORS};{PAY TO PLAY};
{PAY FOR PERKS};{HIRING BUILDERS};{HIRING CODERS};
}

#loop 1 &vars[] cnt
{
#var {$vars[$cnt]} {}
}

#event {SESSION CONNECTED}
{
#var HOST {%1};
#var IP {%2};
#var MSSP_PORT {%3};
}

#event {IAC WILL MSSP}
{
#send \xFF\xFD\x46\
}

#event {IAC SB MSSP}
{
mssp_var {%0} {%1}
}

#event {IAC SB MSSP IAC SE}
{
#delay {0.5}
{
#showme {<178>Legend: <118>## <178>Incorrect data <138>## <178>Incorrect capitalization <168>## <178>Unknown data (possibly correct)};

display
}
}

#var {families} {{AberMUD};{CoffeeMUD};{Custom};{DikuMUD};{LPMud};{MajorMUD};{MOO};{Mordor};{Rapture};{SocketMUD};{TinyMUD};}
#var {genres} {{Adult};{Fantasy};{Historical};{Horror};{Modern};{None};{Science Fiction};}
#var {gameplay} {{Adventure};{Educational};{Hack and Slash};{None};{Player versus Player};{Roleplaying};{Simulation};{Social};{Strategy};}
#var {locations} {{Australia};{Belgium};{Canada};{China};{Denmark};{Estonia};{Finland};{France};{Germany};{Ireland};{Japan};{Mexico};{Netherlands};{New Zealand};{Norway};{Portugal};{South Africa};{Spain};{Sweden};{United Kingdom};{United States};}
#var {languages} {{Belgian};{Chinese};{Danish};{Dutch};{English};{Finnish};{French};{German};{Japanese};{Norwegian};{Spanish};{Swedish};}
#var {networks} {{I3};{IMC2};}
#var {status} {{Alpha};{Closed Beta};{Open Beta};{Live};}
#var {subgenres} {{Adventure};{Anime};{Ancient Rome};{Dark Fantasy};{Discworld};{High Fantasy} ;{Medieval Fantasy};{Medieval Mythical};{Multiverse};{Mythical Fantasy};{Naruto};{Pokemon};{Post-Apocalyptic};{Pulp};{World of Darkness};{Star Wars};{Space Opera};{None};}

#var {UPTIME_ORIGINAL} {}

#function {chainlink}
{
#var result {};

#loop {1} {&%0[]} {cnt}
{
#if {$cnt == 1}
{
#var result $%0[$cnt]
}
{
#var result $result, $%0[$cnt]
}
}
}

#alias {display}
{
#var index 0;

#if {"$INTERMUD" != ""}
{
#var INTERMUD @chainlink{INTERMUD}
};

#if {"$PORT" != ""}
{
#var PORT @chainlink{PORT}
}
{
#var PORT $MSSP_PORT
};

#var cnt 0;

#showme {\n\};

#showme {<088>};

#var temp {};

#loop 1 &vars[] cnt
{
#var var $vars[$cnt];

#var color <178>;

#if {&nums[$var]}
{
#regex {${$var}} {^%s{-|}%d%s$}
{
#nop
}
{
#var color <118>
}
}
#if {"$var" == "FAMILY"}
{
#if {&families[$FAMILY] == 0}
{
#if {&families[%i$FAMILY] == 0} {#var color <118>} {#var color <138>}
}
}
#if {"$var" == "GAMEPLAY"}
{
#if {&gameplay[$GAMEPLAY] == 0}
{
#if {&gameplay[%i$GAMEPLAY] == 0} {#var color <118>} {#var color <138>}
}
}
#if {"$var" == "GENRE"}
{
#if {&genres[$GENRE] == 0}
{
#if {&genres[%i$GENRE] == 0} {#var color <118>} {#var color <138>}
}
}
#if {"$var" == "HOSTNAME"}
{
#if {"$HOST" != "%*$HOSTNAME%*" && "$HOST != "%*localhost%*"}
{
#if {"$HOST" != "%i%*$HOSTNAME%*"} {#var color <118>} {#var color <138>}
}
}
#if {"$var" == "IP"}
{
#if {"$IP" == "127.0.0.1"}
{
#var color <118>
}
}
#if {"$var" == "LANGUAGE"}
{
#if {&languages[$LANGUAGE] == 0}
{
#if {&languages[%i$LANGUAGE] == 0} {#var color <118>} {#var color <138>}
}
}
#if {"$var" == "LOCATION"}
{
#if {&locations[$LOCATION] == 0}
{
#if {&locations[%i$LOCATION] == 0} {#var color <118>} {#var color <138>}
}
}
#if {"$var" == "STATUS"}
{
#if {&status[$STATUS] == 0}
{
#if {&status[%i$STATUS] == 0} {#var color <118>} {#var color <138>}
}
}
#if {"$var" == "SUBGENRE"}
{
#if {&subgenres[$SUBGENRE] == 0}
{
#if {&subgenres[%i$SUBGENRE] == 0} {#var color <168>} {#var color <168>}
}
}
#if {"$var" == "UPTIME"}
{
#if {"$UPTIME" == ""}
{
#var color <118>;
#var {UPTIME} {$UPTIME_ORIGINAL}
}
}
#if {"$var" == "PLAYERS"}
{
#if {"$PLAYERS" == ""}
{
#var color <118>;
#var {PLAYERS} {0}
}
}
#if {"$var" == "ICON"}
{
#if {"$ICON" != "http%*"}
{
#var color <118>
}
};
#if {"$var" == "WEBSITE"}
{
#if {"$WEBSITE" != "http%*"}
{
#var color <118>
}
};
#format {temp} {<128>%+17s%s%+61s } {$var} {$color} {${$var}};

#showme {$temp}
}
}

#alias {mssp_var}
{
#if {"%1" == "UPTIME"}
{
#var UPTIME_ORIGINAL {%2};

#if {"%2" != "%d"}
{
#var {UPTIME} {}
};
#elseif {%2 < 1234567890 || %2 > 2345678901}
{
#var {UPTIME} {}
};
#else
{
#format TIME %T;
#math TIME $TIME - %2;
#format {%1} {%m} {0.0 + $TIME / (60 * 60 * 24)};
}
}

#if {"%2" == ""}
{
#nop
}

#if {"%1" == "PORT"}
{
#list {%1} {ins} {1} {%2}
}

#if {"%1" == "INTERMUD" || "%1" == "PORT"}
{
#if {&networks[%2] == 0}
{
#list {%1} {ins} {1} {<168>%2<178>}
}
{
#list {%1} {ins} {1} {%2}
}
}

{
#format {%1} {%p} {%2}
}
}
0.0/3