aboutsummaryrefslogtreecommitdiff
path: root/cvs/cvsweb.cgi/code/nelns/admin_service
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--cvs/cvsweb.cgi/code/nelns/admin_service/?hideattic=0/index.html107
-rw-r--r--cvs/cvsweb.cgi/code/nelns/admin_service/?only_with_tag=HEAD/index.html107
-rw-r--r--cvs/cvsweb.cgi/code/nelns/admin_service/?sortby=author/index.html107
-rw-r--r--cvs/cvsweb.cgi/code/nelns/admin_service/?sortby=date/index.html98
-rw-r--r--cvs/cvsweb.cgi/code/nelns/admin_service/?sortby=log/index.html107
-rw-r--r--cvs/cvsweb.cgi/code/nelns/admin_service/?sortby=rev/index.html107
-rw-r--r--cvs/cvsweb.cgi/code/nelns/admin_service/Makefile.am184
-rw-r--r--cvs/cvsweb.cgi/code/nelns/admin_service/Makefile.am.diff?r1=1.1&r2=1.233
-rw-r--r--cvs/cvsweb.cgi/code/nelns/admin_service/Makefile.am.diff?r1=1.2&r2=1.326
-rw-r--r--cvs/cvsweb.cgi/code/nelns/admin_service/Makefile.am.diff?r1=1.3&r2=1.436
-rw-r--r--cvs/cvsweb.cgi/code/nelns/admin_service/Makefile.am.diff?r1=1.5&r2=1.630
-rw-r--r--cvs/cvsweb.cgi/code/nelns/admin_service/Makefile.am?annotate=1.376
-rw-r--r--cvs/cvsweb.cgi/code/nelns/admin_service/Makefile.am?annotate=1.576
-rw-r--r--cvs/cvsweb.cgi/code/nelns/admin_service/Makefile.am?annotate=1.676
-rw-r--r--cvs/cvsweb.cgi/code/nelns/admin_service/Makefile.am?only_with_tag=HEAD138
-rw-r--r--cvs/cvsweb.cgi/code/nelns/admin_service/Makefile.am?r1=1.3187
-rw-r--r--cvs/cvsweb.cgi/code/nelns/admin_service/Makefile.am?r1=1.6188
-rw-r--r--cvs/cvsweb.cgi/code/nelns/admin_service/Makefile.am?rev=1.5&content-type=text/x-cvsweb-markup/index.html29
-rw-r--r--cvs/cvsweb.cgi/code/nelns/admin_service/Makefile.am?rev=1.6&content-type=text/x-cvsweb-markup&sortby=date/index.html30
-rw-r--r--cvs/cvsweb.cgi/code/nelns/admin_service/Makefile.am?sortby=log187
-rw-r--r--cvs/cvsweb.cgi/code/nelns/admin_service/Makefile.am?sortby=rev187
-rw-r--r--cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cfg184
-rw-r--r--cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cfg.diff?r1=1.5&r2=1.635
-rw-r--r--cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cfg?annotate=1.276
-rw-r--r--cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cfg?only_with_tag=MAIN186
-rw-r--r--cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cfg?r1=1.1187
-rw-r--r--cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cfg?r1=1.2187
-rw-r--r--cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cfg?r1=1.3187
-rw-r--r--cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cfg?r1=1.5187
-rw-r--r--cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cfg?r1=1.6188
-rw-r--r--cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cfg?rev=1.4&content-type=text/x-cvsweb-markup/index.html31
-rw-r--r--cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cfg?rev=1.6&content-type=text/x-cvsweb-markup&sortby=author/index.html33
-rw-r--r--cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cfg?rev=1.6&content-type=text/x-cvsweb-markup&sortby=date/index.html33
-rw-r--r--cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cfg?rev=1.6&content-type=text/x-cvsweb-markup&sortby=rev/index.html33
-rw-r--r--cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cfg?rev=1.6&content-type=text/x-cvsweb-markup/index.html33
-rw-r--r--cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cfg?sortby=author187
-rw-r--r--cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cpp274
-rw-r--r--cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cpp.diff?r1=1.10&r2=1.1146
-rw-r--r--cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cpp.diff?r1=1.13&r2=1.1445
-rw-r--r--cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cpp.diff?r1=1.14&r2=1.1568
-rw-r--r--cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cpp.diff?r1=1.4&r2=1.5379
-rw-r--r--cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cpp.diff?r1=1.5&r2=1.1849
-rw-r--r--cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cpp.diff?r1=1.5&r2=1.11495
-rw-r--r--cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cpp.diff?r1=1.5&r2=1.13547
-rw-r--r--cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cpp.diff?r1=1.5&r2=1.14573
-rw-r--r--cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cpp.diff?r1=1.5&r2=1.6379
-rw-r--r--cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cpp.diff?r1=1.7&r2=1.829
-rw-r--r--cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cpp?annotate=1.1476
-rw-r--r--cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cpp?annotate=1.1576
-rw-r--r--cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cpp?annotate=1.776
-rw-r--r--cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cpp?annotate=1.976
-rw-r--r--cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cpp?content-type=text/x-cvsweb-markup&rev=1.14999
-rw-r--r--cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cpp?r1=1.11286
-rw-r--r--cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cpp?r1=1.14286
-rw-r--r--cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cpp?r1=1.15287
-rw-r--r--cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cpp?r1=1.2286
-rw-r--r--cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cpp?r1=1.4286
-rw-r--r--cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cpp?r1=1.6286
-rw-r--r--cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cpp?r1=1.7286
-rw-r--r--cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cpp?rev=1.10&content-type=text/x-cvsweb-markup/index.html943
-rw-r--r--cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cpp?rev=1.11&content-type=text/x-cvsweb-markup/index.html947
-rw-r--r--cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cpp?rev=1.12&content-type=text/x-cvsweb-markup/index.html995
-rw-r--r--cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cpp?rev=1.15&content-type=text/x-cvsweb-markup&sortby=author/index.html1001
-rw-r--r--cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cpp?rev=1.15&content-type=text/x-cvsweb-markup&sortby=log/index.html1001
-rw-r--r--cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cpp?rev=1.15&content-type=text/x-cvsweb-markup&sortby=rev/index.html1001
-rw-r--r--cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cpp?rev=1.2&content-type=text/x-cvsweb-markup/index.html253
-rw-r--r--cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cpp?rev=1.4&content-type=text/x-cvsweb-markup/index.html756
-rw-r--r--cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cpp?rev=1.9&content-type=text/x-cvsweb-markup/index.html948
-rw-r--r--cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cpp?sortby=author277
-rw-r--r--cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cpp?sortby=date277
-rw-r--r--cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cpp?sortby=log277
-rw-r--r--cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cpp?sortby=rev277
-rw-r--r--cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.dsp174
-rw-r--r--cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.dsp.diff?r1=1.1&r2=1.232
-rw-r--r--cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.dsp.diff?r1=1.2&r2=1.348
-rw-r--r--cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.dsp?annotate=1.176
-rw-r--r--cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.dsp?annotate=1.376
-rw-r--r--cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.dsp?annotate=1.476
-rw-r--r--cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.dsp?r1=1.3176
-rw-r--r--cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.dsp?r1=1.4176
-rw-r--r--cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.dsp?r1=1.5177
-rw-r--r--cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.dsp?r1=1.5&only_with_tag=HEAD137
-rw-r--r--cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.dsp?rev=1.2&content-type=text/x-cvsweb-markup/index.html135
-rw-r--r--cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.dsp?rev=1.5&content-type=text/x-cvsweb-markup/index.html172
-rw-r--r--cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.dsp?sortby=date177
-rw-r--r--cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.dsp?sortby=log177
-rw-r--r--cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.dsp?sortby=rev177
-rw-r--r--cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.vcproj134
-rw-r--r--cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.vcproj?rev=1.1&content-type=text/x-cvsweb-markup&sortby=date/index.html269
-rw-r--r--cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.vcproj?rev=1.1&content-type=text/x-cvsweb-markup/index.html269
-rw-r--r--cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.vcproj?sortby=author137
-rw-r--r--cvs/cvsweb.cgi/code/nelns/admin_service/common.cfg134
-rw-r--r--cvs/cvsweb.cgi/code/nelns/admin_service/common.cfg?annotate=1.176
-rw-r--r--cvs/cvsweb.cgi/code/nelns/admin_service/common.cfg?content-type=text/x-cvsweb-markup&rev=1.119
-rw-r--r--cvs/cvsweb.cgi/code/nelns/admin_service/common.cfg?rev=1.1&content-type=text/x-cvsweb-markup&sortby=author/index.html19
-rw-r--r--cvs/cvsweb.cgi/code/nelns/admin_service/common.cfg?rev=1.1&content-type=text/x-cvsweb-markup&sortby=date/index.html19
-rw-r--r--cvs/cvsweb.cgi/code/nelns/admin_service/common.cfg?rev=1.1&content-type=text/x-cvsweb-markup&sortby=log/index.html19
-rw-r--r--cvs/cvsweb.cgi/code/nelns/admin_service/common.cfg?rev=1.1&content-type=text/x-cvsweb-markup&sortby=rev/index.html19
-rw-r--r--cvs/cvsweb.cgi/code/nelns/admin_service/common.cfg?sortby=log137
-rw-r--r--cvs/cvsweb.cgi/code/nelns/admin_service/common.cfg?sortby=rev137
-rw-r--r--cvs/cvsweb.cgi/code/nelns/admin_service/index.html106
101 files changed, 23306 insertions, 0 deletions
diff --git a/cvs/cvsweb.cgi/code/nelns/admin_service/?hideattic=0/index.html b/cvs/cvsweb.cgi/code/nelns/admin_service/?hideattic=0/index.html
new file mode 100644
index 00000000..376c1a9c
--- /dev/null
+++ b/cvs/cvsweb.cgi/code/nelns/admin_service/?hideattic=0/index.html
@@ -0,0 +1,107 @@
+<!doctype html public "-//W3C//DTD HTML 4.0 Transitional//EN" "http://www.w3.org/TR/REC-html40/loose.dtd">
+<HTML>
+<HEAD>
+ <TITLE>nevrax.org : cvs</TITLE>
+ <META name="keywords" content="freesoftware,nel,newt,snowballs,richard stallman,GNU,Multi-User Online World">
+
+ <LINK REL=stylesheet TYPE="text/css" HREF="http://www.nevrax.org/inc/css/nevrax.css">
+</HEAD>
+<BODY MARGINHEIGHT="0" MARGINWIDTH="0">
+
+<!-- uplinks -->
+<TABLE CELLSPACING=0 CELLPADDING=0 BORDER=0>
+ <TR>
+ <TD WIDTH=16><IMG SRC="http://www.nevrax.org/inc/img/pixel.gif" WIDTH="16" HEIGHT="16" BORDER=0 ALT=""></TD>
+ <TD WIDTH=140 BGCOLOR=#dddddd><IMG SRC="http://www.nevrax.org/inc/img/pixel.gif" WIDTH="140" HEIGHT="16" BORDER=0 ALT=""></TD>
+ <TD WIDTH=16><IMG SRC="http://www.nevrax.org/inc/img/pixel.gif" WIDTH="16" HEIGHT="16" BORDER=0 ALT=""></TD>
+ <TD><IMG width=6 height=14 SRC="http://www.nevrax.org/inc/img/reddots.gif" ALT="#" VSPACE=2 HSPACE=2 BORDER=0 ></TD><TD VALIGN=middle>&nbsp;<A CLASS=uplinks HREF=http://www.nevrax.org><b>Home</B></FONT></A>&nbsp;&nbsp;&nbsp;</TD>
+ <TD><IMG width=6 height=14 SRC="http://www.nevrax.org/inc/img/reddots.gif" ALT="#" VSPACE=2 HSPACE=2 BORDER=0 ></TD><TD VALIGN=middle>&nbsp;<A CLASS=uplinks HREF=http://www.nevrax.com><b>nevrax.com</B></FONT></A>&nbsp;&nbsp;&nbsp;</TD>
+ </TR>
+</TABLE>
+
+<!-- banner Nevrax -->
+<TABLE CELLSPACING=0 CELLPADDING=0 BORDER=0 WIDTH=100%>
+ <TR><TD BGCOLOR="#000000" BACKGROUND="http://www.nevrax.org/inc/img/black_banner.jpg"><A HREF="http://www.nevrax.org"><IMG SRC="http://www.nevrax.org/inc/img/nevrax.gif" WIDTH="170" HEIGHT="45" BORDER=0 ALT="Nevrax" ></A></TD></TR>
+</TABLE>
+
+<!-- main table -->
+<TABLE CELLSPACING=0 CELLPADDING=0 BORDER=0 height=100%>
+ <TR>
+ <TD WIDTH=16><IMG SRC="http://www.nevrax.org/inc/img/pixel.gif" WIDTH="16" HEIGHT="10" BORDER=0 ALT=""></TD>
+ <TD WIDTH=140 BGCOLOR=#dddddd VALIGN=TOP ALIGN=middle><IMG SRC="http://www.nevrax.org/inc/img/pixel.gif" WIDTH="140" HEIGHT="10" BORDER=0 ALT="">
+
+ <!------ Begin Box ------>
+ <TABLE BORDER=0 CELLSPACING=0 CELLPADDING=0 BGCOLOR=black><TR><TD><TABLE border=0 cellspacing=2 cellpadding=0 width=120><tr><TD ALIGN=middle bgcolor=black>
+ <FONT COLOR=white FACE="sans-serif"><B>Nevrax.org</B></FONT></TD></TR><tr><td colspan=2 bgcolor=#FFFFFF>
+ <TABLE cellspacing=0 cellpadding=1 border=0>
+ <tr><td ALIGN=middle><a class='linkbox' href="http://www.nevrax.org/news/" TITLE="Rubrique news"><img width=13 height=15 hspace=5 border=0 src=http://www.nevrax.org/inc/img/picto-news.gif ALT=#></A></td><td><a class='linkbox' href="http://www.nevrax.org/news/" TITLE="News">News</a></td></tr>
+ <tr><td ALIGN=middle><a class='linkbox' href="http://www.nevrax.org/mail/" TITLE="Rubrique mail"><img width=15 height=11 hspace=5 border=0 src=http://www.nevrax.org/inc/img/picto-mail.gif ALT=#></A></td><td><a class='linkbox' href="http://www.nevrax.org/mail/" TITLE="Mailing list archive">Mailing-list</a></td></tr>
+ <tr><td ALIGN=middle><a class='linkbox' href="http://www.nevrax.org/docs/" TITLE="Rubrique docs"><img width=14 height=16 hspace=5 border=0 src=http://www.nevrax.org/inc/img/picto-docs.gif ALT=#></A></td><td><a class='linkbox' href="http://www.nevrax.org/docs/" TITLE="Documentation">Documentation</a></td></tr>
+ <tr><td ALIGN=middle><a class='linkbox' href="http://www.nevrax.org/cvs/" TITLE="Rubrique cvs"><img width=13 height=17 hspace=5 border=0 src=http://www.nevrax.org/inc/img/picto-cvs.gif ALT=#></A></td><td><a class='linkbox' href="http://www.nevrax.org/cvs/" TITLE="CVS Web">CVS</a></td></tr>
+ <tr><td ALIGN=middle><a class='linkbox' href="http://www.nevrax.org/bugs/" TITLE="Rubrique bugs"><img width=20 height=16 hspace=5 border=0 src=http://www.nevrax.org/inc/img/picto-bugs.gif ALT=#></A></td><td><a class='linkbox' href="http://www.nevrax.org/bugs/" TITLE="Bugtracking">Bugs</a></td></tr>
+ <tr><td ALIGN=middle><a class='linkbox' href="http://www.nevrax.org/free/" TITLE="Rubrique license"><img width=18 height=12 hspace=5 border=0 src=http://www.nevrax.org/inc/img/picto-free.gif ALT=#></A></td><td><a class='linkbox' href="http://www.nevrax.org/free/" TITLE="Free Software">Free software</a></td></tr>
+ </TABLE>
+ </TD></TR></TABLE></TD></TR></TABLE>
+ <!------ End Box ------>
+
+ </TD>
+ <TD WIDTH=15><IMG SRC="http://www.nevrax.org/inc/img/pixel.gif" WIDTH="16" HEIGHT="16" BORDER=0 ALT=""></TD>
+ <TD ALIGN=left valign=top><IMG SRC="http://www.nevrax.org/inc/img/pixel.gif" WIDTH="140" HEIGHT="10" BORDER=0 ALT="">
+
+<!-- title -->
+<TABLE background="http://www.nevrax.org/inc/img/redline.gif" CELLSPACING=0 CELLPADDING=0 BORDER=0 width=100%><tr><td>
+<A HREF="http://www.nevrax.org/cvs/"><img src="http://www.nevrax.org/inc/img/t_cvs.gif" ALT="cvs" HEIGHT=20 BORDER=0></A>
+</td><td><IMG SRC="http://www.nevrax.org/inc/img/pixel.gif" WIDTH="1" HEIGHT="1" BORDER=0 ALT="">
+</td></tr></table>
+
+
+<!-- title -->
+<table width=100%><tr><td align=left><b> <a href="/cvs/cvsweb.cgi/?hideattic=0">Nevrax</a> / <a href="/cvs/cvsweb.cgi/code/?hideattic=0">code</a> / <a href="/cvs/cvsweb.cgi/code/nelns/?hideattic=0">nelns</a> / admin_service</b></td><td align=right><b></b></td></TR></TABLE>
+<table width="100%" border=0 cellspacing=1 cellpadding=2>
+<tr><th align=left bgcolor="#222222"><font color=white>File</font></th><th align=left bgcolor="#000000"><a class=title href="./?hideattic=0&amp;sortby=rev"><font color=white>Rev.</font></a></th><th align=left bgcolor="#000000"><a class=title href="./?hideattic=0&amp;sortby=date"><font color=white>Age</font></a></th><th align=left bgcolor="#000000"><a class=title href="./?hideattic=0&amp;sortby=author"><font color=white>Author</font></a></th><th align=left bgcolor="#000000"><a class=title href="./?hideattic=0&amp;sortby=log"><font color=white>Last log entry</font></a></th></tr>
+<tr bgcolor="#dddddd"><td><A HREF="../?hideattic=0"><IMG SRC="http://www.nevrax.org/inc/img/picto-up.gif" ALT="[BACK]" BORDER="0" WIDTH="14" HEIGHT="13"></A>
+ <A HREF="../?hideattic=0">Previous Directory</A>
+</td><td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td></tr>
+
+<tr bgcolor="#cccccc"><td><A NAME="Makefile.am"></A><A HREF="Makefile.am?hideattic=0"><IMG SRC="http://www.nevrax.org/inc/img/picto-news.gif" ALT="[TXT]" BORDER="0" WIDTH="13" HEIGHT="15"></A>
+ <A HREF="Makefile.am?hideattic=0">Makefile.am</A>
+</td><td>&nbsp;<A HREF="Makefile.am?rev=1.6&amp;content-type=text/x-cvsweb-markup&amp;hideattic=0"><b>1.6</b></A></td><td>&nbsp; <i>6 weeks</i></td><td>&nbsp;lecroart</td><td>&nbsp; <font size=-1>no message
+</font></td></tr>
+<tr bgcolor="#dddddd"><td><A NAME="admin_service.cfg"></A><A HREF="admin_service.cfg?hideattic=0"><IMG SRC="http://www.nevrax.org/inc/img/picto-news.gif" ALT="[TXT]" BORDER="0" WIDTH="13" HEIGHT="15"></A>
+ <A HREF="admin_service.cfg?hideattic=0">admin_service.cfg</A>
+</td><td>&nbsp;<A HREF="admin_service.cfg?rev=1.6&amp;content-type=text/x-cvsweb-markup&amp;hideattic=0"><b>1.6</b></A></td><td>&nbsp; <i>3 months</i></td><td>&nbsp;lecroart</td><td>&nbsp; <font size=-1>ADDED: common.cfg
+</font></td></tr>
+<tr bgcolor="#cccccc"><td><A NAME="admin_service.cpp"></A><A HREF="admin_service.cpp?hideattic=0"><IMG SRC="http://www.nevrax.org/inc/img/picto-news.gif" ALT="[TXT]" BORDER="0" WIDTH="13" HEIGHT="15"></A>
+ <A HREF="admin_service.cpp?hideattic=0">admin_service.cpp</A>
+</td><td>&nbsp;<A HREF="admin_service.cpp?rev=1.15&amp;content-type=text/x-cvsweb-markup&amp;hideattic=0"><b>1.15</b></A></td><td>&nbsp; <i>4 months</i></td><td>&nbsp;lecroart</td><td>&nbsp; <font size=-1>CHANGED: use new service functions
+</font></td></tr>
+<tr bgcolor="#dddddd"><td><A NAME="admin_service.dsp"></A><A HREF="admin_service.dsp?hideattic=0"><IMG SRC="http://www.nevrax.org/inc/img/picto-news.gif" ALT="[TXT]" BORDER="0" WIDTH="13" HEIGHT="15"></A>
+ <A HREF="admin_service.dsp?hideattic=0">admin_service.dsp</A>
+</td><td>&nbsp;<A HREF="admin_service.dsp?rev=1.5&amp;content-type=text/x-cvsweb-markup&amp;hideattic=0"><b>1.5</b></A></td><td>&nbsp; <i>11 months</i></td><td>&nbsp;lecroart</td><td>&nbsp; <font size=-1>ADDED: DebugFast config
+</font></td></tr>
+<tr bgcolor="#cccccc"><td><A NAME="admin_service.vcproj"></A><A HREF="admin_service.vcproj?hideattic=0"><IMG SRC="http://www.nevrax.org/inc/img/picto-news.gif" ALT="[TXT]" BORDER="0" WIDTH="13" HEIGHT="15"></A>
+ <A HREF="admin_service.vcproj?hideattic=0">admin_service.vcproj</A>
+</td><td>&nbsp;<A HREF="admin_service.vcproj?rev=1.1&amp;content-type=text/x-cvsweb-markup&amp;hideattic=0"><b>1.1</b></A></td><td>&nbsp; <i>3 months</i></td><td>&nbsp;lecroart</td><td>&nbsp; <font size=-1>ADDED: visual .net project
+</font></td></tr>
+<tr bgcolor="#dddddd"><td><A NAME="common.cfg"></A><A HREF="common.cfg?hideattic=0"><IMG SRC="http://www.nevrax.org/inc/img/picto-news.gif" ALT="[TXT]" BORDER="0" WIDTH="13" HEIGHT="15"></A>
+ <A HREF="common.cfg?hideattic=0">common.cfg</A>
+</td><td>&nbsp;<A HREF="common.cfg?rev=1.1&amp;content-type=text/x-cvsweb-markup&amp;hideattic=0"><b>1.1</b></A></td><td>&nbsp; <i>3 months</i></td><td>&nbsp;lecroart</td><td>&nbsp; <font size=-1>ADDED: common.cfg
+</font></td></tr>
+</table><hr size=1 NOSHADE><FORM METHOD="GET" ACTION="./">
+<INPUT TYPE=HIDDEN NAME="hideattic" VALUE="0">
+Show only files with tag:
+<SELECT NAME=only_with_tag onchange="submit()"><OPTION VALUE="">All tags / default branch
+<OPTION>MAIN
+<OPTION>HEAD
+</SELECT>
+<INPUT TYPE=SUBMIT VALUE="Go">
+</FORM>
+
+<!-- footer -->
+<BR><FONT Size=+5>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </FONT>
+</TD>
+<TD WIDTH=15><IMG SRC=http://www.nevrax.org/inc/img/pixel.gif WIDTH=15 HEIGHT=15 BORDER=0 ALT=""></TD>
+</TR>
+</TABLE>
+</BODY>
+</HTML></BODY></HTML>
diff --git a/cvs/cvsweb.cgi/code/nelns/admin_service/?only_with_tag=HEAD/index.html b/cvs/cvsweb.cgi/code/nelns/admin_service/?only_with_tag=HEAD/index.html
new file mode 100644
index 00000000..8e4dbb21
--- /dev/null
+++ b/cvs/cvsweb.cgi/code/nelns/admin_service/?only_with_tag=HEAD/index.html
@@ -0,0 +1,107 @@
+<!doctype html public "-//W3C//DTD HTML 4.0 Transitional//EN" "http://www.w3.org/TR/REC-html40/loose.dtd">
+<HTML>
+<HEAD>
+ <TITLE>nevrax.org : cvs</TITLE>
+ <META name="keywords" content="freesoftware,nel,newt,snowballs,richard stallman,GNU,Multi-User Online World">
+
+ <LINK REL=stylesheet TYPE="text/css" HREF="http://www.nevrax.org/inc/css/nevrax.css">
+</HEAD>
+<BODY MARGINHEIGHT="0" MARGINWIDTH="0">
+
+<!-- uplinks -->
+<TABLE CELLSPACING=0 CELLPADDING=0 BORDER=0>
+ <TR>
+ <TD WIDTH=16><IMG SRC="http://www.nevrax.org/inc/img/pixel.gif" WIDTH="16" HEIGHT="16" BORDER=0 ALT=""></TD>
+ <TD WIDTH=140 BGCOLOR=#dddddd><IMG SRC="http://www.nevrax.org/inc/img/pixel.gif" WIDTH="140" HEIGHT="16" BORDER=0 ALT=""></TD>
+ <TD WIDTH=16><IMG SRC="http://www.nevrax.org/inc/img/pixel.gif" WIDTH="16" HEIGHT="16" BORDER=0 ALT=""></TD>
+ <TD><IMG width=6 height=14 SRC="http://www.nevrax.org/inc/img/reddots.gif" ALT="#" VSPACE=2 HSPACE=2 BORDER=0 ></TD><TD VALIGN=middle>&nbsp;<A CLASS=uplinks HREF=http://www.nevrax.org><b>Home</B></FONT></A>&nbsp;&nbsp;&nbsp;</TD>
+ <TD><IMG width=6 height=14 SRC="http://www.nevrax.org/inc/img/reddots.gif" ALT="#" VSPACE=2 HSPACE=2 BORDER=0 ></TD><TD VALIGN=middle>&nbsp;<A CLASS=uplinks HREF=http://www.nevrax.com><b>nevrax.com</B></FONT></A>&nbsp;&nbsp;&nbsp;</TD>
+ </TR>
+</TABLE>
+
+<!-- banner Nevrax -->
+<TABLE CELLSPACING=0 CELLPADDING=0 BORDER=0 WIDTH=100%>
+ <TR><TD BGCOLOR="#000000" BACKGROUND="http://www.nevrax.org/inc/img/black_banner.jpg"><A HREF="http://www.nevrax.org"><IMG SRC="http://www.nevrax.org/inc/img/nevrax.gif" WIDTH="170" HEIGHT="45" BORDER=0 ALT="Nevrax" ></A></TD></TR>
+</TABLE>
+
+<!-- main table -->
+<TABLE CELLSPACING=0 CELLPADDING=0 BORDER=0 height=100%>
+ <TR>
+ <TD WIDTH=16><IMG SRC="http://www.nevrax.org/inc/img/pixel.gif" WIDTH="16" HEIGHT="10" BORDER=0 ALT=""></TD>
+ <TD WIDTH=140 BGCOLOR=#dddddd VALIGN=TOP ALIGN=middle><IMG SRC="http://www.nevrax.org/inc/img/pixel.gif" WIDTH="140" HEIGHT="10" BORDER=0 ALT="">
+
+ <!------ Begin Box ------>
+ <TABLE BORDER=0 CELLSPACING=0 CELLPADDING=0 BGCOLOR=black><TR><TD><TABLE border=0 cellspacing=2 cellpadding=0 width=120><tr><TD ALIGN=middle bgcolor=black>
+ <FONT COLOR=white FACE="sans-serif"><B>Nevrax.org</B></FONT></TD></TR><tr><td colspan=2 bgcolor=#FFFFFF>
+ <TABLE cellspacing=0 cellpadding=1 border=0>
+ <tr><td ALIGN=middle><a class='linkbox' href="http://www.nevrax.org/news/" TITLE="Rubrique news"><img width=13 height=15 hspace=5 border=0 src=http://www.nevrax.org/inc/img/picto-news.gif ALT=#></A></td><td><a class='linkbox' href="http://www.nevrax.org/news/" TITLE="News">News</a></td></tr>
+ <tr><td ALIGN=middle><a class='linkbox' href="http://www.nevrax.org/mail/" TITLE="Rubrique mail"><img width=15 height=11 hspace=5 border=0 src=http://www.nevrax.org/inc/img/picto-mail.gif ALT=#></A></td><td><a class='linkbox' href="http://www.nevrax.org/mail/" TITLE="Mailing list archive">Mailing-list</a></td></tr>
+ <tr><td ALIGN=middle><a class='linkbox' href="http://www.nevrax.org/docs/" TITLE="Rubrique docs"><img width=14 height=16 hspace=5 border=0 src=http://www.nevrax.org/inc/img/picto-docs.gif ALT=#></A></td><td><a class='linkbox' href="http://www.nevrax.org/docs/" TITLE="Documentation">Documentation</a></td></tr>
+ <tr><td ALIGN=middle><a class='linkbox' href="http://www.nevrax.org/cvs/" TITLE="Rubrique cvs"><img width=13 height=17 hspace=5 border=0 src=http://www.nevrax.org/inc/img/picto-cvs.gif ALT=#></A></td><td><a class='linkbox' href="http://www.nevrax.org/cvs/" TITLE="CVS Web">CVS</a></td></tr>
+ <tr><td ALIGN=middle><a class='linkbox' href="http://www.nevrax.org/bugs/" TITLE="Rubrique bugs"><img width=20 height=16 hspace=5 border=0 src=http://www.nevrax.org/inc/img/picto-bugs.gif ALT=#></A></td><td><a class='linkbox' href="http://www.nevrax.org/bugs/" TITLE="Bugtracking">Bugs</a></td></tr>
+ <tr><td ALIGN=middle><a class='linkbox' href="http://www.nevrax.org/free/" TITLE="Rubrique license"><img width=18 height=12 hspace=5 border=0 src=http://www.nevrax.org/inc/img/picto-free.gif ALT=#></A></td><td><a class='linkbox' href="http://www.nevrax.org/free/" TITLE="Free Software">Free software</a></td></tr>
+ </TABLE>
+ </TD></TR></TABLE></TD></TR></TABLE>
+ <!------ End Box ------>
+
+ </TD>
+ <TD WIDTH=15><IMG SRC="http://www.nevrax.org/inc/img/pixel.gif" WIDTH="16" HEIGHT="16" BORDER=0 ALT=""></TD>
+ <TD ALIGN=left valign=top><IMG SRC="http://www.nevrax.org/inc/img/pixel.gif" WIDTH="140" HEIGHT="10" BORDER=0 ALT="">
+
+<!-- title -->
+<TABLE background="http://www.nevrax.org/inc/img/redline.gif" CELLSPACING=0 CELLPADDING=0 BORDER=0 width=100%><tr><td>
+<A HREF="http://www.nevrax.org/cvs/"><img src="http://www.nevrax.org/inc/img/t_cvs.gif" ALT="cvs" HEIGHT=20 BORDER=0></A>
+</td><td><IMG SRC="http://www.nevrax.org/inc/img/pixel.gif" WIDTH="1" HEIGHT="1" BORDER=0 ALT="">
+</td></tr></table>
+
+
+<!-- title -->
+<table width=100%><tr><td align=left><b> <a href="/cvs/cvsweb.cgi/?only_with_tag=HEAD">Nevrax</a> / <a href="/cvs/cvsweb.cgi/code/?only_with_tag=HEAD">code</a> / <a href="/cvs/cvsweb.cgi/code/nelns/?only_with_tag=HEAD">nelns</a> / admin_service</b></td><td align=right><b></b></td></TR></TABLE>
+<P>Current tag: <B>HEAD</b>
+<table width="100%" border=0 cellspacing=1 cellpadding=2>
+<tr><th align=left bgcolor="#222222"><font color=white>File</font></th><th align=left bgcolor="#000000"><a class=title href="./?sortby=rev&amp;only_with_tag=HEAD"><font color=white>Rev.</font></a></th><th align=left bgcolor="#000000"><a class=title href="./?sortby=date&amp;only_with_tag=HEAD"><font color=white>Age</font></a></th><th align=left bgcolor="#000000"><a class=title href="./?sortby=author&amp;only_with_tag=HEAD"><font color=white>Author</font></a></th><th align=left bgcolor="#000000"><a class=title href="./?sortby=log&amp;only_with_tag=HEAD"><font color=white>Last log entry</font></a></th></tr>
+<tr bgcolor="#dddddd"><td><A HREF="../?only_with_tag=HEAD"><IMG SRC="http://www.nevrax.org/inc/img/picto-up.gif" ALT="[BACK]" BORDER="0" WIDTH="14" HEIGHT="13"></A>
+ <A HREF="../?only_with_tag=HEAD">Previous Directory</A>
+</td><td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td></tr>
+
+<tr bgcolor="#cccccc"><td><A NAME="Makefile.am"></A><A HREF="Makefile.am?only_with_tag=HEAD"><IMG SRC="http://www.nevrax.org/inc/img/picto-news.gif" ALT="[TXT]" BORDER="0" WIDTH="13" HEIGHT="15"></A>
+ <A HREF="Makefile.am?only_with_tag=HEAD">Makefile.am</A>
+</td><td>&nbsp;<A HREF="Makefile.am?rev=1.6&amp;content-type=text/x-cvsweb-markup&amp;only_with_tag=HEAD"><b>1.6</b></A></td><td>&nbsp; <i>6 weeks</i></td><td>&nbsp;lecroart</td><td>&nbsp; <font size=-1>no message
+</font></td></tr>
+<tr bgcolor="#dddddd"><td><A NAME="admin_service.cfg"></A><A HREF="admin_service.cfg?only_with_tag=HEAD"><IMG SRC="http://www.nevrax.org/inc/img/picto-news.gif" ALT="[TXT]" BORDER="0" WIDTH="13" HEIGHT="15"></A>
+ <A HREF="admin_service.cfg?only_with_tag=HEAD">admin_service.cfg</A>
+</td><td>&nbsp;<A HREF="admin_service.cfg?rev=1.6&amp;content-type=text/x-cvsweb-markup&amp;only_with_tag=HEAD"><b>1.6</b></A></td><td>&nbsp; <i>3 months</i></td><td>&nbsp;lecroart</td><td>&nbsp; <font size=-1>ADDED: common.cfg
+</font></td></tr>
+<tr bgcolor="#cccccc"><td><A NAME="admin_service.cpp"></A><A HREF="admin_service.cpp?only_with_tag=HEAD"><IMG SRC="http://www.nevrax.org/inc/img/picto-news.gif" ALT="[TXT]" BORDER="0" WIDTH="13" HEIGHT="15"></A>
+ <A HREF="admin_service.cpp?only_with_tag=HEAD">admin_service.cpp</A>
+</td><td>&nbsp;<A HREF="admin_service.cpp?rev=1.15&amp;content-type=text/x-cvsweb-markup&amp;only_with_tag=HEAD"><b>1.15</b></A></td><td>&nbsp; <i>4 months</i></td><td>&nbsp;lecroart</td><td>&nbsp; <font size=-1>CHANGED: use new service functions
+</font></td></tr>
+<tr bgcolor="#dddddd"><td><A NAME="admin_service.dsp"></A><A HREF="admin_service.dsp?only_with_tag=HEAD"><IMG SRC="http://www.nevrax.org/inc/img/picto-news.gif" ALT="[TXT]" BORDER="0" WIDTH="13" HEIGHT="15"></A>
+ <A HREF="admin_service.dsp?only_with_tag=HEAD">admin_service.dsp</A>
+</td><td>&nbsp;<A HREF="admin_service.dsp?rev=1.5&amp;content-type=text/x-cvsweb-markup&amp;only_with_tag=HEAD"><b>1.5</b></A></td><td>&nbsp; <i>11 months</i></td><td>&nbsp;lecroart</td><td>&nbsp; <font size=-1>ADDED: DebugFast config
+</font></td></tr>
+<tr bgcolor="#cccccc"><td><A NAME="admin_service.vcproj"></A><A HREF="admin_service.vcproj?only_with_tag=HEAD"><IMG SRC="http://www.nevrax.org/inc/img/picto-news.gif" ALT="[TXT]" BORDER="0" WIDTH="13" HEIGHT="15"></A>
+ <A HREF="admin_service.vcproj?only_with_tag=HEAD">admin_service.vcproj</A>
+</td><td>&nbsp;<A HREF="admin_service.vcproj?rev=1.1&amp;content-type=text/x-cvsweb-markup&amp;only_with_tag=HEAD"><b>1.1</b></A></td><td>&nbsp; <i>3 months</i></td><td>&nbsp;lecroart</td><td>&nbsp; <font size=-1>ADDED: visual .net project
+</font></td></tr>
+<tr bgcolor="#dddddd"><td><A NAME="common.cfg"></A><A HREF="common.cfg?only_with_tag=HEAD"><IMG SRC="http://www.nevrax.org/inc/img/picto-news.gif" ALT="[TXT]" BORDER="0" WIDTH="13" HEIGHT="15"></A>
+ <A HREF="common.cfg?only_with_tag=HEAD">common.cfg</A>
+</td><td>&nbsp;<A HREF="common.cfg?rev=1.1&amp;content-type=text/x-cvsweb-markup&amp;only_with_tag=HEAD"><b>1.1</b></A></td><td>&nbsp; <i>3 months</i></td><td>&nbsp;lecroart</td><td>&nbsp; <font size=-1>ADDED: common.cfg
+</font></td></tr>
+</table><hr size=1 NOSHADE><FORM METHOD="GET" ACTION="./">
+Show only files with tag:
+<SELECT NAME=only_with_tag onchange="submit()"><OPTION VALUE="">All tags / default branch
+<OPTION>MAIN
+<OPTION SELECTED>HEAD
+</SELECT>
+<INPUT TYPE=SUBMIT VALUE="Go">
+</FORM>
+
+<!-- footer -->
+<BR><FONT Size=+5>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </FONT>
+</TD>
+<TD WIDTH=15><IMG SRC=http://www.nevrax.org/inc/img/pixel.gif WIDTH=15 HEIGHT=15 BORDER=0 ALT=""></TD>
+</TR>
+</TABLE>
+</BODY>
+</HTML></BODY></HTML>
diff --git a/cvs/cvsweb.cgi/code/nelns/admin_service/?sortby=author/index.html b/cvs/cvsweb.cgi/code/nelns/admin_service/?sortby=author/index.html
new file mode 100644
index 00000000..48f8be16
--- /dev/null
+++ b/cvs/cvsweb.cgi/code/nelns/admin_service/?sortby=author/index.html
@@ -0,0 +1,107 @@
+<!doctype html public "-//W3C//DTD HTML 4.0 Transitional//EN" "http://www.w3.org/TR/REC-html40/loose.dtd">
+<HTML>
+<HEAD>
+ <TITLE>nevrax.org : cvs</TITLE>
+ <META name="keywords" content="freesoftware,nel,newt,snowballs,richard stallman,GNU,Multi-User Online World">
+
+ <LINK REL=stylesheet TYPE="text/css" HREF="http://www.nevrax.org/inc/css/nevrax.css">
+</HEAD>
+<BODY MARGINHEIGHT="0" MARGINWIDTH="0">
+
+<!-- uplinks -->
+<TABLE CELLSPACING=0 CELLPADDING=0 BORDER=0>
+ <TR>
+ <TD WIDTH=16><IMG SRC="http://www.nevrax.org/inc/img/pixel.gif" WIDTH="16" HEIGHT="16" BORDER=0 ALT=""></TD>
+ <TD WIDTH=140 BGCOLOR=#dddddd><IMG SRC="http://www.nevrax.org/inc/img/pixel.gif" WIDTH="140" HEIGHT="16" BORDER=0 ALT=""></TD>
+ <TD WIDTH=16><IMG SRC="http://www.nevrax.org/inc/img/pixel.gif" WIDTH="16" HEIGHT="16" BORDER=0 ALT=""></TD>
+ <TD><IMG width=6 height=14 SRC="http://www.nevrax.org/inc/img/reddots.gif" ALT="#" VSPACE=2 HSPACE=2 BORDER=0 ></TD><TD VALIGN=middle>&nbsp;<A CLASS=uplinks HREF=http://www.nevrax.org><b>Home</B></FONT></A>&nbsp;&nbsp;&nbsp;</TD>
+ <TD><IMG width=6 height=14 SRC="http://www.nevrax.org/inc/img/reddots.gif" ALT="#" VSPACE=2 HSPACE=2 BORDER=0 ></TD><TD VALIGN=middle>&nbsp;<A CLASS=uplinks HREF=http://www.nevrax.com><b>nevrax.com</B></FONT></A>&nbsp;&nbsp;&nbsp;</TD>
+ </TR>
+</TABLE>
+
+<!-- banner Nevrax -->
+<TABLE CELLSPACING=0 CELLPADDING=0 BORDER=0 WIDTH=100%>
+ <TR><TD BGCOLOR="#000000" BACKGROUND="http://www.nevrax.org/inc/img/black_banner.jpg"><A HREF="http://www.nevrax.org"><IMG SRC="http://www.nevrax.org/inc/img/nevrax.gif" WIDTH="170" HEIGHT="45" BORDER=0 ALT="Nevrax" ></A></TD></TR>
+</TABLE>
+
+<!-- main table -->
+<TABLE CELLSPACING=0 CELLPADDING=0 BORDER=0 height=100%>
+ <TR>
+ <TD WIDTH=16><IMG SRC="http://www.nevrax.org/inc/img/pixel.gif" WIDTH="16" HEIGHT="10" BORDER=0 ALT=""></TD>
+ <TD WIDTH=140 BGCOLOR=#dddddd VALIGN=TOP ALIGN=middle><IMG SRC="http://www.nevrax.org/inc/img/pixel.gif" WIDTH="140" HEIGHT="10" BORDER=0 ALT="">
+
+ <!------ Begin Box ------>
+ <TABLE BORDER=0 CELLSPACING=0 CELLPADDING=0 BGCOLOR=black><TR><TD><TABLE border=0 cellspacing=2 cellpadding=0 width=120><tr><TD ALIGN=middle bgcolor=black>
+ <FONT COLOR=white FACE="sans-serif"><B>Nevrax.org</B></FONT></TD></TR><tr><td colspan=2 bgcolor=#FFFFFF>
+ <TABLE cellspacing=0 cellpadding=1 border=0>
+ <tr><td ALIGN=middle><a class='linkbox' href="http://www.nevrax.org/news/" TITLE="Rubrique news"><img width=13 height=15 hspace=5 border=0 src=http://www.nevrax.org/inc/img/picto-news.gif ALT=#></A></td><td><a class='linkbox' href="http://www.nevrax.org/news/" TITLE="News">News</a></td></tr>
+ <tr><td ALIGN=middle><a class='linkbox' href="http://www.nevrax.org/mail/" TITLE="Rubrique mail"><img width=15 height=11 hspace=5 border=0 src=http://www.nevrax.org/inc/img/picto-mail.gif ALT=#></A></td><td><a class='linkbox' href="http://www.nevrax.org/mail/" TITLE="Mailing list archive">Mailing-list</a></td></tr>
+ <tr><td ALIGN=middle><a class='linkbox' href="http://www.nevrax.org/docs/" TITLE="Rubrique docs"><img width=14 height=16 hspace=5 border=0 src=http://www.nevrax.org/inc/img/picto-docs.gif ALT=#></A></td><td><a class='linkbox' href="http://www.nevrax.org/docs/" TITLE="Documentation">Documentation</a></td></tr>
+ <tr><td ALIGN=middle><a class='linkbox' href="http://www.nevrax.org/cvs/" TITLE="Rubrique cvs"><img width=13 height=17 hspace=5 border=0 src=http://www.nevrax.org/inc/img/picto-cvs.gif ALT=#></A></td><td><a class='linkbox' href="http://www.nevrax.org/cvs/" TITLE="CVS Web">CVS</a></td></tr>
+ <tr><td ALIGN=middle><a class='linkbox' href="http://www.nevrax.org/bugs/" TITLE="Rubrique bugs"><img width=20 height=16 hspace=5 border=0 src=http://www.nevrax.org/inc/img/picto-bugs.gif ALT=#></A></td><td><a class='linkbox' href="http://www.nevrax.org/bugs/" TITLE="Bugtracking">Bugs</a></td></tr>
+ <tr><td ALIGN=middle><a class='linkbox' href="http://www.nevrax.org/free/" TITLE="Rubrique license"><img width=18 height=12 hspace=5 border=0 src=http://www.nevrax.org/inc/img/picto-free.gif ALT=#></A></td><td><a class='linkbox' href="http://www.nevrax.org/free/" TITLE="Free Software">Free software</a></td></tr>
+ </TABLE>
+ </TD></TR></TABLE></TD></TR></TABLE>
+ <!------ End Box ------>
+
+ </TD>
+ <TD WIDTH=15><IMG SRC="http://www.nevrax.org/inc/img/pixel.gif" WIDTH="16" HEIGHT="16" BORDER=0 ALT=""></TD>
+ <TD ALIGN=left valign=top><IMG SRC="http://www.nevrax.org/inc/img/pixel.gif" WIDTH="140" HEIGHT="10" BORDER=0 ALT="">
+
+<!-- title -->
+<TABLE background="http://www.nevrax.org/inc/img/redline.gif" CELLSPACING=0 CELLPADDING=0 BORDER=0 width=100%><tr><td>
+<A HREF="http://www.nevrax.org/cvs/"><img src="http://www.nevrax.org/inc/img/t_cvs.gif" ALT="cvs" HEIGHT=20 BORDER=0></A>
+</td><td><IMG SRC="http://www.nevrax.org/inc/img/pixel.gif" WIDTH="1" HEIGHT="1" BORDER=0 ALT="">
+</td></tr></table>
+
+
+<!-- title -->
+<table width=100%><tr><td align=left><b> <a href="/cvs/cvsweb.cgi/?sortby=author">Nevrax</a> / <a href="/cvs/cvsweb.cgi/code/?sortby=author">code</a> / <a href="/cvs/cvsweb.cgi/code/nelns/?sortby=author">nelns</a> / admin_service</b></td><td align=right><b></b></td></TR></TABLE>
+<table width="100%" border=0 cellspacing=1 cellpadding=2>
+<tr><th align=left bgcolor="#000000"><a class=title href="./"><font color=white>File</font></a></th><th align=left bgcolor="#000000"><a class=title href="./?sortby=rev"><font color=white>Rev.</font></a></th><th align=left bgcolor="#000000"><a class=title href="./?sortby=date"><font color=white>Age</font></a></th><th align=left bgcolor="#222222"><font color=white>Author</font></th><th align=left bgcolor="#000000"><a class=title href="./?sortby=log"><font color=white>Last log entry</font></a></th></tr>
+<tr bgcolor="#dddddd"><td><A HREF="../?sortby=author"><IMG SRC="http://www.nevrax.org/inc/img/picto-up.gif" ALT="[BACK]" BORDER="0" WIDTH="14" HEIGHT="13"></A>
+ <A HREF="../?sortby=author">Previous Directory</A>
+</td><td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td></tr>
+
+<tr bgcolor="#cccccc"><td><A NAME="Makefile.am"></A><A HREF="Makefile.am?sortby=author"><IMG SRC="http://www.nevrax.org/inc/img/picto-news.gif" ALT="[TXT]" BORDER="0" WIDTH="13" HEIGHT="15"></A>
+ <A HREF="Makefile.am?sortby=author">Makefile.am</A>
+</td><td>&nbsp;<A HREF="Makefile.am?rev=1.6&amp;content-type=text/x-cvsweb-markup&amp;sortby=author"><b>1.6</b></A></td><td>&nbsp; <i>9 days</i></td><td>&nbsp;lecroart</td><td>&nbsp; <font size=-1>no message
+</font></td></tr>
+<tr bgcolor="#dddddd"><td><A NAME="admin_service.cfg"></A><A HREF="admin_service.cfg?sortby=author"><IMG SRC="http://www.nevrax.org/inc/img/picto-news.gif" ALT="[TXT]" BORDER="0" WIDTH="13" HEIGHT="15"></A>
+ <A HREF="admin_service.cfg?sortby=author">admin_service.cfg</A>
+</td><td>&nbsp;<A HREF="admin_service.cfg?rev=1.6&amp;content-type=text/x-cvsweb-markup&amp;sortby=author"><b>1.6</b></A></td><td>&nbsp; <i>8 weeks</i></td><td>&nbsp;lecroart</td><td>&nbsp; <font size=-1>ADDED: common.cfg
+</font></td></tr>
+<tr bgcolor="#cccccc"><td><A NAME="admin_service.cpp"></A><A HREF="admin_service.cpp?sortby=author"><IMG SRC="http://www.nevrax.org/inc/img/picto-news.gif" ALT="[TXT]" BORDER="0" WIDTH="13" HEIGHT="15"></A>
+ <A HREF="admin_service.cpp?sortby=author">admin_service.cpp</A>
+</td><td>&nbsp;<A HREF="admin_service.cpp?rev=1.15&amp;content-type=text/x-cvsweb-markup&amp;sortby=author"><b>1.15</b></A></td><td>&nbsp; <i>2 months</i></td><td>&nbsp;lecroart</td><td>&nbsp; <font size=-1>CHANGED: use new service functions
+</font></td></tr>
+<tr bgcolor="#dddddd"><td><A NAME="admin_service.dsp"></A><A HREF="admin_service.dsp?sortby=author"><IMG SRC="http://www.nevrax.org/inc/img/picto-news.gif" ALT="[TXT]" BORDER="0" WIDTH="13" HEIGHT="15"></A>
+ <A HREF="admin_service.dsp?sortby=author">admin_service.dsp</A>
+</td><td>&nbsp;<A HREF="admin_service.dsp?rev=1.5&amp;content-type=text/x-cvsweb-markup&amp;sortby=author"><b>1.5</b></A></td><td>&nbsp; <i>9 months</i></td><td>&nbsp;lecroart</td><td>&nbsp; <font size=-1>ADDED: DebugFast config
+</font></td></tr>
+<tr bgcolor="#cccccc"><td><A NAME="admin_service.vcproj"></A><A HREF="admin_service.vcproj?sortby=author"><IMG SRC="http://www.nevrax.org/inc/img/picto-news.gif" ALT="[TXT]" BORDER="0" WIDTH="13" HEIGHT="15"></A>
+ <A HREF="admin_service.vcproj?sortby=author">admin_service.vcproj</A>
+</td><td>&nbsp;<A HREF="admin_service.vcproj?rev=1.1&amp;content-type=text/x-cvsweb-markup&amp;sortby=author"><b>1.1</b></A></td><td>&nbsp; <i>2 months</i></td><td>&nbsp;lecroart</td><td>&nbsp; <font size=-1>ADDED: visual .net project
+</font></td></tr>
+<tr bgcolor="#dddddd"><td><A NAME="common.cfg"></A><A HREF="common.cfg?sortby=author"><IMG SRC="http://www.nevrax.org/inc/img/picto-news.gif" ALT="[TXT]" BORDER="0" WIDTH="13" HEIGHT="15"></A>
+ <A HREF="common.cfg?sortby=author">common.cfg</A>
+</td><td>&nbsp;<A HREF="common.cfg?rev=1.1&amp;content-type=text/x-cvsweb-markup&amp;sortby=author"><b>1.1</b></A></td><td>&nbsp; <i>8 weeks</i></td><td>&nbsp;lecroart</td><td>&nbsp; <font size=-1>ADDED: common.cfg
+</font></td></tr>
+</table><hr size=1 NOSHADE><FORM METHOD="GET" ACTION="./">
+<INPUT TYPE=HIDDEN NAME="sortby" VALUE="author">
+Show only files with tag:
+<SELECT NAME=only_with_tag onchange="submit()"><OPTION VALUE="">All tags / default branch
+<OPTION>MAIN
+<OPTION>HEAD
+</SELECT>
+<INPUT TYPE=SUBMIT VALUE="Go">
+</FORM>
+
+<!-- footer -->
+<BR><FONT Size=+5>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </FONT>
+</TD>
+<TD WIDTH=15><IMG SRC=http://www.nevrax.org/inc/img/pixel.gif WIDTH=15 HEIGHT=15 BORDER=0 ALT=""></TD>
+</TR>
+</TABLE>
+</BODY>
+</HTML></BODY></HTML>
diff --git a/cvs/cvsweb.cgi/code/nelns/admin_service/?sortby=date/index.html b/cvs/cvsweb.cgi/code/nelns/admin_service/?sortby=date/index.html
new file mode 100644
index 00000000..c65f6cab
--- /dev/null
+++ b/cvs/cvsweb.cgi/code/nelns/admin_service/?sortby=date/index.html
@@ -0,0 +1,98 @@
+<!doctype html public "-//W3C//DTD HTML 4.0 Transitional//EN" "http://www.w3.org/TR/REC-html40/loose.dtd">
+<HTML>
+<HEAD>
+ <TITLE>nevrax.org : cvs</TITLE>
+ <META name="keywords" content="freesoftware,nel,newt,snowballs,richard stallman,GNU,Multi-User Online World">
+
+ <LINK REL=stylesheet TYPE="text/css" HREF="http://www.nevrax.org/inc/css/nevrax.css">
+</HEAD>
+<BODY MARGINHEIGHT="0" MARGINWIDTH="0">
+
+<!-- uplinks -->
+<TABLE CELLSPACING=0 CELLPADDING=0 BORDER=0>
+ <TR>
+ <TD WIDTH=16><IMG SRC="http://www.nevrax.org/inc/img/pixel.gif" WIDTH="16" HEIGHT="16" BORDER=0 ALT=""></TD>
+ <TD WIDTH=140 BGCOLOR=#dddddd><IMG SRC="http://www.nevrax.org/inc/img/pixel.gif" WIDTH="140" HEIGHT="16" BORDER=0 ALT=""></TD>
+ <TD WIDTH=16><IMG SRC="http://www.nevrax.org/inc/img/pixel.gif" WIDTH="16" HEIGHT="16" BORDER=0 ALT=""></TD>
+ <TD><IMG width=6 height=14 SRC="http://www.nevrax.org/inc/img/reddots.gif" ALT="#" VSPACE=2 HSPACE=2 BORDER=0 ></TD><TD VALIGN=middle>&nbsp;<A CLASS=uplinks HREF=http://www.nevrax.org><b>Home</B></FONT></A>&nbsp;&nbsp;&nbsp;</TD>
+ <TD><IMG width=6 height=14 SRC="http://www.nevrax.org/inc/img/reddots.gif" ALT="#" VSPACE=2 HSPACE=2 BORDER=0 ></TD><TD VALIGN=middle>&nbsp;<A CLASS=uplinks HREF=http://www.nevrax.com><b>nevrax.com</B></FONT></A>&nbsp;&nbsp;&nbsp;</TD>
+ </TR>
+</TABLE>
+
+<!-- banner Nevrax -->
+<TABLE CELLSPACING=0 CELLPADDING=0 BORDER=0 WIDTH=100%>
+ <TR><TD BGCOLOR="#000000" BACKGROUND="http://www.nevrax.org/inc/img/black_banner.jpg"><A HREF="http://www.nevrax.org"><IMG SRC="http://www.nevrax.org/inc/img/nevrax.gif" WIDTH="170" HEIGHT="45" BORDER=0 ALT="Nevrax" ></A></TD></TR>
+</TABLE>
+
+<!-- main table -->
+<TABLE CELLSPACING=0 CELLPADDING=0 BORDER=0 height=100%>
+ <TR>
+ <TD WIDTH=16><IMG SRC="http://www.nevrax.org/inc/img/pixel.gif" WIDTH="16" HEIGHT="10" BORDER=0 ALT=""></TD>
+ <TD WIDTH=140 BGCOLOR=#dddddd VALIGN=TOP ALIGN=middle><IMG SRC="http://www.nevrax.org/inc/img/pixel.gif" WIDTH="140" HEIGHT="10" BORDER=0 ALT="">
+
+ <!------ Begin Box ------>
+ <TABLE BORDER=0 CELLSPACING=0 CELLPADDING=0 BGCOLOR=black><TR><TD><TABLE border=0 cellspacing=2 cellpadding=0 width=120><tr><TD ALIGN=middle bgcolor=black>
+ <FONT COLOR=white FACE="sans-serif"><B>Nevrax.org</B></FONT></TD></TR><tr><td colspan=2 bgcolor=#FFFFFF>
+ <TABLE cellspacing=0 cellpadding=1 border=0>
+ <tr><td ALIGN=middle><a class='linkbox' href="http://www.nevrax.org/news/" TITLE="Rubrique news"><img width=13 height=15 hspace=5 border=0 src=http://www.nevrax.org/inc/img/picto-news.gif ALT=#></A></td><td><a class='linkbox' href="http://www.nevrax.org/news/" TITLE="News">News</a></td></tr>
+ <tr><td ALIGN=middle><a class='linkbox' href="http://www.nevrax.org/mail/" TITLE="Rubrique mail"><img width=15 height=11 hspace=5 border=0 src=http://www.nevrax.org/inc/img/picto-mail.gif ALT=#></A></td><td><a class='linkbox' href="http://www.nevrax.org/mail/" TITLE="Mailing list archive">Mailing-list</a></td></tr>
+ <tr><td ALIGN=middle><a class='linkbox' href="http://www.nevrax.org/docs/" TITLE="Rubrique docs"><img width=14 height=16 hspace=5 border=0 src=http://www.nevrax.org/inc/img/picto-docs.gif ALT=#></A></td><td><a class='linkbox' href="http://www.nevrax.org/docs/" TITLE="Documentation">Documentation</a></td></tr>
+ <tr><td ALIGN=middle><a class='linkbox' href="http://www.nevrax.org/cvs/" TITLE="Rubrique cvs"><img width=13 height=17 hspace=5 border=0 src=http://www.nevrax.org/inc/img/picto-cvs.gif ALT=#></A></td><td><a class='linkbox' href="http://www.nevrax.org/cvs/" TITLE="CVS Web">CVS</a></td></tr>
+ <tr><td ALIGN=middle><a class='linkbox' href="http://www.nevrax.org/bugs/" TITLE="Rubrique bugs"><img width=20 height=16 hspace=5 border=0 src=http://www.nevrax.org/inc/img/picto-bugs.gif ALT=#></A></td><td><a class='linkbox' href="http://www.nevrax.org/bugs/" TITLE="Bugtracking">Bugs</a></td></tr>
+ <tr><td ALIGN=middle><a class='linkbox' href="http://www.nevrax.org/free/" TITLE="Rubrique license"><img width=18 height=12 hspace=5 border=0 src=http://www.nevrax.org/inc/img/picto-free.gif ALT=#></A></td><td><a class='linkbox' href="http://www.nevrax.org/free/" TITLE="Free Software">Free software</a></td></tr>
+ </TABLE>
+ </TD></TR></TABLE></TD></TR></TABLE>
+ <!------ End Box ------>
+
+ </TD>
+ <TD WIDTH=15><IMG SRC="http://www.nevrax.org/inc/img/pixel.gif" WIDTH="16" HEIGHT="16" BORDER=0 ALT=""></TD>
+ <TD ALIGN=left valign=top><IMG SRC="http://www.nevrax.org/inc/img/pixel.gif" WIDTH="140" HEIGHT="10" BORDER=0 ALT="">
+
+<!-- title -->
+<TABLE background="http://www.nevrax.org/inc/img/redline.gif" CELLSPACING=0 CELLPADDING=0 BORDER=0 width=100%><tr><td>
+<A HREF="http://www.nevrax.org/cvs/"><img src="http://www.nevrax.org/inc/img/t_cvs.gif" ALT="cvs" HEIGHT=20 BORDER=0></A>
+</td><td><IMG SRC="http://www.nevrax.org/inc/img/pixel.gif" WIDTH="1" HEIGHT="1" BORDER=0 ALT="">
+</td></tr></table>
+
+
+<!-- title -->
+<table width=100%><tr><td align=left><b> <a href="/cvs/cvsweb.cgi/?sortby=date">Nevrax</a> / <a href="/cvs/cvsweb.cgi/code/?sortby=date">code</a> / <a href="/cvs/cvsweb.cgi/code/nelns/?sortby=date">nelns</a> / admin_service</b></td><td align=right><b></b></td></TR></TABLE>
+<table width="100%" border=0 cellspacing=1 cellpadding=2>
+<tr><th align=left bgcolor="#000000"><a class=title href="./"><font color=white>File</font></a></th><th align=left bgcolor="#000000"><a class=title href="./?sortby=rev"><font color=white>Rev.</font></a></th><th align=left bgcolor="#222222"><font color=white>Age</font></th><th align=left bgcolor="#000000"><a class=title href="./?sortby=author"><font color=white>Author</font></a></th><th align=left bgcolor="#000000"><a class=title href="./?sortby=log"><font color=white>Last log entry</font></a></th></tr>
+<tr bgcolor="#dddddd"><td><A HREF="../?sortby=date"><IMG SRC="http://www.nevrax.org/inc/img/picto-up.gif" ALT="[BACK]" BORDER="0" WIDTH="14" HEIGHT="13"></A>
+ <A HREF="../?sortby=date">Previous Directory</A>
+</td><td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td></tr>
+
+<tr bgcolor="#cccccc"><td><A NAME="admin_service.cpp"></A><A HREF="admin_service.cpp?sortby=date"><IMG SRC="http://www.nevrax.org/inc/img/picto-news.gif" ALT="[TXT]" BORDER="0" WIDTH="13" HEIGHT="15"></A>
+ <A HREF="admin_service.cpp?sortby=date">admin_service.cpp</A>
+</td><td>&nbsp;<A HREF="admin_service.cpp?rev=1.11&amp;content-type=text/x-cvsweb-markup&amp;sortby=date"><b>1.11</b></A></td><td>&nbsp; <i>10 days</i></td><td>&nbsp;lecroart</td><td>&nbsp; <font size=-1>BUGFIX: when a service isn't ready and already disconnected, it doesn't crash an...</font></td></tr>
+<tr bgcolor="#dddddd"><td><A NAME="admin_service.cfg"></A><A HREF="admin_service.cfg?sortby=date"><IMG SRC="http://www.nevrax.org/inc/img/picto-news.gif" ALT="[TXT]" BORDER="0" WIDTH="13" HEIGHT="15"></A>
+ <A HREF="admin_service.cfg?sortby=date">admin_service.cfg</A>
+</td><td>&nbsp;<A HREF="admin_service.cfg?rev=1.3&amp;content-type=text/x-cvsweb-markup&amp;sortby=date"><b>1.3</b></A></td><td>&nbsp; <i>3 weeks</i></td><td>&nbsp;lecroart</td><td>&nbsp; <font size=-1>ADDED: win32 console position
+</font></td></tr>
+<tr bgcolor="#cccccc"><td><A NAME="admin_service.dsp"></A><A HREF="admin_service.dsp?sortby=date"><IMG SRC="http://www.nevrax.org/inc/img/picto-news.gif" ALT="[TXT]" BORDER="0" WIDTH="13" HEIGHT="15"></A>
+ <A HREF="admin_service.dsp?sortby=date">admin_service.dsp</A>
+</td><td>&nbsp;<A HREF="admin_service.dsp?rev=1.4&amp;content-type=text/x-cvsweb-markup&amp;sortby=date"><b>1.4</b></A></td><td>&nbsp; <i>5 weeks</i></td><td>&nbsp;lecroart</td><td>&nbsp; <font size=-1>CHANGED: use win32
+</font></td></tr>
+<tr bgcolor="#dddddd"><td><A NAME="Makefile.am"></A><A HREF="Makefile.am?sortby=date"><IMG SRC="http://www.nevrax.org/inc/img/picto-news.gif" ALT="[TXT]" BORDER="0" WIDTH="13" HEIGHT="15"></A>
+ <A HREF="Makefile.am?sortby=date">Makefile.am</A>
+</td><td>&nbsp;<A HREF="Makefile.am?rev=1.2&amp;content-type=text/x-cvsweb-markup&amp;sortby=date"><b>1.2</b></A></td><td>&nbsp; <i>2 months</i></td><td>&nbsp;lecroart</td><td>&nbsp; <font size=-1>BUGFIX: now compile on linux
+</font></td></tr>
+</table><hr size=1 NOSHADE><FORM METHOD="GET" ACTION="./">
+<INPUT TYPE=HIDDEN NAME="sortby" VALUE="date">
+Show only files with tag:
+<SELECT NAME=only_with_tag onchange="submit()"><OPTION VALUE="">All tags / default branch
+<OPTION>MAIN
+<OPTION>HEAD
+</SELECT>
+<INPUT TYPE=SUBMIT VALUE="Go">
+</FORM>
+
+<!-- footer -->
+<BR><FONT Size=+5>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </FONT>
+</TD>
+<TD WIDTH=15><IMG SRC=http://www.nevrax.org/inc/img/pixel.gif WIDTH=15 HEIGHT=15 BORDER=0 ALT=""></TD>
+</TR>
+</TABLE>
+</BODY>
+</HTML></BODY></HTML>
diff --git a/cvs/cvsweb.cgi/code/nelns/admin_service/?sortby=log/index.html b/cvs/cvsweb.cgi/code/nelns/admin_service/?sortby=log/index.html
new file mode 100644
index 00000000..895ec88e
--- /dev/null
+++ b/cvs/cvsweb.cgi/code/nelns/admin_service/?sortby=log/index.html
@@ -0,0 +1,107 @@
+<!doctype html public "-//W3C//DTD HTML 4.0 Transitional//EN" "http://www.w3.org/TR/REC-html40/loose.dtd">
+<HTML>
+<HEAD>
+ <TITLE>nevrax.org : cvs</TITLE>
+ <META name="keywords" content="freesoftware,nel,newt,snowballs,richard stallman,GNU,Multi-User Online World">
+
+ <LINK REL=stylesheet TYPE="text/css" HREF="http://www.nevrax.org/inc/css/nevrax.css">
+</HEAD>
+<BODY MARGINHEIGHT="0" MARGINWIDTH="0">
+
+<!-- uplinks -->
+<TABLE CELLSPACING=0 CELLPADDING=0 BORDER=0>
+ <TR>
+ <TD WIDTH=16><IMG SRC="http://www.nevrax.org/inc/img/pixel.gif" WIDTH="16" HEIGHT="16" BORDER=0 ALT=""></TD>
+ <TD WIDTH=140 BGCOLOR=#dddddd><IMG SRC="http://www.nevrax.org/inc/img/pixel.gif" WIDTH="140" HEIGHT="16" BORDER=0 ALT=""></TD>
+ <TD WIDTH=16><IMG SRC="http://www.nevrax.org/inc/img/pixel.gif" WIDTH="16" HEIGHT="16" BORDER=0 ALT=""></TD>
+ <TD><IMG width=6 height=14 SRC="http://www.nevrax.org/inc/img/reddots.gif" ALT="#" VSPACE=2 HSPACE=2 BORDER=0 ></TD><TD VALIGN=middle>&nbsp;<A CLASS=uplinks HREF=http://www.nevrax.org><b>Home</B></FONT></A>&nbsp;&nbsp;&nbsp;</TD>
+ <TD><IMG width=6 height=14 SRC="http://www.nevrax.org/inc/img/reddots.gif" ALT="#" VSPACE=2 HSPACE=2 BORDER=0 ></TD><TD VALIGN=middle>&nbsp;<A CLASS=uplinks HREF=http://www.nevrax.com><b>nevrax.com</B></FONT></A>&nbsp;&nbsp;&nbsp;</TD>
+ </TR>
+</TABLE>
+
+<!-- banner Nevrax -->
+<TABLE CELLSPACING=0 CELLPADDING=0 BORDER=0 WIDTH=100%>
+ <TR><TD BGCOLOR="#000000" BACKGROUND="http://www.nevrax.org/inc/img/black_banner.jpg"><A HREF="http://www.nevrax.org"><IMG SRC="http://www.nevrax.org/inc/img/nevrax.gif" WIDTH="170" HEIGHT="45" BORDER=0 ALT="Nevrax" ></A></TD></TR>
+</TABLE>
+
+<!-- main table -->
+<TABLE CELLSPACING=0 CELLPADDING=0 BORDER=0 height=100%>
+ <TR>
+ <TD WIDTH=16><IMG SRC="http://www.nevrax.org/inc/img/pixel.gif" WIDTH="16" HEIGHT="10" BORDER=0 ALT=""></TD>
+ <TD WIDTH=140 BGCOLOR=#dddddd VALIGN=TOP ALIGN=middle><IMG SRC="http://www.nevrax.org/inc/img/pixel.gif" WIDTH="140" HEIGHT="10" BORDER=0 ALT="">
+
+ <!------ Begin Box ------>
+ <TABLE BORDER=0 CELLSPACING=0 CELLPADDING=0 BGCOLOR=black><TR><TD><TABLE border=0 cellspacing=2 cellpadding=0 width=120><tr><TD ALIGN=middle bgcolor=black>
+ <FONT COLOR=white FACE="sans-serif"><B>Nevrax.org</B></FONT></TD></TR><tr><td colspan=2 bgcolor=#FFFFFF>
+ <TABLE cellspacing=0 cellpadding=1 border=0>
+ <tr><td ALIGN=middle><a class='linkbox' href="http://www.nevrax.org/news/" TITLE="Rubrique news"><img width=13 height=15 hspace=5 border=0 src=http://www.nevrax.org/inc/img/picto-news.gif ALT=#></A></td><td><a class='linkbox' href="http://www.nevrax.org/news/" TITLE="News">News</a></td></tr>
+ <tr><td ALIGN=middle><a class='linkbox' href="http://www.nevrax.org/mail/" TITLE="Rubrique mail"><img width=15 height=11 hspace=5 border=0 src=http://www.nevrax.org/inc/img/picto-mail.gif ALT=#></A></td><td><a class='linkbox' href="http://www.nevrax.org/mail/" TITLE="Mailing list archive">Mailing-list</a></td></tr>
+ <tr><td ALIGN=middle><a class='linkbox' href="http://www.nevrax.org/docs/" TITLE="Rubrique docs"><img width=14 height=16 hspace=5 border=0 src=http://www.nevrax.org/inc/img/picto-docs.gif ALT=#></A></td><td><a class='linkbox' href="http://www.nevrax.org/docs/" TITLE="Documentation">Documentation</a></td></tr>
+ <tr><td ALIGN=middle><a class='linkbox' href="http://www.nevrax.org/cvs/" TITLE="Rubrique cvs"><img width=13 height=17 hspace=5 border=0 src=http://www.nevrax.org/inc/img/picto-cvs.gif ALT=#></A></td><td><a class='linkbox' href="http://www.nevrax.org/cvs/" TITLE="CVS Web">CVS</a></td></tr>
+ <tr><td ALIGN=middle><a class='linkbox' href="http://www.nevrax.org/bugs/" TITLE="Rubrique bugs"><img width=20 height=16 hspace=5 border=0 src=http://www.nevrax.org/inc/img/picto-bugs.gif ALT=#></A></td><td><a class='linkbox' href="http://www.nevrax.org/bugs/" TITLE="Bugtracking">Bugs</a></td></tr>
+ <tr><td ALIGN=middle><a class='linkbox' href="http://www.nevrax.org/free/" TITLE="Rubrique license"><img width=18 height=12 hspace=5 border=0 src=http://www.nevrax.org/inc/img/picto-free.gif ALT=#></A></td><td><a class='linkbox' href="http://www.nevrax.org/free/" TITLE="Free Software">Free software</a></td></tr>
+ </TABLE>
+ </TD></TR></TABLE></TD></TR></TABLE>
+ <!------ End Box ------>
+
+ </TD>
+ <TD WIDTH=15><IMG SRC="http://www.nevrax.org/inc/img/pixel.gif" WIDTH="16" HEIGHT="16" BORDER=0 ALT=""></TD>
+ <TD ALIGN=left valign=top><IMG SRC="http://www.nevrax.org/inc/img/pixel.gif" WIDTH="140" HEIGHT="10" BORDER=0 ALT="">
+
+<!-- title -->
+<TABLE background="http://www.nevrax.org/inc/img/redline.gif" CELLSPACING=0 CELLPADDING=0 BORDER=0 width=100%><tr><td>
+<A HREF="http://www.nevrax.org/cvs/"><img src="http://www.nevrax.org/inc/img/t_cvs.gif" ALT="cvs" HEIGHT=20 BORDER=0></A>
+</td><td><IMG SRC="http://www.nevrax.org/inc/img/pixel.gif" WIDTH="1" HEIGHT="1" BORDER=0 ALT="">
+</td></tr></table>
+
+
+<!-- title -->
+<table width=100%><tr><td align=left><b> <a href="/cvs/cvsweb.cgi/?sortby=log">Nevrax</a> / <a href="/cvs/cvsweb.cgi/code/?sortby=log">code</a> / <a href="/cvs/cvsweb.cgi/code/nelns/?sortby=log">nelns</a> / admin_service</b></td><td align=right><b></b></td></TR></TABLE>
+<table width="100%" border=0 cellspacing=1 cellpadding=2>
+<tr><th align=left bgcolor="#000000"><a class=title href="./"><font color=white>File</font></a></th><th align=left bgcolor="#000000"><a class=title href="./?sortby=rev"><font color=white>Rev.</font></a></th><th align=left bgcolor="#000000"><a class=title href="./?sortby=date"><font color=white>Age</font></a></th><th align=left bgcolor="#000000"><a class=title href="./?sortby=author"><font color=white>Author</font></a></th><th align=left bgcolor="#222222"><font color=white>Last log entry</font></th></tr>
+<tr bgcolor="#dddddd"><td><A HREF="../?sortby=log"><IMG SRC="http://www.nevrax.org/inc/img/picto-up.gif" ALT="[BACK]" BORDER="0" WIDTH="14" HEIGHT="13"></A>
+ <A HREF="../?sortby=log">Previous Directory</A>
+</td><td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td></tr>
+
+<tr bgcolor="#cccccc"><td><A NAME="admin_service.dsp"></A><A HREF="admin_service.dsp?sortby=log"><IMG SRC="http://www.nevrax.org/inc/img/picto-news.gif" ALT="[TXT]" BORDER="0" WIDTH="13" HEIGHT="15"></A>
+ <A HREF="admin_service.dsp?sortby=log">admin_service.dsp</A>
+</td><td>&nbsp;<A HREF="admin_service.dsp?rev=1.5&amp;content-type=text/x-cvsweb-markup&amp;sortby=log"><b>1.5</b></A></td><td>&nbsp; <i>9 months</i></td><td>&nbsp;lecroart</td><td>&nbsp; <font size=-1>ADDED: DebugFast config
+</font></td></tr>
+<tr bgcolor="#dddddd"><td><A NAME="admin_service.cfg"></A><A HREF="admin_service.cfg?sortby=log"><IMG SRC="http://www.nevrax.org/inc/img/picto-news.gif" ALT="[TXT]" BORDER="0" WIDTH="13" HEIGHT="15"></A>
+ <A HREF="admin_service.cfg?sortby=log">admin_service.cfg</A>
+</td><td>&nbsp;<A HREF="admin_service.cfg?rev=1.6&amp;content-type=text/x-cvsweb-markup&amp;sortby=log"><b>1.6</b></A></td><td>&nbsp; <i>8 weeks</i></td><td>&nbsp;lecroart</td><td>&nbsp; <font size=-1>ADDED: common.cfg
+</font></td></tr>
+<tr bgcolor="#cccccc"><td><A NAME="common.cfg"></A><A HREF="common.cfg?sortby=log"><IMG SRC="http://www.nevrax.org/inc/img/picto-news.gif" ALT="[TXT]" BORDER="0" WIDTH="13" HEIGHT="15"></A>
+ <A HREF="common.cfg?sortby=log">common.cfg</A>
+</td><td>&nbsp;<A HREF="common.cfg?rev=1.1&amp;content-type=text/x-cvsweb-markup&amp;sortby=log"><b>1.1</b></A></td><td>&nbsp; <i>8 weeks</i></td><td>&nbsp;lecroart</td><td>&nbsp; <font size=-1>ADDED: common.cfg
+</font></td></tr>
+<tr bgcolor="#dddddd"><td><A NAME="admin_service.vcproj"></A><A HREF="admin_service.vcproj?sortby=log"><IMG SRC="http://www.nevrax.org/inc/img/picto-news.gif" ALT="[TXT]" BORDER="0" WIDTH="13" HEIGHT="15"></A>
+ <A HREF="admin_service.vcproj?sortby=log">admin_service.vcproj</A>
+</td><td>&nbsp;<A HREF="admin_service.vcproj?rev=1.1&amp;content-type=text/x-cvsweb-markup&amp;sortby=log"><b>1.1</b></A></td><td>&nbsp; <i>2 months</i></td><td>&nbsp;lecroart</td><td>&nbsp; <font size=-1>ADDED: visual .net project
+</font></td></tr>
+<tr bgcolor="#cccccc"><td><A NAME="admin_service.cpp"></A><A HREF="admin_service.cpp?sortby=log"><IMG SRC="http://www.nevrax.org/inc/img/picto-news.gif" ALT="[TXT]" BORDER="0" WIDTH="13" HEIGHT="15"></A>
+ <A HREF="admin_service.cpp?sortby=log">admin_service.cpp</A>
+</td><td>&nbsp;<A HREF="admin_service.cpp?rev=1.15&amp;content-type=text/x-cvsweb-markup&amp;sortby=log"><b>1.15</b></A></td><td>&nbsp; <i>2 months</i></td><td>&nbsp;lecroart</td><td>&nbsp; <font size=-1>CHANGED: use new service functions
+</font></td></tr>
+<tr bgcolor="#dddddd"><td><A NAME="Makefile.am"></A><A HREF="Makefile.am?sortby=log"><IMG SRC="http://www.nevrax.org/inc/img/picto-news.gif" ALT="[TXT]" BORDER="0" WIDTH="13" HEIGHT="15"></A>
+ <A HREF="Makefile.am?sortby=log">Makefile.am</A>
+</td><td>&nbsp;<A HREF="Makefile.am?rev=1.6&amp;content-type=text/x-cvsweb-markup&amp;sortby=log"><b>1.6</b></A></td><td>&nbsp; <i>9 days</i></td><td>&nbsp;lecroart</td><td>&nbsp; <font size=-1>no message
+</font></td></tr>
+</table><hr size=1 NOSHADE><FORM METHOD="GET" ACTION="./">
+<INPUT TYPE=HIDDEN NAME="sortby" VALUE="log">
+Show only files with tag:
+<SELECT NAME=only_with_tag onchange="submit()"><OPTION VALUE="">All tags / default branch
+<OPTION>MAIN
+<OPTION>HEAD
+</SELECT>
+<INPUT TYPE=SUBMIT VALUE="Go">
+</FORM>
+
+<!-- footer -->
+<BR><FONT Size=+5>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </FONT>
+</TD>
+<TD WIDTH=15><IMG SRC=http://www.nevrax.org/inc/img/pixel.gif WIDTH=15 HEIGHT=15 BORDER=0 ALT=""></TD>
+</TR>
+</TABLE>
+</BODY>
+</HTML></BODY></HTML>
diff --git a/cvs/cvsweb.cgi/code/nelns/admin_service/?sortby=rev/index.html b/cvs/cvsweb.cgi/code/nelns/admin_service/?sortby=rev/index.html
new file mode 100644
index 00000000..156449fe
--- /dev/null
+++ b/cvs/cvsweb.cgi/code/nelns/admin_service/?sortby=rev/index.html
@@ -0,0 +1,107 @@
+<!doctype html public "-//W3C//DTD HTML 4.0 Transitional//EN" "http://www.w3.org/TR/REC-html40/loose.dtd">
+<HTML>
+<HEAD>
+ <TITLE>nevrax.org : cvs</TITLE>
+ <META name="keywords" content="freesoftware,nel,newt,snowballs,richard stallman,GNU,Multi-User Online World">
+
+ <LINK REL=stylesheet TYPE="text/css" HREF="http://www.nevrax.org/inc/css/nevrax.css">
+</HEAD>
+<BODY MARGINHEIGHT="0" MARGINWIDTH="0">
+
+<!-- uplinks -->
+<TABLE CELLSPACING=0 CELLPADDING=0 BORDER=0>
+ <TR>
+ <TD WIDTH=16><IMG SRC="http://www.nevrax.org/inc/img/pixel.gif" WIDTH="16" HEIGHT="16" BORDER=0 ALT=""></TD>
+ <TD WIDTH=140 BGCOLOR=#dddddd><IMG SRC="http://www.nevrax.org/inc/img/pixel.gif" WIDTH="140" HEIGHT="16" BORDER=0 ALT=""></TD>
+ <TD WIDTH=16><IMG SRC="http://www.nevrax.org/inc/img/pixel.gif" WIDTH="16" HEIGHT="16" BORDER=0 ALT=""></TD>
+ <TD><IMG width=6 height=14 SRC="http://www.nevrax.org/inc/img/reddots.gif" ALT="#" VSPACE=2 HSPACE=2 BORDER=0 ></TD><TD VALIGN=middle>&nbsp;<A CLASS=uplinks HREF=http://www.nevrax.org><b>Home</B></FONT></A>&nbsp;&nbsp;&nbsp;</TD>
+ <TD><IMG width=6 height=14 SRC="http://www.nevrax.org/inc/img/reddots.gif" ALT="#" VSPACE=2 HSPACE=2 BORDER=0 ></TD><TD VALIGN=middle>&nbsp;<A CLASS=uplinks HREF=http://www.nevrax.com><b>nevrax.com</B></FONT></A>&nbsp;&nbsp;&nbsp;</TD>
+ </TR>
+</TABLE>
+
+<!-- banner Nevrax -->
+<TABLE CELLSPACING=0 CELLPADDING=0 BORDER=0 WIDTH=100%>
+ <TR><TD BGCOLOR="#000000" BACKGROUND="http://www.nevrax.org/inc/img/black_banner.jpg"><A HREF="http://www.nevrax.org"><IMG SRC="http://www.nevrax.org/inc/img/nevrax.gif" WIDTH="170" HEIGHT="45" BORDER=0 ALT="Nevrax" ></A></TD></TR>
+</TABLE>
+
+<!-- main table -->
+<TABLE CELLSPACING=0 CELLPADDING=0 BORDER=0 height=100%>
+ <TR>
+ <TD WIDTH=16><IMG SRC="http://www.nevrax.org/inc/img/pixel.gif" WIDTH="16" HEIGHT="10" BORDER=0 ALT=""></TD>
+ <TD WIDTH=140 BGCOLOR=#dddddd VALIGN=TOP ALIGN=middle><IMG SRC="http://www.nevrax.org/inc/img/pixel.gif" WIDTH="140" HEIGHT="10" BORDER=0 ALT="">
+
+ <!------ Begin Box ------>
+ <TABLE BORDER=0 CELLSPACING=0 CELLPADDING=0 BGCOLOR=black><TR><TD><TABLE border=0 cellspacing=2 cellpadding=0 width=120><tr><TD ALIGN=middle bgcolor=black>
+ <FONT COLOR=white FACE="sans-serif"><B>Nevrax.org</B></FONT></TD></TR><tr><td colspan=2 bgcolor=#FFFFFF>
+ <TABLE cellspacing=0 cellpadding=1 border=0>
+ <tr><td ALIGN=middle><a class='linkbox' href="http://www.nevrax.org/news/" TITLE="Rubrique news"><img width=13 height=15 hspace=5 border=0 src=http://www.nevrax.org/inc/img/picto-news.gif ALT=#></A></td><td><a class='linkbox' href="http://www.nevrax.org/news/" TITLE="News">News</a></td></tr>
+ <tr><td ALIGN=middle><a class='linkbox' href="http://www.nevrax.org/mail/" TITLE="Rubrique mail"><img width=15 height=11 hspace=5 border=0 src=http://www.nevrax.org/inc/img/picto-mail.gif ALT=#></A></td><td><a class='linkbox' href="http://www.nevrax.org/mail/" TITLE="Mailing list archive">Mailing-list</a></td></tr>
+ <tr><td ALIGN=middle><a class='linkbox' href="http://www.nevrax.org/docs/" TITLE="Rubrique docs"><img width=14 height=16 hspace=5 border=0 src=http://www.nevrax.org/inc/img/picto-docs.gif ALT=#></A></td><td><a class='linkbox' href="http://www.nevrax.org/docs/" TITLE="Documentation">Documentation</a></td></tr>
+ <tr><td ALIGN=middle><a class='linkbox' href="http://www.nevrax.org/cvs/" TITLE="Rubrique cvs"><img width=13 height=17 hspace=5 border=0 src=http://www.nevrax.org/inc/img/picto-cvs.gif ALT=#></A></td><td><a class='linkbox' href="http://www.nevrax.org/cvs/" TITLE="CVS Web">CVS</a></td></tr>
+ <tr><td ALIGN=middle><a class='linkbox' href="http://www.nevrax.org/bugs/" TITLE="Rubrique bugs"><img width=20 height=16 hspace=5 border=0 src=http://www.nevrax.org/inc/img/picto-bugs.gif ALT=#></A></td><td><a class='linkbox' href="http://www.nevrax.org/bugs/" TITLE="Bugtracking">Bugs</a></td></tr>
+ <tr><td ALIGN=middle><a class='linkbox' href="http://www.nevrax.org/free/" TITLE="Rubrique license"><img width=18 height=12 hspace=5 border=0 src=http://www.nevrax.org/inc/img/picto-free.gif ALT=#></A></td><td><a class='linkbox' href="http://www.nevrax.org/free/" TITLE="Free Software">Free software</a></td></tr>
+ </TABLE>
+ </TD></TR></TABLE></TD></TR></TABLE>
+ <!------ End Box ------>
+
+ </TD>
+ <TD WIDTH=15><IMG SRC="http://www.nevrax.org/inc/img/pixel.gif" WIDTH="16" HEIGHT="16" BORDER=0 ALT=""></TD>
+ <TD ALIGN=left valign=top><IMG SRC="http://www.nevrax.org/inc/img/pixel.gif" WIDTH="140" HEIGHT="10" BORDER=0 ALT="">
+
+<!-- title -->
+<TABLE background="http://www.nevrax.org/inc/img/redline.gif" CELLSPACING=0 CELLPADDING=0 BORDER=0 width=100%><tr><td>
+<A HREF="http://www.nevrax.org/cvs/"><img src="http://www.nevrax.org/inc/img/t_cvs.gif" ALT="cvs" HEIGHT=20 BORDER=0></A>
+</td><td><IMG SRC="http://www.nevrax.org/inc/img/pixel.gif" WIDTH="1" HEIGHT="1" BORDER=0 ALT="">
+</td></tr></table>
+
+
+<!-- title -->
+<table width=100%><tr><td align=left><b> <a href="/cvs/cvsweb.cgi/?sortby=rev">Nevrax</a> / <a href="/cvs/cvsweb.cgi/code/?sortby=rev">code</a> / <a href="/cvs/cvsweb.cgi/code/nelns/?sortby=rev">nelns</a> / admin_service</b></td><td align=right><b></b></td></TR></TABLE>
+<table width="100%" border=0 cellspacing=1 cellpadding=2>
+<tr><th align=left bgcolor="#000000"><a class=title href="./"><font color=white>File</font></a></th><th align=left bgcolor="#222222"><font color=white>Rev.</font></th><th align=left bgcolor="#000000"><a class=title href="./?sortby=date"><font color=white>Age</font></a></th><th align=left bgcolor="#000000"><a class=title href="./?sortby=author"><font color=white>Author</font></a></th><th align=left bgcolor="#000000"><a class=title href="./?sortby=log"><font color=white>Last log entry</font></a></th></tr>
+<tr bgcolor="#dddddd"><td><A HREF="../?sortby=rev"><IMG SRC="http://www.nevrax.org/inc/img/picto-up.gif" ALT="[BACK]" BORDER="0" WIDTH="14" HEIGHT="13"></A>
+ <A HREF="../?sortby=rev">Previous Directory</A>
+</td><td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td></tr>
+
+<tr bgcolor="#cccccc"><td><A NAME="admin_service.cpp"></A><A HREF="admin_service.cpp?sortby=rev"><IMG SRC="http://www.nevrax.org/inc/img/picto-news.gif" ALT="[TXT]" BORDER="0" WIDTH="13" HEIGHT="15"></A>
+ <A HREF="admin_service.cpp?sortby=rev">admin_service.cpp</A>
+</td><td>&nbsp;<A HREF="admin_service.cpp?rev=1.15&amp;content-type=text/x-cvsweb-markup&amp;sortby=rev"><b>1.15</b></A></td><td>&nbsp; <i>2 months</i></td><td>&nbsp;lecroart</td><td>&nbsp; <font size=-1>CHANGED: use new service functions
+</font></td></tr>
+<tr bgcolor="#dddddd"><td><A NAME="Makefile.am"></A><A HREF="Makefile.am?sortby=rev"><IMG SRC="http://www.nevrax.org/inc/img/picto-news.gif" ALT="[TXT]" BORDER="0" WIDTH="13" HEIGHT="15"></A>
+ <A HREF="Makefile.am?sortby=rev">Makefile.am</A>
+</td><td>&nbsp;<A HREF="Makefile.am?rev=1.6&amp;content-type=text/x-cvsweb-markup&amp;sortby=rev"><b>1.6</b></A></td><td>&nbsp; <i>9 days</i></td><td>&nbsp;lecroart</td><td>&nbsp; <font size=-1>no message
+</font></td></tr>
+<tr bgcolor="#cccccc"><td><A NAME="admin_service.cfg"></A><A HREF="admin_service.cfg?sortby=rev"><IMG SRC="http://www.nevrax.org/inc/img/picto-news.gif" ALT="[TXT]" BORDER="0" WIDTH="13" HEIGHT="15"></A>
+ <A HREF="admin_service.cfg?sortby=rev">admin_service.cfg</A>
+</td><td>&nbsp;<A HREF="admin_service.cfg?rev=1.6&amp;content-type=text/x-cvsweb-markup&amp;sortby=rev"><b>1.6</b></A></td><td>&nbsp; <i>8 weeks</i></td><td>&nbsp;lecroart</td><td>&nbsp; <font size=-1>ADDED: common.cfg
+</font></td></tr>
+<tr bgcolor="#dddddd"><td><A NAME="admin_service.dsp"></A><A HREF="admin_service.dsp?sortby=rev"><IMG SRC="http://www.nevrax.org/inc/img/picto-news.gif" ALT="[TXT]" BORDER="0" WIDTH="13" HEIGHT="15"></A>
+ <A HREF="admin_service.dsp?sortby=rev">admin_service.dsp</A>
+</td><td>&nbsp;<A HREF="admin_service.dsp?rev=1.5&amp;content-type=text/x-cvsweb-markup&amp;sortby=rev"><b>1.5</b></A></td><td>&nbsp; <i>9 months</i></td><td>&nbsp;lecroart</td><td>&nbsp; <font size=-1>ADDED: DebugFast config
+</font></td></tr>
+<tr bgcolor="#cccccc"><td><A NAME="admin_service.vcproj"></A><A HREF="admin_service.vcproj?sortby=rev"><IMG SRC="http://www.nevrax.org/inc/img/picto-news.gif" ALT="[TXT]" BORDER="0" WIDTH="13" HEIGHT="15"></A>
+ <A HREF="admin_service.vcproj?sortby=rev">admin_service.vcproj</A>
+</td><td>&nbsp;<A HREF="admin_service.vcproj?rev=1.1&amp;content-type=text/x-cvsweb-markup&amp;sortby=rev"><b>1.1</b></A></td><td>&nbsp; <i>2 months</i></td><td>&nbsp;lecroart</td><td>&nbsp; <font size=-1>ADDED: visual .net project
+</font></td></tr>
+<tr bgcolor="#dddddd"><td><A NAME="common.cfg"></A><A HREF="common.cfg?sortby=rev"><IMG SRC="http://www.nevrax.org/inc/img/picto-news.gif" ALT="[TXT]" BORDER="0" WIDTH="13" HEIGHT="15"></A>
+ <A HREF="common.cfg?sortby=rev">common.cfg</A>
+</td><td>&nbsp;<A HREF="common.cfg?rev=1.1&amp;content-type=text/x-cvsweb-markup&amp;sortby=rev"><b>1.1</b></A></td><td>&nbsp; <i>8 weeks</i></td><td>&nbsp;lecroart</td><td>&nbsp; <font size=-1>ADDED: common.cfg
+</font></td></tr>
+</table><hr size=1 NOSHADE><FORM METHOD="GET" ACTION="./">
+<INPUT TYPE=HIDDEN NAME="sortby" VALUE="rev">
+Show only files with tag:
+<SELECT NAME=only_with_tag onchange="submit()"><OPTION VALUE="">All tags / default branch
+<OPTION>MAIN
+<OPTION>HEAD
+</SELECT>
+<INPUT TYPE=SUBMIT VALUE="Go">
+</FORM>
+
+<!-- footer -->
+<BR><FONT Size=+5>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </FONT>
+</TD>
+<TD WIDTH=15><IMG SRC=http://www.nevrax.org/inc/img/pixel.gif WIDTH=15 HEIGHT=15 BORDER=0 ALT=""></TD>
+</TR>
+</TABLE>
+</BODY>
+</HTML></BODY></HTML>
diff --git a/cvs/cvsweb.cgi/code/nelns/admin_service/Makefile.am b/cvs/cvsweb.cgi/code/nelns/admin_service/Makefile.am
new file mode 100644
index 00000000..50897328
--- /dev/null
+++ b/cvs/cvsweb.cgi/code/nelns/admin_service/Makefile.am
@@ -0,0 +1,184 @@
+<!doctype html public "-//W3C//DTD HTML 4.0 Transitional//EN" "http://www.w3.org/TR/REC-html40/loose.dtd">
+<HTML>
+<HEAD>
+ <TITLE>nevrax.org : cvs</TITLE>
+ <META name="keywords" content="freesoftware,nel,newt,snowballs,richard stallman,GNU,Multi-User Online World">
+
+ <LINK REL=stylesheet TYPE="text/css" HREF="http://www.nevrax.org/inc/css/nevrax.css">
+</HEAD>
+<BODY MARGINHEIGHT="0" MARGINWIDTH="0">
+
+<!-- uplinks -->
+<TABLE CELLSPACING=0 CELLPADDING=0 BORDER=0>
+ <TR>
+ <TD WIDTH=16><IMG SRC="http://www.nevrax.org/inc/img/pixel.gif" WIDTH="16" HEIGHT="16" BORDER=0 ALT=""></TD>
+ <TD WIDTH=140 BGCOLOR=#dddddd><IMG SRC="http://www.nevrax.org/inc/img/pixel.gif" WIDTH="140" HEIGHT="16" BORDER=0 ALT=""></TD>
+ <TD WIDTH=16><IMG SRC="http://www.nevrax.org/inc/img/pixel.gif" WIDTH="16" HEIGHT="16" BORDER=0 ALT=""></TD>
+ <TD><IMG width=6 height=14 SRC="http://www.nevrax.org/inc/img/reddots.gif" ALT="#" VSPACE=2 HSPACE=2 BORDER=0 ></TD><TD VALIGN=middle>&nbsp;<A CLASS=uplinks HREF=http://www.nevrax.org><b>Home</B></FONT></A>&nbsp;&nbsp;&nbsp;</TD>
+ <TD><IMG width=6 height=14 SRC="http://www.nevrax.org/inc/img/reddots.gif" ALT="#" VSPACE=2 HSPACE=2 BORDER=0 ></TD><TD VALIGN=middle>&nbsp;<A CLASS=uplinks HREF=http://www.nevrax.com><b>nevrax.com</B></FONT></A>&nbsp;&nbsp;&nbsp;</TD>
+ </TR>
+</TABLE>
+
+<!-- banner Nevrax -->
+<TABLE CELLSPACING=0 CELLPADDING=0 BORDER=0 WIDTH=100%>
+ <TR><TD BGCOLOR="#000000" BACKGROUND="http://www.nevrax.org/inc/img/black_banner.jpg"><A HREF="http://www.nevrax.org"><IMG SRC="http://www.nevrax.org/inc/img/nevrax.gif" WIDTH="170" HEIGHT="45" BORDER=0 ALT="Nevrax" ></A></TD></TR>
+</TABLE>
+
+<!-- main table -->
+<TABLE CELLSPACING=0 CELLPADDING=0 BORDER=0 height=100%>
+ <TR>
+ <TD WIDTH=16><IMG SRC="http://www.nevrax.org/inc/img/pixel.gif" WIDTH="16" HEIGHT="10" BORDER=0 ALT=""></TD>
+ <TD WIDTH=140 BGCOLOR=#dddddd VALIGN=TOP ALIGN=middle><IMG SRC="http://www.nevrax.org/inc/img/pixel.gif" WIDTH="140" HEIGHT="10" BORDER=0 ALT="">
+
+ <!------ Begin Box ------>
+ <TABLE BORDER=0 CELLSPACING=0 CELLPADDING=0 BGCOLOR=black><TR><TD><TABLE border=0 cellspacing=2 cellpadding=0 width=120><tr><TD ALIGN=middle bgcolor=black>
+ <FONT COLOR=white FACE="sans-serif"><B>Nevrax.org</B></FONT></TD></TR><tr><td colspan=2 bgcolor=#FFFFFF>
+ <TABLE cellspacing=0 cellpadding=1 border=0>
+ <tr><td ALIGN=middle><a class='linkbox' href="http://www.nevrax.org/news/" TITLE="Rubrique news"><img width=13 height=15 hspace=5 border=0 src=http://www.nevrax.org/inc/img/picto-news.gif ALT=#></A></td><td><a class='linkbox' href="http://www.nevrax.org/news/" TITLE="News">News</a></td></tr>
+ <tr><td ALIGN=middle><a class='linkbox' href="http://www.nevrax.org/mail/" TITLE="Rubrique mail"><img width=15 height=11 hspace=5 border=0 src=http://www.nevrax.org/inc/img/picto-mail.gif ALT=#></A></td><td><a class='linkbox' href="http://www.nevrax.org/mail/" TITLE="Mailing list archive">Mailing-list</a></td></tr>
+ <tr><td ALIGN=middle><a class='linkbox' href="http://www.nevrax.org/docs/" TITLE="Rubrique docs"><img width=14 height=16 hspace=5 border=0 src=http://www.nevrax.org/inc/img/picto-docs.gif ALT=#></A></td><td><a class='linkbox' href="http://www.nevrax.org/docs/" TITLE="Documentation">Documentation</a></td></tr>
+ <tr><td ALIGN=middle><a class='linkbox' href="http://www.nevrax.org/cvs/" TITLE="Rubrique cvs"><img width=13 height=17 hspace=5 border=0 src=http://www.nevrax.org/inc/img/picto-cvs.gif ALT=#></A></td><td><a class='linkbox' href="http://www.nevrax.org/cvs/" TITLE="CVS Web">CVS</a></td></tr>
+ <tr><td ALIGN=middle><a class='linkbox' href="http://www.nevrax.org/bugs/" TITLE="Rubrique bugs"><img width=20 height=16 hspace=5 border=0 src=http://www.nevrax.org/inc/img/picto-bugs.gif ALT=#></A></td><td><a class='linkbox' href="http://www.nevrax.org/bugs/" TITLE="Bugtracking">Bugs</a></td></tr>
+ <tr><td ALIGN=middle><a class='linkbox' href="http://www.nevrax.org/free/" TITLE="Rubrique license"><img width=18 height=12 hspace=5 border=0 src=http://www.nevrax.org/inc/img/picto-free.gif ALT=#></A></td><td><a class='linkbox' href="http://www.nevrax.org/free/" TITLE="Free Software">Free software</a></td></tr>
+ </TABLE>
+ </TD></TR></TABLE></TD></TR></TABLE>
+ <!------ End Box ------>
+
+ </TD>
+ <TD WIDTH=15><IMG SRC="http://www.nevrax.org/inc/img/pixel.gif" WIDTH="16" HEIGHT="16" BORDER=0 ALT=""></TD>
+ <TD ALIGN=left valign=top><IMG SRC="http://www.nevrax.org/inc/img/pixel.gif" WIDTH="140" HEIGHT="10" BORDER=0 ALT="">
+
+<!-- title -->
+<TABLE background="http://www.nevrax.org/inc/img/redline.gif" CELLSPACING=0 CELLPADDING=0 BORDER=0 width=100%><tr><td>
+<A HREF="http://www.nevrax.org/cvs/"><img src="http://www.nevrax.org/inc/img/t_cvs.gif" ALT="cvs" HEIGHT=20 BORDER=0></A>
+</td><td><IMG SRC="http://www.nevrax.org/inc/img/pixel.gif" WIDTH="1" HEIGHT="1" BORDER=0 ALT="">
+</td></tr></table>
+
+<!-- title -->
+<table width=100%><tr><td align=left><b> <a href="/cvs/cvsweb.cgi/">Nevrax</a> / <a href="/cvs/cvsweb.cgi/code/">code</a> / <a href="/cvs/cvsweb.cgi/code/nelns/">nelns</a> / <a href="/cvs/cvsweb.cgi/code/nelns/admin_service/">admin_service</a> / Makefile.am</b></td><td align=right><b></b></td></TR></TABLE>
+
+<!-- block -->
+<TABLE bgcolor="#dddddd" CELLSPACING=0 CELLPADDING=0 BORDER=0 width=100%><tr><td width=1% valign=middle><img width=6 height=14 hspace=2 vspace=2 src="http://www.nevrax.org/inc/img/reddots.gif"></TD>
+ <TD><B>Makefile.am</B></TD>
+ <TD ALIGN=RIGHT> </td>
+</tr></table>
+<P>
+<p>Default branch: MAIN<BR>
+<HR size=1 NOSHADE><P><a NAME="rev1.6"></a><a NAME="HEAD"></a><a NAME="MAIN"></a>
+ Revision <A HREF="Makefile.am?rev=1.6&amp;content-type=text/x-cvsweb-markup"><b>1.6</b></A> / (<A HREF="/cvs/cvsweb.cgi/~checkout~/code/nelns/admin_service/Makefile.am?rev=1.6&amp;content-type=text/plain" target="cvs_checkout" onClick="window.open('/cvs/cvsweb.cgi/~checkout~/code/nelns/admin_service/Makefile.am?rev=1.6&amp;content-type=text/plain','cvs_checkout','resizeable,scrollbars');"><b>download</b></A>) - <a href="/cvs/cvsweb.cgi/code/nelns/admin_service/Makefile.am?annotate=1.6">annotate</a> - <A HREF="/cvs/cvsweb.cgi/code/nelns/admin_service/Makefile.am?r1=1.6">[select for diffs]</A>
+, <i>Wed Jun 12 10:21:02 2002 UTC</i> (9 days, 19 hours ago) by <i>lecroart</i>
+<BR>Branch: <b><A HREF="Makefile.am?only_with_tag=MAIN">MAIN</A>
+</b>
+<BR>CVS Tags: <b><A HREF="Makefile.am?only_with_tag=HEAD">HEAD</A>
+</b><BR>Changes since <b>1.5: +4 -3
+ lines</b><BR>Diff to previous <A HREF="/cvs/cvsweb.cgi/code/nelns/admin_service/Makefile.am.diff?r1=1.5&amp;r2=1.6">1.5</A>
+<PRE>
+no message
+</PRE>
+<HR size=1 NOSHADE><P><a NAME="rev1.5"></a>
+ Revision <A HREF="Makefile.am?rev=1.5&amp;content-type=text/x-cvsweb-markup"><b>1.5</b></A> / (<A HREF="/cvs/cvsweb.cgi/~checkout~/code/nelns/admin_service/Makefile.am?rev=1.5&amp;content-type=text/plain" target="cvs_checkout" onClick="window.open('/cvs/cvsweb.cgi/~checkout~/code/nelns/admin_service/Makefile.am?rev=1.5&amp;content-type=text/plain','cvs_checkout','resizeable,scrollbars');"><b>download</b></A>) - <a href="/cvs/cvsweb.cgi/code/nelns/admin_service/Makefile.am?annotate=1.5">annotate</a> - <A HREF="/cvs/cvsweb.cgi/code/nelns/admin_service/Makefile.am?r1=1.5">[select for diffs]</A>
+, <i>Wed Apr 10 07:33:07 2002 UTC</i> (2 months, 1 week ago) by <i>lecroart</i>
+<BR>Branch: <b><A HREF="Makefile.am?only_with_tag=MAIN">MAIN</A>
+</b>
+<BR>Changes since <b>1.4: +1 -3
+ lines</b><BR>Diff to previous <A HREF="/cvs/cvsweb.cgi/code/nelns/admin_service/Makefile.am.diff?r1=1.4&amp;r2=1.5">1.4</A>
+<PRE>
+CHANGED: update makefile to manage log and cfg dir (thanks to loic dachary)
+</PRE>
+<HR size=1 NOSHADE><P><a NAME="rev1.4"></a>
+ Revision <A HREF="Makefile.am?rev=1.4&amp;content-type=text/x-cvsweb-markup"><b>1.4</b></A> / (<A HREF="/cvs/cvsweb.cgi/~checkout~/code/nelns/admin_service/Makefile.am?rev=1.4&amp;content-type=text/plain" target="cvs_checkout" onClick="window.open('/cvs/cvsweb.cgi/~checkout~/code/nelns/admin_service/Makefile.am?rev=1.4&amp;content-type=text/plain','cvs_checkout','resizeable,scrollbars');"><b>download</b></A>) - <a href="/cvs/cvsweb.cgi/code/nelns/admin_service/Makefile.am?annotate=1.4">annotate</a> - <A HREF="/cvs/cvsweb.cgi/code/nelns/admin_service/Makefile.am?r1=1.4">[select for diffs]</A>
+, <i>Tue Mar 19 17:42:48 2002 UTC</i> (3 months ago) by <i>valignat</i>
+<BR>Branch: <b><A HREF="Makefile.am?only_with_tag=MAIN">MAIN</A>
+</b>
+<BR>Changes since <b>1.3: +6 -4
+ lines</b><BR>Diff to previous <A HREF="/cvs/cvsweb.cgi/code/nelns/admin_service/Makefile.am.diff?r1=1.3&amp;r2=1.4">1.3</A>
+<PRE>
+Applied patches which help to have a clen install on GNU/Linux and to make a Debian package (changes on the management of config and log files, bugfixes, etc ...)
+</PRE>
+<HR size=1 NOSHADE><P><a NAME="rev1.3"></a>
+ Revision <A HREF="Makefile.am?rev=1.3&amp;content-type=text/x-cvsweb-markup"><b>1.3</b></A> / (<A HREF="/cvs/cvsweb.cgi/~checkout~/code/nelns/admin_service/Makefile.am?rev=1.3&amp;content-type=text/plain" target="cvs_checkout" onClick="window.open('/cvs/cvsweb.cgi/~checkout~/code/nelns/admin_service/Makefile.am?rev=1.3&amp;content-type=text/plain','cvs_checkout','resizeable,scrollbars');"><b>download</b></A>) - <a href="/cvs/cvsweb.cgi/code/nelns/admin_service/Makefile.am?annotate=1.3">annotate</a> - <A HREF="/cvs/cvsweb.cgi/code/nelns/admin_service/Makefile.am?r1=1.3">[select for diffs]</A>
+, <i>Fri Jul 27 15:51:10 2001 UTC</i> (10 months, 3 weeks ago) by <i>valignat</i>
+<BR>Branch: <b><A HREF="Makefile.am?only_with_tag=MAIN">MAIN</A>
+</b>
+<BR>Changes since <b>1.2: +4 -3
+ lines</b><BR>Diff to previous <A HREF="/cvs/cvsweb.cgi/code/nelns/admin_service/Makefile.am.diff?r1=1.2&amp;r2=1.3">1.2</A>
+<PRE>
+#ADDED some missing source files and clean Makefile.am for NeLNS.
+</PRE>
+<HR size=1 NOSHADE><P><a NAME="rev1.2"></a>
+ Revision <A HREF="Makefile.am?rev=1.2&amp;content-type=text/x-cvsweb-markup"><b>1.2</b></A> / (<A HREF="/cvs/cvsweb.cgi/~checkout~/code/nelns/admin_service/Makefile.am?rev=1.2&amp;content-type=text/plain" target="cvs_checkout" onClick="window.open('/cvs/cvsweb.cgi/~checkout~/code/nelns/admin_service/Makefile.am?rev=1.2&amp;content-type=text/plain','cvs_checkout','resizeable,scrollbars');"><b>download</b></A>) - <a href="/cvs/cvsweb.cgi/code/nelns/admin_service/Makefile.am?annotate=1.2">annotate</a> - <A HREF="/cvs/cvsweb.cgi/code/nelns/admin_service/Makefile.am?r1=1.2">[select for diffs]</A>
+, <i>Thu May 3 13:19:13 2001 UTC</i> (13 months, 2 weeks ago) by <i>lecroart</i>
+<BR>Branch: <b><A HREF="Makefile.am?only_with_tag=MAIN">MAIN</A>
+</b>
+<BR>Changes since <b>1.1: +4 -4
+ lines</b><BR>Diff to previous <A HREF="/cvs/cvsweb.cgi/code/nelns/admin_service/Makefile.am.diff?r1=1.1&amp;r2=1.2">1.1</A>
+<PRE>
+BUGFIX: now compile on linux
+</PRE>
+<HR size=1 NOSHADE><P><a NAME="rev1.1"></a>
+ Revision <A HREF="Makefile.am?rev=1.1&amp;content-type=text/x-cvsweb-markup"><b>1.1</b></A> / (<A HREF="/cvs/cvsweb.cgi/~checkout~/code/nelns/admin_service/Makefile.am?rev=1.1&amp;content-type=text/plain" target="cvs_checkout" onClick="window.open('/cvs/cvsweb.cgi/~checkout~/code/nelns/admin_service/Makefile.am?rev=1.1&amp;content-type=text/plain','cvs_checkout','resizeable,scrollbars');"><b>download</b></A>) - <a href="/cvs/cvsweb.cgi/code/nelns/admin_service/Makefile.am?annotate=1.1">annotate</a> - <A HREF="/cvs/cvsweb.cgi/code/nelns/admin_service/Makefile.am?r1=1.1">[select for diffs]</A>
+, <i>Wed May 2 12:36:39 2001 UTC</i> (13 months, 2 weeks ago) by <i>lecroart</i>
+<BR>Branch: <b><A HREF="Makefile.am?only_with_tag=MAIN">MAIN</A>
+</b>
+<BR>Diff<PRE>
+ADD: new version of the network system (in NeL and NeLns)
+</PRE>
+
+<!-- block -->
+<TABLE bgcolor="#dddddd" CELLSPACING=0 CELLPADDING=0 BORDER=0 width=100%><tr><td width=1% valign=middle><img width=6 height=14 hspace=2 vspace=2 src="http://www.nevrax.org/inc/img/reddots.gif"></TD>
+ <TD><B>Request Diffs</B></TD>
+ <TD ALIGN=RIGHT> </td>
+</tr></table>
+<P>
+<P>
+<FORM METHOD="GET" ACTION="/cvs/cvsweb.cgi/code/nelns/admin_service/Makefile.am.diff" NAME="diff_select">
+Diffs between
+<SELECT NAME="r1">
+<OPTION VALUE="text" SELECTED>Use Text Field
+<OPTION VALUE="1:MAIN">MAIN
+<OPTION VALUE="1.6:HEAD">HEAD
+</SELECT>
+<INPUT TYPE="TEXT" SIZE="12" NAME="tr1" VALUE="1.1" onChange='document.diff_select.r1.selectedIndex=0'>
+ and
+<SELECT NAME="r2">
+<OPTION VALUE="text" SELECTED>Use Text Field
+<OPTION VALUE="1:MAIN">MAIN
+<OPTION VALUE="1.6:HEAD">HEAD
+</SELECT>
+<INPUT TYPE="TEXT" SIZE="12" NAME="tr2" VALUE="1.6" onChange='docuement.diff_select.r2.selectedIndex=0'>
+<BR>Type of Diff should be a&nbsp;<SELECT NAME="f">
+<OPTION VALUE=h SELECTED>Colored Diff<OPTION VALUE=H>Long Colored Diff<OPTION VALUE=u>Unidiff<OPTION VALUE=c>Context Diff<OPTION VALUE=s>Side by Side</SELECT><INPUT TYPE=SUBMIT VALUE=" Get Diffs ">
+</FORM>
+
+<!-- block -->
+<TABLE bgcolor="#dddddd" CELLSPACING=0 CELLPADDING=0 BORDER=0 width=100%><tr><td width=1% valign=middle><img width=6 height=14 hspace=2 vspace=2 src="http://www.nevrax.org/inc/img/reddots.gif"></TD>
+ <TD><B>Select branch</B></TD>
+ <TD ALIGN=RIGHT> </td>
+</tr></table>
+<P>
+<P>
+<A name=branch></A>
+<FORM METHOD="GET" ACTION="/cvs/cvsweb.cgi/code/nelns/admin_service/Makefile.am">
+View only Branch:
+<SELECT NAME="only_with_tag" onchange="submit()">
+<OPTION VALUE="">Show all branches
+<OPTION>MAIN
+</SELECT>
+<INPUT TYPE=SUBMIT VALUE=" View Branch ">
+</FORM>
+<A name=logsort></A>
+<FORM METHOD="GET" ACTION="/cvs/cvsweb.cgi/code/nelns/admin_service/Makefile.am">
+Sort log by:
+<SELECT NAME="logsort" onchange="submit()">
+<OPTION VALUE=cvs>Not sorted<OPTION VALUE=date SELECTED>Commit date<OPTION VALUE=rev>Revision</SELECT>
+<INPUT TYPE=SUBMIT VALUE=" Sort ">
+</FORM>
+
+<!-- footer -->
+<BR><FONT Size=+5>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </FONT>
+</TD>
+<TD WIDTH=15><IMG SRC=http://www.nevrax.org/inc/img/pixel.gif WIDTH=15 HEIGHT=15 BORDER=0 ALT=""></TD>
+</TR>
+</TABLE>
+</BODY>
+</HTML></BODY></HTML>
diff --git a/cvs/cvsweb.cgi/code/nelns/admin_service/Makefile.am.diff?r1=1.1&r2=1.2 b/cvs/cvsweb.cgi/code/nelns/admin_service/Makefile.am.diff?r1=1.1&r2=1.2
new file mode 100644
index 00000000..ebd58713
--- /dev/null
+++ b/cvs/cvsweb.cgi/code/nelns/admin_service/Makefile.am.diff?r1=1.1&r2=1.2
@@ -0,0 +1,33 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"><HTML>
+<HEAD><style> A { color:black }</style>
+<!-- hennerik CVSweb $Revision: 1.93 $ -->
+<TITLE>code/nelns/admin_service/Makefile.am - diff - 1.2</TITLE></HEAD>
+<BODY BGCOLOR="#eeeeee">
+<table width="100%" border=0 cellspacing=0 cellpadding=1 bgcolor="#aaaaaa"><tr valign=bottom><td><a href="/cvs/cvsweb.cgi/code/nelns/admin_service/Makefile.am"><IMG SRC="http://www.nevrax.org/inc/img/picto-up.gif" ALT="[BACK]" BORDER="0" WIDTH="14" HEIGHT="13"></a> <b>Return to <A HREF="/cvs/cvsweb.cgi/code/nelns/admin_service/Makefile.am">Makefile.am</A>
+ CVS log</b> <IMG SRC="http://www.nevrax.org/inc/img/picto-news.gif" ALT="[TXT]" BORDER="0" WIDTH="13" HEIGHT="15"></td><td align=right><IMG SRC="http://www.nevrax.org/inc/img/picto-dir.gif" ALT="[DIR]" BORDER="0" WIDTH="15" HEIGHT="13"> <b>Up to <a href="/cvs/cvsweb.cgi/">Nevrax</a> / <a href="/cvs/cvsweb.cgi/code/">code</a> / <a href="/cvs/cvsweb.cgi/code/nelns/">nelns</a> / <a href="/cvs/cvsweb.cgi/code/nelns/admin_service/">admin_service</a></b></td></tr></table><h3 align=center>Diff for /code/nelns/admin_service/Makefile.am between version 1.1 and 1.2</h3>
+<table border=0 cellspacing=0 cellpadding=0 width="100%">
+<tr bgcolor="#ffffff">
+<th width="50%" valign=TOP>version 1.1, 2001/05/02 12:36:39</th>
+<th width="50%" valign=TOP>version 1.2, 2001/05/03 13:19:13</th>
+<tr bgcolor="#dddddd"><td width="50%"><table width="100%" border=1 cellpadding=5><tr><td><b>Line 4</b>&nbsp;<font size=-1></font></td></tr></table></td><td width="50%"><table width="100%" border=1 cellpadding=5><tr><td><b>Line 4</b>&nbsp;<font size=-1></font></td></tr></table></td>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp;</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp;</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp;MAINTAINERCLEANFILES = Makefile.in</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp;MAINTAINERCLEANFILES = Makefile.in</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp;</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp;</font></td></tr>
+<tr><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp;bin_PROGRAMS &nbsp; &nbsp; &nbsp; &nbsp; = admin_executor_service</font></td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp;bin_PROGRAMS &nbsp; &nbsp; &nbsp; &nbsp; = admin_service</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp;</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp;</font></td></tr>
+<tr><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp;time_service_SOURCES = admin_executor_service.cpp</font></td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp;admin_service_SOURCES = admin_service.cpp</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp;</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp;</font></td></tr>
+<tr><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp;time_service_LDADD &nbsp; = -lnelnet -lnelmisc</font></td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp;admin_service_LDADD &nbsp; = -lnelnet -lnelmisc</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp;</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp;</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp;</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp;</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp;# End of Makefile.am</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp;# End of Makefile.am</font></td></tr>
+</table><br><hr noshade width="100%">
+<table border=0><tr><td><table border=1><tr><td>Legend:<br><table border=0 cellspacing=0 cellpadding=1>
+<tr><td align=center bgcolor="#ff9999">Removed from v.1.1</td><td bgcolor="#cccccc">&nbsp;</td></tr><tr bgcolor="#99ff99"><td align=center colspan=2>changed lines</td></tr><tr><td bgcolor="#cccccc">&nbsp;</td><td align=center bgcolor="#ccccff">Added in v.1.2</td></tr></table></td></tr></table>
+<td><FORM METHOD="GET" ACTION="/cvs/cvsweb.cgi/code/nelns/admin_service/Makefile.am.diff">
+<INPUT TYPE=HIDDEN NAME="r1" VALUE="1.1">
+<INPUT TYPE=HIDDEN NAME="r2" VALUE="1.2">
+<SELECT NAME="f" onchange="submit()">
+<OPTION VALUE=h SELECTED>Colored Diff<OPTION VALUE=H>Long Colored Diff<OPTION VALUE=u>Unidiff<OPTION VALUE=c>Context Diff<OPTION VALUE=s>Side by Side</SELECT><INPUT TYPE=SUBMIT VALUE="Show">
+</FORM>
+</td></tr></table> \ No newline at end of file
diff --git a/cvs/cvsweb.cgi/code/nelns/admin_service/Makefile.am.diff?r1=1.2&r2=1.3 b/cvs/cvsweb.cgi/code/nelns/admin_service/Makefile.am.diff?r1=1.2&r2=1.3
new file mode 100644
index 00000000..a4afe9c8
--- /dev/null
+++ b/cvs/cvsweb.cgi/code/nelns/admin_service/Makefile.am.diff?r1=1.2&r2=1.3
@@ -0,0 +1,26 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"><HTML>
+<HEAD><style> A { color:black }</style>
+<!-- hennerik CVSweb $Revision: 1.93 $ -->
+<TITLE>code/nelns/admin_service/Makefile.am - diff - 1.3</TITLE></HEAD>
+<BODY BGCOLOR="#eeeeee">
+<table width="100%" border=0 cellspacing=0 cellpadding=1 bgcolor="#aaaaaa"><tr valign=bottom><td><a href="/cvs/cvsweb.cgi/code/nelns/admin_service/Makefile.am"><IMG SRC="http://www.nevrax.org/inc/img/picto-up.gif" ALT="[BACK]" BORDER="0" WIDTH="14" HEIGHT="13"></a> <b>Return to <A HREF="/cvs/cvsweb.cgi/code/nelns/admin_service/Makefile.am">Makefile.am</A>
+ CVS log</b> <IMG SRC="http://www.nevrax.org/inc/img/picto-news.gif" ALT="[TXT]" BORDER="0" WIDTH="13" HEIGHT="15"></td><td align=right><IMG SRC="http://www.nevrax.org/inc/img/picto-dir.gif" ALT="[DIR]" BORDER="0" WIDTH="15" HEIGHT="13"> <b>Up to <a href="/cvs/cvsweb.cgi/">Nevrax</a> / <a href="/cvs/cvsweb.cgi/code/">code</a> / <a href="/cvs/cvsweb.cgi/code/nelns/">nelns</a> / <a href="/cvs/cvsweb.cgi/code/nelns/admin_service/">admin_service</a></b></td></tr></table><h3 align=center>Diff for /code/nelns/admin_service/Makefile.am between version 1.2 and 1.3</h3>
+<table border=0 cellspacing=0 cellpadding=0 width="100%">
+<tr bgcolor="#ffffff">
+<th width="50%" valign=TOP>version 1.2, 2001/05/03 13:19:13</th>
+<th width="50%" valign=TOP>version 1.3, 2001/07/27 15:51:10</th>
+<tr bgcolor="#dddddd"><td width="50%"><table width="100%" border=1 cellpadding=5><tr><td><b>Line 12</b>&nbsp;<font size=-1></font></td></tr></table></td><td width="50%"><table width="100%" border=1 cellpadding=5><tr><td><b>Line 12</b>&nbsp;<font size=-1></font></td></tr></table></td>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp;</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp;</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp;</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp;</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp;# End of Makefile.am</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp;# End of Makefile.am</font></td></tr>
+<tr><td bgcolor="#cccccc">&nbsp;</td><td bgcolor="#ccccff"><font face="Helvetica,Arial" size="-1">&nbsp;</font></td></tr>
+</table><br><hr noshade width="100%">
+<table border=0><tr><td><table border=1><tr><td>Legend:<br><table border=0 cellspacing=0 cellpadding=1>
+<tr><td align=center bgcolor="#ff9999">Removed from v.1.2</td><td bgcolor="#cccccc">&nbsp;</td></tr><tr bgcolor="#99ff99"><td align=center colspan=2>changed lines</td></tr><tr><td bgcolor="#cccccc">&nbsp;</td><td align=center bgcolor="#ccccff">Added in v.1.3</td></tr></table></td></tr></table>
+<td><FORM METHOD="GET" ACTION="/cvs/cvsweb.cgi/code/nelns/admin_service/Makefile.am.diff">
+<INPUT TYPE=HIDDEN NAME="r1" VALUE="1.2">
+<INPUT TYPE=HIDDEN NAME="r2" VALUE="1.3">
+<SELECT NAME="f" onchange="submit()">
+<OPTION VALUE=h SELECTED>Colored Diff<OPTION VALUE=H>Long Colored Diff<OPTION VALUE=u>Unidiff<OPTION VALUE=c>Context Diff<OPTION VALUE=s>Side by Side</SELECT><INPUT TYPE=SUBMIT VALUE="Show">
+</FORM>
+</td></tr></table> \ No newline at end of file
diff --git a/cvs/cvsweb.cgi/code/nelns/admin_service/Makefile.am.diff?r1=1.3&r2=1.4 b/cvs/cvsweb.cgi/code/nelns/admin_service/Makefile.am.diff?r1=1.3&r2=1.4
new file mode 100644
index 00000000..220eb220
--- /dev/null
+++ b/cvs/cvsweb.cgi/code/nelns/admin_service/Makefile.am.diff?r1=1.3&r2=1.4
@@ -0,0 +1,36 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"><HTML>
+<HEAD><style> A { color:black }</style>
+<!-- hennerik CVSweb $Revision: 1.93 $ -->
+<TITLE>code/nelns/admin_service/Makefile.am - diff - 1.4</TITLE></HEAD>
+<BODY BGCOLOR="#eeeeee">
+<table width="100%" border=0 cellspacing=0 cellpadding=1 bgcolor="#aaaaaa"><tr valign=bottom><td><a href="/cvs/cvsweb.cgi/code/nelns/admin_service/Makefile.am"><IMG SRC="http://www.nevrax.org/inc/img/picto-up.gif" ALT="[BACK]" BORDER="0" WIDTH="14" HEIGHT="13"></a> <b>Return to <A HREF="/cvs/cvsweb.cgi/code/nelns/admin_service/Makefile.am">Makefile.am</A>
+ CVS log</b> <IMG SRC="http://www.nevrax.org/inc/img/picto-news.gif" ALT="[TXT]" BORDER="0" WIDTH="13" HEIGHT="15"></td><td align=right><IMG SRC="http://www.nevrax.org/inc/img/picto-dir.gif" ALT="[DIR]" BORDER="0" WIDTH="15" HEIGHT="13"> <b>Up to <a href="/cvs/cvsweb.cgi/">Nevrax</a> / <a href="/cvs/cvsweb.cgi/code/">code</a> / <a href="/cvs/cvsweb.cgi/code/nelns/">nelns</a> / <a href="/cvs/cvsweb.cgi/code/nelns/admin_service/">admin_service</a></b></td></tr></table><h3 align=center>Diff for /code/nelns/admin_service/Makefile.am between version 1.3 and 1.4</h3>
+<table border=0 cellspacing=0 cellpadding=0 width="100%">
+<tr bgcolor="#ffffff">
+<th width="50%" valign=TOP>version 1.3, 2001/07/27 15:51:10</th>
+<th width="50%" valign=TOP>version 1.4, 2002/03/19 17:42:48</th>
+<tr bgcolor="#dddddd"><td width="50%"><table width="100%" border=1 cellpadding=5><tr><td><b>Line 4</b>&nbsp;<font size=-1></font></td></tr></table></td><td width="50%"><table width="100%" border=1 cellpadding=5><tr><td><b>Line 4</b>&nbsp;<font size=-1></font></td></tr></table></td>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp;</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp;</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp;MAINTAINERCLEANFILES &nbsp;= Makefile.in</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp;MAINTAINERCLEANFILES &nbsp;= Makefile.in</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp;</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp;</font></td></tr>
+<tr><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp;bin_PROGRAMS &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;= admin_service</font></td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp;EXTRA_DIST &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; = admin_service.cfg \</font></td></tr>
+<tr><td bgcolor="#99cc99">&nbsp;</td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; admin_service.dsp</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp;</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp;</font></td></tr>
+<tr><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp;admin_service_SOURCES = admin_service.cpp</font></td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp;sbin_PROGRAMS &nbsp; &nbsp; &nbsp; &nbsp; = admin_service</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp;</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp;</font></td></tr>
+<tr><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp;admin_service_LDADD &nbsp; = -lnelnet -lnelmisc</font></td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp;admin_service_SOURCES = admin_service.cpp</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp;</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp;</font></td></tr>
+<tr><td bgcolor="#cccccc">&nbsp;</td><td bgcolor="#ccccff"><font face="Helvetica,Arial" size="-1">&nbsp;pkgsysconf_DATA &nbsp; &nbsp; &nbsp; = admin_service.cfg</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp;</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp;</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp;# End of Makefile.am</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp;# End of Makefile.am</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp;</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp;</font></td></tr>
+</table><br><hr noshade width="100%">
+<table border=0><tr><td><table border=1><tr><td>Legend:<br><table border=0 cellspacing=0 cellpadding=1>
+<tr><td align=center bgcolor="#ff9999">Removed from v.1.3</td><td bgcolor="#cccccc">&nbsp;</td></tr><tr bgcolor="#99ff99"><td align=center colspan=2>changed lines</td></tr><tr><td bgcolor="#cccccc">&nbsp;</td><td align=center bgcolor="#ccccff">Added in v.1.4</td></tr></table></td></tr></table>
+<td><FORM METHOD="GET" ACTION="/cvs/cvsweb.cgi/code/nelns/admin_service/Makefile.am.diff">
+<INPUT TYPE=HIDDEN NAME="r1" VALUE="1.3">
+<INPUT TYPE=HIDDEN NAME="r2" VALUE="1.4">
+<SELECT NAME="f" onchange="submit()">
+<OPTION VALUE=h SELECTED>Colored Diff<OPTION VALUE=H>Long Colored Diff<OPTION VALUE=u>Unidiff<OPTION VALUE=c>Context Diff<OPTION VALUE=s>Side by Side</SELECT><INPUT TYPE=SUBMIT VALUE="Show">
+</FORM>
+</td></tr></table> \ No newline at end of file
diff --git a/cvs/cvsweb.cgi/code/nelns/admin_service/Makefile.am.diff?r1=1.5&r2=1.6 b/cvs/cvsweb.cgi/code/nelns/admin_service/Makefile.am.diff?r1=1.5&r2=1.6
new file mode 100644
index 00000000..4562c132
--- /dev/null
+++ b/cvs/cvsweb.cgi/code/nelns/admin_service/Makefile.am.diff?r1=1.5&r2=1.6
@@ -0,0 +1,30 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"><HTML>
+<HEAD><style> A { color:black }</style>
+<!-- hennerik CVSweb $Revision: 1.93 $ -->
+<TITLE>code/nelns/admin_service/Makefile.am - diff - 1.6</TITLE></HEAD>
+<BODY BGCOLOR="#eeeeee">
+<table width="100%" border=0 cellspacing=0 cellpadding=1 bgcolor="#aaaaaa"><tr valign=bottom><td><a href="/cvs/cvsweb.cgi/code/nelns/admin_service/Makefile.am"><IMG SRC="http://www.nevrax.org/inc/img/picto-up.gif" ALT="[BACK]" BORDER="0" WIDTH="14" HEIGHT="13"></a> <b>Return to <A HREF="/cvs/cvsweb.cgi/code/nelns/admin_service/Makefile.am">Makefile.am</A>
+ CVS log</b> <IMG SRC="http://www.nevrax.org/inc/img/picto-news.gif" ALT="[TXT]" BORDER="0" WIDTH="13" HEIGHT="15"></td><td align=right><IMG SRC="http://www.nevrax.org/inc/img/picto-dir.gif" ALT="[DIR]" BORDER="0" WIDTH="15" HEIGHT="13"> <b>Up to <a href="/cvs/cvsweb.cgi/">Nevrax</a> / <a href="/cvs/cvsweb.cgi/code/">code</a> / <a href="/cvs/cvsweb.cgi/code/nelns/">nelns</a> / <a href="/cvs/cvsweb.cgi/code/nelns/admin_service/">admin_service</a></b></td></tr></table><h3 align=center>Diff for /code/nelns/admin_service/Makefile.am between version 1.5 and 1.6</h3>
+<table border=0 cellspacing=0 cellpadding=0 width="100%">
+<tr bgcolor="#ffffff">
+<th width="50%" valign=TOP>version 1.5, 2002/04/10 07:33:07</th>
+<th width="50%" valign=TOP>version 1.6, 2002/06/12 10:21:02</th>
+<tr bgcolor="#dddddd"><td width="50%"><table width="100%" border=1 cellpadding=5><tr><td><b>Line 4</b>&nbsp;<font size=-1></font></td></tr></table></td><td width="50%"><table width="100%" border=1 cellpadding=5><tr><td><b>Line 4</b>&nbsp;<font size=-1></font></td></tr></table></td>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp;</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp;</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp;MAINTAINERCLEANFILES &nbsp;= Makefile.in</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp;MAINTAINERCLEANFILES &nbsp;= Makefile.in</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp;</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp;</font></td></tr>
+<tr><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp;EXTRA_DIST &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; = admin_service.cfg \</font></td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp;EXTRA_DIST &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;= common.cfg \</font></td></tr>
+<tr><td bgcolor="#99cc99">&nbsp;</td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;admin_service.cfg \</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; admin_service.dsp</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; admin_service.dsp</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp;</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp;</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp;sbin_PROGRAMS &nbsp; &nbsp; &nbsp; &nbsp; = admin_service</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp;sbin_PROGRAMS &nbsp; &nbsp; &nbsp; &nbsp; = admin_service</font></td></tr>
+</table><br><hr noshade width="100%">
+<table border=0><tr><td><table border=1><tr><td>Legend:<br><table border=0 cellspacing=0 cellpadding=1>
+<tr><td align=center bgcolor="#ff9999">Removed from v.1.5</td><td bgcolor="#cccccc">&nbsp;</td></tr><tr bgcolor="#99ff99"><td align=center colspan=2>changed lines</td></tr><tr><td bgcolor="#cccccc">&nbsp;</td><td align=center bgcolor="#ccccff">Added in v.1.6</td></tr></table></td></tr></table>
+<td><FORM METHOD="GET" ACTION="/cvs/cvsweb.cgi/code/nelns/admin_service/Makefile.am.diff">
+<INPUT TYPE=HIDDEN NAME="r1" VALUE="1.5">
+<INPUT TYPE=HIDDEN NAME="r2" VALUE="1.6">
+<SELECT NAME="f" onchange="submit()">
+<OPTION VALUE=h SELECTED>Colored Diff<OPTION VALUE=H>Long Colored Diff<OPTION VALUE=u>Unidiff<OPTION VALUE=c>Context Diff<OPTION VALUE=s>Side by Side</SELECT><INPUT TYPE=SUBMIT VALUE="Show">
+</FORM>
+</td></tr></table> \ No newline at end of file
diff --git a/cvs/cvsweb.cgi/code/nelns/admin_service/Makefile.am?annotate=1.3 b/cvs/cvsweb.cgi/code/nelns/admin_service/Makefile.am?annotate=1.3
new file mode 100644
index 00000000..7c8cebc9
--- /dev/null
+++ b/cvs/cvsweb.cgi/code/nelns/admin_service/Makefile.am?annotate=1.3
@@ -0,0 +1,76 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"><HTML>
+<HEAD><style> A { color:black }</style>
+<!-- hennerik CVSweb $Revision: 1.93 $ -->
+<TITLE>code/nelns/admin_service/Makefile.am - annotate - 1.3</TITLE></HEAD>
+<BODY BGCOLOR="#eeeeee">
+<table width="100%" border=0 cellspacing=0 cellpadding=1 bgcolor="#aaaaaa"><tr valign=bottom><td><a href="Makefile.am"><IMG SRC="http://www.nevrax.org/inc/img/picto-up.gif" ALT="[BACK]" BORDER="0" WIDTH="14" HEIGHT="13"></a> <b>Return to <A HREF="Makefile.am">Makefile.am</A>
+ CVS log</b> <IMG SRC="http://www.nevrax.org/inc/img/picto-news.gif" ALT="[TXT]" BORDER="0" WIDTH="13" HEIGHT="15"></td><td align=right><IMG SRC="http://www.nevrax.org/inc/img/picto-dir.gif" ALT="[DIR]" BORDER="0" WIDTH="15" HEIGHT="13"> <b>Up to <a href="/cvs/cvsweb.cgi/">Nevrax</a> / <a href="/cvs/cvsweb.cgi/code/">code</a> / <a href="/cvs/cvsweb.cgi/code/nelns/">nelns</a> / <a href="/cvs/cvsweb.cgi/code/nelns/admin_service/">admin_service</a></b></td></tr></table><h3 align=center>Annotation of code/nelns/admin_service/Makefile.am, Revision 1.3</h3>
+<pre>Status: 500 Internal Error
+Content-type: text/html
+
+<!doctype html public "-//W3C//DTD HTML 4.0 Transitional//EN" "http://www.w3.org/TR/REC-html40/loose.dtd">
+<HTML>
+<HEAD>
+ <TITLE>nevrax.org : cvs</TITLE>
+ <META name="keywords" content="freesoftware,nel,newt,snowballs,richard stallman,GNU,Multi-User Online World">
+
+ <LINK REL=stylesheet TYPE="text/css" HREF="http://www.nevrax.org/inc/css/nevrax.css">
+</HEAD>
+<BODY MARGINHEIGHT="0" MARGINWIDTH="0">
+
+<!-- uplinks -->
+<TABLE CELLSPACING=0 CELLPADDING=0 BORDER=0>
+ <TR>
+ <TD WIDTH=16><IMG SRC="http://www.nevrax.org/inc/img/pixel.gif" WIDTH="16" HEIGHT="16" BORDER=0 ALT=""></TD>
+ <TD WIDTH=140 BGCOLOR=#dddddd><IMG SRC="http://www.nevrax.org/inc/img/pixel.gif" WIDTH="140" HEIGHT="16" BORDER=0 ALT=""></TD>
+ <TD WIDTH=16><IMG SRC="http://www.nevrax.org/inc/img/pixel.gif" WIDTH="16" HEIGHT="16" BORDER=0 ALT=""></TD>
+ <TD><IMG width=6 height=14 SRC="http://www.nevrax.org/inc/img/reddots.gif" ALT="#" VSPACE=2 HSPACE=2 BORDER=0 ></TD><TD VALIGN=middle>&nbsp;<A CLASS=uplinks HREF=http://www.nevrax.org><b>Home</B></FONT></A>&nbsp;&nbsp;&nbsp;</TD>
+ <TD><IMG width=6 height=14 SRC="http://www.nevrax.org/inc/img/reddots.gif" ALT="#" VSPACE=2 HSPACE=2 BORDER=0 ></TD><TD VALIGN=middle>&nbsp;<A CLASS=uplinks HREF=http://www.nevrax.com><b>nevrax.com</B></FONT></A>&nbsp;&nbsp;&nbsp;</TD>
+ </TR>
+</TABLE>
+
+<!-- banner Nevrax -->
+<TABLE CELLSPACING=0 CELLPADDING=0 BORDER=0 WIDTH=100%>
+ <TR><TD BGCOLOR="#000000" BACKGROUND="http://www.nevrax.org/inc/img/black_banner.jpg"><A HREF="http://www.nevrax.org"><IMG SRC="http://www.nevrax.org/inc/img/nevrax.gif" WIDTH="170" HEIGHT="45" BORDER=0 ALT="Nevrax" ></A></TD></TR>
+</TABLE>
+
+<!-- main table -->
+<TABLE CELLSPACING=0 CELLPADDING=0 BORDER=0 height=100%>
+ <TR>
+ <TD WIDTH=16><IMG SRC="http://www.nevrax.org/inc/img/pixel.gif" WIDTH="16" HEIGHT="10" BORDER=0 ALT=""></TD>
+ <TD WIDTH=140 BGCOLOR=#dddddd VALIGN=TOP ALIGN=middle><IMG SRC="http://www.nevrax.org/inc/img/pixel.gif" WIDTH="140" HEIGHT="10" BORDER=0 ALT="">
+
+ <!------ Begin Box ------>
+ <TABLE BORDER=0 CELLSPACING=0 CELLPADDING=0 BGCOLOR=black><TR><TD><TABLE border=0 cellspacing=2 cellpadding=0 width=120><tr><TD ALIGN=middle bgcolor=black>
+ <FONT COLOR=white FACE="sans-serif"><B>Nevrax.org</B></FONT></TD></TR><tr><td colspan=2 bgcolor=#FFFFFF>
+ <TABLE cellspacing=0 cellpadding=1 border=0>
+ <tr><td ALIGN=middle><a class='linkbox' href="http://www.nevrax.org/news/" TITLE="Rubrique news"><img width=13 height=15 hspace=5 border=0 src=http://www.nevrax.org/inc/img/picto-news.gif ALT=#></A></td><td><a class='linkbox' href="http://www.nevrax.org/news/" TITLE="News">News</a></td></tr>
+ <tr><td ALIGN=middle><a class='linkbox' href="http://www.nevrax.org/mail/" TITLE="Rubrique mail"><img width=15 height=11 hspace=5 border=0 src=http://www.nevrax.org/inc/img/picto-mail.gif ALT=#></A></td><td><a class='linkbox' href="http://www.nevrax.org/mail/" TITLE="Mailing list archive">Mailing-list</a></td></tr>
+ <tr><td ALIGN=middle><a class='linkbox' href="http://www.nevrax.org/docs/" TITLE="Rubrique docs"><img width=14 height=16 hspace=5 border=0 src=http://www.nevrax.org/inc/img/picto-docs.gif ALT=#></A></td><td><a class='linkbox' href="http://www.nevrax.org/docs/" TITLE="Documentation">Documentation</a></td></tr>
+ <tr><td ALIGN=middle><a class='linkbox' href="http://www.nevrax.org/cvs/" TITLE="Rubrique cvs"><img width=13 height=17 hspace=5 border=0 src=http://www.nevrax.org/inc/img/picto-cvs.gif ALT=#></A></td><td><a class='linkbox' href="http://www.nevrax.org/cvs/" TITLE="CVS Web">CVS</a></td></tr>
+ <tr><td ALIGN=middle><a class='linkbox' href="http://www.nevrax.org/bugs/" TITLE="Rubrique bugs"><img width=20 height=16 hspace=5 border=0 src=http://www.nevrax.org/inc/img/picto-bugs.gif ALT=#></A></td><td><a class='linkbox' href="http://www.nevrax.org/bugs/" TITLE="Bugtracking">Bugs</a></td></tr>
+ <tr><td ALIGN=middle><a class='linkbox' href="http://www.nevrax.org/free/" TITLE="Rubrique license"><img width=18 height=12 hspace=5 border=0 src=http://www.nevrax.org/inc/img/picto-free.gif ALT=#></A></td><td><a class='linkbox' href="http://www.nevrax.org/free/" TITLE="Free Software">Free software</a></td></tr>
+ </TABLE>
+ </TD></TR></TABLE></TD></TR></TABLE>
+ <!------ End Box ------>
+
+ </TD>
+ <TD WIDTH=15><IMG SRC="http://www.nevrax.org/inc/img/pixel.gif" WIDTH="16" HEIGHT="16" BORDER=0 ALT=""></TD>
+ <TD ALIGN=left valign=top><IMG SRC="http://www.nevrax.org/inc/img/pixel.gif" WIDTH="140" HEIGHT="10" BORDER=0 ALT="">
+
+<!-- title -->
+<TABLE background="http://www.nevrax.org/inc/img/redline.gif" CELLSPACING=0 CELLPADDING=0 BORDER=0 width=100%><tr><td>
+<A HREF="http://www.nevrax.org/cvs/"><img src="http://www.nevrax.org/inc/img/t_cvs.gif" ALT="cvs" HEIGHT=20 BORDER=0></A>
+</td><td><IMG SRC="http://www.nevrax.org/inc/img/pixel.gif" WIDTH="1" HEIGHT="1" BORDER=0 ALT="">
+</td></tr></table>
+Error: Error occured during annotate: <b>error
+</b>
+
+<!-- footer -->
+<BR><FONT Size=+5>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </FONT>
+</TD>
+<TD WIDTH=15><IMG SRC=http://www.nevrax.org/inc/img/pixel.gif WIDTH=15 HEIGHT=15 BORDER=0 ALT=""></TD>
+</TR>
+</TABLE>
+</BODY>
+</HTML> \ No newline at end of file
diff --git a/cvs/cvsweb.cgi/code/nelns/admin_service/Makefile.am?annotate=1.5 b/cvs/cvsweb.cgi/code/nelns/admin_service/Makefile.am?annotate=1.5
new file mode 100644
index 00000000..6607b03e
--- /dev/null
+++ b/cvs/cvsweb.cgi/code/nelns/admin_service/Makefile.am?annotate=1.5
@@ -0,0 +1,76 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"><HTML>
+<HEAD><style> A { color:black }</style>
+<!-- hennerik CVSweb $Revision: 1.93 $ -->
+<TITLE>code/nelns/admin_service/Makefile.am - annotate - 1.5</TITLE></HEAD>
+<BODY BGCOLOR="#eeeeee">
+<table width="100%" border=0 cellspacing=0 cellpadding=1 bgcolor="#aaaaaa"><tr valign=bottom><td><a href="Makefile.am"><IMG SRC="http://www.nevrax.org/inc/img/picto-up.gif" ALT="[BACK]" BORDER="0" WIDTH="14" HEIGHT="13"></a> <b>Return to <A HREF="Makefile.am">Makefile.am</A>
+ CVS log</b> <IMG SRC="http://www.nevrax.org/inc/img/picto-news.gif" ALT="[TXT]" BORDER="0" WIDTH="13" HEIGHT="15"></td><td align=right><IMG SRC="http://www.nevrax.org/inc/img/picto-dir.gif" ALT="[DIR]" BORDER="0" WIDTH="15" HEIGHT="13"> <b>Up to <a href="/cvs/cvsweb.cgi/">Nevrax</a> / <a href="/cvs/cvsweb.cgi/code/">code</a> / <a href="/cvs/cvsweb.cgi/code/nelns/">nelns</a> / <a href="/cvs/cvsweb.cgi/code/nelns/admin_service/">admin_service</a></b></td></tr></table><h3 align=center>Annotation of code/nelns/admin_service/Makefile.am, Revision 1.5</h3>
+<pre>Status: 500 Internal Error
+Content-type: text/html
+
+<!doctype html public "-//W3C//DTD HTML 4.0 Transitional//EN" "http://www.w3.org/TR/REC-html40/loose.dtd">
+<HTML>
+<HEAD>
+ <TITLE>nevrax.org : cvs</TITLE>
+ <META name="keywords" content="freesoftware,nel,newt,snowballs,richard stallman,GNU,Multi-User Online World">
+
+ <LINK REL=stylesheet TYPE="text/css" HREF="http://www.nevrax.org/inc/css/nevrax.css">
+</HEAD>
+<BODY MARGINHEIGHT="0" MARGINWIDTH="0">
+
+<!-- uplinks -->
+<TABLE CELLSPACING=0 CELLPADDING=0 BORDER=0>
+ <TR>
+ <TD WIDTH=16><IMG SRC="http://www.nevrax.org/inc/img/pixel.gif" WIDTH="16" HEIGHT="16" BORDER=0 ALT=""></TD>
+ <TD WIDTH=140 BGCOLOR=#dddddd><IMG SRC="http://www.nevrax.org/inc/img/pixel.gif" WIDTH="140" HEIGHT="16" BORDER=0 ALT=""></TD>
+ <TD WIDTH=16><IMG SRC="http://www.nevrax.org/inc/img/pixel.gif" WIDTH="16" HEIGHT="16" BORDER=0 ALT=""></TD>
+ <TD><IMG width=6 height=14 SRC="http://www.nevrax.org/inc/img/reddots.gif" ALT="#" VSPACE=2 HSPACE=2 BORDER=0 ></TD><TD VALIGN=middle>&nbsp;<A CLASS=uplinks HREF=http://www.nevrax.org><b>Home</B></FONT></A>&nbsp;&nbsp;&nbsp;</TD>
+ <TD><IMG width=6 height=14 SRC="http://www.nevrax.org/inc/img/reddots.gif" ALT="#" VSPACE=2 HSPACE=2 BORDER=0 ></TD><TD VALIGN=middle>&nbsp;<A CLASS=uplinks HREF=http://www.nevrax.com><b>nevrax.com</B></FONT></A>&nbsp;&nbsp;&nbsp;</TD>
+ </TR>
+</TABLE>
+
+<!-- banner Nevrax -->
+<TABLE CELLSPACING=0 CELLPADDING=0 BORDER=0 WIDTH=100%>
+ <TR><TD BGCOLOR="#000000" BACKGROUND="http://www.nevrax.org/inc/img/black_banner.jpg"><A HREF="http://www.nevrax.org"><IMG SRC="http://www.nevrax.org/inc/img/nevrax.gif" WIDTH="170" HEIGHT="45" BORDER=0 ALT="Nevrax" ></A></TD></TR>
+</TABLE>
+
+<!-- main table -->
+<TABLE CELLSPACING=0 CELLPADDING=0 BORDER=0 height=100%>
+ <TR>
+ <TD WIDTH=16><IMG SRC="http://www.nevrax.org/inc/img/pixel.gif" WIDTH="16" HEIGHT="10" BORDER=0 ALT=""></TD>
+ <TD WIDTH=140 BGCOLOR=#dddddd VALIGN=TOP ALIGN=middle><IMG SRC="http://www.nevrax.org/inc/img/pixel.gif" WIDTH="140" HEIGHT="10" BORDER=0 ALT="">
+
+ <!------ Begin Box ------>
+ <TABLE BORDER=0 CELLSPACING=0 CELLPADDING=0 BGCOLOR=black><TR><TD><TABLE border=0 cellspacing=2 cellpadding=0 width=120><tr><TD ALIGN=middle bgcolor=black>
+ <FONT COLOR=white FACE="sans-serif"><B>Nevrax.org</B></FONT></TD></TR><tr><td colspan=2 bgcolor=#FFFFFF>
+ <TABLE cellspacing=0 cellpadding=1 border=0>
+ <tr><td ALIGN=middle><a class='linkbox' href="http://www.nevrax.org/news/" TITLE="Rubrique news"><img width=13 height=15 hspace=5 border=0 src=http://www.nevrax.org/inc/img/picto-news.gif ALT=#></A></td><td><a class='linkbox' href="http://www.nevrax.org/news/" TITLE="News">News</a></td></tr>
+ <tr><td ALIGN=middle><a class='linkbox' href="http://www.nevrax.org/mail/" TITLE="Rubrique mail"><img width=15 height=11 hspace=5 border=0 src=http://www.nevrax.org/inc/img/picto-mail.gif ALT=#></A></td><td><a class='linkbox' href="http://www.nevrax.org/mail/" TITLE="Mailing list archive">Mailing-list</a></td></tr>
+ <tr><td ALIGN=middle><a class='linkbox' href="http://www.nevrax.org/docs/" TITLE="Rubrique docs"><img width=14 height=16 hspace=5 border=0 src=http://www.nevrax.org/inc/img/picto-docs.gif ALT=#></A></td><td><a class='linkbox' href="http://www.nevrax.org/docs/" TITLE="Documentation">Documentation</a></td></tr>
+ <tr><td ALIGN=middle><a class='linkbox' href="http://www.nevrax.org/cvs/" TITLE="Rubrique cvs"><img width=13 height=17 hspace=5 border=0 src=http://www.nevrax.org/inc/img/picto-cvs.gif ALT=#></A></td><td><a class='linkbox' href="http://www.nevrax.org/cvs/" TITLE="CVS Web">CVS</a></td></tr>
+ <tr><td ALIGN=middle><a class='linkbox' href="http://www.nevrax.org/bugs/" TITLE="Rubrique bugs"><img width=20 height=16 hspace=5 border=0 src=http://www.nevrax.org/inc/img/picto-bugs.gif ALT=#></A></td><td><a class='linkbox' href="http://www.nevrax.org/bugs/" TITLE="Bugtracking">Bugs</a></td></tr>
+ <tr><td ALIGN=middle><a class='linkbox' href="http://www.nevrax.org/free/" TITLE="Rubrique license"><img width=18 height=12 hspace=5 border=0 src=http://www.nevrax.org/inc/img/picto-free.gif ALT=#></A></td><td><a class='linkbox' href="http://www.nevrax.org/free/" TITLE="Free Software">Free software</a></td></tr>
+ </TABLE>
+ </TD></TR></TABLE></TD></TR></TABLE>
+ <!------ End Box ------>
+
+ </TD>
+ <TD WIDTH=15><IMG SRC="http://www.nevrax.org/inc/img/pixel.gif" WIDTH="16" HEIGHT="16" BORDER=0 ALT=""></TD>
+ <TD ALIGN=left valign=top><IMG SRC="http://www.nevrax.org/inc/img/pixel.gif" WIDTH="140" HEIGHT="10" BORDER=0 ALT="">
+
+<!-- title -->
+<TABLE background="http://www.nevrax.org/inc/img/redline.gif" CELLSPACING=0 CELLPADDING=0 BORDER=0 width=100%><tr><td>
+<A HREF="http://www.nevrax.org/cvs/"><img src="http://www.nevrax.org/inc/img/t_cvs.gif" ALT="cvs" HEIGHT=20 BORDER=0></A>
+</td><td><IMG SRC="http://www.nevrax.org/inc/img/pixel.gif" WIDTH="1" HEIGHT="1" BORDER=0 ALT="">
+</td></tr></table>
+Error: Error occured during annotate: <b>error
+</b>
+
+<!-- footer -->
+<BR><FONT Size=+5>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </FONT>
+</TD>
+<TD WIDTH=15><IMG SRC=http://www.nevrax.org/inc/img/pixel.gif WIDTH=15 HEIGHT=15 BORDER=0 ALT=""></TD>
+</TR>
+</TABLE>
+</BODY>
+</HTML> \ No newline at end of file
diff --git a/cvs/cvsweb.cgi/code/nelns/admin_service/Makefile.am?annotate=1.6 b/cvs/cvsweb.cgi/code/nelns/admin_service/Makefile.am?annotate=1.6
new file mode 100644
index 00000000..a0790017
--- /dev/null
+++ b/cvs/cvsweb.cgi/code/nelns/admin_service/Makefile.am?annotate=1.6
@@ -0,0 +1,76 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"><HTML>
+<HEAD><style> A { color:black }</style>
+<!-- hennerik CVSweb $Revision: 1.93 $ -->
+<TITLE>code/nelns/admin_service/Makefile.am - annotate - 1.6</TITLE></HEAD>
+<BODY BGCOLOR="#eeeeee">
+<table width="100%" border=0 cellspacing=0 cellpadding=1 bgcolor="#aaaaaa"><tr valign=bottom><td><a href="Makefile.am"><IMG SRC="http://www.nevrax.org/inc/img/picto-up.gif" ALT="[BACK]" BORDER="0" WIDTH="14" HEIGHT="13"></a> <b>Return to <A HREF="Makefile.am">Makefile.am</A>
+ CVS log</b> <IMG SRC="http://www.nevrax.org/inc/img/picto-news.gif" ALT="[TXT]" BORDER="0" WIDTH="13" HEIGHT="15"></td><td align=right><IMG SRC="http://www.nevrax.org/inc/img/picto-dir.gif" ALT="[DIR]" BORDER="0" WIDTH="15" HEIGHT="13"> <b>Up to <a href="/cvs/cvsweb.cgi/">Nevrax</a> / <a href="/cvs/cvsweb.cgi/code/">code</a> / <a href="/cvs/cvsweb.cgi/code/nelns/">nelns</a> / <a href="/cvs/cvsweb.cgi/code/nelns/admin_service/">admin_service</a></b></td></tr></table><h3 align=center>Annotation of code/nelns/admin_service/Makefile.am, Revision 1.6</h3>
+<pre>Status: 500 Internal Error
+Content-type: text/html
+
+<!doctype html public "-//W3C//DTD HTML 4.0 Transitional//EN" "http://www.w3.org/TR/REC-html40/loose.dtd">
+<HTML>
+<HEAD>
+ <TITLE>nevrax.org : cvs</TITLE>
+ <META name="keywords" content="freesoftware,nel,newt,snowballs,richard stallman,GNU,Multi-User Online World">
+
+ <LINK REL=stylesheet TYPE="text/css" HREF="http://www.nevrax.org/inc/css/nevrax.css">
+</HEAD>
+<BODY MARGINHEIGHT="0" MARGINWIDTH="0">
+
+<!-- uplinks -->
+<TABLE CELLSPACING=0 CELLPADDING=0 BORDER=0>
+ <TR>
+ <TD WIDTH=16><IMG SRC="http://www.nevrax.org/inc/img/pixel.gif" WIDTH="16" HEIGHT="16" BORDER=0 ALT=""></TD>
+ <TD WIDTH=140 BGCOLOR=#dddddd><IMG SRC="http://www.nevrax.org/inc/img/pixel.gif" WIDTH="140" HEIGHT="16" BORDER=0 ALT=""></TD>
+ <TD WIDTH=16><IMG SRC="http://www.nevrax.org/inc/img/pixel.gif" WIDTH="16" HEIGHT="16" BORDER=0 ALT=""></TD>
+ <TD><IMG width=6 height=14 SRC="http://www.nevrax.org/inc/img/reddots.gif" ALT="#" VSPACE=2 HSPACE=2 BORDER=0 ></TD><TD VALIGN=middle>&nbsp;<A CLASS=uplinks HREF=http://www.nevrax.org><b>Home</B></FONT></A>&nbsp;&nbsp;&nbsp;</TD>
+ <TD><IMG width=6 height=14 SRC="http://www.nevrax.org/inc/img/reddots.gif" ALT="#" VSPACE=2 HSPACE=2 BORDER=0 ></TD><TD VALIGN=middle>&nbsp;<A CLASS=uplinks HREF=http://www.nevrax.com><b>nevrax.com</B></FONT></A>&nbsp;&nbsp;&nbsp;</TD>
+ </TR>
+</TABLE>
+
+<!-- banner Nevrax -->
+<TABLE CELLSPACING=0 CELLPADDING=0 BORDER=0 WIDTH=100%>
+ <TR><TD BGCOLOR="#000000" BACKGROUND="http://www.nevrax.org/inc/img/black_banner.jpg"><A HREF="http://www.nevrax.org"><IMG SRC="http://www.nevrax.org/inc/img/nevrax.gif" WIDTH="170" HEIGHT="45" BORDER=0 ALT="Nevrax" ></A></TD></TR>
+</TABLE>
+
+<!-- main table -->
+<TABLE CELLSPACING=0 CELLPADDING=0 BORDER=0 height=100%>
+ <TR>
+ <TD WIDTH=16><IMG SRC="http://www.nevrax.org/inc/img/pixel.gif" WIDTH="16" HEIGHT="10" BORDER=0 ALT=""></TD>
+ <TD WIDTH=140 BGCOLOR=#dddddd VALIGN=TOP ALIGN=middle><IMG SRC="http://www.nevrax.org/inc/img/pixel.gif" WIDTH="140" HEIGHT="10" BORDER=0 ALT="">
+
+ <!------ Begin Box ------>
+ <TABLE BORDER=0 CELLSPACING=0 CELLPADDING=0 BGCOLOR=black><TR><TD><TABLE border=0 cellspacing=2 cellpadding=0 width=120><tr><TD ALIGN=middle bgcolor=black>
+ <FONT COLOR=white FACE="sans-serif"><B>Nevrax.org</B></FONT></TD></TR><tr><td colspan=2 bgcolor=#FFFFFF>
+ <TABLE cellspacing=0 cellpadding=1 border=0>
+ <tr><td ALIGN=middle><a class='linkbox' href="http://www.nevrax.org/news/" TITLE="Rubrique news"><img width=13 height=15 hspace=5 border=0 src=http://www.nevrax.org/inc/img/picto-news.gif ALT=#></A></td><td><a class='linkbox' href="http://www.nevrax.org/news/" TITLE="News">News</a></td></tr>
+ <tr><td ALIGN=middle><a class='linkbox' href="http://www.nevrax.org/mail/" TITLE="Rubrique mail"><img width=15 height=11 hspace=5 border=0 src=http://www.nevrax.org/inc/img/picto-mail.gif ALT=#></A></td><td><a class='linkbox' href="http://www.nevrax.org/mail/" TITLE="Mailing list archive">Mailing-list</a></td></tr>
+ <tr><td ALIGN=middle><a class='linkbox' href="http://www.nevrax.org/docs/" TITLE="Rubrique docs"><img width=14 height=16 hspace=5 border=0 src=http://www.nevrax.org/inc/img/picto-docs.gif ALT=#></A></td><td><a class='linkbox' href="http://www.nevrax.org/docs/" TITLE="Documentation">Documentation</a></td></tr>
+ <tr><td ALIGN=middle><a class='linkbox' href="http://www.nevrax.org/cvs/" TITLE="Rubrique cvs"><img width=13 height=17 hspace=5 border=0 src=http://www.nevrax.org/inc/img/picto-cvs.gif ALT=#></A></td><td><a class='linkbox' href="http://www.nevrax.org/cvs/" TITLE="CVS Web">CVS</a></td></tr>
+ <tr><td ALIGN=middle><a class='linkbox' href="http://www.nevrax.org/bugs/" TITLE="Rubrique bugs"><img width=20 height=16 hspace=5 border=0 src=http://www.nevrax.org/inc/img/picto-bugs.gif ALT=#></A></td><td><a class='linkbox' href="http://www.nevrax.org/bugs/" TITLE="Bugtracking">Bugs</a></td></tr>
+ <tr><td ALIGN=middle><a class='linkbox' href="http://www.nevrax.org/free/" TITLE="Rubrique license"><img width=18 height=12 hspace=5 border=0 src=http://www.nevrax.org/inc/img/picto-free.gif ALT=#></A></td><td><a class='linkbox' href="http://www.nevrax.org/free/" TITLE="Free Software">Free software</a></td></tr>
+ </TABLE>
+ </TD></TR></TABLE></TD></TR></TABLE>
+ <!------ End Box ------>
+
+ </TD>
+ <TD WIDTH=15><IMG SRC="http://www.nevrax.org/inc/img/pixel.gif" WIDTH="16" HEIGHT="16" BORDER=0 ALT=""></TD>
+ <TD ALIGN=left valign=top><IMG SRC="http://www.nevrax.org/inc/img/pixel.gif" WIDTH="140" HEIGHT="10" BORDER=0 ALT="">
+
+<!-- title -->
+<TABLE background="http://www.nevrax.org/inc/img/redline.gif" CELLSPACING=0 CELLPADDING=0 BORDER=0 width=100%><tr><td>
+<A HREF="http://www.nevrax.org/cvs/"><img src="http://www.nevrax.org/inc/img/t_cvs.gif" ALT="cvs" HEIGHT=20 BORDER=0></A>
+</td><td><IMG SRC="http://www.nevrax.org/inc/img/pixel.gif" WIDTH="1" HEIGHT="1" BORDER=0 ALT="">
+</td></tr></table>
+Error: Error occured during annotate: <b>error
+</b>
+
+<!-- footer -->
+<BR><FONT Size=+5>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </FONT>
+</TD>
+<TD WIDTH=15><IMG SRC=http://www.nevrax.org/inc/img/pixel.gif WIDTH=15 HEIGHT=15 BORDER=0 ALT=""></TD>
+</TR>
+</TABLE>
+</BODY>
+</HTML> \ No newline at end of file
diff --git a/cvs/cvsweb.cgi/code/nelns/admin_service/Makefile.am?only_with_tag=HEAD b/cvs/cvsweb.cgi/code/nelns/admin_service/Makefile.am?only_with_tag=HEAD
new file mode 100644
index 00000000..ce659657
--- /dev/null
+++ b/cvs/cvsweb.cgi/code/nelns/admin_service/Makefile.am?only_with_tag=HEAD
@@ -0,0 +1,138 @@
+<!doctype html public "-//W3C//DTD HTML 4.0 Transitional//EN" "http://www.w3.org/TR/REC-html40/loose.dtd">
+<HTML>
+<HEAD>
+ <TITLE>nevrax.org : cvs</TITLE>
+ <META name="keywords" content="freesoftware,nel,newt,snowballs,richard stallman,GNU,Multi-User Online World">
+
+ <LINK REL=stylesheet TYPE="text/css" HREF="http://www.nevrax.org/inc/css/nevrax.css">
+</HEAD>
+<BODY MARGINHEIGHT="0" MARGINWIDTH="0">
+
+<!-- uplinks -->
+<TABLE CELLSPACING=0 CELLPADDING=0 BORDER=0>
+ <TR>
+ <TD WIDTH=16><IMG SRC="http://www.nevrax.org/inc/img/pixel.gif" WIDTH="16" HEIGHT="16" BORDER=0 ALT=""></TD>
+ <TD WIDTH=140 BGCOLOR=#dddddd><IMG SRC="http://www.nevrax.org/inc/img/pixel.gif" WIDTH="140" HEIGHT="16" BORDER=0 ALT=""></TD>
+ <TD WIDTH=16><IMG SRC="http://www.nevrax.org/inc/img/pixel.gif" WIDTH="16" HEIGHT="16" BORDER=0 ALT=""></TD>
+ <TD><IMG width=6 height=14 SRC="http://www.nevrax.org/inc/img/reddots.gif" ALT="#" VSPACE=2 HSPACE=2 BORDER=0 ></TD><TD VALIGN=middle>&nbsp;<A CLASS=uplinks HREF=http://www.nevrax.org><b>Home</B></FONT></A>&nbsp;&nbsp;&nbsp;</TD>
+ <TD><IMG width=6 height=14 SRC="http://www.nevrax.org/inc/img/reddots.gif" ALT="#" VSPACE=2 HSPACE=2 BORDER=0 ></TD><TD VALIGN=middle>&nbsp;<A CLASS=uplinks HREF=http://www.nevrax.com><b>nevrax.com</B></FONT></A>&nbsp;&nbsp;&nbsp;</TD>
+ </TR>
+</TABLE>
+
+<!-- banner Nevrax -->
+<TABLE CELLSPACING=0 CELLPADDING=0 BORDER=0 WIDTH=100%>
+ <TR><TD BGCOLOR="#000000" BACKGROUND="http://www.nevrax.org/inc/img/black_banner.jpg"><A HREF="http://www.nevrax.org"><IMG SRC="http://www.nevrax.org/inc/img/nevrax.gif" WIDTH="170" HEIGHT="45" BORDER=0 ALT="Nevrax" ></A></TD></TR>
+</TABLE>
+
+<!-- main table -->
+<TABLE CELLSPACING=0 CELLPADDING=0 BORDER=0 height=100%>
+ <TR>
+ <TD WIDTH=16><IMG SRC="http://www.nevrax.org/inc/img/pixel.gif" WIDTH="16" HEIGHT="10" BORDER=0 ALT=""></TD>
+ <TD WIDTH=140 BGCOLOR=#dddddd VALIGN=TOP ALIGN=middle><IMG SRC="http://www.nevrax.org/inc/img/pixel.gif" WIDTH="140" HEIGHT="10" BORDER=0 ALT="">
+
+ <!------ Begin Box ------>
+ <TABLE BORDER=0 CELLSPACING=0 CELLPADDING=0 BGCOLOR=black><TR><TD><TABLE border=0 cellspacing=2 cellpadding=0 width=120><tr><TD ALIGN=middle bgcolor=black>
+ <FONT COLOR=white FACE="sans-serif"><B>Nevrax.org</B></FONT></TD></TR><tr><td colspan=2 bgcolor=#FFFFFF>
+ <TABLE cellspacing=0 cellpadding=1 border=0>
+ <tr><td ALIGN=middle><a class='linkbox' href="http://www.nevrax.org/news/" TITLE="Rubrique news"><img width=13 height=15 hspace=5 border=0 src=http://www.nevrax.org/inc/img/picto-news.gif ALT=#></A></td><td><a class='linkbox' href="http://www.nevrax.org/news/" TITLE="News">News</a></td></tr>
+ <tr><td ALIGN=middle><a class='linkbox' href="http://www.nevrax.org/mail/" TITLE="Rubrique mail"><img width=15 height=11 hspace=5 border=0 src=http://www.nevrax.org/inc/img/picto-mail.gif ALT=#></A></td><td><a class='linkbox' href="http://www.nevrax.org/mail/" TITLE="Mailing list archive">Mailing-list</a></td></tr>
+ <tr><td ALIGN=middle><a class='linkbox' href="http://www.nevrax.org/docs/" TITLE="Rubrique docs"><img width=14 height=16 hspace=5 border=0 src=http://www.nevrax.org/inc/img/picto-docs.gif ALT=#></A></td><td><a class='linkbox' href="http://www.nevrax.org/docs/" TITLE="Documentation">Documentation</a></td></tr>
+ <tr><td ALIGN=middle><a class='linkbox' href="http://www.nevrax.org/cvs/" TITLE="Rubrique cvs"><img width=13 height=17 hspace=5 border=0 src=http://www.nevrax.org/inc/img/picto-cvs.gif ALT=#></A></td><td><a class='linkbox' href="http://www.nevrax.org/cvs/" TITLE="CVS Web">CVS</a></td></tr>
+ <tr><td ALIGN=middle><a class='linkbox' href="http://www.nevrax.org/bugs/" TITLE="Rubrique bugs"><img width=20 height=16 hspace=5 border=0 src=http://www.nevrax.org/inc/img/picto-bugs.gif ALT=#></A></td><td><a class='linkbox' href="http://www.nevrax.org/bugs/" TITLE="Bugtracking">Bugs</a></td></tr>
+ <tr><td ALIGN=middle><a class='linkbox' href="http://www.nevrax.org/free/" TITLE="Rubrique license"><img width=18 height=12 hspace=5 border=0 src=http://www.nevrax.org/inc/img/picto-free.gif ALT=#></A></td><td><a class='linkbox' href="http://www.nevrax.org/free/" TITLE="Free Software">Free software</a></td></tr>
+ </TABLE>
+ </TD></TR></TABLE></TD></TR></TABLE>
+ <!------ End Box ------>
+
+ </TD>
+ <TD WIDTH=15><IMG SRC="http://www.nevrax.org/inc/img/pixel.gif" WIDTH="16" HEIGHT="16" BORDER=0 ALT=""></TD>
+ <TD ALIGN=left valign=top><IMG SRC="http://www.nevrax.org/inc/img/pixel.gif" WIDTH="140" HEIGHT="10" BORDER=0 ALT="">
+
+<!-- title -->
+<TABLE background="http://www.nevrax.org/inc/img/redline.gif" CELLSPACING=0 CELLPADDING=0 BORDER=0 width=100%><tr><td>
+<A HREF="http://www.nevrax.org/cvs/"><img src="http://www.nevrax.org/inc/img/t_cvs.gif" ALT="cvs" HEIGHT=20 BORDER=0></A>
+</td><td><IMG SRC="http://www.nevrax.org/inc/img/pixel.gif" WIDTH="1" HEIGHT="1" BORDER=0 ALT="">
+</td></tr></table>
+
+<!-- title -->
+<table width=100%><tr><td align=left><b> <a href="/cvs/cvsweb.cgi/?only_with_tag=HEAD">Nevrax</a> / <a href="/cvs/cvsweb.cgi/code/?only_with_tag=HEAD">code</a> / <a href="/cvs/cvsweb.cgi/code/nelns/?only_with_tag=HEAD">nelns</a> / <a href="/cvs/cvsweb.cgi/code/nelns/admin_service/?only_with_tag=HEAD">admin_service</a> / Makefile.am</b></td><td align=right><b></b></td></TR></TABLE>
+
+<!-- block -->
+<TABLE bgcolor="#dddddd" CELLSPACING=0 CELLPADDING=0 BORDER=0 width=100%><tr><td width=1% valign=middle><img width=6 height=14 hspace=2 vspace=2 src="http://www.nevrax.org/inc/img/reddots.gif"></TD>
+ <TD><B>Makefile.am</B></TD>
+ <TD ALIGN=RIGHT> </td>
+</tr></table>
+<P>
+<p>Default branch: MAIN<BR>
+Current tag: HEAD<BR>
+<HR size=1 NOSHADE><P><a NAME="rev1.6"></a><a NAME="HEAD"></a><a NAME="MAIN"></a>
+ Revision <A HREF="Makefile.am?rev=1.6&amp;content-type=text/x-cvsweb-markup&amp;only_with_tag=HEAD"><b>1.6</b></A> / (<A HREF="/cvs/cvsweb.cgi/~checkout~/code/nelns/admin_service/Makefile.am?rev=1.6&amp;content-type=text/plain&amp;only_with_tag=HEAD" target="cvs_checkout" onClick="window.open('/cvs/cvsweb.cgi/~checkout~/code/nelns/admin_service/Makefile.am?rev=1.6&amp;content-type=text/plain','cvs_checkout','resizeable,scrollbars');"><b>download</b></A>) - <a href="/cvs/cvsweb.cgi/code/nelns/admin_service/Makefile.am?annotate=1.6&amp;only_with_tag=HEAD">annotate</a> - <A HREF="/cvs/cvsweb.cgi/code/nelns/admin_service/Makefile.am?r1=1.6&amp;only_with_tag=HEAD">[select for diffs]</A>
+, <i>Wed Jun 12 10:21:02 2002 UTC</i> (6 weeks ago) by <i>lecroart</i>
+<BR>Branch: <b><A HREF="Makefile.am?only_with_tag=MAIN">MAIN</A>
+</b>
+<BR>CVS Tags: <b><A HREF="Makefile.am?only_with_tag=HEAD">HEAD</A>
+</b><BR>Changes since <b>1.5: +4 -3
+ lines</b><BR>Diff to previous <A HREF="/cvs/cvsweb.cgi/code/nelns/admin_service/Makefile.am.diff?r1=1.5&amp;r2=1.6&amp;only_with_tag=HEAD">1.5</A>
+<PRE>
+no message
+</PRE>
+
+<!-- block -->
+<TABLE bgcolor="#dddddd" CELLSPACING=0 CELLPADDING=0 BORDER=0 width=100%><tr><td width=1% valign=middle><img width=6 height=14 hspace=2 vspace=2 src="http://www.nevrax.org/inc/img/reddots.gif"></TD>
+ <TD><B>Request Diffs</B></TD>
+ <TD ALIGN=RIGHT> </td>
+</tr></table>
+<P>
+<P>
+<FORM METHOD="GET" ACTION="/cvs/cvsweb.cgi/code/nelns/admin_service/Makefile.am.diff" NAME="diff_select">
+<INPUT TYPE=HIDDEN NAME="only_with_tag" VALUE="HEAD">
+Diffs between
+<SELECT NAME="r1">
+<OPTION VALUE="text" SELECTED>Use Text Field
+<OPTION VALUE="1:MAIN">MAIN
+<OPTION VALUE="1.6:HEAD">HEAD
+</SELECT>
+<INPUT TYPE="TEXT" SIZE="12" NAME="tr1" VALUE="1.6" onChange='document.diff_select.r1.selectedIndex=0'>
+ and
+<SELECT NAME="r2">
+<OPTION VALUE="text" SELECTED>Use Text Field
+<OPTION VALUE="1:MAIN">MAIN
+<OPTION VALUE="1.6:HEAD">HEAD
+</SELECT>
+<INPUT TYPE="TEXT" SIZE="12" NAME="tr2" VALUE="1.6" onChange='docuement.diff_select.r2.selectedIndex=0'>
+<BR>Type of Diff should be a&nbsp;<SELECT NAME="f">
+<OPTION VALUE=h SELECTED>Colored Diff<OPTION VALUE=H>Long Colored Diff<OPTION VALUE=u>Unidiff<OPTION VALUE=c>Context Diff<OPTION VALUE=s>Side by Side</SELECT><INPUT TYPE=SUBMIT VALUE=" Get Diffs ">
+</FORM>
+
+<!-- block -->
+<TABLE bgcolor="#dddddd" CELLSPACING=0 CELLPADDING=0 BORDER=0 width=100%><tr><td width=1% valign=middle><img width=6 height=14 hspace=2 vspace=2 src="http://www.nevrax.org/inc/img/reddots.gif"></TD>
+ <TD><B>Select branch</B></TD>
+ <TD ALIGN=RIGHT> </td>
+</tr></table>
+<P>
+<P>
+<A name=branch></A>
+<FORM METHOD="GET" ACTION="/cvs/cvsweb.cgi/code/nelns/admin_service/Makefile.am">
+View only Branch:
+<SELECT NAME="only_with_tag" onchange="submit()">
+<OPTION VALUE="">Show all branches
+<OPTION>MAIN
+</SELECT>
+<INPUT TYPE=SUBMIT VALUE=" View Branch ">
+</FORM>
+<A name=logsort></A>
+<FORM METHOD="GET" ACTION="/cvs/cvsweb.cgi/code/nelns/admin_service/Makefile.am">
+Sort log by:
+<SELECT NAME="logsort" onchange="submit()">
+<OPTION VALUE=cvs>Not sorted<OPTION VALUE=date SELECTED>Commit date<OPTION VALUE=rev>Revision</SELECT>
+<INPUT TYPE=SUBMIT VALUE=" Sort ">
+</FORM>
+
+<!-- footer -->
+<BR><FONT Size=+5>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </FONT>
+</TD>
+<TD WIDTH=15><IMG SRC=http://www.nevrax.org/inc/img/pixel.gif WIDTH=15 HEIGHT=15 BORDER=0 ALT=""></TD>
+</TR>
+</TABLE>
+</BODY>
+</HTML></BODY></HTML>
diff --git a/cvs/cvsweb.cgi/code/nelns/admin_service/Makefile.am?r1=1.3 b/cvs/cvsweb.cgi/code/nelns/admin_service/Makefile.am?r1=1.3
new file mode 100644
index 00000000..c4f9b899
--- /dev/null
+++ b/cvs/cvsweb.cgi/code/nelns/admin_service/Makefile.am?r1=1.3
@@ -0,0 +1,187 @@
+<!doctype html public "-//W3C//DTD HTML 4.0 Transitional//EN" "http://www.w3.org/TR/REC-html40/loose.dtd">
+<HTML>
+<HEAD>
+ <TITLE>nevrax.org : cvs</TITLE>
+ <META name="keywords" content="freesoftware,nel,newt,snowballs,richard stallman,GNU,Multi-User Online World">
+
+ <LINK REL=stylesheet TYPE="text/css" HREF="http://www.nevrax.org/inc/css/nevrax.css">
+</HEAD>
+<BODY MARGINHEIGHT="0" MARGINWIDTH="0">
+
+<!-- uplinks -->
+<TABLE CELLSPACING=0 CELLPADDING=0 BORDER=0>
+ <TR>
+ <TD WIDTH=16><IMG SRC="http://www.nevrax.org/inc/img/pixel.gif" WIDTH="16" HEIGHT="16" BORDER=0 ALT=""></TD>
+ <TD WIDTH=140 BGCOLOR=#dddddd><IMG SRC="http://www.nevrax.org/inc/img/pixel.gif" WIDTH="140" HEIGHT="16" BORDER=0 ALT=""></TD>
+ <TD WIDTH=16><IMG SRC="http://www.nevrax.org/inc/img/pixel.gif" WIDTH="16" HEIGHT="16" BORDER=0 ALT=""></TD>
+ <TD><IMG width=6 height=14 SRC="http://www.nevrax.org/inc/img/reddots.gif" ALT="#" VSPACE=2 HSPACE=2 BORDER=0 ></TD><TD VALIGN=middle>&nbsp;<A CLASS=uplinks HREF=http://www.nevrax.org><b>Home</B></FONT></A>&nbsp;&nbsp;&nbsp;</TD>
+ <TD><IMG width=6 height=14 SRC="http://www.nevrax.org/inc/img/reddots.gif" ALT="#" VSPACE=2 HSPACE=2 BORDER=0 ></TD><TD VALIGN=middle>&nbsp;<A CLASS=uplinks HREF=http://www.nevrax.com><b>nevrax.com</B></FONT></A>&nbsp;&nbsp;&nbsp;</TD>
+ </TR>
+</TABLE>
+
+<!-- banner Nevrax -->
+<TABLE CELLSPACING=0 CELLPADDING=0 BORDER=0 WIDTH=100%>
+ <TR><TD BGCOLOR="#000000" BACKGROUND="http://www.nevrax.org/inc/img/black_banner.jpg"><A HREF="http://www.nevrax.org"><IMG SRC="http://www.nevrax.org/inc/img/nevrax.gif" WIDTH="170" HEIGHT="45" BORDER=0 ALT="Nevrax" ></A></TD></TR>
+</TABLE>
+
+<!-- main table -->
+<TABLE CELLSPACING=0 CELLPADDING=0 BORDER=0 height=100%>
+ <TR>
+ <TD WIDTH=16><IMG SRC="http://www.nevrax.org/inc/img/pixel.gif" WIDTH="16" HEIGHT="10" BORDER=0 ALT=""></TD>
+ <TD WIDTH=140 BGCOLOR=#dddddd VALIGN=TOP ALIGN=middle><IMG SRC="http://www.nevrax.org/inc/img/pixel.gif" WIDTH="140" HEIGHT="10" BORDER=0 ALT="">
+
+ <!------ Begin Box ------>
+ <TABLE BORDER=0 CELLSPACING=0 CELLPADDING=0 BGCOLOR=black><TR><TD><TABLE border=0 cellspacing=2 cellpadding=0 width=120><tr><TD ALIGN=middle bgcolor=black>
+ <FONT COLOR=white FACE="sans-serif"><B>Nevrax.org</B></FONT></TD></TR><tr><td colspan=2 bgcolor=#FFFFFF>
+ <TABLE cellspacing=0 cellpadding=1 border=0>
+ <tr><td ALIGN=middle><a class='linkbox' href="http://www.nevrax.org/news/" TITLE="Rubrique news"><img width=13 height=15 hspace=5 border=0 src=http://www.nevrax.org/inc/img/picto-news.gif ALT=#></A></td><td><a class='linkbox' href="http://www.nevrax.org/news/" TITLE="News">News</a></td></tr>
+ <tr><td ALIGN=middle><a class='linkbox' href="http://www.nevrax.org/mail/" TITLE="Rubrique mail"><img width=15 height=11 hspace=5 border=0 src=http://www.nevrax.org/inc/img/picto-mail.gif ALT=#></A></td><td><a class='linkbox' href="http://www.nevrax.org/mail/" TITLE="Mailing list archive">Mailing-list</a></td></tr>
+ <tr><td ALIGN=middle><a class='linkbox' href="http://www.nevrax.org/docs/" TITLE="Rubrique docs"><img width=14 height=16 hspace=5 border=0 src=http://www.nevrax.org/inc/img/picto-docs.gif ALT=#></A></td><td><a class='linkbox' href="http://www.nevrax.org/docs/" TITLE="Documentation">Documentation</a></td></tr>
+ <tr><td ALIGN=middle><a class='linkbox' href="http://www.nevrax.org/cvs/" TITLE="Rubrique cvs"><img width=13 height=17 hspace=5 border=0 src=http://www.nevrax.org/inc/img/picto-cvs.gif ALT=#></A></td><td><a class='linkbox' href="http://www.nevrax.org/cvs/" TITLE="CVS Web">CVS</a></td></tr>
+ <tr><td ALIGN=middle><a class='linkbox' href="http://www.nevrax.org/bugs/" TITLE="Rubrique bugs"><img width=20 height=16 hspace=5 border=0 src=http://www.nevrax.org/inc/img/picto-bugs.gif ALT=#></A></td><td><a class='linkbox' href="http://www.nevrax.org/bugs/" TITLE="Bugtracking">Bugs</a></td></tr>
+ <tr><td ALIGN=middle><a class='linkbox' href="http://www.nevrax.org/free/" TITLE="Rubrique license"><img width=18 height=12 hspace=5 border=0 src=http://www.nevrax.org/inc/img/picto-free.gif ALT=#></A></td><td><a class='linkbox' href="http://www.nevrax.org/free/" TITLE="Free Software">Free software</a></td></tr>
+ </TABLE>
+ </TD></TR></TABLE></TD></TR></TABLE>
+ <!------ End Box ------>
+
+ </TD>
+ <TD WIDTH=15><IMG SRC="http://www.nevrax.org/inc/img/pixel.gif" WIDTH="16" HEIGHT="16" BORDER=0 ALT=""></TD>
+ <TD ALIGN=left valign=top><IMG SRC="http://www.nevrax.org/inc/img/pixel.gif" WIDTH="140" HEIGHT="10" BORDER=0 ALT="">
+
+<!-- title -->
+<TABLE background="http://www.nevrax.org/inc/img/redline.gif" CELLSPACING=0 CELLPADDING=0 BORDER=0 width=100%><tr><td>
+<A HREF="http://www.nevrax.org/cvs/"><img src="http://www.nevrax.org/inc/img/t_cvs.gif" ALT="cvs" HEIGHT=20 BORDER=0></A>
+</td><td><IMG SRC="http://www.nevrax.org/inc/img/pixel.gif" WIDTH="1" HEIGHT="1" BORDER=0 ALT="">
+</td></tr></table>
+
+<!-- title -->
+<table width=100%><tr><td align=left><b> <a href="/cvs/cvsweb.cgi/">Nevrax</a> / <a href="/cvs/cvsweb.cgi/code/">code</a> / <a href="/cvs/cvsweb.cgi/code/nelns/">nelns</a> / <a href="/cvs/cvsweb.cgi/code/nelns/admin_service/">admin_service</a> / Makefile.am</b></td><td align=right><b></b></td></TR></TABLE>
+
+<!-- block -->
+<TABLE bgcolor="#dddddd" CELLSPACING=0 CELLPADDING=0 BORDER=0 width=100%><tr><td width=1% valign=middle><img width=6 height=14 hspace=2 vspace=2 src="http://www.nevrax.org/inc/img/reddots.gif"></TD>
+ <TD><B>Makefile.am</B></TD>
+ <TD ALIGN=RIGHT> </td>
+</tr></table>
+<P>
+<p>Default branch: MAIN<BR>
+<HR size=1 NOSHADE><P><a NAME="rev1.6"></a><a NAME="HEAD"></a><a NAME="MAIN"></a>
+ Revision <A HREF="Makefile.am?rev=1.6&amp;content-type=text/x-cvsweb-markup"><b>1.6</b></A> / (<A HREF="/cvs/cvsweb.cgi/~checkout~/code/nelns/admin_service/Makefile.am?rev=1.6&amp;content-type=text/plain" target="cvs_checkout" onClick="window.open('/cvs/cvsweb.cgi/~checkout~/code/nelns/admin_service/Makefile.am?rev=1.6&amp;content-type=text/plain','cvs_checkout','resizeable,scrollbars');"><b>download</b></A>) - <a href="/cvs/cvsweb.cgi/code/nelns/admin_service/Makefile.am?annotate=1.6">annotate</a> - <A HREF="/cvs/cvsweb.cgi/code/nelns/admin_service/Makefile.am?r1=1.6">[select for diffs]</A>
+, <i>Wed Jun 12 10:21:02 2002 UTC</i> (6 weeks ago) by <i>lecroart</i>
+<BR>Branch: <b><A HREF="Makefile.am?only_with_tag=MAIN">MAIN</A>
+</b>
+<BR>CVS Tags: <b><A HREF="Makefile.am?only_with_tag=HEAD">HEAD</A>
+</b><BR>Changes since <b>1.5: +4 -3
+ lines</b><BR>Diff to previous <A HREF="/cvs/cvsweb.cgi/code/nelns/admin_service/Makefile.am.diff?r1=1.5&amp;r2=1.6">1.5</A>
+ to selected <A HREF="/cvs/cvsweb.cgi/code/nelns/admin_service/Makefile.am.diff?r1=1.3&amp;r2=1.6">1.3</A>
+<PRE>
+no message
+</PRE>
+<HR size=1 NOSHADE><P><a NAME="rev1.5"></a>
+ Revision <A HREF="Makefile.am?rev=1.5&amp;content-type=text/x-cvsweb-markup"><b>1.5</b></A> / (<A HREF="/cvs/cvsweb.cgi/~checkout~/code/nelns/admin_service/Makefile.am?rev=1.5&amp;content-type=text/plain" target="cvs_checkout" onClick="window.open('/cvs/cvsweb.cgi/~checkout~/code/nelns/admin_service/Makefile.am?rev=1.5&amp;content-type=text/plain','cvs_checkout','resizeable,scrollbars');"><b>download</b></A>) - <a href="/cvs/cvsweb.cgi/code/nelns/admin_service/Makefile.am?annotate=1.5">annotate</a> - <A HREF="/cvs/cvsweb.cgi/code/nelns/admin_service/Makefile.am?r1=1.5">[select for diffs]</A>
+, <i>Wed Apr 10 07:33:07 2002 UTC</i> (3 months, 2 weeks ago) by <i>lecroart</i>
+<BR>Branch: <b><A HREF="Makefile.am?only_with_tag=MAIN">MAIN</A>
+</b>
+<BR>Changes since <b>1.4: +1 -3
+ lines</b><BR>Diff to previous <A HREF="/cvs/cvsweb.cgi/code/nelns/admin_service/Makefile.am.diff?r1=1.4&amp;r2=1.5">1.4</A>
+ to selected <A HREF="/cvs/cvsweb.cgi/code/nelns/admin_service/Makefile.am.diff?r1=1.3&amp;r2=1.5">1.3</A>
+<PRE>
+CHANGED: update makefile to manage log and cfg dir (thanks to loic dachary)
+</PRE>
+<HR size=1 NOSHADE><P><a NAME="rev1.4"></a>
+ Revision <A HREF="Makefile.am?rev=1.4&amp;content-type=text/x-cvsweb-markup"><b>1.4</b></A> / (<A HREF="/cvs/cvsweb.cgi/~checkout~/code/nelns/admin_service/Makefile.am?rev=1.4&amp;content-type=text/plain" target="cvs_checkout" onClick="window.open('/cvs/cvsweb.cgi/~checkout~/code/nelns/admin_service/Makefile.am?rev=1.4&amp;content-type=text/plain','cvs_checkout','resizeable,scrollbars');"><b>download</b></A>) - <a href="/cvs/cvsweb.cgi/code/nelns/admin_service/Makefile.am?annotate=1.4">annotate</a> - <A HREF="/cvs/cvsweb.cgi/code/nelns/admin_service/Makefile.am?r1=1.4">[select for diffs]</A>
+, <i>Tue Mar 19 17:42:48 2002 UTC</i> (4 months ago) by <i>valignat</i>
+<BR>Branch: <b><A HREF="Makefile.am?only_with_tag=MAIN">MAIN</A>
+</b>
+<BR>Changes since <b>1.3: +6 -4
+ lines</b><BR>Diff to previous <A HREF="/cvs/cvsweb.cgi/code/nelns/admin_service/Makefile.am.diff?r1=1.3&amp;r2=1.4">1.3</A>
+<PRE>
+Applied patches which help to have a clen install on GNU/Linux and to make a Debian package (changes on the management of config and log files, bugfixes, etc ...)
+</PRE>
+<HR size=1 NOSHADE><P><a NAME="rev1.3"></a>
+ Revision <A HREF="Makefile.am?rev=1.3&amp;content-type=text/x-cvsweb-markup"><b>1.3</b></A> / (<A HREF="/cvs/cvsweb.cgi/~checkout~/code/nelns/admin_service/Makefile.am?rev=1.3&amp;content-type=text/plain" target="cvs_checkout" onClick="window.open('/cvs/cvsweb.cgi/~checkout~/code/nelns/admin_service/Makefile.am?rev=1.3&amp;content-type=text/plain','cvs_checkout','resizeable,scrollbars');"><b>download</b></A>) - <a href="/cvs/cvsweb.cgi/code/nelns/admin_service/Makefile.am?annotate=1.3">annotate</a> - <b>[selected]</b>, <i>Fri Jul 27 15:51:10 2001 UTC</i> (11 months, 3 weeks ago) by <i>valignat</i>
+<BR>Branch: <b><A HREF="Makefile.am?only_with_tag=MAIN">MAIN</A>
+</b>
+<BR>Changes since <b>1.2: +4 -3
+ lines</b><BR>Diff to previous <A HREF="/cvs/cvsweb.cgi/code/nelns/admin_service/Makefile.am.diff?r1=1.2&amp;r2=1.3">1.2</A>
+<PRE>
+#ADDED some missing source files and clean Makefile.am for NeLNS.
+</PRE>
+<HR size=1 NOSHADE><P><a NAME="rev1.2"></a>
+ Revision <A HREF="Makefile.am?rev=1.2&amp;content-type=text/x-cvsweb-markup"><b>1.2</b></A> / (<A HREF="/cvs/cvsweb.cgi/~checkout~/code/nelns/admin_service/Makefile.am?rev=1.2&amp;content-type=text/plain" target="cvs_checkout" onClick="window.open('/cvs/cvsweb.cgi/~checkout~/code/nelns/admin_service/Makefile.am?rev=1.2&amp;content-type=text/plain','cvs_checkout','resizeable,scrollbars');"><b>download</b></A>) - <a href="/cvs/cvsweb.cgi/code/nelns/admin_service/Makefile.am?annotate=1.2">annotate</a> - <A HREF="/cvs/cvsweb.cgi/code/nelns/admin_service/Makefile.am?r1=1.2">[select for diffs]</A>
+, <i>Thu May 3 13:19:13 2001 UTC</i> (14 months, 3 weeks ago) by <i>lecroart</i>
+<BR>Branch: <b><A HREF="Makefile.am?only_with_tag=MAIN">MAIN</A>
+</b>
+<BR>Changes since <b>1.1: +4 -4
+ lines</b><BR>Diff to previous <A HREF="/cvs/cvsweb.cgi/code/nelns/admin_service/Makefile.am.diff?r1=1.1&amp;r2=1.2">1.1</A>
+ to selected <A HREF="/cvs/cvsweb.cgi/code/nelns/admin_service/Makefile.am.diff?r1=1.3&amp;r2=1.2">1.3</A>
+<PRE>
+BUGFIX: now compile on linux
+</PRE>
+<HR size=1 NOSHADE><P><a NAME="rev1.1"></a>
+ Revision <A HREF="Makefile.am?rev=1.1&amp;content-type=text/x-cvsweb-markup"><b>1.1</b></A> / (<A HREF="/cvs/cvsweb.cgi/~checkout~/code/nelns/admin_service/Makefile.am?rev=1.1&amp;content-type=text/plain" target="cvs_checkout" onClick="window.open('/cvs/cvsweb.cgi/~checkout~/code/nelns/admin_service/Makefile.am?rev=1.1&amp;content-type=text/plain','cvs_checkout','resizeable,scrollbars');"><b>download</b></A>) - <a href="/cvs/cvsweb.cgi/code/nelns/admin_service/Makefile.am?annotate=1.1">annotate</a> - <A HREF="/cvs/cvsweb.cgi/code/nelns/admin_service/Makefile.am?r1=1.1">[select for diffs]</A>
+, <i>Wed May 2 12:36:39 2001 UTC</i> (14 months, 3 weeks ago) by <i>lecroart</i>
+<BR>Branch: <b><A HREF="Makefile.am?only_with_tag=MAIN">MAIN</A>
+</b>
+<BR>Diff to selected <A HREF="/cvs/cvsweb.cgi/code/nelns/admin_service/Makefile.am.diff?r1=1.3&amp;r2=1.1">1.3</A>
+<PRE>
+ADD: new version of the network system (in NeL and NeLns)
+</PRE>
+
+<!-- block -->
+<TABLE bgcolor="#dddddd" CELLSPACING=0 CELLPADDING=0 BORDER=0 width=100%><tr><td width=1% valign=middle><img width=6 height=14 hspace=2 vspace=2 src="http://www.nevrax.org/inc/img/reddots.gif"></TD>
+ <TD><B>Request Diffs</B></TD>
+ <TD ALIGN=RIGHT> </td>
+</tr></table>
+<P>
+<P>
+<FORM METHOD="GET" ACTION="/cvs/cvsweb.cgi/code/nelns/admin_service/Makefile.am.diff" NAME="diff_select">
+Diffs between
+<SELECT NAME="r1">
+<OPTION VALUE="text" SELECTED>Use Text Field
+<OPTION VALUE="1:MAIN">MAIN
+<OPTION VALUE="1.6:HEAD">HEAD
+</SELECT>
+<INPUT TYPE="TEXT" SIZE="12" NAME="tr1" VALUE="1.3" onChange='document.diff_select.r1.selectedIndex=0'>
+ and
+<SELECT NAME="r2">
+<OPTION VALUE="text" SELECTED>Use Text Field
+<OPTION VALUE="1:MAIN">MAIN
+<OPTION VALUE="1.6:HEAD">HEAD
+</SELECT>
+<INPUT TYPE="TEXT" SIZE="12" NAME="tr2" VALUE="1.6" onChange='docuement.diff_select.r2.selectedIndex=0'>
+<BR>Type of Diff should be a&nbsp;<SELECT NAME="f">
+<OPTION VALUE=h SELECTED>Colored Diff<OPTION VALUE=H>Long Colored Diff<OPTION VALUE=u>Unidiff<OPTION VALUE=c>Context Diff<OPTION VALUE=s>Side by Side</SELECT><INPUT TYPE=SUBMIT VALUE=" Get Diffs ">
+</FORM>
+
+<!-- block -->
+<TABLE bgcolor="#dddddd" CELLSPACING=0 CELLPADDING=0 BORDER=0 width=100%><tr><td width=1% valign=middle><img width=6 height=14 hspace=2 vspace=2 src="http://www.nevrax.org/inc/img/reddots.gif"></TD>
+ <TD><B>Select branch</B></TD>
+ <TD ALIGN=RIGHT> </td>
+</tr></table>
+<P>
+<P>
+<A name=branch></A>
+<FORM METHOD="GET" ACTION="/cvs/cvsweb.cgi/code/nelns/admin_service/Makefile.am">
+View only Branch:
+<SELECT NAME="only_with_tag" onchange="submit()">
+<OPTION VALUE="">Show all branches
+<OPTION>MAIN
+</SELECT>
+<INPUT TYPE=SUBMIT VALUE=" View Branch ">
+</FORM>
+<A name=logsort></A>
+<FORM METHOD="GET" ACTION="/cvs/cvsweb.cgi/code/nelns/admin_service/Makefile.am">
+Sort log by:
+<SELECT NAME="logsort" onchange="submit()">
+<OPTION VALUE=cvs>Not sorted<OPTION VALUE=date SELECTED>Commit date<OPTION VALUE=rev>Revision</SELECT>
+<INPUT TYPE=SUBMIT VALUE=" Sort ">
+</FORM>
+
+<!-- footer -->
+<BR><FONT Size=+5>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </FONT>
+</TD>
+<TD WIDTH=15><IMG SRC=http://www.nevrax.org/inc/img/pixel.gif WIDTH=15 HEIGHT=15 BORDER=0 ALT=""></TD>
+</TR>
+</TABLE>
+</BODY>
+</HTML></BODY></HTML>
diff --git a/cvs/cvsweb.cgi/code/nelns/admin_service/Makefile.am?r1=1.6 b/cvs/cvsweb.cgi/code/nelns/admin_service/Makefile.am?r1=1.6
new file mode 100644
index 00000000..441d51a3
--- /dev/null
+++ b/cvs/cvsweb.cgi/code/nelns/admin_service/Makefile.am?r1=1.6
@@ -0,0 +1,188 @@
+<!doctype html public "-//W3C//DTD HTML 4.0 Transitional//EN" "http://www.w3.org/TR/REC-html40/loose.dtd">
+<HTML>
+<HEAD>
+ <TITLE>nevrax.org : cvs</TITLE>
+ <META name="keywords" content="freesoftware,nel,newt,snowballs,richard stallman,GNU,Multi-User Online World">
+
+ <LINK REL=stylesheet TYPE="text/css" HREF="http://www.nevrax.org/inc/css/nevrax.css">
+</HEAD>
+<BODY MARGINHEIGHT="0" MARGINWIDTH="0">
+
+<!-- uplinks -->
+<TABLE CELLSPACING=0 CELLPADDING=0 BORDER=0>
+ <TR>
+ <TD WIDTH=16><IMG SRC="http://www.nevrax.org/inc/img/pixel.gif" WIDTH="16" HEIGHT="16" BORDER=0 ALT=""></TD>
+ <TD WIDTH=140 BGCOLOR=#dddddd><IMG SRC="http://www.nevrax.org/inc/img/pixel.gif" WIDTH="140" HEIGHT="16" BORDER=0 ALT=""></TD>
+ <TD WIDTH=16><IMG SRC="http://www.nevrax.org/inc/img/pixel.gif" WIDTH="16" HEIGHT="16" BORDER=0 ALT=""></TD>
+ <TD><IMG width=6 height=14 SRC="http://www.nevrax.org/inc/img/reddots.gif" ALT="#" VSPACE=2 HSPACE=2 BORDER=0 ></TD><TD VALIGN=middle>&nbsp;<A CLASS=uplinks HREF=http://www.nevrax.org><b>Home</B></FONT></A>&nbsp;&nbsp;&nbsp;</TD>
+ <TD><IMG width=6 height=14 SRC="http://www.nevrax.org/inc/img/reddots.gif" ALT="#" VSPACE=2 HSPACE=2 BORDER=0 ></TD><TD VALIGN=middle>&nbsp;<A CLASS=uplinks HREF=http://www.nevrax.com><b>nevrax.com</B></FONT></A>&nbsp;&nbsp;&nbsp;</TD>
+ </TR>
+</TABLE>
+
+<!-- banner Nevrax -->
+<TABLE CELLSPACING=0 CELLPADDING=0 BORDER=0 WIDTH=100%>
+ <TR><TD BGCOLOR="#000000" BACKGROUND="http://www.nevrax.org/inc/img/black_banner.jpg"><A HREF="http://www.nevrax.org"><IMG SRC="http://www.nevrax.org/inc/img/nevrax.gif" WIDTH="170" HEIGHT="45" BORDER=0 ALT="Nevrax" ></A></TD></TR>
+</TABLE>
+
+<!-- main table -->
+<TABLE CELLSPACING=0 CELLPADDING=0 BORDER=0 height=100%>
+ <TR>
+ <TD WIDTH=16><IMG SRC="http://www.nevrax.org/inc/img/pixel.gif" WIDTH="16" HEIGHT="10" BORDER=0 ALT=""></TD>
+ <TD WIDTH=140 BGCOLOR=#dddddd VALIGN=TOP ALIGN=middle><IMG SRC="http://www.nevrax.org/inc/img/pixel.gif" WIDTH="140" HEIGHT="10" BORDER=0 ALT="">
+
+ <!------ Begin Box ------>
+ <TABLE BORDER=0 CELLSPACING=0 CELLPADDING=0 BGCOLOR=black><TR><TD><TABLE border=0 cellspacing=2 cellpadding=0 width=120><tr><TD ALIGN=middle bgcolor=black>
+ <FONT COLOR=white FACE="sans-serif"><B>Nevrax.org</B></FONT></TD></TR><tr><td colspan=2 bgcolor=#FFFFFF>
+ <TABLE cellspacing=0 cellpadding=1 border=0>
+ <tr><td ALIGN=middle><a class='linkbox' href="http://www.nevrax.org/news/" TITLE="Rubrique news"><img width=13 height=15 hspace=5 border=0 src=http://www.nevrax.org/inc/img/picto-news.gif ALT=#></A></td><td><a class='linkbox' href="http://www.nevrax.org/news/" TITLE="News">News</a></td></tr>
+ <tr><td ALIGN=middle><a class='linkbox' href="http://www.nevrax.org/mail/" TITLE="Rubrique mail"><img width=15 height=11 hspace=5 border=0 src=http://www.nevrax.org/inc/img/picto-mail.gif ALT=#></A></td><td><a class='linkbox' href="http://www.nevrax.org/mail/" TITLE="Mailing list archive">Mailing-list</a></td></tr>
+ <tr><td ALIGN=middle><a class='linkbox' href="http://www.nevrax.org/docs/" TITLE="Rubrique docs"><img width=14 height=16 hspace=5 border=0 src=http://www.nevrax.org/inc/img/picto-docs.gif ALT=#></A></td><td><a class='linkbox' href="http://www.nevrax.org/docs/" TITLE="Documentation">Documentation</a></td></tr>
+ <tr><td ALIGN=middle><a class='linkbox' href="http://www.nevrax.org/cvs/" TITLE="Rubrique cvs"><img width=13 height=17 hspace=5 border=0 src=http://www.nevrax.org/inc/img/picto-cvs.gif ALT=#></A></td><td><a class='linkbox' href="http://www.nevrax.org/cvs/" TITLE="CVS Web">CVS</a></td></tr>
+ <tr><td ALIGN=middle><a class='linkbox' href="http://www.nevrax.org/bugs/" TITLE="Rubrique bugs"><img width=20 height=16 hspace=5 border=0 src=http://www.nevrax.org/inc/img/picto-bugs.gif ALT=#></A></td><td><a class='linkbox' href="http://www.nevrax.org/bugs/" TITLE="Bugtracking">Bugs</a></td></tr>
+ <tr><td ALIGN=middle><a class='linkbox' href="http://www.nevrax.org/free/" TITLE="Rubrique license"><img width=18 height=12 hspace=5 border=0 src=http://www.nevrax.org/inc/img/picto-free.gif ALT=#></A></td><td><a class='linkbox' href="http://www.nevrax.org/free/" TITLE="Free Software">Free software</a></td></tr>
+ </TABLE>
+ </TD></TR></TABLE></TD></TR></TABLE>
+ <!------ End Box ------>
+
+ </TD>
+ <TD WIDTH=15><IMG SRC="http://www.nevrax.org/inc/img/pixel.gif" WIDTH="16" HEIGHT="16" BORDER=0 ALT=""></TD>
+ <TD ALIGN=left valign=top><IMG SRC="http://www.nevrax.org/inc/img/pixel.gif" WIDTH="140" HEIGHT="10" BORDER=0 ALT="">
+
+<!-- title -->
+<TABLE background="http://www.nevrax.org/inc/img/redline.gif" CELLSPACING=0 CELLPADDING=0 BORDER=0 width=100%><tr><td>
+<A HREF="http://www.nevrax.org/cvs/"><img src="http://www.nevrax.org/inc/img/t_cvs.gif" ALT="cvs" HEIGHT=20 BORDER=0></A>
+</td><td><IMG SRC="http://www.nevrax.org/inc/img/pixel.gif" WIDTH="1" HEIGHT="1" BORDER=0 ALT="">
+</td></tr></table>
+
+<!-- title -->
+<table width=100%><tr><td align=left><b> <a href="/cvs/cvsweb.cgi/">Nevrax</a> / <a href="/cvs/cvsweb.cgi/code/">code</a> / <a href="/cvs/cvsweb.cgi/code/nelns/">nelns</a> / <a href="/cvs/cvsweb.cgi/code/nelns/admin_service/">admin_service</a> / Makefile.am</b></td><td align=right><b></b></td></TR></TABLE>
+
+<!-- block -->
+<TABLE bgcolor="#dddddd" CELLSPACING=0 CELLPADDING=0 BORDER=0 width=100%><tr><td width=1% valign=middle><img width=6 height=14 hspace=2 vspace=2 src="http://www.nevrax.org/inc/img/reddots.gif"></TD>
+ <TD><B>Makefile.am</B></TD>
+ <TD ALIGN=RIGHT> </td>
+</tr></table>
+<P>
+<p>Default branch: MAIN<BR>
+<HR size=1 NOSHADE><P><a NAME="rev1.6"></a><a NAME="HEAD"></a><a NAME="MAIN"></a>
+ Revision <A HREF="Makefile.am?rev=1.6&amp;content-type=text/x-cvsweb-markup"><b>1.6</b></A> / (<A HREF="/cvs/cvsweb.cgi/~checkout~/code/nelns/admin_service/Makefile.am?rev=1.6&amp;content-type=text/plain" target="cvs_checkout" onClick="window.open('/cvs/cvsweb.cgi/~checkout~/code/nelns/admin_service/Makefile.am?rev=1.6&amp;content-type=text/plain','cvs_checkout','resizeable,scrollbars');"><b>download</b></A>) - <a href="/cvs/cvsweb.cgi/code/nelns/admin_service/Makefile.am?annotate=1.6">annotate</a> - <b>[selected]</b>, <i>Wed Jun 12 10:21:02 2002 UTC</i> (6 weeks ago) by <i>lecroart</i>
+<BR>Branch: <b><A HREF="Makefile.am?only_with_tag=MAIN">MAIN</A>
+</b>
+<BR>CVS Tags: <b><A HREF="Makefile.am?only_with_tag=HEAD">HEAD</A>
+</b><BR>Changes since <b>1.5: +4 -3
+ lines</b><BR>Diff to previous <A HREF="/cvs/cvsweb.cgi/code/nelns/admin_service/Makefile.am.diff?r1=1.5&amp;r2=1.6">1.5</A>
+<PRE>
+no message
+</PRE>
+<HR size=1 NOSHADE><P><a NAME="rev1.5"></a>
+ Revision <A HREF="Makefile.am?rev=1.5&amp;content-type=text/x-cvsweb-markup"><b>1.5</b></A> / (<A HREF="/cvs/cvsweb.cgi/~checkout~/code/nelns/admin_service/Makefile.am?rev=1.5&amp;content-type=text/plain" target="cvs_checkout" onClick="window.open('/cvs/cvsweb.cgi/~checkout~/code/nelns/admin_service/Makefile.am?rev=1.5&amp;content-type=text/plain','cvs_checkout','resizeable,scrollbars');"><b>download</b></A>) - <a href="/cvs/cvsweb.cgi/code/nelns/admin_service/Makefile.am?annotate=1.5">annotate</a> - <A HREF="/cvs/cvsweb.cgi/code/nelns/admin_service/Makefile.am?r1=1.5">[select for diffs]</A>
+, <i>Wed Apr 10 07:33:07 2002 UTC</i> (3 months, 2 weeks ago) by <i>lecroart</i>
+<BR>Branch: <b><A HREF="Makefile.am?only_with_tag=MAIN">MAIN</A>
+</b>
+<BR>Changes since <b>1.4: +1 -3
+ lines</b><BR>Diff to previous <A HREF="/cvs/cvsweb.cgi/code/nelns/admin_service/Makefile.am.diff?r1=1.4&amp;r2=1.5">1.4</A>
+ to selected <A HREF="/cvs/cvsweb.cgi/code/nelns/admin_service/Makefile.am.diff?r1=1.6&amp;r2=1.5">1.6</A>
+<PRE>
+CHANGED: update makefile to manage log and cfg dir (thanks to loic dachary)
+</PRE>
+<HR size=1 NOSHADE><P><a NAME="rev1.4"></a>
+ Revision <A HREF="Makefile.am?rev=1.4&amp;content-type=text/x-cvsweb-markup"><b>1.4</b></A> / (<A HREF="/cvs/cvsweb.cgi/~checkout~/code/nelns/admin_service/Makefile.am?rev=1.4&amp;content-type=text/plain" target="cvs_checkout" onClick="window.open('/cvs/cvsweb.cgi/~checkout~/code/nelns/admin_service/Makefile.am?rev=1.4&amp;content-type=text/plain','cvs_checkout','resizeable,scrollbars');"><b>download</b></A>) - <a href="/cvs/cvsweb.cgi/code/nelns/admin_service/Makefile.am?annotate=1.4">annotate</a> - <A HREF="/cvs/cvsweb.cgi/code/nelns/admin_service/Makefile.am?r1=1.4">[select for diffs]</A>
+, <i>Tue Mar 19 17:42:48 2002 UTC</i> (4 months ago) by <i>valignat</i>
+<BR>Branch: <b><A HREF="Makefile.am?only_with_tag=MAIN">MAIN</A>
+</b>
+<BR>Changes since <b>1.3: +6 -4
+ lines</b><BR>Diff to previous <A HREF="/cvs/cvsweb.cgi/code/nelns/admin_service/Makefile.am.diff?r1=1.3&amp;r2=1.4">1.3</A>
+ to selected <A HREF="/cvs/cvsweb.cgi/code/nelns/admin_service/Makefile.am.diff?r1=1.6&amp;r2=1.4">1.6</A>
+<PRE>
+Applied patches which help to have a clen install on GNU/Linux and to make a Debian package (changes on the management of config and log files, bugfixes, etc ...)
+</PRE>
+<HR size=1 NOSHADE><P><a NAME="rev1.3"></a>
+ Revision <A HREF="Makefile.am?rev=1.3&amp;content-type=text/x-cvsweb-markup"><b>1.3</b></A> / (<A HREF="/cvs/cvsweb.cgi/~checkout~/code/nelns/admin_service/Makefile.am?rev=1.3&amp;content-type=text/plain" target="cvs_checkout" onClick="window.open('/cvs/cvsweb.cgi/~checkout~/code/nelns/admin_service/Makefile.am?rev=1.3&amp;content-type=text/plain','cvs_checkout','resizeable,scrollbars');"><b>download</b></A>) - <a href="/cvs/cvsweb.cgi/code/nelns/admin_service/Makefile.am?annotate=1.3">annotate</a> - <A HREF="/cvs/cvsweb.cgi/code/nelns/admin_service/Makefile.am?r1=1.3">[select for diffs]</A>
+, <i>Fri Jul 27 15:51:10 2001 UTC</i> (11 months, 3 weeks ago) by <i>valignat</i>
+<BR>Branch: <b><A HREF="Makefile.am?only_with_tag=MAIN">MAIN</A>
+</b>
+<BR>Changes since <b>1.2: +4 -3
+ lines</b><BR>Diff to previous <A HREF="/cvs/cvsweb.cgi/code/nelns/admin_service/Makefile.am.diff?r1=1.2&amp;r2=1.3">1.2</A>
+ to selected <A HREF="/cvs/cvsweb.cgi/code/nelns/admin_service/Makefile.am.diff?r1=1.6&amp;r2=1.3">1.6</A>
+<PRE>
+#ADDED some missing source files and clean Makefile.am for NeLNS.
+</PRE>
+<HR size=1 NOSHADE><P><a NAME="rev1.2"></a>
+ Revision <A HREF="Makefile.am?rev=1.2&amp;content-type=text/x-cvsweb-markup"><b>1.2</b></A> / (<A HREF="/cvs/cvsweb.cgi/~checkout~/code/nelns/admin_service/Makefile.am?rev=1.2&amp;content-type=text/plain" target="cvs_checkout" onClick="window.open('/cvs/cvsweb.cgi/~checkout~/code/nelns/admin_service/Makefile.am?rev=1.2&amp;content-type=text/plain','cvs_checkout','resizeable,scrollbars');"><b>download</b></A>) - <a href="/cvs/cvsweb.cgi/code/nelns/admin_service/Makefile.am?annotate=1.2">annotate</a> - <A HREF="/cvs/cvsweb.cgi/code/nelns/admin_service/Makefile.am?r1=1.2">[select for diffs]</A>
+, <i>Thu May 3 13:19:13 2001 UTC</i> (14 months, 3 weeks ago) by <i>lecroart</i>
+<BR>Branch: <b><A HREF="Makefile.am?only_with_tag=MAIN">MAIN</A>
+</b>
+<BR>Changes since <b>1.1: +4 -4
+ lines</b><BR>Diff to previous <A HREF="/cvs/cvsweb.cgi/code/nelns/admin_service/Makefile.am.diff?r1=1.1&amp;r2=1.2">1.1</A>
+ to selected <A HREF="/cvs/cvsweb.cgi/code/nelns/admin_service/Makefile.am.diff?r1=1.6&amp;r2=1.2">1.6</A>
+<PRE>
+BUGFIX: now compile on linux
+</PRE>
+<HR size=1 NOSHADE><P><a NAME="rev1.1"></a>
+ Revision <A HREF="Makefile.am?rev=1.1&amp;content-type=text/x-cvsweb-markup"><b>1.1</b></A> / (<A HREF="/cvs/cvsweb.cgi/~checkout~/code/nelns/admin_service/Makefile.am?rev=1.1&amp;content-type=text/plain" target="cvs_checkout" onClick="window.open('/cvs/cvsweb.cgi/~checkout~/code/nelns/admin_service/Makefile.am?rev=1.1&amp;content-type=text/plain','cvs_checkout','resizeable,scrollbars');"><b>download</b></A>) - <a href="/cvs/cvsweb.cgi/code/nelns/admin_service/Makefile.am?annotate=1.1">annotate</a> - <A HREF="/cvs/cvsweb.cgi/code/nelns/admin_service/Makefile.am?r1=1.1">[select for diffs]</A>
+, <i>Wed May 2 12:36:39 2001 UTC</i> (14 months, 3 weeks ago) by <i>lecroart</i>
+<BR>Branch: <b><A HREF="Makefile.am?only_with_tag=MAIN">MAIN</A>
+</b>
+<BR>Diff to selected <A HREF="/cvs/cvsweb.cgi/code/nelns/admin_service/Makefile.am.diff?r1=1.6&amp;r2=1.1">1.6</A>
+<PRE>
+ADD: new version of the network system (in NeL and NeLns)
+</PRE>
+
+<!-- block -->
+<TABLE bgcolor="#dddddd" CELLSPACING=0 CELLPADDING=0 BORDER=0 width=100%><tr><td width=1% valign=middle><img width=6 height=14 hspace=2 vspace=2 src="http://www.nevrax.org/inc/img/reddots.gif"></TD>
+ <TD><B>Request Diffs</B></TD>
+ <TD ALIGN=RIGHT> </td>
+</tr></table>
+<P>
+<P>
+<FORM METHOD="GET" ACTION="/cvs/cvsweb.cgi/code/nelns/admin_service/Makefile.am.diff" NAME="diff_select">
+Diffs between
+<SELECT NAME="r1">
+<OPTION VALUE="text" SELECTED>Use Text Field
+<OPTION VALUE="1:MAIN">MAIN
+<OPTION VALUE="1.6:HEAD">HEAD
+</SELECT>
+<INPUT TYPE="TEXT" SIZE="12" NAME="tr1" VALUE="1.6" onChange='document.diff_select.r1.selectedIndex=0'>
+ and
+<SELECT NAME="r2">
+<OPTION VALUE="text" SELECTED>Use Text Field
+<OPTION VALUE="1:MAIN">MAIN
+<OPTION VALUE="1.6:HEAD">HEAD
+</SELECT>
+<INPUT TYPE="TEXT" SIZE="12" NAME="tr2" VALUE="1.6" onChange='docuement.diff_select.r2.selectedIndex=0'>
+<BR>Type of Diff should be a&nbsp;<SELECT NAME="f">
+<OPTION VALUE=h SELECTED>Colored Diff<OPTION VALUE=H>Long Colored Diff<OPTION VALUE=u>Unidiff<OPTION VALUE=c>Context Diff<OPTION VALUE=s>Side by Side</SELECT><INPUT TYPE=SUBMIT VALUE=" Get Diffs ">
+</FORM>
+
+<!-- block -->
+<TABLE bgcolor="#dddddd" CELLSPACING=0 CELLPADDING=0 BORDER=0 width=100%><tr><td width=1% valign=middle><img width=6 height=14 hspace=2 vspace=2 src="http://www.nevrax.org/inc/img/reddots.gif"></TD>
+ <TD><B>Select branch</B></TD>
+ <TD ALIGN=RIGHT> </td>
+</tr></table>
+<P>
+<P>
+<A name=branch></A>
+<FORM METHOD="GET" ACTION="/cvs/cvsweb.cgi/code/nelns/admin_service/Makefile.am">
+View only Branch:
+<SELECT NAME="only_with_tag" onchange="submit()">
+<OPTION VALUE="">Show all branches
+<OPTION>MAIN
+</SELECT>
+<INPUT TYPE=SUBMIT VALUE=" View Branch ">
+</FORM>
+<A name=logsort></A>
+<FORM METHOD="GET" ACTION="/cvs/cvsweb.cgi/code/nelns/admin_service/Makefile.am">
+Sort log by:
+<SELECT NAME="logsort" onchange="submit()">
+<OPTION VALUE=cvs>Not sorted<OPTION VALUE=date SELECTED>Commit date<OPTION VALUE=rev>Revision</SELECT>
+<INPUT TYPE=SUBMIT VALUE=" Sort ">
+</FORM>
+
+<!-- footer -->
+<BR><FONT Size=+5>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </FONT>
+</TD>
+<TD WIDTH=15><IMG SRC=http://www.nevrax.org/inc/img/pixel.gif WIDTH=15 HEIGHT=15 BORDER=0 ALT=""></TD>
+</TR>
+</TABLE>
+</BODY>
+</HTML></BODY></HTML>
diff --git a/cvs/cvsweb.cgi/code/nelns/admin_service/Makefile.am?rev=1.5&content-type=text/x-cvsweb-markup/index.html b/cvs/cvsweb.cgi/code/nelns/admin_service/Makefile.am?rev=1.5&content-type=text/x-cvsweb-markup/index.html
new file mode 100644
index 00000000..ca3da2ab
--- /dev/null
+++ b/cvs/cvsweb.cgi/code/nelns/admin_service/Makefile.am?rev=1.5&content-type=text/x-cvsweb-markup/index.html
@@ -0,0 +1,29 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"><HTML>
+<HEAD><style> A { color:black }</style>
+<!-- hennerik CVSweb $Revision: 1.93 $ -->
+<TITLE>code/nelns/admin_service/Makefile.am - view - 1.5</TITLE></HEAD>
+<BODY BGCOLOR="#eeeeee">
+<table width="100%" border=0 cellspacing=0 cellpadding=1 bgcolor="#aaaaaa"><tr valign=bottom><td><a href="Makefile.am"><IMG SRC="http://www.nevrax.org/inc/img/picto-up.gif" ALT="[BACK]" BORDER="0" WIDTH="14" HEIGHT="13"></a> <b>Return to <A HREF="Makefile.am">Makefile.am</A>
+ CVS log</b> <IMG SRC="http://www.nevrax.org/inc/img/picto-news.gif" ALT="[TXT]" BORDER="0" WIDTH="13" HEIGHT="15"></td><td align=right><IMG SRC="http://www.nevrax.org/inc/img/picto-dir.gif" ALT="[DIR]" BORDER="0" WIDTH="15" HEIGHT="13"> <b>Up to <a href="/cvs/cvsweb.cgi/">Nevrax</a> / <a href="/cvs/cvsweb.cgi/code/">code</a> / <a href="/cvs/cvsweb.cgi/code/nelns/">nelns</a> / <a href="/cvs/cvsweb.cgi/code/nelns/admin_service/">admin_service</a></b></td></tr></table><HR noshade><table width="100%"><tr><td bgcolor="#ffffff">File: <a href="/cvs/cvsweb.cgi/">Nevrax</a> / <a href="/cvs/cvsweb.cgi/code/">code</a> / <a href="/cvs/cvsweb.cgi/code/nelns/">nelns</a> / <a href="/cvs/cvsweb.cgi/code/nelns/admin_service/">admin_service</a> / <a href="/cvs/cvsweb.cgi/code/nelns/admin_service/Makefile.am">Makefile.am</a>&nbsp;(<A HREF="/cvs/cvsweb.cgi/~checkout~/code/nelns/admin_service/Makefile.am?rev=1.5" target="cvs_checkout" onClick="window.open('/cvs/cvsweb.cgi/~checkout~/code/nelns/admin_service/Makefile.am?rev=1.5','cvs_checkout','resizeable,scrollbars');"><b>download</b></A>)<BR>
+Revision <B>1.5</B>, <i>Wed Apr 10 07:33:07 2002 UTC</i> (2 months, 1 week ago) by <i>lecroart</i>
+<BR>Branch: <b>MAIN</b>
+<BR>Changes since <b>1.4: +1 -3
+ lines</b><PRE>
+CHANGED: update makefile to manage log and cfg dir (thanks to loic dachary)
+</PRE>
+</td></tr></table><HR noshade><PRE>#
+# $Id: Makefile.am,v 1.5 2002/04/10 07:33:07 lecroart Exp $
+#
+
+MAINTAINERCLEANFILES &nbsp;= Makefile.in
+
+EXTRA_DIST &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; = admin_service.cfg \
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; admin_service.dsp
+
+sbin_PROGRAMS &nbsp; &nbsp; &nbsp; &nbsp; = admin_service
+
+admin_service_SOURCES = admin_service.cpp
+
+# End of Makefile.am
+
+</PRE> \ No newline at end of file
diff --git a/cvs/cvsweb.cgi/code/nelns/admin_service/Makefile.am?rev=1.6&content-type=text/x-cvsweb-markup&sortby=date/index.html b/cvs/cvsweb.cgi/code/nelns/admin_service/Makefile.am?rev=1.6&content-type=text/x-cvsweb-markup&sortby=date/index.html
new file mode 100644
index 00000000..76affe4b
--- /dev/null
+++ b/cvs/cvsweb.cgi/code/nelns/admin_service/Makefile.am?rev=1.6&content-type=text/x-cvsweb-markup&sortby=date/index.html
@@ -0,0 +1,30 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"><HTML>
+<HEAD><style> A { color:black }</style>
+<!-- hennerik CVSweb $Revision: 1.93 $ -->
+<TITLE>code/nelns/admin_service/Makefile.am - view - 1.6</TITLE></HEAD>
+<BODY BGCOLOR="#eeeeee">
+<table width="100%" border=0 cellspacing=0 cellpadding=1 bgcolor="#aaaaaa"><tr valign=bottom><td><a href="Makefile.am?sortby=date"><IMG SRC="http://www.nevrax.org/inc/img/picto-up.gif" ALT="[BACK]" BORDER="0" WIDTH="14" HEIGHT="13"></a> <b>Return to <A HREF="Makefile.am?sortby=date">Makefile.am</A>
+ CVS log</b> <IMG SRC="http://www.nevrax.org/inc/img/picto-news.gif" ALT="[TXT]" BORDER="0" WIDTH="13" HEIGHT="15"></td><td align=right><IMG SRC="http://www.nevrax.org/inc/img/picto-dir.gif" ALT="[DIR]" BORDER="0" WIDTH="15" HEIGHT="13"> <b>Up to <a href="/cvs/cvsweb.cgi/?sortby=date">Nevrax</a> / <a href="/cvs/cvsweb.cgi/code/?sortby=date">code</a> / <a href="/cvs/cvsweb.cgi/code/nelns/?sortby=date">nelns</a> / <a href="/cvs/cvsweb.cgi/code/nelns/admin_service/?sortby=date">admin_service</a></b></td></tr></table><HR noshade><table width="100%"><tr><td bgcolor="#ffffff">File: <a href="/cvs/cvsweb.cgi/?sortby=date">Nevrax</a> / <a href="/cvs/cvsweb.cgi/code/?sortby=date">code</a> / <a href="/cvs/cvsweb.cgi/code/nelns/?sortby=date">nelns</a> / <a href="/cvs/cvsweb.cgi/code/nelns/admin_service/?sortby=date">admin_service</a> / <a href="/cvs/cvsweb.cgi/code/nelns/admin_service/Makefile.am?sortby=date">Makefile.am</a>&nbsp;(<A HREF="/cvs/cvsweb.cgi/~checkout~/code/nelns/admin_service/Makefile.am?rev=1.6&amp;sortby=date" target="cvs_checkout" onClick="window.open('/cvs/cvsweb.cgi/~checkout~/code/nelns/admin_service/Makefile.am?rev=1.6','cvs_checkout','resizeable,scrollbars');"><b>download</b></A>)<BR>
+Revision <B>1.6</B>, <i>Wed Jun 12 10:21:02 2002 UTC</i> (6 weeks ago) by <i>lecroart</i>
+<BR>Branch: <b>MAIN</b>
+<BR>CVS Tags: <b>HEAD</b><BR>Changes since <b>1.5: +4 -3
+ lines</b><PRE>
+no message
+</PRE>
+</td></tr></table><HR noshade><PRE>#
+# $Id: Makefile.am,v 1.6 2002/06/12 10:21:02 lecroart Exp $
+#
+
+MAINTAINERCLEANFILES &nbsp;= Makefile.in
+
+EXTRA_DIST &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;= common.cfg \
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;admin_service.cfg \
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;admin_service.dsp
+
+sbin_PROGRAMS &nbsp; &nbsp; &nbsp; &nbsp; = admin_service
+
+admin_service_SOURCES = admin_service.cpp
+
+# End of Makefile.am
+
+</PRE> \ No newline at end of file
diff --git a/cvs/cvsweb.cgi/code/nelns/admin_service/Makefile.am?sortby=log b/cvs/cvsweb.cgi/code/nelns/admin_service/Makefile.am?sortby=log
new file mode 100644
index 00000000..30f488bf
--- /dev/null
+++ b/cvs/cvsweb.cgi/code/nelns/admin_service/Makefile.am?sortby=log
@@ -0,0 +1,187 @@
+<!doctype html public "-//W3C//DTD HTML 4.0 Transitional//EN" "http://www.w3.org/TR/REC-html40/loose.dtd">
+<HTML>
+<HEAD>
+ <TITLE>nevrax.org : cvs</TITLE>
+ <META name="keywords" content="freesoftware,nel,newt,snowballs,richard stallman,GNU,Multi-User Online World">
+
+ <LINK REL=stylesheet TYPE="text/css" HREF="http://www.nevrax.org/inc/css/nevrax.css">
+</HEAD>
+<BODY MARGINHEIGHT="0" MARGINWIDTH="0">
+
+<!-- uplinks -->
+<TABLE CELLSPACING=0 CELLPADDING=0 BORDER=0>
+ <TR>
+ <TD WIDTH=16><IMG SRC="http://www.nevrax.org/inc/img/pixel.gif" WIDTH="16" HEIGHT="16" BORDER=0 ALT=""></TD>
+ <TD WIDTH=140 BGCOLOR=#dddddd><IMG SRC="http://www.nevrax.org/inc/img/pixel.gif" WIDTH="140" HEIGHT="16" BORDER=0 ALT=""></TD>
+ <TD WIDTH=16><IMG SRC="http://www.nevrax.org/inc/img/pixel.gif" WIDTH="16" HEIGHT="16" BORDER=0 ALT=""></TD>
+ <TD><IMG width=6 height=14 SRC="http://www.nevrax.org/inc/img/reddots.gif" ALT="#" VSPACE=2 HSPACE=2 BORDER=0 ></TD><TD VALIGN=middle>&nbsp;<A CLASS=uplinks HREF=http://www.nevrax.org><b>Home</B></FONT></A>&nbsp;&nbsp;&nbsp;</TD>
+ <TD><IMG width=6 height=14 SRC="http://www.nevrax.org/inc/img/reddots.gif" ALT="#" VSPACE=2 HSPACE=2 BORDER=0 ></TD><TD VALIGN=middle>&nbsp;<A CLASS=uplinks HREF=http://www.nevrax.com><b>nevrax.com</B></FONT></A>&nbsp;&nbsp;&nbsp;</TD>
+ </TR>
+</TABLE>
+
+<!-- banner Nevrax -->
+<TABLE CELLSPACING=0 CELLPADDING=0 BORDER=0 WIDTH=100%>
+ <TR><TD BGCOLOR="#000000" BACKGROUND="http://www.nevrax.org/inc/img/black_banner.jpg"><A HREF="http://www.nevrax.org"><IMG SRC="http://www.nevrax.org/inc/img/nevrax.gif" WIDTH="170" HEIGHT="45" BORDER=0 ALT="Nevrax" ></A></TD></TR>
+</TABLE>
+
+<!-- main table -->
+<TABLE CELLSPACING=0 CELLPADDING=0 BORDER=0 height=100%>
+ <TR>
+ <TD WIDTH=16><IMG SRC="http://www.nevrax.org/inc/img/pixel.gif" WIDTH="16" HEIGHT="10" BORDER=0 ALT=""></TD>
+ <TD WIDTH=140 BGCOLOR=#dddddd VALIGN=TOP ALIGN=middle><IMG SRC="http://www.nevrax.org/inc/img/pixel.gif" WIDTH="140" HEIGHT="10" BORDER=0 ALT="">
+
+ <!------ Begin Box ------>
+ <TABLE BORDER=0 CELLSPACING=0 CELLPADDING=0 BGCOLOR=black><TR><TD><TABLE border=0 cellspacing=2 cellpadding=0 width=120><tr><TD ALIGN=middle bgcolor=black>
+ <FONT COLOR=white FACE="sans-serif"><B>Nevrax.org</B></FONT></TD></TR><tr><td colspan=2 bgcolor=#FFFFFF>
+ <TABLE cellspacing=0 cellpadding=1 border=0>
+ <tr><td ALIGN=middle><a class='linkbox' href="http://www.nevrax.org/news/" TITLE="Rubrique news"><img width=13 height=15 hspace=5 border=0 src=http://www.nevrax.org/inc/img/picto-news.gif ALT=#></A></td><td><a class='linkbox' href="http://www.nevrax.org/news/" TITLE="News">News</a></td></tr>
+ <tr><td ALIGN=middle><a class='linkbox' href="http://www.nevrax.org/mail/" TITLE="Rubrique mail"><img width=15 height=11 hspace=5 border=0 src=http://www.nevrax.org/inc/img/picto-mail.gif ALT=#></A></td><td><a class='linkbox' href="http://www.nevrax.org/mail/" TITLE="Mailing list archive">Mailing-list</a></td></tr>
+ <tr><td ALIGN=middle><a class='linkbox' href="http://www.nevrax.org/docs/" TITLE="Rubrique docs"><img width=14 height=16 hspace=5 border=0 src=http://www.nevrax.org/inc/img/picto-docs.gif ALT=#></A></td><td><a class='linkbox' href="http://www.nevrax.org/docs/" TITLE="Documentation">Documentation</a></td></tr>
+ <tr><td ALIGN=middle><a class='linkbox' href="http://www.nevrax.org/cvs/" TITLE="Rubrique cvs"><img width=13 height=17 hspace=5 border=0 src=http://www.nevrax.org/inc/img/picto-cvs.gif ALT=#></A></td><td><a class='linkbox' href="http://www.nevrax.org/cvs/" TITLE="CVS Web">CVS</a></td></tr>
+ <tr><td ALIGN=middle><a class='linkbox' href="http://www.nevrax.org/bugs/" TITLE="Rubrique bugs"><img width=20 height=16 hspace=5 border=0 src=http://www.nevrax.org/inc/img/picto-bugs.gif ALT=#></A></td><td><a class='linkbox' href="http://www.nevrax.org/bugs/" TITLE="Bugtracking">Bugs</a></td></tr>
+ <tr><td ALIGN=middle><a class='linkbox' href="http://www.nevrax.org/free/" TITLE="Rubrique license"><img width=18 height=12 hspace=5 border=0 src=http://www.nevrax.org/inc/img/picto-free.gif ALT=#></A></td><td><a class='linkbox' href="http://www.nevrax.org/free/" TITLE="Free Software">Free software</a></td></tr>
+ </TABLE>
+ </TD></TR></TABLE></TD></TR></TABLE>
+ <!------ End Box ------>
+
+ </TD>
+ <TD WIDTH=15><IMG SRC="http://www.nevrax.org/inc/img/pixel.gif" WIDTH="16" HEIGHT="16" BORDER=0 ALT=""></TD>
+ <TD ALIGN=left valign=top><IMG SRC="http://www.nevrax.org/inc/img/pixel.gif" WIDTH="140" HEIGHT="10" BORDER=0 ALT="">
+
+<!-- title -->
+<TABLE background="http://www.nevrax.org/inc/img/redline.gif" CELLSPACING=0 CELLPADDING=0 BORDER=0 width=100%><tr><td>
+<A HREF="http://www.nevrax.org/cvs/"><img src="http://www.nevrax.org/inc/img/t_cvs.gif" ALT="cvs" HEIGHT=20 BORDER=0></A>
+</td><td><IMG SRC="http://www.nevrax.org/inc/img/pixel.gif" WIDTH="1" HEIGHT="1" BORDER=0 ALT="">
+</td></tr></table>
+
+<!-- title -->
+<table width=100%><tr><td align=left><b> <a href="/cvs/cvsweb.cgi/?sortby=log">Nevrax</a> / <a href="/cvs/cvsweb.cgi/code/?sortby=log">code</a> / <a href="/cvs/cvsweb.cgi/code/nelns/?sortby=log">nelns</a> / <a href="/cvs/cvsweb.cgi/code/nelns/admin_service/?sortby=log">admin_service</a> / Makefile.am</b></td><td align=right><b></b></td></TR></TABLE>
+
+<!-- block -->
+<TABLE bgcolor="#dddddd" CELLSPACING=0 CELLPADDING=0 BORDER=0 width=100%><tr><td width=1% valign=middle><img width=6 height=14 hspace=2 vspace=2 src="http://www.nevrax.org/inc/img/reddots.gif"></TD>
+ <TD><B>Makefile.am</B></TD>
+ <TD ALIGN=RIGHT> </td>
+</tr></table>
+<P>
+<p>Default branch: MAIN<BR>
+<HR size=1 NOSHADE><P><a NAME="rev1.6"></a><a NAME="HEAD"></a><a NAME="MAIN"></a>
+ Revision <A HREF="Makefile.am?rev=1.6&amp;content-type=text/x-cvsweb-markup&amp;sortby=log"><b>1.6</b></A> / (<A HREF="/cvs/cvsweb.cgi/~checkout~/code/nelns/admin_service/Makefile.am?rev=1.6&amp;content-type=text/plain&amp;sortby=log" target="cvs_checkout" onClick="window.open('/cvs/cvsweb.cgi/~checkout~/code/nelns/admin_service/Makefile.am?rev=1.6&amp;content-type=text/plain','cvs_checkout','resizeable,scrollbars');"><b>download</b></A>) - <a href="/cvs/cvsweb.cgi/code/nelns/admin_service/Makefile.am?annotate=1.6&amp;sortby=log">annotate</a> - <A HREF="/cvs/cvsweb.cgi/code/nelns/admin_service/Makefile.am?r1=1.6&amp;sortby=log">[select for diffs]</A>
+, <i>Wed Jun 12 10:21:02 2002 UTC</i> (6 weeks ago) by <i>lecroart</i>
+<BR>Branch: <b><A HREF="Makefile.am?sortby=log&amp;only_with_tag=MAIN">MAIN</A>
+</b>
+<BR>CVS Tags: <b><A HREF="Makefile.am?sortby=log&amp;only_with_tag=HEAD">HEAD</A>
+</b><BR>Changes since <b>1.5: +4 -3
+ lines</b><BR>Diff to previous <A HREF="/cvs/cvsweb.cgi/code/nelns/admin_service/Makefile.am.diff?r1=1.5&amp;r2=1.6&amp;sortby=log">1.5</A>
+<PRE>
+no message
+</PRE>
+<HR size=1 NOSHADE><P><a NAME="rev1.5"></a>
+ Revision <A HREF="Makefile.am?rev=1.5&amp;content-type=text/x-cvsweb-markup&amp;sortby=log"><b>1.5</b></A> / (<A HREF="/cvs/cvsweb.cgi/~checkout~/code/nelns/admin_service/Makefile.am?rev=1.5&amp;content-type=text/plain&amp;sortby=log" target="cvs_checkout" onClick="window.open('/cvs/cvsweb.cgi/~checkout~/code/nelns/admin_service/Makefile.am?rev=1.5&amp;content-type=text/plain','cvs_checkout','resizeable,scrollbars');"><b>download</b></A>) - <a href="/cvs/cvsweb.cgi/code/nelns/admin_service/Makefile.am?annotate=1.5&amp;sortby=log">annotate</a> - <A HREF="/cvs/cvsweb.cgi/code/nelns/admin_service/Makefile.am?r1=1.5&amp;sortby=log">[select for diffs]</A>
+, <i>Wed Apr 10 07:33:07 2002 UTC</i> (3 months, 2 weeks ago) by <i>lecroart</i>
+<BR>Branch: <b><A HREF="Makefile.am?sortby=log&amp;only_with_tag=MAIN">MAIN</A>
+</b>
+<BR>Changes since <b>1.4: +1 -3
+ lines</b><BR>Diff to previous <A HREF="/cvs/cvsweb.cgi/code/nelns/admin_service/Makefile.am.diff?r1=1.4&amp;r2=1.5&amp;sortby=log">1.4</A>
+<PRE>
+CHANGED: update makefile to manage log and cfg dir (thanks to loic dachary)
+</PRE>
+<HR size=1 NOSHADE><P><a NAME="rev1.4"></a>
+ Revision <A HREF="Makefile.am?rev=1.4&amp;content-type=text/x-cvsweb-markup&amp;sortby=log"><b>1.4</b></A> / (<A HREF="/cvs/cvsweb.cgi/~checkout~/code/nelns/admin_service/Makefile.am?rev=1.4&amp;content-type=text/plain&amp;sortby=log" target="cvs_checkout" onClick="window.open('/cvs/cvsweb.cgi/~checkout~/code/nelns/admin_service/Makefile.am?rev=1.4&amp;content-type=text/plain','cvs_checkout','resizeable,scrollbars');"><b>download</b></A>) - <a href="/cvs/cvsweb.cgi/code/nelns/admin_service/Makefile.am?annotate=1.4&amp;sortby=log">annotate</a> - <A HREF="/cvs/cvsweb.cgi/code/nelns/admin_service/Makefile.am?r1=1.4&amp;sortby=log">[select for diffs]</A>
+, <i>Tue Mar 19 17:42:48 2002 UTC</i> (4 months ago) by <i>valignat</i>
+<BR>Branch: <b><A HREF="Makefile.am?sortby=log&amp;only_with_tag=MAIN">MAIN</A>
+</b>
+<BR>Changes since <b>1.3: +6 -4
+ lines</b><BR>Diff to previous <A HREF="/cvs/cvsweb.cgi/code/nelns/admin_service/Makefile.am.diff?r1=1.3&amp;r2=1.4&amp;sortby=log">1.3</A>
+<PRE>
+Applied patches which help to have a clen install on GNU/Linux and to make a Debian package (changes on the management of config and log files, bugfixes, etc ...)
+</PRE>
+<HR size=1 NOSHADE><P><a NAME="rev1.3"></a>
+ Revision <A HREF="Makefile.am?rev=1.3&amp;content-type=text/x-cvsweb-markup&amp;sortby=log"><b>1.3</b></A> / (<A HREF="/cvs/cvsweb.cgi/~checkout~/code/nelns/admin_service/Makefile.am?rev=1.3&amp;content-type=text/plain&amp;sortby=log" target="cvs_checkout" onClick="window.open('/cvs/cvsweb.cgi/~checkout~/code/nelns/admin_service/Makefile.am?rev=1.3&amp;content-type=text/plain','cvs_checkout','resizeable,scrollbars');"><b>download</b></A>) - <a href="/cvs/cvsweb.cgi/code/nelns/admin_service/Makefile.am?annotate=1.3&amp;sortby=log">annotate</a> - <A HREF="/cvs/cvsweb.cgi/code/nelns/admin_service/Makefile.am?r1=1.3&amp;sortby=log">[select for diffs]</A>
+, <i>Fri Jul 27 15:51:10 2001 UTC</i> (11 months, 3 weeks ago) by <i>valignat</i>
+<BR>Branch: <b><A HREF="Makefile.am?sortby=log&amp;only_with_tag=MAIN">MAIN</A>
+</b>
+<BR>Changes since <b>1.2: +4 -3
+ lines</b><BR>Diff to previous <A HREF="/cvs/cvsweb.cgi/code/nelns/admin_service/Makefile.am.diff?r1=1.2&amp;r2=1.3&amp;sortby=log">1.2</A>
+<PRE>
+#ADDED some missing source files and clean Makefile.am for NeLNS.
+</PRE>
+<HR size=1 NOSHADE><P><a NAME="rev1.2"></a>
+ Revision <A HREF="Makefile.am?rev=1.2&amp;content-type=text/x-cvsweb-markup&amp;sortby=log"><b>1.2</b></A> / (<A HREF="/cvs/cvsweb.cgi/~checkout~/code/nelns/admin_service/Makefile.am?rev=1.2&amp;content-type=text/plain&amp;sortby=log" target="cvs_checkout" onClick="window.open('/cvs/cvsweb.cgi/~checkout~/code/nelns/admin_service/Makefile.am?rev=1.2&amp;content-type=text/plain','cvs_checkout','resizeable,scrollbars');"><b>download</b></A>) - <a href="/cvs/cvsweb.cgi/code/nelns/admin_service/Makefile.am?annotate=1.2&amp;sortby=log">annotate</a> - <A HREF="/cvs/cvsweb.cgi/code/nelns/admin_service/Makefile.am?r1=1.2&amp;sortby=log">[select for diffs]</A>
+, <i>Thu May 3 13:19:13 2001 UTC</i> (14 months, 3 weeks ago) by <i>lecroart</i>
+<BR>Branch: <b><A HREF="Makefile.am?sortby=log&amp;only_with_tag=MAIN">MAIN</A>
+</b>
+<BR>Changes since <b>1.1: +4 -4
+ lines</b><BR>Diff to previous <A HREF="/cvs/cvsweb.cgi/code/nelns/admin_service/Makefile.am.diff?r1=1.1&amp;r2=1.2&amp;sortby=log">1.1</A>
+<PRE>
+BUGFIX: now compile on linux
+</PRE>
+<HR size=1 NOSHADE><P><a NAME="rev1.1"></a>
+ Revision <A HREF="Makefile.am?rev=1.1&amp;content-type=text/x-cvsweb-markup&amp;sortby=log"><b>1.1</b></A> / (<A HREF="/cvs/cvsweb.cgi/~checkout~/code/nelns/admin_service/Makefile.am?rev=1.1&amp;content-type=text/plain&amp;sortby=log" target="cvs_checkout" onClick="window.open('/cvs/cvsweb.cgi/~checkout~/code/nelns/admin_service/Makefile.am?rev=1.1&amp;content-type=text/plain','cvs_checkout','resizeable,scrollbars');"><b>download</b></A>) - <a href="/cvs/cvsweb.cgi/code/nelns/admin_service/Makefile.am?annotate=1.1&amp;sortby=log">annotate</a> - <A HREF="/cvs/cvsweb.cgi/code/nelns/admin_service/Makefile.am?r1=1.1&amp;sortby=log">[select for diffs]</A>
+, <i>Wed May 2 12:36:39 2001 UTC</i> (14 months, 3 weeks ago) by <i>lecroart</i>
+<BR>Branch: <b><A HREF="Makefile.am?sortby=log&amp;only_with_tag=MAIN">MAIN</A>
+</b>
+<BR>Diff<PRE>
+ADD: new version of the network system (in NeL and NeLns)
+</PRE>
+
+<!-- block -->
+<TABLE bgcolor="#dddddd" CELLSPACING=0 CELLPADDING=0 BORDER=0 width=100%><tr><td width=1% valign=middle><img width=6 height=14 hspace=2 vspace=2 src="http://www.nevrax.org/inc/img/reddots.gif"></TD>
+ <TD><B>Request Diffs</B></TD>
+ <TD ALIGN=RIGHT> </td>
+</tr></table>
+<P>
+<P>
+<FORM METHOD="GET" ACTION="/cvs/cvsweb.cgi/code/nelns/admin_service/Makefile.am.diff" NAME="diff_select">
+<INPUT TYPE=HIDDEN NAME="sortby" VALUE="log">
+Diffs between
+<SELECT NAME="r1">
+<OPTION VALUE="text" SELECTED>Use Text Field
+<OPTION VALUE="1:MAIN">MAIN
+<OPTION VALUE="1.6:HEAD">HEAD
+</SELECT>
+<INPUT TYPE="TEXT" SIZE="12" NAME="tr1" VALUE="1.1" onChange='document.diff_select.r1.selectedIndex=0'>
+ and
+<SELECT NAME="r2">
+<OPTION VALUE="text" SELECTED>Use Text Field
+<OPTION VALUE="1:MAIN">MAIN
+<OPTION VALUE="1.6:HEAD">HEAD
+</SELECT>
+<INPUT TYPE="TEXT" SIZE="12" NAME="tr2" VALUE="1.6" onChange='docuement.diff_select.r2.selectedIndex=0'>
+<BR>Type of Diff should be a&nbsp;<SELECT NAME="f">
+<OPTION VALUE=h SELECTED>Colored Diff<OPTION VALUE=H>Long Colored Diff<OPTION VALUE=u>Unidiff<OPTION VALUE=c>Context Diff<OPTION VALUE=s>Side by Side</SELECT><INPUT TYPE=SUBMIT VALUE=" Get Diffs ">
+</FORM>
+
+<!-- block -->
+<TABLE bgcolor="#dddddd" CELLSPACING=0 CELLPADDING=0 BORDER=0 width=100%><tr><td width=1% valign=middle><img width=6 height=14 hspace=2 vspace=2 src="http://www.nevrax.org/inc/img/reddots.gif"></TD>
+ <TD><B>Select branch</B></TD>
+ <TD ALIGN=RIGHT> </td>
+</tr></table>
+<P>
+<P>
+<A name=branch></A>
+<FORM METHOD="GET" ACTION="/cvs/cvsweb.cgi/code/nelns/admin_service/Makefile.am">
+<INPUT TYPE=HIDDEN NAME="sortby" VALUE="log">
+View only Branch:
+<SELECT NAME="only_with_tag" onchange="submit()">
+<OPTION VALUE="">Show all branches
+<OPTION>MAIN
+</SELECT>
+<INPUT TYPE=SUBMIT VALUE=" View Branch ">
+</FORM>
+<A name=logsort></A>
+<FORM METHOD="GET" ACTION="/cvs/cvsweb.cgi/code/nelns/admin_service/Makefile.am">
+<INPUT TYPE=HIDDEN NAME="sortby" VALUE="log">
+Sort log by:
+<SELECT NAME="logsort" onchange="submit()">
+<OPTION VALUE=cvs>Not sorted<OPTION VALUE=date SELECTED>Commit date<OPTION VALUE=rev>Revision</SELECT>
+<INPUT TYPE=SUBMIT VALUE=" Sort ">
+</FORM>
+
+<!-- footer -->
+<BR><FONT Size=+5>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </FONT>
+</TD>
+<TD WIDTH=15><IMG SRC=http://www.nevrax.org/inc/img/pixel.gif WIDTH=15 HEIGHT=15 BORDER=0 ALT=""></TD>
+</TR>
+</TABLE>
+</BODY>
+</HTML></BODY></HTML>
diff --git a/cvs/cvsweb.cgi/code/nelns/admin_service/Makefile.am?sortby=rev b/cvs/cvsweb.cgi/code/nelns/admin_service/Makefile.am?sortby=rev
new file mode 100644
index 00000000..a2b0218f
--- /dev/null
+++ b/cvs/cvsweb.cgi/code/nelns/admin_service/Makefile.am?sortby=rev
@@ -0,0 +1,187 @@
+<!doctype html public "-//W3C//DTD HTML 4.0 Transitional//EN" "http://www.w3.org/TR/REC-html40/loose.dtd">
+<HTML>
+<HEAD>
+ <TITLE>nevrax.org : cvs</TITLE>
+ <META name="keywords" content="freesoftware,nel,newt,snowballs,richard stallman,GNU,Multi-User Online World">
+
+ <LINK REL=stylesheet TYPE="text/css" HREF="http://www.nevrax.org/inc/css/nevrax.css">
+</HEAD>
+<BODY MARGINHEIGHT="0" MARGINWIDTH="0">
+
+<!-- uplinks -->
+<TABLE CELLSPACING=0 CELLPADDING=0 BORDER=0>
+ <TR>
+ <TD WIDTH=16><IMG SRC="http://www.nevrax.org/inc/img/pixel.gif" WIDTH="16" HEIGHT="16" BORDER=0 ALT=""></TD>
+ <TD WIDTH=140 BGCOLOR=#dddddd><IMG SRC="http://www.nevrax.org/inc/img/pixel.gif" WIDTH="140" HEIGHT="16" BORDER=0 ALT=""></TD>
+ <TD WIDTH=16><IMG SRC="http://www.nevrax.org/inc/img/pixel.gif" WIDTH="16" HEIGHT="16" BORDER=0 ALT=""></TD>
+ <TD><IMG width=6 height=14 SRC="http://www.nevrax.org/inc/img/reddots.gif" ALT="#" VSPACE=2 HSPACE=2 BORDER=0 ></TD><TD VALIGN=middle>&nbsp;<A CLASS=uplinks HREF=http://www.nevrax.org><b>Home</B></FONT></A>&nbsp;&nbsp;&nbsp;</TD>
+ <TD><IMG width=6 height=14 SRC="http://www.nevrax.org/inc/img/reddots.gif" ALT="#" VSPACE=2 HSPACE=2 BORDER=0 ></TD><TD VALIGN=middle>&nbsp;<A CLASS=uplinks HREF=http://www.nevrax.com><b>nevrax.com</B></FONT></A>&nbsp;&nbsp;&nbsp;</TD>
+ </TR>
+</TABLE>
+
+<!-- banner Nevrax -->
+<TABLE CELLSPACING=0 CELLPADDING=0 BORDER=0 WIDTH=100%>
+ <TR><TD BGCOLOR="#000000" BACKGROUND="http://www.nevrax.org/inc/img/black_banner.jpg"><A HREF="http://www.nevrax.org"><IMG SRC="http://www.nevrax.org/inc/img/nevrax.gif" WIDTH="170" HEIGHT="45" BORDER=0 ALT="Nevrax" ></A></TD></TR>
+</TABLE>
+
+<!-- main table -->
+<TABLE CELLSPACING=0 CELLPADDING=0 BORDER=0 height=100%>
+ <TR>
+ <TD WIDTH=16><IMG SRC="http://www.nevrax.org/inc/img/pixel.gif" WIDTH="16" HEIGHT="10" BORDER=0 ALT=""></TD>
+ <TD WIDTH=140 BGCOLOR=#dddddd VALIGN=TOP ALIGN=middle><IMG SRC="http://www.nevrax.org/inc/img/pixel.gif" WIDTH="140" HEIGHT="10" BORDER=0 ALT="">
+
+ <!------ Begin Box ------>
+ <TABLE BORDER=0 CELLSPACING=0 CELLPADDING=0 BGCOLOR=black><TR><TD><TABLE border=0 cellspacing=2 cellpadding=0 width=120><tr><TD ALIGN=middle bgcolor=black>
+ <FONT COLOR=white FACE="sans-serif"><B>Nevrax.org</B></FONT></TD></TR><tr><td colspan=2 bgcolor=#FFFFFF>
+ <TABLE cellspacing=0 cellpadding=1 border=0>
+ <tr><td ALIGN=middle><a class='linkbox' href="http://www.nevrax.org/news/" TITLE="Rubrique news"><img width=13 height=15 hspace=5 border=0 src=http://www.nevrax.org/inc/img/picto-news.gif ALT=#></A></td><td><a class='linkbox' href="http://www.nevrax.org/news/" TITLE="News">News</a></td></tr>
+ <tr><td ALIGN=middle><a class='linkbox' href="http://www.nevrax.org/mail/" TITLE="Rubrique mail"><img width=15 height=11 hspace=5 border=0 src=http://www.nevrax.org/inc/img/picto-mail.gif ALT=#></A></td><td><a class='linkbox' href="http://www.nevrax.org/mail/" TITLE="Mailing list archive">Mailing-list</a></td></tr>
+ <tr><td ALIGN=middle><a class='linkbox' href="http://www.nevrax.org/docs/" TITLE="Rubrique docs"><img width=14 height=16 hspace=5 border=0 src=http://www.nevrax.org/inc/img/picto-docs.gif ALT=#></A></td><td><a class='linkbox' href="http://www.nevrax.org/docs/" TITLE="Documentation">Documentation</a></td></tr>
+ <tr><td ALIGN=middle><a class='linkbox' href="http://www.nevrax.org/cvs/" TITLE="Rubrique cvs"><img width=13 height=17 hspace=5 border=0 src=http://www.nevrax.org/inc/img/picto-cvs.gif ALT=#></A></td><td><a class='linkbox' href="http://www.nevrax.org/cvs/" TITLE="CVS Web">CVS</a></td></tr>
+ <tr><td ALIGN=middle><a class='linkbox' href="http://www.nevrax.org/bugs/" TITLE="Rubrique bugs"><img width=20 height=16 hspace=5 border=0 src=http://www.nevrax.org/inc/img/picto-bugs.gif ALT=#></A></td><td><a class='linkbox' href="http://www.nevrax.org/bugs/" TITLE="Bugtracking">Bugs</a></td></tr>
+ <tr><td ALIGN=middle><a class='linkbox' href="http://www.nevrax.org/free/" TITLE="Rubrique license"><img width=18 height=12 hspace=5 border=0 src=http://www.nevrax.org/inc/img/picto-free.gif ALT=#></A></td><td><a class='linkbox' href="http://www.nevrax.org/free/" TITLE="Free Software">Free software</a></td></tr>
+ </TABLE>
+ </TD></TR></TABLE></TD></TR></TABLE>
+ <!------ End Box ------>
+
+ </TD>
+ <TD WIDTH=15><IMG SRC="http://www.nevrax.org/inc/img/pixel.gif" WIDTH="16" HEIGHT="16" BORDER=0 ALT=""></TD>
+ <TD ALIGN=left valign=top><IMG SRC="http://www.nevrax.org/inc/img/pixel.gif" WIDTH="140" HEIGHT="10" BORDER=0 ALT="">
+
+<!-- title -->
+<TABLE background="http://www.nevrax.org/inc/img/redline.gif" CELLSPACING=0 CELLPADDING=0 BORDER=0 width=100%><tr><td>
+<A HREF="http://www.nevrax.org/cvs/"><img src="http://www.nevrax.org/inc/img/t_cvs.gif" ALT="cvs" HEIGHT=20 BORDER=0></A>
+</td><td><IMG SRC="http://www.nevrax.org/inc/img/pixel.gif" WIDTH="1" HEIGHT="1" BORDER=0 ALT="">
+</td></tr></table>
+
+<!-- title -->
+<table width=100%><tr><td align=left><b> <a href="/cvs/cvsweb.cgi/?sortby=rev">Nevrax</a> / <a href="/cvs/cvsweb.cgi/code/?sortby=rev">code</a> / <a href="/cvs/cvsweb.cgi/code/nelns/?sortby=rev">nelns</a> / <a href="/cvs/cvsweb.cgi/code/nelns/admin_service/?sortby=rev">admin_service</a> / Makefile.am</b></td><td align=right><b></b></td></TR></TABLE>
+
+<!-- block -->
+<TABLE bgcolor="#dddddd" CELLSPACING=0 CELLPADDING=0 BORDER=0 width=100%><tr><td width=1% valign=middle><img width=6 height=14 hspace=2 vspace=2 src="http://www.nevrax.org/inc/img/reddots.gif"></TD>
+ <TD><B>Makefile.am</B></TD>
+ <TD ALIGN=RIGHT> </td>
+</tr></table>
+<P>
+<p>Default branch: MAIN<BR>
+<HR size=1 NOSHADE><P><a NAME="rev1.6"></a><a NAME="HEAD"></a><a NAME="MAIN"></a>
+ Revision <A HREF="Makefile.am?rev=1.6&amp;content-type=text/x-cvsweb-markup&amp;sortby=rev"><b>1.6</b></A> / (<A HREF="/cvs/cvsweb.cgi/~checkout~/code/nelns/admin_service/Makefile.am?rev=1.6&amp;content-type=text/plain&amp;sortby=rev" target="cvs_checkout" onClick="window.open('/cvs/cvsweb.cgi/~checkout~/code/nelns/admin_service/Makefile.am?rev=1.6&amp;content-type=text/plain','cvs_checkout','resizeable,scrollbars');"><b>download</b></A>) - <a href="/cvs/cvsweb.cgi/code/nelns/admin_service/Makefile.am?annotate=1.6&amp;sortby=rev">annotate</a> - <A HREF="/cvs/cvsweb.cgi/code/nelns/admin_service/Makefile.am?r1=1.6&amp;sortby=rev">[select for diffs]</A>
+, <i>Wed Jun 12 10:21:02 2002 UTC</i> (6 weeks ago) by <i>lecroart</i>
+<BR>Branch: <b><A HREF="Makefile.am?sortby=rev&amp;only_with_tag=MAIN">MAIN</A>
+</b>
+<BR>CVS Tags: <b><A HREF="Makefile.am?sortby=rev&amp;only_with_tag=HEAD">HEAD</A>
+</b><BR>Changes since <b>1.5: +4 -3
+ lines</b><BR>Diff to previous <A HREF="/cvs/cvsweb.cgi/code/nelns/admin_service/Makefile.am.diff?r1=1.5&amp;r2=1.6&amp;sortby=rev">1.5</A>
+<PRE>
+no message
+</PRE>
+<HR size=1 NOSHADE><P><a NAME="rev1.5"></a>
+ Revision <A HREF="Makefile.am?rev=1.5&amp;content-type=text/x-cvsweb-markup&amp;sortby=rev"><b>1.5</b></A> / (<A HREF="/cvs/cvsweb.cgi/~checkout~/code/nelns/admin_service/Makefile.am?rev=1.5&amp;content-type=text/plain&amp;sortby=rev" target="cvs_checkout" onClick="window.open('/cvs/cvsweb.cgi/~checkout~/code/nelns/admin_service/Makefile.am?rev=1.5&amp;content-type=text/plain','cvs_checkout','resizeable,scrollbars');"><b>download</b></A>) - <a href="/cvs/cvsweb.cgi/code/nelns/admin_service/Makefile.am?annotate=1.5&amp;sortby=rev">annotate</a> - <A HREF="/cvs/cvsweb.cgi/code/nelns/admin_service/Makefile.am?r1=1.5&amp;sortby=rev">[select for diffs]</A>
+, <i>Wed Apr 10 07:33:07 2002 UTC</i> (3 months, 2 weeks ago) by <i>lecroart</i>
+<BR>Branch: <b><A HREF="Makefile.am?sortby=rev&amp;only_with_tag=MAIN">MAIN</A>
+</b>
+<BR>Changes since <b>1.4: +1 -3
+ lines</b><BR>Diff to previous <A HREF="/cvs/cvsweb.cgi/code/nelns/admin_service/Makefile.am.diff?r1=1.4&amp;r2=1.5&amp;sortby=rev">1.4</A>
+<PRE>
+CHANGED: update makefile to manage log and cfg dir (thanks to loic dachary)
+</PRE>
+<HR size=1 NOSHADE><P><a NAME="rev1.4"></a>
+ Revision <A HREF="Makefile.am?rev=1.4&amp;content-type=text/x-cvsweb-markup&amp;sortby=rev"><b>1.4</b></A> / (<A HREF="/cvs/cvsweb.cgi/~checkout~/code/nelns/admin_service/Makefile.am?rev=1.4&amp;content-type=text/plain&amp;sortby=rev" target="cvs_checkout" onClick="window.open('/cvs/cvsweb.cgi/~checkout~/code/nelns/admin_service/Makefile.am?rev=1.4&amp;content-type=text/plain','cvs_checkout','resizeable,scrollbars');"><b>download</b></A>) - <a href="/cvs/cvsweb.cgi/code/nelns/admin_service/Makefile.am?annotate=1.4&amp;sortby=rev">annotate</a> - <A HREF="/cvs/cvsweb.cgi/code/nelns/admin_service/Makefile.am?r1=1.4&amp;sortby=rev">[select for diffs]</A>
+, <i>Tue Mar 19 17:42:48 2002 UTC</i> (4 months ago) by <i>valignat</i>
+<BR>Branch: <b><A HREF="Makefile.am?sortby=rev&amp;only_with_tag=MAIN">MAIN</A>
+</b>
+<BR>Changes since <b>1.3: +6 -4
+ lines</b><BR>Diff to previous <A HREF="/cvs/cvsweb.cgi/code/nelns/admin_service/Makefile.am.diff?r1=1.3&amp;r2=1.4&amp;sortby=rev">1.3</A>
+<PRE>
+Applied patches which help to have a clen install on GNU/Linux and to make a Debian package (changes on the management of config and log files, bugfixes, etc ...)
+</PRE>
+<HR size=1 NOSHADE><P><a NAME="rev1.3"></a>
+ Revision <A HREF="Makefile.am?rev=1.3&amp;content-type=text/x-cvsweb-markup&amp;sortby=rev"><b>1.3</b></A> / (<A HREF="/cvs/cvsweb.cgi/~checkout~/code/nelns/admin_service/Makefile.am?rev=1.3&amp;content-type=text/plain&amp;sortby=rev" target="cvs_checkout" onClick="window.open('/cvs/cvsweb.cgi/~checkout~/code/nelns/admin_service/Makefile.am?rev=1.3&amp;content-type=text/plain','cvs_checkout','resizeable,scrollbars');"><b>download</b></A>) - <a href="/cvs/cvsweb.cgi/code/nelns/admin_service/Makefile.am?annotate=1.3&amp;sortby=rev">annotate</a> - <A HREF="/cvs/cvsweb.cgi/code/nelns/admin_service/Makefile.am?r1=1.3&amp;sortby=rev">[select for diffs]</A>
+, <i>Fri Jul 27 15:51:10 2001 UTC</i> (11 months, 3 weeks ago) by <i>valignat</i>
+<BR>Branch: <b><A HREF="Makefile.am?sortby=rev&amp;only_with_tag=MAIN">MAIN</A>
+</b>
+<BR>Changes since <b>1.2: +4 -3
+ lines</b><BR>Diff to previous <A HREF="/cvs/cvsweb.cgi/code/nelns/admin_service/Makefile.am.diff?r1=1.2&amp;r2=1.3&amp;sortby=rev">1.2</A>
+<PRE>
+#ADDED some missing source files and clean Makefile.am for NeLNS.
+</PRE>
+<HR size=1 NOSHADE><P><a NAME="rev1.2"></a>
+ Revision <A HREF="Makefile.am?rev=1.2&amp;content-type=text/x-cvsweb-markup&amp;sortby=rev"><b>1.2</b></A> / (<A HREF="/cvs/cvsweb.cgi/~checkout~/code/nelns/admin_service/Makefile.am?rev=1.2&amp;content-type=text/plain&amp;sortby=rev" target="cvs_checkout" onClick="window.open('/cvs/cvsweb.cgi/~checkout~/code/nelns/admin_service/Makefile.am?rev=1.2&amp;content-type=text/plain','cvs_checkout','resizeable,scrollbars');"><b>download</b></A>) - <a href="/cvs/cvsweb.cgi/code/nelns/admin_service/Makefile.am?annotate=1.2&amp;sortby=rev">annotate</a> - <A HREF="/cvs/cvsweb.cgi/code/nelns/admin_service/Makefile.am?r1=1.2&amp;sortby=rev">[select for diffs]</A>
+, <i>Thu May 3 13:19:13 2001 UTC</i> (14 months, 3 weeks ago) by <i>lecroart</i>
+<BR>Branch: <b><A HREF="Makefile.am?sortby=rev&amp;only_with_tag=MAIN">MAIN</A>
+</b>
+<BR>Changes since <b>1.1: +4 -4
+ lines</b><BR>Diff to previous <A HREF="/cvs/cvsweb.cgi/code/nelns/admin_service/Makefile.am.diff?r1=1.1&amp;r2=1.2&amp;sortby=rev">1.1</A>
+<PRE>
+BUGFIX: now compile on linux
+</PRE>
+<HR size=1 NOSHADE><P><a NAME="rev1.1"></a>
+ Revision <A HREF="Makefile.am?rev=1.1&amp;content-type=text/x-cvsweb-markup&amp;sortby=rev"><b>1.1</b></A> / (<A HREF="/cvs/cvsweb.cgi/~checkout~/code/nelns/admin_service/Makefile.am?rev=1.1&amp;content-type=text/plain&amp;sortby=rev" target="cvs_checkout" onClick="window.open('/cvs/cvsweb.cgi/~checkout~/code/nelns/admin_service/Makefile.am?rev=1.1&amp;content-type=text/plain','cvs_checkout','resizeable,scrollbars');"><b>download</b></A>) - <a href="/cvs/cvsweb.cgi/code/nelns/admin_service/Makefile.am?annotate=1.1&amp;sortby=rev">annotate</a> - <A HREF="/cvs/cvsweb.cgi/code/nelns/admin_service/Makefile.am?r1=1.1&amp;sortby=rev">[select for diffs]</A>
+, <i>Wed May 2 12:36:39 2001 UTC</i> (14 months, 3 weeks ago) by <i>lecroart</i>
+<BR>Branch: <b><A HREF="Makefile.am?sortby=rev&amp;only_with_tag=MAIN">MAIN</A>
+</b>
+<BR>Diff<PRE>
+ADD: new version of the network system (in NeL and NeLns)
+</PRE>
+
+<!-- block -->
+<TABLE bgcolor="#dddddd" CELLSPACING=0 CELLPADDING=0 BORDER=0 width=100%><tr><td width=1% valign=middle><img width=6 height=14 hspace=2 vspace=2 src="http://www.nevrax.org/inc/img/reddots.gif"></TD>
+ <TD><B>Request Diffs</B></TD>
+ <TD ALIGN=RIGHT> </td>
+</tr></table>
+<P>
+<P>
+<FORM METHOD="GET" ACTION="/cvs/cvsweb.cgi/code/nelns/admin_service/Makefile.am.diff" NAME="diff_select">
+<INPUT TYPE=HIDDEN NAME="sortby" VALUE="rev">
+Diffs between
+<SELECT NAME="r1">
+<OPTION VALUE="text" SELECTED>Use Text Field
+<OPTION VALUE="1:MAIN">MAIN
+<OPTION VALUE="1.6:HEAD">HEAD
+</SELECT>
+<INPUT TYPE="TEXT" SIZE="12" NAME="tr1" VALUE="1.1" onChange='document.diff_select.r1.selectedIndex=0'>
+ and
+<SELECT NAME="r2">
+<OPTION VALUE="text" SELECTED>Use Text Field
+<OPTION VALUE="1:MAIN">MAIN
+<OPTION VALUE="1.6:HEAD">HEAD
+</SELECT>
+<INPUT TYPE="TEXT" SIZE="12" NAME="tr2" VALUE="1.6" onChange='docuement.diff_select.r2.selectedIndex=0'>
+<BR>Type of Diff should be a&nbsp;<SELECT NAME="f">
+<OPTION VALUE=h SELECTED>Colored Diff<OPTION VALUE=H>Long Colored Diff<OPTION VALUE=u>Unidiff<OPTION VALUE=c>Context Diff<OPTION VALUE=s>Side by Side</SELECT><INPUT TYPE=SUBMIT VALUE=" Get Diffs ">
+</FORM>
+
+<!-- block -->
+<TABLE bgcolor="#dddddd" CELLSPACING=0 CELLPADDING=0 BORDER=0 width=100%><tr><td width=1% valign=middle><img width=6 height=14 hspace=2 vspace=2 src="http://www.nevrax.org/inc/img/reddots.gif"></TD>
+ <TD><B>Select branch</B></TD>
+ <TD ALIGN=RIGHT> </td>
+</tr></table>
+<P>
+<P>
+<A name=branch></A>
+<FORM METHOD="GET" ACTION="/cvs/cvsweb.cgi/code/nelns/admin_service/Makefile.am">
+<INPUT TYPE=HIDDEN NAME="sortby" VALUE="rev">
+View only Branch:
+<SELECT NAME="only_with_tag" onchange="submit()">
+<OPTION VALUE="">Show all branches
+<OPTION>MAIN
+</SELECT>
+<INPUT TYPE=SUBMIT VALUE=" View Branch ">
+</FORM>
+<A name=logsort></A>
+<FORM METHOD="GET" ACTION="/cvs/cvsweb.cgi/code/nelns/admin_service/Makefile.am">
+<INPUT TYPE=HIDDEN NAME="sortby" VALUE="rev">
+Sort log by:
+<SELECT NAME="logsort" onchange="submit()">
+<OPTION VALUE=cvs>Not sorted<OPTION VALUE=date SELECTED>Commit date<OPTION VALUE=rev>Revision</SELECT>
+<INPUT TYPE=SUBMIT VALUE=" Sort ">
+</FORM>
+
+<!-- footer -->
+<BR><FONT Size=+5>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </FONT>
+</TD>
+<TD WIDTH=15><IMG SRC=http://www.nevrax.org/inc/img/pixel.gif WIDTH=15 HEIGHT=15 BORDER=0 ALT=""></TD>
+</TR>
+</TABLE>
+</BODY>
+</HTML></BODY></HTML>
diff --git a/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cfg b/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cfg
new file mode 100644
index 00000000..f1715696
--- /dev/null
+++ b/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cfg
@@ -0,0 +1,184 @@
+<!doctype html public "-//W3C//DTD HTML 4.0 Transitional//EN" "http://www.w3.org/TR/REC-html40/loose.dtd">
+<HTML>
+<HEAD>
+ <TITLE>nevrax.org : cvs</TITLE>
+ <META name="keywords" content="freesoftware,nel,newt,snowballs,richard stallman,GNU,Multi-User Online World">
+
+ <LINK REL=stylesheet TYPE="text/css" HREF="http://www.nevrax.org/inc/css/nevrax.css">
+</HEAD>
+<BODY MARGINHEIGHT="0" MARGINWIDTH="0">
+
+<!-- uplinks -->
+<TABLE CELLSPACING=0 CELLPADDING=0 BORDER=0>
+ <TR>
+ <TD WIDTH=16><IMG SRC="http://www.nevrax.org/inc/img/pixel.gif" WIDTH="16" HEIGHT="16" BORDER=0 ALT=""></TD>
+ <TD WIDTH=140 BGCOLOR=#dddddd><IMG SRC="http://www.nevrax.org/inc/img/pixel.gif" WIDTH="140" HEIGHT="16" BORDER=0 ALT=""></TD>
+ <TD WIDTH=16><IMG SRC="http://www.nevrax.org/inc/img/pixel.gif" WIDTH="16" HEIGHT="16" BORDER=0 ALT=""></TD>
+ <TD><IMG width=6 height=14 SRC="http://www.nevrax.org/inc/img/reddots.gif" ALT="#" VSPACE=2 HSPACE=2 BORDER=0 ></TD><TD VALIGN=middle>&nbsp;<A CLASS=uplinks HREF=http://www.nevrax.org><b>Home</B></FONT></A>&nbsp;&nbsp;&nbsp;</TD>
+ <TD><IMG width=6 height=14 SRC="http://www.nevrax.org/inc/img/reddots.gif" ALT="#" VSPACE=2 HSPACE=2 BORDER=0 ></TD><TD VALIGN=middle>&nbsp;<A CLASS=uplinks HREF=http://www.nevrax.com><b>nevrax.com</B></FONT></A>&nbsp;&nbsp;&nbsp;</TD>
+ </TR>
+</TABLE>
+
+<!-- banner Nevrax -->
+<TABLE CELLSPACING=0 CELLPADDING=0 BORDER=0 WIDTH=100%>
+ <TR><TD BGCOLOR="#000000" BACKGROUND="http://www.nevrax.org/inc/img/black_banner.jpg"><A HREF="http://www.nevrax.org"><IMG SRC="http://www.nevrax.org/inc/img/nevrax.gif" WIDTH="170" HEIGHT="45" BORDER=0 ALT="Nevrax" ></A></TD></TR>
+</TABLE>
+
+<!-- main table -->
+<TABLE CELLSPACING=0 CELLPADDING=0 BORDER=0 height=100%>
+ <TR>
+ <TD WIDTH=16><IMG SRC="http://www.nevrax.org/inc/img/pixel.gif" WIDTH="16" HEIGHT="10" BORDER=0 ALT=""></TD>
+ <TD WIDTH=140 BGCOLOR=#dddddd VALIGN=TOP ALIGN=middle><IMG SRC="http://www.nevrax.org/inc/img/pixel.gif" WIDTH="140" HEIGHT="10" BORDER=0 ALT="">
+
+ <!------ Begin Box ------>
+ <TABLE BORDER=0 CELLSPACING=0 CELLPADDING=0 BGCOLOR=black><TR><TD><TABLE border=0 cellspacing=2 cellpadding=0 width=120><tr><TD ALIGN=middle bgcolor=black>
+ <FONT COLOR=white FACE="sans-serif"><B>Nevrax.org</B></FONT></TD></TR><tr><td colspan=2 bgcolor=#FFFFFF>
+ <TABLE cellspacing=0 cellpadding=1 border=0>
+ <tr><td ALIGN=middle><a class='linkbox' href="http://www.nevrax.org/news/" TITLE="Rubrique news"><img width=13 height=15 hspace=5 border=0 src=http://www.nevrax.org/inc/img/picto-news.gif ALT=#></A></td><td><a class='linkbox' href="http://www.nevrax.org/news/" TITLE="News">News</a></td></tr>
+ <tr><td ALIGN=middle><a class='linkbox' href="http://www.nevrax.org/mail/" TITLE="Rubrique mail"><img width=15 height=11 hspace=5 border=0 src=http://www.nevrax.org/inc/img/picto-mail.gif ALT=#></A></td><td><a class='linkbox' href="http://www.nevrax.org/mail/" TITLE="Mailing list archive">Mailing-list</a></td></tr>
+ <tr><td ALIGN=middle><a class='linkbox' href="http://www.nevrax.org/docs/" TITLE="Rubrique docs"><img width=14 height=16 hspace=5 border=0 src=http://www.nevrax.org/inc/img/picto-docs.gif ALT=#></A></td><td><a class='linkbox' href="http://www.nevrax.org/docs/" TITLE="Documentation">Documentation</a></td></tr>
+ <tr><td ALIGN=middle><a class='linkbox' href="http://www.nevrax.org/cvs/" TITLE="Rubrique cvs"><img width=13 height=17 hspace=5 border=0 src=http://www.nevrax.org/inc/img/picto-cvs.gif ALT=#></A></td><td><a class='linkbox' href="http://www.nevrax.org/cvs/" TITLE="CVS Web">CVS</a></td></tr>
+ <tr><td ALIGN=middle><a class='linkbox' href="http://www.nevrax.org/bugs/" TITLE="Rubrique bugs"><img width=20 height=16 hspace=5 border=0 src=http://www.nevrax.org/inc/img/picto-bugs.gif ALT=#></A></td><td><a class='linkbox' href="http://www.nevrax.org/bugs/" TITLE="Bugtracking">Bugs</a></td></tr>
+ <tr><td ALIGN=middle><a class='linkbox' href="http://www.nevrax.org/free/" TITLE="Rubrique license"><img width=18 height=12 hspace=5 border=0 src=http://www.nevrax.org/inc/img/picto-free.gif ALT=#></A></td><td><a class='linkbox' href="http://www.nevrax.org/free/" TITLE="Free Software">Free software</a></td></tr>
+ </TABLE>
+ </TD></TR></TABLE></TD></TR></TABLE>
+ <!------ End Box ------>
+
+ </TD>
+ <TD WIDTH=15><IMG SRC="http://www.nevrax.org/inc/img/pixel.gif" WIDTH="16" HEIGHT="16" BORDER=0 ALT=""></TD>
+ <TD ALIGN=left valign=top><IMG SRC="http://www.nevrax.org/inc/img/pixel.gif" WIDTH="140" HEIGHT="10" BORDER=0 ALT="">
+
+<!-- title -->
+<TABLE background="http://www.nevrax.org/inc/img/redline.gif" CELLSPACING=0 CELLPADDING=0 BORDER=0 width=100%><tr><td>
+<A HREF="http://www.nevrax.org/cvs/"><img src="http://www.nevrax.org/inc/img/t_cvs.gif" ALT="cvs" HEIGHT=20 BORDER=0></A>
+</td><td><IMG SRC="http://www.nevrax.org/inc/img/pixel.gif" WIDTH="1" HEIGHT="1" BORDER=0 ALT="">
+</td></tr></table>
+
+<!-- title -->
+<table width=100%><tr><td align=left><b> <a href="/cvs/cvsweb.cgi/">Nevrax</a> / <a href="/cvs/cvsweb.cgi/code/">code</a> / <a href="/cvs/cvsweb.cgi/code/nelns/">nelns</a> / <a href="/cvs/cvsweb.cgi/code/nelns/admin_service/">admin_service</a> / admin_service.cfg</b></td><td align=right><b></b></td></TR></TABLE>
+
+<!-- block -->
+<TABLE bgcolor="#dddddd" CELLSPACING=0 CELLPADDING=0 BORDER=0 width=100%><tr><td width=1% valign=middle><img width=6 height=14 hspace=2 vspace=2 src="http://www.nevrax.org/inc/img/reddots.gif"></TD>
+ <TD><B>admin_service.cfg</B></TD>
+ <TD ALIGN=RIGHT> </td>
+</tr></table>
+<P>
+<p>Default branch: MAIN<BR>
+<HR size=1 NOSHADE><P><a NAME="rev1.6"></a><a NAME="HEAD"></a><a NAME="MAIN"></a>
+ Revision <A HREF="admin_service.cfg?rev=1.6&amp;content-type=text/x-cvsweb-markup"><b>1.6</b></A> / (<A HREF="/cvs/cvsweb.cgi/~checkout~/code/nelns/admin_service/admin_service.cfg?rev=1.6&amp;content-type=text/plain" target="cvs_checkout" onClick="window.open('/cvs/cvsweb.cgi/~checkout~/code/nelns/admin_service/admin_service.cfg?rev=1.6&amp;content-type=text/plain','cvs_checkout','resizeable,scrollbars');"><b>download</b></A>) - <a href="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cfg?annotate=1.6">annotate</a> - <A HREF="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cfg?r1=1.6">[select for diffs]</A>
+, <i>Tue Apr 23 15:54:07 2002 UTC</i> (8 weeks, 3 days ago) by <i>lecroart</i>
+<BR>Branch: <b><A HREF="admin_service.cfg?only_with_tag=MAIN">MAIN</A>
+</b>
+<BR>CVS Tags: <b><A HREF="admin_service.cfg?only_with_tag=HEAD">HEAD</A>
+</b><BR>Changes since <b>1.5: +2 -2
+ lines</b><BR>Diff to previous <A HREF="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cfg.diff?r1=1.5&amp;r2=1.6">1.5</A>
+<PRE>
+ADDED: common.cfg
+</PRE>
+<HR size=1 NOSHADE><P><a NAME="rev1.5"></a>
+ Revision <A HREF="admin_service.cfg?rev=1.5&amp;content-type=text/x-cvsweb-markup"><b>1.5</b></A> / (<A HREF="/cvs/cvsweb.cgi/~checkout~/code/nelns/admin_service/admin_service.cfg?rev=1.5&amp;content-type=text/plain" target="cvs_checkout" onClick="window.open('/cvs/cvsweb.cgi/~checkout~/code/nelns/admin_service/admin_service.cfg?rev=1.5&amp;content-type=text/plain','cvs_checkout','resizeable,scrollbars');"><b>download</b></A>) - <a href="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cfg?annotate=1.5">annotate</a> - <A HREF="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cfg?r1=1.5">[select for diffs]</A>
+, <i>Fri Mar 1 10:20:45 2002 UTC</i> (3 months, 3 weeks ago) by <i>lecroart</i>
+<BR>Branch: <b><A HREF="admin_service.cfg?only_with_tag=MAIN">MAIN</A>
+</b>
+<BR>Changes since <b>1.4: +2 -0
+ lines</b><BR>Diff to previous <A HREF="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cfg.diff?r1=1.4&amp;r2=1.5">1.4</A>
+<PRE>
+ADDED: password per shard auth
+</PRE>
+<HR size=1 NOSHADE><P><a NAME="rev1.4"></a>
+ Revision <A HREF="admin_service.cfg?rev=1.4&amp;content-type=text/x-cvsweb-markup"><b>1.4</b></A> / (<A HREF="/cvs/cvsweb.cgi/~checkout~/code/nelns/admin_service/admin_service.cfg?rev=1.4&amp;content-type=text/plain" target="cvs_checkout" onClick="window.open('/cvs/cvsweb.cgi/~checkout~/code/nelns/admin_service/admin_service.cfg?rev=1.4&amp;content-type=text/plain','cvs_checkout','resizeable,scrollbars');"><b>download</b></A>) - <a href="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cfg?annotate=1.4">annotate</a> - <A HREF="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cfg?r1=1.4">[select for diffs]</A>
+, <i>Tue Nov 13 15:13:14 2001 UTC</i> (7 months, 1 week ago) by <i>lecroart</i>
+<BR>Branch: <b><A HREF="admin_service.cfg?only_with_tag=MAIN">MAIN</A>
+</b>
+<BR>Changes since <b>1.3: +3 -6
+ lines</b><BR>Diff to previous <A HREF="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cfg.diff?r1=1.3&amp;r2=1.4">1.3</A>
+<PRE>
+#update cfg
+</PRE>
+<HR size=1 NOSHADE><P><a NAME="rev1.3"></a>
+ Revision <A HREF="admin_service.cfg?rev=1.3&amp;content-type=text/x-cvsweb-markup"><b>1.3</b></A> / (<A HREF="/cvs/cvsweb.cgi/~checkout~/code/nelns/admin_service/admin_service.cfg?rev=1.3&amp;content-type=text/plain" target="cvs_checkout" onClick="window.open('/cvs/cvsweb.cgi/~checkout~/code/nelns/admin_service/admin_service.cfg?rev=1.3&amp;content-type=text/plain','cvs_checkout','resizeable,scrollbars');"><b>download</b></A>) - <a href="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cfg?annotate=1.3">annotate</a> - <A HREF="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cfg?r1=1.3">[select for diffs]</A>
+, <i>Wed Jun 27 08:34:07 2001 UTC</i> (11 months, 3 weeks ago) by <i>lecroart</i>
+<BR>Branch: <b><A HREF="admin_service.cfg?only_with_tag=MAIN">MAIN</A>
+</b>
+<BR>Changes since <b>1.2: +5 -0
+ lines</b><BR>Diff to previous <A HREF="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cfg.diff?r1=1.2&amp;r2=1.3">1.2</A>
+<PRE>
+ADDED: win32 console position
+</PRE>
+<HR size=1 NOSHADE><P><a NAME="rev1.2"></a>
+ Revision <A HREF="admin_service.cfg?rev=1.2&amp;content-type=text/x-cvsweb-markup"><b>1.2</b></A> / (<A HREF="/cvs/cvsweb.cgi/~checkout~/code/nelns/admin_service/admin_service.cfg?rev=1.2&amp;content-type=text/plain" target="cvs_checkout" onClick="window.open('/cvs/cvsweb.cgi/~checkout~/code/nelns/admin_service/admin_service.cfg?rev=1.2&amp;content-type=text/plain','cvs_checkout','resizeable,scrollbars');"><b>download</b></A>) - <a href="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cfg?annotate=1.2">annotate</a> - <A HREF="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cfg?r1=1.2">[select for diffs]</A>
+, <i>Thu Jun 7 16:19:05 2001 UTC</i> (12 months, 2 weeks ago) by <i>lecroart</i>
+<BR>Branch: <b><A HREF="admin_service.cfg?only_with_tag=MAIN">MAIN</A>
+</b>
+<BR>Changes since <b>1.1: +2 -1
+ lines</b><BR>Diff to previous <A HREF="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cfg.diff?r1=1.1&amp;r2=1.2">1.1</A>
+<PRE>
+ADDED: commands system
+</PRE>
+<HR size=1 NOSHADE><P><a NAME="rev1.1"></a>
+ Revision <A HREF="admin_service.cfg?rev=1.1&amp;content-type=text/x-cvsweb-markup"><b>1.1</b></A> / (<A HREF="/cvs/cvsweb.cgi/~checkout~/code/nelns/admin_service/admin_service.cfg?rev=1.1&amp;content-type=text/plain" target="cvs_checkout" onClick="window.open('/cvs/cvsweb.cgi/~checkout~/code/nelns/admin_service/admin_service.cfg?rev=1.1&amp;content-type=text/plain','cvs_checkout','resizeable,scrollbars');"><b>download</b></A>) - <a href="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cfg?annotate=1.1">annotate</a> - <A HREF="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cfg?r1=1.1">[select for diffs]</A>
+, <i>Fri May 18 16:49:42 2001 UTC</i> (13 months ago) by <i>lecroart</i>
+<BR>Branch: <b><A HREF="admin_service.cfg?only_with_tag=MAIN">MAIN</A>
+</b>
+<BR>Diff<PRE>
+ADDED: cfg file for example purpose
+</PRE>
+
+<!-- block -->
+<TABLE bgcolor="#dddddd" CELLSPACING=0 CELLPADDING=0 BORDER=0 width=100%><tr><td width=1% valign=middle><img width=6 height=14 hspace=2 vspace=2 src="http://www.nevrax.org/inc/img/reddots.gif"></TD>
+ <TD><B>Request Diffs</B></TD>
+ <TD ALIGN=RIGHT> </td>
+</tr></table>
+<P>
+<P>
+<FORM METHOD="GET" ACTION="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cfg.diff" NAME="diff_select">
+Diffs between
+<SELECT NAME="r1">
+<OPTION VALUE="text" SELECTED>Use Text Field
+<OPTION VALUE="1:MAIN">MAIN
+<OPTION VALUE="1.6:HEAD">HEAD
+</SELECT>
+<INPUT TYPE="TEXT" SIZE="12" NAME="tr1" VALUE="1.1" onChange='document.diff_select.r1.selectedIndex=0'>
+ and
+<SELECT NAME="r2">
+<OPTION VALUE="text" SELECTED>Use Text Field
+<OPTION VALUE="1:MAIN">MAIN
+<OPTION VALUE="1.6:HEAD">HEAD
+</SELECT>
+<INPUT TYPE="TEXT" SIZE="12" NAME="tr2" VALUE="1.6" onChange='docuement.diff_select.r2.selectedIndex=0'>
+<BR>Type of Diff should be a&nbsp;<SELECT NAME="f">
+<OPTION VALUE=h SELECTED>Colored Diff<OPTION VALUE=H>Long Colored Diff<OPTION VALUE=u>Unidiff<OPTION VALUE=c>Context Diff<OPTION VALUE=s>Side by Side</SELECT><INPUT TYPE=SUBMIT VALUE=" Get Diffs ">
+</FORM>
+
+<!-- block -->
+<TABLE bgcolor="#dddddd" CELLSPACING=0 CELLPADDING=0 BORDER=0 width=100%><tr><td width=1% valign=middle><img width=6 height=14 hspace=2 vspace=2 src="http://www.nevrax.org/inc/img/reddots.gif"></TD>
+ <TD><B>Select branch</B></TD>
+ <TD ALIGN=RIGHT> </td>
+</tr></table>
+<P>
+<P>
+<A name=branch></A>
+<FORM METHOD="GET" ACTION="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cfg">
+View only Branch:
+<SELECT NAME="only_with_tag" onchange="submit()">
+<OPTION VALUE="">Show all branches
+<OPTION>MAIN
+</SELECT>
+<INPUT TYPE=SUBMIT VALUE=" View Branch ">
+</FORM>
+<A name=logsort></A>
+<FORM METHOD="GET" ACTION="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cfg">
+Sort log by:
+<SELECT NAME="logsort" onchange="submit()">
+<OPTION VALUE=cvs>Not sorted<OPTION VALUE=date SELECTED>Commit date<OPTION VALUE=rev>Revision</SELECT>
+<INPUT TYPE=SUBMIT VALUE=" Sort ">
+</FORM>
+
+<!-- footer -->
+<BR><FONT Size=+5>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </FONT>
+</TD>
+<TD WIDTH=15><IMG SRC=http://www.nevrax.org/inc/img/pixel.gif WIDTH=15 HEIGHT=15 BORDER=0 ALT=""></TD>
+</TR>
+</TABLE>
+</BODY>
+</HTML></BODY></HTML>
diff --git a/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cfg.diff?r1=1.5&r2=1.6 b/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cfg.diff?r1=1.5&r2=1.6
new file mode 100644
index 00000000..3e77ebfd
--- /dev/null
+++ b/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cfg.diff?r1=1.5&r2=1.6
@@ -0,0 +1,35 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"><HTML>
+<HEAD><style> A { color:black }</style>
+<!-- hennerik CVSweb $Revision: 1.93 $ -->
+<TITLE>code/nelns/admin_service/admin_service.cfg - diff - 1.6</TITLE></HEAD>
+<BODY BGCOLOR="#eeeeee">
+<table width="100%" border=0 cellspacing=0 cellpadding=1 bgcolor="#aaaaaa"><tr valign=bottom><td><a href="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cfg"><IMG SRC="http://www.nevrax.org/inc/img/picto-up.gif" ALT="[BACK]" BORDER="0" WIDTH="14" HEIGHT="13"></a> <b>Return to <A HREF="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cfg">admin_service.cfg</A>
+ CVS log</b> <IMG SRC="http://www.nevrax.org/inc/img/picto-news.gif" ALT="[TXT]" BORDER="0" WIDTH="13" HEIGHT="15"></td><td align=right><IMG SRC="http://www.nevrax.org/inc/img/picto-dir.gif" ALT="[DIR]" BORDER="0" WIDTH="15" HEIGHT="13"> <b>Up to <a href="/cvs/cvsweb.cgi/">Nevrax</a> / <a href="/cvs/cvsweb.cgi/code/">code</a> / <a href="/cvs/cvsweb.cgi/code/nelns/">nelns</a> / <a href="/cvs/cvsweb.cgi/code/nelns/admin_service/">admin_service</a></b></td></tr></table><h3 align=center>Diff for /code/nelns/admin_service/admin_service.cfg between version 1.5 and 1.6</h3>
+<table border=0 cellspacing=0 cellpadding=0 width="100%">
+<tr bgcolor="#ffffff">
+<th width="50%" valign=TOP>version 1.5, 2002/03/01 10:20:45</th>
+<th width="50%" valign=TOP>version 1.6, 2002/04/23 15:54:07</th>
+<tr bgcolor="#dddddd"><td width="50%"><table width="100%" border=1 cellpadding=5><tr><td><b>Line 1</b>&nbsp;<font size=-1></font></td></tr></table></td><td width="50%"><table width="100%" border=1 cellpadding=5><tr><td><b>Line 1</b>&nbsp;<font size=-1></font></td></tr></table></td>
+<tr><td bgcolor="#cccccc">&nbsp;</td><td bgcolor="#ccccff"><font face="Helvetica,Arial" size="-1">&nbsp;// link the common configuration file</font></td></tr>
+<tr><td bgcolor="#cccccc">&nbsp;</td><td bgcolor="#ccccff"><font face="Helvetica,Arial" size="-1">&nbsp;RootConfigFilename = &quot;common.cfg&quot;;</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp;</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp;</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp;// ip address of all servers where the AS find a AES. the AES port is always 49997</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp;// ip address of all servers where the AS find a AES. the AES port is always 49997</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp;</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp;</font></td></tr>
+<tr bgcolor="#dddddd"><td width="50%"><table width="100%" border=1 cellpadding=5><tr><td><b>Line 13</b>&nbsp;<font size=-1></font></td></tr></table></td><td width="50%"><table width="100%" border=1 cellpadding=5><tr><td><b>Line 15</b>&nbsp;<font size=-1></font></td></tr></table></td>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp;&quot;S1&quot;, &quot;LS&quot;,</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp;&quot;S1&quot;, &quot;LS&quot;,</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp;&quot;S1&quot;, &quot;WS&quot;,</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp;&quot;S1&quot;, &quot;WS&quot;,</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp;};</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp;};</font></td></tr>
+<tr><td bgcolor="#ff9999"><font face="Helvetica,Arial" size="-1">&nbsp;</font></td><td bgcolor="#cccccc">&nbsp;</td></tr>
+<tr><td bgcolor="#ff9999"><font face="Helvetica,Arial" size="-1">&nbsp;WindowStyle = &quot;WIN&quot;;</font></td><td bgcolor="#cccccc">&nbsp;</td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp;</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp;</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp;Password = &quot;toto&quot;;</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp;Password = &quot;toto&quot;;</font></td></tr>
+</table><br><hr noshade width="100%">
+<table border=0><tr><td><table border=1><tr><td>Legend:<br><table border=0 cellspacing=0 cellpadding=1>
+<tr><td align=center bgcolor="#ff9999">Removed from v.1.5</td><td bgcolor="#cccccc">&nbsp;</td></tr><tr bgcolor="#99ff99"><td align=center colspan=2>changed lines</td></tr><tr><td bgcolor="#cccccc">&nbsp;</td><td align=center bgcolor="#ccccff">Added in v.1.6</td></tr></table></td></tr></table>
+<td><FORM METHOD="GET" ACTION="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cfg.diff">
+<INPUT TYPE=HIDDEN NAME="r1" VALUE="1.5">
+<INPUT TYPE=HIDDEN NAME="r2" VALUE="1.6">
+<SELECT NAME="f" onchange="submit()">
+<OPTION VALUE=h SELECTED>Colored Diff<OPTION VALUE=H>Long Colored Diff<OPTION VALUE=u>Unidiff<OPTION VALUE=c>Context Diff<OPTION VALUE=s>Side by Side</SELECT><INPUT TYPE=SUBMIT VALUE="Show">
+</FORM>
+</td></tr></table> \ No newline at end of file
diff --git a/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cfg?annotate=1.2 b/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cfg?annotate=1.2
new file mode 100644
index 00000000..41581795
--- /dev/null
+++ b/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cfg?annotate=1.2
@@ -0,0 +1,76 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"><HTML>
+<HEAD><style> A { color:black }</style>
+<!-- hennerik CVSweb $Revision: 1.93 $ -->
+<TITLE>code/nelns/admin_service/admin_service.cfg - annotate - 1.2</TITLE></HEAD>
+<BODY BGCOLOR="#eeeeee">
+<table width="100%" border=0 cellspacing=0 cellpadding=1 bgcolor="#aaaaaa"><tr valign=bottom><td><a href="admin_service.cfg"><IMG SRC="http://www.nevrax.org/inc/img/picto-up.gif" ALT="[BACK]" BORDER="0" WIDTH="14" HEIGHT="13"></a> <b>Return to <A HREF="admin_service.cfg">admin_service.cfg</A>
+ CVS log</b> <IMG SRC="http://www.nevrax.org/inc/img/picto-news.gif" ALT="[TXT]" BORDER="0" WIDTH="13" HEIGHT="15"></td><td align=right><IMG SRC="http://www.nevrax.org/inc/img/picto-dir.gif" ALT="[DIR]" BORDER="0" WIDTH="15" HEIGHT="13"> <b>Up to <a href="/cvs/cvsweb.cgi/">Nevrax</a> / <a href="/cvs/cvsweb.cgi/code/">code</a> / <a href="/cvs/cvsweb.cgi/code/nelns/">nelns</a> / <a href="/cvs/cvsweb.cgi/code/nelns/admin_service/">admin_service</a></b></td></tr></table><h3 align=center>Annotation of code/nelns/admin_service/admin_service.cfg, Revision 1.2</h3>
+<pre>Status: 500 Internal Error
+Content-type: text/html
+
+<!doctype html public "-//W3C//DTD HTML 4.0 Transitional//EN" "http://www.w3.org/TR/REC-html40/loose.dtd">
+<HTML>
+<HEAD>
+ <TITLE>nevrax.org : cvs</TITLE>
+ <META name="keywords" content="freesoftware,nel,newt,snowballs,richard stallman,GNU,Multi-User Online World">
+
+ <LINK REL=stylesheet TYPE="text/css" HREF="http://www.nevrax.org/inc/css/nevrax.css">
+</HEAD>
+<BODY MARGINHEIGHT="0" MARGINWIDTH="0">
+
+<!-- uplinks -->
+<TABLE CELLSPACING=0 CELLPADDING=0 BORDER=0>
+ <TR>
+ <TD WIDTH=16><IMG SRC="http://www.nevrax.org/inc/img/pixel.gif" WIDTH="16" HEIGHT="16" BORDER=0 ALT=""></TD>
+ <TD WIDTH=140 BGCOLOR=#dddddd><IMG SRC="http://www.nevrax.org/inc/img/pixel.gif" WIDTH="140" HEIGHT="16" BORDER=0 ALT=""></TD>
+ <TD WIDTH=16><IMG SRC="http://www.nevrax.org/inc/img/pixel.gif" WIDTH="16" HEIGHT="16" BORDER=0 ALT=""></TD>
+ <TD><IMG width=6 height=14 SRC="http://www.nevrax.org/inc/img/reddots.gif" ALT="#" VSPACE=2 HSPACE=2 BORDER=0 ></TD><TD VALIGN=middle>&nbsp;<A CLASS=uplinks HREF=http://www.nevrax.org><b>Home</B></FONT></A>&nbsp;&nbsp;&nbsp;</TD>
+ <TD><IMG width=6 height=14 SRC="http://www.nevrax.org/inc/img/reddots.gif" ALT="#" VSPACE=2 HSPACE=2 BORDER=0 ></TD><TD VALIGN=middle>&nbsp;<A CLASS=uplinks HREF=http://www.nevrax.com><b>nevrax.com</B></FONT></A>&nbsp;&nbsp;&nbsp;</TD>
+ </TR>
+</TABLE>
+
+<!-- banner Nevrax -->
+<TABLE CELLSPACING=0 CELLPADDING=0 BORDER=0 WIDTH=100%>
+ <TR><TD BGCOLOR="#000000" BACKGROUND="http://www.nevrax.org/inc/img/black_banner.jpg"><A HREF="http://www.nevrax.org"><IMG SRC="http://www.nevrax.org/inc/img/nevrax.gif" WIDTH="170" HEIGHT="45" BORDER=0 ALT="Nevrax" ></A></TD></TR>
+</TABLE>
+
+<!-- main table -->
+<TABLE CELLSPACING=0 CELLPADDING=0 BORDER=0 height=100%>
+ <TR>
+ <TD WIDTH=16><IMG SRC="http://www.nevrax.org/inc/img/pixel.gif" WIDTH="16" HEIGHT="10" BORDER=0 ALT=""></TD>
+ <TD WIDTH=140 BGCOLOR=#dddddd VALIGN=TOP ALIGN=middle><IMG SRC="http://www.nevrax.org/inc/img/pixel.gif" WIDTH="140" HEIGHT="10" BORDER=0 ALT="">
+
+ <!------ Begin Box ------>
+ <TABLE BORDER=0 CELLSPACING=0 CELLPADDING=0 BGCOLOR=black><TR><TD><TABLE border=0 cellspacing=2 cellpadding=0 width=120><tr><TD ALIGN=middle bgcolor=black>
+ <FONT COLOR=white FACE="sans-serif"><B>Nevrax.org</B></FONT></TD></TR><tr><td colspan=2 bgcolor=#FFFFFF>
+ <TABLE cellspacing=0 cellpadding=1 border=0>
+ <tr><td ALIGN=middle><a class='linkbox' href="http://www.nevrax.org/news/" TITLE="Rubrique news"><img width=13 height=15 hspace=5 border=0 src=http://www.nevrax.org/inc/img/picto-news.gif ALT=#></A></td><td><a class='linkbox' href="http://www.nevrax.org/news/" TITLE="News">News</a></td></tr>
+ <tr><td ALIGN=middle><a class='linkbox' href="http://www.nevrax.org/mail/" TITLE="Rubrique mail"><img width=15 height=11 hspace=5 border=0 src=http://www.nevrax.org/inc/img/picto-mail.gif ALT=#></A></td><td><a class='linkbox' href="http://www.nevrax.org/mail/" TITLE="Mailing list archive">Mailing-list</a></td></tr>
+ <tr><td ALIGN=middle><a class='linkbox' href="http://www.nevrax.org/docs/" TITLE="Rubrique docs"><img width=14 height=16 hspace=5 border=0 src=http://www.nevrax.org/inc/img/picto-docs.gif ALT=#></A></td><td><a class='linkbox' href="http://www.nevrax.org/docs/" TITLE="Documentation">Documentation</a></td></tr>
+ <tr><td ALIGN=middle><a class='linkbox' href="http://www.nevrax.org/cvs/" TITLE="Rubrique cvs"><img width=13 height=17 hspace=5 border=0 src=http://www.nevrax.org/inc/img/picto-cvs.gif ALT=#></A></td><td><a class='linkbox' href="http://www.nevrax.org/cvs/" TITLE="CVS Web">CVS</a></td></tr>
+ <tr><td ALIGN=middle><a class='linkbox' href="http://www.nevrax.org/bugs/" TITLE="Rubrique bugs"><img width=20 height=16 hspace=5 border=0 src=http://www.nevrax.org/inc/img/picto-bugs.gif ALT=#></A></td><td><a class='linkbox' href="http://www.nevrax.org/bugs/" TITLE="Bugtracking">Bugs</a></td></tr>
+ <tr><td ALIGN=middle><a class='linkbox' href="http://www.nevrax.org/free/" TITLE="Rubrique license"><img width=18 height=12 hspace=5 border=0 src=http://www.nevrax.org/inc/img/picto-free.gif ALT=#></A></td><td><a class='linkbox' href="http://www.nevrax.org/free/" TITLE="Free Software">Free software</a></td></tr>
+ </TABLE>
+ </TD></TR></TABLE></TD></TR></TABLE>
+ <!------ End Box ------>
+
+ </TD>
+ <TD WIDTH=15><IMG SRC="http://www.nevrax.org/inc/img/pixel.gif" WIDTH="16" HEIGHT="16" BORDER=0 ALT=""></TD>
+ <TD ALIGN=left valign=top><IMG SRC="http://www.nevrax.org/inc/img/pixel.gif" WIDTH="140" HEIGHT="10" BORDER=0 ALT="">
+
+<!-- title -->
+<TABLE background="http://www.nevrax.org/inc/img/redline.gif" CELLSPACING=0 CELLPADDING=0 BORDER=0 width=100%><tr><td>
+<A HREF="http://www.nevrax.org/cvs/"><img src="http://www.nevrax.org/inc/img/t_cvs.gif" ALT="cvs" HEIGHT=20 BORDER=0></A>
+</td><td><IMG SRC="http://www.nevrax.org/inc/img/pixel.gif" WIDTH="1" HEIGHT="1" BORDER=0 ALT="">
+</td></tr></table>
+Error: Error occured during annotate: <b>error
+</b>
+
+<!-- footer -->
+<BR><FONT Size=+5>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </FONT>
+</TD>
+<TD WIDTH=15><IMG SRC=http://www.nevrax.org/inc/img/pixel.gif WIDTH=15 HEIGHT=15 BORDER=0 ALT=""></TD>
+</TR>
+</TABLE>
+</BODY>
+</HTML> \ No newline at end of file
diff --git a/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cfg?only_with_tag=MAIN b/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cfg?only_with_tag=MAIN
new file mode 100644
index 00000000..71841857
--- /dev/null
+++ b/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cfg?only_with_tag=MAIN
@@ -0,0 +1,186 @@
+<!doctype html public "-//W3C//DTD HTML 4.0 Transitional//EN" "http://www.w3.org/TR/REC-html40/loose.dtd">
+<HTML>
+<HEAD>
+ <TITLE>nevrax.org : cvs</TITLE>
+ <META name="keywords" content="freesoftware,nel,newt,snowballs,richard stallman,GNU,Multi-User Online World">
+
+ <LINK REL=stylesheet TYPE="text/css" HREF="http://www.nevrax.org/inc/css/nevrax.css">
+</HEAD>
+<BODY MARGINHEIGHT="0" MARGINWIDTH="0">
+
+<!-- uplinks -->
+<TABLE CELLSPACING=0 CELLPADDING=0 BORDER=0>
+ <TR>
+ <TD WIDTH=16><IMG SRC="http://www.nevrax.org/inc/img/pixel.gif" WIDTH="16" HEIGHT="16" BORDER=0 ALT=""></TD>
+ <TD WIDTH=140 BGCOLOR=#dddddd><IMG SRC="http://www.nevrax.org/inc/img/pixel.gif" WIDTH="140" HEIGHT="16" BORDER=0 ALT=""></TD>
+ <TD WIDTH=16><IMG SRC="http://www.nevrax.org/inc/img/pixel.gif" WIDTH="16" HEIGHT="16" BORDER=0 ALT=""></TD>
+ <TD><IMG width=6 height=14 SRC="http://www.nevrax.org/inc/img/reddots.gif" ALT="#" VSPACE=2 HSPACE=2 BORDER=0 ></TD><TD VALIGN=middle>&nbsp;<A CLASS=uplinks HREF=http://www.nevrax.org><b>Home</B></FONT></A>&nbsp;&nbsp;&nbsp;</TD>
+ <TD><IMG width=6 height=14 SRC="http://www.nevrax.org/inc/img/reddots.gif" ALT="#" VSPACE=2 HSPACE=2 BORDER=0 ></TD><TD VALIGN=middle>&nbsp;<A CLASS=uplinks HREF=http://www.nevrax.com><b>nevrax.com</B></FONT></A>&nbsp;&nbsp;&nbsp;</TD>
+ </TR>
+</TABLE>
+
+<!-- banner Nevrax -->
+<TABLE CELLSPACING=0 CELLPADDING=0 BORDER=0 WIDTH=100%>
+ <TR><TD BGCOLOR="#000000" BACKGROUND="http://www.nevrax.org/inc/img/black_banner.jpg"><A HREF="http://www.nevrax.org"><IMG SRC="http://www.nevrax.org/inc/img/nevrax.gif" WIDTH="170" HEIGHT="45" BORDER=0 ALT="Nevrax" ></A></TD></TR>
+</TABLE>
+
+<!-- main table -->
+<TABLE CELLSPACING=0 CELLPADDING=0 BORDER=0 height=100%>
+ <TR>
+ <TD WIDTH=16><IMG SRC="http://www.nevrax.org/inc/img/pixel.gif" WIDTH="16" HEIGHT="10" BORDER=0 ALT=""></TD>
+ <TD WIDTH=140 BGCOLOR=#dddddd VALIGN=TOP ALIGN=middle><IMG SRC="http://www.nevrax.org/inc/img/pixel.gif" WIDTH="140" HEIGHT="10" BORDER=0 ALT="">
+
+ <!------ Begin Box ------>
+ <TABLE BORDER=0 CELLSPACING=0 CELLPADDING=0 BGCOLOR=black><TR><TD><TABLE border=0 cellspacing=2 cellpadding=0 width=120><tr><TD ALIGN=middle bgcolor=black>
+ <FONT COLOR=white FACE="sans-serif"><B>Nevrax.org</B></FONT></TD></TR><tr><td colspan=2 bgcolor=#FFFFFF>
+ <TABLE cellspacing=0 cellpadding=1 border=0>
+ <tr><td ALIGN=middle><a class='linkbox' href="http://www.nevrax.org/news/" TITLE="Rubrique news"><img width=13 height=15 hspace=5 border=0 src=http://www.nevrax.org/inc/img/picto-news.gif ALT=#></A></td><td><a class='linkbox' href="http://www.nevrax.org/news/" TITLE="News">News</a></td></tr>
+ <tr><td ALIGN=middle><a class='linkbox' href="http://www.nevrax.org/mail/" TITLE="Rubrique mail"><img width=15 height=11 hspace=5 border=0 src=http://www.nevrax.org/inc/img/picto-mail.gif ALT=#></A></td><td><a class='linkbox' href="http://www.nevrax.org/mail/" TITLE="Mailing list archive">Mailing-list</a></td></tr>
+ <tr><td ALIGN=middle><a class='linkbox' href="http://www.nevrax.org/docs/" TITLE="Rubrique docs"><img width=14 height=16 hspace=5 border=0 src=http://www.nevrax.org/inc/img/picto-docs.gif ALT=#></A></td><td><a class='linkbox' href="http://www.nevrax.org/docs/" TITLE="Documentation">Documentation</a></td></tr>
+ <tr><td ALIGN=middle><a class='linkbox' href="http://www.nevrax.org/cvs/" TITLE="Rubrique cvs"><img width=13 height=17 hspace=5 border=0 src=http://www.nevrax.org/inc/img/picto-cvs.gif ALT=#></A></td><td><a class='linkbox' href="http://www.nevrax.org/cvs/" TITLE="CVS Web">CVS</a></td></tr>
+ <tr><td ALIGN=middle><a class='linkbox' href="http://www.nevrax.org/bugs/" TITLE="Rubrique bugs"><img width=20 height=16 hspace=5 border=0 src=http://www.nevrax.org/inc/img/picto-bugs.gif ALT=#></A></td><td><a class='linkbox' href="http://www.nevrax.org/bugs/" TITLE="Bugtracking">Bugs</a></td></tr>
+ <tr><td ALIGN=middle><a class='linkbox' href="http://www.nevrax.org/free/" TITLE="Rubrique license"><img width=18 height=12 hspace=5 border=0 src=http://www.nevrax.org/inc/img/picto-free.gif ALT=#></A></td><td><a class='linkbox' href="http://www.nevrax.org/free/" TITLE="Free Software">Free software</a></td></tr>
+ </TABLE>
+ </TD></TR></TABLE></TD></TR></TABLE>
+ <!------ End Box ------>
+
+ </TD>
+ <TD WIDTH=15><IMG SRC="http://www.nevrax.org/inc/img/pixel.gif" WIDTH="16" HEIGHT="16" BORDER=0 ALT=""></TD>
+ <TD ALIGN=left valign=top><IMG SRC="http://www.nevrax.org/inc/img/pixel.gif" WIDTH="140" HEIGHT="10" BORDER=0 ALT="">
+
+<!-- title -->
+<TABLE background="http://www.nevrax.org/inc/img/redline.gif" CELLSPACING=0 CELLPADDING=0 BORDER=0 width=100%><tr><td>
+<A HREF="http://www.nevrax.org/cvs/"><img src="http://www.nevrax.org/inc/img/t_cvs.gif" ALT="cvs" HEIGHT=20 BORDER=0></A>
+</td><td><IMG SRC="http://www.nevrax.org/inc/img/pixel.gif" WIDTH="1" HEIGHT="1" BORDER=0 ALT="">
+</td></tr></table>
+
+<!-- title -->
+<table width=100%><tr><td align=left><b> <a href="/cvs/cvsweb.cgi/?only_with_tag=MAIN">Nevrax</a> / <a href="/cvs/cvsweb.cgi/code/?only_with_tag=MAIN">code</a> / <a href="/cvs/cvsweb.cgi/code/nelns/?only_with_tag=MAIN">nelns</a> / <a href="/cvs/cvsweb.cgi/code/nelns/admin_service/?only_with_tag=MAIN">admin_service</a> / admin_service.cfg</b></td><td align=right><b></b></td></TR></TABLE>
+
+<!-- block -->
+<TABLE bgcolor="#dddddd" CELLSPACING=0 CELLPADDING=0 BORDER=0 width=100%><tr><td width=1% valign=middle><img width=6 height=14 hspace=2 vspace=2 src="http://www.nevrax.org/inc/img/reddots.gif"></TD>
+ <TD><B>admin_service.cfg</B></TD>
+ <TD ALIGN=RIGHT> </td>
+</tr></table>
+<P>
+<p>Default branch: MAIN<BR>
+Current tag: MAIN<BR>
+<HR size=1 NOSHADE><P><a NAME="rev1.6"></a><a NAME="HEAD"></a><a NAME="MAIN"></a>
+ Revision <A HREF="admin_service.cfg?rev=1.6&amp;content-type=text/x-cvsweb-markup&amp;only_with_tag=MAIN"><b>1.6</b></A> / (<A HREF="/cvs/cvsweb.cgi/~checkout~/code/nelns/admin_service/admin_service.cfg?rev=1.6&amp;content-type=text/plain&amp;only_with_tag=MAIN" target="cvs_checkout" onClick="window.open('/cvs/cvsweb.cgi/~checkout~/code/nelns/admin_service/admin_service.cfg?rev=1.6&amp;content-type=text/plain','cvs_checkout','resizeable,scrollbars');"><b>download</b></A>) - <a href="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cfg?annotate=1.6&amp;only_with_tag=MAIN">annotate</a> - <A HREF="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cfg?r1=1.6&amp;only_with_tag=MAIN">[select for diffs]</A>
+, <i>Tue Apr 23 15:54:07 2002 UTC</i> (3 months ago) by <i>lecroart</i>
+<BR>Branch: <b><A HREF="admin_service.cfg?only_with_tag=MAIN">MAIN</A>
+</b>
+<BR>CVS Tags: <b><A HREF="admin_service.cfg?only_with_tag=HEAD">HEAD</A>
+</b><BR>Changes since <b>1.5: +2 -2
+ lines</b><BR>Diff to previous <A HREF="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cfg.diff?r1=1.5&amp;r2=1.6&amp;only_with_tag=MAIN">1.5</A>
+<PRE>
+ADDED: common.cfg
+</PRE>
+<HR size=1 NOSHADE><P><a NAME="rev1.5"></a>
+ Revision <A HREF="admin_service.cfg?rev=1.5&amp;content-type=text/x-cvsweb-markup&amp;only_with_tag=MAIN"><b>1.5</b></A> / (<A HREF="/cvs/cvsweb.cgi/~checkout~/code/nelns/admin_service/admin_service.cfg?rev=1.5&amp;content-type=text/plain&amp;only_with_tag=MAIN" target="cvs_checkout" onClick="window.open('/cvs/cvsweb.cgi/~checkout~/code/nelns/admin_service/admin_service.cfg?rev=1.5&amp;content-type=text/plain','cvs_checkout','resizeable,scrollbars');"><b>download</b></A>) - <a href="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cfg?annotate=1.5&amp;only_with_tag=MAIN">annotate</a> - <A HREF="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cfg?r1=1.5&amp;only_with_tag=MAIN">[select for diffs]</A>
+, <i>Fri Mar 1 10:20:45 2002 UTC</i> (4 months, 3 weeks ago) by <i>lecroart</i>
+<BR>Branch: <b><A HREF="admin_service.cfg?only_with_tag=MAIN">MAIN</A>
+</b>
+<BR>Changes since <b>1.4: +2 -0
+ lines</b><BR>Diff to previous <A HREF="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cfg.diff?r1=1.4&amp;r2=1.5&amp;only_with_tag=MAIN">1.4</A>
+<PRE>
+ADDED: password per shard auth
+</PRE>
+<HR size=1 NOSHADE><P><a NAME="rev1.4"></a>
+ Revision <A HREF="admin_service.cfg?rev=1.4&amp;content-type=text/x-cvsweb-markup&amp;only_with_tag=MAIN"><b>1.4</b></A> / (<A HREF="/cvs/cvsweb.cgi/~checkout~/code/nelns/admin_service/admin_service.cfg?rev=1.4&amp;content-type=text/plain&amp;only_with_tag=MAIN" target="cvs_checkout" onClick="window.open('/cvs/cvsweb.cgi/~checkout~/code/nelns/admin_service/admin_service.cfg?rev=1.4&amp;content-type=text/plain','cvs_checkout','resizeable,scrollbars');"><b>download</b></A>) - <a href="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cfg?annotate=1.4&amp;only_with_tag=MAIN">annotate</a> - <A HREF="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cfg?r1=1.4&amp;only_with_tag=MAIN">[select for diffs]</A>
+, <i>Tue Nov 13 15:13:14 2001 UTC</i> (8 months, 1 week ago) by <i>lecroart</i>
+<BR>Branch: <b><A HREF="admin_service.cfg?only_with_tag=MAIN">MAIN</A>
+</b>
+<BR>Changes since <b>1.3: +3 -6
+ lines</b><BR>Diff to previous <A HREF="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cfg.diff?r1=1.3&amp;r2=1.4&amp;only_with_tag=MAIN">1.3</A>
+<PRE>
+#update cfg
+</PRE>
+<HR size=1 NOSHADE><P><a NAME="rev1.3"></a>
+ Revision <A HREF="admin_service.cfg?rev=1.3&amp;content-type=text/x-cvsweb-markup&amp;only_with_tag=MAIN"><b>1.3</b></A> / (<A HREF="/cvs/cvsweb.cgi/~checkout~/code/nelns/admin_service/admin_service.cfg?rev=1.3&amp;content-type=text/plain&amp;only_with_tag=MAIN" target="cvs_checkout" onClick="window.open('/cvs/cvsweb.cgi/~checkout~/code/nelns/admin_service/admin_service.cfg?rev=1.3&amp;content-type=text/plain','cvs_checkout','resizeable,scrollbars');"><b>download</b></A>) - <a href="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cfg?annotate=1.3&amp;only_with_tag=MAIN">annotate</a> - <A HREF="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cfg?r1=1.3&amp;only_with_tag=MAIN">[select for diffs]</A>
+, <i>Wed Jun 27 08:34:07 2001 UTC</i> (12 months, 3 weeks ago) by <i>lecroart</i>
+<BR>Branch: <b><A HREF="admin_service.cfg?only_with_tag=MAIN">MAIN</A>
+</b>
+<BR>Changes since <b>1.2: +5 -0
+ lines</b><BR>Diff to previous <A HREF="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cfg.diff?r1=1.2&amp;r2=1.3&amp;only_with_tag=MAIN">1.2</A>
+<PRE>
+ADDED: win32 console position
+</PRE>
+<HR size=1 NOSHADE><P><a NAME="rev1.2"></a>
+ Revision <A HREF="admin_service.cfg?rev=1.2&amp;content-type=text/x-cvsweb-markup&amp;only_with_tag=MAIN"><b>1.2</b></A> / (<A HREF="/cvs/cvsweb.cgi/~checkout~/code/nelns/admin_service/admin_service.cfg?rev=1.2&amp;content-type=text/plain&amp;only_with_tag=MAIN" target="cvs_checkout" onClick="window.open('/cvs/cvsweb.cgi/~checkout~/code/nelns/admin_service/admin_service.cfg?rev=1.2&amp;content-type=text/plain','cvs_checkout','resizeable,scrollbars');"><b>download</b></A>) - <a href="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cfg?annotate=1.2&amp;only_with_tag=MAIN">annotate</a> - <A HREF="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cfg?r1=1.2&amp;only_with_tag=MAIN">[select for diffs]</A>
+, <i>Thu Jun 7 16:19:05 2001 UTC</i> (13 months, 2 weeks ago) by <i>lecroart</i>
+<BR>Branch: <b><A HREF="admin_service.cfg?only_with_tag=MAIN">MAIN</A>
+</b>
+<BR>Changes since <b>1.1: +2 -1
+ lines</b><BR>Diff to previous <A HREF="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cfg.diff?r1=1.1&amp;r2=1.2&amp;only_with_tag=MAIN">1.1</A>
+<PRE>
+ADDED: commands system
+</PRE>
+<HR size=1 NOSHADE><P><a NAME="rev1.1"></a>
+ Revision <A HREF="admin_service.cfg?rev=1.1&amp;content-type=text/x-cvsweb-markup&amp;only_with_tag=MAIN"><b>1.1</b></A> / (<A HREF="/cvs/cvsweb.cgi/~checkout~/code/nelns/admin_service/admin_service.cfg?rev=1.1&amp;content-type=text/plain&amp;only_with_tag=MAIN" target="cvs_checkout" onClick="window.open('/cvs/cvsweb.cgi/~checkout~/code/nelns/admin_service/admin_service.cfg?rev=1.1&amp;content-type=text/plain','cvs_checkout','resizeable,scrollbars');"><b>download</b></A>) - <a href="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cfg?annotate=1.1&amp;only_with_tag=MAIN">annotate</a> - <A HREF="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cfg?r1=1.1&amp;only_with_tag=MAIN">[select for diffs]</A>
+, <i>Fri May 18 16:49:42 2001 UTC</i> (14 months ago) by <i>lecroart</i>
+<BR>Branch: <b><A HREF="admin_service.cfg?only_with_tag=MAIN">MAIN</A>
+</b>
+<BR>Diff<PRE>
+ADDED: cfg file for example purpose
+</PRE>
+
+<!-- block -->
+<TABLE bgcolor="#dddddd" CELLSPACING=0 CELLPADDING=0 BORDER=0 width=100%><tr><td width=1% valign=middle><img width=6 height=14 hspace=2 vspace=2 src="http://www.nevrax.org/inc/img/reddots.gif"></TD>
+ <TD><B>Request Diffs</B></TD>
+ <TD ALIGN=RIGHT> </td>
+</tr></table>
+<P>
+<P>
+<FORM METHOD="GET" ACTION="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cfg.diff" NAME="diff_select">
+<INPUT TYPE=HIDDEN NAME="only_with_tag" VALUE="MAIN">
+Diffs between
+<SELECT NAME="r1">
+<OPTION VALUE="text" SELECTED>Use Text Field
+<OPTION VALUE="1:MAIN">MAIN
+<OPTION VALUE="1.6:HEAD">HEAD
+</SELECT>
+<INPUT TYPE="TEXT" SIZE="12" NAME="tr1" VALUE="1.1" onChange='document.diff_select.r1.selectedIndex=0'>
+ and
+<SELECT NAME="r2">
+<OPTION VALUE="text" SELECTED>Use Text Field
+<OPTION VALUE="1:MAIN">MAIN
+<OPTION VALUE="1.6:HEAD">HEAD
+</SELECT>
+<INPUT TYPE="TEXT" SIZE="12" NAME="tr2" VALUE="1.6" onChange='docuement.diff_select.r2.selectedIndex=0'>
+<BR>Type of Diff should be a&nbsp;<SELECT NAME="f">
+<OPTION VALUE=h SELECTED>Colored Diff<OPTION VALUE=H>Long Colored Diff<OPTION VALUE=u>Unidiff<OPTION VALUE=c>Context Diff<OPTION VALUE=s>Side by Side</SELECT><INPUT TYPE=SUBMIT VALUE=" Get Diffs ">
+</FORM>
+
+<!-- block -->
+<TABLE bgcolor="#dddddd" CELLSPACING=0 CELLPADDING=0 BORDER=0 width=100%><tr><td width=1% valign=middle><img width=6 height=14 hspace=2 vspace=2 src="http://www.nevrax.org/inc/img/reddots.gif"></TD>
+ <TD><B>Select branch</B></TD>
+ <TD ALIGN=RIGHT> </td>
+</tr></table>
+<P>
+<P>
+<A name=branch></A>
+<FORM METHOD="GET" ACTION="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cfg">
+View only Branch:
+<SELECT NAME="only_with_tag" onchange="submit()">
+<OPTION VALUE="">Show all branches
+<OPTION SELECTED>MAIN
+</SELECT>
+<INPUT TYPE=SUBMIT VALUE=" View Branch ">
+</FORM>
+<A name=logsort></A>
+<FORM METHOD="GET" ACTION="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cfg">
+Sort log by:
+<SELECT NAME="logsort" onchange="submit()">
+<OPTION VALUE=cvs>Not sorted<OPTION VALUE=date SELECTED>Commit date<OPTION VALUE=rev>Revision</SELECT>
+<INPUT TYPE=SUBMIT VALUE=" Sort ">
+</FORM>
+
+<!-- footer -->
+<BR><FONT Size=+5>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </FONT>
+</TD>
+<TD WIDTH=15><IMG SRC=http://www.nevrax.org/inc/img/pixel.gif WIDTH=15 HEIGHT=15 BORDER=0 ALT=""></TD>
+</TR>
+</TABLE>
+</BODY>
+</HTML></BODY></HTML>
diff --git a/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cfg?r1=1.1 b/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cfg?r1=1.1
new file mode 100644
index 00000000..7bab24fd
--- /dev/null
+++ b/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cfg?r1=1.1
@@ -0,0 +1,187 @@
+<!doctype html public "-//W3C//DTD HTML 4.0 Transitional//EN" "http://www.w3.org/TR/REC-html40/loose.dtd">
+<HTML>
+<HEAD>
+ <TITLE>nevrax.org : cvs</TITLE>
+ <META name="keywords" content="freesoftware,nel,newt,snowballs,richard stallman,GNU,Multi-User Online World">
+
+ <LINK REL=stylesheet TYPE="text/css" HREF="http://www.nevrax.org/inc/css/nevrax.css">
+</HEAD>
+<BODY MARGINHEIGHT="0" MARGINWIDTH="0">
+
+<!-- uplinks -->
+<TABLE CELLSPACING=0 CELLPADDING=0 BORDER=0>
+ <TR>
+ <TD WIDTH=16><IMG SRC="http://www.nevrax.org/inc/img/pixel.gif" WIDTH="16" HEIGHT="16" BORDER=0 ALT=""></TD>
+ <TD WIDTH=140 BGCOLOR=#dddddd><IMG SRC="http://www.nevrax.org/inc/img/pixel.gif" WIDTH="140" HEIGHT="16" BORDER=0 ALT=""></TD>
+ <TD WIDTH=16><IMG SRC="http://www.nevrax.org/inc/img/pixel.gif" WIDTH="16" HEIGHT="16" BORDER=0 ALT=""></TD>
+ <TD><IMG width=6 height=14 SRC="http://www.nevrax.org/inc/img/reddots.gif" ALT="#" VSPACE=2 HSPACE=2 BORDER=0 ></TD><TD VALIGN=middle>&nbsp;<A CLASS=uplinks HREF=http://www.nevrax.org><b>Home</B></FONT></A>&nbsp;&nbsp;&nbsp;</TD>
+ <TD><IMG width=6 height=14 SRC="http://www.nevrax.org/inc/img/reddots.gif" ALT="#" VSPACE=2 HSPACE=2 BORDER=0 ></TD><TD VALIGN=middle>&nbsp;<A CLASS=uplinks HREF=http://www.nevrax.com><b>nevrax.com</B></FONT></A>&nbsp;&nbsp;&nbsp;</TD>
+ </TR>
+</TABLE>
+
+<!-- banner Nevrax -->
+<TABLE CELLSPACING=0 CELLPADDING=0 BORDER=0 WIDTH=100%>
+ <TR><TD BGCOLOR="#000000" BACKGROUND="http://www.nevrax.org/inc/img/black_banner.jpg"><A HREF="http://www.nevrax.org"><IMG SRC="http://www.nevrax.org/inc/img/nevrax.gif" WIDTH="170" HEIGHT="45" BORDER=0 ALT="Nevrax" ></A></TD></TR>
+</TABLE>
+
+<!-- main table -->
+<TABLE CELLSPACING=0 CELLPADDING=0 BORDER=0 height=100%>
+ <TR>
+ <TD WIDTH=16><IMG SRC="http://www.nevrax.org/inc/img/pixel.gif" WIDTH="16" HEIGHT="10" BORDER=0 ALT=""></TD>
+ <TD WIDTH=140 BGCOLOR=#dddddd VALIGN=TOP ALIGN=middle><IMG SRC="http://www.nevrax.org/inc/img/pixel.gif" WIDTH="140" HEIGHT="10" BORDER=0 ALT="">
+
+ <!------ Begin Box ------>
+ <TABLE BORDER=0 CELLSPACING=0 CELLPADDING=0 BGCOLOR=black><TR><TD><TABLE border=0 cellspacing=2 cellpadding=0 width=120><tr><TD ALIGN=middle bgcolor=black>
+ <FONT COLOR=white FACE="sans-serif"><B>Nevrax.org</B></FONT></TD></TR><tr><td colspan=2 bgcolor=#FFFFFF>
+ <TABLE cellspacing=0 cellpadding=1 border=0>
+ <tr><td ALIGN=middle><a class='linkbox' href="http://www.nevrax.org/news/" TITLE="Rubrique news"><img width=13 height=15 hspace=5 border=0 src=http://www.nevrax.org/inc/img/picto-news.gif ALT=#></A></td><td><a class='linkbox' href="http://www.nevrax.org/news/" TITLE="News">News</a></td></tr>
+ <tr><td ALIGN=middle><a class='linkbox' href="http://www.nevrax.org/mail/" TITLE="Rubrique mail"><img width=15 height=11 hspace=5 border=0 src=http://www.nevrax.org/inc/img/picto-mail.gif ALT=#></A></td><td><a class='linkbox' href="http://www.nevrax.org/mail/" TITLE="Mailing list archive">Mailing-list</a></td></tr>
+ <tr><td ALIGN=middle><a class='linkbox' href="http://www.nevrax.org/docs/" TITLE="Rubrique docs"><img width=14 height=16 hspace=5 border=0 src=http://www.nevrax.org/inc/img/picto-docs.gif ALT=#></A></td><td><a class='linkbox' href="http://www.nevrax.org/docs/" TITLE="Documentation">Documentation</a></td></tr>
+ <tr><td ALIGN=middle><a class='linkbox' href="http://www.nevrax.org/cvs/" TITLE="Rubrique cvs"><img width=13 height=17 hspace=5 border=0 src=http://www.nevrax.org/inc/img/picto-cvs.gif ALT=#></A></td><td><a class='linkbox' href="http://www.nevrax.org/cvs/" TITLE="CVS Web">CVS</a></td></tr>
+ <tr><td ALIGN=middle><a class='linkbox' href="http://www.nevrax.org/bugs/" TITLE="Rubrique bugs"><img width=20 height=16 hspace=5 border=0 src=http://www.nevrax.org/inc/img/picto-bugs.gif ALT=#></A></td><td><a class='linkbox' href="http://www.nevrax.org/bugs/" TITLE="Bugtracking">Bugs</a></td></tr>
+ <tr><td ALIGN=middle><a class='linkbox' href="http://www.nevrax.org/free/" TITLE="Rubrique license"><img width=18 height=12 hspace=5 border=0 src=http://www.nevrax.org/inc/img/picto-free.gif ALT=#></A></td><td><a class='linkbox' href="http://www.nevrax.org/free/" TITLE="Free Software">Free software</a></td></tr>
+ </TABLE>
+ </TD></TR></TABLE></TD></TR></TABLE>
+ <!------ End Box ------>
+
+ </TD>
+ <TD WIDTH=15><IMG SRC="http://www.nevrax.org/inc/img/pixel.gif" WIDTH="16" HEIGHT="16" BORDER=0 ALT=""></TD>
+ <TD ALIGN=left valign=top><IMG SRC="http://www.nevrax.org/inc/img/pixel.gif" WIDTH="140" HEIGHT="10" BORDER=0 ALT="">
+
+<!-- title -->
+<TABLE background="http://www.nevrax.org/inc/img/redline.gif" CELLSPACING=0 CELLPADDING=0 BORDER=0 width=100%><tr><td>
+<A HREF="http://www.nevrax.org/cvs/"><img src="http://www.nevrax.org/inc/img/t_cvs.gif" ALT="cvs" HEIGHT=20 BORDER=0></A>
+</td><td><IMG SRC="http://www.nevrax.org/inc/img/pixel.gif" WIDTH="1" HEIGHT="1" BORDER=0 ALT="">
+</td></tr></table>
+
+<!-- title -->
+<table width=100%><tr><td align=left><b> <a href="/cvs/cvsweb.cgi/">Nevrax</a> / <a href="/cvs/cvsweb.cgi/code/">code</a> / <a href="/cvs/cvsweb.cgi/code/nelns/">nelns</a> / <a href="/cvs/cvsweb.cgi/code/nelns/admin_service/">admin_service</a> / admin_service.cfg</b></td><td align=right><b></b></td></TR></TABLE>
+
+<!-- block -->
+<TABLE bgcolor="#dddddd" CELLSPACING=0 CELLPADDING=0 BORDER=0 width=100%><tr><td width=1% valign=middle><img width=6 height=14 hspace=2 vspace=2 src="http://www.nevrax.org/inc/img/reddots.gif"></TD>
+ <TD><B>admin_service.cfg</B></TD>
+ <TD ALIGN=RIGHT> </td>
+</tr></table>
+<P>
+<p>Default branch: MAIN<BR>
+<HR size=1 NOSHADE><P><a NAME="rev1.6"></a><a NAME="HEAD"></a><a NAME="MAIN"></a>
+ Revision <A HREF="admin_service.cfg?rev=1.6&amp;content-type=text/x-cvsweb-markup"><b>1.6</b></A> / (<A HREF="/cvs/cvsweb.cgi/~checkout~/code/nelns/admin_service/admin_service.cfg?rev=1.6&amp;content-type=text/plain" target="cvs_checkout" onClick="window.open('/cvs/cvsweb.cgi/~checkout~/code/nelns/admin_service/admin_service.cfg?rev=1.6&amp;content-type=text/plain','cvs_checkout','resizeable,scrollbars');"><b>download</b></A>) - <a href="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cfg?annotate=1.6">annotate</a> - <A HREF="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cfg?r1=1.6">[select for diffs]</A>
+, <i>Tue Apr 23 15:54:07 2002 UTC</i> (3 months ago) by <i>lecroart</i>
+<BR>Branch: <b><A HREF="admin_service.cfg?only_with_tag=MAIN">MAIN</A>
+</b>
+<BR>CVS Tags: <b><A HREF="admin_service.cfg?only_with_tag=HEAD">HEAD</A>
+</b><BR>Changes since <b>1.5: +2 -2
+ lines</b><BR>Diff to previous <A HREF="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cfg.diff?r1=1.5&amp;r2=1.6">1.5</A>
+ to selected <A HREF="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cfg.diff?r1=1.1&amp;r2=1.6">1.1</A>
+<PRE>
+ADDED: common.cfg
+</PRE>
+<HR size=1 NOSHADE><P><a NAME="rev1.5"></a>
+ Revision <A HREF="admin_service.cfg?rev=1.5&amp;content-type=text/x-cvsweb-markup"><b>1.5</b></A> / (<A HREF="/cvs/cvsweb.cgi/~checkout~/code/nelns/admin_service/admin_service.cfg?rev=1.5&amp;content-type=text/plain" target="cvs_checkout" onClick="window.open('/cvs/cvsweb.cgi/~checkout~/code/nelns/admin_service/admin_service.cfg?rev=1.5&amp;content-type=text/plain','cvs_checkout','resizeable,scrollbars');"><b>download</b></A>) - <a href="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cfg?annotate=1.5">annotate</a> - <A HREF="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cfg?r1=1.5">[select for diffs]</A>
+, <i>Fri Mar 1 10:20:45 2002 UTC</i> (4 months, 3 weeks ago) by <i>lecroart</i>
+<BR>Branch: <b><A HREF="admin_service.cfg?only_with_tag=MAIN">MAIN</A>
+</b>
+<BR>Changes since <b>1.4: +2 -0
+ lines</b><BR>Diff to previous <A HREF="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cfg.diff?r1=1.4&amp;r2=1.5">1.4</A>
+ to selected <A HREF="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cfg.diff?r1=1.1&amp;r2=1.5">1.1</A>
+<PRE>
+ADDED: password per shard auth
+</PRE>
+<HR size=1 NOSHADE><P><a NAME="rev1.4"></a>
+ Revision <A HREF="admin_service.cfg?rev=1.4&amp;content-type=text/x-cvsweb-markup"><b>1.4</b></A> / (<A HREF="/cvs/cvsweb.cgi/~checkout~/code/nelns/admin_service/admin_service.cfg?rev=1.4&amp;content-type=text/plain" target="cvs_checkout" onClick="window.open('/cvs/cvsweb.cgi/~checkout~/code/nelns/admin_service/admin_service.cfg?rev=1.4&amp;content-type=text/plain','cvs_checkout','resizeable,scrollbars');"><b>download</b></A>) - <a href="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cfg?annotate=1.4">annotate</a> - <A HREF="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cfg?r1=1.4">[select for diffs]</A>
+, <i>Tue Nov 13 15:13:14 2001 UTC</i> (8 months, 1 week ago) by <i>lecroart</i>
+<BR>Branch: <b><A HREF="admin_service.cfg?only_with_tag=MAIN">MAIN</A>
+</b>
+<BR>Changes since <b>1.3: +3 -6
+ lines</b><BR>Diff to previous <A HREF="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cfg.diff?r1=1.3&amp;r2=1.4">1.3</A>
+ to selected <A HREF="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cfg.diff?r1=1.1&amp;r2=1.4">1.1</A>
+<PRE>
+#update cfg
+</PRE>
+<HR size=1 NOSHADE><P><a NAME="rev1.3"></a>
+ Revision <A HREF="admin_service.cfg?rev=1.3&amp;content-type=text/x-cvsweb-markup"><b>1.3</b></A> / (<A HREF="/cvs/cvsweb.cgi/~checkout~/code/nelns/admin_service/admin_service.cfg?rev=1.3&amp;content-type=text/plain" target="cvs_checkout" onClick="window.open('/cvs/cvsweb.cgi/~checkout~/code/nelns/admin_service/admin_service.cfg?rev=1.3&amp;content-type=text/plain','cvs_checkout','resizeable,scrollbars');"><b>download</b></A>) - <a href="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cfg?annotate=1.3">annotate</a> - <A HREF="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cfg?r1=1.3">[select for diffs]</A>
+, <i>Wed Jun 27 08:34:07 2001 UTC</i> (12 months, 3 weeks ago) by <i>lecroart</i>
+<BR>Branch: <b><A HREF="admin_service.cfg?only_with_tag=MAIN">MAIN</A>
+</b>
+<BR>Changes since <b>1.2: +5 -0
+ lines</b><BR>Diff to previous <A HREF="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cfg.diff?r1=1.2&amp;r2=1.3">1.2</A>
+ to selected <A HREF="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cfg.diff?r1=1.1&amp;r2=1.3">1.1</A>
+<PRE>
+ADDED: win32 console position
+</PRE>
+<HR size=1 NOSHADE><P><a NAME="rev1.2"></a>
+ Revision <A HREF="admin_service.cfg?rev=1.2&amp;content-type=text/x-cvsweb-markup"><b>1.2</b></A> / (<A HREF="/cvs/cvsweb.cgi/~checkout~/code/nelns/admin_service/admin_service.cfg?rev=1.2&amp;content-type=text/plain" target="cvs_checkout" onClick="window.open('/cvs/cvsweb.cgi/~checkout~/code/nelns/admin_service/admin_service.cfg?rev=1.2&amp;content-type=text/plain','cvs_checkout','resizeable,scrollbars');"><b>download</b></A>) - <a href="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cfg?annotate=1.2">annotate</a> - <A HREF="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cfg?r1=1.2">[select for diffs]</A>
+, <i>Thu Jun 7 16:19:05 2001 UTC</i> (13 months, 2 weeks ago) by <i>lecroart</i>
+<BR>Branch: <b><A HREF="admin_service.cfg?only_with_tag=MAIN">MAIN</A>
+</b>
+<BR>Changes since <b>1.1: +2 -1
+ lines</b><BR>Diff to previous <A HREF="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cfg.diff?r1=1.1&amp;r2=1.2">1.1</A>
+<PRE>
+ADDED: commands system
+</PRE>
+<HR size=1 NOSHADE><P><a NAME="rev1.1"></a>
+ Revision <A HREF="admin_service.cfg?rev=1.1&amp;content-type=text/x-cvsweb-markup"><b>1.1</b></A> / (<A HREF="/cvs/cvsweb.cgi/~checkout~/code/nelns/admin_service/admin_service.cfg?rev=1.1&amp;content-type=text/plain" target="cvs_checkout" onClick="window.open('/cvs/cvsweb.cgi/~checkout~/code/nelns/admin_service/admin_service.cfg?rev=1.1&amp;content-type=text/plain','cvs_checkout','resizeable,scrollbars');"><b>download</b></A>) - <a href="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cfg?annotate=1.1">annotate</a> - <b>[selected]</b>, <i>Fri May 18 16:49:42 2001 UTC</i> (14 months ago) by <i>lecroart</i>
+<BR>Branch: <b><A HREF="admin_service.cfg?only_with_tag=MAIN">MAIN</A>
+</b>
+<BR>Diff<PRE>
+ADDED: cfg file for example purpose
+</PRE>
+
+<!-- block -->
+<TABLE bgcolor="#dddddd" CELLSPACING=0 CELLPADDING=0 BORDER=0 width=100%><tr><td width=1% valign=middle><img width=6 height=14 hspace=2 vspace=2 src="http://www.nevrax.org/inc/img/reddots.gif"></TD>
+ <TD><B>Request Diffs</B></TD>
+ <TD ALIGN=RIGHT> </td>
+</tr></table>
+<P>
+<P>
+<FORM METHOD="GET" ACTION="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cfg.diff" NAME="diff_select">
+Diffs between
+<SELECT NAME="r1">
+<OPTION VALUE="text" SELECTED>Use Text Field
+<OPTION VALUE="1:MAIN">MAIN
+<OPTION VALUE="1.6:HEAD">HEAD
+</SELECT>
+<INPUT TYPE="TEXT" SIZE="12" NAME="tr1" VALUE="1.1" onChange='document.diff_select.r1.selectedIndex=0'>
+ and
+<SELECT NAME="r2">
+<OPTION VALUE="text" SELECTED>Use Text Field
+<OPTION VALUE="1:MAIN">MAIN
+<OPTION VALUE="1.6:HEAD">HEAD
+</SELECT>
+<INPUT TYPE="TEXT" SIZE="12" NAME="tr2" VALUE="1.6" onChange='docuement.diff_select.r2.selectedIndex=0'>
+<BR>Type of Diff should be a&nbsp;<SELECT NAME="f">
+<OPTION VALUE=h SELECTED>Colored Diff<OPTION VALUE=H>Long Colored Diff<OPTION VALUE=u>Unidiff<OPTION VALUE=c>Context Diff<OPTION VALUE=s>Side by Side</SELECT><INPUT TYPE=SUBMIT VALUE=" Get Diffs ">
+</FORM>
+
+<!-- block -->
+<TABLE bgcolor="#dddddd" CELLSPACING=0 CELLPADDING=0 BORDER=0 width=100%><tr><td width=1% valign=middle><img width=6 height=14 hspace=2 vspace=2 src="http://www.nevrax.org/inc/img/reddots.gif"></TD>
+ <TD><B>Select branch</B></TD>
+ <TD ALIGN=RIGHT> </td>
+</tr></table>
+<P>
+<P>
+<A name=branch></A>
+<FORM METHOD="GET" ACTION="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cfg">
+View only Branch:
+<SELECT NAME="only_with_tag" onchange="submit()">
+<OPTION VALUE="">Show all branches
+<OPTION>MAIN
+</SELECT>
+<INPUT TYPE=SUBMIT VALUE=" View Branch ">
+</FORM>
+<A name=logsort></A>
+<FORM METHOD="GET" ACTION="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cfg">
+Sort log by:
+<SELECT NAME="logsort" onchange="submit()">
+<OPTION VALUE=cvs>Not sorted<OPTION VALUE=date SELECTED>Commit date<OPTION VALUE=rev>Revision</SELECT>
+<INPUT TYPE=SUBMIT VALUE=" Sort ">
+</FORM>
+
+<!-- footer -->
+<BR><FONT Size=+5>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </FONT>
+</TD>
+<TD WIDTH=15><IMG SRC=http://www.nevrax.org/inc/img/pixel.gif WIDTH=15 HEIGHT=15 BORDER=0 ALT=""></TD>
+</TR>
+</TABLE>
+</BODY>
+</HTML></BODY></HTML>
diff --git a/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cfg?r1=1.2 b/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cfg?r1=1.2
new file mode 100644
index 00000000..21ab1451
--- /dev/null
+++ b/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cfg?r1=1.2
@@ -0,0 +1,187 @@
+<!doctype html public "-//W3C//DTD HTML 4.0 Transitional//EN" "http://www.w3.org/TR/REC-html40/loose.dtd">
+<HTML>
+<HEAD>
+ <TITLE>nevrax.org : cvs</TITLE>
+ <META name="keywords" content="freesoftware,nel,newt,snowballs,richard stallman,GNU,Multi-User Online World">
+
+ <LINK REL=stylesheet TYPE="text/css" HREF="http://www.nevrax.org/inc/css/nevrax.css">
+</HEAD>
+<BODY MARGINHEIGHT="0" MARGINWIDTH="0">
+
+<!-- uplinks -->
+<TABLE CELLSPACING=0 CELLPADDING=0 BORDER=0>
+ <TR>
+ <TD WIDTH=16><IMG SRC="http://www.nevrax.org/inc/img/pixel.gif" WIDTH="16" HEIGHT="16" BORDER=0 ALT=""></TD>
+ <TD WIDTH=140 BGCOLOR=#dddddd><IMG SRC="http://www.nevrax.org/inc/img/pixel.gif" WIDTH="140" HEIGHT="16" BORDER=0 ALT=""></TD>
+ <TD WIDTH=16><IMG SRC="http://www.nevrax.org/inc/img/pixel.gif" WIDTH="16" HEIGHT="16" BORDER=0 ALT=""></TD>
+ <TD><IMG width=6 height=14 SRC="http://www.nevrax.org/inc/img/reddots.gif" ALT="#" VSPACE=2 HSPACE=2 BORDER=0 ></TD><TD VALIGN=middle>&nbsp;<A CLASS=uplinks HREF=http://www.nevrax.org><b>Home</B></FONT></A>&nbsp;&nbsp;&nbsp;</TD>
+ <TD><IMG width=6 height=14 SRC="http://www.nevrax.org/inc/img/reddots.gif" ALT="#" VSPACE=2 HSPACE=2 BORDER=0 ></TD><TD VALIGN=middle>&nbsp;<A CLASS=uplinks HREF=http://www.nevrax.com><b>nevrax.com</B></FONT></A>&nbsp;&nbsp;&nbsp;</TD>
+ </TR>
+</TABLE>
+
+<!-- banner Nevrax -->
+<TABLE CELLSPACING=0 CELLPADDING=0 BORDER=0 WIDTH=100%>
+ <TR><TD BGCOLOR="#000000" BACKGROUND="http://www.nevrax.org/inc/img/black_banner.jpg"><A HREF="http://www.nevrax.org"><IMG SRC="http://www.nevrax.org/inc/img/nevrax.gif" WIDTH="170" HEIGHT="45" BORDER=0 ALT="Nevrax" ></A></TD></TR>
+</TABLE>
+
+<!-- main table -->
+<TABLE CELLSPACING=0 CELLPADDING=0 BORDER=0 height=100%>
+ <TR>
+ <TD WIDTH=16><IMG SRC="http://www.nevrax.org/inc/img/pixel.gif" WIDTH="16" HEIGHT="10" BORDER=0 ALT=""></TD>
+ <TD WIDTH=140 BGCOLOR=#dddddd VALIGN=TOP ALIGN=middle><IMG SRC="http://www.nevrax.org/inc/img/pixel.gif" WIDTH="140" HEIGHT="10" BORDER=0 ALT="">
+
+ <!------ Begin Box ------>
+ <TABLE BORDER=0 CELLSPACING=0 CELLPADDING=0 BGCOLOR=black><TR><TD><TABLE border=0 cellspacing=2 cellpadding=0 width=120><tr><TD ALIGN=middle bgcolor=black>
+ <FONT COLOR=white FACE="sans-serif"><B>Nevrax.org</B></FONT></TD></TR><tr><td colspan=2 bgcolor=#FFFFFF>
+ <TABLE cellspacing=0 cellpadding=1 border=0>
+ <tr><td ALIGN=middle><a class='linkbox' href="http://www.nevrax.org/news/" TITLE="Rubrique news"><img width=13 height=15 hspace=5 border=0 src=http://www.nevrax.org/inc/img/picto-news.gif ALT=#></A></td><td><a class='linkbox' href="http://www.nevrax.org/news/" TITLE="News">News</a></td></tr>
+ <tr><td ALIGN=middle><a class='linkbox' href="http://www.nevrax.org/mail/" TITLE="Rubrique mail"><img width=15 height=11 hspace=5 border=0 src=http://www.nevrax.org/inc/img/picto-mail.gif ALT=#></A></td><td><a class='linkbox' href="http://www.nevrax.org/mail/" TITLE="Mailing list archive">Mailing-list</a></td></tr>
+ <tr><td ALIGN=middle><a class='linkbox' href="http://www.nevrax.org/docs/" TITLE="Rubrique docs"><img width=14 height=16 hspace=5 border=0 src=http://www.nevrax.org/inc/img/picto-docs.gif ALT=#></A></td><td><a class='linkbox' href="http://www.nevrax.org/docs/" TITLE="Documentation">Documentation</a></td></tr>
+ <tr><td ALIGN=middle><a class='linkbox' href="http://www.nevrax.org/cvs/" TITLE="Rubrique cvs"><img width=13 height=17 hspace=5 border=0 src=http://www.nevrax.org/inc/img/picto-cvs.gif ALT=#></A></td><td><a class='linkbox' href="http://www.nevrax.org/cvs/" TITLE="CVS Web">CVS</a></td></tr>
+ <tr><td ALIGN=middle><a class='linkbox' href="http://www.nevrax.org/bugs/" TITLE="Rubrique bugs"><img width=20 height=16 hspace=5 border=0 src=http://www.nevrax.org/inc/img/picto-bugs.gif ALT=#></A></td><td><a class='linkbox' href="http://www.nevrax.org/bugs/" TITLE="Bugtracking">Bugs</a></td></tr>
+ <tr><td ALIGN=middle><a class='linkbox' href="http://www.nevrax.org/free/" TITLE="Rubrique license"><img width=18 height=12 hspace=5 border=0 src=http://www.nevrax.org/inc/img/picto-free.gif ALT=#></A></td><td><a class='linkbox' href="http://www.nevrax.org/free/" TITLE="Free Software">Free software</a></td></tr>
+ </TABLE>
+ </TD></TR></TABLE></TD></TR></TABLE>
+ <!------ End Box ------>
+
+ </TD>
+ <TD WIDTH=15><IMG SRC="http://www.nevrax.org/inc/img/pixel.gif" WIDTH="16" HEIGHT="16" BORDER=0 ALT=""></TD>
+ <TD ALIGN=left valign=top><IMG SRC="http://www.nevrax.org/inc/img/pixel.gif" WIDTH="140" HEIGHT="10" BORDER=0 ALT="">
+
+<!-- title -->
+<TABLE background="http://www.nevrax.org/inc/img/redline.gif" CELLSPACING=0 CELLPADDING=0 BORDER=0 width=100%><tr><td>
+<A HREF="http://www.nevrax.org/cvs/"><img src="http://www.nevrax.org/inc/img/t_cvs.gif" ALT="cvs" HEIGHT=20 BORDER=0></A>
+</td><td><IMG SRC="http://www.nevrax.org/inc/img/pixel.gif" WIDTH="1" HEIGHT="1" BORDER=0 ALT="">
+</td></tr></table>
+
+<!-- title -->
+<table width=100%><tr><td align=left><b> <a href="/cvs/cvsweb.cgi/">Nevrax</a> / <a href="/cvs/cvsweb.cgi/code/">code</a> / <a href="/cvs/cvsweb.cgi/code/nelns/">nelns</a> / <a href="/cvs/cvsweb.cgi/code/nelns/admin_service/">admin_service</a> / admin_service.cfg</b></td><td align=right><b></b></td></TR></TABLE>
+
+<!-- block -->
+<TABLE bgcolor="#dddddd" CELLSPACING=0 CELLPADDING=0 BORDER=0 width=100%><tr><td width=1% valign=middle><img width=6 height=14 hspace=2 vspace=2 src="http://www.nevrax.org/inc/img/reddots.gif"></TD>
+ <TD><B>admin_service.cfg</B></TD>
+ <TD ALIGN=RIGHT> </td>
+</tr></table>
+<P>
+<p>Default branch: MAIN<BR>
+<HR size=1 NOSHADE><P><a NAME="rev1.6"></a><a NAME="HEAD"></a><a NAME="MAIN"></a>
+ Revision <A HREF="admin_service.cfg?rev=1.6&amp;content-type=text/x-cvsweb-markup"><b>1.6</b></A> / (<A HREF="/cvs/cvsweb.cgi/~checkout~/code/nelns/admin_service/admin_service.cfg?rev=1.6&amp;content-type=text/plain" target="cvs_checkout" onClick="window.open('/cvs/cvsweb.cgi/~checkout~/code/nelns/admin_service/admin_service.cfg?rev=1.6&amp;content-type=text/plain','cvs_checkout','resizeable,scrollbars');"><b>download</b></A>) - <a href="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cfg?annotate=1.6">annotate</a> - <A HREF="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cfg?r1=1.6">[select for diffs]</A>
+, <i>Tue Apr 23 15:54:07 2002 UTC</i> (3 months ago) by <i>lecroart</i>
+<BR>Branch: <b><A HREF="admin_service.cfg?only_with_tag=MAIN">MAIN</A>
+</b>
+<BR>CVS Tags: <b><A HREF="admin_service.cfg?only_with_tag=HEAD">HEAD</A>
+</b><BR>Changes since <b>1.5: +2 -2
+ lines</b><BR>Diff to previous <A HREF="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cfg.diff?r1=1.5&amp;r2=1.6">1.5</A>
+ to selected <A HREF="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cfg.diff?r1=1.2&amp;r2=1.6">1.2</A>
+<PRE>
+ADDED: common.cfg
+</PRE>
+<HR size=1 NOSHADE><P><a NAME="rev1.5"></a>
+ Revision <A HREF="admin_service.cfg?rev=1.5&amp;content-type=text/x-cvsweb-markup"><b>1.5</b></A> / (<A HREF="/cvs/cvsweb.cgi/~checkout~/code/nelns/admin_service/admin_service.cfg?rev=1.5&amp;content-type=text/plain" target="cvs_checkout" onClick="window.open('/cvs/cvsweb.cgi/~checkout~/code/nelns/admin_service/admin_service.cfg?rev=1.5&amp;content-type=text/plain','cvs_checkout','resizeable,scrollbars');"><b>download</b></A>) - <a href="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cfg?annotate=1.5">annotate</a> - <A HREF="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cfg?r1=1.5">[select for diffs]</A>
+, <i>Fri Mar 1 10:20:45 2002 UTC</i> (4 months, 3 weeks ago) by <i>lecroart</i>
+<BR>Branch: <b><A HREF="admin_service.cfg?only_with_tag=MAIN">MAIN</A>
+</b>
+<BR>Changes since <b>1.4: +2 -0
+ lines</b><BR>Diff to previous <A HREF="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cfg.diff?r1=1.4&amp;r2=1.5">1.4</A>
+ to selected <A HREF="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cfg.diff?r1=1.2&amp;r2=1.5">1.2</A>
+<PRE>
+ADDED: password per shard auth
+</PRE>
+<HR size=1 NOSHADE><P><a NAME="rev1.4"></a>
+ Revision <A HREF="admin_service.cfg?rev=1.4&amp;content-type=text/x-cvsweb-markup"><b>1.4</b></A> / (<A HREF="/cvs/cvsweb.cgi/~checkout~/code/nelns/admin_service/admin_service.cfg?rev=1.4&amp;content-type=text/plain" target="cvs_checkout" onClick="window.open('/cvs/cvsweb.cgi/~checkout~/code/nelns/admin_service/admin_service.cfg?rev=1.4&amp;content-type=text/plain','cvs_checkout','resizeable,scrollbars');"><b>download</b></A>) - <a href="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cfg?annotate=1.4">annotate</a> - <A HREF="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cfg?r1=1.4">[select for diffs]</A>
+, <i>Tue Nov 13 15:13:14 2001 UTC</i> (8 months, 1 week ago) by <i>lecroart</i>
+<BR>Branch: <b><A HREF="admin_service.cfg?only_with_tag=MAIN">MAIN</A>
+</b>
+<BR>Changes since <b>1.3: +3 -6
+ lines</b><BR>Diff to previous <A HREF="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cfg.diff?r1=1.3&amp;r2=1.4">1.3</A>
+ to selected <A HREF="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cfg.diff?r1=1.2&amp;r2=1.4">1.2</A>
+<PRE>
+#update cfg
+</PRE>
+<HR size=1 NOSHADE><P><a NAME="rev1.3"></a>
+ Revision <A HREF="admin_service.cfg?rev=1.3&amp;content-type=text/x-cvsweb-markup"><b>1.3</b></A> / (<A HREF="/cvs/cvsweb.cgi/~checkout~/code/nelns/admin_service/admin_service.cfg?rev=1.3&amp;content-type=text/plain" target="cvs_checkout" onClick="window.open('/cvs/cvsweb.cgi/~checkout~/code/nelns/admin_service/admin_service.cfg?rev=1.3&amp;content-type=text/plain','cvs_checkout','resizeable,scrollbars');"><b>download</b></A>) - <a href="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cfg?annotate=1.3">annotate</a> - <A HREF="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cfg?r1=1.3">[select for diffs]</A>
+, <i>Wed Jun 27 08:34:07 2001 UTC</i> (12 months, 3 weeks ago) by <i>lecroart</i>
+<BR>Branch: <b><A HREF="admin_service.cfg?only_with_tag=MAIN">MAIN</A>
+</b>
+<BR>Changes since <b>1.2: +5 -0
+ lines</b><BR>Diff to previous <A HREF="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cfg.diff?r1=1.2&amp;r2=1.3">1.2</A>
+<PRE>
+ADDED: win32 console position
+</PRE>
+<HR size=1 NOSHADE><P><a NAME="rev1.2"></a>
+ Revision <A HREF="admin_service.cfg?rev=1.2&amp;content-type=text/x-cvsweb-markup"><b>1.2</b></A> / (<A HREF="/cvs/cvsweb.cgi/~checkout~/code/nelns/admin_service/admin_service.cfg?rev=1.2&amp;content-type=text/plain" target="cvs_checkout" onClick="window.open('/cvs/cvsweb.cgi/~checkout~/code/nelns/admin_service/admin_service.cfg?rev=1.2&amp;content-type=text/plain','cvs_checkout','resizeable,scrollbars');"><b>download</b></A>) - <a href="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cfg?annotate=1.2">annotate</a> - <b>[selected]</b>, <i>Thu Jun 7 16:19:05 2001 UTC</i> (13 months, 2 weeks ago) by <i>lecroart</i>
+<BR>Branch: <b><A HREF="admin_service.cfg?only_with_tag=MAIN">MAIN</A>
+</b>
+<BR>Changes since <b>1.1: +2 -1
+ lines</b><BR>Diff to previous <A HREF="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cfg.diff?r1=1.1&amp;r2=1.2">1.1</A>
+<PRE>
+ADDED: commands system
+</PRE>
+<HR size=1 NOSHADE><P><a NAME="rev1.1"></a>
+ Revision <A HREF="admin_service.cfg?rev=1.1&amp;content-type=text/x-cvsweb-markup"><b>1.1</b></A> / (<A HREF="/cvs/cvsweb.cgi/~checkout~/code/nelns/admin_service/admin_service.cfg?rev=1.1&amp;content-type=text/plain" target="cvs_checkout" onClick="window.open('/cvs/cvsweb.cgi/~checkout~/code/nelns/admin_service/admin_service.cfg?rev=1.1&amp;content-type=text/plain','cvs_checkout','resizeable,scrollbars');"><b>download</b></A>) - <a href="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cfg?annotate=1.1">annotate</a> - <A HREF="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cfg?r1=1.1">[select for diffs]</A>
+, <i>Fri May 18 16:49:42 2001 UTC</i> (14 months ago) by <i>lecroart</i>
+<BR>Branch: <b><A HREF="admin_service.cfg?only_with_tag=MAIN">MAIN</A>
+</b>
+<BR>Diff to selected <A HREF="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cfg.diff?r1=1.2&amp;r2=1.1">1.2</A>
+<PRE>
+ADDED: cfg file for example purpose
+</PRE>
+
+<!-- block -->
+<TABLE bgcolor="#dddddd" CELLSPACING=0 CELLPADDING=0 BORDER=0 width=100%><tr><td width=1% valign=middle><img width=6 height=14 hspace=2 vspace=2 src="http://www.nevrax.org/inc/img/reddots.gif"></TD>
+ <TD><B>Request Diffs</B></TD>
+ <TD ALIGN=RIGHT> </td>
+</tr></table>
+<P>
+<P>
+<FORM METHOD="GET" ACTION="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cfg.diff" NAME="diff_select">
+Diffs between
+<SELECT NAME="r1">
+<OPTION VALUE="text" SELECTED>Use Text Field
+<OPTION VALUE="1:MAIN">MAIN
+<OPTION VALUE="1.6:HEAD">HEAD
+</SELECT>
+<INPUT TYPE="TEXT" SIZE="12" NAME="tr1" VALUE="1.2" onChange='document.diff_select.r1.selectedIndex=0'>
+ and
+<SELECT NAME="r2">
+<OPTION VALUE="text" SELECTED>Use Text Field
+<OPTION VALUE="1:MAIN">MAIN
+<OPTION VALUE="1.6:HEAD">HEAD
+</SELECT>
+<INPUT TYPE="TEXT" SIZE="12" NAME="tr2" VALUE="1.6" onChange='docuement.diff_select.r2.selectedIndex=0'>
+<BR>Type of Diff should be a&nbsp;<SELECT NAME="f">
+<OPTION VALUE=h SELECTED>Colored Diff<OPTION VALUE=H>Long Colored Diff<OPTION VALUE=u>Unidiff<OPTION VALUE=c>Context Diff<OPTION VALUE=s>Side by Side</SELECT><INPUT TYPE=SUBMIT VALUE=" Get Diffs ">
+</FORM>
+
+<!-- block -->
+<TABLE bgcolor="#dddddd" CELLSPACING=0 CELLPADDING=0 BORDER=0 width=100%><tr><td width=1% valign=middle><img width=6 height=14 hspace=2 vspace=2 src="http://www.nevrax.org/inc/img/reddots.gif"></TD>
+ <TD><B>Select branch</B></TD>
+ <TD ALIGN=RIGHT> </td>
+</tr></table>
+<P>
+<P>
+<A name=branch></A>
+<FORM METHOD="GET" ACTION="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cfg">
+View only Branch:
+<SELECT NAME="only_with_tag" onchange="submit()">
+<OPTION VALUE="">Show all branches
+<OPTION>MAIN
+</SELECT>
+<INPUT TYPE=SUBMIT VALUE=" View Branch ">
+</FORM>
+<A name=logsort></A>
+<FORM METHOD="GET" ACTION="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cfg">
+Sort log by:
+<SELECT NAME="logsort" onchange="submit()">
+<OPTION VALUE=cvs>Not sorted<OPTION VALUE=date SELECTED>Commit date<OPTION VALUE=rev>Revision</SELECT>
+<INPUT TYPE=SUBMIT VALUE=" Sort ">
+</FORM>
+
+<!-- footer -->
+<BR><FONT Size=+5>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </FONT>
+</TD>
+<TD WIDTH=15><IMG SRC=http://www.nevrax.org/inc/img/pixel.gif WIDTH=15 HEIGHT=15 BORDER=0 ALT=""></TD>
+</TR>
+</TABLE>
+</BODY>
+</HTML></BODY></HTML>
diff --git a/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cfg?r1=1.3 b/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cfg?r1=1.3
new file mode 100644
index 00000000..2209f34c
--- /dev/null
+++ b/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cfg?r1=1.3
@@ -0,0 +1,187 @@
+<!doctype html public "-//W3C//DTD HTML 4.0 Transitional//EN" "http://www.w3.org/TR/REC-html40/loose.dtd">
+<HTML>
+<HEAD>
+ <TITLE>nevrax.org : cvs</TITLE>
+ <META name="keywords" content="freesoftware,nel,newt,snowballs,richard stallman,GNU,Multi-User Online World">
+
+ <LINK REL=stylesheet TYPE="text/css" HREF="http://www.nevrax.org/inc/css/nevrax.css">
+</HEAD>
+<BODY MARGINHEIGHT="0" MARGINWIDTH="0">
+
+<!-- uplinks -->
+<TABLE CELLSPACING=0 CELLPADDING=0 BORDER=0>
+ <TR>
+ <TD WIDTH=16><IMG SRC="http://www.nevrax.org/inc/img/pixel.gif" WIDTH="16" HEIGHT="16" BORDER=0 ALT=""></TD>
+ <TD WIDTH=140 BGCOLOR=#dddddd><IMG SRC="http://www.nevrax.org/inc/img/pixel.gif" WIDTH="140" HEIGHT="16" BORDER=0 ALT=""></TD>
+ <TD WIDTH=16><IMG SRC="http://www.nevrax.org/inc/img/pixel.gif" WIDTH="16" HEIGHT="16" BORDER=0 ALT=""></TD>
+ <TD><IMG width=6 height=14 SRC="http://www.nevrax.org/inc/img/reddots.gif" ALT="#" VSPACE=2 HSPACE=2 BORDER=0 ></TD><TD VALIGN=middle>&nbsp;<A CLASS=uplinks HREF=http://www.nevrax.org><b>Home</B></FONT></A>&nbsp;&nbsp;&nbsp;</TD>
+ <TD><IMG width=6 height=14 SRC="http://www.nevrax.org/inc/img/reddots.gif" ALT="#" VSPACE=2 HSPACE=2 BORDER=0 ></TD><TD VALIGN=middle>&nbsp;<A CLASS=uplinks HREF=http://www.nevrax.com><b>nevrax.com</B></FONT></A>&nbsp;&nbsp;&nbsp;</TD>
+ </TR>
+</TABLE>
+
+<!-- banner Nevrax -->
+<TABLE CELLSPACING=0 CELLPADDING=0 BORDER=0 WIDTH=100%>
+ <TR><TD BGCOLOR="#000000" BACKGROUND="http://www.nevrax.org/inc/img/black_banner.jpg"><A HREF="http://www.nevrax.org"><IMG SRC="http://www.nevrax.org/inc/img/nevrax.gif" WIDTH="170" HEIGHT="45" BORDER=0 ALT="Nevrax" ></A></TD></TR>
+</TABLE>
+
+<!-- main table -->
+<TABLE CELLSPACING=0 CELLPADDING=0 BORDER=0 height=100%>
+ <TR>
+ <TD WIDTH=16><IMG SRC="http://www.nevrax.org/inc/img/pixel.gif" WIDTH="16" HEIGHT="10" BORDER=0 ALT=""></TD>
+ <TD WIDTH=140 BGCOLOR=#dddddd VALIGN=TOP ALIGN=middle><IMG SRC="http://www.nevrax.org/inc/img/pixel.gif" WIDTH="140" HEIGHT="10" BORDER=0 ALT="">
+
+ <!------ Begin Box ------>
+ <TABLE BORDER=0 CELLSPACING=0 CELLPADDING=0 BGCOLOR=black><TR><TD><TABLE border=0 cellspacing=2 cellpadding=0 width=120><tr><TD ALIGN=middle bgcolor=black>
+ <FONT COLOR=white FACE="sans-serif"><B>Nevrax.org</B></FONT></TD></TR><tr><td colspan=2 bgcolor=#FFFFFF>
+ <TABLE cellspacing=0 cellpadding=1 border=0>
+ <tr><td ALIGN=middle><a class='linkbox' href="http://www.nevrax.org/news/" TITLE="Rubrique news"><img width=13 height=15 hspace=5 border=0 src=http://www.nevrax.org/inc/img/picto-news.gif ALT=#></A></td><td><a class='linkbox' href="http://www.nevrax.org/news/" TITLE="News">News</a></td></tr>
+ <tr><td ALIGN=middle><a class='linkbox' href="http://www.nevrax.org/mail/" TITLE="Rubrique mail"><img width=15 height=11 hspace=5 border=0 src=http://www.nevrax.org/inc/img/picto-mail.gif ALT=#></A></td><td><a class='linkbox' href="http://www.nevrax.org/mail/" TITLE="Mailing list archive">Mailing-list</a></td></tr>
+ <tr><td ALIGN=middle><a class='linkbox' href="http://www.nevrax.org/docs/" TITLE="Rubrique docs"><img width=14 height=16 hspace=5 border=0 src=http://www.nevrax.org/inc/img/picto-docs.gif ALT=#></A></td><td><a class='linkbox' href="http://www.nevrax.org/docs/" TITLE="Documentation">Documentation</a></td></tr>
+ <tr><td ALIGN=middle><a class='linkbox' href="http://www.nevrax.org/cvs/" TITLE="Rubrique cvs"><img width=13 height=17 hspace=5 border=0 src=http://www.nevrax.org/inc/img/picto-cvs.gif ALT=#></A></td><td><a class='linkbox' href="http://www.nevrax.org/cvs/" TITLE="CVS Web">CVS</a></td></tr>
+ <tr><td ALIGN=middle><a class='linkbox' href="http://www.nevrax.org/bugs/" TITLE="Rubrique bugs"><img width=20 height=16 hspace=5 border=0 src=http://www.nevrax.org/inc/img/picto-bugs.gif ALT=#></A></td><td><a class='linkbox' href="http://www.nevrax.org/bugs/" TITLE="Bugtracking">Bugs</a></td></tr>
+ <tr><td ALIGN=middle><a class='linkbox' href="http://www.nevrax.org/free/" TITLE="Rubrique license"><img width=18 height=12 hspace=5 border=0 src=http://www.nevrax.org/inc/img/picto-free.gif ALT=#></A></td><td><a class='linkbox' href="http://www.nevrax.org/free/" TITLE="Free Software">Free software</a></td></tr>
+ </TABLE>
+ </TD></TR></TABLE></TD></TR></TABLE>
+ <!------ End Box ------>
+
+ </TD>
+ <TD WIDTH=15><IMG SRC="http://www.nevrax.org/inc/img/pixel.gif" WIDTH="16" HEIGHT="16" BORDER=0 ALT=""></TD>
+ <TD ALIGN=left valign=top><IMG SRC="http://www.nevrax.org/inc/img/pixel.gif" WIDTH="140" HEIGHT="10" BORDER=0 ALT="">
+
+<!-- title -->
+<TABLE background="http://www.nevrax.org/inc/img/redline.gif" CELLSPACING=0 CELLPADDING=0 BORDER=0 width=100%><tr><td>
+<A HREF="http://www.nevrax.org/cvs/"><img src="http://www.nevrax.org/inc/img/t_cvs.gif" ALT="cvs" HEIGHT=20 BORDER=0></A>
+</td><td><IMG SRC="http://www.nevrax.org/inc/img/pixel.gif" WIDTH="1" HEIGHT="1" BORDER=0 ALT="">
+</td></tr></table>
+
+<!-- title -->
+<table width=100%><tr><td align=left><b> <a href="/cvs/cvsweb.cgi/">Nevrax</a> / <a href="/cvs/cvsweb.cgi/code/">code</a> / <a href="/cvs/cvsweb.cgi/code/nelns/">nelns</a> / <a href="/cvs/cvsweb.cgi/code/nelns/admin_service/">admin_service</a> / admin_service.cfg</b></td><td align=right><b></b></td></TR></TABLE>
+
+<!-- block -->
+<TABLE bgcolor="#dddddd" CELLSPACING=0 CELLPADDING=0 BORDER=0 width=100%><tr><td width=1% valign=middle><img width=6 height=14 hspace=2 vspace=2 src="http://www.nevrax.org/inc/img/reddots.gif"></TD>
+ <TD><B>admin_service.cfg</B></TD>
+ <TD ALIGN=RIGHT> </td>
+</tr></table>
+<P>
+<p>Default branch: MAIN<BR>
+<HR size=1 NOSHADE><P><a NAME="rev1.6"></a><a NAME="HEAD"></a><a NAME="MAIN"></a>
+ Revision <A HREF="admin_service.cfg?rev=1.6&amp;content-type=text/x-cvsweb-markup"><b>1.6</b></A> / (<A HREF="/cvs/cvsweb.cgi/~checkout~/code/nelns/admin_service/admin_service.cfg?rev=1.6&amp;content-type=text/plain" target="cvs_checkout" onClick="window.open('/cvs/cvsweb.cgi/~checkout~/code/nelns/admin_service/admin_service.cfg?rev=1.6&amp;content-type=text/plain','cvs_checkout','resizeable,scrollbars');"><b>download</b></A>) - <a href="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cfg?annotate=1.6">annotate</a> - <A HREF="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cfg?r1=1.6">[select for diffs]</A>
+, <i>Tue Apr 23 15:54:07 2002 UTC</i> (3 months ago) by <i>lecroart</i>
+<BR>Branch: <b><A HREF="admin_service.cfg?only_with_tag=MAIN">MAIN</A>
+</b>
+<BR>CVS Tags: <b><A HREF="admin_service.cfg?only_with_tag=HEAD">HEAD</A>
+</b><BR>Changes since <b>1.5: +2 -2
+ lines</b><BR>Diff to previous <A HREF="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cfg.diff?r1=1.5&amp;r2=1.6">1.5</A>
+ to selected <A HREF="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cfg.diff?r1=1.3&amp;r2=1.6">1.3</A>
+<PRE>
+ADDED: common.cfg
+</PRE>
+<HR size=1 NOSHADE><P><a NAME="rev1.5"></a>
+ Revision <A HREF="admin_service.cfg?rev=1.5&amp;content-type=text/x-cvsweb-markup"><b>1.5</b></A> / (<A HREF="/cvs/cvsweb.cgi/~checkout~/code/nelns/admin_service/admin_service.cfg?rev=1.5&amp;content-type=text/plain" target="cvs_checkout" onClick="window.open('/cvs/cvsweb.cgi/~checkout~/code/nelns/admin_service/admin_service.cfg?rev=1.5&amp;content-type=text/plain','cvs_checkout','resizeable,scrollbars');"><b>download</b></A>) - <a href="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cfg?annotate=1.5">annotate</a> - <A HREF="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cfg?r1=1.5">[select for diffs]</A>
+, <i>Fri Mar 1 10:20:45 2002 UTC</i> (4 months, 3 weeks ago) by <i>lecroart</i>
+<BR>Branch: <b><A HREF="admin_service.cfg?only_with_tag=MAIN">MAIN</A>
+</b>
+<BR>Changes since <b>1.4: +2 -0
+ lines</b><BR>Diff to previous <A HREF="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cfg.diff?r1=1.4&amp;r2=1.5">1.4</A>
+ to selected <A HREF="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cfg.diff?r1=1.3&amp;r2=1.5">1.3</A>
+<PRE>
+ADDED: password per shard auth
+</PRE>
+<HR size=1 NOSHADE><P><a NAME="rev1.4"></a>
+ Revision <A HREF="admin_service.cfg?rev=1.4&amp;content-type=text/x-cvsweb-markup"><b>1.4</b></A> / (<A HREF="/cvs/cvsweb.cgi/~checkout~/code/nelns/admin_service/admin_service.cfg?rev=1.4&amp;content-type=text/plain" target="cvs_checkout" onClick="window.open('/cvs/cvsweb.cgi/~checkout~/code/nelns/admin_service/admin_service.cfg?rev=1.4&amp;content-type=text/plain','cvs_checkout','resizeable,scrollbars');"><b>download</b></A>) - <a href="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cfg?annotate=1.4">annotate</a> - <A HREF="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cfg?r1=1.4">[select for diffs]</A>
+, <i>Tue Nov 13 15:13:14 2001 UTC</i> (8 months, 1 week ago) by <i>lecroart</i>
+<BR>Branch: <b><A HREF="admin_service.cfg?only_with_tag=MAIN">MAIN</A>
+</b>
+<BR>Changes since <b>1.3: +3 -6
+ lines</b><BR>Diff to previous <A HREF="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cfg.diff?r1=1.3&amp;r2=1.4">1.3</A>
+<PRE>
+#update cfg
+</PRE>
+<HR size=1 NOSHADE><P><a NAME="rev1.3"></a>
+ Revision <A HREF="admin_service.cfg?rev=1.3&amp;content-type=text/x-cvsweb-markup"><b>1.3</b></A> / (<A HREF="/cvs/cvsweb.cgi/~checkout~/code/nelns/admin_service/admin_service.cfg?rev=1.3&amp;content-type=text/plain" target="cvs_checkout" onClick="window.open('/cvs/cvsweb.cgi/~checkout~/code/nelns/admin_service/admin_service.cfg?rev=1.3&amp;content-type=text/plain','cvs_checkout','resizeable,scrollbars');"><b>download</b></A>) - <a href="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cfg?annotate=1.3">annotate</a> - <b>[selected]</b>, <i>Wed Jun 27 08:34:07 2001 UTC</i> (12 months, 3 weeks ago) by <i>lecroart</i>
+<BR>Branch: <b><A HREF="admin_service.cfg?only_with_tag=MAIN">MAIN</A>
+</b>
+<BR>Changes since <b>1.2: +5 -0
+ lines</b><BR>Diff to previous <A HREF="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cfg.diff?r1=1.2&amp;r2=1.3">1.2</A>
+<PRE>
+ADDED: win32 console position
+</PRE>
+<HR size=1 NOSHADE><P><a NAME="rev1.2"></a>
+ Revision <A HREF="admin_service.cfg?rev=1.2&amp;content-type=text/x-cvsweb-markup"><b>1.2</b></A> / (<A HREF="/cvs/cvsweb.cgi/~checkout~/code/nelns/admin_service/admin_service.cfg?rev=1.2&amp;content-type=text/plain" target="cvs_checkout" onClick="window.open('/cvs/cvsweb.cgi/~checkout~/code/nelns/admin_service/admin_service.cfg?rev=1.2&amp;content-type=text/plain','cvs_checkout','resizeable,scrollbars');"><b>download</b></A>) - <a href="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cfg?annotate=1.2">annotate</a> - <A HREF="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cfg?r1=1.2">[select for diffs]</A>
+, <i>Thu Jun 7 16:19:05 2001 UTC</i> (13 months, 2 weeks ago) by <i>lecroart</i>
+<BR>Branch: <b><A HREF="admin_service.cfg?only_with_tag=MAIN">MAIN</A>
+</b>
+<BR>Changes since <b>1.1: +2 -1
+ lines</b><BR>Diff to previous <A HREF="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cfg.diff?r1=1.1&amp;r2=1.2">1.1</A>
+ to selected <A HREF="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cfg.diff?r1=1.3&amp;r2=1.2">1.3</A>
+<PRE>
+ADDED: commands system
+</PRE>
+<HR size=1 NOSHADE><P><a NAME="rev1.1"></a>
+ Revision <A HREF="admin_service.cfg?rev=1.1&amp;content-type=text/x-cvsweb-markup"><b>1.1</b></A> / (<A HREF="/cvs/cvsweb.cgi/~checkout~/code/nelns/admin_service/admin_service.cfg?rev=1.1&amp;content-type=text/plain" target="cvs_checkout" onClick="window.open('/cvs/cvsweb.cgi/~checkout~/code/nelns/admin_service/admin_service.cfg?rev=1.1&amp;content-type=text/plain','cvs_checkout','resizeable,scrollbars');"><b>download</b></A>) - <a href="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cfg?annotate=1.1">annotate</a> - <A HREF="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cfg?r1=1.1">[select for diffs]</A>
+, <i>Fri May 18 16:49:42 2001 UTC</i> (14 months ago) by <i>lecroart</i>
+<BR>Branch: <b><A HREF="admin_service.cfg?only_with_tag=MAIN">MAIN</A>
+</b>
+<BR>Diff to selected <A HREF="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cfg.diff?r1=1.3&amp;r2=1.1">1.3</A>
+<PRE>
+ADDED: cfg file for example purpose
+</PRE>
+
+<!-- block -->
+<TABLE bgcolor="#dddddd" CELLSPACING=0 CELLPADDING=0 BORDER=0 width=100%><tr><td width=1% valign=middle><img width=6 height=14 hspace=2 vspace=2 src="http://www.nevrax.org/inc/img/reddots.gif"></TD>
+ <TD><B>Request Diffs</B></TD>
+ <TD ALIGN=RIGHT> </td>
+</tr></table>
+<P>
+<P>
+<FORM METHOD="GET" ACTION="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cfg.diff" NAME="diff_select">
+Diffs between
+<SELECT NAME="r1">
+<OPTION VALUE="text" SELECTED>Use Text Field
+<OPTION VALUE="1:MAIN">MAIN
+<OPTION VALUE="1.6:HEAD">HEAD
+</SELECT>
+<INPUT TYPE="TEXT" SIZE="12" NAME="tr1" VALUE="1.3" onChange='document.diff_select.r1.selectedIndex=0'>
+ and
+<SELECT NAME="r2">
+<OPTION VALUE="text" SELECTED>Use Text Field
+<OPTION VALUE="1:MAIN">MAIN
+<OPTION VALUE="1.6:HEAD">HEAD
+</SELECT>
+<INPUT TYPE="TEXT" SIZE="12" NAME="tr2" VALUE="1.6" onChange='docuement.diff_select.r2.selectedIndex=0'>
+<BR>Type of Diff should be a&nbsp;<SELECT NAME="f">
+<OPTION VALUE=h SELECTED>Colored Diff<OPTION VALUE=H>Long Colored Diff<OPTION VALUE=u>Unidiff<OPTION VALUE=c>Context Diff<OPTION VALUE=s>Side by Side</SELECT><INPUT TYPE=SUBMIT VALUE=" Get Diffs ">
+</FORM>
+
+<!-- block -->
+<TABLE bgcolor="#dddddd" CELLSPACING=0 CELLPADDING=0 BORDER=0 width=100%><tr><td width=1% valign=middle><img width=6 height=14 hspace=2 vspace=2 src="http://www.nevrax.org/inc/img/reddots.gif"></TD>
+ <TD><B>Select branch</B></TD>
+ <TD ALIGN=RIGHT> </td>
+</tr></table>
+<P>
+<P>
+<A name=branch></A>
+<FORM METHOD="GET" ACTION="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cfg">
+View only Branch:
+<SELECT NAME="only_with_tag" onchange="submit()">
+<OPTION VALUE="">Show all branches
+<OPTION>MAIN
+</SELECT>
+<INPUT TYPE=SUBMIT VALUE=" View Branch ">
+</FORM>
+<A name=logsort></A>
+<FORM METHOD="GET" ACTION="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cfg">
+Sort log by:
+<SELECT NAME="logsort" onchange="submit()">
+<OPTION VALUE=cvs>Not sorted<OPTION VALUE=date SELECTED>Commit date<OPTION VALUE=rev>Revision</SELECT>
+<INPUT TYPE=SUBMIT VALUE=" Sort ">
+</FORM>
+
+<!-- footer -->
+<BR><FONT Size=+5>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </FONT>
+</TD>
+<TD WIDTH=15><IMG SRC=http://www.nevrax.org/inc/img/pixel.gif WIDTH=15 HEIGHT=15 BORDER=0 ALT=""></TD>
+</TR>
+</TABLE>
+</BODY>
+</HTML></BODY></HTML>
diff --git a/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cfg?r1=1.5 b/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cfg?r1=1.5
new file mode 100644
index 00000000..d12b9622
--- /dev/null
+++ b/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cfg?r1=1.5
@@ -0,0 +1,187 @@
+<!doctype html public "-//W3C//DTD HTML 4.0 Transitional//EN" "http://www.w3.org/TR/REC-html40/loose.dtd">
+<HTML>
+<HEAD>
+ <TITLE>nevrax.org : cvs</TITLE>
+ <META name="keywords" content="freesoftware,nel,newt,snowballs,richard stallman,GNU,Multi-User Online World">
+
+ <LINK REL=stylesheet TYPE="text/css" HREF="http://www.nevrax.org/inc/css/nevrax.css">
+</HEAD>
+<BODY MARGINHEIGHT="0" MARGINWIDTH="0">
+
+<!-- uplinks -->
+<TABLE CELLSPACING=0 CELLPADDING=0 BORDER=0>
+ <TR>
+ <TD WIDTH=16><IMG SRC="http://www.nevrax.org/inc/img/pixel.gif" WIDTH="16" HEIGHT="16" BORDER=0 ALT=""></TD>
+ <TD WIDTH=140 BGCOLOR=#dddddd><IMG SRC="http://www.nevrax.org/inc/img/pixel.gif" WIDTH="140" HEIGHT="16" BORDER=0 ALT=""></TD>
+ <TD WIDTH=16><IMG SRC="http://www.nevrax.org/inc/img/pixel.gif" WIDTH="16" HEIGHT="16" BORDER=0 ALT=""></TD>
+ <TD><IMG width=6 height=14 SRC="http://www.nevrax.org/inc/img/reddots.gif" ALT="#" VSPACE=2 HSPACE=2 BORDER=0 ></TD><TD VALIGN=middle>&nbsp;<A CLASS=uplinks HREF=http://www.nevrax.org><b>Home</B></FONT></A>&nbsp;&nbsp;&nbsp;</TD>
+ <TD><IMG width=6 height=14 SRC="http://www.nevrax.org/inc/img/reddots.gif" ALT="#" VSPACE=2 HSPACE=2 BORDER=0 ></TD><TD VALIGN=middle>&nbsp;<A CLASS=uplinks HREF=http://www.nevrax.com><b>nevrax.com</B></FONT></A>&nbsp;&nbsp;&nbsp;</TD>
+ </TR>
+</TABLE>
+
+<!-- banner Nevrax -->
+<TABLE CELLSPACING=0 CELLPADDING=0 BORDER=0 WIDTH=100%>
+ <TR><TD BGCOLOR="#000000" BACKGROUND="http://www.nevrax.org/inc/img/black_banner.jpg"><A HREF="http://www.nevrax.org"><IMG SRC="http://www.nevrax.org/inc/img/nevrax.gif" WIDTH="170" HEIGHT="45" BORDER=0 ALT="Nevrax" ></A></TD></TR>
+</TABLE>
+
+<!-- main table -->
+<TABLE CELLSPACING=0 CELLPADDING=0 BORDER=0 height=100%>
+ <TR>
+ <TD WIDTH=16><IMG SRC="http://www.nevrax.org/inc/img/pixel.gif" WIDTH="16" HEIGHT="10" BORDER=0 ALT=""></TD>
+ <TD WIDTH=140 BGCOLOR=#dddddd VALIGN=TOP ALIGN=middle><IMG SRC="http://www.nevrax.org/inc/img/pixel.gif" WIDTH="140" HEIGHT="10" BORDER=0 ALT="">
+
+ <!------ Begin Box ------>
+ <TABLE BORDER=0 CELLSPACING=0 CELLPADDING=0 BGCOLOR=black><TR><TD><TABLE border=0 cellspacing=2 cellpadding=0 width=120><tr><TD ALIGN=middle bgcolor=black>
+ <FONT COLOR=white FACE="sans-serif"><B>Nevrax.org</B></FONT></TD></TR><tr><td colspan=2 bgcolor=#FFFFFF>
+ <TABLE cellspacing=0 cellpadding=1 border=0>
+ <tr><td ALIGN=middle><a class='linkbox' href="http://www.nevrax.org/news/" TITLE="Rubrique news"><img width=13 height=15 hspace=5 border=0 src=http://www.nevrax.org/inc/img/picto-news.gif ALT=#></A></td><td><a class='linkbox' href="http://www.nevrax.org/news/" TITLE="News">News</a></td></tr>
+ <tr><td ALIGN=middle><a class='linkbox' href="http://www.nevrax.org/mail/" TITLE="Rubrique mail"><img width=15 height=11 hspace=5 border=0 src=http://www.nevrax.org/inc/img/picto-mail.gif ALT=#></A></td><td><a class='linkbox' href="http://www.nevrax.org/mail/" TITLE="Mailing list archive">Mailing-list</a></td></tr>
+ <tr><td ALIGN=middle><a class='linkbox' href="http://www.nevrax.org/docs/" TITLE="Rubrique docs"><img width=14 height=16 hspace=5 border=0 src=http://www.nevrax.org/inc/img/picto-docs.gif ALT=#></A></td><td><a class='linkbox' href="http://www.nevrax.org/docs/" TITLE="Documentation">Documentation</a></td></tr>
+ <tr><td ALIGN=middle><a class='linkbox' href="http://www.nevrax.org/cvs/" TITLE="Rubrique cvs"><img width=13 height=17 hspace=5 border=0 src=http://www.nevrax.org/inc/img/picto-cvs.gif ALT=#></A></td><td><a class='linkbox' href="http://www.nevrax.org/cvs/" TITLE="CVS Web">CVS</a></td></tr>
+ <tr><td ALIGN=middle><a class='linkbox' href="http://www.nevrax.org/bugs/" TITLE="Rubrique bugs"><img width=20 height=16 hspace=5 border=0 src=http://www.nevrax.org/inc/img/picto-bugs.gif ALT=#></A></td><td><a class='linkbox' href="http://www.nevrax.org/bugs/" TITLE="Bugtracking">Bugs</a></td></tr>
+ <tr><td ALIGN=middle><a class='linkbox' href="http://www.nevrax.org/free/" TITLE="Rubrique license"><img width=18 height=12 hspace=5 border=0 src=http://www.nevrax.org/inc/img/picto-free.gif ALT=#></A></td><td><a class='linkbox' href="http://www.nevrax.org/free/" TITLE="Free Software">Free software</a></td></tr>
+ </TABLE>
+ </TD></TR></TABLE></TD></TR></TABLE>
+ <!------ End Box ------>
+
+ </TD>
+ <TD WIDTH=15><IMG SRC="http://www.nevrax.org/inc/img/pixel.gif" WIDTH="16" HEIGHT="16" BORDER=0 ALT=""></TD>
+ <TD ALIGN=left valign=top><IMG SRC="http://www.nevrax.org/inc/img/pixel.gif" WIDTH="140" HEIGHT="10" BORDER=0 ALT="">
+
+<!-- title -->
+<TABLE background="http://www.nevrax.org/inc/img/redline.gif" CELLSPACING=0 CELLPADDING=0 BORDER=0 width=100%><tr><td>
+<A HREF="http://www.nevrax.org/cvs/"><img src="http://www.nevrax.org/inc/img/t_cvs.gif" ALT="cvs" HEIGHT=20 BORDER=0></A>
+</td><td><IMG SRC="http://www.nevrax.org/inc/img/pixel.gif" WIDTH="1" HEIGHT="1" BORDER=0 ALT="">
+</td></tr></table>
+
+<!-- title -->
+<table width=100%><tr><td align=left><b> <a href="/cvs/cvsweb.cgi/">Nevrax</a> / <a href="/cvs/cvsweb.cgi/code/">code</a> / <a href="/cvs/cvsweb.cgi/code/nelns/">nelns</a> / <a href="/cvs/cvsweb.cgi/code/nelns/admin_service/">admin_service</a> / admin_service.cfg</b></td><td align=right><b></b></td></TR></TABLE>
+
+<!-- block -->
+<TABLE bgcolor="#dddddd" CELLSPACING=0 CELLPADDING=0 BORDER=0 width=100%><tr><td width=1% valign=middle><img width=6 height=14 hspace=2 vspace=2 src="http://www.nevrax.org/inc/img/reddots.gif"></TD>
+ <TD><B>admin_service.cfg</B></TD>
+ <TD ALIGN=RIGHT> </td>
+</tr></table>
+<P>
+<p>Default branch: MAIN<BR>
+<HR size=1 NOSHADE><P><a NAME="rev1.6"></a><a NAME="HEAD"></a><a NAME="MAIN"></a>
+ Revision <A HREF="admin_service.cfg?rev=1.6&amp;content-type=text/x-cvsweb-markup"><b>1.6</b></A> / (<A HREF="/cvs/cvsweb.cgi/~checkout~/code/nelns/admin_service/admin_service.cfg?rev=1.6&amp;content-type=text/plain" target="cvs_checkout" onClick="window.open('/cvs/cvsweb.cgi/~checkout~/code/nelns/admin_service/admin_service.cfg?rev=1.6&amp;content-type=text/plain','cvs_checkout','resizeable,scrollbars');"><b>download</b></A>) - <a href="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cfg?annotate=1.6">annotate</a> - <A HREF="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cfg?r1=1.6">[select for diffs]</A>
+, <i>Tue Apr 23 15:54:07 2002 UTC</i> (3 months ago) by <i>lecroart</i>
+<BR>Branch: <b><A HREF="admin_service.cfg?only_with_tag=MAIN">MAIN</A>
+</b>
+<BR>CVS Tags: <b><A HREF="admin_service.cfg?only_with_tag=HEAD">HEAD</A>
+</b><BR>Changes since <b>1.5: +2 -2
+ lines</b><BR>Diff to previous <A HREF="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cfg.diff?r1=1.5&amp;r2=1.6">1.5</A>
+<PRE>
+ADDED: common.cfg
+</PRE>
+<HR size=1 NOSHADE><P><a NAME="rev1.5"></a>
+ Revision <A HREF="admin_service.cfg?rev=1.5&amp;content-type=text/x-cvsweb-markup"><b>1.5</b></A> / (<A HREF="/cvs/cvsweb.cgi/~checkout~/code/nelns/admin_service/admin_service.cfg?rev=1.5&amp;content-type=text/plain" target="cvs_checkout" onClick="window.open('/cvs/cvsweb.cgi/~checkout~/code/nelns/admin_service/admin_service.cfg?rev=1.5&amp;content-type=text/plain','cvs_checkout','resizeable,scrollbars');"><b>download</b></A>) - <a href="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cfg?annotate=1.5">annotate</a> - <b>[selected]</b>, <i>Fri Mar 1 10:20:45 2002 UTC</i> (4 months, 3 weeks ago) by <i>lecroart</i>
+<BR>Branch: <b><A HREF="admin_service.cfg?only_with_tag=MAIN">MAIN</A>
+</b>
+<BR>Changes since <b>1.4: +2 -0
+ lines</b><BR>Diff to previous <A HREF="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cfg.diff?r1=1.4&amp;r2=1.5">1.4</A>
+<PRE>
+ADDED: password per shard auth
+</PRE>
+<HR size=1 NOSHADE><P><a NAME="rev1.4"></a>
+ Revision <A HREF="admin_service.cfg?rev=1.4&amp;content-type=text/x-cvsweb-markup"><b>1.4</b></A> / (<A HREF="/cvs/cvsweb.cgi/~checkout~/code/nelns/admin_service/admin_service.cfg?rev=1.4&amp;content-type=text/plain" target="cvs_checkout" onClick="window.open('/cvs/cvsweb.cgi/~checkout~/code/nelns/admin_service/admin_service.cfg?rev=1.4&amp;content-type=text/plain','cvs_checkout','resizeable,scrollbars');"><b>download</b></A>) - <a href="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cfg?annotate=1.4">annotate</a> - <A HREF="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cfg?r1=1.4">[select for diffs]</A>
+, <i>Tue Nov 13 15:13:14 2001 UTC</i> (8 months, 1 week ago) by <i>lecroart</i>
+<BR>Branch: <b><A HREF="admin_service.cfg?only_with_tag=MAIN">MAIN</A>
+</b>
+<BR>Changes since <b>1.3: +3 -6
+ lines</b><BR>Diff to previous <A HREF="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cfg.diff?r1=1.3&amp;r2=1.4">1.3</A>
+ to selected <A HREF="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cfg.diff?r1=1.5&amp;r2=1.4">1.5</A>
+<PRE>
+#update cfg
+</PRE>
+<HR size=1 NOSHADE><P><a NAME="rev1.3"></a>
+ Revision <A HREF="admin_service.cfg?rev=1.3&amp;content-type=text/x-cvsweb-markup"><b>1.3</b></A> / (<A HREF="/cvs/cvsweb.cgi/~checkout~/code/nelns/admin_service/admin_service.cfg?rev=1.3&amp;content-type=text/plain" target="cvs_checkout" onClick="window.open('/cvs/cvsweb.cgi/~checkout~/code/nelns/admin_service/admin_service.cfg?rev=1.3&amp;content-type=text/plain','cvs_checkout','resizeable,scrollbars');"><b>download</b></A>) - <a href="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cfg?annotate=1.3">annotate</a> - <A HREF="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cfg?r1=1.3">[select for diffs]</A>
+, <i>Wed Jun 27 08:34:07 2001 UTC</i> (12 months, 3 weeks ago) by <i>lecroart</i>
+<BR>Branch: <b><A HREF="admin_service.cfg?only_with_tag=MAIN">MAIN</A>
+</b>
+<BR>Changes since <b>1.2: +5 -0
+ lines</b><BR>Diff to previous <A HREF="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cfg.diff?r1=1.2&amp;r2=1.3">1.2</A>
+ to selected <A HREF="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cfg.diff?r1=1.5&amp;r2=1.3">1.5</A>
+<PRE>
+ADDED: win32 console position
+</PRE>
+<HR size=1 NOSHADE><P><a NAME="rev1.2"></a>
+ Revision <A HREF="admin_service.cfg?rev=1.2&amp;content-type=text/x-cvsweb-markup"><b>1.2</b></A> / (<A HREF="/cvs/cvsweb.cgi/~checkout~/code/nelns/admin_service/admin_service.cfg?rev=1.2&amp;content-type=text/plain" target="cvs_checkout" onClick="window.open('/cvs/cvsweb.cgi/~checkout~/code/nelns/admin_service/admin_service.cfg?rev=1.2&amp;content-type=text/plain','cvs_checkout','resizeable,scrollbars');"><b>download</b></A>) - <a href="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cfg?annotate=1.2">annotate</a> - <A HREF="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cfg?r1=1.2">[select for diffs]</A>
+, <i>Thu Jun 7 16:19:05 2001 UTC</i> (13 months, 2 weeks ago) by <i>lecroart</i>
+<BR>Branch: <b><A HREF="admin_service.cfg?only_with_tag=MAIN">MAIN</A>
+</b>
+<BR>Changes since <b>1.1: +2 -1
+ lines</b><BR>Diff to previous <A HREF="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cfg.diff?r1=1.1&amp;r2=1.2">1.1</A>
+ to selected <A HREF="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cfg.diff?r1=1.5&amp;r2=1.2">1.5</A>
+<PRE>
+ADDED: commands system
+</PRE>
+<HR size=1 NOSHADE><P><a NAME="rev1.1"></a>
+ Revision <A HREF="admin_service.cfg?rev=1.1&amp;content-type=text/x-cvsweb-markup"><b>1.1</b></A> / (<A HREF="/cvs/cvsweb.cgi/~checkout~/code/nelns/admin_service/admin_service.cfg?rev=1.1&amp;content-type=text/plain" target="cvs_checkout" onClick="window.open('/cvs/cvsweb.cgi/~checkout~/code/nelns/admin_service/admin_service.cfg?rev=1.1&amp;content-type=text/plain','cvs_checkout','resizeable,scrollbars');"><b>download</b></A>) - <a href="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cfg?annotate=1.1">annotate</a> - <A HREF="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cfg?r1=1.1">[select for diffs]</A>
+, <i>Fri May 18 16:49:42 2001 UTC</i> (14 months ago) by <i>lecroart</i>
+<BR>Branch: <b><A HREF="admin_service.cfg?only_with_tag=MAIN">MAIN</A>
+</b>
+<BR>Diff to selected <A HREF="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cfg.diff?r1=1.5&amp;r2=1.1">1.5</A>
+<PRE>
+ADDED: cfg file for example purpose
+</PRE>
+
+<!-- block -->
+<TABLE bgcolor="#dddddd" CELLSPACING=0 CELLPADDING=0 BORDER=0 width=100%><tr><td width=1% valign=middle><img width=6 height=14 hspace=2 vspace=2 src="http://www.nevrax.org/inc/img/reddots.gif"></TD>
+ <TD><B>Request Diffs</B></TD>
+ <TD ALIGN=RIGHT> </td>
+</tr></table>
+<P>
+<P>
+<FORM METHOD="GET" ACTION="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cfg.diff" NAME="diff_select">
+Diffs between
+<SELECT NAME="r1">
+<OPTION VALUE="text" SELECTED>Use Text Field
+<OPTION VALUE="1:MAIN">MAIN
+<OPTION VALUE="1.6:HEAD">HEAD
+</SELECT>
+<INPUT TYPE="TEXT" SIZE="12" NAME="tr1" VALUE="1.5" onChange='document.diff_select.r1.selectedIndex=0'>
+ and
+<SELECT NAME="r2">
+<OPTION VALUE="text" SELECTED>Use Text Field
+<OPTION VALUE="1:MAIN">MAIN
+<OPTION VALUE="1.6:HEAD">HEAD
+</SELECT>
+<INPUT TYPE="TEXT" SIZE="12" NAME="tr2" VALUE="1.6" onChange='docuement.diff_select.r2.selectedIndex=0'>
+<BR>Type of Diff should be a&nbsp;<SELECT NAME="f">
+<OPTION VALUE=h SELECTED>Colored Diff<OPTION VALUE=H>Long Colored Diff<OPTION VALUE=u>Unidiff<OPTION VALUE=c>Context Diff<OPTION VALUE=s>Side by Side</SELECT><INPUT TYPE=SUBMIT VALUE=" Get Diffs ">
+</FORM>
+
+<!-- block -->
+<TABLE bgcolor="#dddddd" CELLSPACING=0 CELLPADDING=0 BORDER=0 width=100%><tr><td width=1% valign=middle><img width=6 height=14 hspace=2 vspace=2 src="http://www.nevrax.org/inc/img/reddots.gif"></TD>
+ <TD><B>Select branch</B></TD>
+ <TD ALIGN=RIGHT> </td>
+</tr></table>
+<P>
+<P>
+<A name=branch></A>
+<FORM METHOD="GET" ACTION="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cfg">
+View only Branch:
+<SELECT NAME="only_with_tag" onchange="submit()">
+<OPTION VALUE="">Show all branches
+<OPTION>MAIN
+</SELECT>
+<INPUT TYPE=SUBMIT VALUE=" View Branch ">
+</FORM>
+<A name=logsort></A>
+<FORM METHOD="GET" ACTION="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cfg">
+Sort log by:
+<SELECT NAME="logsort" onchange="submit()">
+<OPTION VALUE=cvs>Not sorted<OPTION VALUE=date SELECTED>Commit date<OPTION VALUE=rev>Revision</SELECT>
+<INPUT TYPE=SUBMIT VALUE=" Sort ">
+</FORM>
+
+<!-- footer -->
+<BR><FONT Size=+5>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </FONT>
+</TD>
+<TD WIDTH=15><IMG SRC=http://www.nevrax.org/inc/img/pixel.gif WIDTH=15 HEIGHT=15 BORDER=0 ALT=""></TD>
+</TR>
+</TABLE>
+</BODY>
+</HTML></BODY></HTML>
diff --git a/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cfg?r1=1.6 b/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cfg?r1=1.6
new file mode 100644
index 00000000..b39a06d0
--- /dev/null
+++ b/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cfg?r1=1.6
@@ -0,0 +1,188 @@
+<!doctype html public "-//W3C//DTD HTML 4.0 Transitional//EN" "http://www.w3.org/TR/REC-html40/loose.dtd">
+<HTML>
+<HEAD>
+ <TITLE>nevrax.org : cvs</TITLE>
+ <META name="keywords" content="freesoftware,nel,newt,snowballs,richard stallman,GNU,Multi-User Online World">
+
+ <LINK REL=stylesheet TYPE="text/css" HREF="http://www.nevrax.org/inc/css/nevrax.css">
+</HEAD>
+<BODY MARGINHEIGHT="0" MARGINWIDTH="0">
+
+<!-- uplinks -->
+<TABLE CELLSPACING=0 CELLPADDING=0 BORDER=0>
+ <TR>
+ <TD WIDTH=16><IMG SRC="http://www.nevrax.org/inc/img/pixel.gif" WIDTH="16" HEIGHT="16" BORDER=0 ALT=""></TD>
+ <TD WIDTH=140 BGCOLOR=#dddddd><IMG SRC="http://www.nevrax.org/inc/img/pixel.gif" WIDTH="140" HEIGHT="16" BORDER=0 ALT=""></TD>
+ <TD WIDTH=16><IMG SRC="http://www.nevrax.org/inc/img/pixel.gif" WIDTH="16" HEIGHT="16" BORDER=0 ALT=""></TD>
+ <TD><IMG width=6 height=14 SRC="http://www.nevrax.org/inc/img/reddots.gif" ALT="#" VSPACE=2 HSPACE=2 BORDER=0 ></TD><TD VALIGN=middle>&nbsp;<A CLASS=uplinks HREF=http://www.nevrax.org><b>Home</B></FONT></A>&nbsp;&nbsp;&nbsp;</TD>
+ <TD><IMG width=6 height=14 SRC="http://www.nevrax.org/inc/img/reddots.gif" ALT="#" VSPACE=2 HSPACE=2 BORDER=0 ></TD><TD VALIGN=middle>&nbsp;<A CLASS=uplinks HREF=http://www.nevrax.com><b>nevrax.com</B></FONT></A>&nbsp;&nbsp;&nbsp;</TD>
+ </TR>
+</TABLE>
+
+<!-- banner Nevrax -->
+<TABLE CELLSPACING=0 CELLPADDING=0 BORDER=0 WIDTH=100%>
+ <TR><TD BGCOLOR="#000000" BACKGROUND="http://www.nevrax.org/inc/img/black_banner.jpg"><A HREF="http://www.nevrax.org"><IMG SRC="http://www.nevrax.org/inc/img/nevrax.gif" WIDTH="170" HEIGHT="45" BORDER=0 ALT="Nevrax" ></A></TD></TR>
+</TABLE>
+
+<!-- main table -->
+<TABLE CELLSPACING=0 CELLPADDING=0 BORDER=0 height=100%>
+ <TR>
+ <TD WIDTH=16><IMG SRC="http://www.nevrax.org/inc/img/pixel.gif" WIDTH="16" HEIGHT="10" BORDER=0 ALT=""></TD>
+ <TD WIDTH=140 BGCOLOR=#dddddd VALIGN=TOP ALIGN=middle><IMG SRC="http://www.nevrax.org/inc/img/pixel.gif" WIDTH="140" HEIGHT="10" BORDER=0 ALT="">
+
+ <!------ Begin Box ------>
+ <TABLE BORDER=0 CELLSPACING=0 CELLPADDING=0 BGCOLOR=black><TR><TD><TABLE border=0 cellspacing=2 cellpadding=0 width=120><tr><TD ALIGN=middle bgcolor=black>
+ <FONT COLOR=white FACE="sans-serif"><B>Nevrax.org</B></FONT></TD></TR><tr><td colspan=2 bgcolor=#FFFFFF>
+ <TABLE cellspacing=0 cellpadding=1 border=0>
+ <tr><td ALIGN=middle><a class='linkbox' href="http://www.nevrax.org/news/" TITLE="Rubrique news"><img width=13 height=15 hspace=5 border=0 src=http://www.nevrax.org/inc/img/picto-news.gif ALT=#></A></td><td><a class='linkbox' href="http://www.nevrax.org/news/" TITLE="News">News</a></td></tr>
+ <tr><td ALIGN=middle><a class='linkbox' href="http://www.nevrax.org/mail/" TITLE="Rubrique mail"><img width=15 height=11 hspace=5 border=0 src=http://www.nevrax.org/inc/img/picto-mail.gif ALT=#></A></td><td><a class='linkbox' href="http://www.nevrax.org/mail/" TITLE="Mailing list archive">Mailing-list</a></td></tr>
+ <tr><td ALIGN=middle><a class='linkbox' href="http://www.nevrax.org/docs/" TITLE="Rubrique docs"><img width=14 height=16 hspace=5 border=0 src=http://www.nevrax.org/inc/img/picto-docs.gif ALT=#></A></td><td><a class='linkbox' href="http://www.nevrax.org/docs/" TITLE="Documentation">Documentation</a></td></tr>
+ <tr><td ALIGN=middle><a class='linkbox' href="http://www.nevrax.org/cvs/" TITLE="Rubrique cvs"><img width=13 height=17 hspace=5 border=0 src=http://www.nevrax.org/inc/img/picto-cvs.gif ALT=#></A></td><td><a class='linkbox' href="http://www.nevrax.org/cvs/" TITLE="CVS Web">CVS</a></td></tr>
+ <tr><td ALIGN=middle><a class='linkbox' href="http://www.nevrax.org/bugs/" TITLE="Rubrique bugs"><img width=20 height=16 hspace=5 border=0 src=http://www.nevrax.org/inc/img/picto-bugs.gif ALT=#></A></td><td><a class='linkbox' href="http://www.nevrax.org/bugs/" TITLE="Bugtracking">Bugs</a></td></tr>
+ <tr><td ALIGN=middle><a class='linkbox' href="http://www.nevrax.org/free/" TITLE="Rubrique license"><img width=18 height=12 hspace=5 border=0 src=http://www.nevrax.org/inc/img/picto-free.gif ALT=#></A></td><td><a class='linkbox' href="http://www.nevrax.org/free/" TITLE="Free Software">Free software</a></td></tr>
+ </TABLE>
+ </TD></TR></TABLE></TD></TR></TABLE>
+ <!------ End Box ------>
+
+ </TD>
+ <TD WIDTH=15><IMG SRC="http://www.nevrax.org/inc/img/pixel.gif" WIDTH="16" HEIGHT="16" BORDER=0 ALT=""></TD>
+ <TD ALIGN=left valign=top><IMG SRC="http://www.nevrax.org/inc/img/pixel.gif" WIDTH="140" HEIGHT="10" BORDER=0 ALT="">
+
+<!-- title -->
+<TABLE background="http://www.nevrax.org/inc/img/redline.gif" CELLSPACING=0 CELLPADDING=0 BORDER=0 width=100%><tr><td>
+<A HREF="http://www.nevrax.org/cvs/"><img src="http://www.nevrax.org/inc/img/t_cvs.gif" ALT="cvs" HEIGHT=20 BORDER=0></A>
+</td><td><IMG SRC="http://www.nevrax.org/inc/img/pixel.gif" WIDTH="1" HEIGHT="1" BORDER=0 ALT="">
+</td></tr></table>
+
+<!-- title -->
+<table width=100%><tr><td align=left><b> <a href="/cvs/cvsweb.cgi/">Nevrax</a> / <a href="/cvs/cvsweb.cgi/code/">code</a> / <a href="/cvs/cvsweb.cgi/code/nelns/">nelns</a> / <a href="/cvs/cvsweb.cgi/code/nelns/admin_service/">admin_service</a> / admin_service.cfg</b></td><td align=right><b></b></td></TR></TABLE>
+
+<!-- block -->
+<TABLE bgcolor="#dddddd" CELLSPACING=0 CELLPADDING=0 BORDER=0 width=100%><tr><td width=1% valign=middle><img width=6 height=14 hspace=2 vspace=2 src="http://www.nevrax.org/inc/img/reddots.gif"></TD>
+ <TD><B>admin_service.cfg</B></TD>
+ <TD ALIGN=RIGHT> </td>
+</tr></table>
+<P>
+<p>Default branch: MAIN<BR>
+<HR size=1 NOSHADE><P><a NAME="rev1.6"></a><a NAME="HEAD"></a><a NAME="MAIN"></a>
+ Revision <A HREF="admin_service.cfg?rev=1.6&amp;content-type=text/x-cvsweb-markup"><b>1.6</b></A> / (<A HREF="/cvs/cvsweb.cgi/~checkout~/code/nelns/admin_service/admin_service.cfg?rev=1.6&amp;content-type=text/plain" target="cvs_checkout" onClick="window.open('/cvs/cvsweb.cgi/~checkout~/code/nelns/admin_service/admin_service.cfg?rev=1.6&amp;content-type=text/plain','cvs_checkout','resizeable,scrollbars');"><b>download</b></A>) - <a href="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cfg?annotate=1.6">annotate</a> - <b>[selected]</b>, <i>Tue Apr 23 15:54:07 2002 UTC</i> (3 months ago) by <i>lecroart</i>
+<BR>Branch: <b><A HREF="admin_service.cfg?only_with_tag=MAIN">MAIN</A>
+</b>
+<BR>CVS Tags: <b><A HREF="admin_service.cfg?only_with_tag=HEAD">HEAD</A>
+</b><BR>Changes since <b>1.5: +2 -2
+ lines</b><BR>Diff to previous <A HREF="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cfg.diff?r1=1.5&amp;r2=1.6">1.5</A>
+<PRE>
+ADDED: common.cfg
+</PRE>
+<HR size=1 NOSHADE><P><a NAME="rev1.5"></a>
+ Revision <A HREF="admin_service.cfg?rev=1.5&amp;content-type=text/x-cvsweb-markup"><b>1.5</b></A> / (<A HREF="/cvs/cvsweb.cgi/~checkout~/code/nelns/admin_service/admin_service.cfg?rev=1.5&amp;content-type=text/plain" target="cvs_checkout" onClick="window.open('/cvs/cvsweb.cgi/~checkout~/code/nelns/admin_service/admin_service.cfg?rev=1.5&amp;content-type=text/plain','cvs_checkout','resizeable,scrollbars');"><b>download</b></A>) - <a href="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cfg?annotate=1.5">annotate</a> - <A HREF="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cfg?r1=1.5">[select for diffs]</A>
+, <i>Fri Mar 1 10:20:45 2002 UTC</i> (4 months, 3 weeks ago) by <i>lecroart</i>
+<BR>Branch: <b><A HREF="admin_service.cfg?only_with_tag=MAIN">MAIN</A>
+</b>
+<BR>Changes since <b>1.4: +2 -0
+ lines</b><BR>Diff to previous <A HREF="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cfg.diff?r1=1.4&amp;r2=1.5">1.4</A>
+ to selected <A HREF="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cfg.diff?r1=1.6&amp;r2=1.5">1.6</A>
+<PRE>
+ADDED: password per shard auth
+</PRE>
+<HR size=1 NOSHADE><P><a NAME="rev1.4"></a>
+ Revision <A HREF="admin_service.cfg?rev=1.4&amp;content-type=text/x-cvsweb-markup"><b>1.4</b></A> / (<A HREF="/cvs/cvsweb.cgi/~checkout~/code/nelns/admin_service/admin_service.cfg?rev=1.4&amp;content-type=text/plain" target="cvs_checkout" onClick="window.open('/cvs/cvsweb.cgi/~checkout~/code/nelns/admin_service/admin_service.cfg?rev=1.4&amp;content-type=text/plain','cvs_checkout','resizeable,scrollbars');"><b>download</b></A>) - <a href="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cfg?annotate=1.4">annotate</a> - <A HREF="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cfg?r1=1.4">[select for diffs]</A>
+, <i>Tue Nov 13 15:13:14 2001 UTC</i> (8 months, 1 week ago) by <i>lecroart</i>
+<BR>Branch: <b><A HREF="admin_service.cfg?only_with_tag=MAIN">MAIN</A>
+</b>
+<BR>Changes since <b>1.3: +3 -6
+ lines</b><BR>Diff to previous <A HREF="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cfg.diff?r1=1.3&amp;r2=1.4">1.3</A>
+ to selected <A HREF="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cfg.diff?r1=1.6&amp;r2=1.4">1.6</A>
+<PRE>
+#update cfg
+</PRE>
+<HR size=1 NOSHADE><P><a NAME="rev1.3"></a>
+ Revision <A HREF="admin_service.cfg?rev=1.3&amp;content-type=text/x-cvsweb-markup"><b>1.3</b></A> / (<A HREF="/cvs/cvsweb.cgi/~checkout~/code/nelns/admin_service/admin_service.cfg?rev=1.3&amp;content-type=text/plain" target="cvs_checkout" onClick="window.open('/cvs/cvsweb.cgi/~checkout~/code/nelns/admin_service/admin_service.cfg?rev=1.3&amp;content-type=text/plain','cvs_checkout','resizeable,scrollbars');"><b>download</b></A>) - <a href="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cfg?annotate=1.3">annotate</a> - <A HREF="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cfg?r1=1.3">[select for diffs]</A>
+, <i>Wed Jun 27 08:34:07 2001 UTC</i> (12 months, 3 weeks ago) by <i>lecroart</i>
+<BR>Branch: <b><A HREF="admin_service.cfg?only_with_tag=MAIN">MAIN</A>
+</b>
+<BR>Changes since <b>1.2: +5 -0
+ lines</b><BR>Diff to previous <A HREF="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cfg.diff?r1=1.2&amp;r2=1.3">1.2</A>
+ to selected <A HREF="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cfg.diff?r1=1.6&amp;r2=1.3">1.6</A>
+<PRE>
+ADDED: win32 console position
+</PRE>
+<HR size=1 NOSHADE><P><a NAME="rev1.2"></a>
+ Revision <A HREF="admin_service.cfg?rev=1.2&amp;content-type=text/x-cvsweb-markup"><b>1.2</b></A> / (<A HREF="/cvs/cvsweb.cgi/~checkout~/code/nelns/admin_service/admin_service.cfg?rev=1.2&amp;content-type=text/plain" target="cvs_checkout" onClick="window.open('/cvs/cvsweb.cgi/~checkout~/code/nelns/admin_service/admin_service.cfg?rev=1.2&amp;content-type=text/plain','cvs_checkout','resizeable,scrollbars');"><b>download</b></A>) - <a href="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cfg?annotate=1.2">annotate</a> - <A HREF="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cfg?r1=1.2">[select for diffs]</A>
+, <i>Thu Jun 7 16:19:05 2001 UTC</i> (13 months, 2 weeks ago) by <i>lecroart</i>
+<BR>Branch: <b><A HREF="admin_service.cfg?only_with_tag=MAIN">MAIN</A>
+</b>
+<BR>Changes since <b>1.1: +2 -1
+ lines</b><BR>Diff to previous <A HREF="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cfg.diff?r1=1.1&amp;r2=1.2">1.1</A>
+ to selected <A HREF="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cfg.diff?r1=1.6&amp;r2=1.2">1.6</A>
+<PRE>
+ADDED: commands system
+</PRE>
+<HR size=1 NOSHADE><P><a NAME="rev1.1"></a>
+ Revision <A HREF="admin_service.cfg?rev=1.1&amp;content-type=text/x-cvsweb-markup"><b>1.1</b></A> / (<A HREF="/cvs/cvsweb.cgi/~checkout~/code/nelns/admin_service/admin_service.cfg?rev=1.1&amp;content-type=text/plain" target="cvs_checkout" onClick="window.open('/cvs/cvsweb.cgi/~checkout~/code/nelns/admin_service/admin_service.cfg?rev=1.1&amp;content-type=text/plain','cvs_checkout','resizeable,scrollbars');"><b>download</b></A>) - <a href="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cfg?annotate=1.1">annotate</a> - <A HREF="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cfg?r1=1.1">[select for diffs]</A>
+, <i>Fri May 18 16:49:42 2001 UTC</i> (14 months ago) by <i>lecroart</i>
+<BR>Branch: <b><A HREF="admin_service.cfg?only_with_tag=MAIN">MAIN</A>
+</b>
+<BR>Diff to selected <A HREF="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cfg.diff?r1=1.6&amp;r2=1.1">1.6</A>
+<PRE>
+ADDED: cfg file for example purpose
+</PRE>
+
+<!-- block -->
+<TABLE bgcolor="#dddddd" CELLSPACING=0 CELLPADDING=0 BORDER=0 width=100%><tr><td width=1% valign=middle><img width=6 height=14 hspace=2 vspace=2 src="http://www.nevrax.org/inc/img/reddots.gif"></TD>
+ <TD><B>Request Diffs</B></TD>
+ <TD ALIGN=RIGHT> </td>
+</tr></table>
+<P>
+<P>
+<FORM METHOD="GET" ACTION="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cfg.diff" NAME="diff_select">
+Diffs between
+<SELECT NAME="r1">
+<OPTION VALUE="text" SELECTED>Use Text Field
+<OPTION VALUE="1:MAIN">MAIN
+<OPTION VALUE="1.6:HEAD">HEAD
+</SELECT>
+<INPUT TYPE="TEXT" SIZE="12" NAME="tr1" VALUE="1.6" onChange='document.diff_select.r1.selectedIndex=0'>
+ and
+<SELECT NAME="r2">
+<OPTION VALUE="text" SELECTED>Use Text Field
+<OPTION VALUE="1:MAIN">MAIN
+<OPTION VALUE="1.6:HEAD">HEAD
+</SELECT>
+<INPUT TYPE="TEXT" SIZE="12" NAME="tr2" VALUE="1.6" onChange='docuement.diff_select.r2.selectedIndex=0'>
+<BR>Type of Diff should be a&nbsp;<SELECT NAME="f">
+<OPTION VALUE=h SELECTED>Colored Diff<OPTION VALUE=H>Long Colored Diff<OPTION VALUE=u>Unidiff<OPTION VALUE=c>Context Diff<OPTION VALUE=s>Side by Side</SELECT><INPUT TYPE=SUBMIT VALUE=" Get Diffs ">
+</FORM>
+
+<!-- block -->
+<TABLE bgcolor="#dddddd" CELLSPACING=0 CELLPADDING=0 BORDER=0 width=100%><tr><td width=1% valign=middle><img width=6 height=14 hspace=2 vspace=2 src="http://www.nevrax.org/inc/img/reddots.gif"></TD>
+ <TD><B>Select branch</B></TD>
+ <TD ALIGN=RIGHT> </td>
+</tr></table>
+<P>
+<P>
+<A name=branch></A>
+<FORM METHOD="GET" ACTION="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cfg">
+View only Branch:
+<SELECT NAME="only_with_tag" onchange="submit()">
+<OPTION VALUE="">Show all branches
+<OPTION>MAIN
+</SELECT>
+<INPUT TYPE=SUBMIT VALUE=" View Branch ">
+</FORM>
+<A name=logsort></A>
+<FORM METHOD="GET" ACTION="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cfg">
+Sort log by:
+<SELECT NAME="logsort" onchange="submit()">
+<OPTION VALUE=cvs>Not sorted<OPTION VALUE=date SELECTED>Commit date<OPTION VALUE=rev>Revision</SELECT>
+<INPUT TYPE=SUBMIT VALUE=" Sort ">
+</FORM>
+
+<!-- footer -->
+<BR><FONT Size=+5>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </FONT>
+</TD>
+<TD WIDTH=15><IMG SRC=http://www.nevrax.org/inc/img/pixel.gif WIDTH=15 HEIGHT=15 BORDER=0 ALT=""></TD>
+</TR>
+</TABLE>
+</BODY>
+</HTML></BODY></HTML>
diff --git a/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cfg?rev=1.4&content-type=text/x-cvsweb-markup/index.html b/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cfg?rev=1.4&content-type=text/x-cvsweb-markup/index.html
new file mode 100644
index 00000000..d6d00520
--- /dev/null
+++ b/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cfg?rev=1.4&content-type=text/x-cvsweb-markup/index.html
@@ -0,0 +1,31 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"><HTML>
+<HEAD><style> A { color:black }</style>
+<!-- hennerik CVSweb $Revision: 1.93 $ -->
+<TITLE>code/nelns/admin_service/admin_service.cfg - view - 1.4</TITLE></HEAD>
+<BODY BGCOLOR="#eeeeee">
+<table width="100%" border=0 cellspacing=0 cellpadding=1 bgcolor="#aaaaaa"><tr valign=bottom><td><a href="admin_service.cfg"><IMG SRC="http://www.nevrax.org/inc/img/picto-up.gif" ALT="[BACK]" BORDER="0" WIDTH="14" HEIGHT="13"></a> <b>Return to <A HREF="admin_service.cfg">admin_service.cfg</A>
+ CVS log</b> <IMG SRC="http://www.nevrax.org/inc/img/picto-news.gif" ALT="[TXT]" BORDER="0" WIDTH="13" HEIGHT="15"></td><td align=right><IMG SRC="http://www.nevrax.org/inc/img/picto-dir.gif" ALT="[DIR]" BORDER="0" WIDTH="15" HEIGHT="13"> <b>Up to <a href="/cvs/cvsweb.cgi/">Nevrax</a> / <a href="/cvs/cvsweb.cgi/code/">code</a> / <a href="/cvs/cvsweb.cgi/code/nelns/">nelns</a> / <a href="/cvs/cvsweb.cgi/code/nelns/admin_service/">admin_service</a></b></td></tr></table><HR noshade><table width="100%"><tr><td bgcolor="#ffffff">File: <a href="/cvs/cvsweb.cgi/">Nevrax</a> / <a href="/cvs/cvsweb.cgi/code/">code</a> / <a href="/cvs/cvsweb.cgi/code/nelns/">nelns</a> / <a href="/cvs/cvsweb.cgi/code/nelns/admin_service/">admin_service</a> / <a href="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cfg">admin_service.cfg</a>&nbsp;(<A HREF="/cvs/cvsweb.cgi/~checkout~/code/nelns/admin_service/admin_service.cfg?rev=1.4" target="cvs_checkout" onClick="window.open('/cvs/cvsweb.cgi/~checkout~/code/nelns/admin_service/admin_service.cfg?rev=1.4','cvs_checkout','resizeable,scrollbars');"><b>download</b></A>)<BR>
+Revision <B>1.4</B>, <i>Tue Nov 13 15:13:14 2001 UTC</i> (8 months, 1 week ago) by <i>lecroart</i>
+<BR>Branch: <b>MAIN</b>
+<BR>Changes since <b>1.3: +3 -6
+ lines</b><PRE>
+#update cfg
+</PRE>
+</td></tr></table><HR noshade><PRE>
+// ip address of all servers where the AS find a AES. the AES port is always 49997
+
+AESHosts = {
+&quot;S1&quot;, &quot;localhost&quot;,
+};
+
+
+// list of what to launch and where to launch. services are launch one after one
+
+Services = {
+&quot;S1&quot;, &quot;NS&quot;,
+&quot;S1&quot;, &quot;LS&quot;,
+&quot;S1&quot;, &quot;WS&quot;,
+};
+
+WindowStyle = &quot;WIN&quot;;
+</PRE> \ No newline at end of file
diff --git a/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cfg?rev=1.6&content-type=text/x-cvsweb-markup&sortby=author/index.html b/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cfg?rev=1.6&content-type=text/x-cvsweb-markup&sortby=author/index.html
new file mode 100644
index 00000000..218cf501
--- /dev/null
+++ b/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cfg?rev=1.6&content-type=text/x-cvsweb-markup&sortby=author/index.html
@@ -0,0 +1,33 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"><HTML>
+<HEAD><style> A { color:black }</style>
+<!-- hennerik CVSweb $Revision: 1.93 $ -->
+<TITLE>code/nelns/admin_service/admin_service.cfg - view - 1.6</TITLE></HEAD>
+<BODY BGCOLOR="#eeeeee">
+<table width="100%" border=0 cellspacing=0 cellpadding=1 bgcolor="#aaaaaa"><tr valign=bottom><td><a href="admin_service.cfg?sortby=author"><IMG SRC="http://www.nevrax.org/inc/img/picto-up.gif" ALT="[BACK]" BORDER="0" WIDTH="14" HEIGHT="13"></a> <b>Return to <A HREF="admin_service.cfg?sortby=author">admin_service.cfg</A>
+ CVS log</b> <IMG SRC="http://www.nevrax.org/inc/img/picto-news.gif" ALT="[TXT]" BORDER="0" WIDTH="13" HEIGHT="15"></td><td align=right><IMG SRC="http://www.nevrax.org/inc/img/picto-dir.gif" ALT="[DIR]" BORDER="0" WIDTH="15" HEIGHT="13"> <b>Up to <a href="/cvs/cvsweb.cgi/?sortby=author">Nevrax</a> / <a href="/cvs/cvsweb.cgi/code/?sortby=author">code</a> / <a href="/cvs/cvsweb.cgi/code/nelns/?sortby=author">nelns</a> / <a href="/cvs/cvsweb.cgi/code/nelns/admin_service/?sortby=author">admin_service</a></b></td></tr></table><HR noshade><table width="100%"><tr><td bgcolor="#ffffff">File: <a href="/cvs/cvsweb.cgi/?sortby=author">Nevrax</a> / <a href="/cvs/cvsweb.cgi/code/?sortby=author">code</a> / <a href="/cvs/cvsweb.cgi/code/nelns/?sortby=author">nelns</a> / <a href="/cvs/cvsweb.cgi/code/nelns/admin_service/?sortby=author">admin_service</a> / <a href="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cfg?sortby=author">admin_service.cfg</a>&nbsp;(<A HREF="/cvs/cvsweb.cgi/~checkout~/code/nelns/admin_service/admin_service.cfg?rev=1.6&amp;sortby=author" target="cvs_checkout" onClick="window.open('/cvs/cvsweb.cgi/~checkout~/code/nelns/admin_service/admin_service.cfg?rev=1.6','cvs_checkout','resizeable,scrollbars');"><b>download</b></A>)<BR>
+Revision <B>1.6</B>, <i>Tue Apr 23 15:54:07 2002 UTC</i> (3 months ago) by <i>lecroart</i>
+<BR>Branch: <b>MAIN</b>
+<BR>CVS Tags: <b>HEAD</b><BR>Changes since <b>1.5: +2 -2
+ lines</b><PRE>
+ADDED: common.cfg
+</PRE>
+</td></tr></table><HR noshade><PRE>// link the common configuration file
+RootConfigFilename = &quot;common.cfg&quot;;
+
+// ip address of all servers where the AS find a AES. the AES port is always 49997
+
+AESHosts = {
+&quot;S1&quot;, &quot;localhost&quot;,
+};
+
+
+// list of what to launch and where to launch. services are launch one after one
+
+Services = {
+&quot;S1&quot;, &quot;NS&quot;,
+&quot;S1&quot;, &quot;LS&quot;,
+&quot;S1&quot;, &quot;WS&quot;,
+};
+
+Password = &quot;toto&quot;;
+</PRE> \ No newline at end of file
diff --git a/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cfg?rev=1.6&content-type=text/x-cvsweb-markup&sortby=date/index.html b/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cfg?rev=1.6&content-type=text/x-cvsweb-markup&sortby=date/index.html
new file mode 100644
index 00000000..61b671bc
--- /dev/null
+++ b/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cfg?rev=1.6&content-type=text/x-cvsweb-markup&sortby=date/index.html
@@ -0,0 +1,33 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"><HTML>
+<HEAD><style> A { color:black }</style>
+<!-- hennerik CVSweb $Revision: 1.93 $ -->
+<TITLE>code/nelns/admin_service/admin_service.cfg - view - 1.6</TITLE></HEAD>
+<BODY BGCOLOR="#eeeeee">
+<table width="100%" border=0 cellspacing=0 cellpadding=1 bgcolor="#aaaaaa"><tr valign=bottom><td><a href="admin_service.cfg?sortby=date"><IMG SRC="http://www.nevrax.org/inc/img/picto-up.gif" ALT="[BACK]" BORDER="0" WIDTH="14" HEIGHT="13"></a> <b>Return to <A HREF="admin_service.cfg?sortby=date">admin_service.cfg</A>
+ CVS log</b> <IMG SRC="http://www.nevrax.org/inc/img/picto-news.gif" ALT="[TXT]" BORDER="0" WIDTH="13" HEIGHT="15"></td><td align=right><IMG SRC="http://www.nevrax.org/inc/img/picto-dir.gif" ALT="[DIR]" BORDER="0" WIDTH="15" HEIGHT="13"> <b>Up to <a href="/cvs/cvsweb.cgi/?sortby=date">Nevrax</a> / <a href="/cvs/cvsweb.cgi/code/?sortby=date">code</a> / <a href="/cvs/cvsweb.cgi/code/nelns/?sortby=date">nelns</a> / <a href="/cvs/cvsweb.cgi/code/nelns/admin_service/?sortby=date">admin_service</a></b></td></tr></table><HR noshade><table width="100%"><tr><td bgcolor="#ffffff">File: <a href="/cvs/cvsweb.cgi/?sortby=date">Nevrax</a> / <a href="/cvs/cvsweb.cgi/code/?sortby=date">code</a> / <a href="/cvs/cvsweb.cgi/code/nelns/?sortby=date">nelns</a> / <a href="/cvs/cvsweb.cgi/code/nelns/admin_service/?sortby=date">admin_service</a> / <a href="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cfg?sortby=date">admin_service.cfg</a>&nbsp;(<A HREF="/cvs/cvsweb.cgi/~checkout~/code/nelns/admin_service/admin_service.cfg?rev=1.6&amp;sortby=date" target="cvs_checkout" onClick="window.open('/cvs/cvsweb.cgi/~checkout~/code/nelns/admin_service/admin_service.cfg?rev=1.6','cvs_checkout','resizeable,scrollbars');"><b>download</b></A>)<BR>
+Revision <B>1.6</B>, <i>Tue Apr 23 15:54:07 2002 UTC</i> (3 months ago) by <i>lecroart</i>
+<BR>Branch: <b>MAIN</b>
+<BR>CVS Tags: <b>HEAD</b><BR>Changes since <b>1.5: +2 -2
+ lines</b><PRE>
+ADDED: common.cfg
+</PRE>
+</td></tr></table><HR noshade><PRE>// link the common configuration file
+RootConfigFilename = &quot;common.cfg&quot;;
+
+// ip address of all servers where the AS find a AES. the AES port is always 49997
+
+AESHosts = {
+&quot;S1&quot;, &quot;localhost&quot;,
+};
+
+
+// list of what to launch and where to launch. services are launch one after one
+
+Services = {
+&quot;S1&quot;, &quot;NS&quot;,
+&quot;S1&quot;, &quot;LS&quot;,
+&quot;S1&quot;, &quot;WS&quot;,
+};
+
+Password = &quot;toto&quot;;
+</PRE> \ No newline at end of file
diff --git a/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cfg?rev=1.6&content-type=text/x-cvsweb-markup&sortby=rev/index.html b/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cfg?rev=1.6&content-type=text/x-cvsweb-markup&sortby=rev/index.html
new file mode 100644
index 00000000..b8d5a061
--- /dev/null
+++ b/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cfg?rev=1.6&content-type=text/x-cvsweb-markup&sortby=rev/index.html
@@ -0,0 +1,33 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"><HTML>
+<HEAD><style> A { color:black }</style>
+<!-- hennerik CVSweb $Revision: 1.93 $ -->
+<TITLE>code/nelns/admin_service/admin_service.cfg - view - 1.6</TITLE></HEAD>
+<BODY BGCOLOR="#eeeeee">
+<table width="100%" border=0 cellspacing=0 cellpadding=1 bgcolor="#aaaaaa"><tr valign=bottom><td><a href="admin_service.cfg?sortby=rev"><IMG SRC="http://www.nevrax.org/inc/img/picto-up.gif" ALT="[BACK]" BORDER="0" WIDTH="14" HEIGHT="13"></a> <b>Return to <A HREF="admin_service.cfg?sortby=rev">admin_service.cfg</A>
+ CVS log</b> <IMG SRC="http://www.nevrax.org/inc/img/picto-news.gif" ALT="[TXT]" BORDER="0" WIDTH="13" HEIGHT="15"></td><td align=right><IMG SRC="http://www.nevrax.org/inc/img/picto-dir.gif" ALT="[DIR]" BORDER="0" WIDTH="15" HEIGHT="13"> <b>Up to <a href="/cvs/cvsweb.cgi/?sortby=rev">Nevrax</a> / <a href="/cvs/cvsweb.cgi/code/?sortby=rev">code</a> / <a href="/cvs/cvsweb.cgi/code/nelns/?sortby=rev">nelns</a> / <a href="/cvs/cvsweb.cgi/code/nelns/admin_service/?sortby=rev">admin_service</a></b></td></tr></table><HR noshade><table width="100%"><tr><td bgcolor="#ffffff">File: <a href="/cvs/cvsweb.cgi/?sortby=rev">Nevrax</a> / <a href="/cvs/cvsweb.cgi/code/?sortby=rev">code</a> / <a href="/cvs/cvsweb.cgi/code/nelns/?sortby=rev">nelns</a> / <a href="/cvs/cvsweb.cgi/code/nelns/admin_service/?sortby=rev">admin_service</a> / <a href="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cfg?sortby=rev">admin_service.cfg</a>&nbsp;(<A HREF="/cvs/cvsweb.cgi/~checkout~/code/nelns/admin_service/admin_service.cfg?rev=1.6&amp;sortby=rev" target="cvs_checkout" onClick="window.open('/cvs/cvsweb.cgi/~checkout~/code/nelns/admin_service/admin_service.cfg?rev=1.6','cvs_checkout','resizeable,scrollbars');"><b>download</b></A>)<BR>
+Revision <B>1.6</B>, <i>Tue Apr 23 15:54:07 2002 UTC</i> (3 months ago) by <i>lecroart</i>
+<BR>Branch: <b>MAIN</b>
+<BR>CVS Tags: <b>HEAD</b><BR>Changes since <b>1.5: +2 -2
+ lines</b><PRE>
+ADDED: common.cfg
+</PRE>
+</td></tr></table><HR noshade><PRE>// link the common configuration file
+RootConfigFilename = &quot;common.cfg&quot;;
+
+// ip address of all servers where the AS find a AES. the AES port is always 49997
+
+AESHosts = {
+&quot;S1&quot;, &quot;localhost&quot;,
+};
+
+
+// list of what to launch and where to launch. services are launch one after one
+
+Services = {
+&quot;S1&quot;, &quot;NS&quot;,
+&quot;S1&quot;, &quot;LS&quot;,
+&quot;S1&quot;, &quot;WS&quot;,
+};
+
+Password = &quot;toto&quot;;
+</PRE> \ No newline at end of file
diff --git a/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cfg?rev=1.6&content-type=text/x-cvsweb-markup/index.html b/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cfg?rev=1.6&content-type=text/x-cvsweb-markup/index.html
new file mode 100644
index 00000000..ba704a67
--- /dev/null
+++ b/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cfg?rev=1.6&content-type=text/x-cvsweb-markup/index.html
@@ -0,0 +1,33 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"><HTML>
+<HEAD><style> A { color:black }</style>
+<!-- hennerik CVSweb $Revision: 1.93 $ -->
+<TITLE>code/nelns/admin_service/admin_service.cfg - view - 1.6</TITLE></HEAD>
+<BODY BGCOLOR="#eeeeee">
+<table width="100%" border=0 cellspacing=0 cellpadding=1 bgcolor="#aaaaaa"><tr valign=bottom><td><a href="admin_service.cfg"><IMG SRC="http://www.nevrax.org/inc/img/picto-up.gif" ALT="[BACK]" BORDER="0" WIDTH="14" HEIGHT="13"></a> <b>Return to <A HREF="admin_service.cfg">admin_service.cfg</A>
+ CVS log</b> <IMG SRC="http://www.nevrax.org/inc/img/picto-news.gif" ALT="[TXT]" BORDER="0" WIDTH="13" HEIGHT="15"></td><td align=right><IMG SRC="http://www.nevrax.org/inc/img/picto-dir.gif" ALT="[DIR]" BORDER="0" WIDTH="15" HEIGHT="13"> <b>Up to <a href="/cvs/cvsweb.cgi/">Nevrax</a> / <a href="/cvs/cvsweb.cgi/code/">code</a> / <a href="/cvs/cvsweb.cgi/code/nelns/">nelns</a> / <a href="/cvs/cvsweb.cgi/code/nelns/admin_service/">admin_service</a></b></td></tr></table><HR noshade><table width="100%"><tr><td bgcolor="#ffffff">File: <a href="/cvs/cvsweb.cgi/">Nevrax</a> / <a href="/cvs/cvsweb.cgi/code/">code</a> / <a href="/cvs/cvsweb.cgi/code/nelns/">nelns</a> / <a href="/cvs/cvsweb.cgi/code/nelns/admin_service/">admin_service</a> / <a href="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cfg">admin_service.cfg</a>&nbsp;(<A HREF="/cvs/cvsweb.cgi/~checkout~/code/nelns/admin_service/admin_service.cfg?rev=1.6" target="cvs_checkout" onClick="window.open('/cvs/cvsweb.cgi/~checkout~/code/nelns/admin_service/admin_service.cfg?rev=1.6','cvs_checkout','resizeable,scrollbars');"><b>download</b></A>)<BR>
+Revision <B>1.6</B>, <i>Tue Apr 23 15:54:07 2002 UTC</i> (8 weeks, 3 days ago) by <i>lecroart</i>
+<BR>Branch: <b>MAIN</b>
+<BR>CVS Tags: <b>HEAD</b><BR>Changes since <b>1.5: +2 -2
+ lines</b><PRE>
+ADDED: common.cfg
+</PRE>
+</td></tr></table><HR noshade><PRE>// link the common configuration file
+RootConfigFilename = &quot;common.cfg&quot;;
+
+// ip address of all servers where the AS find a AES. the AES port is always 49997
+
+AESHosts = {
+&quot;S1&quot;, &quot;localhost&quot;,
+};
+
+
+// list of what to launch and where to launch. services are launch one after one
+
+Services = {
+&quot;S1&quot;, &quot;NS&quot;,
+&quot;S1&quot;, &quot;LS&quot;,
+&quot;S1&quot;, &quot;WS&quot;,
+};
+
+Password = &quot;toto&quot;;
+</PRE> \ No newline at end of file
diff --git a/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cfg?sortby=author b/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cfg?sortby=author
new file mode 100644
index 00000000..3714b250
--- /dev/null
+++ b/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cfg?sortby=author
@@ -0,0 +1,187 @@
+<!doctype html public "-//W3C//DTD HTML 4.0 Transitional//EN" "http://www.w3.org/TR/REC-html40/loose.dtd">
+<HTML>
+<HEAD>
+ <TITLE>nevrax.org : cvs</TITLE>
+ <META name="keywords" content="freesoftware,nel,newt,snowballs,richard stallman,GNU,Multi-User Online World">
+
+ <LINK REL=stylesheet TYPE="text/css" HREF="http://www.nevrax.org/inc/css/nevrax.css">
+</HEAD>
+<BODY MARGINHEIGHT="0" MARGINWIDTH="0">
+
+<!-- uplinks -->
+<TABLE CELLSPACING=0 CELLPADDING=0 BORDER=0>
+ <TR>
+ <TD WIDTH=16><IMG SRC="http://www.nevrax.org/inc/img/pixel.gif" WIDTH="16" HEIGHT="16" BORDER=0 ALT=""></TD>
+ <TD WIDTH=140 BGCOLOR=#dddddd><IMG SRC="http://www.nevrax.org/inc/img/pixel.gif" WIDTH="140" HEIGHT="16" BORDER=0 ALT=""></TD>
+ <TD WIDTH=16><IMG SRC="http://www.nevrax.org/inc/img/pixel.gif" WIDTH="16" HEIGHT="16" BORDER=0 ALT=""></TD>
+ <TD><IMG width=6 height=14 SRC="http://www.nevrax.org/inc/img/reddots.gif" ALT="#" VSPACE=2 HSPACE=2 BORDER=0 ></TD><TD VALIGN=middle>&nbsp;<A CLASS=uplinks HREF=http://www.nevrax.org><b>Home</B></FONT></A>&nbsp;&nbsp;&nbsp;</TD>
+ <TD><IMG width=6 height=14 SRC="http://www.nevrax.org/inc/img/reddots.gif" ALT="#" VSPACE=2 HSPACE=2 BORDER=0 ></TD><TD VALIGN=middle>&nbsp;<A CLASS=uplinks HREF=http://www.nevrax.com><b>nevrax.com</B></FONT></A>&nbsp;&nbsp;&nbsp;</TD>
+ </TR>
+</TABLE>
+
+<!-- banner Nevrax -->
+<TABLE CELLSPACING=0 CELLPADDING=0 BORDER=0 WIDTH=100%>
+ <TR><TD BGCOLOR="#000000" BACKGROUND="http://www.nevrax.org/inc/img/black_banner.jpg"><A HREF="http://www.nevrax.org"><IMG SRC="http://www.nevrax.org/inc/img/nevrax.gif" WIDTH="170" HEIGHT="45" BORDER=0 ALT="Nevrax" ></A></TD></TR>
+</TABLE>
+
+<!-- main table -->
+<TABLE CELLSPACING=0 CELLPADDING=0 BORDER=0 height=100%>
+ <TR>
+ <TD WIDTH=16><IMG SRC="http://www.nevrax.org/inc/img/pixel.gif" WIDTH="16" HEIGHT="10" BORDER=0 ALT=""></TD>
+ <TD WIDTH=140 BGCOLOR=#dddddd VALIGN=TOP ALIGN=middle><IMG SRC="http://www.nevrax.org/inc/img/pixel.gif" WIDTH="140" HEIGHT="10" BORDER=0 ALT="">
+
+ <!------ Begin Box ------>
+ <TABLE BORDER=0 CELLSPACING=0 CELLPADDING=0 BGCOLOR=black><TR><TD><TABLE border=0 cellspacing=2 cellpadding=0 width=120><tr><TD ALIGN=middle bgcolor=black>
+ <FONT COLOR=white FACE="sans-serif"><B>Nevrax.org</B></FONT></TD></TR><tr><td colspan=2 bgcolor=#FFFFFF>
+ <TABLE cellspacing=0 cellpadding=1 border=0>
+ <tr><td ALIGN=middle><a class='linkbox' href="http://www.nevrax.org/news/" TITLE="Rubrique news"><img width=13 height=15 hspace=5 border=0 src=http://www.nevrax.org/inc/img/picto-news.gif ALT=#></A></td><td><a class='linkbox' href="http://www.nevrax.org/news/" TITLE="News">News</a></td></tr>
+ <tr><td ALIGN=middle><a class='linkbox' href="http://www.nevrax.org/mail/" TITLE="Rubrique mail"><img width=15 height=11 hspace=5 border=0 src=http://www.nevrax.org/inc/img/picto-mail.gif ALT=#></A></td><td><a class='linkbox' href="http://www.nevrax.org/mail/" TITLE="Mailing list archive">Mailing-list</a></td></tr>
+ <tr><td ALIGN=middle><a class='linkbox' href="http://www.nevrax.org/docs/" TITLE="Rubrique docs"><img width=14 height=16 hspace=5 border=0 src=http://www.nevrax.org/inc/img/picto-docs.gif ALT=#></A></td><td><a class='linkbox' href="http://www.nevrax.org/docs/" TITLE="Documentation">Documentation</a></td></tr>
+ <tr><td ALIGN=middle><a class='linkbox' href="http://www.nevrax.org/cvs/" TITLE="Rubrique cvs"><img width=13 height=17 hspace=5 border=0 src=http://www.nevrax.org/inc/img/picto-cvs.gif ALT=#></A></td><td><a class='linkbox' href="http://www.nevrax.org/cvs/" TITLE="CVS Web">CVS</a></td></tr>
+ <tr><td ALIGN=middle><a class='linkbox' href="http://www.nevrax.org/bugs/" TITLE="Rubrique bugs"><img width=20 height=16 hspace=5 border=0 src=http://www.nevrax.org/inc/img/picto-bugs.gif ALT=#></A></td><td><a class='linkbox' href="http://www.nevrax.org/bugs/" TITLE="Bugtracking">Bugs</a></td></tr>
+ <tr><td ALIGN=middle><a class='linkbox' href="http://www.nevrax.org/free/" TITLE="Rubrique license"><img width=18 height=12 hspace=5 border=0 src=http://www.nevrax.org/inc/img/picto-free.gif ALT=#></A></td><td><a class='linkbox' href="http://www.nevrax.org/free/" TITLE="Free Software">Free software</a></td></tr>
+ </TABLE>
+ </TD></TR></TABLE></TD></TR></TABLE>
+ <!------ End Box ------>
+
+ </TD>
+ <TD WIDTH=15><IMG SRC="http://www.nevrax.org/inc/img/pixel.gif" WIDTH="16" HEIGHT="16" BORDER=0 ALT=""></TD>
+ <TD ALIGN=left valign=top><IMG SRC="http://www.nevrax.org/inc/img/pixel.gif" WIDTH="140" HEIGHT="10" BORDER=0 ALT="">
+
+<!-- title -->
+<TABLE background="http://www.nevrax.org/inc/img/redline.gif" CELLSPACING=0 CELLPADDING=0 BORDER=0 width=100%><tr><td>
+<A HREF="http://www.nevrax.org/cvs/"><img src="http://www.nevrax.org/inc/img/t_cvs.gif" ALT="cvs" HEIGHT=20 BORDER=0></A>
+</td><td><IMG SRC="http://www.nevrax.org/inc/img/pixel.gif" WIDTH="1" HEIGHT="1" BORDER=0 ALT="">
+</td></tr></table>
+
+<!-- title -->
+<table width=100%><tr><td align=left><b> <a href="/cvs/cvsweb.cgi/?sortby=author">Nevrax</a> / <a href="/cvs/cvsweb.cgi/code/?sortby=author">code</a> / <a href="/cvs/cvsweb.cgi/code/nelns/?sortby=author">nelns</a> / <a href="/cvs/cvsweb.cgi/code/nelns/admin_service/?sortby=author">admin_service</a> / admin_service.cfg</b></td><td align=right><b></b></td></TR></TABLE>
+
+<!-- block -->
+<TABLE bgcolor="#dddddd" CELLSPACING=0 CELLPADDING=0 BORDER=0 width=100%><tr><td width=1% valign=middle><img width=6 height=14 hspace=2 vspace=2 src="http://www.nevrax.org/inc/img/reddots.gif"></TD>
+ <TD><B>admin_service.cfg</B></TD>
+ <TD ALIGN=RIGHT> </td>
+</tr></table>
+<P>
+<p>Default branch: MAIN<BR>
+<HR size=1 NOSHADE><P><a NAME="rev1.6"></a><a NAME="HEAD"></a><a NAME="MAIN"></a>
+ Revision <A HREF="admin_service.cfg?rev=1.6&amp;content-type=text/x-cvsweb-markup&amp;sortby=author"><b>1.6</b></A> / (<A HREF="/cvs/cvsweb.cgi/~checkout~/code/nelns/admin_service/admin_service.cfg?rev=1.6&amp;content-type=text/plain&amp;sortby=author" target="cvs_checkout" onClick="window.open('/cvs/cvsweb.cgi/~checkout~/code/nelns/admin_service/admin_service.cfg?rev=1.6&amp;content-type=text/plain','cvs_checkout','resizeable,scrollbars');"><b>download</b></A>) - <a href="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cfg?annotate=1.6&amp;sortby=author">annotate</a> - <A HREF="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cfg?r1=1.6&amp;sortby=author">[select for diffs]</A>
+, <i>Tue Apr 23 15:54:07 2002 UTC</i> (3 months ago) by <i>lecroart</i>
+<BR>Branch: <b><A HREF="admin_service.cfg?sortby=author&amp;only_with_tag=MAIN">MAIN</A>
+</b>
+<BR>CVS Tags: <b><A HREF="admin_service.cfg?sortby=author&amp;only_with_tag=HEAD">HEAD</A>
+</b><BR>Changes since <b>1.5: +2 -2
+ lines</b><BR>Diff to previous <A HREF="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cfg.diff?r1=1.5&amp;r2=1.6&amp;sortby=author">1.5</A>
+<PRE>
+ADDED: common.cfg
+</PRE>
+<HR size=1 NOSHADE><P><a NAME="rev1.5"></a>
+ Revision <A HREF="admin_service.cfg?rev=1.5&amp;content-type=text/x-cvsweb-markup&amp;sortby=author"><b>1.5</b></A> / (<A HREF="/cvs/cvsweb.cgi/~checkout~/code/nelns/admin_service/admin_service.cfg?rev=1.5&amp;content-type=text/plain&amp;sortby=author" target="cvs_checkout" onClick="window.open('/cvs/cvsweb.cgi/~checkout~/code/nelns/admin_service/admin_service.cfg?rev=1.5&amp;content-type=text/plain','cvs_checkout','resizeable,scrollbars');"><b>download</b></A>) - <a href="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cfg?annotate=1.5&amp;sortby=author">annotate</a> - <A HREF="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cfg?r1=1.5&amp;sortby=author">[select for diffs]</A>
+, <i>Fri Mar 1 10:20:45 2002 UTC</i> (4 months, 3 weeks ago) by <i>lecroart</i>
+<BR>Branch: <b><A HREF="admin_service.cfg?sortby=author&amp;only_with_tag=MAIN">MAIN</A>
+</b>
+<BR>Changes since <b>1.4: +2 -0
+ lines</b><BR>Diff to previous <A HREF="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cfg.diff?r1=1.4&amp;r2=1.5&amp;sortby=author">1.4</A>
+<PRE>
+ADDED: password per shard auth
+</PRE>
+<HR size=1 NOSHADE><P><a NAME="rev1.4"></a>
+ Revision <A HREF="admin_service.cfg?rev=1.4&amp;content-type=text/x-cvsweb-markup&amp;sortby=author"><b>1.4</b></A> / (<A HREF="/cvs/cvsweb.cgi/~checkout~/code/nelns/admin_service/admin_service.cfg?rev=1.4&amp;content-type=text/plain&amp;sortby=author" target="cvs_checkout" onClick="window.open('/cvs/cvsweb.cgi/~checkout~/code/nelns/admin_service/admin_service.cfg?rev=1.4&amp;content-type=text/plain','cvs_checkout','resizeable,scrollbars');"><b>download</b></A>) - <a href="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cfg?annotate=1.4&amp;sortby=author">annotate</a> - <A HREF="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cfg?r1=1.4&amp;sortby=author">[select for diffs]</A>
+, <i>Tue Nov 13 15:13:14 2001 UTC</i> (8 months, 1 week ago) by <i>lecroart</i>
+<BR>Branch: <b><A HREF="admin_service.cfg?sortby=author&amp;only_with_tag=MAIN">MAIN</A>
+</b>
+<BR>Changes since <b>1.3: +3 -6
+ lines</b><BR>Diff to previous <A HREF="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cfg.diff?r1=1.3&amp;r2=1.4&amp;sortby=author">1.3</A>
+<PRE>
+#update cfg
+</PRE>
+<HR size=1 NOSHADE><P><a NAME="rev1.3"></a>
+ Revision <A HREF="admin_service.cfg?rev=1.3&amp;content-type=text/x-cvsweb-markup&amp;sortby=author"><b>1.3</b></A> / (<A HREF="/cvs/cvsweb.cgi/~checkout~/code/nelns/admin_service/admin_service.cfg?rev=1.3&amp;content-type=text/plain&amp;sortby=author" target="cvs_checkout" onClick="window.open('/cvs/cvsweb.cgi/~checkout~/code/nelns/admin_service/admin_service.cfg?rev=1.3&amp;content-type=text/plain','cvs_checkout','resizeable,scrollbars');"><b>download</b></A>) - <a href="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cfg?annotate=1.3&amp;sortby=author">annotate</a> - <A HREF="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cfg?r1=1.3&amp;sortby=author">[select for diffs]</A>
+, <i>Wed Jun 27 08:34:07 2001 UTC</i> (12 months, 3 weeks ago) by <i>lecroart</i>
+<BR>Branch: <b><A HREF="admin_service.cfg?sortby=author&amp;only_with_tag=MAIN">MAIN</A>
+</b>
+<BR>Changes since <b>1.2: +5 -0
+ lines</b><BR>Diff to previous <A HREF="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cfg.diff?r1=1.2&amp;r2=1.3&amp;sortby=author">1.2</A>
+<PRE>
+ADDED: win32 console position
+</PRE>
+<HR size=1 NOSHADE><P><a NAME="rev1.2"></a>
+ Revision <A HREF="admin_service.cfg?rev=1.2&amp;content-type=text/x-cvsweb-markup&amp;sortby=author"><b>1.2</b></A> / (<A HREF="/cvs/cvsweb.cgi/~checkout~/code/nelns/admin_service/admin_service.cfg?rev=1.2&amp;content-type=text/plain&amp;sortby=author" target="cvs_checkout" onClick="window.open('/cvs/cvsweb.cgi/~checkout~/code/nelns/admin_service/admin_service.cfg?rev=1.2&amp;content-type=text/plain','cvs_checkout','resizeable,scrollbars');"><b>download</b></A>) - <a href="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cfg?annotate=1.2&amp;sortby=author">annotate</a> - <A HREF="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cfg?r1=1.2&amp;sortby=author">[select for diffs]</A>
+, <i>Thu Jun 7 16:19:05 2001 UTC</i> (13 months, 2 weeks ago) by <i>lecroart</i>
+<BR>Branch: <b><A HREF="admin_service.cfg?sortby=author&amp;only_with_tag=MAIN">MAIN</A>
+</b>
+<BR>Changes since <b>1.1: +2 -1
+ lines</b><BR>Diff to previous <A HREF="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cfg.diff?r1=1.1&amp;r2=1.2&amp;sortby=author">1.1</A>
+<PRE>
+ADDED: commands system
+</PRE>
+<HR size=1 NOSHADE><P><a NAME="rev1.1"></a>
+ Revision <A HREF="admin_service.cfg?rev=1.1&amp;content-type=text/x-cvsweb-markup&amp;sortby=author"><b>1.1</b></A> / (<A HREF="/cvs/cvsweb.cgi/~checkout~/code/nelns/admin_service/admin_service.cfg?rev=1.1&amp;content-type=text/plain&amp;sortby=author" target="cvs_checkout" onClick="window.open('/cvs/cvsweb.cgi/~checkout~/code/nelns/admin_service/admin_service.cfg?rev=1.1&amp;content-type=text/plain','cvs_checkout','resizeable,scrollbars');"><b>download</b></A>) - <a href="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cfg?annotate=1.1&amp;sortby=author">annotate</a> - <A HREF="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cfg?r1=1.1&amp;sortby=author">[select for diffs]</A>
+, <i>Fri May 18 16:49:42 2001 UTC</i> (14 months ago) by <i>lecroart</i>
+<BR>Branch: <b><A HREF="admin_service.cfg?sortby=author&amp;only_with_tag=MAIN">MAIN</A>
+</b>
+<BR>Diff<PRE>
+ADDED: cfg file for example purpose
+</PRE>
+
+<!-- block -->
+<TABLE bgcolor="#dddddd" CELLSPACING=0 CELLPADDING=0 BORDER=0 width=100%><tr><td width=1% valign=middle><img width=6 height=14 hspace=2 vspace=2 src="http://www.nevrax.org/inc/img/reddots.gif"></TD>
+ <TD><B>Request Diffs</B></TD>
+ <TD ALIGN=RIGHT> </td>
+</tr></table>
+<P>
+<P>
+<FORM METHOD="GET" ACTION="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cfg.diff" NAME="diff_select">
+<INPUT TYPE=HIDDEN NAME="sortby" VALUE="author">
+Diffs between
+<SELECT NAME="r1">
+<OPTION VALUE="text" SELECTED>Use Text Field
+<OPTION VALUE="1:MAIN">MAIN
+<OPTION VALUE="1.6:HEAD">HEAD
+</SELECT>
+<INPUT TYPE="TEXT" SIZE="12" NAME="tr1" VALUE="1.1" onChange='document.diff_select.r1.selectedIndex=0'>
+ and
+<SELECT NAME="r2">
+<OPTION VALUE="text" SELECTED>Use Text Field
+<OPTION VALUE="1:MAIN">MAIN
+<OPTION VALUE="1.6:HEAD">HEAD
+</SELECT>
+<INPUT TYPE="TEXT" SIZE="12" NAME="tr2" VALUE="1.6" onChange='docuement.diff_select.r2.selectedIndex=0'>
+<BR>Type of Diff should be a&nbsp;<SELECT NAME="f">
+<OPTION VALUE=h SELECTED>Colored Diff<OPTION VALUE=H>Long Colored Diff<OPTION VALUE=u>Unidiff<OPTION VALUE=c>Context Diff<OPTION VALUE=s>Side by Side</SELECT><INPUT TYPE=SUBMIT VALUE=" Get Diffs ">
+</FORM>
+
+<!-- block -->
+<TABLE bgcolor="#dddddd" CELLSPACING=0 CELLPADDING=0 BORDER=0 width=100%><tr><td width=1% valign=middle><img width=6 height=14 hspace=2 vspace=2 src="http://www.nevrax.org/inc/img/reddots.gif"></TD>
+ <TD><B>Select branch</B></TD>
+ <TD ALIGN=RIGHT> </td>
+</tr></table>
+<P>
+<P>
+<A name=branch></A>
+<FORM METHOD="GET" ACTION="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cfg">
+<INPUT TYPE=HIDDEN NAME="sortby" VALUE="author">
+View only Branch:
+<SELECT NAME="only_with_tag" onchange="submit()">
+<OPTION VALUE="">Show all branches
+<OPTION>MAIN
+</SELECT>
+<INPUT TYPE=SUBMIT VALUE=" View Branch ">
+</FORM>
+<A name=logsort></A>
+<FORM METHOD="GET" ACTION="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cfg">
+<INPUT TYPE=HIDDEN NAME="sortby" VALUE="author">
+Sort log by:
+<SELECT NAME="logsort" onchange="submit()">
+<OPTION VALUE=cvs>Not sorted<OPTION VALUE=date SELECTED>Commit date<OPTION VALUE=rev>Revision</SELECT>
+<INPUT TYPE=SUBMIT VALUE=" Sort ">
+</FORM>
+
+<!-- footer -->
+<BR><FONT Size=+5>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </FONT>
+</TD>
+<TD WIDTH=15><IMG SRC=http://www.nevrax.org/inc/img/pixel.gif WIDTH=15 HEIGHT=15 BORDER=0 ALT=""></TD>
+</TR>
+</TABLE>
+</BODY>
+</HTML></BODY></HTML>
diff --git a/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cpp b/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cpp
new file mode 100644
index 00000000..933bfdad
--- /dev/null
+++ b/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cpp
@@ -0,0 +1,274 @@
+<!doctype html public "-//W3C//DTD HTML 4.0 Transitional//EN" "http://www.w3.org/TR/REC-html40/loose.dtd">
+<HTML>
+<HEAD>
+ <TITLE>nevrax.org : cvs</TITLE>
+ <META name="keywords" content="freesoftware,nel,newt,snowballs,richard stallman,GNU,Multi-User Online World">
+
+ <LINK REL=stylesheet TYPE="text/css" HREF="http://www.nevrax.org/inc/css/nevrax.css">
+</HEAD>
+<BODY MARGINHEIGHT="0" MARGINWIDTH="0">
+
+<!-- uplinks -->
+<TABLE CELLSPACING=0 CELLPADDING=0 BORDER=0>
+ <TR>
+ <TD WIDTH=16><IMG SRC="http://www.nevrax.org/inc/img/pixel.gif" WIDTH="16" HEIGHT="16" BORDER=0 ALT=""></TD>
+ <TD WIDTH=140 BGCOLOR=#dddddd><IMG SRC="http://www.nevrax.org/inc/img/pixel.gif" WIDTH="140" HEIGHT="16" BORDER=0 ALT=""></TD>
+ <TD WIDTH=16><IMG SRC="http://www.nevrax.org/inc/img/pixel.gif" WIDTH="16" HEIGHT="16" BORDER=0 ALT=""></TD>
+ <TD><IMG width=6 height=14 SRC="http://www.nevrax.org/inc/img/reddots.gif" ALT="#" VSPACE=2 HSPACE=2 BORDER=0 ></TD><TD VALIGN=middle>&nbsp;<A CLASS=uplinks HREF=http://www.nevrax.org><b>Home</B></FONT></A>&nbsp;&nbsp;&nbsp;</TD>
+ <TD><IMG width=6 height=14 SRC="http://www.nevrax.org/inc/img/reddots.gif" ALT="#" VSPACE=2 HSPACE=2 BORDER=0 ></TD><TD VALIGN=middle>&nbsp;<A CLASS=uplinks HREF=http://www.nevrax.com><b>nevrax.com</B></FONT></A>&nbsp;&nbsp;&nbsp;</TD>
+ </TR>
+</TABLE>
+
+<!-- banner Nevrax -->
+<TABLE CELLSPACING=0 CELLPADDING=0 BORDER=0 WIDTH=100%>
+ <TR><TD BGCOLOR="#000000" BACKGROUND="http://www.nevrax.org/inc/img/black_banner.jpg"><A HREF="http://www.nevrax.org"><IMG SRC="http://www.nevrax.org/inc/img/nevrax.gif" WIDTH="170" HEIGHT="45" BORDER=0 ALT="Nevrax" ></A></TD></TR>
+</TABLE>
+
+<!-- main table -->
+<TABLE CELLSPACING=0 CELLPADDING=0 BORDER=0 height=100%>
+ <TR>
+ <TD WIDTH=16><IMG SRC="http://www.nevrax.org/inc/img/pixel.gif" WIDTH="16" HEIGHT="10" BORDER=0 ALT=""></TD>
+ <TD WIDTH=140 BGCOLOR=#dddddd VALIGN=TOP ALIGN=middle><IMG SRC="http://www.nevrax.org/inc/img/pixel.gif" WIDTH="140" HEIGHT="10" BORDER=0 ALT="">
+
+ <!------ Begin Box ------>
+ <TABLE BORDER=0 CELLSPACING=0 CELLPADDING=0 BGCOLOR=black><TR><TD><TABLE border=0 cellspacing=2 cellpadding=0 width=120><tr><TD ALIGN=middle bgcolor=black>
+ <FONT COLOR=white FACE="sans-serif"><B>Nevrax.org</B></FONT></TD></TR><tr><td colspan=2 bgcolor=#FFFFFF>
+ <TABLE cellspacing=0 cellpadding=1 border=0>
+ <tr><td ALIGN=middle><a class='linkbox' href="http://www.nevrax.org/news/" TITLE="Rubrique news"><img width=13 height=15 hspace=5 border=0 src=http://www.nevrax.org/inc/img/picto-news.gif ALT=#></A></td><td><a class='linkbox' href="http://www.nevrax.org/news/" TITLE="News">News</a></td></tr>
+ <tr><td ALIGN=middle><a class='linkbox' href="http://www.nevrax.org/mail/" TITLE="Rubrique mail"><img width=15 height=11 hspace=5 border=0 src=http://www.nevrax.org/inc/img/picto-mail.gif ALT=#></A></td><td><a class='linkbox' href="http://www.nevrax.org/mail/" TITLE="Mailing list archive">Mailing-list</a></td></tr>
+ <tr><td ALIGN=middle><a class='linkbox' href="http://www.nevrax.org/docs/" TITLE="Rubrique docs"><img width=14 height=16 hspace=5 border=0 src=http://www.nevrax.org/inc/img/picto-docs.gif ALT=#></A></td><td><a class='linkbox' href="http://www.nevrax.org/docs/" TITLE="Documentation">Documentation</a></td></tr>
+ <tr><td ALIGN=middle><a class='linkbox' href="http://www.nevrax.org/cvs/" TITLE="Rubrique cvs"><img width=13 height=17 hspace=5 border=0 src=http://www.nevrax.org/inc/img/picto-cvs.gif ALT=#></A></td><td><a class='linkbox' href="http://www.nevrax.org/cvs/" TITLE="CVS Web">CVS</a></td></tr>
+ <tr><td ALIGN=middle><a class='linkbox' href="http://www.nevrax.org/bugs/" TITLE="Rubrique bugs"><img width=20 height=16 hspace=5 border=0 src=http://www.nevrax.org/inc/img/picto-bugs.gif ALT=#></A></td><td><a class='linkbox' href="http://www.nevrax.org/bugs/" TITLE="Bugtracking">Bugs</a></td></tr>
+ <tr><td ALIGN=middle><a class='linkbox' href="http://www.nevrax.org/free/" TITLE="Rubrique license"><img width=18 height=12 hspace=5 border=0 src=http://www.nevrax.org/inc/img/picto-free.gif ALT=#></A></td><td><a class='linkbox' href="http://www.nevrax.org/free/" TITLE="Free Software">Free software</a></td></tr>
+ </TABLE>
+ </TD></TR></TABLE></TD></TR></TABLE>
+ <!------ End Box ------>
+
+ </TD>
+ <TD WIDTH=15><IMG SRC="http://www.nevrax.org/inc/img/pixel.gif" WIDTH="16" HEIGHT="16" BORDER=0 ALT=""></TD>
+ <TD ALIGN=left valign=top><IMG SRC="http://www.nevrax.org/inc/img/pixel.gif" WIDTH="140" HEIGHT="10" BORDER=0 ALT="">
+
+<!-- title -->
+<TABLE background="http://www.nevrax.org/inc/img/redline.gif" CELLSPACING=0 CELLPADDING=0 BORDER=0 width=100%><tr><td>
+<A HREF="http://www.nevrax.org/cvs/"><img src="http://www.nevrax.org/inc/img/t_cvs.gif" ALT="cvs" HEIGHT=20 BORDER=0></A>
+</td><td><IMG SRC="http://www.nevrax.org/inc/img/pixel.gif" WIDTH="1" HEIGHT="1" BORDER=0 ALT="">
+</td></tr></table>
+
+<!-- title -->
+<table width=100%><tr><td align=left><b> <a href="/cvs/cvsweb.cgi/">Nevrax</a> / <a href="/cvs/cvsweb.cgi/code/">code</a> / <a href="/cvs/cvsweb.cgi/code/nelns/">nelns</a> / <a href="/cvs/cvsweb.cgi/code/nelns/admin_service/">admin_service</a> / admin_service.cpp</b></td><td align=right><b></b></td></TR></TABLE>
+
+<!-- block -->
+<TABLE bgcolor="#dddddd" CELLSPACING=0 CELLPADDING=0 BORDER=0 width=100%><tr><td width=1% valign=middle><img width=6 height=14 hspace=2 vspace=2 src="http://www.nevrax.org/inc/img/reddots.gif"></TD>
+ <TD><B>admin_service.cpp</B></TD>
+ <TD ALIGN=RIGHT> </td>
+</tr></table>
+<P>
+<p>Default branch: MAIN<BR>
+<HR size=1 NOSHADE><P><a NAME="rev1.15"></a><a NAME="HEAD"></a><a NAME="MAIN"></a>
+ Revision <A HREF="admin_service.cpp?rev=1.15&amp;content-type=text/x-cvsweb-markup"><b>1.15</b></A> / (<A HREF="/cvs/cvsweb.cgi/~checkout~/code/nelns/admin_service/admin_service.cpp?rev=1.15&amp;content-type=text/plain" target="cvs_checkout" onClick="window.open('/cvs/cvsweb.cgi/~checkout~/code/nelns/admin_service/admin_service.cpp?rev=1.15&amp;content-type=text/plain','cvs_checkout','resizeable,scrollbars');"><b>download</b></A>) - <a href="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cpp?annotate=1.15">annotate</a> - <A HREF="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cpp?r1=1.15">[select for diffs]</A>
+, <i>Mon Mar 25 09:28:00 2002 UTC</i> (2 months, 3 weeks ago) by <i>lecroart</i>
+<BR>Branch: <b><A HREF="admin_service.cpp?only_with_tag=MAIN">MAIN</A>
+</b>
+<BR>CVS Tags: <b><A HREF="admin_service.cpp?only_with_tag=HEAD">HEAD</A>
+</b><BR>Changes since <b>1.14: +8 -6
+ lines</b><BR>Diff to previous <A HREF="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cpp.diff?r1=1.14&amp;r2=1.15">1.14</A>
+<PRE>
+CHANGED: use new service functions
+</PRE>
+<HR size=1 NOSHADE><P><a NAME="rev1.14"></a>
+ Revision <A HREF="admin_service.cpp?rev=1.14&amp;content-type=text/x-cvsweb-markup"><b>1.14</b></A> / (<A HREF="/cvs/cvsweb.cgi/~checkout~/code/nelns/admin_service/admin_service.cpp?rev=1.14&amp;content-type=text/plain" target="cvs_checkout" onClick="window.open('/cvs/cvsweb.cgi/~checkout~/code/nelns/admin_service/admin_service.cpp?rev=1.14&amp;content-type=text/plain','cvs_checkout','resizeable,scrollbars');"><b>download</b></A>) - <a href="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cpp?annotate=1.14">annotate</a> - <A HREF="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cpp?r1=1.14">[select for diffs]</A>
+, <i>Tue Mar 19 17:42:48 2002 UTC</i> (3 months ago) by <i>valignat</i>
+<BR>Branch: <b><A HREF="admin_service.cpp?only_with_tag=MAIN">MAIN</A>
+</b>
+<BR>Changes since <b>1.13: +14 -2
+ lines</b><BR>Diff to previous <A HREF="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cpp.diff?r1=1.13&amp;r2=1.14">1.13</A>
+<PRE>
+Applied patches which help to have a clen install on GNU/Linux and to make a Debian package (changes on the management of config and log files, bugfixes, etc ...)
+</PRE>
+<HR size=1 NOSHADE><P><a NAME="rev1.13"></a>
+ Revision <A HREF="admin_service.cpp?rev=1.13&amp;content-type=text/x-cvsweb-markup"><b>1.13</b></A> / (<A HREF="/cvs/cvsweb.cgi/~checkout~/code/nelns/admin_service/admin_service.cpp?rev=1.13&amp;content-type=text/plain" target="cvs_checkout" onClick="window.open('/cvs/cvsweb.cgi/~checkout~/code/nelns/admin_service/admin_service.cpp?rev=1.13&amp;content-type=text/plain','cvs_checkout','resizeable,scrollbars');"><b>download</b></A>) - <a href="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cpp?annotate=1.13">annotate</a> - <A HREF="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cpp?r1=1.13">[select for diffs]</A>
+, <i>Fri Mar 1 10:20:32 2002 UTC</i> (3 months, 3 weeks ago) by <i>lecroart</i>
+<BR>Branch: <b><A HREF="admin_service.cpp?only_with_tag=MAIN">MAIN</A>
+</b>
+<BR>Changes since <b>1.12: +8 -16
+ lines</b><BR>Diff to previous <A HREF="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cpp.diff?r1=1.12&amp;r2=1.13">1.12</A>
+<PRE>
+ADDED: password per shard auth
+</PRE>
+<HR size=1 NOSHADE><P><a NAME="rev1.12"></a>
+ Revision <A HREF="admin_service.cpp?rev=1.12&amp;content-type=text/x-cvsweb-markup"><b>1.12</b></A> / (<A HREF="/cvs/cvsweb.cgi/~checkout~/code/nelns/admin_service/admin_service.cpp?rev=1.12&amp;content-type=text/plain" target="cvs_checkout" onClick="window.open('/cvs/cvsweb.cgi/~checkout~/code/nelns/admin_service/admin_service.cpp?rev=1.12&amp;content-type=text/plain','cvs_checkout','resizeable,scrollbars');"><b>download</b></A>) - <a href="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cpp?annotate=1.12">annotate</a> - <A HREF="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cpp?r1=1.12">[select for diffs]</A>
+, <i>Fri Feb 15 17:07:43 2002 UTC</i> (4 months ago) by <i>lecroart</i>
+<BR>Branch: <b><A HREF="admin_service.cpp?only_with_tag=MAIN">MAIN</A>
+</b>
+<BR>Changes since <b>1.11: +50 -2
+ lines</b><BR>Diff to previous <A HREF="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cpp.diff?r1=1.11&amp;r2=1.12">1.11</A>
+<PRE>
+ADDED: login password
+</PRE>
+<HR size=1 NOSHADE><P><a NAME="rev1.11"></a>
+ Revision <A HREF="admin_service.cpp?rev=1.11&amp;content-type=text/x-cvsweb-markup"><b>1.11</b></A> / (<A HREF="/cvs/cvsweb.cgi/~checkout~/code/nelns/admin_service/admin_service.cpp?rev=1.11&amp;content-type=text/plain" target="cvs_checkout" onClick="window.open('/cvs/cvsweb.cgi/~checkout~/code/nelns/admin_service/admin_service.cpp?rev=1.11&amp;content-type=text/plain','cvs_checkout','resizeable,scrollbars');"><b>download</b></A>) - <a href="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cpp?annotate=1.11">annotate</a> - <A HREF="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cpp?r1=1.11">[select for diffs]</A>
+, <i>Tue Jul 10 16:49:53 2001 UTC</i> (11 months, 1 week ago) by <i>lecroart</i>
+<BR>Branch: <b><A HREF="admin_service.cpp?only_with_tag=MAIN">MAIN</A>
+</b>
+<BR>Changes since <b>1.10: +18 -14
+ lines</b><BR>Diff to previous <A HREF="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cpp.diff?r1=1.10&amp;r2=1.11">1.10</A>
+<PRE>
+BUGFIX: when a service isn't ready and already disconnected, it doesn't crash anymore
+</PRE>
+<HR size=1 NOSHADE><P><a NAME="rev1.10"></a>
+ Revision <A HREF="admin_service.cpp?rev=1.10&amp;content-type=text/x-cvsweb-markup"><b>1.10</b></A> / (<A HREF="/cvs/cvsweb.cgi/~checkout~/code/nelns/admin_service/admin_service.cpp?rev=1.10&amp;content-type=text/plain" target="cvs_checkout" onClick="window.open('/cvs/cvsweb.cgi/~checkout~/code/nelns/admin_service/admin_service.cpp?rev=1.10&amp;content-type=text/plain','cvs_checkout','resizeable,scrollbars');"><b>download</b></A>) - <a href="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cpp?annotate=1.10">annotate</a> - <A HREF="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cpp?r1=1.10">[select for diffs]</A>
+, <i>Thu Jul 5 08:26:07 2001 UTC</i> (11 months, 2 weeks ago) by <i>lecroart</i>
+<BR>Branch: <b><A HREF="admin_service.cpp?only_with_tag=MAIN">MAIN</A>
+</b>
+<BR>Changes since <b>1.9: +1 -6
+ lines</b><BR>Diff to previous <A HREF="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cpp.diff?r1=1.9&amp;r2=1.10">1.9</A>
+<PRE>
+REMOVED: update()
+</PRE>
+<HR size=1 NOSHADE><P><a NAME="rev1.9"></a>
+ Revision <A HREF="admin_service.cpp?rev=1.9&amp;content-type=text/x-cvsweb-markup"><b>1.9</b></A> / (<A HREF="/cvs/cvsweb.cgi/~checkout~/code/nelns/admin_service/admin_service.cpp?rev=1.9&amp;content-type=text/plain" target="cvs_checkout" onClick="window.open('/cvs/cvsweb.cgi/~checkout~/code/nelns/admin_service/admin_service.cpp?rev=1.9&amp;content-type=text/plain','cvs_checkout','resizeable,scrollbars');"><b>download</b></A>) - <a href="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cpp?annotate=1.9">annotate</a> - <A HREF="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cpp?r1=1.9">[select for diffs]</A>
+, <i>Wed Jun 27 08:34:23 2001 UTC</i> (11 months, 3 weeks ago) by <i>lecroart</i>
+<BR>Branch: <b><A HREF="admin_service.cpp?only_with_tag=MAIN">MAIN</A>
+</b>
+<BR>Changes since <b>1.8: +14 -4
+ lines</b><BR>Diff to previous <A HREF="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cpp.diff?r1=1.8&amp;r2=1.9">1.8</A>
+<PRE>
+ADDED: command redirection
+</PRE>
+<HR size=1 NOSHADE><P><a NAME="rev1.8"></a>
+ Revision <A HREF="admin_service.cpp?rev=1.8&amp;content-type=text/x-cvsweb-markup"><b>1.8</b></A> / (<A HREF="/cvs/cvsweb.cgi/~checkout~/code/nelns/admin_service/admin_service.cpp?rev=1.8&amp;content-type=text/plain" target="cvs_checkout" onClick="window.open('/cvs/cvsweb.cgi/~checkout~/code/nelns/admin_service/admin_service.cpp?rev=1.8&amp;content-type=text/plain','cvs_checkout','resizeable,scrollbars');"><b>download</b></A>) - <a href="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cpp?annotate=1.8">annotate</a> - <A HREF="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cpp?r1=1.8">[select for diffs]</A>
+, <i>Mon Jun 18 14:54:06 2001 UTC</i> (12 months ago) by <i>lecroart</i>
+<BR>Branch: <b><A HREF="admin_service.cpp?only_with_tag=MAIN">MAIN</A>
+</b>
+<BR>Changes since <b>1.7: +2 -2
+ lines</b><BR>Diff to previous <A HREF="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cpp.diff?r1=1.7&amp;r2=1.8">1.7</A>
+<PRE>
+BUGFIX: linux compilation
+</PRE>
+<HR size=1 NOSHADE><P><a NAME="rev1.7"></a>
+ Revision <A HREF="admin_service.cpp?rev=1.7&amp;content-type=text/x-cvsweb-markup"><b>1.7</b></A> / (<A HREF="/cvs/cvsweb.cgi/~checkout~/code/nelns/admin_service/admin_service.cpp?rev=1.7&amp;content-type=text/plain" target="cvs_checkout" onClick="window.open('/cvs/cvsweb.cgi/~checkout~/code/nelns/admin_service/admin_service.cpp?rev=1.7&amp;content-type=text/plain','cvs_checkout','resizeable,scrollbars');"><b>download</b></A>) - <a href="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cpp?annotate=1.7">annotate</a> - <A HREF="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cpp?r1=1.7">[select for diffs]</A>
+, <i>Mon Jun 18 14:43:31 2001 UTC</i> (12 months ago) by <i>lecroart</i>
+<BR>Branch: <b><A HREF="admin_service.cpp?only_with_tag=MAIN">MAIN</A>
+</b>
+<BR>Changes since <b>1.6: +10 -9
+ lines</b><BR>Diff to previous <A HREF="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cpp.diff?r1=1.6&amp;r2=1.7">1.6</A>
+<PRE>
+BUGFIX: linux compilation
+</PRE>
+<HR size=1 NOSHADE><P><a NAME="rev1.6"></a>
+ Revision <A HREF="admin_service.cpp?rev=1.6&amp;content-type=text/x-cvsweb-markup"><b>1.6</b></A> / (<A HREF="/cvs/cvsweb.cgi/~checkout~/code/nelns/admin_service/admin_service.cpp?rev=1.6&amp;content-type=text/plain" target="cvs_checkout" onClick="window.open('/cvs/cvsweb.cgi/~checkout~/code/nelns/admin_service/admin_service.cpp?rev=1.6&amp;content-type=text/plain','cvs_checkout','resizeable,scrollbars');"><b>download</b></A>) - <a href="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cpp?annotate=1.6">annotate</a> - <A HREF="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cpp?r1=1.6">[select for diffs]</A>
+, <i>Thu Jun 7 16:19:05 2001 UTC</i> (12 months, 2 weeks ago) by <i>lecroart</i>
+<BR>Branch: <b><A HREF="admin_service.cpp?only_with_tag=MAIN">MAIN</A>
+</b>
+<BR>Changes since <b>1.5: +134 -48
+ lines</b><BR>Diff to previous <A HREF="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cpp.diff?r1=1.5&amp;r2=1.6">1.5</A>
+<PRE>
+ADDED: commands system
+</PRE>
+<HR size=1 NOSHADE><P><a NAME="rev1.5"></a>
+ Revision <A HREF="admin_service.cpp?rev=1.5&amp;content-type=text/x-cvsweb-markup"><b>1.5</b></A> / (<A HREF="/cvs/cvsweb.cgi/~checkout~/code/nelns/admin_service/admin_service.cpp?rev=1.5&amp;content-type=text/plain" target="cvs_checkout" onClick="window.open('/cvs/cvsweb.cgi/~checkout~/code/nelns/admin_service/admin_service.cpp?rev=1.5&amp;content-type=text/plain','cvs_checkout','resizeable,scrollbars');"><b>download</b></A>) - <a href="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cpp?annotate=1.5">annotate</a> - <A HREF="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cpp?r1=1.5">[select for diffs]</A>
+, <i>Thu May 31 16:44:54 2001 UTC</i> (12 months, 3 weeks ago) by <i>lecroart</i>
+<BR>Branch: <b><A HREF="admin_service.cpp?only_with_tag=MAIN">MAIN</A>
+</b>
+<BR>Changes since <b>1.4: +156 -61
+ lines</b><BR>Diff to previous <A HREF="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cpp.diff?r1=1.4&amp;r2=1.5">1.4</A>
+<PRE>
+ADDED: service alias naming
+</PRE>
+<HR size=1 NOSHADE><P><a NAME="rev1.4"></a>
+ Revision <A HREF="admin_service.cpp?rev=1.4&amp;content-type=text/x-cvsweb-markup"><b>1.4</b></A> / (<A HREF="/cvs/cvsweb.cgi/~checkout~/code/nelns/admin_service/admin_service.cpp?rev=1.4&amp;content-type=text/plain" target="cvs_checkout" onClick="window.open('/cvs/cvsweb.cgi/~checkout~/code/nelns/admin_service/admin_service.cpp?rev=1.4&amp;content-type=text/plain','cvs_checkout','resizeable,scrollbars');"><b>download</b></A>) - <a href="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cpp?annotate=1.4">annotate</a> - <A HREF="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cpp?r1=1.4">[select for diffs]</A>
+, <i>Fri May 18 16:51:33 2001 UTC</i> (13 months ago) by <i>lecroart</i>
+<BR>Branch: <b><A HREF="admin_service.cpp?only_with_tag=MAIN">MAIN</A>
+</b>
+<BR>Changes since <b>1.3: +405 -101
+ lines</b><BR>Diff to previous <A HREF="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cpp.diff?r1=1.3&amp;r2=1.4">1.3</A>
+<PRE>
+ADDED: work in progress. added gtk
+</PRE>
+<HR size=1 NOSHADE><P><a NAME="rev1.3"></a>
+ Revision <A HREF="admin_service.cpp?rev=1.3&amp;content-type=text/x-cvsweb-markup"><b>1.3</b></A> / (<A HREF="/cvs/cvsweb.cgi/~checkout~/code/nelns/admin_service/admin_service.cpp?rev=1.3&amp;content-type=text/plain" target="cvs_checkout" onClick="window.open('/cvs/cvsweb.cgi/~checkout~/code/nelns/admin_service/admin_service.cpp?rev=1.3&amp;content-type=text/plain','cvs_checkout','resizeable,scrollbars');"><b>download</b></A>) - <a href="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cpp?annotate=1.3">annotate</a> - <A HREF="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cpp?r1=1.3">[select for diffs]</A>
+, <i>Thu May 10 08:20:06 2001 UTC</i> (13 months, 1 week ago) by <i>lecroart</i>
+<BR>Branch: <b><A HREF="admin_service.cpp?only_with_tag=MAIN">MAIN</A>
+</b>
+<BR>Changes since <b>1.2: +233 -34
+ lines</b><BR>Diff to previous <A HREF="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cpp.diff?r1=1.2&amp;r2=1.3">1.2</A>
+<PRE>
+ADDED: changed the data structures
+</PRE>
+<HR size=1 NOSHADE><P><a NAME="rev1.2"></a>
+ Revision <A HREF="admin_service.cpp?rev=1.2&amp;content-type=text/x-cvsweb-markup"><b>1.2</b></A> / (<A HREF="/cvs/cvsweb.cgi/~checkout~/code/nelns/admin_service/admin_service.cpp?rev=1.2&amp;content-type=text/plain" target="cvs_checkout" onClick="window.open('/cvs/cvsweb.cgi/~checkout~/code/nelns/admin_service/admin_service.cpp?rev=1.2&amp;content-type=text/plain','cvs_checkout','resizeable,scrollbars');"><b>download</b></A>) - <a href="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cpp?annotate=1.2">annotate</a> - <A HREF="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cpp?r1=1.2">[select for diffs]</A>
+, <i>Thu May 3 13:19:13 2001 UTC</i> (13 months, 2 weeks ago) by <i>lecroart</i>
+<BR>Branch: <b><A HREF="admin_service.cpp?only_with_tag=MAIN">MAIN</A>
+</b>
+<BR>Changes since <b>1.1: +2 -6
+ lines</b><BR>Diff to previous <A HREF="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cpp.diff?r1=1.1&amp;r2=1.2">1.1</A>
+<PRE>
+BUGFIX: now compile on linux
+</PRE>
+<HR size=1 NOSHADE><P><a NAME="rev1.1"></a>
+ Revision <A HREF="admin_service.cpp?rev=1.1&amp;content-type=text/x-cvsweb-markup"><b>1.1</b></A> / (<A HREF="/cvs/cvsweb.cgi/~checkout~/code/nelns/admin_service/admin_service.cpp?rev=1.1&amp;content-type=text/plain" target="cvs_checkout" onClick="window.open('/cvs/cvsweb.cgi/~checkout~/code/nelns/admin_service/admin_service.cpp?rev=1.1&amp;content-type=text/plain','cvs_checkout','resizeable,scrollbars');"><b>download</b></A>) - <a href="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cpp?annotate=1.1">annotate</a> - <A HREF="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cpp?r1=1.1">[select for diffs]</A>
+, <i>Wed May 2 12:36:39 2001 UTC</i> (13 months, 2 weeks ago) by <i>lecroart</i>
+<BR>Branch: <b><A HREF="admin_service.cpp?only_with_tag=MAIN">MAIN</A>
+</b>
+<BR>Diff<PRE>
+ADD: new version of the network system (in NeL and NeLns)
+</PRE>
+
+<!-- block -->
+<TABLE bgcolor="#dddddd" CELLSPACING=0 CELLPADDING=0 BORDER=0 width=100%><tr><td width=1% valign=middle><img width=6 height=14 hspace=2 vspace=2 src="http://www.nevrax.org/inc/img/reddots.gif"></TD>
+ <TD><B>Request Diffs</B></TD>
+ <TD ALIGN=RIGHT> </td>
+</tr></table>
+<P>
+<P>
+<FORM METHOD="GET" ACTION="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cpp.diff" NAME="diff_select">
+Diffs between
+<SELECT NAME="r1">
+<OPTION VALUE="text" SELECTED>Use Text Field
+<OPTION VALUE="1:MAIN">MAIN
+<OPTION VALUE="1.15:HEAD">HEAD
+</SELECT>
+<INPUT TYPE="TEXT" SIZE="12" NAME="tr1" VALUE="1.1" onChange='document.diff_select.r1.selectedIndex=0'>
+ and
+<SELECT NAME="r2">
+<OPTION VALUE="text" SELECTED>Use Text Field
+<OPTION VALUE="1:MAIN">MAIN
+<OPTION VALUE="1.15:HEAD">HEAD
+</SELECT>
+<INPUT TYPE="TEXT" SIZE="12" NAME="tr2" VALUE="1.15" onChange='docuement.diff_select.r2.selectedIndex=0'>
+<BR>Type of Diff should be a&nbsp;<SELECT NAME="f">
+<OPTION VALUE=h SELECTED>Colored Diff<OPTION VALUE=H>Long Colored Diff<OPTION VALUE=u>Unidiff<OPTION VALUE=c>Context Diff<OPTION VALUE=s>Side by Side</SELECT><INPUT TYPE=SUBMIT VALUE=" Get Diffs ">
+</FORM>
+
+<!-- block -->
+<TABLE bgcolor="#dddddd" CELLSPACING=0 CELLPADDING=0 BORDER=0 width=100%><tr><td width=1% valign=middle><img width=6 height=14 hspace=2 vspace=2 src="http://www.nevrax.org/inc/img/reddots.gif"></TD>
+ <TD><B>Select branch</B></TD>
+ <TD ALIGN=RIGHT> </td>
+</tr></table>
+<P>
+<P>
+<A name=branch></A>
+<FORM METHOD="GET" ACTION="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cpp">
+View only Branch:
+<SELECT NAME="only_with_tag" onchange="submit()">
+<OPTION VALUE="">Show all branches
+<OPTION>MAIN
+</SELECT>
+<INPUT TYPE=SUBMIT VALUE=" View Branch ">
+</FORM>
+<A name=logsort></A>
+<FORM METHOD="GET" ACTION="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cpp">
+Sort log by:
+<SELECT NAME="logsort" onchange="submit()">
+<OPTION VALUE=cvs>Not sorted<OPTION VALUE=date SELECTED>Commit date<OPTION VALUE=rev>Revision</SELECT>
+<INPUT TYPE=SUBMIT VALUE=" Sort ">
+</FORM>
+
+<!-- footer -->
+<BR><FONT Size=+5>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </FONT>
+</TD>
+<TD WIDTH=15><IMG SRC=http://www.nevrax.org/inc/img/pixel.gif WIDTH=15 HEIGHT=15 BORDER=0 ALT=""></TD>
+</TR>
+</TABLE>
+</BODY>
+</HTML></BODY></HTML>
diff --git a/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cpp.diff?r1=1.10&r2=1.11 b/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cpp.diff?r1=1.10&r2=1.11
new file mode 100644
index 00000000..db5e7fd9
--- /dev/null
+++ b/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cpp.diff?r1=1.10&r2=1.11
@@ -0,0 +1,46 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"><HTML>
+<HEAD><style> A { color:black }</style>
+<!-- hennerik CVSweb $Revision: 1.93 $ -->
+<TITLE>code/nelns/admin_service/admin_service.cpp - diff - 1.11</TITLE></HEAD>
+<BODY BGCOLOR="#eeeeee">
+<table width="100%" border=0 cellspacing=0 cellpadding=1 bgcolor="#aaaaaa"><tr valign=bottom><td><a href="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cpp"><IMG SRC="http://www.nevrax.org/inc/img/picto-up.gif" ALT="[BACK]" BORDER="0" WIDTH="14" HEIGHT="13"></a> <b>Return to <A HREF="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cpp">admin_service.cpp</A>
+ CVS log</b> <IMG SRC="http://www.nevrax.org/inc/img/picto-news.gif" ALT="[TXT]" BORDER="0" WIDTH="13" HEIGHT="15"></td><td align=right><IMG SRC="http://www.nevrax.org/inc/img/picto-dir.gif" ALT="[DIR]" BORDER="0" WIDTH="15" HEIGHT="13"> <b>Up to <a href="/cvs/cvsweb.cgi/">Nevrax</a> / <a href="/cvs/cvsweb.cgi/code/">code</a> / <a href="/cvs/cvsweb.cgi/code/nelns/">nelns</a> / <a href="/cvs/cvsweb.cgi/code/nelns/admin_service/">admin_service</a></b></td></tr></table><h3 align=center>Diff for /code/nelns/admin_service/admin_service.cpp between version 1.10 and 1.11</h3>
+<table border=0 cellspacing=0 cellpadding=0 width="100%">
+<tr bgcolor="#ffffff">
+<th width="50%" valign=TOP>version 1.10, 2001/07/05 08:26:07</th>
+<th width="50%" valign=TOP>version 1.11, 2001/07/10 16:49:53</th>
+<tr bgcolor="#dddddd"><td width="50%"><table width="100%" border=1 cellpadding=5><tr><td><b>Line 514</b>&nbsp;<font size=-1></font></td></tr></table></td><td width="50%"><table width="100%" border=1 cellpadding=5><tr><td><b>Line 514</b>&nbsp;<font size=-1></font></td></tr></table></td>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp;</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp;</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;nlinfo (&quot;*:%d:%d disconnected&quot;, aes-&gt;Id, sid);</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;nlinfo (&quot;*:%d:%d disconnected&quot;, aes-&gt;Id, sid);</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp;</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp;</font></td></tr>
+<tr><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;SIT sit = aes-&gt;findService(sid);</font></td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;SIT sit = aes-&gt;findService(sid, false);</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp;</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp;</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// broadcast the message to all admin client</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// broadcast the message to all admin client</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;CMessage msgout (CNetManager::getSIDA (&quot;AS&quot;), &quot;SD&quot;);</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;CMessage msgout (CNetManager::getSIDA (&quot;AS&quot;), &quot;SD&quot;);</font></td></tr>
+<tr><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;msgout.serial (aes-&gt;Id, (*sit).Id);</font></td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;msgout.serial (aes-&gt;Id, sid);</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;CNetManager::send (&quot;AS&quot;, msgout, 0);</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;CNetManager::send (&quot;AS&quot;, msgout, 0);</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp;</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp;</font></td></tr>
+<tr><td bgcolor="#cccccc">&nbsp;</td><td bgcolor="#ccccff"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// the service could disconnect before it's identification, in this case, we don't have it in the service list</font></td></tr>
+<tr><td bgcolor="#cccccc">&nbsp;</td><td bgcolor="#ccccff"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;if (sit != aes-&gt;Services.end ())</font></td></tr>
+<tr><td bgcolor="#cccccc">&nbsp;</td><td bgcolor="#ccccff"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;if ((*sit).InConfig)</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;if ((*sit).InConfig)</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;(*sit).Ready = (*sit).Connected = false;</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;(*sit).Ready = (*sit).Connected = false;</font></td></tr>
+<tr bgcolor="#dddddd"><td width="50%"><table width="100%" border=1 cellpadding=5><tr><td><b>Line 532</b>&nbsp;<font size=-1></font></td></tr></table></td><td width="50%"><table width="100%" border=1 cellpadding=5><tr><td><b>Line 535</b>&nbsp;<font size=-1></font></td></tr></table></td>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// erase only if it's not a service in the config</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// erase only if it's not a service in the config</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;aes-&gt;Services.erase (sit);</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;aes-&gt;Services.erase (sit);</font></td></tr>
+<tr><td bgcolor="#cccccc">&nbsp;</td><td bgcolor="#ccccff"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp;</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp;</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;displayServices ();</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;displayServices ();</font></td></tr>
+</table><br><hr noshade width="100%">
+<table border=0><tr><td><table border=1><tr><td>Legend:<br><table border=0 cellspacing=0 cellpadding=1>
+<tr><td align=center bgcolor="#ff9999">Removed from v.1.10</td><td bgcolor="#cccccc">&nbsp;</td></tr><tr bgcolor="#99ff99"><td align=center colspan=2>changed lines</td></tr><tr><td bgcolor="#cccccc">&nbsp;</td><td align=center bgcolor="#ccccff">Added in v.1.11</td></tr></table></td></tr></table>
+<td><FORM METHOD="GET" ACTION="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cpp.diff">
+<INPUT TYPE=HIDDEN NAME="r1" VALUE="1.10">
+<INPUT TYPE=HIDDEN NAME="r2" VALUE="1.11">
+<SELECT NAME="f" onchange="submit()">
+<OPTION VALUE=h SELECTED>Colored Diff<OPTION VALUE=H>Long Colored Diff<OPTION VALUE=u>Unidiff<OPTION VALUE=c>Context Diff<OPTION VALUE=s>Side by Side</SELECT><INPUT TYPE=SUBMIT VALUE="Show">
+</FORM>
+</td></tr></table> \ No newline at end of file
diff --git a/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cpp.diff?r1=1.13&r2=1.14 b/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cpp.diff?r1=1.13&r2=1.14
new file mode 100644
index 00000000..c88ca26b
--- /dev/null
+++ b/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cpp.diff?r1=1.13&r2=1.14
@@ -0,0 +1,45 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"><HTML>
+<HEAD><style> A { color:black }</style>
+<!-- hennerik CVSweb $Revision: 1.93 $ -->
+<TITLE>code/nelns/admin_service/admin_service.cpp - diff - 1.14</TITLE></HEAD>
+<BODY BGCOLOR="#eeeeee">
+<table width="100%" border=0 cellspacing=0 cellpadding=1 bgcolor="#aaaaaa"><tr valign=bottom><td><a href="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cpp"><IMG SRC="http://www.nevrax.org/inc/img/picto-up.gif" ALT="[BACK]" BORDER="0" WIDTH="14" HEIGHT="13"></a> <b>Return to <A HREF="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cpp">admin_service.cpp</A>
+ CVS log</b> <IMG SRC="http://www.nevrax.org/inc/img/picto-news.gif" ALT="[TXT]" BORDER="0" WIDTH="13" HEIGHT="15"></td><td align=right><IMG SRC="http://www.nevrax.org/inc/img/picto-dir.gif" ALT="[DIR]" BORDER="0" WIDTH="15" HEIGHT="13"> <b>Up to <a href="/cvs/cvsweb.cgi/">Nevrax</a> / <a href="/cvs/cvsweb.cgi/code/">code</a> / <a href="/cvs/cvsweb.cgi/code/nelns/">nelns</a> / <a href="/cvs/cvsweb.cgi/code/nelns/admin_service/">admin_service</a></b></td></tr></table><h3 align=center>Diff for /code/nelns/admin_service/admin_service.cpp between version 1.13 and 1.14</h3>
+<table border=0 cellspacing=0 cellpadding=0 width="100%">
+<tr bgcolor="#ffffff">
+<th width="50%" valign=TOP>version 1.13, 2002/03/01 10:20:32</th>
+<th width="50%" valign=TOP>version 1.14, 2002/03/19 17:42:48</th>
+<tr bgcolor="#dddddd"><td width="50%"><table width="100%" border=1 cellpadding=5><tr><td><b>Line 24</b>&nbsp;<font size=-1></font></td></tr></table></td><td width="50%"><table width="100%" border=1 cellpadding=5><tr><td><b>Line 24</b>&nbsp;<font size=-1></font></td></tr></table></td>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; * MA 02111-1307, USA.</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; * MA 02111-1307, USA.</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; */</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; */</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp;</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp;</font></td></tr>
+<tr><td bgcolor="#cccccc">&nbsp;</td><td bgcolor="#ccccff"><font face="Helvetica,Arial" size="-1">&nbsp;#ifdef HAVE_CONFIG_H</font></td></tr>
+<tr><td bgcolor="#cccccc">&nbsp;</td><td bgcolor="#ccccff"><font face="Helvetica,Arial" size="-1">&nbsp;#include &quot;config.h&quot;</font></td></tr>
+<tr><td bgcolor="#cccccc">&nbsp;</td><td bgcolor="#ccccff"><font face="Helvetica,Arial" size="-1">&nbsp;#endif // HAVE_CONFIG_H</font></td></tr>
+<tr><td bgcolor="#cccccc">&nbsp;</td><td bgcolor="#ccccff"><font face="Helvetica,Arial" size="-1">&nbsp;</font></td></tr>
+<tr><td bgcolor="#cccccc">&nbsp;</td><td bgcolor="#ccccff"><font face="Helvetica,Arial" size="-1">&nbsp;#ifndef NELNS_CONFIG</font></td></tr>
+<tr><td bgcolor="#cccccc">&nbsp;</td><td bgcolor="#ccccff"><font face="Helvetica,Arial" size="-1">&nbsp;#define NELNS_CONFIG &quot;&quot;</font></td></tr>
+<tr><td bgcolor="#cccccc">&nbsp;</td><td bgcolor="#ccccff"><font face="Helvetica,Arial" size="-1">&nbsp;#endif // NELNS_CONFIG</font></td></tr>
+<tr><td bgcolor="#cccccc">&nbsp;</td><td bgcolor="#ccccff"><font face="Helvetica,Arial" size="-1">&nbsp;</font></td></tr>
+<tr><td bgcolor="#cccccc">&nbsp;</td><td bgcolor="#ccccff"><font face="Helvetica,Arial" size="-1">&nbsp;#ifndef NELNS_LOGS</font></td></tr>
+<tr><td bgcolor="#cccccc">&nbsp;</td><td bgcolor="#ccccff"><font face="Helvetica,Arial" size="-1">&nbsp;#define NELNS_LOGS &quot;&quot;</font></td></tr>
+<tr><td bgcolor="#cccccc">&nbsp;</td><td bgcolor="#ccccff"><font face="Helvetica,Arial" size="-1">&nbsp;#endif // NELNS_LOGS</font></td></tr>
+<tr><td bgcolor="#cccccc">&nbsp;</td><td bgcolor="#ccccff"><font face="Helvetica,Arial" size="-1">&nbsp;</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp;#include &lt;string&gt;</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp;#include &lt;string&gt;</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp;#include &lt;list&gt;</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp;#include &lt;list&gt;</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp;</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp;</font></td></tr>
+<tr bgcolor="#dddddd"><td width="50%"><table width="100%" border=1 cellpadding=5><tr><td><b>Line 970</b>&nbsp;<font size=-1></font></td></tr></table></td><td width="50%"><table width="100%" border=1 cellpadding=5><tr><td><b>Line 982</b>&nbsp;<font size=-1></font></td></tr></table></td>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp;// AESAS is a client connection to the admin executor</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp;// AESAS is a client connection to the admin executor</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp;</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp;</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp;/// Naming Service</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp;/// Naming Service</font></td></tr>
+<tr><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp;NLNET_SERVICE_MAIN (CAdminService, &quot;AS&quot;, &quot;admin_service&quot;, 49995, ClientCallbackArray);</font></td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp;NLNET_SERVICE_MAIN (CAdminService, &quot;AS&quot;, &quot;admin_service&quot;, 49995, ClientCallbackArray, NELNS_CONFIG, NELNS_LOGS);</font></td></tr>
+</table><br><hr noshade width="100%">
+<table border=0><tr><td><table border=1><tr><td>Legend:<br><table border=0 cellspacing=0 cellpadding=1>
+<tr><td align=center bgcolor="#ff9999">Removed from v.1.13</td><td bgcolor="#cccccc">&nbsp;</td></tr><tr bgcolor="#99ff99"><td align=center colspan=2>changed lines</td></tr><tr><td bgcolor="#cccccc">&nbsp;</td><td align=center bgcolor="#ccccff">Added in v.1.14</td></tr></table></td></tr></table>
+<td><FORM METHOD="GET" ACTION="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cpp.diff">
+<INPUT TYPE=HIDDEN NAME="r1" VALUE="1.13">
+<INPUT TYPE=HIDDEN NAME="r2" VALUE="1.14">
+<SELECT NAME="f" onchange="submit()">
+<OPTION VALUE=h SELECTED>Colored Diff<OPTION VALUE=H>Long Colored Diff<OPTION VALUE=u>Unidiff<OPTION VALUE=c>Context Diff<OPTION VALUE=s>Side by Side</SELECT><INPUT TYPE=SUBMIT VALUE="Show">
+</FORM>
+</td></tr></table> \ No newline at end of file
diff --git a/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cpp.diff?r1=1.14&r2=1.15 b/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cpp.diff?r1=1.14&r2=1.15
new file mode 100644
index 00000000..a5c0bd52
--- /dev/null
+++ b/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cpp.diff?r1=1.14&r2=1.15
@@ -0,0 +1,68 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"><HTML>
+<HEAD><style> A { color:black }</style>
+<!-- hennerik CVSweb $Revision: 1.93 $ -->
+<TITLE>code/nelns/admin_service/admin_service.cpp - diff - 1.15</TITLE></HEAD>
+<BODY BGCOLOR="#eeeeee">
+<table width="100%" border=0 cellspacing=0 cellpadding=1 bgcolor="#aaaaaa"><tr valign=bottom><td><a href="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cpp"><IMG SRC="http://www.nevrax.org/inc/img/picto-up.gif" ALT="[BACK]" BORDER="0" WIDTH="14" HEIGHT="13"></a> <b>Return to <A HREF="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cpp">admin_service.cpp</A>
+ CVS log</b> <IMG SRC="http://www.nevrax.org/inc/img/picto-news.gif" ALT="[TXT]" BORDER="0" WIDTH="13" HEIGHT="15"></td><td align=right><IMG SRC="http://www.nevrax.org/inc/img/picto-dir.gif" ALT="[DIR]" BORDER="0" WIDTH="15" HEIGHT="13"> <b>Up to <a href="/cvs/cvsweb.cgi/">Nevrax</a> / <a href="/cvs/cvsweb.cgi/code/">code</a> / <a href="/cvs/cvsweb.cgi/code/nelns/">nelns</a> / <a href="/cvs/cvsweb.cgi/code/nelns/admin_service/">admin_service</a></b></td></tr></table><h3 align=center>Diff for /code/nelns/admin_service/admin_service.cpp between version 1.14 and 1.15</h3>
+<table border=0 cellspacing=0 cellpadding=0 width="100%">
+<tr bgcolor="#ffffff">
+<th width="50%" valign=TOP>version 1.14, 2002/03/19 17:42:48</th>
+<th width="50%" valign=TOP>version 1.15, 2002/03/25 09:28:00</th>
+<tr bgcolor="#dddddd"><td width="50%"><table width="100%" border=1 cellpadding=5><tr><td><b>Line 36</b>&nbsp;<font size=-1></font></td></tr></table></td><td width="50%"><table width="100%" border=1 cellpadding=5><tr><td><b>Line 36</b>&nbsp;<font size=-1></font></td></tr></table></td>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp;#define NELNS_LOGS &quot;&quot;</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp;#define NELNS_LOGS &quot;&quot;</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp;#endif // NELNS_LOGS</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp;#endif // NELNS_LOGS</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp;</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp;</font></td></tr>
+<tr><td bgcolor="#cccccc">&nbsp;</td><td bgcolor="#ccccff"><font face="Helvetica,Arial" size="-1">&nbsp;#include &quot;nel/misc/types_nl.h&quot;</font></td></tr>
+<tr><td bgcolor="#cccccc">&nbsp;</td><td bgcolor="#ccccff"><font face="Helvetica,Arial" size="-1">&nbsp;</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp;#include &lt;string&gt;</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp;#include &lt;string&gt;</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp;#include &lt;list&gt;</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp;#include &lt;list&gt;</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp;</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp;</font></td></tr>
+<tr><td bgcolor="#ff9999"><font face="Helvetica,Arial" size="-1">&nbsp;#include &quot;nel/net/service.h&quot;</font></td><td bgcolor="#cccccc">&nbsp;</td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp;#include &quot;nel/misc/debug.h&quot;</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp;#include &quot;nel/misc/debug.h&quot;</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp;#include &quot;nel/misc/config_file.h&quot;</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp;#include &quot;nel/misc/config_file.h&quot;</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp;#include &quot;nel/misc/command.h&quot;</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp;#include &quot;nel/misc/command.h&quot;</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp;</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp;</font></td></tr>
+<tr><td bgcolor="#cccccc">&nbsp;</td><td bgcolor="#ccccff"><font face="Helvetica,Arial" size="-1">&nbsp;#include &quot;nel/net/service.h&quot;</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp;#include &quot;nel/net/net_manager.h&quot;</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp;#include &quot;nel/net/net_manager.h&quot;</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp;</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp;</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp;using namespace std;</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp;using namespace std;</font></td></tr>
+<tr bgcolor="#dddddd"><td width="50%"><table width="100%" border=1 cellpadding=5><tr><td><b>Line 196</b>&nbsp;<font size=-1></font></td></tr></table></td><td width="50%"><table width="100%" border=1 cellpadding=5><tr><td><b>Line 198</b>&nbsp;<font size=-1></font></td></tr></table></td>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// get the script</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// get the script</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;try</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;try</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{</font></td></tr>
+<tr><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;CConfigFile::CVar &amp;script = IService::ConfigFile.getVar(&quot;Services&quot;);</font></td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;CConfigFile::CVar &amp;script = IService::getInstance()-&gt;ConfigFile.getVar(&quot;Services&quot;);</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp;</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp;</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// check the position</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// check the position</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp;</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp;</font></td></tr>
+<tr bgcolor="#dddddd"><td width="50%"><table width="100%" border=1 cellpadding=5><tr><td><b>Line 275</b>&nbsp;<font size=-1></font></td></tr></table></td><td width="50%"><table width="100%" border=1 cellpadding=5><tr><td><b>Line 277</b>&nbsp;<font size=-1></font></td></tr></table></td>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp;</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp;</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;try</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;try</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{</font></td></tr>
+<tr><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;CConfigFile::CVar &amp;script = IService::ConfigFile.getVar(&quot;Services&quot;);</font></td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;CConfigFile::CVar &amp;script = IService::getInstance()-&gt;ConfigFile.getVar(&quot;Services&quot;);</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp;</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp;</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;for (sint i = 0 ; i &lt; script.size (); i+=2)</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;for (sint i = 0 ; i &lt; script.size (); i+=2)</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{</font></td></tr>
+<tr bgcolor="#dddddd"><td width="50%"><table width="100%" border=1 cellpadding=5><tr><td><b>Line 690</b>&nbsp;<font size=-1></font></td></tr></table></td><td width="50%"><table width="100%" border=1 cellpadding=5><tr><td><b>Line 692</b>&nbsp;<font size=-1></font></td></tr></table></td>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;msgin.serial (password);</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;msgin.serial (password);</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp;</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp;</font></td></tr>
+<tr><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;if (password == IService::ConfigFile.getVar(&quot;Password&quot;).asString())</font></td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;if (password == IService::getInstance()-&gt;ConfigFile.getVar(&quot;Password&quot;).asString())</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// good authentification</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// good authentification</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;ok = true;</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;ok = true;</font></td></tr>
+<tr bgcolor="#dddddd"><td width="50%"><table width="100%" border=1 cellpadding=5><tr><td><b>Line 982</b>&nbsp;<font size=-1></font></td></tr></table></td><td width="50%"><table width="100%" border=1 cellpadding=5><tr><td><b>Line 984</b>&nbsp;<font size=-1></font></td></tr></table></td>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp;// AESAS is a client connection to the admin executor</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp;// AESAS is a client connection to the admin executor</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp;</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp;</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp;/// Naming Service</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp;/// Naming Service</font></td></tr>
+<tr><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp;NLNET_SERVICE_MAIN (CAdminService, &quot;AS&quot;, &quot;admin_service&quot;, 49995, ClientCallbackArray, NELNS_CONFIG, NELNS_LOGS);</font></td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp;NLNET_OLD_SERVICE_MAIN (CAdminService, &quot;AS&quot;, &quot;admin_service&quot;, 49995, ClientCallbackArray, NELNS_CONFIG, NELNS_LOGS);</font></td></tr>
+</table><br><hr noshade width="100%">
+<table border=0><tr><td><table border=1><tr><td>Legend:<br><table border=0 cellspacing=0 cellpadding=1>
+<tr><td align=center bgcolor="#ff9999">Removed from v.1.14</td><td bgcolor="#cccccc">&nbsp;</td></tr><tr bgcolor="#99ff99"><td align=center colspan=2>changed lines</td></tr><tr><td bgcolor="#cccccc">&nbsp;</td><td align=center bgcolor="#ccccff">Added in v.1.15</td></tr></table></td></tr></table>
+<td><FORM METHOD="GET" ACTION="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cpp.diff">
+<INPUT TYPE=HIDDEN NAME="r1" VALUE="1.14">
+<INPUT TYPE=HIDDEN NAME="r2" VALUE="1.15">
+<SELECT NAME="f" onchange="submit()">
+<OPTION VALUE=h SELECTED>Colored Diff<OPTION VALUE=H>Long Colored Diff<OPTION VALUE=u>Unidiff<OPTION VALUE=c>Context Diff<OPTION VALUE=s>Side by Side</SELECT><INPUT TYPE=SUBMIT VALUE="Show">
+</FORM>
+</td></tr></table> \ No newline at end of file
diff --git a/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cpp.diff?r1=1.4&r2=1.5 b/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cpp.diff?r1=1.4&r2=1.5
new file mode 100644
index 00000000..0e5911d0
--- /dev/null
+++ b/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cpp.diff?r1=1.4&r2=1.5
@@ -0,0 +1,379 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"><HTML>
+<HEAD><style> A { color:black }</style>
+<!-- hennerik CVSweb $Revision: 1.93 $ -->
+<TITLE>code/nelns/admin_service/admin_service.cpp - diff - 1.5</TITLE></HEAD>
+<BODY BGCOLOR="#eeeeee">
+<table width="100%" border=0 cellspacing=0 cellpadding=1 bgcolor="#aaaaaa"><tr valign=bottom><td><a href="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cpp"><IMG SRC="http://www.nevrax.org/inc/img/picto-up.gif" ALT="[BACK]" BORDER="0" WIDTH="14" HEIGHT="13"></a> <b>Return to <A HREF="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cpp">admin_service.cpp</A>
+ CVS log</b> <IMG SRC="http://www.nevrax.org/inc/img/picto-news.gif" ALT="[TXT]" BORDER="0" WIDTH="13" HEIGHT="15"></td><td align=right><IMG SRC="http://www.nevrax.org/inc/img/picto-dir.gif" ALT="[DIR]" BORDER="0" WIDTH="15" HEIGHT="13"> <b>Up to <a href="/cvs/cvsweb.cgi/">Nevrax</a> / <a href="/cvs/cvsweb.cgi/code/">code</a> / <a href="/cvs/cvsweb.cgi/code/nelns/">nelns</a> / <a href="/cvs/cvsweb.cgi/code/nelns/admin_service/">admin_service</a></b></td></tr></table><h3 align=center>Diff for /code/nelns/admin_service/admin_service.cpp between version 1.4 and 1.5</h3>
+<table border=0 cellspacing=0 cellpadding=0 width="100%">
+<tr bgcolor="#ffffff">
+<th width="50%" valign=TOP>version 1.4, 2001/05/18 16:51:33</th>
+<th width="50%" valign=TOP>version 1.5, 2001/05/31 16:44:54</th>
+<tr bgcolor="#dddddd"><td width="50%"><table width="100%" border=1 cellpadding=5><tr><td><b>Line 45</b>&nbsp;<font size=-1></font></td></tr></table></td><td width="50%"><table width="100%" border=1 cellpadding=5><tr><td><b>Line 45</b>&nbsp;<font size=-1></font></td></tr></table></td>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;CService () : Id(0xFFFFFFFF), Ready(false), Connected(false), InConfig(false) { }</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;CService () : Id(0xFFFFFFFF), Ready(false), Connected(false), InConfig(false) { }</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp;</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp;</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;uint32 &nbsp; &nbsp; &nbsp; &nbsp;Id; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;/// uint32 to identify the service</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;uint32 &nbsp; &nbsp; &nbsp; &nbsp;Id; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;/// uint32 to identify the service</font></td></tr>
+<tr><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;string &nbsp; &nbsp; &nbsp; &nbsp;ServiceAlias; &nbsp; &nbsp; &nbsp; &nbsp;/// alias of the service used in the AES and AS to find him (unique per AES)</font></td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;string &nbsp; &nbsp; &nbsp; &nbsp;AliasName; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;/// alias of the service used in the AES and AS to find him (unique per AES)</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;string &nbsp; &nbsp; &nbsp; &nbsp;ShortName; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;/// name of the service in short format (&quot;NS&quot; for example)</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;string &nbsp; &nbsp; &nbsp; &nbsp;ShortName; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;/// name of the service in short format (&quot;NS&quot; for example)</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;string &nbsp; &nbsp; &nbsp; &nbsp;LongName; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;/// name of the service in long format (&quot;naming_service&quot;)</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;string &nbsp; &nbsp; &nbsp; &nbsp;LongName; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;/// name of the service in long format (&quot;naming_service&quot;)</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;bool &nbsp; &nbsp; &nbsp; &nbsp;Ready; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;/// true if the service is ready</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;bool &nbsp; &nbsp; &nbsp; &nbsp;Ready; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;/// true if the service is ready</font></td></tr>
+<tr bgcolor="#dddddd"><td width="50%"><table width="100%" border=1 cellpadding=5><tr><td><b>Line 83</b>&nbsp;<font size=-1></font></td></tr></table></td><td width="50%"><table width="100%" border=1 cellpadding=5><tr><td><b>Line 83</b>&nbsp;<font size=-1></font></td></tr></table></td>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;return sit;</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;return sit;</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp;</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp;</font></td></tr>
+<tr><td bgcolor="#cccccc">&nbsp;</td><td bgcolor="#ccccff"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;SIT findService (const string &amp;alias, bool asrt = true)</font></td></tr>
+<tr><td bgcolor="#cccccc">&nbsp;</td><td bgcolor="#ccccff"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{</font></td></tr>
+<tr><td bgcolor="#cccccc">&nbsp;</td><td bgcolor="#ccccff"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;SIT sit;</font></td></tr>
+<tr><td bgcolor="#cccccc">&nbsp;</td><td bgcolor="#ccccff"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;for (sit = Services.begin(); sit != Services.end(); sit++)</font></td></tr>
+<tr><td bgcolor="#cccccc">&nbsp;</td><td bgcolor="#ccccff"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;if ((*sit).AliasName == alias)</font></td></tr>
+<tr><td bgcolor="#cccccc">&nbsp;</td><td bgcolor="#ccccff"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;break;</font></td></tr>
+<tr><td bgcolor="#cccccc">&nbsp;</td><td bgcolor="#ccccff"><font face="Helvetica,Arial" size="-1">&nbsp;</font></td></tr>
+<tr><td bgcolor="#cccccc">&nbsp;</td><td bgcolor="#ccccff"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;if (asrt)</font></td></tr>
+<tr><td bgcolor="#cccccc">&nbsp;</td><td bgcolor="#ccccff"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;nlassert (sit != Services.end());</font></td></tr>
+<tr><td bgcolor="#cccccc">&nbsp;</td><td bgcolor="#ccccff"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;return sit;</font></td></tr>
+<tr><td bgcolor="#cccccc">&nbsp;</td><td bgcolor="#ccccff"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}</font></td></tr>
+<tr><td bgcolor="#cccccc">&nbsp;</td><td bgcolor="#ccccff"><font face="Helvetica,Arial" size="-1">&nbsp;</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp;private:</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp;private:</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;static uint32 NextId;</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;static uint32 NextId;</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp;};</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp;};</font></td></tr>
+<tr bgcolor="#dddddd"><td width="50%"><table width="100%" border=1 cellpadding=5><tr><td><b>Line 138</b>&nbsp;<font size=-1></font></td></tr></table></td><td width="50%"><table width="100%" border=1 cellpadding=5><tr><td><b>Line 150</b>&nbsp;<font size=-1></font></td></tr></table></td>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp;////////////////////////////////////////////////////////////////////////////////////////////////////////</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp;////////////////////////////////////////////////////////////////////////////////////////////////////////</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp;////////////////////////////////////////////////////////////////////////////////////////////////////////</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp;////////////////////////////////////////////////////////////////////////////////////////////////////////</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp;</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp;</font></td></tr>
+<tr><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp;bool ScriptRunning = false;</font></td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp;bool StartAllServices = false;</font></td></tr>
+<tr><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp;string ScriptName;</font></td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp;uint32 StartAllServicesPos;</font></td></tr>
+<tr><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp;uint32 ScriptPos;</font></td><td bgcolor="#99cc99">&nbsp;</td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp;</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp;</font></td></tr>
+<tr><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp;void doNextScriptStep ()</font></td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp;void doNextStartAllServicesStep ()</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp;{</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp;{</font></td></tr>
+<tr><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;nlassert (ScriptRunning);</font></td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;nlassert (StartAllServices);</font></td></tr>
+<tr><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp;</font></td><td bgcolor="#99cc99">&nbsp;</td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp;</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp;</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// get the script</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// get the script</font></td></tr>
+<tr><td bgcolor="#ff9999"><font face="Helvetica,Arial" size="-1">&nbsp;</font></td><td bgcolor="#cccccc">&nbsp;</td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;try</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;try</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{</font></td></tr>
+<tr><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;CConfigFile::CVar &amp;script = IService::ConfigFile.getVar(ScriptName);</font></td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;CConfigFile::CVar &amp;script = IService::ConfigFile.getVar(&quot;Services&quot;);</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp;</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp;</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// check the position</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// check the position</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp;</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp;</font></td></tr>
+<tr><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;if (ScriptPos*2 &gt;= (uint32)script.size())</font></td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;if (StartAllServicesPos*2 &gt;= (uint32)script.size())</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{</font></td></tr>
+<tr><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;ScriptRunning = false;</font></td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;StartAllServices = false;</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;nlinfo(&quot;end of the script&quot;);</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;nlinfo(&quot;end of the script&quot;);</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// todo send that the script is finish to the admin</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// todo send that the script is finish to the admin</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;return;</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;return;</font></td></tr>
+<tr bgcolor="#dddddd"><td width="50%"><table width="100%" border=1 cellpadding=5><tr><td><b>Line 170</b>&nbsp;<font size=-1></font></td></tr></table></td><td width="50%"><table width="100%" border=1 cellpadding=5><tr><td><b>Line 179</b>&nbsp;<font size=-1></font></td></tr></table></td>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp;</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp;</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;try</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;try</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{</font></td></tr>
+<tr><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;serverAlias = script.asString (ScriptPos*2);</font></td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;serverAlias = script.asString (StartAllServicesPos*2);</font></td></tr>
+<tr><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;serviceAlias = script.asString (ScriptPos*2+1);</font></td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;serviceAlias = script.asString (StartAllServicesPos*2+1);</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;catch(EBadSize &amp;)</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;catch(EBadSize &amp;)</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{</font></td></tr>
+<tr><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;nlwarning (&quot;script '%s' not contains a good number of entries (must be a multiple of 2)&quot;, ScriptName.c_str());</font></td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;nlwarning (&quot;'Services' variable does not contains a good number of entries (must be a multiple of 2)&quot;);</font></td></tr>
+<tr><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;ScriptRunning = false;</font></td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;StartAllServices = false;</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;return;</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;return;</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp;</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp;</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;AESIT aesit = findAdminExecutorService (serverAlias, false);</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;AESIT aesit = findAdminExecutorService (serverAlias, false);</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;if (aesit == AdminExecutorServices.end())</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;if (aesit == AdminExecutorServices.end())</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{</font></td></tr>
+<tr><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;ScriptRunning = false;</font></td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;StartAllServices = false;</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;nlwarning(&quot;don't find the server&quot;);</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;nlwarning(&quot;don't find the server&quot;);</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;return;</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;return;</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp;</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp;</font></td></tr>
+<tr><td bgcolor="#cccccc">&nbsp;</td><td bgcolor="#ccccff"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// check if the service is not currently running</font></td></tr>
+<tr><td bgcolor="#cccccc">&nbsp;</td><td bgcolor="#ccccff"><font face="Helvetica,Arial" size="-1">&nbsp;</font></td></tr>
+<tr><td bgcolor="#cccccc">&nbsp;</td><td bgcolor="#ccccff"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;StartAllServicesPos++;</font></td></tr>
+<tr><td bgcolor="#cccccc">&nbsp;</td><td bgcolor="#ccccff"><font face="Helvetica,Arial" size="-1">&nbsp;</font></td></tr>
+<tr><td bgcolor="#cccccc">&nbsp;</td><td bgcolor="#ccccff"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;SIT sit = (*aesit).findService (serviceAlias);</font></td></tr>
+<tr><td bgcolor="#cccccc">&nbsp;</td><td bgcolor="#ccccff"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;if ((*sit).Connected)</font></td></tr>
+<tr><td bgcolor="#cccccc">&nbsp;</td><td bgcolor="#ccccff"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{</font></td></tr>
+<tr><td bgcolor="#cccccc">&nbsp;</td><td bgcolor="#ccccff"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// the service is already running, go to the next process</font></td></tr>
+<tr><td bgcolor="#cccccc">&nbsp;</td><td bgcolor="#ccccff"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;doNextStartAllServicesStep ();</font></td></tr>
+<tr><td bgcolor="#cccccc">&nbsp;</td><td bgcolor="#ccccff"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}</font></td></tr>
+<tr><td bgcolor="#cccccc">&nbsp;</td><td bgcolor="#ccccff"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;else</font></td></tr>
+<tr><td bgcolor="#cccccc">&nbsp;</td><td bgcolor="#ccccff"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// send the resquest to the AES</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// send the resquest to the AES</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp;</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp;</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;CMessage msgout (CNetManager::getSIDA((*aesit).ServerAlias), &quot;STARTS&quot;);</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;CMessage msgout (CNetManager::getSIDA((*aesit).ServerAlias), &quot;STARTS&quot;);</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;msgout.serial (serviceAlias);</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;msgout.serial (serviceAlias);</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;CNetManager::send ((*aesit).ServerAlias, msgout);</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;CNetManager::send ((*aesit).ServerAlias, msgout);</font></td></tr>
+<tr><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp;</font></td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}</font></td></tr>
+<tr><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;ScriptPos++;</font></td><td bgcolor="#99cc99">&nbsp;</td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;catch(EUnknownVar&amp;)</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;catch(EUnknownVar&amp;)</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{</font></td></tr>
+<tr><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;nlwarning (&quot;script '%s' not found&quot;, ScriptName.c_str());</font></td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;nlwarning (&quot;'Services' variable is not found&quot;);</font></td></tr>
+<tr><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;ScriptRunning = false;</font></td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;StartAllServices = false;</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;return;</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;return;</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp;}</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp;}</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp;</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp;</font></td></tr>
+<tr><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp;void initScript(string scriptName)</font></td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp;void initStartAllServices ()</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp;{</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp;{</font></td></tr>
+<tr><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;if (ScriptRunning)</font></td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;if (StartAllServices)</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;nlwarning(&quot;already running a script, reset it&quot;);</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;nlwarning(&quot;already running a script, reset it&quot;);</font></td></tr>
+<tr><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;ScriptRunning = false;</font></td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;StartAllServices = false;</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp;</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp;</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;try</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;try</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{</font></td></tr>
+<tr><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;CConfigFile::CVar &amp;script = IService::ConfigFile.getVar(scriptName);</font></td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;CConfigFile::CVar &amp;script = IService::ConfigFile.getVar(&quot;Services&quot;);</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp;</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp;</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;for (sint i = 0 ; i &lt; script.size (); i+=2)</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;for (sint i = 0 ; i &lt; script.size (); i+=2)</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{</font></td></tr>
+<tr bgcolor="#dddddd"><td width="50%"><table width="100%" border=1 cellpadding=5><tr><td><b>Line 222</b>&nbsp;<font size=-1></font></td></tr></table></td><td width="50%"><table width="100%" border=1 cellpadding=5><tr><td><b>Line 242</b>&nbsp;<font size=-1></font></td></tr></table></td>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;AESIT aesit = findAdminExecutorService (serverAlias, false);</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;AESIT aesit = findAdminExecutorService (serverAlias, false);</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;if (aesit == AdminExecutorServices.end())</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;if (aesit == AdminExecutorServices.end())</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{</font></td></tr>
+<tr><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;nlwarning(&quot;aes not running, can't run the script&quot;);</font></td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;nlwarning(&quot;aes '%s' not running, can't run the script&quot;, serverAlias.c_str());</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;return;</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;return;</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}</font></td></tr>
+<tr bgcolor="#dddddd"><td width="50%"><table width="100%" border=1 cellpadding=5><tr><td><b>Line 233</b>&nbsp;<font size=-1></font></td></tr></table></td><td width="50%"><table width="100%" border=1 cellpadding=5><tr><td><b>Line 253</b>&nbsp;<font size=-1></font></td></tr></table></td>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;return;</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;return;</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp;</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp;</font></td></tr>
+<tr><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;ScriptName = scriptName;</font></td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;StartAllServicesPos = 0;</font></td></tr>
+<tr><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;ScriptPos = 0;</font></td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;StartAllServices = true;</font></td></tr>
+<tr><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;ScriptRunning = true;</font></td><td bgcolor="#99cc99">&nbsp;</td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp;</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp;</font></td></tr>
+<tr><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;doNextScriptStep();</font></td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;doNextStartAllServicesStep();</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp;}</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp;}</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp;</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp;</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp;</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp;</font></td></tr>
+<tr bgcolor="#dddddd"><td width="50%"><table width="100%" border=1 cellpadding=5><tr><td><b>Line 316</b>&nbsp;<font size=-1></font></td></tr></table></td><td width="50%"><table width="100%" border=1 cellpadding=5><tr><td><b>Line 335</b>&nbsp;<font size=-1></font></td></tr></table></td>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;CAdminExecutorService *aes = (CAdminExecutorService*) from-&gt;appId();</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;CAdminExecutorService *aes = (CAdminExecutorService*) from-&gt;appId();</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp;</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp;</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;uint32 sid;</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;uint32 sid;</font></td></tr>
+<tr><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;msgin.serial (sid);</font></td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;string alias;</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp;</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp;</font></td></tr>
+<tr><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;SIT sit = aes-&gt;findService(sid);</font></td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;msgin.serial (sid, alias);</font></td></tr>
+<tr><td bgcolor="#99cc99">&nbsp;</td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp;</font></td></tr>
+<tr><td bgcolor="#99cc99">&nbsp;</td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;SIT sit;</font></td></tr>
+<tr><td bgcolor="#99cc99">&nbsp;</td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;if (!alias.empty())</font></td></tr>
+<tr><td bgcolor="#99cc99">&nbsp;</td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{</font></td></tr>
+<tr><td bgcolor="#99cc99">&nbsp;</td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;sit = aes-&gt;findService (alias, false);</font></td></tr>
+<tr><td bgcolor="#99cc99">&nbsp;</td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp;</font></td></tr>
+<tr><td bgcolor="#99cc99">&nbsp;</td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;if (sit == aes-&gt;Services.end ())</font></td></tr>
+<tr><td bgcolor="#99cc99">&nbsp;</td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{</font></td></tr>
+<tr><td bgcolor="#99cc99">&nbsp;</td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// the alias is not found</font></td></tr>
+<tr><td bgcolor="#99cc99">&nbsp;</td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;nlwarning (&quot;new service with alias (%s) but not in my list&quot;, alias.c_str());</font></td></tr>
+<tr><td bgcolor="#99cc99">&nbsp;</td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp;</font></td></tr>
+<tr><td bgcolor="#99cc99">&nbsp;</td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;aes-&gt;Services.push_back (CService ());</font></td></tr>
+<tr><td bgcolor="#99cc99">&nbsp;</td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;sit = aes-&gt;Services.end();</font></td></tr>
+<tr><td bgcolor="#99cc99">&nbsp;</td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;sit--;</font></td></tr>
+<tr><td bgcolor="#99cc99">&nbsp;</td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}</font></td></tr>
+<tr><td bgcolor="#99cc99">&nbsp;</td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;else</font></td></tr>
+<tr><td bgcolor="#99cc99">&nbsp;</td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{</font></td></tr>
+<tr><td bgcolor="#99cc99">&nbsp;</td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// normal case</font></td></tr>
+<tr><td bgcolor="#99cc99">&nbsp;</td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}</font></td></tr>
+<tr><td bgcolor="#99cc99">&nbsp;</td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}</font></td></tr>
+<tr><td bgcolor="#99cc99">&nbsp;</td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;else</font></td></tr>
+<tr><td bgcolor="#99cc99">&nbsp;</td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{</font></td></tr>
+<tr><td bgcolor="#99cc99">&nbsp;</td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;sit = aes-&gt;findService (sid, false);</font></td></tr>
+<tr><td bgcolor="#99cc99">&nbsp;</td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp;</font></td></tr>
+<tr><td bgcolor="#99cc99">&nbsp;</td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;if (sit == aes-&gt;Services.end ())</font></td></tr>
+<tr><td bgcolor="#99cc99">&nbsp;</td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{</font></td></tr>
+<tr><td bgcolor="#99cc99">&nbsp;</td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// normal case for unknown services</font></td></tr>
+<tr><td bgcolor="#99cc99">&nbsp;</td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;nlwarning (&quot;new service with alias (%s) but not in my list&quot;, alias.c_str());</font></td></tr>
+<tr><td bgcolor="#99cc99">&nbsp;</td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}</font></td></tr>
+<tr><td bgcolor="#99cc99">&nbsp;</td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;else</font></td></tr>
+<tr><td bgcolor="#99cc99">&nbsp;</td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{</font></td></tr>
+<tr><td bgcolor="#99cc99">&nbsp;</td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;nlwarning (&quot;new service without alias is already in my list with id %d&quot;, sid);</font></td></tr>
+<tr><td bgcolor="#99cc99">&nbsp;</td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}</font></td></tr>
+<tr><td bgcolor="#99cc99">&nbsp;</td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;aes-&gt;Services.push_back (CService ());</font></td></tr>
+<tr><td bgcolor="#99cc99">&nbsp;</td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;sit = aes-&gt;Services.end();</font></td></tr>
+<tr><td bgcolor="#99cc99">&nbsp;</td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;sit--;</font></td></tr>
+<tr><td bgcolor="#99cc99">&nbsp;</td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}</font></td></tr>
+<tr><td bgcolor="#99cc99">&nbsp;</td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp;</font></td></tr>
+<tr><td bgcolor="#99cc99">&nbsp;</td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;(*sit).Id = sid;</font></td></tr>
+<tr><td bgcolor="#99cc99">&nbsp;</td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;(*sit).AliasName = alias;</font></td></tr>
+<tr><td bgcolor="#99cc99">&nbsp;</td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;(*sit).Connected = true;</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;msgin.serial ((*sit).ShortName, (*sit).LongName);</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;msgin.serial ((*sit).ShortName, (*sit).LongName);</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp;</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp;</font></td></tr>
+<tr><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;nlinfo (&quot;*:%d:%d is identified to be '%s' '%s'&quot;, aes-&gt;Id, sid, (*sit).ShortName.c_str(), (*sit).LongName.c_str());</font></td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;nlinfo (&quot;*:%d:%d is identified to be '%s' '%s' '%s'&quot;, aes-&gt;Id, sid, (*sit).AliasName.c_str(), (*sit).ShortName.c_str(), (*sit).LongName.c_str());</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp;</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp;</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// broadcast the message to all admin client</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// broadcast the message to all admin client</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;CMessage msgout (CNetManager::getSIDA (&quot;AS&quot;), &quot;SID&quot;);</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;CMessage msgout (CNetManager::getSIDA (&quot;AS&quot;), &quot;SID&quot;);</font></td></tr>
+<tr><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;msgout.serial (aes-&gt;Id, sid, (*sit).ShortName, (*sit).LongName);</font></td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;msgout.serial (aes-&gt;Id, sid, (*sit).AliasName, (*sit).ShortName, (*sit).LongName);</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;CNetManager::send (&quot;AS&quot;, msgout, 0);</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;CNetManager::send (&quot;AS&quot;, msgout, 0);</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp;}</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp;}</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp;</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp;</font></td></tr>
+<tr bgcolor="#dddddd"><td width="50%"><table width="100%" border=1 cellpadding=5><tr><td><b>Line 347</b>&nbsp;<font size=-1></font></td></tr></table></td><td width="50%"><table width="100%" border=1 cellpadding=5><tr><td><b>Line 407</b>&nbsp;<font size=-1></font></td></tr></table></td>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;CNetManager::send (&quot;AS&quot;, msgout, 0);</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;CNetManager::send (&quot;AS&quot;, msgout, 0);</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp;</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp;</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// if we are in a script execution, continue</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// if we are in a script execution, continue</font></td></tr>
+<tr><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;if (ScriptRunning)</font></td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;if (StartAllServices)</font></td></tr>
+<tr><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;doNextScriptStep();</font></td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;doNextStartAllServicesStep();</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp;}</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp;}</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp;</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp;</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp;static void cbServiceConnection (CMessage&amp; msgin, TSockId from, CCallbackNetBase &amp;netbase)</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp;static void cbServiceConnection (CMessage&amp; msgin, TSockId from, CCallbackNetBase &amp;netbase)</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp;{</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp;{</font></td></tr>
+<tr><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp;/* &nbsp; &nbsp; &nbsp;CAdminExecutorService *aes = (CAdminExecutorService*) from-&gt;appId();</font></td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;CAdminExecutorService *aes = (CAdminExecutorService*) from-&gt;appId();</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp;</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp;</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;uint32 sid;</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;uint32 sid;</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;msgin.serial (sid);</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;msgin.serial (sid);</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp;</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp;</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;nlinfo (&quot;*:%d:%d connected&quot;, aes-&gt;Id, sid);</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;nlinfo (&quot;*:%d:%d connected&quot;, aes-&gt;Id, sid);</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp;</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp;</font></td></tr>
+<tr><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;aes-&gt;Services.push_back (CService(sid));</font></td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// don't do anything. we have to wait identification to add it in out lists</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp;</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp;</font></td></tr>
+<tr><td bgcolor="#cccccc">&nbsp;</td><td bgcolor="#ccccff"><font face="Helvetica,Arial" size="-1">&nbsp;/*</font></td></tr>
+<tr><td bgcolor="#cccccc">&nbsp;</td><td bgcolor="#ccccff"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;aes-&gt;Services.push_back (CService(sid));</font></td></tr>
+<tr><td bgcolor="#cccccc">&nbsp;</td><td bgcolor="#ccccff"><font face="Helvetica,Arial" size="-1">&nbsp;*/</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// broadcast the message to all admin client</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// broadcast the message to all admin client</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;CMessage msgout (CNetManager::getSIDA (&quot;AS&quot;), &quot;SC&quot;);</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;CMessage msgout (CNetManager::getSIDA (&quot;AS&quot;), &quot;SC&quot;);</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;msgout.serial (aes-&gt;Id, sid);</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;msgout.serial (aes-&gt;Id, sid);</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;CNetManager::send (&quot;AS&quot;, msgout, 0);</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;CNetManager::send (&quot;AS&quot;, msgout, 0);</font></td></tr>
+<tr><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp;*/}</font></td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp;}</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp;</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp;</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp;static void cbServiceDisconnection (CMessage&amp; msgin, TSockId from, CCallbackNetBase &amp;netbase)</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp;static void cbServiceDisconnection (CMessage&amp; msgin, TSockId from, CCallbackNetBase &amp;netbase)</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp;{</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp;{</font></td></tr>
+<tr bgcolor="#dddddd"><td width="50%"><table width="100%" border=1 cellpadding=5><tr><td><b>Line 384</b>&nbsp;<font size=-1></font></td></tr></table></td><td width="50%"><table width="100%" border=1 cellpadding=5><tr><td><b>Line 447</b>&nbsp;<font size=-1></font></td></tr></table></td>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;msgout.serial (aes-&gt;Id, (*sit).Id);</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;msgout.serial (aes-&gt;Id, (*sit).Id);</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;CNetManager::send (&quot;AS&quot;, msgout, 0);</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;CNetManager::send (&quot;AS&quot;, msgout, 0);</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp;</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp;</font></td></tr>
+<tr><td bgcolor="#cccccc">&nbsp;</td><td bgcolor="#ccccff"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;if ((*sit).InConfig)</font></td></tr>
+<tr><td bgcolor="#cccccc">&nbsp;</td><td bgcolor="#ccccff"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{</font></td></tr>
+<tr><td bgcolor="#cccccc">&nbsp;</td><td bgcolor="#ccccff"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;(*sit).Ready = (*sit).Connected = false;</font></td></tr>
+<tr><td bgcolor="#cccccc">&nbsp;</td><td bgcolor="#ccccff"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;(*sit).Id = 0xFFFFFFFF;</font></td></tr>
+<tr><td bgcolor="#cccccc">&nbsp;</td><td bgcolor="#ccccff"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;(*sit).ShortName = (*sit).LongName = &quot;&quot;;</font></td></tr>
+<tr><td bgcolor="#cccccc">&nbsp;</td><td bgcolor="#ccccff"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}</font></td></tr>
+<tr><td bgcolor="#cccccc">&nbsp;</td><td bgcolor="#ccccff"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;else</font></td></tr>
+<tr><td bgcolor="#cccccc">&nbsp;</td><td bgcolor="#ccccff"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{</font></td></tr>
+<tr><td bgcolor="#cccccc">&nbsp;</td><td bgcolor="#ccccff"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// erase only if it's not a service in the config</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;aes-&gt;Services.erase (sit);</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;aes-&gt;Services.erase (sit);</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp;}</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp;}</font></td></tr>
+<tr><td bgcolor="#cccccc">&nbsp;</td><td bgcolor="#ccccff"><font face="Helvetica,Arial" size="-1">&nbsp;}</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp;</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp;</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp;// i'm connected to a new admin executor service</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp;// i'm connected to a new admin executor service</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp;void cbAESConnection (const string &amp;serviceName, TSockId from, void *arg)</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp;void cbAESConnection (const string &amp;serviceName, TSockId from, void *arg)</font></td></tr>
+<tr bgcolor="#dddddd"><td width="50%"><table width="100%" border=1 cellpadding=5><tr><td><b>Line 420</b>&nbsp;<font size=-1></font></td></tr></table></td><td width="50%"><table width="100%" border=1 cellpadding=5><tr><td><b>Line 493</b>&nbsp;<font size=-1></font></td></tr></table></td>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;CAdminExecutorService *aes = (CAdminExecutorService*) from-&gt;appId();</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;CAdminExecutorService *aes = (CAdminExecutorService*) from-&gt;appId();</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp;</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp;</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;aes-&gt;Connected = false;</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;aes-&gt;Connected = false;</font></td></tr>
+<tr><td bgcolor="#cccccc">&nbsp;</td><td bgcolor="#ccccff"><font face="Helvetica,Arial" size="-1">&nbsp;</font></td></tr>
+<tr><td bgcolor="#cccccc">&nbsp;</td><td bgcolor="#ccccff"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;SIT sit;</font></td></tr>
+<tr><td bgcolor="#cccccc">&nbsp;</td><td bgcolor="#ccccff"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;for (sit = aes-&gt;Services.begin(); sit != aes-&gt;Services.end(); sit++)</font></td></tr>
+<tr><td bgcolor="#cccccc">&nbsp;</td><td bgcolor="#ccccff"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{</font></td></tr>
+<tr><td bgcolor="#cccccc">&nbsp;</td><td bgcolor="#ccccff"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;(*sit).Id = 0xFFFFFFFF;</font></td></tr>
+<tr><td bgcolor="#cccccc">&nbsp;</td><td bgcolor="#ccccff"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;(*sit).ShortName = (*sit).LongName = &quot;&quot;;</font></td></tr>
+<tr><td bgcolor="#cccccc">&nbsp;</td><td bgcolor="#ccccff"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;(*sit).Ready = (*sit).Connected = false;</font></td></tr>
+<tr><td bgcolor="#cccccc">&nbsp;</td><td bgcolor="#ccccff"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}</font></td></tr>
+<tr><td bgcolor="#cccccc">&nbsp;</td><td bgcolor="#ccccff"><font face="Helvetica,Arial" size="-1">&nbsp;</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;nlinfo (&quot;*:%d:* disconnected&quot;, aes-&gt;Id);</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;nlinfo (&quot;*:%d:* disconnected&quot;, aes-&gt;Id);</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp;/* &nbsp; &nbsp; &nbsp;</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp;/* &nbsp; &nbsp; &nbsp;</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// broadcast the message to all admin client that an admin exec is disconnected</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// broadcast the message to all admin client that an admin exec is disconnected</font></td></tr>
+<tr bgcolor="#dddddd"><td width="50%"><table width="100%" border=1 cellpadding=5><tr><td><b>Line 521</b>&nbsp;<font size=-1></font></td></tr></table></td><td width="50%"><table width="100%" border=1 cellpadding=5><tr><td><b>Line 603</b>&nbsp;<font size=-1></font></td></tr></table></td>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// send info about services of the AES</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// send info about services of the AES</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;</font></td></tr>
+<tr><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;msgout.serial ((*sit).Id, (*sit).ServiceAlias, (*sit).ShortName, (*sit).LongName);</font></td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;msgout.serial ((*sit).Id, (*sit).AliasName, (*sit).ShortName, (*sit).LongName);</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;msgout.serial ((*sit).Ready, (*sit).Connected, (*sit).InConfig);</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;msgout.serial ((*sit).Ready, (*sit).Connected, (*sit).InConfig);</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}</font></td></tr>
+<tr bgcolor="#dddddd"><td width="50%"><table width="100%" border=1 cellpadding=5><tr><td><b>Line 541</b>&nbsp;<font size=-1></font></td></tr></table></td><td width="50%"><table width="100%" border=1 cellpadding=5><tr><td><b>Line 623</b>&nbsp;<font size=-1></font></td></tr></table></td>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp;}</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp;}</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp;</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp;</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp;</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp;</font></td></tr>
+<tr><td bgcolor="#ff9999"><font face="Helvetica,Arial" size="-1">&nbsp;static void cbExecuteScript (CMessage&amp; msgin, TSockId from, CCallbackNetBase &amp;netbase)</font></td><td bgcolor="#cccccc">&nbsp;</td></tr>
+<tr><td bgcolor="#ff9999"><font face="Helvetica,Arial" size="-1">&nbsp;{</font></td><td bgcolor="#cccccc">&nbsp;</td></tr>
+<tr><td bgcolor="#ff9999"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;string script;</font></td><td bgcolor="#cccccc">&nbsp;</td></tr>
+<tr><td bgcolor="#ff9999"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;msgin.serial (script);</font></td><td bgcolor="#cccccc">&nbsp;</td></tr>
+<tr><td bgcolor="#ff9999"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;initScript (script);</font></td><td bgcolor="#cccccc">&nbsp;</td></tr>
+<tr><td bgcolor="#ff9999"><font face="Helvetica,Arial" size="-1">&nbsp;}</font></td><td bgcolor="#cccccc">&nbsp;</td></tr>
+<tr><td bgcolor="#ff9999"><font face="Helvetica,Arial" size="-1">&nbsp;</font></td><td bgcolor="#cccccc">&nbsp;</td></tr>
+<tr><td bgcolor="#ff9999"><font face="Helvetica,Arial" size="-1">&nbsp;</font></td><td bgcolor="#cccccc">&nbsp;</td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp;static void cbExecuteSystemCommand (CMessage&amp; msgin, TSockId from, CCallbackNetBase &amp;netbase)</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp;static void cbExecuteSystemCommand (CMessage&amp; msgin, TSockId from, CCallbackNetBase &amp;netbase)</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp;{</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp;{</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;string command;</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;string command;</font></td></tr>
+<tr bgcolor="#dddddd"><td width="50%"><table width="100%" border=1 cellpadding=5><tr><td><b>Line 574</b>&nbsp;<font size=-1></font></td></tr></table></td><td width="50%"><table width="100%" border=1 cellpadding=5><tr><td><b>Line 648</b>&nbsp;<font size=-1></font></td></tr></table></td>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp;</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp;</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp;static void cbStartService (CMessage&amp; msgin, TSockId from, CCallbackNetBase &amp;netbase)</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp;static void cbStartService (CMessage&amp; msgin, TSockId from, CCallbackNetBase &amp;netbase)</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp;{</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp;{</font></td></tr>
+<tr><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;string serviceName;</font></td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;string serviceAlias;</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;uint32 aesid;</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;uint32 aesid;</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;msgin.serial (aesid);</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;msgin.serial (aesid);</font></td></tr>
+<tr><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;msgin.serial (serviceName);</font></td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;msgin.serial (serviceAlias);</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp;</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp;</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;AESIT aesit = findAdminExecutorService (aesid, false);</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;AESIT aesit = findAdminExecutorService (aesid, false);</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;if (aesit == AdminExecutorServices.end())</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;if (aesit == AdminExecutorServices.end())</font></td></tr>
+<tr bgcolor="#dddddd"><td width="50%"><table width="100%" border=1 cellpadding=5><tr><td><b>Line 590</b>&nbsp;<font size=-1></font></td></tr></table></td><td width="50%"><table width="100%" border=1 cellpadding=5><tr><td><b>Line 664</b>&nbsp;<font size=-1></font></td></tr></table></td>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// send the resquest to the AES</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// send the resquest to the AES</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp;</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp;</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;CMessage msgout (CNetManager::getSIDA((*aesit).ServerAlias), &quot;STARTS&quot;);</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;CMessage msgout (CNetManager::getSIDA((*aesit).ServerAlias), &quot;STARTS&quot;);</font></td></tr>
+<tr><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;msgout.serial (serviceName);</font></td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;msgout.serial (serviceAlias);</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;CNetManager::send ((*aesit).ServerAlias, msgout);</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;CNetManager::send ((*aesit).ServerAlias, msgout);</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp;}</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp;}</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp;</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp;</font></td></tr>
+<tr bgcolor="#dddddd"><td width="50%"><table width="100%" border=1 cellpadding=5><tr><td><b>Line 655</b>&nbsp;<font size=-1></font></td></tr></table></td><td width="50%"><table width="100%" border=1 cellpadding=5><tr><td><b>Line 729</b>&nbsp;<font size=-1></font></td></tr></table></td>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;CNetManager::send ((*aesit).ServerAlias, msgout);</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;CNetManager::send ((*aesit).ServerAlias, msgout);</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp;}</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp;}</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp;</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp;</font></td></tr>
+<tr><td bgcolor="#cccccc">&nbsp;</td><td bgcolor="#ccccff"><font face="Helvetica,Arial" size="-1">&nbsp;static void cbStartAllServices (CMessage&amp; msgin, TSockId from, CCallbackNetBase &amp;netbase)</font></td></tr>
+<tr><td bgcolor="#cccccc">&nbsp;</td><td bgcolor="#ccccff"><font face="Helvetica,Arial" size="-1">&nbsp;{</font></td></tr>
+<tr><td bgcolor="#cccccc">&nbsp;</td><td bgcolor="#ccccff"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;initStartAllServices ();</font></td></tr>
+<tr><td bgcolor="#cccccc">&nbsp;</td><td bgcolor="#ccccff"><font face="Helvetica,Arial" size="-1">&nbsp;}</font></td></tr>
+<tr><td bgcolor="#cccccc">&nbsp;</td><td bgcolor="#ccccff"><font face="Helvetica,Arial" size="-1">&nbsp;</font></td></tr>
+<tr><td bgcolor="#cccccc">&nbsp;</td><td bgcolor="#ccccff"><font face="Helvetica,Arial" size="-1">&nbsp;static void cbStopAllServices (CMessage&amp; msgin, TSockId from, CCallbackNetBase &amp;netbase)</font></td></tr>
+<tr><td bgcolor="#cccccc">&nbsp;</td><td bgcolor="#ccccff"><font face="Helvetica,Arial" size="-1">&nbsp;{</font></td></tr>
+<tr><td bgcolor="#cccccc">&nbsp;</td><td bgcolor="#ccccff"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;for (AESIT aesit = AdminExecutorServices.begin(); aesit != AdminExecutorServices.end(); aesit++)</font></td></tr>
+<tr><td bgcolor="#cccccc">&nbsp;</td><td bgcolor="#ccccff"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{</font></td></tr>
+<tr><td bgcolor="#cccccc">&nbsp;</td><td bgcolor="#ccccff"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;for (SIT sit = (*aesit).Services.begin(); sit != (*aesit).Services.end(); sit++)</font></td></tr>
+<tr><td bgcolor="#cccccc">&nbsp;</td><td bgcolor="#ccccff"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{</font></td></tr>
+<tr><td bgcolor="#cccccc">&nbsp;</td><td bgcolor="#ccccff"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;if ((*sit).Connected)</font></td></tr>
+<tr><td bgcolor="#cccccc">&nbsp;</td><td bgcolor="#ccccff"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{</font></td></tr>
+<tr><td bgcolor="#cccccc">&nbsp;</td><td bgcolor="#ccccff"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;CMessage msgout (CNetManager::getSIDA((*aesit).ServerAlias), &quot;STOPS&quot;);</font></td></tr>
+<tr><td bgcolor="#cccccc">&nbsp;</td><td bgcolor="#ccccff"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;msgout.serial ((*sit).Id);</font></td></tr>
+<tr><td bgcolor="#cccccc">&nbsp;</td><td bgcolor="#ccccff"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;CNetManager::send ((*aesit).ServerAlias, msgout);</font></td></tr>
+<tr><td bgcolor="#cccccc">&nbsp;</td><td bgcolor="#ccccff"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}</font></td></tr>
+<tr><td bgcolor="#cccccc">&nbsp;</td><td bgcolor="#ccccff"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}</font></td></tr>
+<tr><td bgcolor="#cccccc">&nbsp;</td><td bgcolor="#ccccff"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}</font></td></tr>
+<tr><td bgcolor="#cccccc">&nbsp;</td><td bgcolor="#ccccff"><font face="Helvetica,Arial" size="-1">&nbsp;}</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp;</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp;</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp;TCallbackItem ClientCallbackArray[] =</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp;TCallbackItem ClientCallbackArray[] =</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp;{</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp;{</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{ &quot;SYS&quot;, cbExecuteSystemCommand },</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{ &quot;SYS&quot;, cbExecuteSystemCommand },</font></td></tr>
+<tr><td bgcolor="#ff9999"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{ &quot;EXEC&quot;, cbExecuteScript },</font></td><td bgcolor="#cccccc">&nbsp;</td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{ &quot;STARTS&quot;, cbStartService },</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{ &quot;STARTS&quot;, cbStartService },</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{ &quot;STOPS&quot;, cbStopService },</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{ &quot;STOPS&quot;, cbStopService },</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{ &quot;EXEC_COMMAND&quot;, cbExecCommand },</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{ &quot;EXEC_COMMAND&quot;, cbExecCommand },</font></td></tr>
+<tr><td bgcolor="#cccccc">&nbsp;</td><td bgcolor="#ccccff"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{ &quot;START_ALL_SERVICES&quot;, cbStartAllServices },</font></td></tr>
+<tr><td bgcolor="#cccccc">&nbsp;</td><td bgcolor="#ccccff"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{ &quot;STOP_ALL_SERVICES&quot;, cbStopAllServices },</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp;};</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp;};</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp;</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp;</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp;////////////////////////////////////////////////////////////////////////////////////////////////////////</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp;////////////////////////////////////////////////////////////////////////////////////////////////////////</font></td></tr>
+<tr bgcolor="#dddddd"><td width="50%"><table width="100%" border=1 cellpadding=5><tr><td><b>Line 678</b>&nbsp;<font size=-1></font></td></tr></table></td><td width="50%"><table width="100%" border=1 cellpadding=5><tr><td><b>Line 773</b>&nbsp;<font size=-1></font></td></tr></table></td>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;/// Init the service, load the universal time.</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;/// Init the service, load the universal time.</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;void &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;init ()</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;void &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;init ()</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{</font></td></tr>
+<tr><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;DebugLog-&gt;addNegativeFilter (&quot;L0:&quot;);</font></td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp;// &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;DebugLog-&gt;addNegativeFilter (&quot;L0:&quot;);</font></td></tr>
+<tr><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;DebugLog-&gt;addNegativeFilter (&quot;L1:&quot;);</font></td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp;// &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;DebugLog-&gt;addNegativeFilter (&quot;L1:&quot;);</font></td></tr>
+<tr><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;DebugLog-&gt;addNegativeFilter (&quot;L2:&quot;);</font></td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp;// &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;DebugLog-&gt;addNegativeFilter (&quot;L2:&quot;);</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;CNetManager::setConnectionCallback (&quot;AS&quot;, clientConnection, NULL);</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;CNetManager::setConnectionCallback (&quot;AS&quot;, clientConnection, NULL);</font></td></tr>
+<tr bgcolor="#dddddd"><td width="50%"><table width="100%" border=1 cellpadding=5><tr><td><b>Line 722</b>&nbsp;<font size=-1></font></td></tr></table></td><td width="50%"><table width="100%" border=1 cellpadding=5><tr><td><b>Line 817</b>&nbsp;<font size=-1></font></td></tr></table></td>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp;</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp;</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// add new AES in the list</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// add new AES in the list</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;CService s;</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;CService s;</font></td></tr>
+<tr><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;s.ServiceAlias = serviceAlias;</font></td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;s.AliasName = serviceAlias;</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;s.InConfig = true;</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;s.InConfig = true;</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;(*aesit).Services.push_back (s);</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;(*aesit).Services.push_back (s);</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}</font></td></tr>
+</table><br><hr noshade width="100%">
+<table border=0><tr><td><table border=1><tr><td>Legend:<br><table border=0 cellspacing=0 cellpadding=1>
+<tr><td align=center bgcolor="#ff9999">Removed from v.1.4</td><td bgcolor="#cccccc">&nbsp;</td></tr><tr bgcolor="#99ff99"><td align=center colspan=2>changed lines</td></tr><tr><td bgcolor="#cccccc">&nbsp;</td><td align=center bgcolor="#ccccff">Added in v.1.5</td></tr></table></td></tr></table>
+<td><FORM METHOD="GET" ACTION="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cpp.diff">
+<INPUT TYPE=HIDDEN NAME="r1" VALUE="1.4">
+<INPUT TYPE=HIDDEN NAME="r2" VALUE="1.5">
+<SELECT NAME="f" onchange="submit()">
+<OPTION VALUE=h SELECTED>Colored Diff<OPTION VALUE=H>Long Colored Diff<OPTION VALUE=u>Unidiff<OPTION VALUE=c>Context Diff<OPTION VALUE=s>Side by Side</SELECT><INPUT TYPE=SUBMIT VALUE="Show">
+</FORM>
+</td></tr></table> \ No newline at end of file
diff --git a/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cpp.diff?r1=1.5&r2=1.1 b/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cpp.diff?r1=1.5&r2=1.1
new file mode 100644
index 00000000..e127b1b3
--- /dev/null
+++ b/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cpp.diff?r1=1.5&r2=1.1
@@ -0,0 +1,849 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"><HTML>
+<HEAD><style> A { color:black }</style>
+<!-- hennerik CVSweb $Revision: 1.93 $ -->
+<TITLE>code/nelns/admin_service/admin_service.cpp - diff - 1.5</TITLE></HEAD>
+<BODY BGCOLOR="#eeeeee">
+<table width="100%" border=0 cellspacing=0 cellpadding=1 bgcolor="#aaaaaa"><tr valign=bottom><td><a href="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cpp"><IMG SRC="http://www.nevrax.org/inc/img/picto-up.gif" ALT="[BACK]" BORDER="0" WIDTH="14" HEIGHT="13"></a> <b>Return to <A HREF="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cpp">admin_service.cpp</A>
+ CVS log</b> <IMG SRC="http://www.nevrax.org/inc/img/picto-news.gif" ALT="[TXT]" BORDER="0" WIDTH="13" HEIGHT="15"></td><td align=right><IMG SRC="http://www.nevrax.org/inc/img/picto-dir.gif" ALT="[DIR]" BORDER="0" WIDTH="15" HEIGHT="13"> <b>Up to <a href="/cvs/cvsweb.cgi/">Nevrax</a> / <a href="/cvs/cvsweb.cgi/code/">code</a> / <a href="/cvs/cvsweb.cgi/code/nelns/">nelns</a> / <a href="/cvs/cvsweb.cgi/code/nelns/admin_service/">admin_service</a></b></td></tr></table><h3 align=center>Diff for /code/nelns/admin_service/admin_service.cpp between version 1.1 and 1.5</h3>
+<table border=0 cellspacing=0 cellpadding=0 width="100%">
+<tr bgcolor="#ffffff">
+<th width="50%" valign=TOP>version 1.1, 2001/05/02 12:36:39</th>
+<th width="50%" valign=TOP>version 1.5, 2001/05/31 16:44:54</th>
+<tr bgcolor="#dddddd"><td width="50%"><table width="100%" border=1 cellpadding=5><tr><td><b>Line 7</b>&nbsp;<font size=-1></font></td></tr></table></td><td width="50%"><table width="100%" border=1 cellpadding=5><tr><td><b>Line 7</b>&nbsp;<font size=-1></font></td></tr></table></td>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp;</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp;</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp;/* Copyright, 2000 Nevrax Ltd.</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp;/* Copyright, 2000 Nevrax Ltd.</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; *</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; *</font></td></tr>
+<tr><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; * This file is part of NEVRAX D.T.C. SYSTEM.</font></td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; * This file is part of NEVRAX NeL Network Services.</font></td></tr>
+<tr><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; * NEVRAX D.T.C. SYSTEM is free software; you can redistribute it and/or modify</font></td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; * NEVRAX NeL Network Services is free software; you can redistribute it and/or modify</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; * it under the terms of the GNU General Public License as published by</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; * it under the terms of the GNU General Public License as published by</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; * the Free Software Foundation; either version 2, or (at your option)</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; * the Free Software Foundation; either version 2, or (at your option)</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; * any later version.</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; * any later version.</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; *</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; *</font></td></tr>
+<tr><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; * NEVRAX D.T.C. SYSTEM is distributed in the hope that it will be useful, but</font></td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; * NEVRAX NeL Network Services is distributed in the hope that it will be useful, but</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; * WITHOUT ANY WARRANTY; without even the implied warranty of</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; * WITHOUT ANY WARRANTY; without even the implied warranty of</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; * General Public License for more details.</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; * General Public License for more details.</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; *</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; *</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; * You should have received a copy of the GNU General Public License</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; * You should have received a copy of the GNU General Public License</font></td></tr>
+<tr><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; * along with NEVRAX D.T.C. SYSTEM; see the file COPYING. If not, write to the</font></td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; * along with NEVRAX NeL Network Services; see the file COPYING. If not, write to the</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; * Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston,</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; * Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston,</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; * MA 02111-1307, USA.</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; * MA 02111-1307, USA.</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; */</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; */</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp;</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp;</font></td></tr>
+<tr><td bgcolor="#ff9999"><font face="Helvetica,Arial" size="-1">&nbsp;#include &lt;conio.h&gt;</font></td><td bgcolor="#cccccc">&nbsp;</td></tr>
+<tr><td bgcolor="#ff9999"><font face="Helvetica,Arial" size="-1">&nbsp;</font></td><td bgcolor="#cccccc">&nbsp;</td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp;#include &lt;string&gt;</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp;#include &lt;string&gt;</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp;#include &lt;list&gt;</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp;#include &lt;list&gt;</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp;</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp;</font></td></tr>
+<tr><td bgcolor="#cccccc">&nbsp;</td><td bgcolor="#ccccff"><font face="Helvetica,Arial" size="-1">&nbsp;#include &quot;nel/net/service.h&quot;</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp;#include &quot;nel/misc/debug.h&quot;</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp;#include &quot;nel/misc/debug.h&quot;</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp;#include &quot;nel/misc/config_file.h&quot;</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp;#include &quot;nel/misc/config_file.h&quot;</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp;</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp;</font></td></tr>
+<tr><td bgcolor="#ff9999"><font face="Helvetica,Arial" size="-1">&nbsp;#include &quot;nel/net/service.h&quot;</font></td><td bgcolor="#cccccc">&nbsp;</td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp;#include &quot;nel/net/net_manager.h&quot;</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp;#include &quot;nel/net/net_manager.h&quot;</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp;</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp;</font></td></tr>
+<tr><td bgcolor="#ff9999"><font face="Helvetica,Arial" size="-1">&nbsp; </font></td><td bgcolor="#cccccc">&nbsp;</td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp;using namespace std;</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp;using namespace std;</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp;using namespace NLMISC;</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp;using namespace NLMISC;</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp;using namespace NLNET;</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp;using namespace NLNET;</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp;</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp;</font></td></tr>
+<tr><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp;#include &lt;process.h&gt;</font></td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp;////////////////////////</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp;</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp;</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp;</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp;</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp;struct CService</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp;struct CService</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp;{</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp;{</font></td></tr>
+<tr><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;CService(TSockId s) : AESSockId(s), AESId(NextAESId++) { }</font></td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;CService () : Id(0xFFFFFFFF), Ready(false), Connected(false), InConfig(false) { }</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp;</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp;</font></td></tr>
+<tr><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;TSockId &nbsp; &nbsp; &nbsp; &nbsp;AESSockId; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// TSockId of the AES that have this service</font></td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;uint32 &nbsp; &nbsp; &nbsp; &nbsp;Id; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;/// uint32 to identify the service</font></td></tr>
+<tr><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;uint32 &nbsp; &nbsp; &nbsp; &nbsp;AESId; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// TSockId of the AES that have this service</font></td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;string &nbsp; &nbsp; &nbsp; &nbsp;AliasName; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;/// alias of the service used in the AES and AS to find him (unique per AES)</font></td></tr>
+<tr><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;uint32 &nbsp; &nbsp; &nbsp; &nbsp;SId; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// uint32 to identify the service</font></td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;string &nbsp; &nbsp; &nbsp; &nbsp;ShortName; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;/// name of the service in short format (&quot;NS&quot; for example)</font></td></tr>
+<tr><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;string &nbsp; &nbsp; &nbsp; &nbsp;ShortName;</font></td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;string &nbsp; &nbsp; &nbsp; &nbsp;LongName; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;/// name of the service in long format (&quot;naming_service&quot;)</font></td></tr>
+<tr><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;string &nbsp; &nbsp; &nbsp; &nbsp;LongName;</font></td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;bool &nbsp; &nbsp; &nbsp; &nbsp;Ready; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;/// true if the service is ready</font></td></tr>
+<tr><td bgcolor="#99cc99">&nbsp;</td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;bool &nbsp; &nbsp; &nbsp; &nbsp;Connected; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;/// true if the service is connected to the AES</font></td></tr>
+<tr><td bgcolor="#99cc99">&nbsp;</td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;bool &nbsp; &nbsp; &nbsp; &nbsp;InConfig; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;/// true if the service is in the configuration</font></td></tr>
+<tr><td bgcolor="#99cc99">&nbsp;</td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp;};</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp;</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp;</font></td></tr>
+<tr><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp;private:</font></td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp;typedef list&lt;CService&gt; TServices;</font></td></tr>
+<tr><td bgcolor="#99cc99">&nbsp;</td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp;typedef list&lt;CService&gt;::iterator SIT;</font></td></tr>
+<tr><td bgcolor="#99cc99">&nbsp;</td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp;</font></td></tr>
+<tr><td bgcolor="#99cc99">&nbsp;</td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp;struct CAdminExecutorService</font></td></tr>
+<tr><td bgcolor="#99cc99">&nbsp;</td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp;{</font></td></tr>
+<tr><td bgcolor="#99cc99">&nbsp;</td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;CAdminExecutorService () : Id(NextId++), SockId(NULL), Connected(false) { }</font></td></tr>
+<tr><td bgcolor="#99cc99">&nbsp;</td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp;</font></td></tr>
+<tr><td bgcolor="#99cc99">&nbsp;</td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;TSockId &nbsp; &nbsp; &nbsp; &nbsp;SockId; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;/// connection to the AES</font></td></tr>
+<tr><td bgcolor="#99cc99">&nbsp;</td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;uint32 &nbsp; &nbsp; &nbsp; &nbsp;Id; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;/// uint32 to identify the AES where the service is running</font></td></tr>
+<tr><td bgcolor="#99cc99">&nbsp;</td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp;</font></td></tr>
+<tr><td bgcolor="#99cc99">&nbsp;</td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;string &nbsp; &nbsp; &nbsp; &nbsp;ServerAlias; &nbsp; &nbsp; &nbsp; &nbsp;/// name of the layer4 connection, used to send message to this AES</font></td></tr>
+<tr><td bgcolor="#99cc99">&nbsp;</td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;string &nbsp; &nbsp; &nbsp; &nbsp;ServerAddr; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;/// address in a string format (only the ip)</font></td></tr>
+<tr><td bgcolor="#99cc99">&nbsp;</td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;bool &nbsp; &nbsp; &nbsp; &nbsp;Connected; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;/// true if the AES is connected</font></td></tr>
+<tr><td bgcolor="#99cc99">&nbsp;</td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp;</font></td></tr>
+<tr><td bgcolor="#99cc99">&nbsp;</td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;TServices Services;</font></td></tr>
+<tr><td bgcolor="#99cc99">&nbsp;</td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp;</font></td></tr>
+<tr><td bgcolor="#99cc99">&nbsp;</td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;vector&lt;string&gt; &nbsp; &nbsp; &nbsp; &nbsp;ServiceAliasList;</font></td></tr>
+<tr><td bgcolor="#99cc99">&nbsp;</td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp;</font></td></tr>
+<tr><td bgcolor="#99cc99">&nbsp;</td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;SIT findService (uint32 sid, bool asrt = true)</font></td></tr>
+<tr><td bgcolor="#99cc99">&nbsp;</td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{</font></td></tr>
+<tr><td bgcolor="#99cc99">&nbsp;</td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;SIT sit;</font></td></tr>
+<tr><td bgcolor="#99cc99">&nbsp;</td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;for (sit = Services.begin(); sit != Services.end(); sit++)</font></td></tr>
+<tr><td bgcolor="#99cc99">&nbsp;</td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;if ((*sit).Id == sid)</font></td></tr>
+<tr><td bgcolor="#99cc99">&nbsp;</td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;break;</font></td></tr>
+<tr><td bgcolor="#99cc99">&nbsp;</td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp;</font></td></tr>
+<tr><td bgcolor="#99cc99">&nbsp;</td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;if (asrt)</font></td></tr>
+<tr><td bgcolor="#99cc99">&nbsp;</td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;nlassert (sit != Services.end());</font></td></tr>
+<tr><td bgcolor="#99cc99">&nbsp;</td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;return sit;</font></td></tr>
+<tr><td bgcolor="#99cc99">&nbsp;</td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}</font></td></tr>
+<tr><td bgcolor="#99cc99">&nbsp;</td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp;</font></td></tr>
+<tr><td bgcolor="#99cc99">&nbsp;</td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;SIT findService (const string &amp;alias, bool asrt = true)</font></td></tr>
+<tr><td bgcolor="#99cc99">&nbsp;</td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{</font></td></tr>
+<tr><td bgcolor="#99cc99">&nbsp;</td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;SIT sit;</font></td></tr>
+<tr><td bgcolor="#99cc99">&nbsp;</td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;for (sit = Services.begin(); sit != Services.end(); sit++)</font></td></tr>
+<tr><td bgcolor="#99cc99">&nbsp;</td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;if ((*sit).AliasName == alias)</font></td></tr>
+<tr><td bgcolor="#99cc99">&nbsp;</td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;break;</font></td></tr>
+<tr><td bgcolor="#99cc99">&nbsp;</td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp;</font></td></tr>
+<tr><td bgcolor="#99cc99">&nbsp;</td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;if (asrt)</font></td></tr>
+<tr><td bgcolor="#99cc99">&nbsp;</td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;nlassert (sit != Services.end());</font></td></tr>
+<tr><td bgcolor="#99cc99">&nbsp;</td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;return sit;</font></td></tr>
+<tr><td bgcolor="#99cc99">&nbsp;</td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp;</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp;</font></td></tr>
+<tr><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;static &nbsp; &nbsp; &nbsp; &nbsp;uint32 NextAESId;</font></td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp;private:</font></td></tr>
+<tr><td bgcolor="#99cc99">&nbsp;</td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;static uint32 NextId;</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp;};</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp;};</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp;</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp;</font></td></tr>
+<tr><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp;uint32 CService::NextAESId = 0;</font></td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp;uint32 CAdminExecutorService::NextId = 1;</font></td></tr>
+<tr><td bgcolor="#99cc99">&nbsp;</td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp;</font></td></tr>
+<tr><td bgcolor="#99cc99">&nbsp;</td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp;typedef list&lt;CAdminExecutorService&gt; TAdminExecutorServices;</font></td></tr>
+<tr><td bgcolor="#99cc99">&nbsp;</td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp;typedef list&lt;CAdminExecutorService&gt;::iterator AESIT;</font></td></tr>
+<tr><td bgcolor="#99cc99">&nbsp;</td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp;</font></td></tr>
+<tr><td bgcolor="#99cc99">&nbsp;</td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp;TAdminExecutorServices AdminExecutorServices;</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp;</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp;</font></td></tr>
+<tr><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp;list&lt;CService&gt; Services;</font></td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp;/////////////////</font></td></tr>
+<tr><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp;typedef list&lt;CService&gt;::iterator sit;</font></td><td bgcolor="#99cc99">&nbsp;</td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp;</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp;</font></td></tr>
+<tr><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp;sit find (TSockId aesid, uint32 sid)</font></td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp;AESIT findAdminExecutorService (uint32 aesid, bool asrt = true)</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp;{</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp;{</font></td></tr>
+<tr><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;sit it;</font></td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;AESIT aesit;</font></td></tr>
+<tr><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;for (it = Services.begin(); it != Services.end(); it++)</font></td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;for (aesit = AdminExecutorServices.begin(); aesit != AdminExecutorServices.end(); aesit++)</font></td></tr>
+<tr><td bgcolor="#99cc99">&nbsp;</td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;if ((*aesit).Id == aesid)</font></td></tr>
+<tr><td bgcolor="#99cc99">&nbsp;</td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;break;</font></td></tr>
+<tr><td bgcolor="#99cc99">&nbsp;</td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp;</font></td></tr>
+<tr><td bgcolor="#99cc99">&nbsp;</td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;if (asrt)</font></td></tr>
+<tr><td bgcolor="#99cc99">&nbsp;</td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;nlassert (aesit != AdminExecutorServices.end());</font></td></tr>
+<tr><td bgcolor="#99cc99">&nbsp;</td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;return aesit;</font></td></tr>
+<tr><td bgcolor="#99cc99">&nbsp;</td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp;}</font></td></tr>
+<tr><td bgcolor="#99cc99">&nbsp;</td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp;</font></td></tr>
+<tr><td bgcolor="#99cc99">&nbsp;</td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp;AESIT findAdminExecutorService (string ServerAlias, bool asrt = true)</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{</font></td></tr>
+<tr><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;if ((*it).AESSockId== aesid &amp;&amp; (*it).SId == sid) break;</font></td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;AESIT aesit;</font></td></tr>
+<tr><td bgcolor="#99cc99">&nbsp;</td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;for (aesit = AdminExecutorServices.begin(); aesit != AdminExecutorServices.end(); aesit++)</font></td></tr>
+<tr><td bgcolor="#99cc99">&nbsp;</td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;if ((*aesit).ServerAlias == ServerAlias)</font></td></tr>
+<tr><td bgcolor="#99cc99">&nbsp;</td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;break;</font></td></tr>
+<tr><td bgcolor="#99cc99">&nbsp;</td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp;</font></td></tr>
+<tr><td bgcolor="#99cc99">&nbsp;</td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;if (asrt)</font></td></tr>
+<tr><td bgcolor="#99cc99">&nbsp;</td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;nlassert (aesit != AdminExecutorServices.end());</font></td></tr>
+<tr><td bgcolor="#99cc99">&nbsp;</td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;return aesit;</font></td></tr>
+<tr><td bgcolor="#99cc99">&nbsp;</td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp;}</font></td></tr>
+<tr><td bgcolor="#99cc99">&nbsp;</td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp;</font></td></tr>
+<tr><td bgcolor="#99cc99">&nbsp;</td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp;void displayServices ()</font></td></tr>
+<tr><td bgcolor="#99cc99">&nbsp;</td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp;{</font></td></tr>
+<tr><td bgcolor="#99cc99">&nbsp;</td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;for (AESIT aesit = AdminExecutorServices.begin(); aesit != AdminExecutorServices.end(); aesit++)</font></td></tr>
+<tr><td bgcolor="#99cc99">&nbsp;</td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{</font></td></tr>
+<tr><td bgcolor="#99cc99">&nbsp;</td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;for (SIT sit = (*aesit).Services.begin(); sit != (*aesit).Services.end(); sit++)</font></td></tr>
+<tr><td bgcolor="#99cc99">&nbsp;</td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{</font></td></tr>
+<tr><td bgcolor="#99cc99">&nbsp;</td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;nlinfo (&quot;&gt; %s %s %s %d %d&quot;, (*aesit).SockId-&gt;asString().c_str(), (*sit).ShortName.c_str(), (*sit).LongName.c_str(), (*aesit).Id, (*sit).Id);</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}</font></td></tr>
+<tr><td bgcolor="#ff9999"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;return it;</font></td><td bgcolor="#cccccc">&nbsp;</td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp;}</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp;}</font></td></tr>
+<tr><td bgcolor="#cccccc">&nbsp;</td><td bgcolor="#ccccff"><font face="Helvetica,Arial" size="-1">&nbsp;}</font></td></tr>
+<tr><td bgcolor="#cccccc">&nbsp;</td><td bgcolor="#ccccff"><font face="Helvetica,Arial" size="-1">&nbsp;</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp;</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp;</font></td></tr>
+<tr><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp;sit find (uint32 aesid, uint32 sid)</font></td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp;////////////////////////////////////////////////////////////////////////////////////////////////////////</font></td></tr>
+<tr><td bgcolor="#99cc99">&nbsp;</td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp;////////////////////////////////////////////////////////////////////////////////////////////////////////</font></td></tr>
+<tr><td bgcolor="#99cc99">&nbsp;</td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp;/////////////////// SCRIPT MANAGER /////////////////////////////////////////////////////////////////////</font></td></tr>
+<tr><td bgcolor="#99cc99">&nbsp;</td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp;////////////////////////////////////////////////////////////////////////////////////////////////////////</font></td></tr>
+<tr><td bgcolor="#99cc99">&nbsp;</td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp;////////////////////////////////////////////////////////////////////////////////////////////////////////</font></td></tr>
+<tr><td bgcolor="#99cc99">&nbsp;</td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp;</font></td></tr>
+<tr><td bgcolor="#99cc99">&nbsp;</td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp;bool StartAllServices = false;</font></td></tr>
+<tr><td bgcolor="#99cc99">&nbsp;</td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp;uint32 StartAllServicesPos;</font></td></tr>
+<tr><td bgcolor="#99cc99">&nbsp;</td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp;</font></td></tr>
+<tr><td bgcolor="#99cc99">&nbsp;</td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp;void doNextStartAllServicesStep ()</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp;{</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp;{</font></td></tr>
+<tr><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;sit it;</font></td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;nlassert (StartAllServices);</font></td></tr>
+<tr><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;for (it = Services.begin(); it != Services.end(); it++)</font></td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp;</font></td></tr>
+<tr><td bgcolor="#99cc99">&nbsp;</td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// get the script</font></td></tr>
+<tr><td bgcolor="#99cc99">&nbsp;</td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;try</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{</font></td></tr>
+<tr><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;if ((*it).AESId == aesid &amp;&amp; (*it).SId == sid) break;</font></td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;CConfigFile::CVar &amp;script = IService::ConfigFile.getVar(&quot;Services&quot;);</font></td></tr>
+<tr><td bgcolor="#99cc99">&nbsp;</td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp;</font></td></tr>
+<tr><td bgcolor="#99cc99">&nbsp;</td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// check the position</font></td></tr>
+<tr><td bgcolor="#99cc99">&nbsp;</td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp;</font></td></tr>
+<tr><td bgcolor="#99cc99">&nbsp;</td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;if (StartAllServicesPos*2 &gt;= (uint32)script.size())</font></td></tr>
+<tr><td bgcolor="#99cc99">&nbsp;</td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{</font></td></tr>
+<tr><td bgcolor="#99cc99">&nbsp;</td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;StartAllServices = false;</font></td></tr>
+<tr><td bgcolor="#99cc99">&nbsp;</td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;nlinfo(&quot;end of the script&quot;);</font></td></tr>
+<tr><td bgcolor="#99cc99">&nbsp;</td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// todo send that the script is finish to the admin</font></td></tr>
+<tr><td bgcolor="#99cc99">&nbsp;</td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;return;</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}</font></td></tr>
+<tr><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;return it;</font></td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp;</font></td></tr>
+<tr><td bgcolor="#99cc99">&nbsp;</td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// get the script line</font></td></tr>
+<tr><td bgcolor="#99cc99">&nbsp;</td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp;</font></td></tr>
+<tr><td bgcolor="#99cc99">&nbsp;</td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;string serverAlias;</font></td></tr>
+<tr><td bgcolor="#99cc99">&nbsp;</td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;string serviceAlias;</font></td></tr>
+<tr><td bgcolor="#99cc99">&nbsp;</td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp;</font></td></tr>
+<tr><td bgcolor="#99cc99">&nbsp;</td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;try</font></td></tr>
+<tr><td bgcolor="#99cc99">&nbsp;</td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{</font></td></tr>
+<tr><td bgcolor="#99cc99">&nbsp;</td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;serverAlias = script.asString (StartAllServicesPos*2);</font></td></tr>
+<tr><td bgcolor="#99cc99">&nbsp;</td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;serviceAlias = script.asString (StartAllServicesPos*2+1);</font></td></tr>
+<tr><td bgcolor="#99cc99">&nbsp;</td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}</font></td></tr>
+<tr><td bgcolor="#99cc99">&nbsp;</td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;catch(EBadSize &amp;)</font></td></tr>
+<tr><td bgcolor="#99cc99">&nbsp;</td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{</font></td></tr>
+<tr><td bgcolor="#99cc99">&nbsp;</td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;nlwarning (&quot;'Services' variable does not contains a good number of entries (must be a multiple of 2)&quot;);</font></td></tr>
+<tr><td bgcolor="#99cc99">&nbsp;</td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;StartAllServices = false;</font></td></tr>
+<tr><td bgcolor="#99cc99">&nbsp;</td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;return;</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp;}</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp;}</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp;</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp;</font></td></tr>
+<tr><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp;/*</font></td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;AESIT aesit = findAdminExecutorService (serverAlias, false);</font></td></tr>
+<tr><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp;NLMISC_COMMAND (start, &quot;start a service&quot;, &quot;&lt;service_name&gt;&quot;)</font></td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;if (aesit == AdminExecutorServices.end())</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp;{</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp;{</font></td></tr>
+<tr><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;if(args.size() != 1 &amp;&amp; args.size() != 2) return false;</font></td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;StartAllServices = false;</font></td></tr>
+<tr><td bgcolor="#99cc99">&nbsp;</td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;nlwarning(&quot;don't find the server&quot;);</font></td></tr>
+<tr><td bgcolor="#99cc99">&nbsp;</td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;return;</font></td></tr>
+<tr><td bgcolor="#99cc99">&nbsp;</td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp;</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp;</font></td></tr>
+<tr><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;CMessage msgout (CNetManager::getSIDA(&quot;AES&quot;), &quot;ESC&quot;);</font></td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// check if the service is not currently running</font></td></tr>
+<tr><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;msgout.serial (args[1]);</font></td><td bgcolor="#99cc99">&nbsp;</td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp;</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp;</font></td></tr>
+<tr><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;uint8 background = 0;</font></td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;StartAllServicesPos++;</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp;</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp;</font></td></tr>
+<tr><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;if (args.size() == 2)</font></td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;SIT sit = (*aesit).findService (serviceAlias);</font></td></tr>
+<tr><td bgcolor="#99cc99">&nbsp;</td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;if ((*sit).Connected)</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{</font></td></tr>
+<tr><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;if (args[1] == &quot;&amp;&quot;)</font></td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// the service is already running, go to the next process</font></td></tr>
+<tr><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;uint8 background = 1;</font></td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;doNextStartAllServicesStep ();</font></td></tr>
+<tr><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;else</font></td><td bgcolor="#99cc99">&nbsp;</td></tr>
+<tr><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;return false;</font></td><td bgcolor="#99cc99">&nbsp;</td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}</font></td></tr>
+<tr><td bgcolor="#cccccc">&nbsp;</td><td bgcolor="#ccccff"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;else</font></td></tr>
+<tr><td bgcolor="#cccccc">&nbsp;</td><td bgcolor="#ccccff"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{</font></td></tr>
+<tr><td bgcolor="#cccccc">&nbsp;</td><td bgcolor="#ccccff"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// send the resquest to the AES</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp;</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp;</font></td></tr>
+<tr><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;msgout.serial (background);</font></td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;CMessage msgout (CNetManager::getSIDA((*aesit).ServerAlias), &quot;STARTS&quot;);</font></td></tr>
+<tr><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;CNetManager::send (&quot;AES&quot;, msgout);</font></td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;msgout.serial (serviceAlias);</font></td></tr>
+<tr><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;return true;</font></td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;CNetManager::send ((*aesit).ServerAlias, msgout);</font></td></tr>
+<tr><td bgcolor="#99cc99">&nbsp;</td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}</font></td></tr>
+<tr><td bgcolor="#99cc99">&nbsp;</td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}</font></td></tr>
+<tr><td bgcolor="#99cc99">&nbsp;</td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;catch(EUnknownVar&amp;)</font></td></tr>
+<tr><td bgcolor="#99cc99">&nbsp;</td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{</font></td></tr>
+<tr><td bgcolor="#99cc99">&nbsp;</td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;nlwarning (&quot;'Services' variable is not found&quot;);</font></td></tr>
+<tr><td bgcolor="#99cc99">&nbsp;</td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;StartAllServices = false;</font></td></tr>
+<tr><td bgcolor="#99cc99">&nbsp;</td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;return;</font></td></tr>
+<tr><td bgcolor="#99cc99">&nbsp;</td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp;}</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp;}</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp;</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp;</font></td></tr>
+<tr><td bgcolor="#cccccc">&nbsp;</td><td bgcolor="#ccccff"><font face="Helvetica,Arial" size="-1">&nbsp;void initStartAllServices ()</font></td></tr>
+<tr><td bgcolor="#cccccc">&nbsp;</td><td bgcolor="#ccccff"><font face="Helvetica,Arial" size="-1">&nbsp;{</font></td></tr>
+<tr><td bgcolor="#cccccc">&nbsp;</td><td bgcolor="#ccccff"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;if (StartAllServices)</font></td></tr>
+<tr><td bgcolor="#cccccc">&nbsp;</td><td bgcolor="#ccccff"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{</font></td></tr>
+<tr><td bgcolor="#cccccc">&nbsp;</td><td bgcolor="#ccccff"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;nlwarning(&quot;already running a script, reset it&quot;);</font></td></tr>
+<tr><td bgcolor="#cccccc">&nbsp;</td><td bgcolor="#ccccff"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;StartAllServices = false;</font></td></tr>
+<tr><td bgcolor="#cccccc">&nbsp;</td><td bgcolor="#ccccff"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp;</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp;</font></td></tr>
+<tr><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp;CLog logstdout;</font></td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;try</font></td></tr>
+<tr><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp;CStdDisplayer dispstdout;</font></td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{</font></td></tr>
+<tr><td bgcolor="#99cc99">&nbsp;</td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;CConfigFile::CVar &amp;script = IService::ConfigFile.getVar(&quot;Services&quot;);</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp;</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp;</font></td></tr>
+<tr><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp;NLMISC_COMMAND (stop, &quot;stop a service&quot;, &quot;&lt;aesid&gt; &lt;sid&gt;&quot;)</font></td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;for (sint i = 0 ; i &lt; script.size (); i+=2)</font></td></tr>
+<tr><td bgcolor="#99cc99">&nbsp;</td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{</font></td></tr>
+<tr><td bgcolor="#99cc99">&nbsp;</td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;string serverAlias = script.asString(i);</font></td></tr>
+<tr><td bgcolor="#99cc99">&nbsp;</td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;AESIT aesit = findAdminExecutorService (serverAlias, false);</font></td></tr>
+<tr><td bgcolor="#99cc99">&nbsp;</td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;if (aesit == AdminExecutorServices.end())</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp;{</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp;{</font></td></tr>
+<tr><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;if(args.size() != 3) return false;</font></td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;nlwarning(&quot;aes '%s' not running, can't run the script&quot;, serverAlias.c_str());</font></td></tr>
+<tr><td bgcolor="#99cc99">&nbsp;</td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;return;</font></td></tr>
+<tr><td bgcolor="#99cc99">&nbsp;</td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}</font></td></tr>
+<tr><td bgcolor="#99cc99">&nbsp;</td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}</font></td></tr>
+<tr><td bgcolor="#99cc99">&nbsp;</td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}</font></td></tr>
+<tr><td bgcolor="#99cc99">&nbsp;</td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;catch(EConfigFile &amp;)</font></td></tr>
+<tr><td bgcolor="#99cc99">&nbsp;</td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{</font></td></tr>
+<tr><td bgcolor="#99cc99">&nbsp;</td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;nlwarning (&quot;bad config file&quot;);</font></td></tr>
+<tr><td bgcolor="#99cc99">&nbsp;</td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;return;</font></td></tr>
+<tr><td bgcolor="#99cc99">&nbsp;</td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}</font></td></tr>
+<tr><td bgcolor="#99cc99">&nbsp;</td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp;</font></td></tr>
+<tr><td bgcolor="#99cc99">&nbsp;</td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;StartAllServicesPos = 0;</font></td></tr>
+<tr><td bgcolor="#99cc99">&nbsp;</td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;StartAllServices = true;</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp;</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp;</font></td></tr>
+<tr><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;CMessage msgout (CNetManager::getSIDA(&quot;AES&quot;), &quot;SS&quot;);</font></td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;doNextStartAllServicesStep();</font></td></tr>
+<tr><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;msgout.serial (args[2]);</font></td><td bgcolor="#99cc99">&nbsp;</td></tr>
+<tr><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;CNetManager::send (&quot;AES&quot;, msgout);</font></td><td bgcolor="#99cc99">&nbsp;</td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp;}</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp;}</font></td></tr>
+<tr><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp;*/</font></td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp;</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp;</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp;</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp;////////////////////////////////////////////////////////////////////////////////////////////////////////</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp;////////////////////////////////////////////////////////////////////////////////////////////////////////</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp;////////////////////////////////////////////////////////////////////////////////////////////////////////</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp;////////////////////////////////////////////////////////////////////////////////////////////////////////</font></td></tr>
+<tr bgcolor="#dddddd"><td width="50%"><table width="100%" border=1 cellpadding=5><tr><td><b>Line 140</b>&nbsp;<font size=-1></font></td></tr></table></td><td width="50%"><table width="100%" border=1 cellpadding=5><tr><td><b>Line 280</b>&nbsp;<font size=-1></font></td></tr></table></td>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;nlinfo(&quot;end of command result&quot;);</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;nlinfo(&quot;end of command result&quot;);</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp;}</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp;}</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp;</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp;</font></td></tr>
+<tr><td bgcolor="#cccccc">&nbsp;</td><td bgcolor="#ccccff"><font face="Helvetica,Arial" size="-1">&nbsp;static void cbServiceList (CMessage&amp; msgin, TSockId from, CCallbackNetBase &amp;netbase)</font></td></tr>
+<tr><td bgcolor="#cccccc">&nbsp;</td><td bgcolor="#ccccff"><font face="Helvetica,Arial" size="-1">&nbsp;{</font></td></tr>
+<tr><td bgcolor="#cccccc">&nbsp;</td><td bgcolor="#ccccff"><font face="Helvetica,Arial" size="-1">&nbsp;/* &nbsp; &nbsp; &nbsp;// get the service list from the admin exec and send the list to all admin client</font></td></tr>
+<tr><td bgcolor="#cccccc">&nbsp;</td><td bgcolor="#ccccff"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;CAdminExecutorService *aes = (CAdminExecutorService*) from-&gt;appId();</font></td></tr>
+<tr><td bgcolor="#cccccc">&nbsp;</td><td bgcolor="#ccccff"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;aes-&gt;Services.clear();</font></td></tr>
+<tr><td bgcolor="#cccccc">&nbsp;</td><td bgcolor="#ccccff"><font face="Helvetica,Arial" size="-1">&nbsp;</font></td></tr>
+<tr><td bgcolor="#cccccc">&nbsp;</td><td bgcolor="#ccccff"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;CMessage msgout (CNetManager::getSIDA (&quot;AS&quot;), &quot;SL&quot;);</font></td></tr>
+<tr><td bgcolor="#cccccc">&nbsp;</td><td bgcolor="#ccccff"><font face="Helvetica,Arial" size="-1">&nbsp;</font></td></tr>
+<tr><td bgcolor="#cccccc">&nbsp;</td><td bgcolor="#ccccff"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;uint32 nbaes = 1;</font></td></tr>
+<tr><td bgcolor="#cccccc">&nbsp;</td><td bgcolor="#ccccff"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;msgout.serial (nbaes);</font></td></tr>
+<tr><td bgcolor="#cccccc">&nbsp;</td><td bgcolor="#ccccff"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;msgout.serial (aes-&gt;Id);</font></td></tr>
+<tr><td bgcolor="#cccccc">&nbsp;</td><td bgcolor="#ccccff"><font face="Helvetica,Arial" size="-1">&nbsp;</font></td></tr>
+<tr><td bgcolor="#cccccc">&nbsp;</td><td bgcolor="#ccccff"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;uint32 nbs;</font></td></tr>
+<tr><td bgcolor="#cccccc">&nbsp;</td><td bgcolor="#ccccff"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;msgin.serial (nbs);</font></td></tr>
+<tr><td bgcolor="#cccccc">&nbsp;</td><td bgcolor="#ccccff"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;msgout.serial (nbs);</font></td></tr>
+<tr><td bgcolor="#cccccc">&nbsp;</td><td bgcolor="#ccccff"><font face="Helvetica,Arial" size="-1">&nbsp;</font></td></tr>
+<tr><td bgcolor="#cccccc">&nbsp;</td><td bgcolor="#ccccff"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;for (uint32 i = 0; i &lt; nbs; i++)</font></td></tr>
+<tr><td bgcolor="#cccccc">&nbsp;</td><td bgcolor="#ccccff"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{</font></td></tr>
+<tr><td bgcolor="#cccccc">&nbsp;</td><td bgcolor="#ccccff"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;uint32 sid;</font></td></tr>
+<tr><td bgcolor="#cccccc">&nbsp;</td><td bgcolor="#ccccff"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;msgin.serial(sid);</font></td></tr>
+<tr><td bgcolor="#cccccc">&nbsp;</td><td bgcolor="#ccccff"><font face="Helvetica,Arial" size="-1">&nbsp;</font></td></tr>
+<tr><td bgcolor="#cccccc">&nbsp;</td><td bgcolor="#ccccff"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;aes-&gt;Services.push_back (CService(sid));</font></td></tr>
+<tr><td bgcolor="#cccccc">&nbsp;</td><td bgcolor="#ccccff"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;CService *s = &amp;(aes-&gt;Services.back());</font></td></tr>
+<tr><td bgcolor="#cccccc">&nbsp;</td><td bgcolor="#ccccff"><font face="Helvetica,Arial" size="-1">&nbsp;</font></td></tr>
+<tr><td bgcolor="#cccccc">&nbsp;</td><td bgcolor="#ccccff"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;msgin.serial(s-&gt;ShortName, s-&gt;LongName, s-&gt;Ready);</font></td></tr>
+<tr><td bgcolor="#cccccc">&nbsp;</td><td bgcolor="#ccccff"><font face="Helvetica,Arial" size="-1">&nbsp;</font></td></tr>
+<tr><td bgcolor="#cccccc">&nbsp;</td><td bgcolor="#ccccff"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;msgout.serial (s-&gt;Id, s-&gt;ShortName, s-&gt;LongName, s-&gt;Ready);</font></td></tr>
+<tr><td bgcolor="#cccccc">&nbsp;</td><td bgcolor="#ccccff"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}</font></td></tr>
+<tr><td bgcolor="#cccccc">&nbsp;</td><td bgcolor="#ccccff"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;CNetManager::send (&quot;AS&quot;, msgout, 0);</font></td></tr>
+<tr><td bgcolor="#cccccc">&nbsp;</td><td bgcolor="#ccccff"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;</font></td></tr>
+<tr><td bgcolor="#cccccc">&nbsp;</td><td bgcolor="#ccccff"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;displayServices ();</font></td></tr>
+<tr><td bgcolor="#cccccc">&nbsp;</td><td bgcolor="#ccccff"><font face="Helvetica,Arial" size="-1">&nbsp;*/}</font></td></tr>
+<tr><td bgcolor="#cccccc">&nbsp;</td><td bgcolor="#ccccff"><font face="Helvetica,Arial" size="-1">&nbsp;</font></td></tr>
+<tr><td bgcolor="#cccccc">&nbsp;</td><td bgcolor="#ccccff"><font face="Helvetica,Arial" size="-1">&nbsp;static void cbServiceAliasList (CMessage&amp; msgin, TSockId from, CCallbackNetBase &amp;netbase)</font></td></tr>
+<tr><td bgcolor="#cccccc">&nbsp;</td><td bgcolor="#ccccff"><font face="Helvetica,Arial" size="-1">&nbsp;{</font></td></tr>
+<tr><td bgcolor="#cccccc">&nbsp;</td><td bgcolor="#ccccff"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// get the service list from the admin exec and send the list to all admin client</font></td></tr>
+<tr><td bgcolor="#cccccc">&nbsp;</td><td bgcolor="#ccccff"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;CAdminExecutorService *aes = (CAdminExecutorService*) from-&gt;appId();</font></td></tr>
+<tr><td bgcolor="#cccccc">&nbsp;</td><td bgcolor="#ccccff"><font face="Helvetica,Arial" size="-1">&nbsp;</font></td></tr>
+<tr><td bgcolor="#cccccc">&nbsp;</td><td bgcolor="#ccccff"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;aes-&gt;ServiceAliasList.clear ();</font></td></tr>
+<tr><td bgcolor="#cccccc">&nbsp;</td><td bgcolor="#ccccff"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;msgin.serialCont (aes-&gt;ServiceAliasList);</font></td></tr>
+<tr><td bgcolor="#cccccc">&nbsp;</td><td bgcolor="#ccccff"><font face="Helvetica,Arial" size="-1">&nbsp;</font></td></tr>
+<tr><td bgcolor="#cccccc">&nbsp;</td><td bgcolor="#ccccff"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;CMessage msgout (CNetManager::getSIDA (&quot;AS&quot;), &quot;SAL&quot;);</font></td></tr>
+<tr><td bgcolor="#cccccc">&nbsp;</td><td bgcolor="#ccccff"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;msgout.serial (aes-&gt;Id);</font></td></tr>
+<tr><td bgcolor="#cccccc">&nbsp;</td><td bgcolor="#ccccff"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;msgout.serialCont (aes-&gt;ServiceAliasList);</font></td></tr>
+<tr><td bgcolor="#cccccc">&nbsp;</td><td bgcolor="#ccccff"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;CNetManager::send (&quot;AS&quot;, msgout, 0);</font></td></tr>
+<tr><td bgcolor="#cccccc">&nbsp;</td><td bgcolor="#ccccff"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;</font></td></tr>
+<tr><td bgcolor="#cccccc">&nbsp;</td><td bgcolor="#ccccff"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;nlinfo(&quot;new service alias list&quot;);</font></td></tr>
+<tr><td bgcolor="#cccccc">&nbsp;</td><td bgcolor="#ccccff"><font face="Helvetica,Arial" size="-1">&nbsp;}</font></td></tr>
+<tr><td bgcolor="#cccccc">&nbsp;</td><td bgcolor="#ccccff"><font face="Helvetica,Arial" size="-1">&nbsp;</font></td></tr>
+<tr><td bgcolor="#cccccc">&nbsp;</td><td bgcolor="#ccccff"><font face="Helvetica,Arial" size="-1">&nbsp;</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp;static void cbServiceIdentification (CMessage&amp; msgin, TSockId from, CCallbackNetBase &amp;netbase)</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp;static void cbServiceIdentification (CMessage&amp; msgin, TSockId from, CCallbackNetBase &amp;netbase)</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp;{</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp;{</font></td></tr>
+<tr><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;string ShortName, LongName;</font></td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;CAdminExecutorService *aes = (CAdminExecutorService*) from-&gt;appId();</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp;</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp;</font></td></tr>
+<tr><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;msgin.serial (ShortName);</font></td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;uint32 sid;</font></td></tr>
+<tr><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;msgin.serial (LongName);</font></td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;string alias;</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp;</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp;</font></td></tr>
+<tr><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;nlinfo (&quot;%s %s %s is identified&quot;, from-&gt;asString().c_str(), ShortName.c_str(), LongName.c_str());</font></td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;msgin.serial (sid, alias);</font></td></tr>
+<tr><td bgcolor="#99cc99">&nbsp;</td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp;</font></td></tr>
+<tr><td bgcolor="#99cc99">&nbsp;</td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;SIT sit;</font></td></tr>
+<tr><td bgcolor="#99cc99">&nbsp;</td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;if (!alias.empty())</font></td></tr>
+<tr><td bgcolor="#99cc99">&nbsp;</td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{</font></td></tr>
+<tr><td bgcolor="#99cc99">&nbsp;</td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;sit = aes-&gt;findService (alias, false);</font></td></tr>
+<tr><td bgcolor="#99cc99">&nbsp;</td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp;</font></td></tr>
+<tr><td bgcolor="#99cc99">&nbsp;</td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;if (sit == aes-&gt;Services.end ())</font></td></tr>
+<tr><td bgcolor="#99cc99">&nbsp;</td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{</font></td></tr>
+<tr><td bgcolor="#99cc99">&nbsp;</td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// the alias is not found</font></td></tr>
+<tr><td bgcolor="#99cc99">&nbsp;</td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;nlwarning (&quot;new service with alias (%s) but not in my list&quot;, alias.c_str());</font></td></tr>
+<tr><td bgcolor="#99cc99">&nbsp;</td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp;</font></td></tr>
+<tr><td bgcolor="#99cc99">&nbsp;</td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;aes-&gt;Services.push_back (CService ());</font></td></tr>
+<tr><td bgcolor="#99cc99">&nbsp;</td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;sit = aes-&gt;Services.end();</font></td></tr>
+<tr><td bgcolor="#99cc99">&nbsp;</td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;sit--;</font></td></tr>
+<tr><td bgcolor="#99cc99">&nbsp;</td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}</font></td></tr>
+<tr><td bgcolor="#99cc99">&nbsp;</td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;else</font></td></tr>
+<tr><td bgcolor="#99cc99">&nbsp;</td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{</font></td></tr>
+<tr><td bgcolor="#99cc99">&nbsp;</td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// normal case</font></td></tr>
+<tr><td bgcolor="#99cc99">&nbsp;</td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}</font></td></tr>
+<tr><td bgcolor="#99cc99">&nbsp;</td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}</font></td></tr>
+<tr><td bgcolor="#99cc99">&nbsp;</td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;else</font></td></tr>
+<tr><td bgcolor="#99cc99">&nbsp;</td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{</font></td></tr>
+<tr><td bgcolor="#99cc99">&nbsp;</td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;sit = aes-&gt;findService (sid, false);</font></td></tr>
+<tr><td bgcolor="#99cc99">&nbsp;</td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp;</font></td></tr>
+<tr><td bgcolor="#99cc99">&nbsp;</td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;if (sit == aes-&gt;Services.end ())</font></td></tr>
+<tr><td bgcolor="#99cc99">&nbsp;</td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{</font></td></tr>
+<tr><td bgcolor="#99cc99">&nbsp;</td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// normal case for unknown services</font></td></tr>
+<tr><td bgcolor="#99cc99">&nbsp;</td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;nlwarning (&quot;new service with alias (%s) but not in my list&quot;, alias.c_str());</font></td></tr>
+<tr><td bgcolor="#99cc99">&nbsp;</td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}</font></td></tr>
+<tr><td bgcolor="#99cc99">&nbsp;</td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;else</font></td></tr>
+<tr><td bgcolor="#99cc99">&nbsp;</td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{</font></td></tr>
+<tr><td bgcolor="#99cc99">&nbsp;</td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;nlwarning (&quot;new service without alias is already in my list with id %d&quot;, sid);</font></td></tr>
+<tr><td bgcolor="#99cc99">&nbsp;</td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}</font></td></tr>
+<tr><td bgcolor="#99cc99">&nbsp;</td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;aes-&gt;Services.push_back (CService ());</font></td></tr>
+<tr><td bgcolor="#99cc99">&nbsp;</td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;sit = aes-&gt;Services.end();</font></td></tr>
+<tr><td bgcolor="#99cc99">&nbsp;</td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;sit--;</font></td></tr>
+<tr><td bgcolor="#99cc99">&nbsp;</td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}</font></td></tr>
+<tr><td bgcolor="#99cc99">&nbsp;</td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp;</font></td></tr>
+<tr><td bgcolor="#99cc99">&nbsp;</td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;(*sit).Id = sid;</font></td></tr>
+<tr><td bgcolor="#99cc99">&nbsp;</td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;(*sit).AliasName = alias;</font></td></tr>
+<tr><td bgcolor="#99cc99">&nbsp;</td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;(*sit).Connected = true;</font></td></tr>
+<tr><td bgcolor="#99cc99">&nbsp;</td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;msgin.serial ((*sit).ShortName, (*sit).LongName);</font></td></tr>
+<tr><td bgcolor="#99cc99">&nbsp;</td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp;</font></td></tr>
+<tr><td bgcolor="#99cc99">&nbsp;</td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;nlinfo (&quot;*:%d:%d is identified to be '%s' '%s' '%s'&quot;, aes-&gt;Id, sid, (*sit).AliasName.c_str(), (*sit).ShortName.c_str(), (*sit).LongName.c_str());</font></td></tr>
+<tr><td bgcolor="#99cc99">&nbsp;</td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp;</font></td></tr>
+<tr><td bgcolor="#99cc99">&nbsp;</td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// broadcast the message to all admin client</font></td></tr>
+<tr><td bgcolor="#99cc99">&nbsp;</td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;CMessage msgout (CNetManager::getSIDA (&quot;AS&quot;), &quot;SID&quot;);</font></td></tr>
+<tr><td bgcolor="#99cc99">&nbsp;</td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;msgout.serial (aes-&gt;Id, sid, (*sit).AliasName, (*sit).ShortName, (*sit).LongName);</font></td></tr>
+<tr><td bgcolor="#99cc99">&nbsp;</td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;CNetManager::send (&quot;AS&quot;, msgout, 0);</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp;}</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp;}</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp;</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp;</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp;static void cbServiceReady (CMessage&amp; msgin, TSockId from, CCallbackNetBase &amp;netbase)</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp;static void cbServiceReady (CMessage&amp; msgin, TSockId from, CCallbackNetBase &amp;netbase)</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp;{</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp;{</font></td></tr>
+<tr><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;string ShortName, LongName;</font></td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;CAdminExecutorService *aes = (CAdminExecutorService*) from-&gt;appId();</font></td></tr>
+<tr><td bgcolor="#99cc99">&nbsp;</td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp;</font></td></tr>
+<tr><td bgcolor="#99cc99">&nbsp;</td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;uint32 sid;</font></td></tr>
+<tr><td bgcolor="#99cc99">&nbsp;</td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;msgin.serial (sid);</font></td></tr>
+<tr><td bgcolor="#99cc99">&nbsp;</td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp;</font></td></tr>
+<tr><td bgcolor="#99cc99">&nbsp;</td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;SIT sit = aes-&gt;findService(sid);</font></td></tr>
+<tr><td bgcolor="#99cc99">&nbsp;</td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;(*sit).Ready = true;</font></td></tr>
+<tr><td bgcolor="#99cc99">&nbsp;</td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp;</font></td></tr>
+<tr><td bgcolor="#99cc99">&nbsp;</td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;nlinfo (&quot;*:%d:%d is ready&quot;, aes-&gt;Id, sid);</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp;</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp;</font></td></tr>
+<tr><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;msgin.serial (ShortName);</font></td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// broadcast the message to all admin client</font></td></tr>
+<tr><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;msgin.serial (LongName);</font></td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;CMessage msgout (CNetManager::getSIDA (&quot;AS&quot;), &quot;SR&quot;);</font></td></tr>
+<tr><td bgcolor="#99cc99">&nbsp;</td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;msgout.serial (aes-&gt;Id, sid);</font></td></tr>
+<tr><td bgcolor="#99cc99">&nbsp;</td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;CNetManager::send (&quot;AS&quot;, msgout, 0);</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp;</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp;</font></td></tr>
+<tr><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;nlinfo (&quot;%s %s %s is ready&quot;, from-&gt;asString().c_str(), ShortName.c_str(), LongName.c_str());</font></td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// if we are in a script execution, continue</font></td></tr>
+<tr><td bgcolor="#99cc99">&nbsp;</td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;if (StartAllServices)</font></td></tr>
+<tr><td bgcolor="#99cc99">&nbsp;</td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;doNextStartAllServicesStep();</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp;}</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp;}</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp;</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp;</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp;static void cbServiceConnection (CMessage&amp; msgin, TSockId from, CCallbackNetBase &amp;netbase)</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp;static void cbServiceConnection (CMessage&amp; msgin, TSockId from, CCallbackNetBase &amp;netbase)</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp;{</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp;{</font></td></tr>
+<tr><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;nlinfo (&quot;%s a service is connected&quot;, from-&gt;asString().c_str());</font></td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;CAdminExecutorService *aes = (CAdminExecutorService*) from-&gt;appId();</font></td></tr>
+<tr><td bgcolor="#99cc99">&nbsp;</td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp;</font></td></tr>
+<tr><td bgcolor="#99cc99">&nbsp;</td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;uint32 sid;</font></td></tr>
+<tr><td bgcolor="#99cc99">&nbsp;</td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;msgin.serial (sid);</font></td></tr>
+<tr><td bgcolor="#99cc99">&nbsp;</td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp;</font></td></tr>
+<tr><td bgcolor="#99cc99">&nbsp;</td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;nlinfo (&quot;*:%d:%d connected&quot;, aes-&gt;Id, sid);</font></td></tr>
+<tr><td bgcolor="#99cc99">&nbsp;</td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp;</font></td></tr>
+<tr><td bgcolor="#99cc99">&nbsp;</td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// don't do anything. we have to wait identification to add it in out lists</font></td></tr>
+<tr><td bgcolor="#99cc99">&nbsp;</td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp;</font></td></tr>
+<tr><td bgcolor="#99cc99">&nbsp;</td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp;/*</font></td></tr>
+<tr><td bgcolor="#99cc99">&nbsp;</td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;aes-&gt;Services.push_back (CService(sid));</font></td></tr>
+<tr><td bgcolor="#99cc99">&nbsp;</td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp;*/</font></td></tr>
+<tr><td bgcolor="#99cc99">&nbsp;</td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// broadcast the message to all admin client</font></td></tr>
+<tr><td bgcolor="#99cc99">&nbsp;</td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;CMessage msgout (CNetManager::getSIDA (&quot;AS&quot;), &quot;SC&quot;);</font></td></tr>
+<tr><td bgcolor="#99cc99">&nbsp;</td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;msgout.serial (aes-&gt;Id, sid);</font></td></tr>
+<tr><td bgcolor="#99cc99">&nbsp;</td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;CNetManager::send (&quot;AS&quot;, msgout, 0);</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp;}</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp;}</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp;</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp;</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp;static void cbServiceDisconnection (CMessage&amp; msgin, TSockId from, CCallbackNetBase &amp;netbase)</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp;static void cbServiceDisconnection (CMessage&amp; msgin, TSockId from, CCallbackNetBase &amp;netbase)</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp;{</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp;{</font></td></tr>
+<tr><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;string ShortName, LongName;</font></td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;CAdminExecutorService *aes = (CAdminExecutorService*) from-&gt;appId();</font></td></tr>
+<tr><td bgcolor="#99cc99">&nbsp;</td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp;</font></td></tr>
+<tr><td bgcolor="#99cc99">&nbsp;</td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;uint32 sid;</font></td></tr>
+<tr><td bgcolor="#99cc99">&nbsp;</td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;msgin.serial (sid);</font></td></tr>
+<tr><td bgcolor="#99cc99">&nbsp;</td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp;</font></td></tr>
+<tr><td bgcolor="#99cc99">&nbsp;</td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;nlinfo (&quot;*:%d:%d disconnected&quot;, aes-&gt;Id, sid);</font></td></tr>
+<tr><td bgcolor="#99cc99">&nbsp;</td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp;</font></td></tr>
+<tr><td bgcolor="#99cc99">&nbsp;</td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;SIT sit = aes-&gt;findService(sid);</font></td></tr>
+<tr><td bgcolor="#99cc99">&nbsp;</td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp;</font></td></tr>
+<tr><td bgcolor="#99cc99">&nbsp;</td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// broadcast the message to all admin client</font></td></tr>
+<tr><td bgcolor="#99cc99">&nbsp;</td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;CMessage msgout (CNetManager::getSIDA (&quot;AS&quot;), &quot;SD&quot;);</font></td></tr>
+<tr><td bgcolor="#99cc99">&nbsp;</td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;msgout.serial (aes-&gt;Id, (*sit).Id);</font></td></tr>
+<tr><td bgcolor="#99cc99">&nbsp;</td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;CNetManager::send (&quot;AS&quot;, msgout, 0);</font></td></tr>
+<tr><td bgcolor="#99cc99">&nbsp;</td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp;</font></td></tr>
+<tr><td bgcolor="#99cc99">&nbsp;</td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;if ((*sit).InConfig)</font></td></tr>
+<tr><td bgcolor="#99cc99">&nbsp;</td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{</font></td></tr>
+<tr><td bgcolor="#99cc99">&nbsp;</td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;(*sit).Ready = (*sit).Connected = false;</font></td></tr>
+<tr><td bgcolor="#99cc99">&nbsp;</td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;(*sit).Id = 0xFFFFFFFF;</font></td></tr>
+<tr><td bgcolor="#99cc99">&nbsp;</td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;(*sit).ShortName = (*sit).LongName = &quot;&quot;;</font></td></tr>
+<tr><td bgcolor="#99cc99">&nbsp;</td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}</font></td></tr>
+<tr><td bgcolor="#99cc99">&nbsp;</td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;else</font></td></tr>
+<tr><td bgcolor="#99cc99">&nbsp;</td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{</font></td></tr>
+<tr><td bgcolor="#99cc99">&nbsp;</td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// erase only if it's not a service in the config</font></td></tr>
+<tr><td bgcolor="#99cc99">&nbsp;</td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;aes-&gt;Services.erase (sit);</font></td></tr>
+<tr><td bgcolor="#99cc99">&nbsp;</td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}</font></td></tr>
+<tr><td bgcolor="#99cc99">&nbsp;</td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp;}</font></td></tr>
+<tr><td bgcolor="#99cc99">&nbsp;</td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp;</font></td></tr>
+<tr><td bgcolor="#99cc99">&nbsp;</td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp;// i'm connected to a new admin executor service</font></td></tr>
+<tr><td bgcolor="#99cc99">&nbsp;</td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp;void cbAESConnection (const string &amp;serviceName, TSockId from, void *arg)</font></td></tr>
+<tr><td bgcolor="#99cc99">&nbsp;</td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp;{</font></td></tr>
+<tr><td bgcolor="#99cc99">&nbsp;</td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;AESIT aesit = findAdminExecutorService (serviceName); &nbsp; &nbsp; &nbsp; &nbsp;</font></td></tr>
+<tr><td bgcolor="#99cc99">&nbsp;</td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;CAdminExecutorService *aes = &amp;(*aesit);</font></td></tr>
+<tr><td bgcolor="#99cc99">&nbsp;</td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;</font></td></tr>
+<tr><td bgcolor="#99cc99">&nbsp;</td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// set the appid to find the aes in O(1)</font></td></tr>
+<tr><td bgcolor="#99cc99">&nbsp;</td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;from-&gt;setAppId ((uint64)aes);</font></td></tr>
+<tr><td bgcolor="#99cc99">&nbsp;</td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp;</font></td></tr>
+<tr><td bgcolor="#99cc99">&nbsp;</td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;aes-&gt;Connected = true;</font></td></tr>
+<tr><td bgcolor="#99cc99">&nbsp;</td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;nlinfo (&quot;*:%d:* connected&quot;, aes-&gt;Id);</font></td></tr>
+<tr><td bgcolor="#99cc99">&nbsp;</td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp;/*</font></td></tr>
+<tr><td bgcolor="#99cc99">&nbsp;</td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// broadcast the message that an admin exec is connected to all admin client</font></td></tr>
+<tr><td bgcolor="#99cc99">&nbsp;</td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;CMessage msgout (CNetManager::getSIDA (&quot;AS&quot;), &quot;AESC&quot;);</font></td></tr>
+<tr><td bgcolor="#99cc99">&nbsp;</td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;msgout.serial (aes-&gt;Id);</font></td></tr>
+<tr><td bgcolor="#99cc99">&nbsp;</td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;CNetManager::send (&quot;AS&quot;, msgout, 0);</font></td></tr>
+<tr><td bgcolor="#99cc99">&nbsp;</td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp;*/</font></td></tr>
+<tr><td bgcolor="#99cc99">&nbsp;</td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp;</font></td></tr>
+<tr><td bgcolor="#99cc99">&nbsp;</td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// broadcast the new state of this AES</font></td></tr>
+<tr><td bgcolor="#99cc99">&nbsp;</td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;CMessage msgout (CNetManager::getSIDA (&quot;AS&quot;), &quot;AES_LIST&quot;);</font></td></tr>
+<tr><td bgcolor="#99cc99">&nbsp;</td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;uint32 nbaes = 1;</font></td></tr>
+<tr><td bgcolor="#99cc99">&nbsp;</td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;msgout.serial (nbaes);</font></td></tr>
+<tr><td bgcolor="#99cc99">&nbsp;</td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;msgout.serial (aes-&gt;Id, aes-&gt;ServerAlias, aes-&gt;ServerAddr, aes-&gt;Connected);</font></td></tr>
+<tr><td bgcolor="#99cc99">&nbsp;</td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;CNetManager::send (&quot;AS&quot;, msgout, 0);</font></td></tr>
+<tr><td bgcolor="#99cc99">&nbsp;</td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp;}</font></td></tr>
+<tr><td bgcolor="#99cc99">&nbsp;</td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp;</font></td></tr>
+<tr><td bgcolor="#99cc99">&nbsp;</td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp;// i'm disconnected to an admin executor service</font></td></tr>
+<tr><td bgcolor="#99cc99">&nbsp;</td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp;void cbAESDisconnection (const string &amp;serviceName, TSockId from, void *arg)</font></td></tr>
+<tr><td bgcolor="#99cc99">&nbsp;</td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp;{</font></td></tr>
+<tr><td bgcolor="#99cc99">&nbsp;</td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// get the aes with the appid</font></td></tr>
+<tr><td bgcolor="#99cc99">&nbsp;</td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;CAdminExecutorService *aes = (CAdminExecutorService*) from-&gt;appId();</font></td></tr>
+<tr><td bgcolor="#99cc99">&nbsp;</td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp;</font></td></tr>
+<tr><td bgcolor="#99cc99">&nbsp;</td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;aes-&gt;Connected = false;</font></td></tr>
+<tr><td bgcolor="#99cc99">&nbsp;</td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp;</font></td></tr>
+<tr><td bgcolor="#99cc99">&nbsp;</td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;SIT sit;</font></td></tr>
+<tr><td bgcolor="#99cc99">&nbsp;</td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;for (sit = aes-&gt;Services.begin(); sit != aes-&gt;Services.end(); sit++)</font></td></tr>
+<tr><td bgcolor="#99cc99">&nbsp;</td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{</font></td></tr>
+<tr><td bgcolor="#99cc99">&nbsp;</td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;(*sit).Id = 0xFFFFFFFF;</font></td></tr>
+<tr><td bgcolor="#99cc99">&nbsp;</td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;(*sit).ShortName = (*sit).LongName = &quot;&quot;;</font></td></tr>
+<tr><td bgcolor="#99cc99">&nbsp;</td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;(*sit).Ready = (*sit).Connected = false;</font></td></tr>
+<tr><td bgcolor="#99cc99">&nbsp;</td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp;</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp;</font></td></tr>
+<tr><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;msgin.serial (ShortName);</font></td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;nlinfo (&quot;*:%d:* disconnected&quot;, aes-&gt;Id);</font></td></tr>
+<tr><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;msgin.serial (LongName);</font></td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp;/* &nbsp; &nbsp; &nbsp;</font></td></tr>
+<tr><td bgcolor="#99cc99">&nbsp;</td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// broadcast the message to all admin client that an admin exec is disconnected</font></td></tr>
+<tr><td bgcolor="#99cc99">&nbsp;</td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;CMessage msgout (CNetManager::getSIDA (&quot;AS&quot;), &quot;AESD&quot;);</font></td></tr>
+<tr><td bgcolor="#99cc99">&nbsp;</td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;msgout.serial (aes-&gt;Id);</font></td></tr>
+<tr><td bgcolor="#99cc99">&nbsp;</td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;CNetManager::send (&quot;AS&quot;, msgout, 0);</font></td></tr>
+<tr><td bgcolor="#99cc99">&nbsp;</td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp;*/</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp;</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp;</font></td></tr>
+<tr><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;nlinfo (&quot;%s %s %s is disconnected&quot;, from-&gt;asString().c_str(), ShortName.c_str(), LongName.c_str());</font></td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// broadcast the new state of this AES</font></td></tr>
+<tr><td bgcolor="#99cc99">&nbsp;</td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;CMessage msgout (CNetManager::getSIDA (&quot;AS&quot;), &quot;AES_LIST&quot;);</font></td></tr>
+<tr><td bgcolor="#99cc99">&nbsp;</td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;uint32 nbaes = 1;</font></td></tr>
+<tr><td bgcolor="#99cc99">&nbsp;</td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;msgout.serial (nbaes);</font></td></tr>
+<tr><td bgcolor="#99cc99">&nbsp;</td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;msgout.serial (aes-&gt;Id, aes-&gt;ServerAlias, aes-&gt;ServerAddr, aes-&gt;Connected);</font></td></tr>
+<tr><td bgcolor="#99cc99">&nbsp;</td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;CNetManager::send (&quot;AS&quot;, msgout, 0);</font></td></tr>
+<tr><td bgcolor="#99cc99">&nbsp;</td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp;}</font></td></tr>
+<tr><td bgcolor="#99cc99">&nbsp;</td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp;</font></td></tr>
+<tr><td bgcolor="#99cc99">&nbsp;</td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp;static void cbLog (CMessage&amp; msgin, TSockId from, CCallbackNetBase &amp;netbase)</font></td></tr>
+<tr><td bgcolor="#99cc99">&nbsp;</td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp;{</font></td></tr>
+<tr><td bgcolor="#99cc99">&nbsp;</td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// received an answer for a command, give it to all admin client</font></td></tr>
+<tr><td bgcolor="#99cc99">&nbsp;</td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp;</font></td></tr>
+<tr><td bgcolor="#99cc99">&nbsp;</td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// broadcast the message to the admin service</font></td></tr>
+<tr><td bgcolor="#99cc99">&nbsp;</td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;CMessage msgout (CNetManager::getSIDA (&quot;AS&quot;), &quot;LOG&quot;);</font></td></tr>
+<tr><td bgcolor="#99cc99">&nbsp;</td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;string log;</font></td></tr>
+<tr><td bgcolor="#99cc99">&nbsp;</td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;msgin.serial (log);</font></td></tr>
+<tr><td bgcolor="#99cc99">&nbsp;</td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;msgout.serial (log);</font></td></tr>
+<tr><td bgcolor="#99cc99">&nbsp;</td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;CNetManager::send (&quot;AS&quot;, msgout, 0);</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp;}</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp;}</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp;</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp;</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp;</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp;</font></td></tr>
+<tr bgcolor="#dddddd"><td width="50%"><table width="100%" border=1 cellpadding=5><tr><td><b>Line 180</b>&nbsp;<font size=-1></font></td></tr></table></td><td width="50%"><table width="100%" border=1 cellpadding=5><tr><td><b>Line 535</b>&nbsp;<font size=-1></font></td></tr></table></td>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp;{</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp;{</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{ &quot;ESCR&quot;, cbExecuteSystemCommandResult },</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{ &quot;ESCR&quot;, cbExecuteSystemCommandResult },</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp;</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp;</font></td></tr>
+<tr><td bgcolor="#cccccc">&nbsp;</td><td bgcolor="#ccccff"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{ &quot;SL&quot;, cbServiceList },</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{ &quot;SID&quot;, cbServiceIdentification },</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{ &quot;SID&quot;, cbServiceIdentification },</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{ &quot;SR&quot;, cbServiceReady },</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{ &quot;SR&quot;, cbServiceReady },</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{ &quot;SC&quot;, cbServiceConnection },</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{ &quot;SC&quot;, cbServiceConnection },</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{ &quot;SD&quot;, cbServiceDisconnection },</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{ &quot;SD&quot;, cbServiceDisconnection },</font></td></tr>
+<tr><td bgcolor="#cccccc">&nbsp;</td><td bgcolor="#ccccff"><font face="Helvetica,Arial" size="-1">&nbsp;</font></td></tr>
+<tr><td bgcolor="#cccccc">&nbsp;</td><td bgcolor="#ccccff"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{ &quot;SAL&quot;, cbServiceAliasList },</font></td></tr>
+<tr><td bgcolor="#cccccc">&nbsp;</td><td bgcolor="#ccccff"><font face="Helvetica,Arial" size="-1">&nbsp;</font></td></tr>
+<tr><td bgcolor="#cccccc">&nbsp;</td><td bgcolor="#ccccff"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{ &quot;LOG&quot;, cbLog },</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp;};</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp;};</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp;</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp;</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp;</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp;</font></td></tr>
+<tr bgcolor="#dddddd"><td width="50%"><table width="100%" border=1 cellpadding=5><tr><td><b>Line 193</b>&nbsp;<font size=-1></font></td></tr></table></td><td width="50%"><table width="100%" border=1 cellpadding=5><tr><td><b>Line 553</b>&nbsp;<font size=-1></font></td></tr></table></td>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp;////////////////////////////////////////////////////////////////////////////////////////////////////////</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp;////////////////////////////////////////////////////////////////////////////////////////////////////////</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp;////////////////////////////////////////////////////////////////////////////////////////////////////////</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp;////////////////////////////////////////////////////////////////////////////////////////////////////////</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp;</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp;</font></td></tr>
+<tr><td bgcolor="#cccccc">&nbsp;</td><td bgcolor="#ccccff"><font face="Helvetica,Arial" size="-1">&nbsp;void errorMessage(string message, TSockId from, CCallbackNetBase &amp;netbase)</font></td></tr>
+<tr><td bgcolor="#cccccc">&nbsp;</td><td bgcolor="#ccccff"><font face="Helvetica,Arial" size="-1">&nbsp;{</font></td></tr>
+<tr><td bgcolor="#cccccc">&nbsp;</td><td bgcolor="#ccccff"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;CMessage msgout (netbase.getSIDA (), &quot;ERR&quot;);</font></td></tr>
+<tr><td bgcolor="#cccccc">&nbsp;</td><td bgcolor="#ccccff"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;msgout.serial (message);</font></td></tr>
+<tr><td bgcolor="#cccccc">&nbsp;</td><td bgcolor="#ccccff"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;netbase.send (msgout, from);</font></td></tr>
+<tr><td bgcolor="#cccccc">&nbsp;</td><td bgcolor="#ccccff"><font face="Helvetica,Arial" size="-1">&nbsp;}</font></td></tr>
+<tr><td bgcolor="#cccccc">&nbsp;</td><td bgcolor="#ccccff"><font face="Helvetica,Arial" size="-1">&nbsp;</font></td></tr>
+<tr><td bgcolor="#cccccc">&nbsp;</td><td bgcolor="#ccccff"><font face="Helvetica,Arial" size="-1">&nbsp;//</font></td></tr>
+<tr><td bgcolor="#cccccc">&nbsp;</td><td bgcolor="#ccccff"><font face="Helvetica,Arial" size="-1">&nbsp;// A new admin client is connected.</font></td></tr>
+<tr><td bgcolor="#cccccc">&nbsp;</td><td bgcolor="#ccccff"><font face="Helvetica,Arial" size="-1">&nbsp;//</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp;void clientConnection (const string &amp;serviceName, TSockId from, void *arg)</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp;void clientConnection (const string &amp;serviceName, TSockId from, void *arg)</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp;{</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp;{</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// new client, send him all out info about services</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// new client, send him all out info about services</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp;</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp;</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;nlinfo (&quot;client %s is connected&quot;, from-&gt;asString().c_str());</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;nlinfo (&quot;client %s is connected&quot;, from-&gt;asString().c_str());</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;</font></td></tr>
+<tr><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;CMessage msgout (CNetManager::getSIDA (&quot;AESAS&quot;), &quot;SL&quot;);</font></td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;//</font></td></tr>
+<tr><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;uint32 size = (uint32)Services.size();</font></td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// send the list of all the aes</font></td></tr>
+<tr><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;msgout.serial (size);</font></td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;//</font></td></tr>
+<tr><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;for (sit it = Services.begin(); it != Services.end(); it++)</font></td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp;</font></td></tr>
+<tr><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{</font></td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;CMessage msgout2 (CNetManager::getSIDA (&quot;AS&quot;), &quot;AES_LIST&quot;);</font></td></tr>
+<tr><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;msgout.serial ((*it).AESId);</font></td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;AESIT aesit;</font></td></tr>
+<tr><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;msgout.serial ((*it).SId);</font></td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;uint32 nbaes = (uint32)AdminExecutorServices.size();</font></td></tr>
+<tr><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;msgout.serial ((*it).ShortName);</font></td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;msgout2.serial (nbaes);</font></td></tr>
+<tr><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;msgout.serial ((*it).LongName);</font></td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;for (aesit = AdminExecutorServices.begin(); aesit != AdminExecutorServices.end(); aesit++)</font></td></tr>
+<tr><td bgcolor="#99cc99">&nbsp;</td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{</font></td></tr>
+<tr><td bgcolor="#99cc99">&nbsp;</td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// send info about the AES</font></td></tr>
+<tr><td bgcolor="#99cc99">&nbsp;</td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp;</font></td></tr>
+<tr><td bgcolor="#99cc99">&nbsp;</td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;msgout2.serial ((*aesit).Id, (*aesit).ServerAlias, (*aesit).ServerAddr, (*aesit).Connected);</font></td></tr>
+<tr><td bgcolor="#99cc99">&nbsp;</td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}</font></td></tr>
+<tr><td bgcolor="#99cc99">&nbsp;</td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;CNetManager::send (&quot;AS&quot;, msgout2, from);</font></td></tr>
+<tr><td bgcolor="#99cc99">&nbsp;</td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp;</font></td></tr>
+<tr><td bgcolor="#99cc99">&nbsp;</td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;//</font></td></tr>
+<tr><td bgcolor="#99cc99">&nbsp;</td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// send the list of all services</font></td></tr>
+<tr><td bgcolor="#99cc99">&nbsp;</td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;//</font></td></tr>
+<tr><td bgcolor="#99cc99">&nbsp;</td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp;</font></td></tr>
+<tr><td bgcolor="#99cc99">&nbsp;</td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;CMessage msgout (CNetManager::getSIDA (&quot;AS&quot;), &quot;SERVICE_LIST&quot;);</font></td></tr>
+<tr><td bgcolor="#99cc99">&nbsp;</td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;nbaes = (uint32)AdminExecutorServices.size();</font></td></tr>
+<tr><td bgcolor="#99cc99">&nbsp;</td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;msgout.serial (nbaes);</font></td></tr>
+<tr><td bgcolor="#99cc99">&nbsp;</td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;for (aesit = AdminExecutorServices.begin(); aesit != AdminExecutorServices.end(); aesit++)</font></td></tr>
+<tr><td bgcolor="#99cc99">&nbsp;</td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{</font></td></tr>
+<tr><td bgcolor="#99cc99">&nbsp;</td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;msgout.serial ((*aesit).Id);</font></td></tr>
+<tr><td bgcolor="#99cc99">&nbsp;</td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp;</font></td></tr>
+<tr><td bgcolor="#99cc99">&nbsp;</td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;uint32 nbs = (uint32)(*aesit).Services.size();</font></td></tr>
+<tr><td bgcolor="#99cc99">&nbsp;</td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;msgout.serial (nbs);</font></td></tr>
+<tr><td bgcolor="#99cc99">&nbsp;</td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp;</font></td></tr>
+<tr><td bgcolor="#99cc99">&nbsp;</td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;for (SIT sit = (*aesit).Services.begin(); sit != (*aesit).Services.end(); sit++)</font></td></tr>
+<tr><td bgcolor="#99cc99">&nbsp;</td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{</font></td></tr>
+<tr><td bgcolor="#99cc99">&nbsp;</td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// send info about services of the AES</font></td></tr>
+<tr><td bgcolor="#99cc99">&nbsp;</td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;</font></td></tr>
+<tr><td bgcolor="#99cc99">&nbsp;</td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;msgout.serial ((*sit).Id, (*sit).AliasName, (*sit).ShortName, (*sit).LongName);</font></td></tr>
+<tr><td bgcolor="#99cc99">&nbsp;</td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;msgout.serial ((*sit).Ready, (*sit).Connected, (*sit).InConfig);</font></td></tr>
+<tr><td bgcolor="#99cc99">&nbsp;</td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;CNetManager::send (&quot;AS&quot;, msgout, from);</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;CNetManager::send (&quot;AS&quot;, msgout, from);</font></td></tr>
+<tr><td bgcolor="#cccccc">&nbsp;</td><td bgcolor="#ccccff"><font face="Helvetica,Arial" size="-1">&nbsp;</font></td></tr>
+<tr><td bgcolor="#cccccc">&nbsp;</td><td bgcolor="#ccccff"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;//</font></td></tr>
+<tr><td bgcolor="#cccccc">&nbsp;</td><td bgcolor="#ccccff"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// send service alias list</font></td></tr>
+<tr><td bgcolor="#cccccc">&nbsp;</td><td bgcolor="#ccccff"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;//</font></td></tr>
+<tr><td bgcolor="#cccccc">&nbsp;</td><td bgcolor="#ccccff"><font face="Helvetica,Arial" size="-1">&nbsp;</font></td></tr>
+<tr><td bgcolor="#cccccc">&nbsp;</td><td bgcolor="#ccccff"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;for (aesit = AdminExecutorServices.begin(); aesit != AdminExecutorServices.end(); aesit++)</font></td></tr>
+<tr><td bgcolor="#cccccc">&nbsp;</td><td bgcolor="#ccccff"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{</font></td></tr>
+<tr><td bgcolor="#cccccc">&nbsp;</td><td bgcolor="#ccccff"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;CMessage msgout2 (CNetManager::getSIDA (&quot;AS&quot;), &quot;SAL&quot;);</font></td></tr>
+<tr><td bgcolor="#cccccc">&nbsp;</td><td bgcolor="#ccccff"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;msgout2.serial ((*aesit).Id);</font></td></tr>
+<tr><td bgcolor="#cccccc">&nbsp;</td><td bgcolor="#ccccff"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;msgout2.serialCont ((*aesit).ServiceAliasList);</font></td></tr>
+<tr><td bgcolor="#cccccc">&nbsp;</td><td bgcolor="#ccccff"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;CNetManager::send (&quot;AS&quot;, msgout2, from);</font></td></tr>
+<tr><td bgcolor="#cccccc">&nbsp;</td><td bgcolor="#ccccff"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}</font></td></tr>
+<tr><td bgcolor="#cccccc">&nbsp;</td><td bgcolor="#ccccff"><font face="Helvetica,Arial" size="-1">&nbsp;}</font></td></tr>
+<tr><td bgcolor="#cccccc">&nbsp;</td><td bgcolor="#ccccff"><font face="Helvetica,Arial" size="-1">&nbsp;</font></td></tr>
+<tr><td bgcolor="#cccccc">&nbsp;</td><td bgcolor="#ccccff"><font face="Helvetica,Arial" size="-1">&nbsp;</font></td></tr>
+<tr><td bgcolor="#cccccc">&nbsp;</td><td bgcolor="#ccccff"><font face="Helvetica,Arial" size="-1">&nbsp;static void cbExecuteSystemCommand (CMessage&amp; msgin, TSockId from, CCallbackNetBase &amp;netbase)</font></td></tr>
+<tr><td bgcolor="#cccccc">&nbsp;</td><td bgcolor="#ccccff"><font face="Helvetica,Arial" size="-1">&nbsp;{</font></td></tr>
+<tr><td bgcolor="#cccccc">&nbsp;</td><td bgcolor="#ccccff"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;string command;</font></td></tr>
+<tr><td bgcolor="#cccccc">&nbsp;</td><td bgcolor="#ccccff"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;uint32 aesid;</font></td></tr>
+<tr><td bgcolor="#cccccc">&nbsp;</td><td bgcolor="#ccccff"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;msgin.serial (aesid);</font></td></tr>
+<tr><td bgcolor="#cccccc">&nbsp;</td><td bgcolor="#ccccff"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;msgin.serial (command);</font></td></tr>
+<tr><td bgcolor="#cccccc">&nbsp;</td><td bgcolor="#ccccff"><font face="Helvetica,Arial" size="-1">&nbsp;</font></td></tr>
+<tr><td bgcolor="#cccccc">&nbsp;</td><td bgcolor="#ccccff"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;AESIT aesit = findAdminExecutorService (aesid, false);</font></td></tr>
+<tr><td bgcolor="#cccccc">&nbsp;</td><td bgcolor="#ccccff"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;if (aesit == AdminExecutorServices.end())</font></td></tr>
+<tr><td bgcolor="#cccccc">&nbsp;</td><td bgcolor="#ccccff"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{</font></td></tr>
+<tr><td bgcolor="#cccccc">&nbsp;</td><td bgcolor="#ccccff"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// don't find the aes, send an error message</font></td></tr>
+<tr><td bgcolor="#cccccc">&nbsp;</td><td bgcolor="#ccccff"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;errorMessage (&quot;couldn't execute command, as didn't find the aes&quot;, from, netbase);</font></td></tr>
+<tr><td bgcolor="#cccccc">&nbsp;</td><td bgcolor="#ccccff"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;return;</font></td></tr>
+<tr><td bgcolor="#cccccc">&nbsp;</td><td bgcolor="#ccccff"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}</font></td></tr>
+<tr><td bgcolor="#cccccc">&nbsp;</td><td bgcolor="#ccccff"><font face="Helvetica,Arial" size="-1">&nbsp;</font></td></tr>
+<tr><td bgcolor="#cccccc">&nbsp;</td><td bgcolor="#ccccff"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// send the resquest to the AES</font></td></tr>
+<tr><td bgcolor="#cccccc">&nbsp;</td><td bgcolor="#ccccff"><font face="Helvetica,Arial" size="-1">&nbsp;</font></td></tr>
+<tr><td bgcolor="#cccccc">&nbsp;</td><td bgcolor="#ccccff"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;CMessage msgout (CNetManager::getSIDA((*aesit).ServerAlias), &quot;SYS&quot;);</font></td></tr>
+<tr><td bgcolor="#cccccc">&nbsp;</td><td bgcolor="#ccccff"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;msgout.serial (command);</font></td></tr>
+<tr><td bgcolor="#cccccc">&nbsp;</td><td bgcolor="#ccccff"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;CNetManager::send ((*aesit).ServerAlias, msgout);</font></td></tr>
+<tr><td bgcolor="#cccccc">&nbsp;</td><td bgcolor="#ccccff"><font face="Helvetica,Arial" size="-1">&nbsp;}</font></td></tr>
+<tr><td bgcolor="#cccccc">&nbsp;</td><td bgcolor="#ccccff"><font face="Helvetica,Arial" size="-1">&nbsp;</font></td></tr>
+<tr><td bgcolor="#cccccc">&nbsp;</td><td bgcolor="#ccccff"><font face="Helvetica,Arial" size="-1">&nbsp;</font></td></tr>
+<tr><td bgcolor="#cccccc">&nbsp;</td><td bgcolor="#ccccff"><font face="Helvetica,Arial" size="-1">&nbsp;static void cbStartService (CMessage&amp; msgin, TSockId from, CCallbackNetBase &amp;netbase)</font></td></tr>
+<tr><td bgcolor="#cccccc">&nbsp;</td><td bgcolor="#ccccff"><font face="Helvetica,Arial" size="-1">&nbsp;{</font></td></tr>
+<tr><td bgcolor="#cccccc">&nbsp;</td><td bgcolor="#ccccff"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;string serviceAlias;</font></td></tr>
+<tr><td bgcolor="#cccccc">&nbsp;</td><td bgcolor="#ccccff"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;uint32 aesid;</font></td></tr>
+<tr><td bgcolor="#cccccc">&nbsp;</td><td bgcolor="#ccccff"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;msgin.serial (aesid);</font></td></tr>
+<tr><td bgcolor="#cccccc">&nbsp;</td><td bgcolor="#ccccff"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;msgin.serial (serviceAlias);</font></td></tr>
+<tr><td bgcolor="#cccccc">&nbsp;</td><td bgcolor="#ccccff"><font face="Helvetica,Arial" size="-1">&nbsp;</font></td></tr>
+<tr><td bgcolor="#cccccc">&nbsp;</td><td bgcolor="#ccccff"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;AESIT aesit = findAdminExecutorService (aesid, false);</font></td></tr>
+<tr><td bgcolor="#cccccc">&nbsp;</td><td bgcolor="#ccccff"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;if (aesit == AdminExecutorServices.end())</font></td></tr>
+<tr><td bgcolor="#cccccc">&nbsp;</td><td bgcolor="#ccccff"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{</font></td></tr>
+<tr><td bgcolor="#cccccc">&nbsp;</td><td bgcolor="#ccccff"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// don't find the aes, send an error message</font></td></tr>
+<tr><td bgcolor="#cccccc">&nbsp;</td><td bgcolor="#ccccff"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;errorMessage (&quot;couldn't start service, as didn't find the aes&quot;, from, netbase);</font></td></tr>
+<tr><td bgcolor="#cccccc">&nbsp;</td><td bgcolor="#ccccff"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;return;</font></td></tr>
+<tr><td bgcolor="#cccccc">&nbsp;</td><td bgcolor="#ccccff"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}</font></td></tr>
+<tr><td bgcolor="#cccccc">&nbsp;</td><td bgcolor="#ccccff"><font face="Helvetica,Arial" size="-1">&nbsp;</font></td></tr>
+<tr><td bgcolor="#cccccc">&nbsp;</td><td bgcolor="#ccccff"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// send the resquest to the AES</font></td></tr>
+<tr><td bgcolor="#cccccc">&nbsp;</td><td bgcolor="#ccccff"><font face="Helvetica,Arial" size="-1">&nbsp;</font></td></tr>
+<tr><td bgcolor="#cccccc">&nbsp;</td><td bgcolor="#ccccff"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;CMessage msgout (CNetManager::getSIDA((*aesit).ServerAlias), &quot;STARTS&quot;);</font></td></tr>
+<tr><td bgcolor="#cccccc">&nbsp;</td><td bgcolor="#ccccff"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;msgout.serial (serviceAlias);</font></td></tr>
+<tr><td bgcolor="#cccccc">&nbsp;</td><td bgcolor="#ccccff"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;CNetManager::send ((*aesit).ServerAlias, msgout);</font></td></tr>
+<tr><td bgcolor="#cccccc">&nbsp;</td><td bgcolor="#ccccff"><font face="Helvetica,Arial" size="-1">&nbsp;}</font></td></tr>
+<tr><td bgcolor="#cccccc">&nbsp;</td><td bgcolor="#ccccff"><font face="Helvetica,Arial" size="-1">&nbsp;</font></td></tr>
+<tr><td bgcolor="#cccccc">&nbsp;</td><td bgcolor="#ccccff"><font face="Helvetica,Arial" size="-1">&nbsp;static void cbStopService (CMessage&amp; msgin, TSockId from, CCallbackNetBase &amp;netbase)</font></td></tr>
+<tr><td bgcolor="#cccccc">&nbsp;</td><td bgcolor="#ccccff"><font face="Helvetica,Arial" size="-1">&nbsp;{</font></td></tr>
+<tr><td bgcolor="#cccccc">&nbsp;</td><td bgcolor="#ccccff"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;uint32 aesid, sid;</font></td></tr>
+<tr><td bgcolor="#cccccc">&nbsp;</td><td bgcolor="#ccccff"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;msgin.serial (aesid);</font></td></tr>
+<tr><td bgcolor="#cccccc">&nbsp;</td><td bgcolor="#ccccff"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;msgin.serial (sid);</font></td></tr>
+<tr><td bgcolor="#cccccc">&nbsp;</td><td bgcolor="#ccccff"><font face="Helvetica,Arial" size="-1">&nbsp;</font></td></tr>
+<tr><td bgcolor="#cccccc">&nbsp;</td><td bgcolor="#ccccff"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;AESIT aesit = findAdminExecutorService (aesid, false);</font></td></tr>
+<tr><td bgcolor="#cccccc">&nbsp;</td><td bgcolor="#ccccff"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;if (aesit == AdminExecutorServices.end())</font></td></tr>
+<tr><td bgcolor="#cccccc">&nbsp;</td><td bgcolor="#ccccff"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{</font></td></tr>
+<tr><td bgcolor="#cccccc">&nbsp;</td><td bgcolor="#ccccff"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;errorMessage (&quot;couldn't stop service, as didn't find the aes&quot;, from, netbase);</font></td></tr>
+<tr><td bgcolor="#cccccc">&nbsp;</td><td bgcolor="#ccccff"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// don't find the aes, send an error message</font></td></tr>
+<tr><td bgcolor="#cccccc">&nbsp;</td><td bgcolor="#ccccff"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;return;</font></td></tr>
+<tr><td bgcolor="#cccccc">&nbsp;</td><td bgcolor="#ccccff"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}</font></td></tr>
+<tr><td bgcolor="#cccccc">&nbsp;</td><td bgcolor="#ccccff"><font face="Helvetica,Arial" size="-1">&nbsp;</font></td></tr>
+<tr><td bgcolor="#cccccc">&nbsp;</td><td bgcolor="#ccccff"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;SIT sit = (*aesit).findService (sid, false);</font></td></tr>
+<tr><td bgcolor="#cccccc">&nbsp;</td><td bgcolor="#ccccff"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;if (sit == (*aesit).Services.end())</font></td></tr>
+<tr><td bgcolor="#cccccc">&nbsp;</td><td bgcolor="#ccccff"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{</font></td></tr>
+<tr><td bgcolor="#cccccc">&nbsp;</td><td bgcolor="#ccccff"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// don't find the s, send an error message</font></td></tr>
+<tr><td bgcolor="#cccccc">&nbsp;</td><td bgcolor="#ccccff"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;errorMessage (&quot;couldn't stop service, as didn't find the service&quot;, from, netbase);</font></td></tr>
+<tr><td bgcolor="#cccccc">&nbsp;</td><td bgcolor="#ccccff"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;return;</font></td></tr>
+<tr><td bgcolor="#cccccc">&nbsp;</td><td bgcolor="#ccccff"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}</font></td></tr>
+<tr><td bgcolor="#cccccc">&nbsp;</td><td bgcolor="#ccccff"><font face="Helvetica,Arial" size="-1">&nbsp;</font></td></tr>
+<tr><td bgcolor="#cccccc">&nbsp;</td><td bgcolor="#ccccff"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// send the resquest to the AES</font></td></tr>
+<tr><td bgcolor="#cccccc">&nbsp;</td><td bgcolor="#ccccff"><font face="Helvetica,Arial" size="-1">&nbsp;</font></td></tr>
+<tr><td bgcolor="#cccccc">&nbsp;</td><td bgcolor="#ccccff"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;CMessage msgout (CNetManager::getSIDA((*aesit).ServerAlias), &quot;STOPS&quot;);</font></td></tr>
+<tr><td bgcolor="#cccccc">&nbsp;</td><td bgcolor="#ccccff"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;msgout.serial (sid);</font></td></tr>
+<tr><td bgcolor="#cccccc">&nbsp;</td><td bgcolor="#ccccff"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;CNetManager::send ((*aesit).ServerAlias, msgout);</font></td></tr>
+<tr><td bgcolor="#cccccc">&nbsp;</td><td bgcolor="#ccccff"><font face="Helvetica,Arial" size="-1">&nbsp;}</font></td></tr>
+<tr><td bgcolor="#cccccc">&nbsp;</td><td bgcolor="#ccccff"><font face="Helvetica,Arial" size="-1">&nbsp;</font></td></tr>
+<tr><td bgcolor="#cccccc">&nbsp;</td><td bgcolor="#ccccff"><font face="Helvetica,Arial" size="-1">&nbsp;static void cbExecCommand (CMessage&amp; msgin, TSockId from, CCallbackNetBase &amp;netbase)</font></td></tr>
+<tr><td bgcolor="#cccccc">&nbsp;</td><td bgcolor="#ccccff"><font face="Helvetica,Arial" size="-1">&nbsp;{</font></td></tr>
+<tr><td bgcolor="#cccccc">&nbsp;</td><td bgcolor="#ccccff"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;uint32 aesid, sid;</font></td></tr>
+<tr><td bgcolor="#cccccc">&nbsp;</td><td bgcolor="#ccccff"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;string command;</font></td></tr>
+<tr><td bgcolor="#cccccc">&nbsp;</td><td bgcolor="#ccccff"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;msgin.serial (aesid);</font></td></tr>
+<tr><td bgcolor="#cccccc">&nbsp;</td><td bgcolor="#ccccff"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;msgin.serial (sid);</font></td></tr>
+<tr><td bgcolor="#cccccc">&nbsp;</td><td bgcolor="#ccccff"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;msgin.serial (command);</font></td></tr>
+<tr><td bgcolor="#cccccc">&nbsp;</td><td bgcolor="#ccccff"><font face="Helvetica,Arial" size="-1">&nbsp;</font></td></tr>
+<tr><td bgcolor="#cccccc">&nbsp;</td><td bgcolor="#ccccff"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;AESIT aesit = findAdminExecutorService (aesid, false);</font></td></tr>
+<tr><td bgcolor="#cccccc">&nbsp;</td><td bgcolor="#ccccff"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;if (aesit == AdminExecutorServices.end())</font></td></tr>
+<tr><td bgcolor="#cccccc">&nbsp;</td><td bgcolor="#ccccff"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{</font></td></tr>
+<tr><td bgcolor="#cccccc">&nbsp;</td><td bgcolor="#ccccff"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;errorMessage (&quot;couldn't stop service, as didn't find the aes&quot;, from, netbase);</font></td></tr>
+<tr><td bgcolor="#cccccc">&nbsp;</td><td bgcolor="#ccccff"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// don't find the aes, send an error message</font></td></tr>
+<tr><td bgcolor="#cccccc">&nbsp;</td><td bgcolor="#ccccff"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;return;</font></td></tr>
+<tr><td bgcolor="#cccccc">&nbsp;</td><td bgcolor="#ccccff"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}</font></td></tr>
+<tr><td bgcolor="#cccccc">&nbsp;</td><td bgcolor="#ccccff"><font face="Helvetica,Arial" size="-1">&nbsp;</font></td></tr>
+<tr><td bgcolor="#cccccc">&nbsp;</td><td bgcolor="#ccccff"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;SIT sit = (*aesit).findService (sid, false);</font></td></tr>
+<tr><td bgcolor="#cccccc">&nbsp;</td><td bgcolor="#ccccff"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;if (sit == (*aesit).Services.end())</font></td></tr>
+<tr><td bgcolor="#cccccc">&nbsp;</td><td bgcolor="#ccccff"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{</font></td></tr>
+<tr><td bgcolor="#cccccc">&nbsp;</td><td bgcolor="#ccccff"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// don't find the s, send an error message</font></td></tr>
+<tr><td bgcolor="#cccccc">&nbsp;</td><td bgcolor="#ccccff"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;errorMessage (&quot;couldn't stop service, as didn't find the service&quot;, from, netbase);</font></td></tr>
+<tr><td bgcolor="#cccccc">&nbsp;</td><td bgcolor="#ccccff"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;return;</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp;}</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp;}</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp;</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp;</font></td></tr>
+<tr><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp;TCallbackItem ASCallbackArray[] =</font></td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// send the resquest to the AES</font></td></tr>
+<tr><td bgcolor="#99cc99">&nbsp;</td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp;</font></td></tr>
+<tr><td bgcolor="#99cc99">&nbsp;</td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;CMessage msgout (CNetManager::getSIDA((*aesit).ServerAlias), &quot;EXEC_COMMAND&quot;);</font></td></tr>
+<tr><td bgcolor="#99cc99">&nbsp;</td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;msgout.serial (sid);</font></td></tr>
+<tr><td bgcolor="#99cc99">&nbsp;</td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;msgout.serial (command);</font></td></tr>
+<tr><td bgcolor="#99cc99">&nbsp;</td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;CNetManager::send ((*aesit).ServerAlias, msgout);</font></td></tr>
+<tr><td bgcolor="#99cc99">&nbsp;</td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp;}</font></td></tr>
+<tr><td bgcolor="#99cc99">&nbsp;</td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp;</font></td></tr>
+<tr><td bgcolor="#99cc99">&nbsp;</td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp;static void cbStartAllServices (CMessage&amp; msgin, TSockId from, CCallbackNetBase &amp;netbase)</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp;{</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp;{</font></td></tr>
+<tr><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{ &quot;&quot;, NULL },</font></td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;initStartAllServices ();</font></td></tr>
+<tr><td bgcolor="#99cc99">&nbsp;</td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp;}</font></td></tr>
+<tr><td bgcolor="#99cc99">&nbsp;</td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp;</font></td></tr>
+<tr><td bgcolor="#99cc99">&nbsp;</td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp;static void cbStopAllServices (CMessage&amp; msgin, TSockId from, CCallbackNetBase &amp;netbase)</font></td></tr>
+<tr><td bgcolor="#99cc99">&nbsp;</td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp;{</font></td></tr>
+<tr><td bgcolor="#99cc99">&nbsp;</td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;for (AESIT aesit = AdminExecutorServices.begin(); aesit != AdminExecutorServices.end(); aesit++)</font></td></tr>
+<tr><td bgcolor="#99cc99">&nbsp;</td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{</font></td></tr>
+<tr><td bgcolor="#99cc99">&nbsp;</td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;for (SIT sit = (*aesit).Services.begin(); sit != (*aesit).Services.end(); sit++)</font></td></tr>
+<tr><td bgcolor="#99cc99">&nbsp;</td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{</font></td></tr>
+<tr><td bgcolor="#99cc99">&nbsp;</td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;if ((*sit).Connected)</font></td></tr>
+<tr><td bgcolor="#99cc99">&nbsp;</td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{</font></td></tr>
+<tr><td bgcolor="#99cc99">&nbsp;</td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;CMessage msgout (CNetManager::getSIDA((*aesit).ServerAlias), &quot;STOPS&quot;);</font></td></tr>
+<tr><td bgcolor="#99cc99">&nbsp;</td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;msgout.serial ((*sit).Id);</font></td></tr>
+<tr><td bgcolor="#99cc99">&nbsp;</td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;CNetManager::send ((*aesit).ServerAlias, msgout);</font></td></tr>
+<tr><td bgcolor="#99cc99">&nbsp;</td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}</font></td></tr>
+<tr><td bgcolor="#99cc99">&nbsp;</td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}</font></td></tr>
+<tr><td bgcolor="#99cc99">&nbsp;</td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}</font></td></tr>
+<tr><td bgcolor="#99cc99">&nbsp;</td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp;}</font></td></tr>
+<tr><td bgcolor="#99cc99">&nbsp;</td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp;</font></td></tr>
+<tr><td bgcolor="#99cc99">&nbsp;</td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp;TCallbackItem ClientCallbackArray[] =</font></td></tr>
+<tr><td bgcolor="#99cc99">&nbsp;</td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp;{</font></td></tr>
+<tr><td bgcolor="#99cc99">&nbsp;</td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{ &quot;SYS&quot;, cbExecuteSystemCommand },</font></td></tr>
+<tr><td bgcolor="#99cc99">&nbsp;</td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{ &quot;STARTS&quot;, cbStartService },</font></td></tr>
+<tr><td bgcolor="#99cc99">&nbsp;</td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{ &quot;STOPS&quot;, cbStopService },</font></td></tr>
+<tr><td bgcolor="#99cc99">&nbsp;</td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{ &quot;EXEC_COMMAND&quot;, cbExecCommand },</font></td></tr>
+<tr><td bgcolor="#99cc99">&nbsp;</td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{ &quot;START_ALL_SERVICES&quot;, cbStartAllServices },</font></td></tr>
+<tr><td bgcolor="#99cc99">&nbsp;</td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{ &quot;STOP_ALL_SERVICES&quot;, cbStopAllServices },</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp;};</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp;};</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp;</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp;</font></td></tr>
+<tr><td bgcolor="#cccccc">&nbsp;</td><td bgcolor="#ccccff"><font face="Helvetica,Arial" size="-1">&nbsp;////////////////////////////////////////////////////////////////////////////////////////////////////////</font></td></tr>
+<tr><td bgcolor="#cccccc">&nbsp;</td><td bgcolor="#ccccff"><font face="Helvetica,Arial" size="-1">&nbsp;////////////////////////////////////////////////////////////////////////////////////////////////////////</font></td></tr>
+<tr><td bgcolor="#cccccc">&nbsp;</td><td bgcolor="#ccccff"><font face="Helvetica,Arial" size="-1">&nbsp;////////////////// SERVICE IMPLEMENTATION //////////////////////////////////////////////////////////////</font></td></tr>
+<tr><td bgcolor="#cccccc">&nbsp;</td><td bgcolor="#ccccff"><font face="Helvetica,Arial" size="-1">&nbsp;////////////////////////////////////////////////////////////////////////////////////////////////////////</font></td></tr>
+<tr><td bgcolor="#cccccc">&nbsp;</td><td bgcolor="#ccccff"><font face="Helvetica,Arial" size="-1">&nbsp;////////////////////////////////////////////////////////////////////////////////////////////////////////</font></td></tr>
+<tr><td bgcolor="#cccccc">&nbsp;</td><td bgcolor="#ccccff"><font face="Helvetica,Arial" size="-1">&nbsp;</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp;class CAdminService : public IService</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp;class CAdminService : public IService</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp;{</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp;{</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp;public:</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp;public:</font></td></tr>
+<tr bgcolor="#dddddd"><td width="50%"><table width="100%" border=1 cellpadding=5><tr><td><b>Line 224</b>&nbsp;<font size=-1></font></td></tr></table></td><td width="50%"><table width="100%" border=1 cellpadding=5><tr><td><b>Line 773</b>&nbsp;<font size=-1></font></td></tr></table></td>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;/// Init the service, load the universal time.</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;/// Init the service, load the universal time.</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;void &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;init ()</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;void &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;init ()</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{</font></td></tr>
+<tr><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;CNetManager::setConnectionCallback (&quot;AS&quot;, clientConnection, NULL);</font></td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp;// &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;DebugLog-&gt;addNegativeFilter (&quot;L0:&quot;);</font></td></tr>
+<tr><td bgcolor="#99cc99">&nbsp;</td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp;// &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;DebugLog-&gt;addNegativeFilter (&quot;L1:&quot;);</font></td></tr>
+<tr><td bgcolor="#99cc99">&nbsp;</td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp;// &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;DebugLog-&gt;addNegativeFilter (&quot;L2:&quot;);</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp;</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp;</font></td></tr>
+<tr><td bgcolor="#ff9999"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// connec to the AES</font></td><td bgcolor="#cccccc">&nbsp;</td></tr>
+<tr><td bgcolor="#ff9999"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;CNetManager::addClient (&quot;AES&quot;, &quot;localhost:49996&quot;);</font></td><td bgcolor="#cccccc">&nbsp;</td></tr>
+<tr><td bgcolor="#ff9999"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;CNetManager::addCallbackArray (&quot;AES&quot;, AESCallbackArray, sizeof (AESCallbackArray)/sizeof(AESCallbackArray[0]));</font></td><td bgcolor="#cccccc">&nbsp;</td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp;</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp;</font></td></tr>
+<tr><td bgcolor="#cccccc">&nbsp;</td><td bgcolor="#ccccff"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;CNetManager::setConnectionCallback (&quot;AS&quot;, clientConnection, NULL);</font></td></tr>
+<tr><td bgcolor="#cccccc">&nbsp;</td><td bgcolor="#ccccff"><font face="Helvetica,Arial" size="-1">&nbsp;</font></td></tr>
+<tr><td bgcolor="#cccccc">&nbsp;</td><td bgcolor="#ccccff"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;//</font></td></tr>
+<tr><td bgcolor="#cccccc">&nbsp;</td><td bgcolor="#ccccff"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// Get the list of AESHosts, add in the structures and create connection to all AES</font></td></tr>
+<tr><td bgcolor="#cccccc">&nbsp;</td><td bgcolor="#ccccff"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;//</font></td></tr>
+<tr><td bgcolor="#cccccc">&nbsp;</td><td bgcolor="#ccccff"><font face="Helvetica,Arial" size="-1">&nbsp;</font></td></tr>
+<tr><td bgcolor="#cccccc">&nbsp;</td><td bgcolor="#ccccff"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;CConfigFile::CVar &amp;host = ConfigFile.getVar (&quot;AESHosts&quot;);</font></td></tr>
+<tr><td bgcolor="#cccccc">&nbsp;</td><td bgcolor="#ccccff"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;for (sint i = 0 ; i &lt; host.size (); i+=2)</font></td></tr>
+<tr><td bgcolor="#cccccc">&nbsp;</td><td bgcolor="#ccccff"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{</font></td></tr>
+<tr><td bgcolor="#cccccc">&nbsp;</td><td bgcolor="#ccccff"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;string serverAlias = host.asString(i);</font></td></tr>
+<tr><td bgcolor="#cccccc">&nbsp;</td><td bgcolor="#ccccff"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;string serverAddr = host.asString(i+1);</font></td></tr>
+<tr><td bgcolor="#cccccc">&nbsp;</td><td bgcolor="#ccccff"><font face="Helvetica,Arial" size="-1">&nbsp;</font></td></tr>
+<tr><td bgcolor="#cccccc">&nbsp;</td><td bgcolor="#ccccff"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// add to the list</font></td></tr>
+<tr><td bgcolor="#cccccc">&nbsp;</td><td bgcolor="#ccccff"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;CAdminExecutorService aes;</font></td></tr>
+<tr><td bgcolor="#cccccc">&nbsp;</td><td bgcolor="#ccccff"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;aes.ServerAlias = serverAlias;</font></td></tr>
+<tr><td bgcolor="#cccccc">&nbsp;</td><td bgcolor="#ccccff"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;aes.ServerAddr = serverAddr;</font></td></tr>
+<tr><td bgcolor="#cccccc">&nbsp;</td><td bgcolor="#ccccff"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;AdminExecutorServices.push_back (aes);</font></td></tr>
+<tr><td bgcolor="#cccccc">&nbsp;</td><td bgcolor="#ccccff"><font face="Helvetica,Arial" size="-1">&nbsp;</font></td></tr>
+<tr><td bgcolor="#cccccc">&nbsp;</td><td bgcolor="#ccccff"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// connect to the AES</font></td></tr>
+<tr><td bgcolor="#cccccc">&nbsp;</td><td bgcolor="#ccccff"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;CNetManager::setConnectionCallback (serverAlias, cbAESConnection, NULL);</font></td></tr>
+<tr><td bgcolor="#cccccc">&nbsp;</td><td bgcolor="#ccccff"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;CNetManager::setDisconnectionCallback (serverAlias, cbAESDisconnection, NULL);</font></td></tr>
+<tr><td bgcolor="#cccccc">&nbsp;</td><td bgcolor="#ccccff"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;CNetManager::addClient (serverAlias, serverAddr+&quot;:49996&quot;);</font></td></tr>
+<tr><td bgcolor="#cccccc">&nbsp;</td><td bgcolor="#ccccff"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;CNetManager::addCallbackArray (serverAlias, AESCallbackArray, sizeof (AESCallbackArray)/sizeof(AESCallbackArray[0]));</font></td></tr>
+<tr><td bgcolor="#cccccc">&nbsp;</td><td bgcolor="#ccccff"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}</font></td></tr>
+<tr><td bgcolor="#cccccc">&nbsp;</td><td bgcolor="#ccccff"><font face="Helvetica,Arial" size="-1">&nbsp;</font></td></tr>
+<tr><td bgcolor="#cccccc">&nbsp;</td><td bgcolor="#ccccff"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;//</font></td></tr>
+<tr><td bgcolor="#cccccc">&nbsp;</td><td bgcolor="#ccccff"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// Get the list of services in the shard</font></td></tr>
+<tr><td bgcolor="#cccccc">&nbsp;</td><td bgcolor="#ccccff"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;//</font></td></tr>
+<tr><td bgcolor="#cccccc">&nbsp;</td><td bgcolor="#ccccff"><font face="Helvetica,Arial" size="-1">&nbsp;</font></td></tr>
+<tr><td bgcolor="#cccccc">&nbsp;</td><td bgcolor="#ccccff"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;CConfigFile::CVar &amp;serv = ConfigFile.getVar (&quot;Services&quot;);</font></td></tr>
+<tr><td bgcolor="#cccccc">&nbsp;</td><td bgcolor="#ccccff"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;for (i = 0 ; i &lt; serv.size (); i+=2)</font></td></tr>
+<tr><td bgcolor="#cccccc">&nbsp;</td><td bgcolor="#ccccff"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{</font></td></tr>
+<tr><td bgcolor="#cccccc">&nbsp;</td><td bgcolor="#ccccff"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;string serverAlias = serv.asString(i);</font></td></tr>
+<tr><td bgcolor="#cccccc">&nbsp;</td><td bgcolor="#ccccff"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;string serviceAlias = serv.asString(i+1);</font></td></tr>
+<tr><td bgcolor="#cccccc">&nbsp;</td><td bgcolor="#ccccff"><font face="Helvetica,Arial" size="-1">&nbsp;</font></td></tr>
+<tr><td bgcolor="#cccccc">&nbsp;</td><td bgcolor="#ccccff"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;AESIT aesit = findAdminExecutorService (serverAlias);</font></td></tr>
+<tr><td bgcolor="#cccccc">&nbsp;</td><td bgcolor="#ccccff"><font face="Helvetica,Arial" size="-1">&nbsp;</font></td></tr>
+<tr><td bgcolor="#cccccc">&nbsp;</td><td bgcolor="#ccccff"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// add new AES in the list</font></td></tr>
+<tr><td bgcolor="#cccccc">&nbsp;</td><td bgcolor="#ccccff"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;CService s;</font></td></tr>
+<tr><td bgcolor="#cccccc">&nbsp;</td><td bgcolor="#ccccff"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;s.AliasName = serviceAlias;</font></td></tr>
+<tr><td bgcolor="#cccccc">&nbsp;</td><td bgcolor="#ccccff"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;s.InConfig = true;</font></td></tr>
+<tr><td bgcolor="#cccccc">&nbsp;</td><td bgcolor="#ccccff"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;(*aesit).Services.push_back (s);</font></td></tr>
+<tr><td bgcolor="#cccccc">&nbsp;</td><td bgcolor="#ccccff"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp;</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp;</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;bool &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;update ()</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;bool &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;update ()</font></td></tr>
+<tr bgcolor="#dddddd"><td width="50%"><table width="100%" border=1 cellpadding=5><tr><td><b>Line 239</b>&nbsp;<font size=-1></font></td></tr></table></td><td width="50%"><table width="100%" border=1 cellpadding=5><tr><td><b>Line 830</b>&nbsp;<font size=-1></font></td></tr></table></td>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp;};</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp;};</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp;</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp;</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp;</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp;</font></td></tr>
+<tr><td bgcolor="#cccccc">&nbsp;</td><td bgcolor="#ccccff"><font face="Helvetica,Arial" size="-1">&nbsp;// AS is a server connection to the admin client</font></td></tr>
+<tr><td bgcolor="#cccccc">&nbsp;</td><td bgcolor="#ccccff"><font face="Helvetica,Arial" size="-1">&nbsp;// AESAS is a client connection to the admin executor</font></td></tr>
+<tr><td bgcolor="#cccccc">&nbsp;</td><td bgcolor="#ccccff"><font face="Helvetica,Arial" size="-1">&nbsp;</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp;/// Naming Service</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp;/// Naming Service</font></td></tr>
+<tr><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp;NLNET_SERVICE_MAIN (CAdminService, &quot;AS&quot;, &quot;admin_service&quot;, 49995, ASCallbackArray);</font></td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp;NLNET_SERVICE_MAIN (CAdminService, &quot;AS&quot;, &quot;admin_service&quot;, 49995, ClientCallbackArray);</font></td></tr>
+</table><br><hr noshade width="100%">
+<table border=0><tr><td><table border=1><tr><td>Legend:<br><table border=0 cellspacing=0 cellpadding=1>
+<tr><td align=center bgcolor="#ff9999">Removed from v.1.1</td><td bgcolor="#cccccc">&nbsp;</td></tr><tr bgcolor="#99ff99"><td align=center colspan=2>changed lines</td></tr><tr><td bgcolor="#cccccc">&nbsp;</td><td align=center bgcolor="#ccccff">Added in v.1.5</td></tr></table></td></tr></table>
+<td><FORM METHOD="GET" ACTION="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cpp.diff">
+<INPUT TYPE=HIDDEN NAME="r1" VALUE="1.5">
+<INPUT TYPE=HIDDEN NAME="r2" VALUE="1.1">
+<SELECT NAME="f" onchange="submit()">
+<OPTION VALUE=h SELECTED>Colored Diff<OPTION VALUE=H>Long Colored Diff<OPTION VALUE=u>Unidiff<OPTION VALUE=c>Context Diff<OPTION VALUE=s>Side by Side</SELECT><INPUT TYPE=SUBMIT VALUE="Show">
+</FORM>
+</td></tr></table> \ No newline at end of file
diff --git a/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cpp.diff?r1=1.5&r2=1.11 b/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cpp.diff?r1=1.5&r2=1.11
new file mode 100644
index 00000000..8684829c
--- /dev/null
+++ b/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cpp.diff?r1=1.5&r2=1.11
@@ -0,0 +1,495 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"><HTML>
+<HEAD><style> A { color:black }</style>
+<!-- hennerik CVSweb $Revision: 1.93 $ -->
+<TITLE>code/nelns/admin_service/admin_service.cpp - diff - 1.11</TITLE></HEAD>
+<BODY BGCOLOR="#eeeeee">
+<table width="100%" border=0 cellspacing=0 cellpadding=1 bgcolor="#aaaaaa"><tr valign=bottom><td><a href="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cpp"><IMG SRC="http://www.nevrax.org/inc/img/picto-up.gif" ALT="[BACK]" BORDER="0" WIDTH="14" HEIGHT="13"></a> <b>Return to <A HREF="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cpp">admin_service.cpp</A>
+ CVS log</b> <IMG SRC="http://www.nevrax.org/inc/img/picto-news.gif" ALT="[TXT]" BORDER="0" WIDTH="13" HEIGHT="15"></td><td align=right><IMG SRC="http://www.nevrax.org/inc/img/picto-dir.gif" ALT="[DIR]" BORDER="0" WIDTH="15" HEIGHT="13"> <b>Up to <a href="/cvs/cvsweb.cgi/">Nevrax</a> / <a href="/cvs/cvsweb.cgi/code/">code</a> / <a href="/cvs/cvsweb.cgi/code/nelns/">nelns</a> / <a href="/cvs/cvsweb.cgi/code/nelns/admin_service/">admin_service</a></b></td></tr></table><h3 align=center>Diff for /code/nelns/admin_service/admin_service.cpp between version 1.5 and 1.11</h3>
+<table border=0 cellspacing=0 cellpadding=0 width="100%">
+<tr bgcolor="#ffffff">
+<th width="50%" valign=TOP>version 1.5, 2001/05/31 16:44:54</th>
+<th width="50%" valign=TOP>version 1.11, 2001/07/10 16:49:53</th>
+<tr bgcolor="#dddddd"><td width="50%"><table width="100%" border=1 cellpadding=5><tr><td><b>Line 30</b>&nbsp;<font size=-1></font></td></tr></table></td><td width="50%"><table width="100%" border=1 cellpadding=5><tr><td><b>Line 30</b>&nbsp;<font size=-1></font></td></tr></table></td>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp;#include &quot;nel/net/service.h&quot;</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp;#include &quot;nel/net/service.h&quot;</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp;#include &quot;nel/misc/debug.h&quot;</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp;#include &quot;nel/misc/debug.h&quot;</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp;#include &quot;nel/misc/config_file.h&quot;</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp;#include &quot;nel/misc/config_file.h&quot;</font></td></tr>
+<tr><td bgcolor="#cccccc">&nbsp;</td><td bgcolor="#ccccff"><font face="Helvetica,Arial" size="-1">&nbsp;#include &quot;nel/misc/command.h&quot;</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp;</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp;</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp;#include &quot;nel/net/net_manager.h&quot;</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp;#include &quot;nel/net/net_manager.h&quot;</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp;</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp;</font></td></tr>
+<tr bgcolor="#dddddd"><td width="50%"><table width="100%" border=1 cellpadding=5><tr><td><b>Line 51</b>&nbsp;<font size=-1></font></td></tr></table></td><td width="50%"><table width="100%" border=1 cellpadding=5><tr><td><b>Line 52</b>&nbsp;<font size=-1></font></td></tr></table></td>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;bool &nbsp; &nbsp; &nbsp; &nbsp;Ready; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;/// true if the service is ready</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;bool &nbsp; &nbsp; &nbsp; &nbsp;Ready; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;/// true if the service is ready</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;bool &nbsp; &nbsp; &nbsp; &nbsp;Connected; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;/// true if the service is connected to the AES</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;bool &nbsp; &nbsp; &nbsp; &nbsp;Connected; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;/// true if the service is connected to the AES</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;bool &nbsp; &nbsp; &nbsp; &nbsp;InConfig; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;/// true if the service is in the configuration</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;bool &nbsp; &nbsp; &nbsp; &nbsp;InConfig; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;/// true if the service is in the configuration</font></td></tr>
+<tr><td bgcolor="#cccccc">&nbsp;</td><td bgcolor="#ccccff"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;std::vector&lt;NLMISC::CSerialCommand&gt; &nbsp; &nbsp; &nbsp; &nbsp;Commands;</font></td></tr>
+<tr><td bgcolor="#cccccc">&nbsp;</td><td bgcolor="#ccccff"><font face="Helvetica,Arial" size="-1">&nbsp;</font></td></tr>
+<tr><td bgcolor="#cccccc">&nbsp;</td><td bgcolor="#ccccff"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;void setValues (const CService &amp;t)</font></td></tr>
+<tr><td bgcolor="#cccccc">&nbsp;</td><td bgcolor="#ccccff"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{</font></td></tr>
+<tr><td bgcolor="#cccccc">&nbsp;</td><td bgcolor="#ccccff"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// copy all except gtk stuffs</font></td></tr>
+<tr><td bgcolor="#cccccc">&nbsp;</td><td bgcolor="#ccccff"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;Id = t.Id;</font></td></tr>
+<tr><td bgcolor="#cccccc">&nbsp;</td><td bgcolor="#ccccff"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;AliasName = t.AliasName;</font></td></tr>
+<tr><td bgcolor="#cccccc">&nbsp;</td><td bgcolor="#ccccff"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;ShortName = t.ShortName;</font></td></tr>
+<tr><td bgcolor="#cccccc">&nbsp;</td><td bgcolor="#ccccff"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;LongName = t.LongName;</font></td></tr>
+<tr><td bgcolor="#cccccc">&nbsp;</td><td bgcolor="#ccccff"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;Ready = t.Ready;</font></td></tr>
+<tr><td bgcolor="#cccccc">&nbsp;</td><td bgcolor="#ccccff"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;Connected = t.Connected;</font></td></tr>
+<tr><td bgcolor="#cccccc">&nbsp;</td><td bgcolor="#ccccff"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;//InConfig = t.InConfig; never change the inconfig value</font></td></tr>
+<tr><td bgcolor="#cccccc">&nbsp;</td><td bgcolor="#ccccff"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp;};</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp;};</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp;</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp;</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp;typedef list&lt;CService&gt; TServices;</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp;typedef list&lt;CService&gt; TServices;</font></td></tr>
+<tr bgcolor="#dddddd"><td width="50%"><table width="100%" border=1 cellpadding=5><tr><td><b>Line 136</b>&nbsp;<font size=-1></font></td></tr></table></td><td width="50%"><table width="100%" border=1 cellpadding=5><tr><td><b>Line 150</b>&nbsp;<font size=-1></font></td></tr></table></td>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp;{</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp;{</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;for (AESIT aesit = AdminExecutorServices.begin(); aesit != AdminExecutorServices.end(); aesit++)</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;for (AESIT aesit = AdminExecutorServices.begin(); aesit != AdminExecutorServices.end(); aesit++)</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{</font></td></tr>
+<tr><td bgcolor="#cccccc">&nbsp;</td><td bgcolor="#ccccff"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;nlinfo (&quot;&gt; Admin&quot;);</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;for (SIT sit = (*aesit).Services.begin(); sit != (*aesit).Services.end(); sit++)</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;for (SIT sit = (*aesit).Services.begin(); sit != (*aesit).Services.end(); sit++)</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{</font></td></tr>
+<tr><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;nlinfo (&quot;&gt; %s %s %s %d %d&quot;, (*aesit).SockId-&gt;asString().c_str(), (*sit).ShortName.c_str(), (*sit).LongName.c_str(), (*aesit).Id, (*sit).Id);</font></td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;nlinfo (&quot; &nbsp;&gt; '%s' '%s' '%s' '%s' %d %d&quot;, (*aesit).SockId-&gt;asString().c_str(), (*sit).AliasName.c_str(), (*sit).ShortName.c_str(), (*sit).LongName.c_str(), (*aesit).Id, (*sit).Id);</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp;}</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp;}</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp;</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp;</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp;</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp;</font></td></tr>
+<tr><td bgcolor="#cccccc">&nbsp;</td><td bgcolor="#ccccff"><font face="Helvetica,Arial" size="-1">&nbsp;// send a message to a client. if ok is 0 it s an error or it s a normal </font></td></tr>
+<tr><td bgcolor="#cccccc">&nbsp;</td><td bgcolor="#ccccff"><font face="Helvetica,Arial" size="-1">&nbsp;void messageToClient (uint8 ok, string msg, TSockId from = NULL)</font></td></tr>
+<tr><td bgcolor="#cccccc">&nbsp;</td><td bgcolor="#ccccff"><font face="Helvetica,Arial" size="-1">&nbsp;{</font></td></tr>
+<tr><td bgcolor="#cccccc">&nbsp;</td><td bgcolor="#ccccff"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;CMessage msgout (CNetManager::getSIDA (&quot;AS&quot;), &quot;MESSAGE&quot;);</font></td></tr>
+<tr><td bgcolor="#cccccc">&nbsp;</td><td bgcolor="#ccccff"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;msgout.serial (ok, msg);</font></td></tr>
+<tr><td bgcolor="#cccccc">&nbsp;</td><td bgcolor="#ccccff"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;CNetManager::send (&quot;AS&quot;, msgout, from);</font></td></tr>
+<tr><td bgcolor="#cccccc">&nbsp;</td><td bgcolor="#ccccff"><font face="Helvetica,Arial" size="-1">&nbsp;}</font></td></tr>
+<tr><td bgcolor="#cccccc">&nbsp;</td><td bgcolor="#ccccff"><font face="Helvetica,Arial" size="-1">&nbsp;</font></td></tr>
+<tr><td bgcolor="#cccccc">&nbsp;</td><td bgcolor="#ccccff"><font face="Helvetica,Arial" size="-1">&nbsp;</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp;////////////////////////////////////////////////////////////////////////////////////////////////////////</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp;////////////////////////////////////////////////////////////////////////////////////////////////////////</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp;////////////////////////////////////////////////////////////////////////////////////////////////////////</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp;////////////////////////////////////////////////////////////////////////////////////////////////////////</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp;/////////////////// SCRIPT MANAGER /////////////////////////////////////////////////////////////////////</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp;/////////////////// SCRIPT MANAGER /////////////////////////////////////////////////////////////////////</font></td></tr>
+<tr bgcolor="#dddddd"><td width="50%"><table width="100%" border=1 cellpadding=5><tr><td><b>Line 167</b>&nbsp;<font size=-1></font></td></tr></table></td><td width="50%"><table width="100%" border=1 cellpadding=5><tr><td><b>Line 191</b>&nbsp;<font size=-1></font></td></tr></table></td>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;if (StartAllServicesPos*2 &gt;= (uint32)script.size())</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;if (StartAllServicesPos*2 &gt;= (uint32)script.size())</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;StartAllServices = false;</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;StartAllServices = false;</font></td></tr>
+<tr><td bgcolor="#cccccc">&nbsp;</td><td bgcolor="#ccccff"><font face="Helvetica,Arial" size="-1">&nbsp;</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;nlinfo(&quot;end of the script&quot;);</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;nlinfo(&quot;end of the script&quot;);</font></td></tr>
+<tr><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// todo send that the script is finish to the admin</font></td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;messageToClient (1, &quot;Start All Service finnished correctly&quot;);</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;return;</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;return;</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp;</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp;</font></td></tr>
+<tr bgcolor="#dddddd"><td width="50%"><table width="100%" border=1 cellpadding=5><tr><td><b>Line 184</b>&nbsp;<font size=-1></font></td></tr></table></td><td width="50%"><table width="100%" border=1 cellpadding=5><tr><td><b>Line 209</b>&nbsp;<font size=-1></font></td></tr></table></td>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;catch(EBadSize &amp;)</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;catch(EBadSize &amp;)</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{</font></td></tr>
+<tr><td bgcolor="#cccccc">&nbsp;</td><td bgcolor="#ccccff"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;messageToClient (1, &quot;'Services' variable does not contains a good number of entries (must be a multiple of 2)&quot;);</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;nlwarning (&quot;'Services' variable does not contains a good number of entries (must be a multiple of 2)&quot;);</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;nlwarning (&quot;'Services' variable does not contains a good number of entries (must be a multiple of 2)&quot;);</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;StartAllServices = false;</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;StartAllServices = false;</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;return;</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;return;</font></td></tr>
+<tr bgcolor="#dddddd"><td width="50%"><table width="100%" border=1 cellpadding=5><tr><td><b>Line 192</b>&nbsp;<font size=-1></font></td></tr></table></td><td width="50%"><table width="100%" border=1 cellpadding=5><tr><td><b>Line 218</b>&nbsp;<font size=-1></font></td></tr></table></td>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;AESIT aesit = findAdminExecutorService (serverAlias, false);</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;AESIT aesit = findAdminExecutorService (serverAlias, false);</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;if (aesit == AdminExecutorServices.end())</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;if (aesit == AdminExecutorServices.end())</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{</font></td></tr>
+<tr><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;StartAllServices = false;</font></td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;messageToClient (1, &quot;don't find the server&quot;);</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;nlwarning(&quot;don't find the server&quot;);</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;nlwarning(&quot;don't find the server&quot;);</font></td></tr>
+<tr><td bgcolor="#cccccc">&nbsp;</td><td bgcolor="#ccccff"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;StartAllServices = false;</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;return;</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;return;</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp;</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp;</font></td></tr>
+<tr bgcolor="#dddddd"><td width="50%"><table width="100%" border=1 cellpadding=5><tr><td><b>Line 218</b>&nbsp;<font size=-1></font></td></tr></table></td><td width="50%"><table width="100%" border=1 cellpadding=5><tr><td><b>Line 245</b>&nbsp;<font size=-1></font></td></tr></table></td>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;catch(EUnknownVar&amp;)</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;catch(EUnknownVar&amp;)</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{</font></td></tr>
+<tr><td bgcolor="#cccccc">&nbsp;</td><td bgcolor="#ccccff"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;messageToClient (1, &quot;'Services' variable is not found&quot;);</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;nlwarning (&quot;'Services' variable is not found&quot;);</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;nlwarning (&quot;'Services' variable is not found&quot;);</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;StartAllServices = false;</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;StartAllServices = false;</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;return;</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;return;</font></td></tr>
+<tr bgcolor="#dddddd"><td width="50%"><table width="100%" border=1 cellpadding=5><tr><td><b>Line 228</b>&nbsp;<font size=-1></font></td></tr></table></td><td width="50%"><table width="100%" border=1 cellpadding=5><tr><td><b>Line 256</b>&nbsp;<font size=-1></font></td></tr></table></td>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp;{</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp;{</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;if (StartAllServices)</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;if (StartAllServices)</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{</font></td></tr>
+<tr><td bgcolor="#cccccc">&nbsp;</td><td bgcolor="#ccccff"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;messageToClient (1, &quot;already running a script, reset it&quot;);</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;nlwarning(&quot;already running a script, reset it&quot;);</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;nlwarning(&quot;already running a script, reset it&quot;);</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;StartAllServices = false;</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;StartAllServices = false;</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}</font></td></tr>
+<tr bgcolor="#dddddd"><td width="50%"><table width="100%" border=1 cellpadding=5><tr><td><b>Line 242</b>&nbsp;<font size=-1></font></td></tr></table></td><td width="50%"><table width="100%" border=1 cellpadding=5><tr><td><b>Line 271</b>&nbsp;<font size=-1></font></td></tr></table></td>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;AESIT aesit = findAdminExecutorService (serverAlias, false);</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;AESIT aesit = findAdminExecutorService (serverAlias, false);</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;if (aesit == AdminExecutorServices.end())</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;if (aesit == AdminExecutorServices.end())</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{</font></td></tr>
+<tr><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;nlwarning(&quot;aes '%s' not running, can't run the script&quot;, serverAlias.c_str());</font></td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;messageToClient (1, &quot;an aes is not running, can't run the script&quot;);</font></td></tr>
+<tr><td bgcolor="#99cc99">&nbsp;</td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;nlwarning(&quot;aes '%s' isn't running, can't run the script&quot;, serverAlias.c_str());</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;return;</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;return;</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;catch(EConfigFile &amp;)</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;catch(EConfigFile &amp;)</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{</font></td></tr>
+<tr><td bgcolor="#cccccc">&nbsp;</td><td bgcolor="#ccccff"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;messageToClient (1, &quot;bad config file&quot;);</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;nlwarning (&quot;bad config file&quot;);</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;nlwarning (&quot;bad config file&quot;);</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;return;</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;return;</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}</font></td></tr>
+<tr bgcolor="#dddddd"><td width="50%"><table width="100%" border=1 cellpadding=5><tr><td><b>Line 280</b>&nbsp;<font size=-1></font></td></tr></table></td><td width="50%"><table width="100%" border=1 cellpadding=5><tr><td><b>Line 311</b>&nbsp;<font size=-1></font></td></tr></table></td>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;nlinfo(&quot;end of command result&quot;);</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;nlinfo(&quot;end of command result&quot;);</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp;}</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp;}</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp;</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp;</font></td></tr>
+<tr><td bgcolor="#cccccc">&nbsp;</td><td bgcolor="#ccccff"><font face="Helvetica,Arial" size="-1">&nbsp;// get the service list from the admin exec and send the list to all admin client</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp;static void cbServiceList (CMessage&amp; msgin, TSockId from, CCallbackNetBase &amp;netbase)</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp;static void cbServiceList (CMessage&amp; msgin, TSockId from, CCallbackNetBase &amp;netbase)</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp;{</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp;{</font></td></tr>
+<tr><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp;/* &nbsp; &nbsp; &nbsp;// get the service list from the admin exec and send the list to all admin client</font></td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;CAdminExecutorService *aes = (CAdminExecutorService*) (uint) from-&gt;appId();</font></td></tr>
+<tr><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;CAdminExecutorService *aes = (CAdminExecutorService*) from-&gt;appId();</font></td><td bgcolor="#99cc99">&nbsp;</td></tr>
+<tr><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;aes-&gt;Services.clear();</font></td><td bgcolor="#99cc99">&nbsp;</td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp;</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp;</font></td></tr>
+<tr><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;CMessage msgout (CNetManager::getSIDA (&quot;AS&quot;), &quot;SL&quot;);</font></td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;//</font></td></tr>
+<tr><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp;</font></td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// Get the list of service from aes</font></td></tr>
+<tr><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;uint32 nbaes = 1;</font></td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;//</font></td></tr>
+<tr><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;msgout.serial (nbaes);</font></td><td bgcolor="#99cc99">&nbsp;</td></tr>
+<tr><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;msgout.serial (aes-&gt;Id);</font></td><td bgcolor="#99cc99">&nbsp;</td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp;</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp;</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;uint32 nbs;</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;uint32 nbs;</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;msgin.serial (nbs);</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;msgin.serial (nbs);</font></td></tr>
+<tr><td bgcolor="#ff9999"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;msgout.serial (nbs);</font></td><td bgcolor="#cccccc">&nbsp;</td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp;</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp;</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;for (uint32 i = 0; i &lt; nbs; i++)</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;for (uint32 i = 0; i &lt; nbs; i++)</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{</font></td></tr>
+<tr><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;uint32 sid;</font></td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// find the service</font></td></tr>
+<tr><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;msgin.serial(sid);</font></td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;CService s;</font></td></tr>
+<tr><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp;</font></td><td bgcolor="#99cc99">&nbsp;</td></tr>
+<tr><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;aes-&gt;Services.push_back (CService(sid));</font></td><td bgcolor="#99cc99">&nbsp;</td></tr>
+<tr><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;CService *s = &amp;(aes-&gt;Services.back());</font></td><td bgcolor="#99cc99">&nbsp;</td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp;</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp;</font></td></tr>
+<tr><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;msgin.serial(s-&gt;ShortName, s-&gt;LongName, s-&gt;Ready);</font></td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;msgin.serial (s.Id, s.AliasName, s.ShortName, s.LongName, s.Ready);</font></td></tr>
+<tr><td bgcolor="#99cc99">&nbsp;</td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;msgin.serialCont (s.Commands);</font></td></tr>
+<tr><td bgcolor="#99cc99">&nbsp;</td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;s.Connected = true;</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp;</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp;</font></td></tr>
+<tr><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;msgout.serial (s-&gt;Id, s-&gt;ShortName, s-&gt;LongName, s-&gt;Ready);</font></td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;if (!s.AliasName.empty())</font></td></tr>
+<tr><td bgcolor="#99cc99">&nbsp;</td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{</font></td></tr>
+<tr><td bgcolor="#99cc99">&nbsp;</td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;SIT sit = aes-&gt;findService (s.AliasName, false);</font></td></tr>
+<tr><td bgcolor="#99cc99">&nbsp;</td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;if (sit == aes-&gt;Services.end ())</font></td></tr>
+<tr><td bgcolor="#99cc99">&nbsp;</td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{</font></td></tr>
+<tr><td bgcolor="#99cc99">&nbsp;</td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;aes-&gt;Services.push_back (s);</font></td></tr>
+<tr><td bgcolor="#99cc99">&nbsp;</td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}</font></td></tr>
+<tr><td bgcolor="#99cc99">&nbsp;</td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;else</font></td></tr>
+<tr><td bgcolor="#99cc99">&nbsp;</td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{</font></td></tr>
+<tr><td bgcolor="#99cc99">&nbsp;</td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;nlassert (&quot;the service already exists with alias, update it&quot;);</font></td></tr>
+<tr><td bgcolor="#99cc99">&nbsp;</td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;(*sit).setValues (s);</font></td></tr>
+<tr><td bgcolor="#99cc99">&nbsp;</td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}</font></td></tr>
+<tr><td bgcolor="#99cc99">&nbsp;</td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}</font></td></tr>
+<tr><td bgcolor="#99cc99">&nbsp;</td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;else</font></td></tr>
+<tr><td bgcolor="#99cc99">&nbsp;</td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{</font></td></tr>
+<tr><td bgcolor="#99cc99">&nbsp;</td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;SIT sit = aes-&gt;findService (s.Id, false);</font></td></tr>
+<tr><td bgcolor="#99cc99">&nbsp;</td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;if (sit == aes-&gt;Services.end ())</font></td></tr>
+<tr><td bgcolor="#99cc99">&nbsp;</td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{</font></td></tr>
+<tr><td bgcolor="#99cc99">&nbsp;</td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;aes-&gt;Services.push_back (s);</font></td></tr>
+<tr><td bgcolor="#99cc99">&nbsp;</td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}</font></td></tr>
+<tr><td bgcolor="#99cc99">&nbsp;</td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;else</font></td></tr>
+<tr><td bgcolor="#99cc99">&nbsp;</td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{</font></td></tr>
+<tr><td bgcolor="#99cc99">&nbsp;</td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;nlassert (&quot;the service already exists with id, update it&quot;);</font></td></tr>
+<tr><td bgcolor="#99cc99">&nbsp;</td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;(*sit).setValues (s);</font></td></tr>
+<tr><td bgcolor="#99cc99">&nbsp;</td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}</font></td></tr>
+<tr><td bgcolor="#99cc99">&nbsp;</td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}</font></td></tr>
+<tr><td bgcolor="#ff9999"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;CNetManager::send (&quot;AS&quot;, msgout, 0);</font></td><td bgcolor="#cccccc">&nbsp;</td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;displayServices ();</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;displayServices ();</font></td></tr>
+<tr><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp;*/}</font></td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp;</font></td></tr>
+<tr><td bgcolor="#99cc99">&nbsp;</td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;//</font></td></tr>
+<tr><td bgcolor="#99cc99">&nbsp;</td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// Send the new list to all admin</font></td></tr>
+<tr><td bgcolor="#99cc99">&nbsp;</td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;//</font></td></tr>
+<tr><td bgcolor="#99cc99">&nbsp;</td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp;</font></td></tr>
+<tr><td bgcolor="#99cc99">&nbsp;</td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;CMessage msgout (CNetManager::getSIDA (&quot;AS&quot;), &quot;SERVICE_LIST&quot;);</font></td></tr>
+<tr><td bgcolor="#99cc99">&nbsp;</td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;uint32 nbaes = 1;</font></td></tr>
+<tr><td bgcolor="#99cc99">&nbsp;</td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;msgout.serial (nbaes);</font></td></tr>
+<tr><td bgcolor="#99cc99">&nbsp;</td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;msgout.serial (aes-&gt;Id);</font></td></tr>
+<tr><td bgcolor="#99cc99">&nbsp;</td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;uint32 ss = aes-&gt;Services.size();</font></td></tr>
+<tr><td bgcolor="#99cc99">&nbsp;</td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;msgout.serial (ss);</font></td></tr>
+<tr><td bgcolor="#99cc99">&nbsp;</td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp;</font></td></tr>
+<tr><td bgcolor="#99cc99">&nbsp;</td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;for (SIT sit = aes-&gt;Services.begin(); sit != aes-&gt;Services.end(); sit++)</font></td></tr>
+<tr><td bgcolor="#99cc99">&nbsp;</td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{</font></td></tr>
+<tr><td bgcolor="#99cc99">&nbsp;</td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;msgout.serial ((*sit).Id, (*sit).AliasName, (*sit).ShortName, (*sit).LongName);</font></td></tr>
+<tr><td bgcolor="#99cc99">&nbsp;</td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;msgout.serial ((*sit).Ready, (*sit).Connected, (*sit).InConfig);</font></td></tr>
+<tr><td bgcolor="#99cc99">&nbsp;</td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;msgout.serialCont ((*sit).Commands);</font></td></tr>
+<tr><td bgcolor="#99cc99">&nbsp;</td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}</font></td></tr>
+<tr><td bgcolor="#99cc99">&nbsp;</td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;CNetManager::send (&quot;AS&quot;, msgout, 0);</font></td></tr>
+<tr><td bgcolor="#99cc99">&nbsp;</td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp;}</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp;</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp;</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp;static void cbServiceAliasList (CMessage&amp; msgin, TSockId from, CCallbackNetBase &amp;netbase)</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp;static void cbServiceAliasList (CMessage&amp; msgin, TSockId from, CCallbackNetBase &amp;netbase)</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp;{</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp;{</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// get the service list from the admin exec and send the list to all admin client</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// get the service list from the admin exec and send the list to all admin client</font></td></tr>
+<tr><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;CAdminExecutorService *aes = (CAdminExecutorService*) from-&gt;appId();</font></td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;CAdminExecutorService *aes = (CAdminExecutorService*) (uint) from-&gt;appId();</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp;</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp;</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;aes-&gt;ServiceAliasList.clear ();</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;aes-&gt;ServiceAliasList.clear ();</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;msgin.serialCont (aes-&gt;ServiceAliasList);</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;msgin.serialCont (aes-&gt;ServiceAliasList);</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp;</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp;</font></td></tr>
+<tr><td bgcolor="#cccccc">&nbsp;</td><td bgcolor="#ccccff"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;nlinfo(&quot;send SAL to admin callback from aes&quot;);</font></td></tr>
+<tr><td bgcolor="#cccccc">&nbsp;</td><td bgcolor="#ccccff"><font face="Helvetica,Arial" size="-1">&nbsp;</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;CMessage msgout (CNetManager::getSIDA (&quot;AS&quot;), &quot;SAL&quot;);</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;CMessage msgout (CNetManager::getSIDA (&quot;AS&quot;), &quot;SAL&quot;);</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;msgout.serial (aes-&gt;Id);</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;msgout.serial (aes-&gt;Id);</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;msgout.serialCont (aes-&gt;ServiceAliasList);</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;msgout.serialCont (aes-&gt;ServiceAliasList);</font></td></tr>
+<tr bgcolor="#dddddd"><td width="50%"><table width="100%" border=1 cellpadding=5><tr><td><b>Line 332</b>&nbsp;<font size=-1></font></td></tr></table></td><td width="50%"><table width="100%" border=1 cellpadding=5><tr><td><b>Line 403</b>&nbsp;<font size=-1></font></td></tr></table></td>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp;</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp;</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp;static void cbServiceIdentification (CMessage&amp; msgin, TSockId from, CCallbackNetBase &amp;netbase)</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp;static void cbServiceIdentification (CMessage&amp; msgin, TSockId from, CCallbackNetBase &amp;netbase)</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp;{</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp;{</font></td></tr>
+<tr><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;CAdminExecutorService *aes = (CAdminExecutorService*) from-&gt;appId();</font></td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;CAdminExecutorService *aes = (CAdminExecutorService*) (uint) from-&gt;appId();</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp;</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp;</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;uint32 sid;</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;uint32 sid;</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;string alias;</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;string alias;</font></td></tr>
+<tr bgcolor="#dddddd"><td width="50%"><table width="100%" border=1 cellpadding=5><tr><td><b>Line 365</b>&nbsp;<font size=-1></font></td></tr></table></td><td width="50%"><table width="100%" border=1 cellpadding=5><tr><td><b>Line 436</b>&nbsp;<font size=-1></font></td></tr></table></td>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;if (sit == aes-&gt;Services.end ())</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;if (sit == aes-&gt;Services.end ())</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// normal case for unknown services</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// normal case for unknown services</font></td></tr>
+<tr><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;nlwarning (&quot;new service with alias (%s) but not in my list&quot;, alias.c_str());</font></td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;nlwarning (&quot;new service without alias and not in my list, add it&quot;);</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;else</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;else</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{</font></td></tr>
+<tr><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;nlwarning (&quot;new service without alias is already in my list with id %d&quot;, sid);</font></td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;nlwarning (&quot;new service without alias is already in my list with id %d, add it&quot;, sid);</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;aes-&gt;Services.push_back (CService ());</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;aes-&gt;Services.push_back (CService ());</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;sit = aes-&gt;Services.end();</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;sit = aes-&gt;Services.end();</font></td></tr>
+<tr bgcolor="#dddddd"><td width="50%"><table width="100%" border=1 cellpadding=5><tr><td><b>Line 380</b>&nbsp;<font size=-1></font></td></tr></table></td><td width="50%"><table width="100%" border=1 cellpadding=5><tr><td><b>Line 451</b>&nbsp;<font size=-1></font></td></tr></table></td>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;(*sit).AliasName = alias;</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;(*sit).AliasName = alias;</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;(*sit).Connected = true;</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;(*sit).Connected = true;</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;msgin.serial ((*sit).ShortName, (*sit).LongName);</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;msgin.serial ((*sit).ShortName, (*sit).LongName);</font></td></tr>
+<tr><td bgcolor="#cccccc">&nbsp;</td><td bgcolor="#ccccff"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;msgin.serialCont ((*sit).Commands);</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp;</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp;</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;nlinfo (&quot;*:%d:%d is identified to be '%s' '%s' '%s'&quot;, aes-&gt;Id, sid, (*sit).AliasName.c_str(), (*sit).ShortName.c_str(), (*sit).LongName.c_str());</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;nlinfo (&quot;*:%d:%d is identified to be '%s' '%s' '%s'&quot;, aes-&gt;Id, sid, (*sit).AliasName.c_str(), (*sit).ShortName.c_str(), (*sit).LongName.c_str());</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp;</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp;</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// broadcast the message to all admin client</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// broadcast the message to all admin client</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;CMessage msgout (CNetManager::getSIDA (&quot;AS&quot;), &quot;SID&quot;);</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;CMessage msgout (CNetManager::getSIDA (&quot;AS&quot;), &quot;SID&quot;);</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;msgout.serial (aes-&gt;Id, sid, (*sit).AliasName, (*sit).ShortName, (*sit).LongName);</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;msgout.serial (aes-&gt;Id, sid, (*sit).AliasName, (*sit).ShortName, (*sit).LongName);</font></td></tr>
+<tr><td bgcolor="#cccccc">&nbsp;</td><td bgcolor="#ccccff"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;msgout.serialCont ((*sit).Commands);</font></td></tr>
+<tr><td bgcolor="#cccccc">&nbsp;</td><td bgcolor="#ccccff"><font face="Helvetica,Arial" size="-1">&nbsp;</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;CNetManager::send (&quot;AS&quot;, msgout, 0);</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;CNetManager::send (&quot;AS&quot;, msgout, 0);</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp;}</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp;}</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp;</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp;</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp;static void cbServiceReady (CMessage&amp; msgin, TSockId from, CCallbackNetBase &amp;netbase)</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp;static void cbServiceReady (CMessage&amp; msgin, TSockId from, CCallbackNetBase &amp;netbase)</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp;{</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp;{</font></td></tr>
+<tr><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;CAdminExecutorService *aes = (CAdminExecutorService*) from-&gt;appId();</font></td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;CAdminExecutorService *aes = (CAdminExecutorService*) (uint) from-&gt;appId();</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp;</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp;</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;uint32 sid;</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;uint32 sid;</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;msgin.serial (sid);</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;msgin.serial (sid);</font></td></tr>
+<tr bgcolor="#dddddd"><td width="50%"><table width="100%" border=1 cellpadding=5><tr><td><b>Line 413</b>&nbsp;<font size=-1></font></td></tr></table></td><td width="50%"><table width="100%" border=1 cellpadding=5><tr><td><b>Line 487</b>&nbsp;<font size=-1></font></td></tr></table></td>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp;</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp;</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp;static void cbServiceConnection (CMessage&amp; msgin, TSockId from, CCallbackNetBase &amp;netbase)</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp;static void cbServiceConnection (CMessage&amp; msgin, TSockId from, CCallbackNetBase &amp;netbase)</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp;{</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp;{</font></td></tr>
+<tr><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;CAdminExecutorService *aes = (CAdminExecutorService*) from-&gt;appId();</font></td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;CAdminExecutorService *aes = (CAdminExecutorService*) (uint) from-&gt;appId();</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp;</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp;</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;uint32 sid;</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;uint32 sid;</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;msgin.serial (sid);</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;msgin.serial (sid);</font></td></tr>
+<tr bgcolor="#dddddd"><td width="50%"><table width="100%" border=1 cellpadding=5><tr><td><b>Line 433</b>&nbsp;<font size=-1></font></td></tr></table></td><td width="50%"><table width="100%" border=1 cellpadding=5><tr><td><b>Line 507</b>&nbsp;<font size=-1></font></td></tr></table></td>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp;</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp;</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp;static void cbServiceDisconnection (CMessage&amp; msgin, TSockId from, CCallbackNetBase &amp;netbase)</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp;static void cbServiceDisconnection (CMessage&amp; msgin, TSockId from, CCallbackNetBase &amp;netbase)</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp;{</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp;{</font></td></tr>
+<tr><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;CAdminExecutorService *aes = (CAdminExecutorService*) from-&gt;appId();</font></td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;CAdminExecutorService *aes = (CAdminExecutorService*) (uint) from-&gt;appId();</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp;</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp;</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;uint32 sid;</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;uint32 sid;</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;msgin.serial (sid);</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;msgin.serial (sid);</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp;</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp;</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;nlinfo (&quot;*:%d:%d disconnected&quot;, aes-&gt;Id, sid);</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;nlinfo (&quot;*:%d:%d disconnected&quot;, aes-&gt;Id, sid);</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp;</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp;</font></td></tr>
+<tr><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;SIT sit = aes-&gt;findService(sid);</font></td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;SIT sit = aes-&gt;findService(sid, false);</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp;</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp;</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// broadcast the message to all admin client</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// broadcast the message to all admin client</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;CMessage msgout (CNetManager::getSIDA (&quot;AS&quot;), &quot;SD&quot;);</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;CMessage msgout (CNetManager::getSIDA (&quot;AS&quot;), &quot;SD&quot;);</font></td></tr>
+<tr><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;msgout.serial (aes-&gt;Id, (*sit).Id);</font></td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;msgout.serial (aes-&gt;Id, sid);</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;CNetManager::send (&quot;AS&quot;, msgout, 0);</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;CNetManager::send (&quot;AS&quot;, msgout, 0);</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp;</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp;</font></td></tr>
+<tr><td bgcolor="#cccccc">&nbsp;</td><td bgcolor="#ccccff"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// the service could disconnect before it's identification, in this case, we don't have it in the service list</font></td></tr>
+<tr><td bgcolor="#cccccc">&nbsp;</td><td bgcolor="#ccccff"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;if (sit != aes-&gt;Services.end ())</font></td></tr>
+<tr><td bgcolor="#cccccc">&nbsp;</td><td bgcolor="#ccccff"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;if ((*sit).InConfig)</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;if ((*sit).InConfig)</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;(*sit).Ready = (*sit).Connected = false;</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;(*sit).Ready = (*sit).Connected = false;</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;(*sit).Id = 0xFFFFFFFF;</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;(*sit).Id = 0xFFFFFFFF;</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;(*sit).ShortName = (*sit).LongName = &quot;&quot;;</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;(*sit).ShortName = (*sit).LongName = &quot;&quot;;</font></td></tr>
+<tr><td bgcolor="#cccccc">&nbsp;</td><td bgcolor="#ccccff"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;(*sit).Commands.clear ();</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;else</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;else</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{</font></td></tr>
+<tr bgcolor="#dddddd"><td width="50%"><table width="100%" border=1 cellpadding=5><tr><td><b>Line 460</b>&nbsp;<font size=-1></font></td></tr></table></td><td width="50%"><table width="100%" border=1 cellpadding=5><tr><td><b>Line 538</b>&nbsp;<font size=-1></font></td></tr></table></td>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp;}</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp;}</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp;</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp;</font></td></tr>
+<tr><td bgcolor="#cccccc">&nbsp;</td><td bgcolor="#ccccff"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;displayServices ();</font></td></tr>
+<tr><td bgcolor="#cccccc">&nbsp;</td><td bgcolor="#ccccff"><font face="Helvetica,Arial" size="-1">&nbsp;}</font></td></tr>
+<tr><td bgcolor="#cccccc">&nbsp;</td><td bgcolor="#ccccff"><font face="Helvetica,Arial" size="-1">&nbsp;</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp;// i'm connected to a new admin executor service</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp;// i'm connected to a new admin executor service</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp;void cbAESConnection (const string &amp;serviceName, TSockId from, void *arg)</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp;void cbAESConnection (const string &amp;serviceName, TSockId from, void *arg)</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp;{</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp;{</font></td></tr>
+<tr bgcolor="#dddddd"><td width="50%"><table width="100%" border=1 cellpadding=5><tr><td><b>Line 467</b>&nbsp;<font size=-1></font></td></tr></table></td><td width="50%"><table width="100%" border=1 cellpadding=5><tr><td><b>Line 548</b>&nbsp;<font size=-1></font></td></tr></table></td>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;CAdminExecutorService *aes = &amp;(*aesit);</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;CAdminExecutorService *aes = &amp;(*aesit);</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// set the appid to find the aes in O(1)</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// set the appid to find the aes in O(1)</font></td></tr>
+<tr><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;from-&gt;setAppId ((uint64)aes);</font></td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;from-&gt;setAppId ((uint64)(uint)aes);</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp;</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp;</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;aes-&gt;Connected = true;</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;aes-&gt;Connected = true;</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;nlinfo (&quot;*:%d:* connected&quot;, aes-&gt;Id);</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;nlinfo (&quot;*:%d:* connected&quot;, aes-&gt;Id);</font></td></tr>
+<tr bgcolor="#dddddd"><td width="50%"><table width="100%" border=1 cellpadding=5><tr><td><b>Line 490</b>&nbsp;<font size=-1></font></td></tr></table></td><td width="50%"><table width="100%" border=1 cellpadding=5><tr><td><b>Line 571</b>&nbsp;<font size=-1></font></td></tr></table></td>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp;void cbAESDisconnection (const string &amp;serviceName, TSockId from, void *arg)</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp;void cbAESDisconnection (const string &amp;serviceName, TSockId from, void *arg)</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp;{</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp;{</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// get the aes with the appid</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// get the aes with the appid</font></td></tr>
+<tr><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;CAdminExecutorService *aes = (CAdminExecutorService*) from-&gt;appId();</font></td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;CAdminExecutorService *aes = (CAdminExecutorService*) (uint) from-&gt;appId();</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp;</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp;</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;aes-&gt;Connected = false;</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;aes-&gt;Connected = false;</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp;</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp;</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;SIT sit;</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;SIT sit;</font></td></tr>
+<tr><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;for (sit = aes-&gt;Services.begin(); sit != aes-&gt;Services.end(); sit++)</font></td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;for (sit = aes-&gt;Services.begin(); sit != aes-&gt;Services.end();)</font></td></tr>
+<tr><td bgcolor="#99cc99">&nbsp;</td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{</font></td></tr>
+<tr><td bgcolor="#99cc99">&nbsp;</td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// keep only inconfig services</font></td></tr>
+<tr><td bgcolor="#99cc99">&nbsp;</td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;if ((*sit).InConfig)</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;(*sit).Id = 0xFFFFFFFF;</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;(*sit).Id = 0xFFFFFFFF;</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;(*sit).ShortName = (*sit).LongName = &quot;&quot;;</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;(*sit).ShortName = (*sit).LongName = &quot;&quot;;</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;(*sit).Ready = (*sit).Connected = false;</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;(*sit).Ready = (*sit).Connected = false;</font></td></tr>
+<tr><td bgcolor="#cccccc">&nbsp;</td><td bgcolor="#ccccff"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;sit++;</font></td></tr>
+<tr><td bgcolor="#cccccc">&nbsp;</td><td bgcolor="#ccccff"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}</font></td></tr>
+<tr><td bgcolor="#cccccc">&nbsp;</td><td bgcolor="#ccccff"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;else</font></td></tr>
+<tr><td bgcolor="#cccccc">&nbsp;</td><td bgcolor="#ccccff"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{</font></td></tr>
+<tr><td bgcolor="#cccccc">&nbsp;</td><td bgcolor="#ccccff"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// erase only if it's not a service in the config</font></td></tr>
+<tr><td bgcolor="#cccccc">&nbsp;</td><td bgcolor="#ccccff"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;sit = aes-&gt;Services.erase (sit);</font></td></tr>
+<tr><td bgcolor="#cccccc">&nbsp;</td><td bgcolor="#ccccff"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp;</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp;</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;nlinfo (&quot;*:%d:* disconnected&quot;, aes-&gt;Id);</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;nlinfo (&quot;*:%d:* disconnected&quot;, aes-&gt;Id);</font></td></tr>
+<tr bgcolor="#dddddd"><td width="50%"><table width="100%" border=1 cellpadding=5><tr><td><b>Line 510</b>&nbsp;<font size=-1></font></td></tr></table></td><td width="50%"><table width="100%" border=1 cellpadding=5><tr><td><b>Line 601</b>&nbsp;<font size=-1></font></td></tr></table></td>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;CNetManager::send (&quot;AS&quot;, msgout, 0);</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;CNetManager::send (&quot;AS&quot;, msgout, 0);</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp;*/</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp;*/</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp;</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp;</font></td></tr>
+<tr><td bgcolor="#cccccc">&nbsp;</td><td bgcolor="#ccccff"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;displayServices ();</font></td></tr>
+<tr><td bgcolor="#cccccc">&nbsp;</td><td bgcolor="#ccccff"><font face="Helvetica,Arial" size="-1">&nbsp;</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// broadcast the new state of this AES</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// broadcast the new state of this AES</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;CMessage msgout (CNetManager::getSIDA (&quot;AS&quot;), &quot;AES_LIST&quot;);</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;CMessage msgout (CNetManager::getSIDA (&quot;AS&quot;), &quot;AES_LIST&quot;);</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;uint32 nbaes = 1;</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;uint32 nbaes = 1;</font></td></tr>
+<tr bgcolor="#dddddd"><td width="50%"><table width="100%" border=1 cellpadding=5><tr><td><b>Line 522</b>&nbsp;<font size=-1></font></td></tr></table></td><td width="50%"><table width="100%" border=1 cellpadding=5><tr><td><b>Line 615</b>&nbsp;<font size=-1></font></td></tr></table></td>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp;{</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp;{</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// received an answer for a command, give it to all admin client</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// received an answer for a command, give it to all admin client</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp;</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp;</font></td></tr>
+<tr><td bgcolor="#cccccc">&nbsp;</td><td bgcolor="#ccccff"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// get the aes with the appid</font></td></tr>
+<tr><td bgcolor="#cccccc">&nbsp;</td><td bgcolor="#ccccff"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;CAdminExecutorService *aes = (CAdminExecutorService*) (uint) from-&gt;appId();</font></td></tr>
+<tr><td bgcolor="#cccccc">&nbsp;</td><td bgcolor="#ccccff"><font face="Helvetica,Arial" size="-1">&nbsp;</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// broadcast the message to the admin service</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// broadcast the message to the admin service</font></td></tr>
+<tr><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;CMessage msgout (CNetManager::getSIDA (&quot;AS&quot;), &quot;LOG&quot;);</font></td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;CMessage msgout (CNetManager::getSIDA (&quot;AS&quot;), &quot;XLOG&quot;);</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;string log;</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;string log;</font></td></tr>
+<tr><td bgcolor="#cccccc">&nbsp;</td><td bgcolor="#ccccff"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;uint32 sid;</font></td></tr>
+<tr><td bgcolor="#cccccc">&nbsp;</td><td bgcolor="#ccccff"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;msgin.serial (sid);</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;msgin.serial (log);</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;msgin.serial (log);</font></td></tr>
+<tr><td bgcolor="#cccccc">&nbsp;</td><td bgcolor="#ccccff"><font face="Helvetica,Arial" size="-1">&nbsp;</font></td></tr>
+<tr><td bgcolor="#cccccc">&nbsp;</td><td bgcolor="#ccccff"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;msgout.serial (aes-&gt;Id);</font></td></tr>
+<tr><td bgcolor="#cccccc">&nbsp;</td><td bgcolor="#ccccff"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;msgout.serial (sid);</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;msgout.serial (log);</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;msgout.serial (log);</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;CNetManager::send (&quot;AS&quot;, msgout, 0);</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;CNetManager::send (&quot;AS&quot;, msgout, 0);</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp;}</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp;}</font></td></tr>
+<tr bgcolor="#dddddd"><td width="50%"><table width="100%" border=1 cellpadding=5><tr><td><b>Line 543</b>&nbsp;<font size=-1></font></td></tr></table></td><td width="50%"><table width="100%" border=1 cellpadding=5><tr><td><b>Line 644</b>&nbsp;<font size=-1></font></td></tr></table></td>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp;</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp;</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{ &quot;SAL&quot;, cbServiceAliasList },</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{ &quot;SAL&quot;, cbServiceAliasList },</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp;</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp;</font></td></tr>
+<tr><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{ &quot;LOG&quot;, cbLog },</font></td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{ &quot;XLOG&quot;, cbLog },</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp;};</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp;};</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp;</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp;</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp;</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp;</font></td></tr>
+<tr bgcolor="#dddddd"><td width="50%"><table width="100%" border=1 cellpadding=5><tr><td><b>Line 553</b>&nbsp;<font size=-1></font></td></tr></table></td><td width="50%"><table width="100%" border=1 cellpadding=5><tr><td><b>Line 654</b>&nbsp;<font size=-1></font></td></tr></table></td>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp;////////////////////////////////////////////////////////////////////////////////////////////////////////</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp;////////////////////////////////////////////////////////////////////////////////////////////////////////</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp;////////////////////////////////////////////////////////////////////////////////////////////////////////</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp;////////////////////////////////////////////////////////////////////////////////////////////////////////</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp;</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp;</font></td></tr>
+<tr><td bgcolor="#ff9999"><font face="Helvetica,Arial" size="-1">&nbsp;void errorMessage(string message, TSockId from, CCallbackNetBase &amp;netbase)</font></td><td bgcolor="#cccccc">&nbsp;</td></tr>
+<tr><td bgcolor="#ff9999"><font face="Helvetica,Arial" size="-1">&nbsp;{</font></td><td bgcolor="#cccccc">&nbsp;</td></tr>
+<tr><td bgcolor="#ff9999"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;CMessage msgout (netbase.getSIDA (), &quot;ERR&quot;);</font></td><td bgcolor="#cccccc">&nbsp;</td></tr>
+<tr><td bgcolor="#ff9999"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;msgout.serial (message);</font></td><td bgcolor="#cccccc">&nbsp;</td></tr>
+<tr><td bgcolor="#ff9999"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;netbase.send (msgout, from);</font></td><td bgcolor="#cccccc">&nbsp;</td></tr>
+<tr><td bgcolor="#ff9999"><font face="Helvetica,Arial" size="-1">&nbsp;}</font></td><td bgcolor="#cccccc">&nbsp;</td></tr>
+<tr><td bgcolor="#ff9999"><font face="Helvetica,Arial" size="-1">&nbsp;</font></td><td bgcolor="#cccccc">&nbsp;</td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp;//</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp;//</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp;// A new admin client is connected.</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp;// A new admin client is connected.</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp;//</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp;//</font></td></tr>
+<tr bgcolor="#dddddd"><td width="50%"><table width="100%" border=1 cellpadding=5><tr><td><b>Line 605</b>&nbsp;<font size=-1></font></td></tr></table></td><td width="50%"><table width="100%" border=1 cellpadding=5><tr><td><b>Line 699</b>&nbsp;<font size=-1></font></td></tr></table></td>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;msgout.serial ((*sit).Id, (*sit).AliasName, (*sit).ShortName, (*sit).LongName);</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;msgout.serial ((*sit).Id, (*sit).AliasName, (*sit).ShortName, (*sit).LongName);</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;msgout.serial ((*sit).Ready, (*sit).Connected, (*sit).InConfig);</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;msgout.serial ((*sit).Ready, (*sit).Connected, (*sit).InConfig);</font></td></tr>
+<tr><td bgcolor="#cccccc">&nbsp;</td><td bgcolor="#ccccff"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;msgout.serialCont ((*sit).Commands);</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;CNetManager::send (&quot;AS&quot;, msgout, from);</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;CNetManager::send (&quot;AS&quot;, msgout, from);</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp;</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp;</font></td></tr>
+<tr><td bgcolor="#cccccc">&nbsp;</td><td bgcolor="#ccccff"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;displayServices ();</font></td></tr>
+<tr><td bgcolor="#cccccc">&nbsp;</td><td bgcolor="#ccccff"><font face="Helvetica,Arial" size="-1">&nbsp;</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;//</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;//</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// send service alias list</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// send service alias list</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;//</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;//</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp;</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp;</font></td></tr>
+<tr><td bgcolor="#cccccc">&nbsp;</td><td bgcolor="#ccccff"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;nlinfo(&quot;send SAL to admin startup&quot;);</font></td></tr>
+<tr><td bgcolor="#cccccc">&nbsp;</td><td bgcolor="#ccccff"><font face="Helvetica,Arial" size="-1">&nbsp;</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;for (aesit = AdminExecutorServices.begin(); aesit != AdminExecutorServices.end(); aesit++)</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;for (aesit = AdminExecutorServices.begin(); aesit != AdminExecutorServices.end(); aesit++)</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;CMessage msgout2 (CNetManager::getSIDA (&quot;AS&quot;), &quot;SAL&quot;);</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;CMessage msgout2 (CNetManager::getSIDA (&quot;AS&quot;), &quot;SAL&quot;);</font></td></tr>
+<tr bgcolor="#dddddd"><td width="50%"><table width="100%" border=1 cellpadding=5><tr><td><b>Line 634</b>&nbsp;<font size=-1></font></td></tr></table></td><td width="50%"><table width="100%" border=1 cellpadding=5><tr><td><b>Line 733</b>&nbsp;<font size=-1></font></td></tr></table></td>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;if (aesit == AdminExecutorServices.end())</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;if (aesit == AdminExecutorServices.end())</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// don't find the aes, send an error message</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// don't find the aes, send an error message</font></td></tr>
+<tr><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;errorMessage (&quot;couldn't execute command, as didn't find the aes&quot;, from, netbase);</font></td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;messageToClient (0, &quot;couldn't execute command, as didn't find the aes&quot;, from);</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;return;</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;return;</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp;</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp;</font></td></tr>
+<tr bgcolor="#dddddd"><td width="50%"><table width="100%" border=1 cellpadding=5><tr><td><b>Line 657</b>&nbsp;<font size=-1></font></td></tr></table></td><td width="50%"><table width="100%" border=1 cellpadding=5><tr><td><b>Line 756</b>&nbsp;<font size=-1></font></td></tr></table></td>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;if (aesit == AdminExecutorServices.end())</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;if (aesit == AdminExecutorServices.end())</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// don't find the aes, send an error message</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// don't find the aes, send an error message</font></td></tr>
+<tr><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;errorMessage (&quot;couldn't start service, as didn't find the aes&quot;, from, netbase);</font></td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;messageToClient (0, &quot;couldn't start service, as didn't find the aes&quot;, from);</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;return;</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;return;</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp;</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp;</font></td></tr>
+<tr bgcolor="#dddddd"><td width="50%"><table width="100%" border=1 cellpadding=5><tr><td><b>Line 677</b>&nbsp;<font size=-1></font></td></tr></table></td><td width="50%"><table width="100%" border=1 cellpadding=5><tr><td><b>Line 776</b>&nbsp;<font size=-1></font></td></tr></table></td>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;AESIT aesit = findAdminExecutorService (aesid, false);</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;AESIT aesit = findAdminExecutorService (aesid, false);</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;if (aesit == AdminExecutorServices.end())</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;if (aesit == AdminExecutorServices.end())</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{</font></td></tr>
+<tr><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;errorMessage (&quot;couldn't stop service, as didn't find the aes&quot;, from, netbase);</font></td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;messageToClient (0, &quot;couldn't stop service, as didn't find the aes&quot;, from);</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// don't find the aes, send an error message</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// don't find the aes, send an error message</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;return;</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;return;</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}</font></td></tr>
+<tr bgcolor="#dddddd"><td width="50%"><table width="100%" border=1 cellpadding=5><tr><td><b>Line 686</b>&nbsp;<font size=-1></font></td></tr></table></td><td width="50%"><table width="100%" border=1 cellpadding=5><tr><td><b>Line 785</b>&nbsp;<font size=-1></font></td></tr></table></td>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;if (sit == (*aesit).Services.end())</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;if (sit == (*aesit).Services.end())</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// don't find the s, send an error message</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// don't find the s, send an error message</font></td></tr>
+<tr><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;errorMessage (&quot;couldn't stop service, as didn't find the service&quot;, from, netbase);</font></td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;messageToClient (0, &quot;couldn't stop service, as didn't find the service&quot;, from);</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;return;</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;return;</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp;</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp;</font></td></tr>
+<tr bgcolor="#dddddd"><td width="50%"><table width="100%" border=1 cellpadding=5><tr><td><b>Line 708</b>&nbsp;<font size=-1></font></td></tr></table></td><td width="50%"><table width="100%" border=1 cellpadding=5><tr><td><b>Line 807</b>&nbsp;<font size=-1></font></td></tr></table></td>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;AESIT aesit = findAdminExecutorService (aesid, false);</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;AESIT aesit = findAdminExecutorService (aesid, false);</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;if (aesit == AdminExecutorServices.end())</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;if (aesit == AdminExecutorServices.end())</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{</font></td></tr>
+<tr><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;errorMessage (&quot;couldn't stop service, as didn't find the aes&quot;, from, netbase);</font></td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;messageToClient (0, &quot;couldn't stop service, as didn't find the aes&quot;, from);</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// don't find the aes, send an error message</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// don't find the aes, send an error message</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;return;</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;return;</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}</font></td></tr>
+<tr bgcolor="#dddddd"><td width="50%"><table width="100%" border=1 cellpadding=5><tr><td><b>Line 717</b>&nbsp;<font size=-1></font></td></tr></table></td><td width="50%"><table width="100%" border=1 cellpadding=5><tr><td><b>Line 816</b>&nbsp;<font size=-1></font></td></tr></table></td>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;if (sit == (*aesit).Services.end())</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;if (sit == (*aesit).Services.end())</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// don't find the s, send an error message</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// don't find the s, send an error message</font></td></tr>
+<tr><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;errorMessage (&quot;couldn't stop service, as didn't find the service&quot;, from, netbase);</font></td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;messageToClient (0, &quot;couldn't stop service, as didn't find the service&quot;, from);</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;return;</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;return;</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp;</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp;</font></td></tr>
+<tr bgcolor="#dddddd"><td width="50%"><table width="100%" border=1 cellpadding=5><tr><td><b>Line 785</b>&nbsp;<font size=-1></font></td></tr></table></td><td width="50%"><table width="100%" border=1 cellpadding=5><tr><td><b>Line 884</b>&nbsp;<font size=-1></font></td></tr></table></td>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;//</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;//</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp;</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp;</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;CConfigFile::CVar &amp;host = ConfigFile.getVar (&quot;AESHosts&quot;);</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;CConfigFile::CVar &amp;host = ConfigFile.getVar (&quot;AESHosts&quot;);</font></td></tr>
+<tr><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;for (sint i = 0 ; i &lt; host.size (); i+=2)</font></td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;sint i;</font></td></tr>
+<tr><td bgcolor="#99cc99">&nbsp;</td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;for (i = 0 ; i &lt; host.size (); i+=2)</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;string serverAlias = host.asString(i);</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;string serverAlias = host.asString(i);</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;string serverAddr = host.asString(i+1);</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;string serverAddr = host.asString(i+1);</font></td></tr>
+<tr bgcolor="#dddddd"><td width="50%"><table width="100%" border=1 cellpadding=5><tr><td><b>Line 821</b>&nbsp;<font size=-1></font></td></tr></table></td><td width="50%"><table width="100%" border=1 cellpadding=5><tr><td><b>Line 921</b>&nbsp;<font size=-1></font></td></tr></table></td>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;s.InConfig = true;</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;s.InConfig = true;</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;(*aesit).Services.push_back (s);</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;(*aesit).Services.push_back (s);</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}</font></td></tr>
+<tr><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}</font></td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;displayServices ();</font></td></tr>
+<tr><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp;</font></td><td bgcolor="#99cc99">&nbsp;</td></tr>
+<tr><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;bool &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;update ()</font></td><td bgcolor="#99cc99">&nbsp;</td></tr>
+<tr><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{</font></td><td bgcolor="#99cc99">&nbsp;</td></tr>
+<tr><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;return true;</font></td><td bgcolor="#99cc99">&nbsp;</td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp;};</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp;};</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp;</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp;</font></td></tr>
+</table><br><hr noshade width="100%">
+<table border=0><tr><td><table border=1><tr><td>Legend:<br><table border=0 cellspacing=0 cellpadding=1>
+<tr><td align=center bgcolor="#ff9999">Removed from v.1.5</td><td bgcolor="#cccccc">&nbsp;</td></tr><tr bgcolor="#99ff99"><td align=center colspan=2>changed lines</td></tr><tr><td bgcolor="#cccccc">&nbsp;</td><td align=center bgcolor="#ccccff">Added in v.1.11</td></tr></table></td></tr></table>
+<td><FORM METHOD="GET" ACTION="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cpp.diff">
+<INPUT TYPE=HIDDEN NAME="r1" VALUE="1.5">
+<INPUT TYPE=HIDDEN NAME="r2" VALUE="1.11">
+<SELECT NAME="f" onchange="submit()">
+<OPTION VALUE=h SELECTED>Colored Diff<OPTION VALUE=H>Long Colored Diff<OPTION VALUE=u>Unidiff<OPTION VALUE=c>Context Diff<OPTION VALUE=s>Side by Side</SELECT><INPUT TYPE=SUBMIT VALUE="Show">
+</FORM>
+</td></tr></table> \ No newline at end of file
diff --git a/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cpp.diff?r1=1.5&r2=1.13 b/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cpp.diff?r1=1.5&r2=1.13
new file mode 100644
index 00000000..aac5c93a
--- /dev/null
+++ b/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cpp.diff?r1=1.5&r2=1.13
@@ -0,0 +1,547 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"><HTML>
+<HEAD><style> A { color:black }</style>
+<!-- hennerik CVSweb $Revision: 1.93 $ -->
+<TITLE>code/nelns/admin_service/admin_service.cpp - diff - 1.13</TITLE></HEAD>
+<BODY BGCOLOR="#eeeeee">
+<table width="100%" border=0 cellspacing=0 cellpadding=1 bgcolor="#aaaaaa"><tr valign=bottom><td><a href="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cpp"><IMG SRC="http://www.nevrax.org/inc/img/picto-up.gif" ALT="[BACK]" BORDER="0" WIDTH="14" HEIGHT="13"></a> <b>Return to <A HREF="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cpp">admin_service.cpp</A>
+ CVS log</b> <IMG SRC="http://www.nevrax.org/inc/img/picto-news.gif" ALT="[TXT]" BORDER="0" WIDTH="13" HEIGHT="15"></td><td align=right><IMG SRC="http://www.nevrax.org/inc/img/picto-dir.gif" ALT="[DIR]" BORDER="0" WIDTH="15" HEIGHT="13"> <b>Up to <a href="/cvs/cvsweb.cgi/">Nevrax</a> / <a href="/cvs/cvsweb.cgi/code/">code</a> / <a href="/cvs/cvsweb.cgi/code/nelns/">nelns</a> / <a href="/cvs/cvsweb.cgi/code/nelns/admin_service/">admin_service</a></b></td></tr></table><h3 align=center>Diff for /code/nelns/admin_service/admin_service.cpp between version 1.5 and 1.13</h3>
+<table border=0 cellspacing=0 cellpadding=0 width="100%">
+<tr bgcolor="#ffffff">
+<th width="50%" valign=TOP>version 1.5, 2001/05/31 16:44:54</th>
+<th width="50%" valign=TOP>version 1.13, 2002/03/01 10:20:32</th>
+<tr bgcolor="#dddddd"><td width="50%"><table width="100%" border=1 cellpadding=5><tr><td><b>Line 30</b>&nbsp;<font size=-1></font></td></tr></table></td><td width="50%"><table width="100%" border=1 cellpadding=5><tr><td><b>Line 30</b>&nbsp;<font size=-1></font></td></tr></table></td>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp;#include &quot;nel/net/service.h&quot;</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp;#include &quot;nel/net/service.h&quot;</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp;#include &quot;nel/misc/debug.h&quot;</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp;#include &quot;nel/misc/debug.h&quot;</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp;#include &quot;nel/misc/config_file.h&quot;</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp;#include &quot;nel/misc/config_file.h&quot;</font></td></tr>
+<tr><td bgcolor="#cccccc">&nbsp;</td><td bgcolor="#ccccff"><font face="Helvetica,Arial" size="-1">&nbsp;#include &quot;nel/misc/command.h&quot;</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp;</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp;</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp;#include &quot;nel/net/net_manager.h&quot;</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp;#include &quot;nel/net/net_manager.h&quot;</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp;</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp;</font></td></tr>
+<tr bgcolor="#dddddd"><td width="50%"><table width="100%" border=1 cellpadding=5><tr><td><b>Line 51</b>&nbsp;<font size=-1></font></td></tr></table></td><td width="50%"><table width="100%" border=1 cellpadding=5><tr><td><b>Line 52</b>&nbsp;<font size=-1></font></td></tr></table></td>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;bool &nbsp; &nbsp; &nbsp; &nbsp;Ready; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;/// true if the service is ready</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;bool &nbsp; &nbsp; &nbsp; &nbsp;Ready; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;/// true if the service is ready</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;bool &nbsp; &nbsp; &nbsp; &nbsp;Connected; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;/// true if the service is connected to the AES</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;bool &nbsp; &nbsp; &nbsp; &nbsp;Connected; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;/// true if the service is connected to the AES</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;bool &nbsp; &nbsp; &nbsp; &nbsp;InConfig; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;/// true if the service is in the configuration</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;bool &nbsp; &nbsp; &nbsp; &nbsp;InConfig; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;/// true if the service is in the configuration</font></td></tr>
+<tr><td bgcolor="#cccccc">&nbsp;</td><td bgcolor="#ccccff"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;std::vector&lt;NLMISC::CSerialCommand&gt; &nbsp; &nbsp; &nbsp; &nbsp;Commands;</font></td></tr>
+<tr><td bgcolor="#cccccc">&nbsp;</td><td bgcolor="#ccccff"><font face="Helvetica,Arial" size="-1">&nbsp;</font></td></tr>
+<tr><td bgcolor="#cccccc">&nbsp;</td><td bgcolor="#ccccff"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;void setValues (const CService &amp;t)</font></td></tr>
+<tr><td bgcolor="#cccccc">&nbsp;</td><td bgcolor="#ccccff"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{</font></td></tr>
+<tr><td bgcolor="#cccccc">&nbsp;</td><td bgcolor="#ccccff"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// copy all except gtk stuffs</font></td></tr>
+<tr><td bgcolor="#cccccc">&nbsp;</td><td bgcolor="#ccccff"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;Id = t.Id;</font></td></tr>
+<tr><td bgcolor="#cccccc">&nbsp;</td><td bgcolor="#ccccff"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;AliasName = t.AliasName;</font></td></tr>
+<tr><td bgcolor="#cccccc">&nbsp;</td><td bgcolor="#ccccff"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;ShortName = t.ShortName;</font></td></tr>
+<tr><td bgcolor="#cccccc">&nbsp;</td><td bgcolor="#ccccff"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;LongName = t.LongName;</font></td></tr>
+<tr><td bgcolor="#cccccc">&nbsp;</td><td bgcolor="#ccccff"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;Ready = t.Ready;</font></td></tr>
+<tr><td bgcolor="#cccccc">&nbsp;</td><td bgcolor="#ccccff"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;Connected = t.Connected;</font></td></tr>
+<tr><td bgcolor="#cccccc">&nbsp;</td><td bgcolor="#ccccff"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;//InConfig = t.InConfig; never change the inconfig value</font></td></tr>
+<tr><td bgcolor="#cccccc">&nbsp;</td><td bgcolor="#ccccff"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp;};</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp;};</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp;</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp;</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp;typedef list&lt;CService&gt; TServices;</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp;typedef list&lt;CService&gt; TServices;</font></td></tr>
+<tr bgcolor="#dddddd"><td width="50%"><table width="100%" border=1 cellpadding=5><tr><td><b>Line 136</b>&nbsp;<font size=-1></font></td></tr></table></td><td width="50%"><table width="100%" border=1 cellpadding=5><tr><td><b>Line 150</b>&nbsp;<font size=-1></font></td></tr></table></td>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp;{</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp;{</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;for (AESIT aesit = AdminExecutorServices.begin(); aesit != AdminExecutorServices.end(); aesit++)</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;for (AESIT aesit = AdminExecutorServices.begin(); aesit != AdminExecutorServices.end(); aesit++)</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{</font></td></tr>
+<tr><td bgcolor="#cccccc">&nbsp;</td><td bgcolor="#ccccff"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;nlinfo (&quot;&gt; Admin&quot;);</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;for (SIT sit = (*aesit).Services.begin(); sit != (*aesit).Services.end(); sit++)</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;for (SIT sit = (*aesit).Services.begin(); sit != (*aesit).Services.end(); sit++)</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{</font></td></tr>
+<tr><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;nlinfo (&quot;&gt; %s %s %s %d %d&quot;, (*aesit).SockId-&gt;asString().c_str(), (*sit).ShortName.c_str(), (*sit).LongName.c_str(), (*aesit).Id, (*sit).Id);</font></td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;nlinfo (&quot; &nbsp;&gt; '%s' '%s' '%s' '%s' %d %d&quot;, (*aesit).SockId-&gt;asString().c_str(), (*sit).AliasName.c_str(), (*sit).ShortName.c_str(), (*sit).LongName.c_str(), (*aesit).Id, (*sit).Id);</font></td></tr>
+<tr><td bgcolor="#99cc99">&nbsp;</td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}</font></td></tr>
+<tr><td bgcolor="#cccccc">&nbsp;</td><td bgcolor="#ccccff"><font face="Helvetica,Arial" size="-1">&nbsp;</font></td></tr>
+<tr><td bgcolor="#cccccc">&nbsp;</td><td bgcolor="#ccccff"><font face="Helvetica,Arial" size="-1">&nbsp;</font></td></tr>
+<tr><td bgcolor="#cccccc">&nbsp;</td><td bgcolor="#ccccff"><font face="Helvetica,Arial" size="-1">&nbsp;// send a message to a client. if ok is 0 it s an error or it s a normal </font></td></tr>
+<tr><td bgcolor="#cccccc">&nbsp;</td><td bgcolor="#ccccff"><font face="Helvetica,Arial" size="-1">&nbsp;void messageToClient (uint8 ok, string msg, TSockId from = NULL)</font></td></tr>
+<tr><td bgcolor="#cccccc">&nbsp;</td><td bgcolor="#ccccff"><font face="Helvetica,Arial" size="-1">&nbsp;{</font></td></tr>
+<tr><td bgcolor="#cccccc">&nbsp;</td><td bgcolor="#ccccff"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;CMessage msgout (CNetManager::getSIDA (&quot;AS&quot;), &quot;MESSAGE&quot;);</font></td></tr>
+<tr><td bgcolor="#cccccc">&nbsp;</td><td bgcolor="#ccccff"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;msgout.serial (ok, msg);</font></td></tr>
+<tr><td bgcolor="#cccccc">&nbsp;</td><td bgcolor="#ccccff"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;CNetManager::send (&quot;AS&quot;, msgout, from);</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp;}</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp;}</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp;</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp;</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp;</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp;</font></td></tr>
+<tr bgcolor="#dddddd"><td width="50%"><table width="100%" border=1 cellpadding=5><tr><td><b>Line 167</b>&nbsp;<font size=-1></font></td></tr></table></td><td width="50%"><table width="100%" border=1 cellpadding=5><tr><td><b>Line 191</b>&nbsp;<font size=-1></font></td></tr></table></td>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;if (StartAllServicesPos*2 &gt;= (uint32)script.size())</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;if (StartAllServicesPos*2 &gt;= (uint32)script.size())</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;StartAllServices = false;</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;StartAllServices = false;</font></td></tr>
+<tr><td bgcolor="#cccccc">&nbsp;</td><td bgcolor="#ccccff"><font face="Helvetica,Arial" size="-1">&nbsp;</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;nlinfo(&quot;end of the script&quot;);</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;nlinfo(&quot;end of the script&quot;);</font></td></tr>
+<tr><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// todo send that the script is finish to the admin</font></td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;messageToClient (1, &quot;Start All Service finnished correctly&quot;);</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;return;</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;return;</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp;</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp;</font></td></tr>
+<tr bgcolor="#dddddd"><td width="50%"><table width="100%" border=1 cellpadding=5><tr><td><b>Line 184</b>&nbsp;<font size=-1></font></td></tr></table></td><td width="50%"><table width="100%" border=1 cellpadding=5><tr><td><b>Line 209</b>&nbsp;<font size=-1></font></td></tr></table></td>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;catch(EBadSize &amp;)</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;catch(EBadSize &amp;)</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{</font></td></tr>
+<tr><td bgcolor="#cccccc">&nbsp;</td><td bgcolor="#ccccff"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;messageToClient (1, &quot;'Services' variable does not contains a good number of entries (must be a multiple of 2)&quot;);</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;nlwarning (&quot;'Services' variable does not contains a good number of entries (must be a multiple of 2)&quot;);</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;nlwarning (&quot;'Services' variable does not contains a good number of entries (must be a multiple of 2)&quot;);</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;StartAllServices = false;</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;StartAllServices = false;</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;return;</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;return;</font></td></tr>
+<tr bgcolor="#dddddd"><td width="50%"><table width="100%" border=1 cellpadding=5><tr><td><b>Line 192</b>&nbsp;<font size=-1></font></td></tr></table></td><td width="50%"><table width="100%" border=1 cellpadding=5><tr><td><b>Line 218</b>&nbsp;<font size=-1></font></td></tr></table></td>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;AESIT aesit = findAdminExecutorService (serverAlias, false);</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;AESIT aesit = findAdminExecutorService (serverAlias, false);</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;if (aesit == AdminExecutorServices.end())</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;if (aesit == AdminExecutorServices.end())</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{</font></td></tr>
+<tr><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;StartAllServices = false;</font></td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;messageToClient (1, &quot;don't find the server&quot;);</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;nlwarning(&quot;don't find the server&quot;);</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;nlwarning(&quot;don't find the server&quot;);</font></td></tr>
+<tr><td bgcolor="#cccccc">&nbsp;</td><td bgcolor="#ccccff"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;StartAllServices = false;</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;return;</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;return;</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp;</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp;</font></td></tr>
+<tr bgcolor="#dddddd"><td width="50%"><table width="100%" border=1 cellpadding=5><tr><td><b>Line 218</b>&nbsp;<font size=-1></font></td></tr></table></td><td width="50%"><table width="100%" border=1 cellpadding=5><tr><td><b>Line 245</b>&nbsp;<font size=-1></font></td></tr></table></td>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;catch(EUnknownVar&amp;)</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;catch(EUnknownVar&amp;)</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{</font></td></tr>
+<tr><td bgcolor="#cccccc">&nbsp;</td><td bgcolor="#ccccff"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;messageToClient (1, &quot;'Services' variable is not found&quot;);</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;nlwarning (&quot;'Services' variable is not found&quot;);</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;nlwarning (&quot;'Services' variable is not found&quot;);</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;StartAllServices = false;</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;StartAllServices = false;</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;return;</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;return;</font></td></tr>
+<tr bgcolor="#dddddd"><td width="50%"><table width="100%" border=1 cellpadding=5><tr><td><b>Line 228</b>&nbsp;<font size=-1></font></td></tr></table></td><td width="50%"><table width="100%" border=1 cellpadding=5><tr><td><b>Line 256</b>&nbsp;<font size=-1></font></td></tr></table></td>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp;{</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp;{</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;if (StartAllServices)</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;if (StartAllServices)</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{</font></td></tr>
+<tr><td bgcolor="#cccccc">&nbsp;</td><td bgcolor="#ccccff"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;messageToClient (1, &quot;already running a script, reset it&quot;);</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;nlwarning(&quot;already running a script, reset it&quot;);</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;nlwarning(&quot;already running a script, reset it&quot;);</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;StartAllServices = false;</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;StartAllServices = false;</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}</font></td></tr>
+<tr bgcolor="#dddddd"><td width="50%"><table width="100%" border=1 cellpadding=5><tr><td><b>Line 242</b>&nbsp;<font size=-1></font></td></tr></table></td><td width="50%"><table width="100%" border=1 cellpadding=5><tr><td><b>Line 271</b>&nbsp;<font size=-1></font></td></tr></table></td>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;AESIT aesit = findAdminExecutorService (serverAlias, false);</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;AESIT aesit = findAdminExecutorService (serverAlias, false);</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;if (aesit == AdminExecutorServices.end())</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;if (aesit == AdminExecutorServices.end())</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{</font></td></tr>
+<tr><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;nlwarning(&quot;aes '%s' not running, can't run the script&quot;, serverAlias.c_str());</font></td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;messageToClient (1, &quot;an aes is not running, can't run the script&quot;);</font></td></tr>
+<tr><td bgcolor="#99cc99">&nbsp;</td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;nlwarning(&quot;aes '%s' isn't running, can't run the script&quot;, serverAlias.c_str());</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;return;</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;return;</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;catch(EConfigFile &amp;)</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;catch(EConfigFile &amp;)</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{</font></td></tr>
+<tr><td bgcolor="#cccccc">&nbsp;</td><td bgcolor="#ccccff"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;messageToClient (1, &quot;bad config file&quot;);</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;nlwarning (&quot;bad config file&quot;);</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;nlwarning (&quot;bad config file&quot;);</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;return;</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;return;</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}</font></td></tr>
+<tr bgcolor="#dddddd"><td width="50%"><table width="100%" border=1 cellpadding=5><tr><td><b>Line 280</b>&nbsp;<font size=-1></font></td></tr></table></td><td width="50%"><table width="100%" border=1 cellpadding=5><tr><td><b>Line 311</b>&nbsp;<font size=-1></font></td></tr></table></td>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;nlinfo(&quot;end of command result&quot;);</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;nlinfo(&quot;end of command result&quot;);</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp;}</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp;}</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp;</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp;</font></td></tr>
+<tr><td bgcolor="#cccccc">&nbsp;</td><td bgcolor="#ccccff"><font face="Helvetica,Arial" size="-1">&nbsp;// get the service list from the admin exec and send the list to all admin client</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp;static void cbServiceList (CMessage&amp; msgin, TSockId from, CCallbackNetBase &amp;netbase)</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp;static void cbServiceList (CMessage&amp; msgin, TSockId from, CCallbackNetBase &amp;netbase)</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp;{</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp;{</font></td></tr>
+<tr><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp;/* &nbsp; &nbsp; &nbsp;// get the service list from the admin exec and send the list to all admin client</font></td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;CAdminExecutorService *aes = (CAdminExecutorService*) (uint) from-&gt;appId();</font></td></tr>
+<tr><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;CAdminExecutorService *aes = (CAdminExecutorService*) from-&gt;appId();</font></td><td bgcolor="#99cc99">&nbsp;</td></tr>
+<tr><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;aes-&gt;Services.clear();</font></td><td bgcolor="#99cc99">&nbsp;</td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp;</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp;</font></td></tr>
+<tr><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;CMessage msgout (CNetManager::getSIDA (&quot;AS&quot;), &quot;SL&quot;);</font></td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;//</font></td></tr>
+<tr><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp;</font></td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// Get the list of service from aes</font></td></tr>
+<tr><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;uint32 nbaes = 1;</font></td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;//</font></td></tr>
+<tr><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;msgout.serial (nbaes);</font></td><td bgcolor="#99cc99">&nbsp;</td></tr>
+<tr><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;msgout.serial (aes-&gt;Id);</font></td><td bgcolor="#99cc99">&nbsp;</td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp;</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp;</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;uint32 nbs;</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;uint32 nbs;</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;msgin.serial (nbs);</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;msgin.serial (nbs);</font></td></tr>
+<tr><td bgcolor="#ff9999"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;msgout.serial (nbs);</font></td><td bgcolor="#cccccc">&nbsp;</td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp;</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp;</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;for (uint32 i = 0; i &lt; nbs; i++)</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;for (uint32 i = 0; i &lt; nbs; i++)</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{</font></td></tr>
+<tr><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;uint32 sid;</font></td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// find the service</font></td></tr>
+<tr><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;msgin.serial(sid);</font></td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;CService s;</font></td></tr>
+<tr><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp;</font></td><td bgcolor="#99cc99">&nbsp;</td></tr>
+<tr><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;aes-&gt;Services.push_back (CService(sid));</font></td><td bgcolor="#99cc99">&nbsp;</td></tr>
+<tr><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;CService *s = &amp;(aes-&gt;Services.back());</font></td><td bgcolor="#99cc99">&nbsp;</td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp;</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp;</font></td></tr>
+<tr><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;msgin.serial(s-&gt;ShortName, s-&gt;LongName, s-&gt;Ready);</font></td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;msgin.serial (s.Id, s.AliasName, s.ShortName, s.LongName, s.Ready);</font></td></tr>
+<tr><td bgcolor="#99cc99">&nbsp;</td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;msgin.serialCont (s.Commands);</font></td></tr>
+<tr><td bgcolor="#99cc99">&nbsp;</td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;s.Connected = true;</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp;</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp;</font></td></tr>
+<tr><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;msgout.serial (s-&gt;Id, s-&gt;ShortName, s-&gt;LongName, s-&gt;Ready);</font></td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;if (!s.AliasName.empty())</font></td></tr>
+<tr><td bgcolor="#99cc99">&nbsp;</td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{</font></td></tr>
+<tr><td bgcolor="#99cc99">&nbsp;</td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;SIT sit = aes-&gt;findService (s.AliasName, false);</font></td></tr>
+<tr><td bgcolor="#99cc99">&nbsp;</td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;if (sit == aes-&gt;Services.end ())</font></td></tr>
+<tr><td bgcolor="#99cc99">&nbsp;</td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{</font></td></tr>
+<tr><td bgcolor="#99cc99">&nbsp;</td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;aes-&gt;Services.push_back (s);</font></td></tr>
+<tr><td bgcolor="#99cc99">&nbsp;</td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}</font></td></tr>
+<tr><td bgcolor="#99cc99">&nbsp;</td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;else</font></td></tr>
+<tr><td bgcolor="#99cc99">&nbsp;</td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{</font></td></tr>
+<tr><td bgcolor="#99cc99">&nbsp;</td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;nlassert (&quot;the service already exists with alias, update it&quot;);</font></td></tr>
+<tr><td bgcolor="#99cc99">&nbsp;</td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;(*sit).setValues (s);</font></td></tr>
+<tr><td bgcolor="#99cc99">&nbsp;</td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}</font></td></tr>
+<tr><td bgcolor="#99cc99">&nbsp;</td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}</font></td></tr>
+<tr><td bgcolor="#99cc99">&nbsp;</td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;else</font></td></tr>
+<tr><td bgcolor="#99cc99">&nbsp;</td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{</font></td></tr>
+<tr><td bgcolor="#99cc99">&nbsp;</td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;SIT sit = aes-&gt;findService (s.Id, false);</font></td></tr>
+<tr><td bgcolor="#99cc99">&nbsp;</td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;if (sit == aes-&gt;Services.end ())</font></td></tr>
+<tr><td bgcolor="#99cc99">&nbsp;</td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{</font></td></tr>
+<tr><td bgcolor="#99cc99">&nbsp;</td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;aes-&gt;Services.push_back (s);</font></td></tr>
+<tr><td bgcolor="#99cc99">&nbsp;</td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}</font></td></tr>
+<tr><td bgcolor="#99cc99">&nbsp;</td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;else</font></td></tr>
+<tr><td bgcolor="#99cc99">&nbsp;</td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{</font></td></tr>
+<tr><td bgcolor="#99cc99">&nbsp;</td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;nlassert (&quot;the service already exists with id, update it&quot;);</font></td></tr>
+<tr><td bgcolor="#99cc99">&nbsp;</td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;(*sit).setValues (s);</font></td></tr>
+<tr><td bgcolor="#99cc99">&nbsp;</td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}</font></td></tr>
+<tr><td bgcolor="#99cc99">&nbsp;</td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}</font></td></tr>
+<tr><td bgcolor="#ff9999"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;CNetManager::send (&quot;AS&quot;, msgout, 0);</font></td><td bgcolor="#cccccc">&nbsp;</td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;displayServices ();</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;displayServices ();</font></td></tr>
+<tr><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp;*/}</font></td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp;</font></td></tr>
+<tr><td bgcolor="#99cc99">&nbsp;</td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;//</font></td></tr>
+<tr><td bgcolor="#99cc99">&nbsp;</td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// Send the new list to all admin</font></td></tr>
+<tr><td bgcolor="#99cc99">&nbsp;</td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;//</font></td></tr>
+<tr><td bgcolor="#99cc99">&nbsp;</td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp;</font></td></tr>
+<tr><td bgcolor="#99cc99">&nbsp;</td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;CMessage msgout (CNetManager::getSIDA (&quot;AS&quot;), &quot;SERVICE_LIST&quot;);</font></td></tr>
+<tr><td bgcolor="#99cc99">&nbsp;</td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;uint32 nbaes = 1;</font></td></tr>
+<tr><td bgcolor="#99cc99">&nbsp;</td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;msgout.serial (nbaes);</font></td></tr>
+<tr><td bgcolor="#99cc99">&nbsp;</td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;msgout.serial (aes-&gt;Id);</font></td></tr>
+<tr><td bgcolor="#99cc99">&nbsp;</td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;uint32 ss = aes-&gt;Services.size();</font></td></tr>
+<tr><td bgcolor="#99cc99">&nbsp;</td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;msgout.serial (ss);</font></td></tr>
+<tr><td bgcolor="#99cc99">&nbsp;</td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp;</font></td></tr>
+<tr><td bgcolor="#99cc99">&nbsp;</td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;for (SIT sit = aes-&gt;Services.begin(); sit != aes-&gt;Services.end(); sit++)</font></td></tr>
+<tr><td bgcolor="#99cc99">&nbsp;</td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{</font></td></tr>
+<tr><td bgcolor="#99cc99">&nbsp;</td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;msgout.serial ((*sit).Id, (*sit).AliasName, (*sit).ShortName, (*sit).LongName);</font></td></tr>
+<tr><td bgcolor="#99cc99">&nbsp;</td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;msgout.serial ((*sit).Ready, (*sit).Connected, (*sit).InConfig);</font></td></tr>
+<tr><td bgcolor="#99cc99">&nbsp;</td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;msgout.serialCont ((*sit).Commands);</font></td></tr>
+<tr><td bgcolor="#99cc99">&nbsp;</td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}</font></td></tr>
+<tr><td bgcolor="#99cc99">&nbsp;</td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;CNetManager::send (&quot;AS&quot;, msgout, 0);</font></td></tr>
+<tr><td bgcolor="#99cc99">&nbsp;</td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp;}</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp;</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp;</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp;static void cbServiceAliasList (CMessage&amp; msgin, TSockId from, CCallbackNetBase &amp;netbase)</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp;static void cbServiceAliasList (CMessage&amp; msgin, TSockId from, CCallbackNetBase &amp;netbase)</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp;{</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp;{</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// get the service list from the admin exec and send the list to all admin client</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// get the service list from the admin exec and send the list to all admin client</font></td></tr>
+<tr><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;CAdminExecutorService *aes = (CAdminExecutorService*) from-&gt;appId();</font></td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;CAdminExecutorService *aes = (CAdminExecutorService*) (uint) from-&gt;appId();</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp;</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp;</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;aes-&gt;ServiceAliasList.clear ();</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;aes-&gt;ServiceAliasList.clear ();</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;msgin.serialCont (aes-&gt;ServiceAliasList);</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;msgin.serialCont (aes-&gt;ServiceAliasList);</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp;</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp;</font></td></tr>
+<tr><td bgcolor="#cccccc">&nbsp;</td><td bgcolor="#ccccff"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;nlinfo(&quot;send SAL to admin callback from aes&quot;);</font></td></tr>
+<tr><td bgcolor="#cccccc">&nbsp;</td><td bgcolor="#ccccff"><font face="Helvetica,Arial" size="-1">&nbsp;</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;CMessage msgout (CNetManager::getSIDA (&quot;AS&quot;), &quot;SAL&quot;);</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;CMessage msgout (CNetManager::getSIDA (&quot;AS&quot;), &quot;SAL&quot;);</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;msgout.serial (aes-&gt;Id);</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;msgout.serial (aes-&gt;Id);</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;msgout.serialCont (aes-&gt;ServiceAliasList);</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;msgout.serialCont (aes-&gt;ServiceAliasList);</font></td></tr>
+<tr bgcolor="#dddddd"><td width="50%"><table width="100%" border=1 cellpadding=5><tr><td><b>Line 332</b>&nbsp;<font size=-1></font></td></tr></table></td><td width="50%"><table width="100%" border=1 cellpadding=5><tr><td><b>Line 403</b>&nbsp;<font size=-1></font></td></tr></table></td>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp;</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp;</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp;static void cbServiceIdentification (CMessage&amp; msgin, TSockId from, CCallbackNetBase &amp;netbase)</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp;static void cbServiceIdentification (CMessage&amp; msgin, TSockId from, CCallbackNetBase &amp;netbase)</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp;{</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp;{</font></td></tr>
+<tr><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;CAdminExecutorService *aes = (CAdminExecutorService*) from-&gt;appId();</font></td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;CAdminExecutorService *aes = (CAdminExecutorService*) (uint) from-&gt;appId();</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp;</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp;</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;uint32 sid;</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;uint32 sid;</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;string alias;</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;string alias;</font></td></tr>
+<tr bgcolor="#dddddd"><td width="50%"><table width="100%" border=1 cellpadding=5><tr><td><b>Line 365</b>&nbsp;<font size=-1></font></td></tr></table></td><td width="50%"><table width="100%" border=1 cellpadding=5><tr><td><b>Line 436</b>&nbsp;<font size=-1></font></td></tr></table></td>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;if (sit == aes-&gt;Services.end ())</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;if (sit == aes-&gt;Services.end ())</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// normal case for unknown services</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// normal case for unknown services</font></td></tr>
+<tr><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;nlwarning (&quot;new service with alias (%s) but not in my list&quot;, alias.c_str());</font></td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;nlwarning (&quot;new service without alias and not in my list, add it&quot;);</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;else</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;else</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{</font></td></tr>
+<tr><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;nlwarning (&quot;new service without alias is already in my list with id %d&quot;, sid);</font></td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;nlwarning (&quot;new service without alias is already in my list with id %d, add it&quot;, sid);</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;aes-&gt;Services.push_back (CService ());</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;aes-&gt;Services.push_back (CService ());</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;sit = aes-&gt;Services.end();</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;sit = aes-&gt;Services.end();</font></td></tr>
+<tr bgcolor="#dddddd"><td width="50%"><table width="100%" border=1 cellpadding=5><tr><td><b>Line 380</b>&nbsp;<font size=-1></font></td></tr></table></td><td width="50%"><table width="100%" border=1 cellpadding=5><tr><td><b>Line 451</b>&nbsp;<font size=-1></font></td></tr></table></td>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;(*sit).AliasName = alias;</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;(*sit).AliasName = alias;</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;(*sit).Connected = true;</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;(*sit).Connected = true;</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;msgin.serial ((*sit).ShortName, (*sit).LongName);</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;msgin.serial ((*sit).ShortName, (*sit).LongName);</font></td></tr>
+<tr><td bgcolor="#cccccc">&nbsp;</td><td bgcolor="#ccccff"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;msgin.serialCont ((*sit).Commands);</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp;</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp;</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;nlinfo (&quot;*:%d:%d is identified to be '%s' '%s' '%s'&quot;, aes-&gt;Id, sid, (*sit).AliasName.c_str(), (*sit).ShortName.c_str(), (*sit).LongName.c_str());</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;nlinfo (&quot;*:%d:%d is identified to be '%s' '%s' '%s'&quot;, aes-&gt;Id, sid, (*sit).AliasName.c_str(), (*sit).ShortName.c_str(), (*sit).LongName.c_str());</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp;</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp;</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// broadcast the message to all admin client</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// broadcast the message to all admin client</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;CMessage msgout (CNetManager::getSIDA (&quot;AS&quot;), &quot;SID&quot;);</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;CMessage msgout (CNetManager::getSIDA (&quot;AS&quot;), &quot;SID&quot;);</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;msgout.serial (aes-&gt;Id, sid, (*sit).AliasName, (*sit).ShortName, (*sit).LongName);</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;msgout.serial (aes-&gt;Id, sid, (*sit).AliasName, (*sit).ShortName, (*sit).LongName);</font></td></tr>
+<tr><td bgcolor="#cccccc">&nbsp;</td><td bgcolor="#ccccff"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;msgout.serialCont ((*sit).Commands);</font></td></tr>
+<tr><td bgcolor="#cccccc">&nbsp;</td><td bgcolor="#ccccff"><font face="Helvetica,Arial" size="-1">&nbsp;</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;CNetManager::send (&quot;AS&quot;, msgout, 0);</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;CNetManager::send (&quot;AS&quot;, msgout, 0);</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp;}</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp;}</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp;</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp;</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp;static void cbServiceReady (CMessage&amp; msgin, TSockId from, CCallbackNetBase &amp;netbase)</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp;static void cbServiceReady (CMessage&amp; msgin, TSockId from, CCallbackNetBase &amp;netbase)</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp;{</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp;{</font></td></tr>
+<tr><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;CAdminExecutorService *aes = (CAdminExecutorService*) from-&gt;appId();</font></td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;CAdminExecutorService *aes = (CAdminExecutorService*) (uint) from-&gt;appId();</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp;</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp;</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;uint32 sid;</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;uint32 sid;</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;msgin.serial (sid);</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;msgin.serial (sid);</font></td></tr>
+<tr bgcolor="#dddddd"><td width="50%"><table width="100%" border=1 cellpadding=5><tr><td><b>Line 413</b>&nbsp;<font size=-1></font></td></tr></table></td><td width="50%"><table width="100%" border=1 cellpadding=5><tr><td><b>Line 487</b>&nbsp;<font size=-1></font></td></tr></table></td>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp;</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp;</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp;static void cbServiceConnection (CMessage&amp; msgin, TSockId from, CCallbackNetBase &amp;netbase)</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp;static void cbServiceConnection (CMessage&amp; msgin, TSockId from, CCallbackNetBase &amp;netbase)</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp;{</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp;{</font></td></tr>
+<tr><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;CAdminExecutorService *aes = (CAdminExecutorService*) from-&gt;appId();</font></td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;CAdminExecutorService *aes = (CAdminExecutorService*) (uint) from-&gt;appId();</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp;</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp;</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;uint32 sid;</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;uint32 sid;</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;msgin.serial (sid);</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;msgin.serial (sid);</font></td></tr>
+<tr bgcolor="#dddddd"><td width="50%"><table width="100%" border=1 cellpadding=5><tr><td><b>Line 433</b>&nbsp;<font size=-1></font></td></tr></table></td><td width="50%"><table width="100%" border=1 cellpadding=5><tr><td><b>Line 507</b>&nbsp;<font size=-1></font></td></tr></table></td>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp;</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp;</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp;static void cbServiceDisconnection (CMessage&amp; msgin, TSockId from, CCallbackNetBase &amp;netbase)</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp;static void cbServiceDisconnection (CMessage&amp; msgin, TSockId from, CCallbackNetBase &amp;netbase)</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp;{</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp;{</font></td></tr>
+<tr><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;CAdminExecutorService *aes = (CAdminExecutorService*) from-&gt;appId();</font></td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;CAdminExecutorService *aes = (CAdminExecutorService*) (uint) from-&gt;appId();</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp;</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp;</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;uint32 sid;</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;uint32 sid;</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;msgin.serial (sid);</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;msgin.serial (sid);</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp;</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp;</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;nlinfo (&quot;*:%d:%d disconnected&quot;, aes-&gt;Id, sid);</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;nlinfo (&quot;*:%d:%d disconnected&quot;, aes-&gt;Id, sid);</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp;</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp;</font></td></tr>
+<tr><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;SIT sit = aes-&gt;findService(sid);</font></td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;SIT sit = aes-&gt;findService(sid, false);</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp;</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp;</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// broadcast the message to all admin client</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// broadcast the message to all admin client</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;CMessage msgout (CNetManager::getSIDA (&quot;AS&quot;), &quot;SD&quot;);</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;CMessage msgout (CNetManager::getSIDA (&quot;AS&quot;), &quot;SD&quot;);</font></td></tr>
+<tr><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;msgout.serial (aes-&gt;Id, (*sit).Id);</font></td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;msgout.serial (aes-&gt;Id, sid);</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;CNetManager::send (&quot;AS&quot;, msgout, 0);</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;CNetManager::send (&quot;AS&quot;, msgout, 0);</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp;</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp;</font></td></tr>
+<tr><td bgcolor="#cccccc">&nbsp;</td><td bgcolor="#ccccff"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// the service could disconnect before it's identification, in this case, we don't have it in the service list</font></td></tr>
+<tr><td bgcolor="#cccccc">&nbsp;</td><td bgcolor="#ccccff"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;if (sit != aes-&gt;Services.end ())</font></td></tr>
+<tr><td bgcolor="#cccccc">&nbsp;</td><td bgcolor="#ccccff"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;if ((*sit).InConfig)</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;if ((*sit).InConfig)</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;(*sit).Ready = (*sit).Connected = false;</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;(*sit).Ready = (*sit).Connected = false;</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;(*sit).Id = 0xFFFFFFFF;</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;(*sit).Id = 0xFFFFFFFF;</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;(*sit).ShortName = (*sit).LongName = &quot;&quot;;</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;(*sit).ShortName = (*sit).LongName = &quot;&quot;;</font></td></tr>
+<tr><td bgcolor="#cccccc">&nbsp;</td><td bgcolor="#ccccff"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;(*sit).Commands.clear ();</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;else</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;else</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{</font></td></tr>
+<tr bgcolor="#dddddd"><td width="50%"><table width="100%" border=1 cellpadding=5><tr><td><b>Line 460</b>&nbsp;<font size=-1></font></td></tr></table></td><td width="50%"><table width="100%" border=1 cellpadding=5><tr><td><b>Line 538</b>&nbsp;<font size=-1></font></td></tr></table></td>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp;}</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp;}</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp;</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp;</font></td></tr>
+<tr><td bgcolor="#cccccc">&nbsp;</td><td bgcolor="#ccccff"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;displayServices ();</font></td></tr>
+<tr><td bgcolor="#cccccc">&nbsp;</td><td bgcolor="#ccccff"><font face="Helvetica,Arial" size="-1">&nbsp;}</font></td></tr>
+<tr><td bgcolor="#cccccc">&nbsp;</td><td bgcolor="#ccccff"><font face="Helvetica,Arial" size="-1">&nbsp;</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp;// i'm connected to a new admin executor service</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp;// i'm connected to a new admin executor service</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp;void cbAESConnection (const string &amp;serviceName, TSockId from, void *arg)</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp;void cbAESConnection (const string &amp;serviceName, TSockId from, void *arg)</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp;{</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp;{</font></td></tr>
+<tr bgcolor="#dddddd"><td width="50%"><table width="100%" border=1 cellpadding=5><tr><td><b>Line 467</b>&nbsp;<font size=-1></font></td></tr></table></td><td width="50%"><table width="100%" border=1 cellpadding=5><tr><td><b>Line 548</b>&nbsp;<font size=-1></font></td></tr></table></td>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;CAdminExecutorService *aes = &amp;(*aesit);</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;CAdminExecutorService *aes = &amp;(*aesit);</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// set the appid to find the aes in O(1)</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// set the appid to find the aes in O(1)</font></td></tr>
+<tr><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;from-&gt;setAppId ((uint64)aes);</font></td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;from-&gt;setAppId ((uint64)(uint)aes);</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp;</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp;</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;aes-&gt;Connected = true;</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;aes-&gt;Connected = true;</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;nlinfo (&quot;*:%d:* connected&quot;, aes-&gt;Id);</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;nlinfo (&quot;*:%d:* connected&quot;, aes-&gt;Id);</font></td></tr>
+<tr bgcolor="#dddddd"><td width="50%"><table width="100%" border=1 cellpadding=5><tr><td><b>Line 490</b>&nbsp;<font size=-1></font></td></tr></table></td><td width="50%"><table width="100%" border=1 cellpadding=5><tr><td><b>Line 571</b>&nbsp;<font size=-1></font></td></tr></table></td>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp;void cbAESDisconnection (const string &amp;serviceName, TSockId from, void *arg)</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp;void cbAESDisconnection (const string &amp;serviceName, TSockId from, void *arg)</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp;{</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp;{</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// get the aes with the appid</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// get the aes with the appid</font></td></tr>
+<tr><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;CAdminExecutorService *aes = (CAdminExecutorService*) from-&gt;appId();</font></td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;CAdminExecutorService *aes = (CAdminExecutorService*) (uint) from-&gt;appId();</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp;</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp;</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;aes-&gt;Connected = false;</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;aes-&gt;Connected = false;</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp;</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp;</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;SIT sit;</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;SIT sit;</font></td></tr>
+<tr><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;for (sit = aes-&gt;Services.begin(); sit != aes-&gt;Services.end(); sit++)</font></td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;for (sit = aes-&gt;Services.begin(); sit != aes-&gt;Services.end();)</font></td></tr>
+<tr><td bgcolor="#99cc99">&nbsp;</td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{</font></td></tr>
+<tr><td bgcolor="#99cc99">&nbsp;</td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// keep only inconfig services</font></td></tr>
+<tr><td bgcolor="#99cc99">&nbsp;</td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;if ((*sit).InConfig)</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;(*sit).Id = 0xFFFFFFFF;</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;(*sit).Id = 0xFFFFFFFF;</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;(*sit).ShortName = (*sit).LongName = &quot;&quot;;</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;(*sit).ShortName = (*sit).LongName = &quot;&quot;;</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;(*sit).Ready = (*sit).Connected = false;</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;(*sit).Ready = (*sit).Connected = false;</font></td></tr>
+<tr><td bgcolor="#cccccc">&nbsp;</td><td bgcolor="#ccccff"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;sit++;</font></td></tr>
+<tr><td bgcolor="#cccccc">&nbsp;</td><td bgcolor="#ccccff"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}</font></td></tr>
+<tr><td bgcolor="#cccccc">&nbsp;</td><td bgcolor="#ccccff"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;else</font></td></tr>
+<tr><td bgcolor="#cccccc">&nbsp;</td><td bgcolor="#ccccff"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{</font></td></tr>
+<tr><td bgcolor="#cccccc">&nbsp;</td><td bgcolor="#ccccff"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// erase only if it's not a service in the config</font></td></tr>
+<tr><td bgcolor="#cccccc">&nbsp;</td><td bgcolor="#ccccff"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;sit = aes-&gt;Services.erase (sit);</font></td></tr>
+<tr><td bgcolor="#cccccc">&nbsp;</td><td bgcolor="#ccccff"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp;</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp;</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;nlinfo (&quot;*:%d:* disconnected&quot;, aes-&gt;Id);</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;nlinfo (&quot;*:%d:* disconnected&quot;, aes-&gt;Id);</font></td></tr>
+<tr bgcolor="#dddddd"><td width="50%"><table width="100%" border=1 cellpadding=5><tr><td><b>Line 510</b>&nbsp;<font size=-1></font></td></tr></table></td><td width="50%"><table width="100%" border=1 cellpadding=5><tr><td><b>Line 601</b>&nbsp;<font size=-1></font></td></tr></table></td>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;CNetManager::send (&quot;AS&quot;, msgout, 0);</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;CNetManager::send (&quot;AS&quot;, msgout, 0);</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp;*/</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp;*/</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp;</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp;</font></td></tr>
+<tr><td bgcolor="#cccccc">&nbsp;</td><td bgcolor="#ccccff"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;displayServices ();</font></td></tr>
+<tr><td bgcolor="#cccccc">&nbsp;</td><td bgcolor="#ccccff"><font face="Helvetica,Arial" size="-1">&nbsp;</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// broadcast the new state of this AES</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// broadcast the new state of this AES</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;CMessage msgout (CNetManager::getSIDA (&quot;AS&quot;), &quot;AES_LIST&quot;);</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;CMessage msgout (CNetManager::getSIDA (&quot;AS&quot;), &quot;AES_LIST&quot;);</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;uint32 nbaes = 1;</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;uint32 nbaes = 1;</font></td></tr>
+<tr bgcolor="#dddddd"><td width="50%"><table width="100%" border=1 cellpadding=5><tr><td><b>Line 522</b>&nbsp;<font size=-1></font></td></tr></table></td><td width="50%"><table width="100%" border=1 cellpadding=5><tr><td><b>Line 615</b>&nbsp;<font size=-1></font></td></tr></table></td>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp;{</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp;{</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// received an answer for a command, give it to all admin client</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// received an answer for a command, give it to all admin client</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp;</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp;</font></td></tr>
+<tr><td bgcolor="#cccccc">&nbsp;</td><td bgcolor="#ccccff"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// get the aes with the appid</font></td></tr>
+<tr><td bgcolor="#cccccc">&nbsp;</td><td bgcolor="#ccccff"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;CAdminExecutorService *aes = (CAdminExecutorService*) (uint) from-&gt;appId();</font></td></tr>
+<tr><td bgcolor="#cccccc">&nbsp;</td><td bgcolor="#ccccff"><font face="Helvetica,Arial" size="-1">&nbsp;</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// broadcast the message to the admin service</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// broadcast the message to the admin service</font></td></tr>
+<tr><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;CMessage msgout (CNetManager::getSIDA (&quot;AS&quot;), &quot;LOG&quot;);</font></td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;CMessage msgout (CNetManager::getSIDA (&quot;AS&quot;), &quot;XLOG&quot;);</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;string log;</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;string log;</font></td></tr>
+<tr><td bgcolor="#cccccc">&nbsp;</td><td bgcolor="#ccccff"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;uint32 sid;</font></td></tr>
+<tr><td bgcolor="#cccccc">&nbsp;</td><td bgcolor="#ccccff"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;msgin.serial (sid);</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;msgin.serial (log);</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;msgin.serial (log);</font></td></tr>
+<tr><td bgcolor="#cccccc">&nbsp;</td><td bgcolor="#ccccff"><font face="Helvetica,Arial" size="-1">&nbsp;</font></td></tr>
+<tr><td bgcolor="#cccccc">&nbsp;</td><td bgcolor="#ccccff"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;msgout.serial (aes-&gt;Id);</font></td></tr>
+<tr><td bgcolor="#cccccc">&nbsp;</td><td bgcolor="#ccccff"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;msgout.serial (sid);</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;msgout.serial (log);</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;msgout.serial (log);</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;CNetManager::send (&quot;AS&quot;, msgout, 0);</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;CNetManager::send (&quot;AS&quot;, msgout, 0);</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp;}</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp;}</font></td></tr>
+<tr bgcolor="#dddddd"><td width="50%"><table width="100%" border=1 cellpadding=5><tr><td><b>Line 543</b>&nbsp;<font size=-1></font></td></tr></table></td><td width="50%"><table width="100%" border=1 cellpadding=5><tr><td><b>Line 644</b>&nbsp;<font size=-1></font></td></tr></table></td>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp;</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp;</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{ &quot;SAL&quot;, cbServiceAliasList },</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{ &quot;SAL&quot;, cbServiceAliasList },</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp;</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp;</font></td></tr>
+<tr><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{ &quot;LOG&quot;, cbLog },</font></td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{ &quot;XLOG&quot;, cbLog },</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp;};</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp;};</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp;</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp;</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp;</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp;</font></td></tr>
+<tr bgcolor="#dddddd"><td width="50%"><table width="100%" border=1 cellpadding=5><tr><td><b>Line 553</b>&nbsp;<font size=-1></font></td></tr></table></td><td width="50%"><table width="100%" border=1 cellpadding=5><tr><td><b>Line 654</b>&nbsp;<font size=-1></font></td></tr></table></td>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp;////////////////////////////////////////////////////////////////////////////////////////////////////////</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp;////////////////////////////////////////////////////////////////////////////////////////////////////////</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp;////////////////////////////////////////////////////////////////////////////////////////////////////////</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp;////////////////////////////////////////////////////////////////////////////////////////////////////////</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp;</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp;</font></td></tr>
+<tr><td bgcolor="#ff9999"><font face="Helvetica,Arial" size="-1">&nbsp;void errorMessage(string message, TSockId from, CCallbackNetBase &amp;netbase)</font></td><td bgcolor="#cccccc">&nbsp;</td></tr>
+<tr><td bgcolor="#ff9999"><font face="Helvetica,Arial" size="-1">&nbsp;{</font></td><td bgcolor="#cccccc">&nbsp;</td></tr>
+<tr><td bgcolor="#ff9999"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;CMessage msgout (netbase.getSIDA (), &quot;ERR&quot;);</font></td><td bgcolor="#cccccc">&nbsp;</td></tr>
+<tr><td bgcolor="#ff9999"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;msgout.serial (message);</font></td><td bgcolor="#cccccc">&nbsp;</td></tr>
+<tr><td bgcolor="#ff9999"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;netbase.send (msgout, from);</font></td><td bgcolor="#cccccc">&nbsp;</td></tr>
+<tr><td bgcolor="#ff9999"><font face="Helvetica,Arial" size="-1">&nbsp;}</font></td><td bgcolor="#cccccc">&nbsp;</td></tr>
+<tr><td bgcolor="#ff9999"><font face="Helvetica,Arial" size="-1">&nbsp;</font></td><td bgcolor="#cccccc">&nbsp;</td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp;//</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp;//</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp;// A new admin client is connected.</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp;// A new admin client is connected.</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp;//</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp;//</font></td></tr>
+<tr bgcolor="#dddddd"><td width="50%"><table width="100%" border=1 cellpadding=5><tr><td><b>Line 567</b>&nbsp;<font size=-1></font></td></tr></table></td><td width="50%"><table width="100%" border=1 cellpadding=5><tr><td><b>Line 661</b>&nbsp;<font size=-1></font></td></tr></table></td>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp;{</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp;{</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// new client, send him all out info about services</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// new client, send him all out info about services</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp;</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp;</font></td></tr>
+<tr><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;nlinfo (&quot;client %s is connected&quot;, from-&gt;asString().c_str());</font></td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;nlinfo (&quot;admin %s is connected&quot;, from-&gt;asString().c_str());</font></td></tr>
+<tr><td bgcolor="#99cc99">&nbsp;</td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp;</font></td></tr>
+<tr><td bgcolor="#99cc99">&nbsp;</td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;CNetManager::getNetBase(serviceName)-&gt;authorizeOnly (&quot;AUTH&quot;, from);</font></td></tr>
+<tr><td bgcolor="#99cc99">&nbsp;</td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp;}</font></td></tr>
+<tr><td bgcolor="#99cc99">&nbsp;</td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp;</font></td></tr>
+<tr><td bgcolor="#99cc99">&nbsp;</td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp;static void cbAuthenticateClient (CMessage&amp; msgin, TSockId from, CCallbackNetBase &amp;netbase)</font></td></tr>
+<tr><td bgcolor="#99cc99">&nbsp;</td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp;{</font></td></tr>
+<tr><td bgcolor="#99cc99">&nbsp;</td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;//</font></td></tr>
+<tr><td bgcolor="#99cc99">&nbsp;</td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// Check the validity of the admin</font></td></tr>
+<tr><td bgcolor="#99cc99">&nbsp;</td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;//</font></td></tr>
+<tr><td bgcolor="#99cc99">&nbsp;</td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;</font></td></tr>
+<tr><td bgcolor="#99cc99">&nbsp;</td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;string password;</font></td></tr>
+<tr><td bgcolor="#99cc99">&nbsp;</td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;bool ok = false;</font></td></tr>
+<tr><td bgcolor="#99cc99">&nbsp;</td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;try</font></td></tr>
+<tr><td bgcolor="#99cc99">&nbsp;</td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{</font></td></tr>
+<tr><td bgcolor="#99cc99">&nbsp;</td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;msgin.serial (password);</font></td></tr>
+<tr><td bgcolor="#99cc99">&nbsp;</td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp;</font></td></tr>
+<tr><td bgcolor="#99cc99">&nbsp;</td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;if (password == IService::ConfigFile.getVar(&quot;Password&quot;).asString())</font></td></tr>
+<tr><td bgcolor="#99cc99">&nbsp;</td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{</font></td></tr>
+<tr><td bgcolor="#99cc99">&nbsp;</td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// good authentification</font></td></tr>
+<tr><td bgcolor="#99cc99">&nbsp;</td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;ok = true;</font></td></tr>
+<tr><td bgcolor="#99cc99">&nbsp;</td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}</font></td></tr>
+<tr><td bgcolor="#99cc99">&nbsp;</td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}</font></td></tr>
+<tr><td bgcolor="#99cc99">&nbsp;</td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;catch (Exception &amp;)</font></td></tr>
+<tr><td bgcolor="#99cc99">&nbsp;</td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{</font></td></tr>
+<tr><td bgcolor="#99cc99">&nbsp;</td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// problem, eject him</font></td></tr>
+<tr><td bgcolor="#99cc99">&nbsp;</td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}</font></td></tr>
+<tr><td bgcolor="#99cc99">&nbsp;</td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp;</font></td></tr>
+<tr><td bgcolor="#99cc99">&nbsp;</td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;if (ok)</font></td></tr>
+<tr><td bgcolor="#99cc99">&nbsp;</td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{</font></td></tr>
+<tr><td bgcolor="#99cc99">&nbsp;</td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;netbase.authorizeOnly (NULL, from);</font></td></tr>
+<tr><td bgcolor="#99cc99">&nbsp;</td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;nlinfo (&quot;Admin authentification success&quot;);</font></td></tr>
+<tr><td bgcolor="#99cc99">&nbsp;</td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}</font></td></tr>
+<tr><td bgcolor="#99cc99">&nbsp;</td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;else</font></td></tr>
+<tr><td bgcolor="#99cc99">&nbsp;</td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{</font></td></tr>
+<tr><td bgcolor="#99cc99">&nbsp;</td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// bad auth =&gt; disconnect</font></td></tr>
+<tr><td bgcolor="#99cc99">&nbsp;</td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;netbase.disconnect (from);</font></td></tr>
+<tr><td bgcolor="#99cc99">&nbsp;</td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;nlwarning (&quot;Bad admin authentification, tried password: '%s'&quot;, password.c_str());</font></td></tr>
+<tr><td bgcolor="#99cc99">&nbsp;</td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;return;</font></td></tr>
+<tr><td bgcolor="#99cc99">&nbsp;</td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp;</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp;</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;//</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;//</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// send the list of all the aes</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// send the list of all the aes</font></td></tr>
+<tr bgcolor="#dddddd"><td width="50%"><table width="100%" border=1 cellpadding=5><tr><td><b>Line 605</b>&nbsp;<font size=-1></font></td></tr></table></td><td width="50%"><table width="100%" border=1 cellpadding=5><tr><td><b>Line 738</b>&nbsp;<font size=-1></font></td></tr></table></td>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;msgout.serial ((*sit).Id, (*sit).AliasName, (*sit).ShortName, (*sit).LongName);</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;msgout.serial ((*sit).Id, (*sit).AliasName, (*sit).ShortName, (*sit).LongName);</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;msgout.serial ((*sit).Ready, (*sit).Connected, (*sit).InConfig);</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;msgout.serial ((*sit).Ready, (*sit).Connected, (*sit).InConfig);</font></td></tr>
+<tr><td bgcolor="#cccccc">&nbsp;</td><td bgcolor="#ccccff"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;msgout.serialCont ((*sit).Commands);</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;CNetManager::send (&quot;AS&quot;, msgout, from);</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;CNetManager::send (&quot;AS&quot;, msgout, from);</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp;</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp;</font></td></tr>
+<tr><td bgcolor="#cccccc">&nbsp;</td><td bgcolor="#ccccff"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;displayServices ();</font></td></tr>
+<tr><td bgcolor="#cccccc">&nbsp;</td><td bgcolor="#ccccff"><font face="Helvetica,Arial" size="-1">&nbsp;</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;//</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;//</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// send service alias list</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// send service alias list</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;//</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;//</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp;</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp;</font></td></tr>
+<tr><td bgcolor="#cccccc">&nbsp;</td><td bgcolor="#ccccff"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;nlinfo(&quot;send SAL to admin startup&quot;);</font></td></tr>
+<tr><td bgcolor="#cccccc">&nbsp;</td><td bgcolor="#ccccff"><font face="Helvetica,Arial" size="-1">&nbsp;</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;for (aesit = AdminExecutorServices.begin(); aesit != AdminExecutorServices.end(); aesit++)</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;for (aesit = AdminExecutorServices.begin(); aesit != AdminExecutorServices.end(); aesit++)</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;CMessage msgout2 (CNetManager::getSIDA (&quot;AS&quot;), &quot;SAL&quot;);</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;CMessage msgout2 (CNetManager::getSIDA (&quot;AS&quot;), &quot;SAL&quot;);</font></td></tr>
+<tr bgcolor="#dddddd"><td width="50%"><table width="100%" border=1 cellpadding=5><tr><td><b>Line 634</b>&nbsp;<font size=-1></font></td></tr></table></td><td width="50%"><table width="100%" border=1 cellpadding=5><tr><td><b>Line 772</b>&nbsp;<font size=-1></font></td></tr></table></td>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;if (aesit == AdminExecutorServices.end())</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;if (aesit == AdminExecutorServices.end())</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// don't find the aes, send an error message</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// don't find the aes, send an error message</font></td></tr>
+<tr><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;errorMessage (&quot;couldn't execute command, as didn't find the aes&quot;, from, netbase);</font></td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;messageToClient (0, &quot;couldn't execute command, as didn't find the aes&quot;, from);</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;return;</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;return;</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp;</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp;</font></td></tr>
+<tr bgcolor="#dddddd"><td width="50%"><table width="100%" border=1 cellpadding=5><tr><td><b>Line 657</b>&nbsp;<font size=-1></font></td></tr></table></td><td width="50%"><table width="100%" border=1 cellpadding=5><tr><td><b>Line 795</b>&nbsp;<font size=-1></font></td></tr></table></td>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;if (aesit == AdminExecutorServices.end())</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;if (aesit == AdminExecutorServices.end())</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// don't find the aes, send an error message</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// don't find the aes, send an error message</font></td></tr>
+<tr><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;errorMessage (&quot;couldn't start service, as didn't find the aes&quot;, from, netbase);</font></td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;messageToClient (0, &quot;couldn't start service, as didn't find the aes&quot;, from);</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;return;</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;return;</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp;</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp;</font></td></tr>
+<tr bgcolor="#dddddd"><td width="50%"><table width="100%" border=1 cellpadding=5><tr><td><b>Line 677</b>&nbsp;<font size=-1></font></td></tr></table></td><td width="50%"><table width="100%" border=1 cellpadding=5><tr><td><b>Line 815</b>&nbsp;<font size=-1></font></td></tr></table></td>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;AESIT aesit = findAdminExecutorService (aesid, false);</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;AESIT aesit = findAdminExecutorService (aesid, false);</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;if (aesit == AdminExecutorServices.end())</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;if (aesit == AdminExecutorServices.end())</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{</font></td></tr>
+<tr><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;errorMessage (&quot;couldn't stop service, as didn't find the aes&quot;, from, netbase);</font></td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;messageToClient (0, &quot;couldn't stop service, as didn't find the aes&quot;, from);</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// don't find the aes, send an error message</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// don't find the aes, send an error message</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;return;</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;return;</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}</font></td></tr>
+<tr bgcolor="#dddddd"><td width="50%"><table width="100%" border=1 cellpadding=5><tr><td><b>Line 686</b>&nbsp;<font size=-1></font></td></tr></table></td><td width="50%"><table width="100%" border=1 cellpadding=5><tr><td><b>Line 824</b>&nbsp;<font size=-1></font></td></tr></table></td>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;if (sit == (*aesit).Services.end())</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;if (sit == (*aesit).Services.end())</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// don't find the s, send an error message</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// don't find the s, send an error message</font></td></tr>
+<tr><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;errorMessage (&quot;couldn't stop service, as didn't find the service&quot;, from, netbase);</font></td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;messageToClient (0, &quot;couldn't stop service, as didn't find the service&quot;, from);</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;return;</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;return;</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp;</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp;</font></td></tr>
+<tr bgcolor="#dddddd"><td width="50%"><table width="100%" border=1 cellpadding=5><tr><td><b>Line 708</b>&nbsp;<font size=-1></font></td></tr></table></td><td width="50%"><table width="100%" border=1 cellpadding=5><tr><td><b>Line 846</b>&nbsp;<font size=-1></font></td></tr></table></td>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;AESIT aesit = findAdminExecutorService (aesid, false);</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;AESIT aesit = findAdminExecutorService (aesid, false);</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;if (aesit == AdminExecutorServices.end())</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;if (aesit == AdminExecutorServices.end())</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{</font></td></tr>
+<tr><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;errorMessage (&quot;couldn't stop service, as didn't find the aes&quot;, from, netbase);</font></td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;messageToClient (0, &quot;couldn't stop service, as didn't find the aes&quot;, from);</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// don't find the aes, send an error message</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// don't find the aes, send an error message</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;return;</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;return;</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}</font></td></tr>
+<tr bgcolor="#dddddd"><td width="50%"><table width="100%" border=1 cellpadding=5><tr><td><b>Line 717</b>&nbsp;<font size=-1></font></td></tr></table></td><td width="50%"><table width="100%" border=1 cellpadding=5><tr><td><b>Line 855</b>&nbsp;<font size=-1></font></td></tr></table></td>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;if (sit == (*aesit).Services.end())</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;if (sit == (*aesit).Services.end())</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// don't find the s, send an error message</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// don't find the s, send an error message</font></td></tr>
+<tr><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;errorMessage (&quot;couldn't stop service, as didn't find the service&quot;, from, netbase);</font></td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;messageToClient (0, &quot;couldn't stop service, as didn't find the service&quot;, from);</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;return;</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;return;</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp;</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp;</font></td></tr>
+<tr bgcolor="#dddddd"><td width="50%"><table width="100%" border=1 cellpadding=5><tr><td><b>Line 752</b>&nbsp;<font size=-1></font></td></tr></table></td><td width="50%"><table width="100%" border=1 cellpadding=5><tr><td><b>Line 890</b>&nbsp;<font size=-1></font></td></tr></table></td>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp;</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp;</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp;TCallbackItem ClientCallbackArray[] =</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp;TCallbackItem ClientCallbackArray[] =</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp;{</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp;{</font></td></tr>
+<tr><td bgcolor="#cccccc">&nbsp;</td><td bgcolor="#ccccff"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{ &quot;AUTH&quot;, cbAuthenticateClient },</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{ &quot;SYS&quot;, cbExecuteSystemCommand },</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{ &quot;SYS&quot;, cbExecuteSystemCommand },</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{ &quot;STARTS&quot;, cbStartService },</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{ &quot;STARTS&quot;, cbStartService },</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{ &quot;STOPS&quot;, cbStopService },</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{ &quot;STOPS&quot;, cbStopService },</font></td></tr>
+<tr bgcolor="#dddddd"><td width="50%"><table width="100%" border=1 cellpadding=5><tr><td><b>Line 785</b>&nbsp;<font size=-1></font></td></tr></table></td><td width="50%"><table width="100%" border=1 cellpadding=5><tr><td><b>Line 924</b>&nbsp;<font size=-1></font></td></tr></table></td>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;//</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;//</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp;</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp;</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;CConfigFile::CVar &amp;host = ConfigFile.getVar (&quot;AESHosts&quot;);</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;CConfigFile::CVar &amp;host = ConfigFile.getVar (&quot;AESHosts&quot;);</font></td></tr>
+<tr><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;for (sint i = 0 ; i &lt; host.size (); i+=2)</font></td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;sint i;</font></td></tr>
+<tr><td bgcolor="#99cc99">&nbsp;</td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;for (i = 0 ; i &lt; host.size (); i+=2)</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;string serverAlias = host.asString(i);</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;string serverAlias = host.asString(i);</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;string serverAddr = host.asString(i+1);</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;string serverAddr = host.asString(i+1);</font></td></tr>
+<tr bgcolor="#dddddd"><td width="50%"><table width="100%" border=1 cellpadding=5><tr><td><b>Line 821</b>&nbsp;<font size=-1></font></td></tr></table></td><td width="50%"><table width="100%" border=1 cellpadding=5><tr><td><b>Line 961</b>&nbsp;<font size=-1></font></td></tr></table></td>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;s.InConfig = true;</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;s.InConfig = true;</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;(*aesit).Services.push_back (s);</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;(*aesit).Services.push_back (s);</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}</font></td></tr>
+<tr><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}</font></td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;displayServices ();</font></td></tr>
+<tr><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp;</font></td><td bgcolor="#99cc99">&nbsp;</td></tr>
+<tr><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;bool &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;update ()</font></td><td bgcolor="#99cc99">&nbsp;</td></tr>
+<tr><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{</font></td><td bgcolor="#99cc99">&nbsp;</td></tr>
+<tr><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;return true;</font></td><td bgcolor="#99cc99">&nbsp;</td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp;};</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp;};</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp;</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp;</font></td></tr>
+</table><br><hr noshade width="100%">
+<table border=0><tr><td><table border=1><tr><td>Legend:<br><table border=0 cellspacing=0 cellpadding=1>
+<tr><td align=center bgcolor="#ff9999">Removed from v.1.5</td><td bgcolor="#cccccc">&nbsp;</td></tr><tr bgcolor="#99ff99"><td align=center colspan=2>changed lines</td></tr><tr><td bgcolor="#cccccc">&nbsp;</td><td align=center bgcolor="#ccccff">Added in v.1.13</td></tr></table></td></tr></table>
+<td><FORM METHOD="GET" ACTION="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cpp.diff">
+<INPUT TYPE=HIDDEN NAME="r1" VALUE="1.5">
+<INPUT TYPE=HIDDEN NAME="r2" VALUE="1.13">
+<SELECT NAME="f" onchange="submit()">
+<OPTION VALUE=h SELECTED>Colored Diff<OPTION VALUE=H>Long Colored Diff<OPTION VALUE=u>Unidiff<OPTION VALUE=c>Context Diff<OPTION VALUE=s>Side by Side</SELECT><INPUT TYPE=SUBMIT VALUE="Show">
+</FORM>
+</td></tr></table> \ No newline at end of file
diff --git a/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cpp.diff?r1=1.5&r2=1.14 b/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cpp.diff?r1=1.5&r2=1.14
new file mode 100644
index 00000000..a9c2d137
--- /dev/null
+++ b/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cpp.diff?r1=1.5&r2=1.14
@@ -0,0 +1,573 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"><HTML>
+<HEAD><style> A { color:black }</style>
+<!-- hennerik CVSweb $Revision: 1.93 $ -->
+<TITLE>code/nelns/admin_service/admin_service.cpp - diff - 1.14</TITLE></HEAD>
+<BODY BGCOLOR="#eeeeee">
+<table width="100%" border=0 cellspacing=0 cellpadding=1 bgcolor="#aaaaaa"><tr valign=bottom><td><a href="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cpp"><IMG SRC="http://www.nevrax.org/inc/img/picto-up.gif" ALT="[BACK]" BORDER="0" WIDTH="14" HEIGHT="13"></a> <b>Return to <A HREF="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cpp">admin_service.cpp</A>
+ CVS log</b> <IMG SRC="http://www.nevrax.org/inc/img/picto-news.gif" ALT="[TXT]" BORDER="0" WIDTH="13" HEIGHT="15"></td><td align=right><IMG SRC="http://www.nevrax.org/inc/img/picto-dir.gif" ALT="[DIR]" BORDER="0" WIDTH="15" HEIGHT="13"> <b>Up to <a href="/cvs/cvsweb.cgi/">Nevrax</a> / <a href="/cvs/cvsweb.cgi/code/">code</a> / <a href="/cvs/cvsweb.cgi/code/nelns/">nelns</a> / <a href="/cvs/cvsweb.cgi/code/nelns/admin_service/">admin_service</a></b></td></tr></table><h3 align=center>Diff for /code/nelns/admin_service/admin_service.cpp between version 1.5 and 1.14</h3>
+<table border=0 cellspacing=0 cellpadding=0 width="100%">
+<tr bgcolor="#ffffff">
+<th width="50%" valign=TOP>version 1.5, 2001/05/31 16:44:54</th>
+<th width="50%" valign=TOP>version 1.14, 2002/03/19 17:42:48</th>
+<tr bgcolor="#dddddd"><td width="50%"><table width="100%" border=1 cellpadding=5><tr><td><b>Line 24</b>&nbsp;<font size=-1></font></td></tr></table></td><td width="50%"><table width="100%" border=1 cellpadding=5><tr><td><b>Line 24</b>&nbsp;<font size=-1></font></td></tr></table></td>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; * MA 02111-1307, USA.</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; * MA 02111-1307, USA.</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; */</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; */</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp;</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp;</font></td></tr>
+<tr><td bgcolor="#cccccc">&nbsp;</td><td bgcolor="#ccccff"><font face="Helvetica,Arial" size="-1">&nbsp;#ifdef HAVE_CONFIG_H</font></td></tr>
+<tr><td bgcolor="#cccccc">&nbsp;</td><td bgcolor="#ccccff"><font face="Helvetica,Arial" size="-1">&nbsp;#include &quot;config.h&quot;</font></td></tr>
+<tr><td bgcolor="#cccccc">&nbsp;</td><td bgcolor="#ccccff"><font face="Helvetica,Arial" size="-1">&nbsp;#endif // HAVE_CONFIG_H</font></td></tr>
+<tr><td bgcolor="#cccccc">&nbsp;</td><td bgcolor="#ccccff"><font face="Helvetica,Arial" size="-1">&nbsp;</font></td></tr>
+<tr><td bgcolor="#cccccc">&nbsp;</td><td bgcolor="#ccccff"><font face="Helvetica,Arial" size="-1">&nbsp;#ifndef NELNS_CONFIG</font></td></tr>
+<tr><td bgcolor="#cccccc">&nbsp;</td><td bgcolor="#ccccff"><font face="Helvetica,Arial" size="-1">&nbsp;#define NELNS_CONFIG &quot;&quot;</font></td></tr>
+<tr><td bgcolor="#cccccc">&nbsp;</td><td bgcolor="#ccccff"><font face="Helvetica,Arial" size="-1">&nbsp;#endif // NELNS_CONFIG</font></td></tr>
+<tr><td bgcolor="#cccccc">&nbsp;</td><td bgcolor="#ccccff"><font face="Helvetica,Arial" size="-1">&nbsp;</font></td></tr>
+<tr><td bgcolor="#cccccc">&nbsp;</td><td bgcolor="#ccccff"><font face="Helvetica,Arial" size="-1">&nbsp;#ifndef NELNS_LOGS</font></td></tr>
+<tr><td bgcolor="#cccccc">&nbsp;</td><td bgcolor="#ccccff"><font face="Helvetica,Arial" size="-1">&nbsp;#define NELNS_LOGS &quot;&quot;</font></td></tr>
+<tr><td bgcolor="#cccccc">&nbsp;</td><td bgcolor="#ccccff"><font face="Helvetica,Arial" size="-1">&nbsp;#endif // NELNS_LOGS</font></td></tr>
+<tr><td bgcolor="#cccccc">&nbsp;</td><td bgcolor="#ccccff"><font face="Helvetica,Arial" size="-1">&nbsp;</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp;#include &lt;string&gt;</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp;#include &lt;string&gt;</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp;#include &lt;list&gt;</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp;#include &lt;list&gt;</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp;</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp;</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp;#include &quot;nel/net/service.h&quot;</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp;#include &quot;nel/net/service.h&quot;</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp;#include &quot;nel/misc/debug.h&quot;</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp;#include &quot;nel/misc/debug.h&quot;</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp;#include &quot;nel/misc/config_file.h&quot;</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp;#include &quot;nel/misc/config_file.h&quot;</font></td></tr>
+<tr><td bgcolor="#cccccc">&nbsp;</td><td bgcolor="#ccccff"><font face="Helvetica,Arial" size="-1">&nbsp;#include &quot;nel/misc/command.h&quot;</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp;</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp;</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp;#include &quot;nel/net/net_manager.h&quot;</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp;#include &quot;nel/net/net_manager.h&quot;</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp;</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp;</font></td></tr>
+<tr bgcolor="#dddddd"><td width="50%"><table width="100%" border=1 cellpadding=5><tr><td><b>Line 51</b>&nbsp;<font size=-1></font></td></tr></table></td><td width="50%"><table width="100%" border=1 cellpadding=5><tr><td><b>Line 64</b>&nbsp;<font size=-1></font></td></tr></table></td>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;bool &nbsp; &nbsp; &nbsp; &nbsp;Ready; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;/// true if the service is ready</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;bool &nbsp; &nbsp; &nbsp; &nbsp;Ready; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;/// true if the service is ready</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;bool &nbsp; &nbsp; &nbsp; &nbsp;Connected; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;/// true if the service is connected to the AES</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;bool &nbsp; &nbsp; &nbsp; &nbsp;Connected; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;/// true if the service is connected to the AES</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;bool &nbsp; &nbsp; &nbsp; &nbsp;InConfig; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;/// true if the service is in the configuration</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;bool &nbsp; &nbsp; &nbsp; &nbsp;InConfig; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;/// true if the service is in the configuration</font></td></tr>
+<tr><td bgcolor="#cccccc">&nbsp;</td><td bgcolor="#ccccff"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;std::vector&lt;NLMISC::CSerialCommand&gt; &nbsp; &nbsp; &nbsp; &nbsp;Commands;</font></td></tr>
+<tr><td bgcolor="#cccccc">&nbsp;</td><td bgcolor="#ccccff"><font face="Helvetica,Arial" size="-1">&nbsp;</font></td></tr>
+<tr><td bgcolor="#cccccc">&nbsp;</td><td bgcolor="#ccccff"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;void setValues (const CService &amp;t)</font></td></tr>
+<tr><td bgcolor="#cccccc">&nbsp;</td><td bgcolor="#ccccff"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{</font></td></tr>
+<tr><td bgcolor="#cccccc">&nbsp;</td><td bgcolor="#ccccff"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// copy all except gtk stuffs</font></td></tr>
+<tr><td bgcolor="#cccccc">&nbsp;</td><td bgcolor="#ccccff"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;Id = t.Id;</font></td></tr>
+<tr><td bgcolor="#cccccc">&nbsp;</td><td bgcolor="#ccccff"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;AliasName = t.AliasName;</font></td></tr>
+<tr><td bgcolor="#cccccc">&nbsp;</td><td bgcolor="#ccccff"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;ShortName = t.ShortName;</font></td></tr>
+<tr><td bgcolor="#cccccc">&nbsp;</td><td bgcolor="#ccccff"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;LongName = t.LongName;</font></td></tr>
+<tr><td bgcolor="#cccccc">&nbsp;</td><td bgcolor="#ccccff"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;Ready = t.Ready;</font></td></tr>
+<tr><td bgcolor="#cccccc">&nbsp;</td><td bgcolor="#ccccff"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;Connected = t.Connected;</font></td></tr>
+<tr><td bgcolor="#cccccc">&nbsp;</td><td bgcolor="#ccccff"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;//InConfig = t.InConfig; never change the inconfig value</font></td></tr>
+<tr><td bgcolor="#cccccc">&nbsp;</td><td bgcolor="#ccccff"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp;};</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp;};</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp;</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp;</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp;typedef list&lt;CService&gt; TServices;</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp;typedef list&lt;CService&gt; TServices;</font></td></tr>
+<tr bgcolor="#dddddd"><td width="50%"><table width="100%" border=1 cellpadding=5><tr><td><b>Line 136</b>&nbsp;<font size=-1></font></td></tr></table></td><td width="50%"><table width="100%" border=1 cellpadding=5><tr><td><b>Line 162</b>&nbsp;<font size=-1></font></td></tr></table></td>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp;{</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp;{</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;for (AESIT aesit = AdminExecutorServices.begin(); aesit != AdminExecutorServices.end(); aesit++)</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;for (AESIT aesit = AdminExecutorServices.begin(); aesit != AdminExecutorServices.end(); aesit++)</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{</font></td></tr>
+<tr><td bgcolor="#cccccc">&nbsp;</td><td bgcolor="#ccccff"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;nlinfo (&quot;&gt; Admin&quot;);</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;for (SIT sit = (*aesit).Services.begin(); sit != (*aesit).Services.end(); sit++)</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;for (SIT sit = (*aesit).Services.begin(); sit != (*aesit).Services.end(); sit++)</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{</font></td></tr>
+<tr><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;nlinfo (&quot;&gt; %s %s %s %d %d&quot;, (*aesit).SockId-&gt;asString().c_str(), (*sit).ShortName.c_str(), (*sit).LongName.c_str(), (*aesit).Id, (*sit).Id);</font></td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;nlinfo (&quot; &nbsp;&gt; '%s' '%s' '%s' '%s' %d %d&quot;, (*aesit).SockId-&gt;asString().c_str(), (*sit).AliasName.c_str(), (*sit).ShortName.c_str(), (*sit).LongName.c_str(), (*aesit).Id, (*sit).Id);</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp;}</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp;}</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp;</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp;</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp;</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp;</font></td></tr>
+<tr><td bgcolor="#cccccc">&nbsp;</td><td bgcolor="#ccccff"><font face="Helvetica,Arial" size="-1">&nbsp;// send a message to a client. if ok is 0 it s an error or it s a normal </font></td></tr>
+<tr><td bgcolor="#cccccc">&nbsp;</td><td bgcolor="#ccccff"><font face="Helvetica,Arial" size="-1">&nbsp;void messageToClient (uint8 ok, string msg, TSockId from = NULL)</font></td></tr>
+<tr><td bgcolor="#cccccc">&nbsp;</td><td bgcolor="#ccccff"><font face="Helvetica,Arial" size="-1">&nbsp;{</font></td></tr>
+<tr><td bgcolor="#cccccc">&nbsp;</td><td bgcolor="#ccccff"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;CMessage msgout (CNetManager::getSIDA (&quot;AS&quot;), &quot;MESSAGE&quot;);</font></td></tr>
+<tr><td bgcolor="#cccccc">&nbsp;</td><td bgcolor="#ccccff"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;msgout.serial (ok, msg);</font></td></tr>
+<tr><td bgcolor="#cccccc">&nbsp;</td><td bgcolor="#ccccff"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;CNetManager::send (&quot;AS&quot;, msgout, from);</font></td></tr>
+<tr><td bgcolor="#cccccc">&nbsp;</td><td bgcolor="#ccccff"><font face="Helvetica,Arial" size="-1">&nbsp;}</font></td></tr>
+<tr><td bgcolor="#cccccc">&nbsp;</td><td bgcolor="#ccccff"><font face="Helvetica,Arial" size="-1">&nbsp;</font></td></tr>
+<tr><td bgcolor="#cccccc">&nbsp;</td><td bgcolor="#ccccff"><font face="Helvetica,Arial" size="-1">&nbsp;</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp;////////////////////////////////////////////////////////////////////////////////////////////////////////</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp;////////////////////////////////////////////////////////////////////////////////////////////////////////</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp;////////////////////////////////////////////////////////////////////////////////////////////////////////</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp;////////////////////////////////////////////////////////////////////////////////////////////////////////</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp;/////////////////// SCRIPT MANAGER /////////////////////////////////////////////////////////////////////</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp;/////////////////// SCRIPT MANAGER /////////////////////////////////////////////////////////////////////</font></td></tr>
+<tr bgcolor="#dddddd"><td width="50%"><table width="100%" border=1 cellpadding=5><tr><td><b>Line 167</b>&nbsp;<font size=-1></font></td></tr></table></td><td width="50%"><table width="100%" border=1 cellpadding=5><tr><td><b>Line 203</b>&nbsp;<font size=-1></font></td></tr></table></td>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;if (StartAllServicesPos*2 &gt;= (uint32)script.size())</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;if (StartAllServicesPos*2 &gt;= (uint32)script.size())</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;StartAllServices = false;</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;StartAllServices = false;</font></td></tr>
+<tr><td bgcolor="#cccccc">&nbsp;</td><td bgcolor="#ccccff"><font face="Helvetica,Arial" size="-1">&nbsp;</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;nlinfo(&quot;end of the script&quot;);</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;nlinfo(&quot;end of the script&quot;);</font></td></tr>
+<tr><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// todo send that the script is finish to the admin</font></td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;messageToClient (1, &quot;Start All Service finnished correctly&quot;);</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;return;</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;return;</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp;</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp;</font></td></tr>
+<tr bgcolor="#dddddd"><td width="50%"><table width="100%" border=1 cellpadding=5><tr><td><b>Line 184</b>&nbsp;<font size=-1></font></td></tr></table></td><td width="50%"><table width="100%" border=1 cellpadding=5><tr><td><b>Line 221</b>&nbsp;<font size=-1></font></td></tr></table></td>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;catch(EBadSize &amp;)</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;catch(EBadSize &amp;)</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{</font></td></tr>
+<tr><td bgcolor="#cccccc">&nbsp;</td><td bgcolor="#ccccff"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;messageToClient (1, &quot;'Services' variable does not contains a good number of entries (must be a multiple of 2)&quot;);</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;nlwarning (&quot;'Services' variable does not contains a good number of entries (must be a multiple of 2)&quot;);</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;nlwarning (&quot;'Services' variable does not contains a good number of entries (must be a multiple of 2)&quot;);</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;StartAllServices = false;</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;StartAllServices = false;</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;return;</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;return;</font></td></tr>
+<tr bgcolor="#dddddd"><td width="50%"><table width="100%" border=1 cellpadding=5><tr><td><b>Line 192</b>&nbsp;<font size=-1></font></td></tr></table></td><td width="50%"><table width="100%" border=1 cellpadding=5><tr><td><b>Line 230</b>&nbsp;<font size=-1></font></td></tr></table></td>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;AESIT aesit = findAdminExecutorService (serverAlias, false);</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;AESIT aesit = findAdminExecutorService (serverAlias, false);</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;if (aesit == AdminExecutorServices.end())</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;if (aesit == AdminExecutorServices.end())</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{</font></td></tr>
+<tr><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;StartAllServices = false;</font></td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;messageToClient (1, &quot;don't find the server&quot;);</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;nlwarning(&quot;don't find the server&quot;);</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;nlwarning(&quot;don't find the server&quot;);</font></td></tr>
+<tr><td bgcolor="#cccccc">&nbsp;</td><td bgcolor="#ccccff"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;StartAllServices = false;</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;return;</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;return;</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp;</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp;</font></td></tr>
+<tr bgcolor="#dddddd"><td width="50%"><table width="100%" border=1 cellpadding=5><tr><td><b>Line 218</b>&nbsp;<font size=-1></font></td></tr></table></td><td width="50%"><table width="100%" border=1 cellpadding=5><tr><td><b>Line 257</b>&nbsp;<font size=-1></font></td></tr></table></td>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;catch(EUnknownVar&amp;)</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;catch(EUnknownVar&amp;)</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{</font></td></tr>
+<tr><td bgcolor="#cccccc">&nbsp;</td><td bgcolor="#ccccff"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;messageToClient (1, &quot;'Services' variable is not found&quot;);</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;nlwarning (&quot;'Services' variable is not found&quot;);</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;nlwarning (&quot;'Services' variable is not found&quot;);</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;StartAllServices = false;</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;StartAllServices = false;</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;return;</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;return;</font></td></tr>
+<tr bgcolor="#dddddd"><td width="50%"><table width="100%" border=1 cellpadding=5><tr><td><b>Line 228</b>&nbsp;<font size=-1></font></td></tr></table></td><td width="50%"><table width="100%" border=1 cellpadding=5><tr><td><b>Line 268</b>&nbsp;<font size=-1></font></td></tr></table></td>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp;{</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp;{</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;if (StartAllServices)</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;if (StartAllServices)</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{</font></td></tr>
+<tr><td bgcolor="#cccccc">&nbsp;</td><td bgcolor="#ccccff"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;messageToClient (1, &quot;already running a script, reset it&quot;);</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;nlwarning(&quot;already running a script, reset it&quot;);</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;nlwarning(&quot;already running a script, reset it&quot;);</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;StartAllServices = false;</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;StartAllServices = false;</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}</font></td></tr>
+<tr bgcolor="#dddddd"><td width="50%"><table width="100%" border=1 cellpadding=5><tr><td><b>Line 242</b>&nbsp;<font size=-1></font></td></tr></table></td><td width="50%"><table width="100%" border=1 cellpadding=5><tr><td><b>Line 283</b>&nbsp;<font size=-1></font></td></tr></table></td>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;AESIT aesit = findAdminExecutorService (serverAlias, false);</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;AESIT aesit = findAdminExecutorService (serverAlias, false);</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;if (aesit == AdminExecutorServices.end())</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;if (aesit == AdminExecutorServices.end())</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{</font></td></tr>
+<tr><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;nlwarning(&quot;aes '%s' not running, can't run the script&quot;, serverAlias.c_str());</font></td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;messageToClient (1, &quot;an aes is not running, can't run the script&quot;);</font></td></tr>
+<tr><td bgcolor="#99cc99">&nbsp;</td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;nlwarning(&quot;aes '%s' isn't running, can't run the script&quot;, serverAlias.c_str());</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;return;</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;return;</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;catch(EConfigFile &amp;)</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;catch(EConfigFile &amp;)</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{</font></td></tr>
+<tr><td bgcolor="#cccccc">&nbsp;</td><td bgcolor="#ccccff"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;messageToClient (1, &quot;bad config file&quot;);</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;nlwarning (&quot;bad config file&quot;);</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;nlwarning (&quot;bad config file&quot;);</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;return;</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;return;</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}</font></td></tr>
+<tr bgcolor="#dddddd"><td width="50%"><table width="100%" border=1 cellpadding=5><tr><td><b>Line 280</b>&nbsp;<font size=-1></font></td></tr></table></td><td width="50%"><table width="100%" border=1 cellpadding=5><tr><td><b>Line 323</b>&nbsp;<font size=-1></font></td></tr></table></td>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;nlinfo(&quot;end of command result&quot;);</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;nlinfo(&quot;end of command result&quot;);</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp;}</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp;}</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp;</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp;</font></td></tr>
+<tr><td bgcolor="#cccccc">&nbsp;</td><td bgcolor="#ccccff"><font face="Helvetica,Arial" size="-1">&nbsp;// get the service list from the admin exec and send the list to all admin client</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp;static void cbServiceList (CMessage&amp; msgin, TSockId from, CCallbackNetBase &amp;netbase)</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp;static void cbServiceList (CMessage&amp; msgin, TSockId from, CCallbackNetBase &amp;netbase)</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp;{</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp;{</font></td></tr>
+<tr><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp;/* &nbsp; &nbsp; &nbsp;// get the service list from the admin exec and send the list to all admin client</font></td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;CAdminExecutorService *aes = (CAdminExecutorService*) (uint) from-&gt;appId();</font></td></tr>
+<tr><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;CAdminExecutorService *aes = (CAdminExecutorService*) from-&gt;appId();</font></td><td bgcolor="#99cc99">&nbsp;</td></tr>
+<tr><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;aes-&gt;Services.clear();</font></td><td bgcolor="#99cc99">&nbsp;</td></tr>
+<tr><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp;</font></td><td bgcolor="#99cc99">&nbsp;</td></tr>
+<tr><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;CMessage msgout (CNetManager::getSIDA (&quot;AS&quot;), &quot;SL&quot;);</font></td><td bgcolor="#99cc99">&nbsp;</td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp;</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp;</font></td></tr>
+<tr><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;uint32 nbaes = 1;</font></td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;//</font></td></tr>
+<tr><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;msgout.serial (nbaes);</font></td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// Get the list of service from aes</font></td></tr>
+<tr><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;msgout.serial (aes-&gt;Id);</font></td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;//</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp;</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp;</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;uint32 nbs;</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;uint32 nbs;</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;msgin.serial (nbs);</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;msgin.serial (nbs);</font></td></tr>
+<tr><td bgcolor="#ff9999"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;msgout.serial (nbs);</font></td><td bgcolor="#cccccc">&nbsp;</td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp;</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp;</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;for (uint32 i = 0; i &lt; nbs; i++)</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;for (uint32 i = 0; i &lt; nbs; i++)</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{</font></td></tr>
+<tr><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;uint32 sid;</font></td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// find the service</font></td></tr>
+<tr><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;msgin.serial(sid);</font></td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;CService s;</font></td></tr>
+<tr><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp;</font></td><td bgcolor="#99cc99">&nbsp;</td></tr>
+<tr><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;aes-&gt;Services.push_back (CService(sid));</font></td><td bgcolor="#99cc99">&nbsp;</td></tr>
+<tr><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;CService *s = &amp;(aes-&gt;Services.back());</font></td><td bgcolor="#99cc99">&nbsp;</td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp;</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp;</font></td></tr>
+<tr><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;msgin.serial(s-&gt;ShortName, s-&gt;LongName, s-&gt;Ready);</font></td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;msgin.serial (s.Id, s.AliasName, s.ShortName, s.LongName, s.Ready);</font></td></tr>
+<tr><td bgcolor="#99cc99">&nbsp;</td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;msgin.serialCont (s.Commands);</font></td></tr>
+<tr><td bgcolor="#99cc99">&nbsp;</td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;s.Connected = true;</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp;</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp;</font></td></tr>
+<tr><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;msgout.serial (s-&gt;Id, s-&gt;ShortName, s-&gt;LongName, s-&gt;Ready);</font></td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;if (!s.AliasName.empty())</font></td></tr>
+<tr><td bgcolor="#99cc99">&nbsp;</td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{</font></td></tr>
+<tr><td bgcolor="#99cc99">&nbsp;</td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;SIT sit = aes-&gt;findService (s.AliasName, false);</font></td></tr>
+<tr><td bgcolor="#99cc99">&nbsp;</td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;if (sit == aes-&gt;Services.end ())</font></td></tr>
+<tr><td bgcolor="#99cc99">&nbsp;</td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{</font></td></tr>
+<tr><td bgcolor="#99cc99">&nbsp;</td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;aes-&gt;Services.push_back (s);</font></td></tr>
+<tr><td bgcolor="#99cc99">&nbsp;</td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}</font></td></tr>
+<tr><td bgcolor="#99cc99">&nbsp;</td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;else</font></td></tr>
+<tr><td bgcolor="#99cc99">&nbsp;</td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{</font></td></tr>
+<tr><td bgcolor="#99cc99">&nbsp;</td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;nlassert (&quot;the service already exists with alias, update it&quot;);</font></td></tr>
+<tr><td bgcolor="#99cc99">&nbsp;</td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;(*sit).setValues (s);</font></td></tr>
+<tr><td bgcolor="#99cc99">&nbsp;</td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}</font></td></tr>
+<tr><td bgcolor="#99cc99">&nbsp;</td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}</font></td></tr>
+<tr><td bgcolor="#99cc99">&nbsp;</td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;else</font></td></tr>
+<tr><td bgcolor="#99cc99">&nbsp;</td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{</font></td></tr>
+<tr><td bgcolor="#99cc99">&nbsp;</td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;SIT sit = aes-&gt;findService (s.Id, false);</font></td></tr>
+<tr><td bgcolor="#99cc99">&nbsp;</td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;if (sit == aes-&gt;Services.end ())</font></td></tr>
+<tr><td bgcolor="#99cc99">&nbsp;</td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{</font></td></tr>
+<tr><td bgcolor="#99cc99">&nbsp;</td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;aes-&gt;Services.push_back (s);</font></td></tr>
+<tr><td bgcolor="#99cc99">&nbsp;</td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}</font></td></tr>
+<tr><td bgcolor="#99cc99">&nbsp;</td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;else</font></td></tr>
+<tr><td bgcolor="#99cc99">&nbsp;</td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{</font></td></tr>
+<tr><td bgcolor="#99cc99">&nbsp;</td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;nlassert (&quot;the service already exists with id, update it&quot;);</font></td></tr>
+<tr><td bgcolor="#99cc99">&nbsp;</td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;(*sit).setValues (s);</font></td></tr>
+<tr><td bgcolor="#99cc99">&nbsp;</td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}</font></td></tr>
+<tr><td bgcolor="#99cc99">&nbsp;</td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}</font></td></tr>
+<tr><td bgcolor="#ff9999"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;CNetManager::send (&quot;AS&quot;, msgout, 0);</font></td><td bgcolor="#cccccc">&nbsp;</td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;displayServices ();</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;displayServices ();</font></td></tr>
+<tr><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp;*/}</font></td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp;</font></td></tr>
+<tr><td bgcolor="#99cc99">&nbsp;</td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;//</font></td></tr>
+<tr><td bgcolor="#99cc99">&nbsp;</td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// Send the new list to all admin</font></td></tr>
+<tr><td bgcolor="#99cc99">&nbsp;</td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;//</font></td></tr>
+<tr><td bgcolor="#99cc99">&nbsp;</td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp;</font></td></tr>
+<tr><td bgcolor="#99cc99">&nbsp;</td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;CMessage msgout (CNetManager::getSIDA (&quot;AS&quot;), &quot;SERVICE_LIST&quot;);</font></td></tr>
+<tr><td bgcolor="#99cc99">&nbsp;</td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;uint32 nbaes = 1;</font></td></tr>
+<tr><td bgcolor="#99cc99">&nbsp;</td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;msgout.serial (nbaes);</font></td></tr>
+<tr><td bgcolor="#99cc99">&nbsp;</td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;msgout.serial (aes-&gt;Id);</font></td></tr>
+<tr><td bgcolor="#99cc99">&nbsp;</td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;uint32 ss = aes-&gt;Services.size();</font></td></tr>
+<tr><td bgcolor="#99cc99">&nbsp;</td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;msgout.serial (ss);</font></td></tr>
+<tr><td bgcolor="#99cc99">&nbsp;</td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp;</font></td></tr>
+<tr><td bgcolor="#99cc99">&nbsp;</td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;for (SIT sit = aes-&gt;Services.begin(); sit != aes-&gt;Services.end(); sit++)</font></td></tr>
+<tr><td bgcolor="#99cc99">&nbsp;</td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{</font></td></tr>
+<tr><td bgcolor="#99cc99">&nbsp;</td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;msgout.serial ((*sit).Id, (*sit).AliasName, (*sit).ShortName, (*sit).LongName);</font></td></tr>
+<tr><td bgcolor="#99cc99">&nbsp;</td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;msgout.serial ((*sit).Ready, (*sit).Connected, (*sit).InConfig);</font></td></tr>
+<tr><td bgcolor="#99cc99">&nbsp;</td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;msgout.serialCont ((*sit).Commands);</font></td></tr>
+<tr><td bgcolor="#99cc99">&nbsp;</td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}</font></td></tr>
+<tr><td bgcolor="#99cc99">&nbsp;</td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;CNetManager::send (&quot;AS&quot;, msgout, 0);</font></td></tr>
+<tr><td bgcolor="#99cc99">&nbsp;</td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp;}</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp;</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp;</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp;static void cbServiceAliasList (CMessage&amp; msgin, TSockId from, CCallbackNetBase &amp;netbase)</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp;static void cbServiceAliasList (CMessage&amp; msgin, TSockId from, CCallbackNetBase &amp;netbase)</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp;{</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp;{</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// get the service list from the admin exec and send the list to all admin client</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// get the service list from the admin exec and send the list to all admin client</font></td></tr>
+<tr><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;CAdminExecutorService *aes = (CAdminExecutorService*) from-&gt;appId();</font></td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;CAdminExecutorService *aes = (CAdminExecutorService*) (uint) from-&gt;appId();</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp;</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp;</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;aes-&gt;ServiceAliasList.clear ();</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;aes-&gt;ServiceAliasList.clear ();</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;msgin.serialCont (aes-&gt;ServiceAliasList);</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;msgin.serialCont (aes-&gt;ServiceAliasList);</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp;</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp;</font></td></tr>
+<tr><td bgcolor="#cccccc">&nbsp;</td><td bgcolor="#ccccff"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;nlinfo(&quot;send SAL to admin callback from aes&quot;);</font></td></tr>
+<tr><td bgcolor="#cccccc">&nbsp;</td><td bgcolor="#ccccff"><font face="Helvetica,Arial" size="-1">&nbsp;</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;CMessage msgout (CNetManager::getSIDA (&quot;AS&quot;), &quot;SAL&quot;);</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;CMessage msgout (CNetManager::getSIDA (&quot;AS&quot;), &quot;SAL&quot;);</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;msgout.serial (aes-&gt;Id);</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;msgout.serial (aes-&gt;Id);</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;msgout.serialCont (aes-&gt;ServiceAliasList);</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;msgout.serialCont (aes-&gt;ServiceAliasList);</font></td></tr>
+<tr bgcolor="#dddddd"><td width="50%"><table width="100%" border=1 cellpadding=5><tr><td><b>Line 332</b>&nbsp;<font size=-1></font></td></tr></table></td><td width="50%"><table width="100%" border=1 cellpadding=5><tr><td><b>Line 415</b>&nbsp;<font size=-1></font></td></tr></table></td>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp;</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp;</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp;static void cbServiceIdentification (CMessage&amp; msgin, TSockId from, CCallbackNetBase &amp;netbase)</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp;static void cbServiceIdentification (CMessage&amp; msgin, TSockId from, CCallbackNetBase &amp;netbase)</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp;{</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp;{</font></td></tr>
+<tr><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;CAdminExecutorService *aes = (CAdminExecutorService*) from-&gt;appId();</font></td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;CAdminExecutorService *aes = (CAdminExecutorService*) (uint) from-&gt;appId();</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp;</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp;</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;uint32 sid;</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;uint32 sid;</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;string alias;</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;string alias;</font></td></tr>
+<tr bgcolor="#dddddd"><td width="50%"><table width="100%" border=1 cellpadding=5><tr><td><b>Line 365</b>&nbsp;<font size=-1></font></td></tr></table></td><td width="50%"><table width="100%" border=1 cellpadding=5><tr><td><b>Line 448</b>&nbsp;<font size=-1></font></td></tr></table></td>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;if (sit == aes-&gt;Services.end ())</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;if (sit == aes-&gt;Services.end ())</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// normal case for unknown services</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// normal case for unknown services</font></td></tr>
+<tr><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;nlwarning (&quot;new service with alias (%s) but not in my list&quot;, alias.c_str());</font></td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;nlwarning (&quot;new service without alias and not in my list, add it&quot;);</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;else</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;else</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{</font></td></tr>
+<tr><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;nlwarning (&quot;new service without alias is already in my list with id %d&quot;, sid);</font></td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;nlwarning (&quot;new service without alias is already in my list with id %d, add it&quot;, sid);</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;aes-&gt;Services.push_back (CService ());</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;aes-&gt;Services.push_back (CService ());</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;sit = aes-&gt;Services.end();</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;sit = aes-&gt;Services.end();</font></td></tr>
+<tr bgcolor="#dddddd"><td width="50%"><table width="100%" border=1 cellpadding=5><tr><td><b>Line 380</b>&nbsp;<font size=-1></font></td></tr></table></td><td width="50%"><table width="100%" border=1 cellpadding=5><tr><td><b>Line 463</b>&nbsp;<font size=-1></font></td></tr></table></td>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;(*sit).AliasName = alias;</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;(*sit).AliasName = alias;</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;(*sit).Connected = true;</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;(*sit).Connected = true;</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;msgin.serial ((*sit).ShortName, (*sit).LongName);</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;msgin.serial ((*sit).ShortName, (*sit).LongName);</font></td></tr>
+<tr><td bgcolor="#cccccc">&nbsp;</td><td bgcolor="#ccccff"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;msgin.serialCont ((*sit).Commands);</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp;</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp;</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;nlinfo (&quot;*:%d:%d is identified to be '%s' '%s' '%s'&quot;, aes-&gt;Id, sid, (*sit).AliasName.c_str(), (*sit).ShortName.c_str(), (*sit).LongName.c_str());</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;nlinfo (&quot;*:%d:%d is identified to be '%s' '%s' '%s'&quot;, aes-&gt;Id, sid, (*sit).AliasName.c_str(), (*sit).ShortName.c_str(), (*sit).LongName.c_str());</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp;</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp;</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// broadcast the message to all admin client</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// broadcast the message to all admin client</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;CMessage msgout (CNetManager::getSIDA (&quot;AS&quot;), &quot;SID&quot;);</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;CMessage msgout (CNetManager::getSIDA (&quot;AS&quot;), &quot;SID&quot;);</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;msgout.serial (aes-&gt;Id, sid, (*sit).AliasName, (*sit).ShortName, (*sit).LongName);</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;msgout.serial (aes-&gt;Id, sid, (*sit).AliasName, (*sit).ShortName, (*sit).LongName);</font></td></tr>
+<tr><td bgcolor="#cccccc">&nbsp;</td><td bgcolor="#ccccff"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;msgout.serialCont ((*sit).Commands);</font></td></tr>
+<tr><td bgcolor="#cccccc">&nbsp;</td><td bgcolor="#ccccff"><font face="Helvetica,Arial" size="-1">&nbsp;</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;CNetManager::send (&quot;AS&quot;, msgout, 0);</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;CNetManager::send (&quot;AS&quot;, msgout, 0);</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp;}</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp;}</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp;</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp;</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp;static void cbServiceReady (CMessage&amp; msgin, TSockId from, CCallbackNetBase &amp;netbase)</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp;static void cbServiceReady (CMessage&amp; msgin, TSockId from, CCallbackNetBase &amp;netbase)</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp;{</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp;{</font></td></tr>
+<tr><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;CAdminExecutorService *aes = (CAdminExecutorService*) from-&gt;appId();</font></td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;CAdminExecutorService *aes = (CAdminExecutorService*) (uint) from-&gt;appId();</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp;</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp;</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;uint32 sid;</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;uint32 sid;</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;msgin.serial (sid);</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;msgin.serial (sid);</font></td></tr>
+<tr bgcolor="#dddddd"><td width="50%"><table width="100%" border=1 cellpadding=5><tr><td><b>Line 413</b>&nbsp;<font size=-1></font></td></tr></table></td><td width="50%"><table width="100%" border=1 cellpadding=5><tr><td><b>Line 499</b>&nbsp;<font size=-1></font></td></tr></table></td>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp;</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp;</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp;static void cbServiceConnection (CMessage&amp; msgin, TSockId from, CCallbackNetBase &amp;netbase)</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp;static void cbServiceConnection (CMessage&amp; msgin, TSockId from, CCallbackNetBase &amp;netbase)</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp;{</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp;{</font></td></tr>
+<tr><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;CAdminExecutorService *aes = (CAdminExecutorService*) from-&gt;appId();</font></td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;CAdminExecutorService *aes = (CAdminExecutorService*) (uint) from-&gt;appId();</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp;</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp;</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;uint32 sid;</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;uint32 sid;</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;msgin.serial (sid);</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;msgin.serial (sid);</font></td></tr>
+<tr bgcolor="#dddddd"><td width="50%"><table width="100%" border=1 cellpadding=5><tr><td><b>Line 433</b>&nbsp;<font size=-1></font></td></tr></table></td><td width="50%"><table width="100%" border=1 cellpadding=5><tr><td><b>Line 519</b>&nbsp;<font size=-1></font></td></tr></table></td>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp;</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp;</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp;static void cbServiceDisconnection (CMessage&amp; msgin, TSockId from, CCallbackNetBase &amp;netbase)</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp;static void cbServiceDisconnection (CMessage&amp; msgin, TSockId from, CCallbackNetBase &amp;netbase)</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp;{</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp;{</font></td></tr>
+<tr><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;CAdminExecutorService *aes = (CAdminExecutorService*) from-&gt;appId();</font></td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;CAdminExecutorService *aes = (CAdminExecutorService*) (uint) from-&gt;appId();</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp;</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp;</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;uint32 sid;</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;uint32 sid;</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;msgin.serial (sid);</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;msgin.serial (sid);</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp;</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp;</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;nlinfo (&quot;*:%d:%d disconnected&quot;, aes-&gt;Id, sid);</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;nlinfo (&quot;*:%d:%d disconnected&quot;, aes-&gt;Id, sid);</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp;</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp;</font></td></tr>
+<tr><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;SIT sit = aes-&gt;findService(sid);</font></td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;SIT sit = aes-&gt;findService(sid, false);</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp;</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp;</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// broadcast the message to all admin client</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// broadcast the message to all admin client</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;CMessage msgout (CNetManager::getSIDA (&quot;AS&quot;), &quot;SD&quot;);</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;CMessage msgout (CNetManager::getSIDA (&quot;AS&quot;), &quot;SD&quot;);</font></td></tr>
+<tr><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;msgout.serial (aes-&gt;Id, (*sit).Id);</font></td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;msgout.serial (aes-&gt;Id, sid);</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;CNetManager::send (&quot;AS&quot;, msgout, 0);</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;CNetManager::send (&quot;AS&quot;, msgout, 0);</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp;</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp;</font></td></tr>
+<tr><td bgcolor="#cccccc">&nbsp;</td><td bgcolor="#ccccff"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// the service could disconnect before it's identification, in this case, we don't have it in the service list</font></td></tr>
+<tr><td bgcolor="#cccccc">&nbsp;</td><td bgcolor="#ccccff"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;if (sit != aes-&gt;Services.end ())</font></td></tr>
+<tr><td bgcolor="#cccccc">&nbsp;</td><td bgcolor="#ccccff"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;if ((*sit).InConfig)</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;if ((*sit).InConfig)</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;(*sit).Ready = (*sit).Connected = false;</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;(*sit).Ready = (*sit).Connected = false;</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;(*sit).Id = 0xFFFFFFFF;</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;(*sit).Id = 0xFFFFFFFF;</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;(*sit).ShortName = (*sit).LongName = &quot;&quot;;</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;(*sit).ShortName = (*sit).LongName = &quot;&quot;;</font></td></tr>
+<tr><td bgcolor="#cccccc">&nbsp;</td><td bgcolor="#ccccff"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;(*sit).Commands.clear ();</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;else</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;else</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{</font></td></tr>
+<tr bgcolor="#dddddd"><td width="50%"><table width="100%" border=1 cellpadding=5><tr><td><b>Line 460</b>&nbsp;<font size=-1></font></td></tr></table></td><td width="50%"><table width="100%" border=1 cellpadding=5><tr><td><b>Line 550</b>&nbsp;<font size=-1></font></td></tr></table></td>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp;}</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp;}</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp;</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp;</font></td></tr>
+<tr><td bgcolor="#cccccc">&nbsp;</td><td bgcolor="#ccccff"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;displayServices ();</font></td></tr>
+<tr><td bgcolor="#cccccc">&nbsp;</td><td bgcolor="#ccccff"><font face="Helvetica,Arial" size="-1">&nbsp;}</font></td></tr>
+<tr><td bgcolor="#cccccc">&nbsp;</td><td bgcolor="#ccccff"><font face="Helvetica,Arial" size="-1">&nbsp;</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp;// i'm connected to a new admin executor service</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp;// i'm connected to a new admin executor service</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp;void cbAESConnection (const string &amp;serviceName, TSockId from, void *arg)</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp;void cbAESConnection (const string &amp;serviceName, TSockId from, void *arg)</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp;{</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp;{</font></td></tr>
+<tr bgcolor="#dddddd"><td width="50%"><table width="100%" border=1 cellpadding=5><tr><td><b>Line 467</b>&nbsp;<font size=-1></font></td></tr></table></td><td width="50%"><table width="100%" border=1 cellpadding=5><tr><td><b>Line 560</b>&nbsp;<font size=-1></font></td></tr></table></td>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;CAdminExecutorService *aes = &amp;(*aesit);</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;CAdminExecutorService *aes = &amp;(*aesit);</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// set the appid to find the aes in O(1)</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// set the appid to find the aes in O(1)</font></td></tr>
+<tr><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;from-&gt;setAppId ((uint64)aes);</font></td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;from-&gt;setAppId ((uint64)(uint)aes);</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp;</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp;</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;aes-&gt;Connected = true;</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;aes-&gt;Connected = true;</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;nlinfo (&quot;*:%d:* connected&quot;, aes-&gt;Id);</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;nlinfo (&quot;*:%d:* connected&quot;, aes-&gt;Id);</font></td></tr>
+<tr bgcolor="#dddddd"><td width="50%"><table width="100%" border=1 cellpadding=5><tr><td><b>Line 490</b>&nbsp;<font size=-1></font></td></tr></table></td><td width="50%"><table width="100%" border=1 cellpadding=5><tr><td><b>Line 583</b>&nbsp;<font size=-1></font></td></tr></table></td>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp;void cbAESDisconnection (const string &amp;serviceName, TSockId from, void *arg)</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp;void cbAESDisconnection (const string &amp;serviceName, TSockId from, void *arg)</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp;{</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp;{</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// get the aes with the appid</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// get the aes with the appid</font></td></tr>
+<tr><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;CAdminExecutorService *aes = (CAdminExecutorService*) from-&gt;appId();</font></td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;CAdminExecutorService *aes = (CAdminExecutorService*) (uint) from-&gt;appId();</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp;</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp;</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;aes-&gt;Connected = false;</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;aes-&gt;Connected = false;</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp;</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp;</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;SIT sit;</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;SIT sit;</font></td></tr>
+<tr><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;for (sit = aes-&gt;Services.begin(); sit != aes-&gt;Services.end(); sit++)</font></td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;for (sit = aes-&gt;Services.begin(); sit != aes-&gt;Services.end();)</font></td></tr>
+<tr><td bgcolor="#99cc99">&nbsp;</td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{</font></td></tr>
+<tr><td bgcolor="#99cc99">&nbsp;</td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// keep only inconfig services</font></td></tr>
+<tr><td bgcolor="#99cc99">&nbsp;</td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;if ((*sit).InConfig)</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;(*sit).Id = 0xFFFFFFFF;</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;(*sit).Id = 0xFFFFFFFF;</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;(*sit).ShortName = (*sit).LongName = &quot;&quot;;</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;(*sit).ShortName = (*sit).LongName = &quot;&quot;;</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;(*sit).Ready = (*sit).Connected = false;</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;(*sit).Ready = (*sit).Connected = false;</font></td></tr>
+<tr><td bgcolor="#cccccc">&nbsp;</td><td bgcolor="#ccccff"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;sit++;</font></td></tr>
+<tr><td bgcolor="#cccccc">&nbsp;</td><td bgcolor="#ccccff"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}</font></td></tr>
+<tr><td bgcolor="#cccccc">&nbsp;</td><td bgcolor="#ccccff"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;else</font></td></tr>
+<tr><td bgcolor="#cccccc">&nbsp;</td><td bgcolor="#ccccff"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{</font></td></tr>
+<tr><td bgcolor="#cccccc">&nbsp;</td><td bgcolor="#ccccff"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// erase only if it's not a service in the config</font></td></tr>
+<tr><td bgcolor="#cccccc">&nbsp;</td><td bgcolor="#ccccff"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;sit = aes-&gt;Services.erase (sit);</font></td></tr>
+<tr><td bgcolor="#cccccc">&nbsp;</td><td bgcolor="#ccccff"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp;</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp;</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;nlinfo (&quot;*:%d:* disconnected&quot;, aes-&gt;Id);</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;nlinfo (&quot;*:%d:* disconnected&quot;, aes-&gt;Id);</font></td></tr>
+<tr bgcolor="#dddddd"><td width="50%"><table width="100%" border=1 cellpadding=5><tr><td><b>Line 510</b>&nbsp;<font size=-1></font></td></tr></table></td><td width="50%"><table width="100%" border=1 cellpadding=5><tr><td><b>Line 613</b>&nbsp;<font size=-1></font></td></tr></table></td>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;CNetManager::send (&quot;AS&quot;, msgout, 0);</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;CNetManager::send (&quot;AS&quot;, msgout, 0);</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp;*/</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp;*/</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp;</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp;</font></td></tr>
+<tr><td bgcolor="#cccccc">&nbsp;</td><td bgcolor="#ccccff"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;displayServices ();</font></td></tr>
+<tr><td bgcolor="#cccccc">&nbsp;</td><td bgcolor="#ccccff"><font face="Helvetica,Arial" size="-1">&nbsp;</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// broadcast the new state of this AES</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// broadcast the new state of this AES</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;CMessage msgout (CNetManager::getSIDA (&quot;AS&quot;), &quot;AES_LIST&quot;);</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;CMessage msgout (CNetManager::getSIDA (&quot;AS&quot;), &quot;AES_LIST&quot;);</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;uint32 nbaes = 1;</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;uint32 nbaes = 1;</font></td></tr>
+<tr bgcolor="#dddddd"><td width="50%"><table width="100%" border=1 cellpadding=5><tr><td><b>Line 522</b>&nbsp;<font size=-1></font></td></tr></table></td><td width="50%"><table width="100%" border=1 cellpadding=5><tr><td><b>Line 627</b>&nbsp;<font size=-1></font></td></tr></table></td>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp;{</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp;{</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// received an answer for a command, give it to all admin client</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// received an answer for a command, give it to all admin client</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp;</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp;</font></td></tr>
+<tr><td bgcolor="#cccccc">&nbsp;</td><td bgcolor="#ccccff"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// get the aes with the appid</font></td></tr>
+<tr><td bgcolor="#cccccc">&nbsp;</td><td bgcolor="#ccccff"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;CAdminExecutorService *aes = (CAdminExecutorService*) (uint) from-&gt;appId();</font></td></tr>
+<tr><td bgcolor="#cccccc">&nbsp;</td><td bgcolor="#ccccff"><font face="Helvetica,Arial" size="-1">&nbsp;</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// broadcast the message to the admin service</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// broadcast the message to the admin service</font></td></tr>
+<tr><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;CMessage msgout (CNetManager::getSIDA (&quot;AS&quot;), &quot;LOG&quot;);</font></td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;CMessage msgout (CNetManager::getSIDA (&quot;AS&quot;), &quot;XLOG&quot;);</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;string log;</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;string log;</font></td></tr>
+<tr><td bgcolor="#cccccc">&nbsp;</td><td bgcolor="#ccccff"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;uint32 sid;</font></td></tr>
+<tr><td bgcolor="#cccccc">&nbsp;</td><td bgcolor="#ccccff"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;msgin.serial (sid);</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;msgin.serial (log);</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;msgin.serial (log);</font></td></tr>
+<tr><td bgcolor="#cccccc">&nbsp;</td><td bgcolor="#ccccff"><font face="Helvetica,Arial" size="-1">&nbsp;</font></td></tr>
+<tr><td bgcolor="#cccccc">&nbsp;</td><td bgcolor="#ccccff"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;msgout.serial (aes-&gt;Id);</font></td></tr>
+<tr><td bgcolor="#cccccc">&nbsp;</td><td bgcolor="#ccccff"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;msgout.serial (sid);</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;msgout.serial (log);</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;msgout.serial (log);</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;CNetManager::send (&quot;AS&quot;, msgout, 0);</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;CNetManager::send (&quot;AS&quot;, msgout, 0);</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp;}</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp;}</font></td></tr>
+<tr bgcolor="#dddddd"><td width="50%"><table width="100%" border=1 cellpadding=5><tr><td><b>Line 543</b>&nbsp;<font size=-1></font></td></tr></table></td><td width="50%"><table width="100%" border=1 cellpadding=5><tr><td><b>Line 656</b>&nbsp;<font size=-1></font></td></tr></table></td>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp;</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp;</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{ &quot;SAL&quot;, cbServiceAliasList },</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{ &quot;SAL&quot;, cbServiceAliasList },</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp;</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp;</font></td></tr>
+<tr><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{ &quot;LOG&quot;, cbLog },</font></td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{ &quot;XLOG&quot;, cbLog },</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp;};</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp;};</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp;</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp;</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp;</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp;</font></td></tr>
+<tr bgcolor="#dddddd"><td width="50%"><table width="100%" border=1 cellpadding=5><tr><td><b>Line 553</b>&nbsp;<font size=-1></font></td></tr></table></td><td width="50%"><table width="100%" border=1 cellpadding=5><tr><td><b>Line 666</b>&nbsp;<font size=-1></font></td></tr></table></td>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp;////////////////////////////////////////////////////////////////////////////////////////////////////////</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp;////////////////////////////////////////////////////////////////////////////////////////////////////////</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp;////////////////////////////////////////////////////////////////////////////////////////////////////////</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp;////////////////////////////////////////////////////////////////////////////////////////////////////////</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp;</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp;</font></td></tr>
+<tr><td bgcolor="#ff9999"><font face="Helvetica,Arial" size="-1">&nbsp;void errorMessage(string message, TSockId from, CCallbackNetBase &amp;netbase)</font></td><td bgcolor="#cccccc">&nbsp;</td></tr>
+<tr><td bgcolor="#ff9999"><font face="Helvetica,Arial" size="-1">&nbsp;{</font></td><td bgcolor="#cccccc">&nbsp;</td></tr>
+<tr><td bgcolor="#ff9999"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;CMessage msgout (netbase.getSIDA (), &quot;ERR&quot;);</font></td><td bgcolor="#cccccc">&nbsp;</td></tr>
+<tr><td bgcolor="#ff9999"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;msgout.serial (message);</font></td><td bgcolor="#cccccc">&nbsp;</td></tr>
+<tr><td bgcolor="#ff9999"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;netbase.send (msgout, from);</font></td><td bgcolor="#cccccc">&nbsp;</td></tr>
+<tr><td bgcolor="#ff9999"><font face="Helvetica,Arial" size="-1">&nbsp;}</font></td><td bgcolor="#cccccc">&nbsp;</td></tr>
+<tr><td bgcolor="#ff9999"><font face="Helvetica,Arial" size="-1">&nbsp;</font></td><td bgcolor="#cccccc">&nbsp;</td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp;//</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp;//</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp;// A new admin client is connected.</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp;// A new admin client is connected.</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp;//</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp;//</font></td></tr>
+<tr bgcolor="#dddddd"><td width="50%"><table width="100%" border=1 cellpadding=5><tr><td><b>Line 567</b>&nbsp;<font size=-1></font></td></tr></table></td><td width="50%"><table width="100%" border=1 cellpadding=5><tr><td><b>Line 673</b>&nbsp;<font size=-1></font></td></tr></table></td>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp;{</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp;{</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// new client, send him all out info about services</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// new client, send him all out info about services</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp;</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp;</font></td></tr>
+<tr><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;nlinfo (&quot;client %s is connected&quot;, from-&gt;asString().c_str());</font></td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;nlinfo (&quot;admin %s is connected&quot;, from-&gt;asString().c_str());</font></td></tr>
+<tr><td bgcolor="#99cc99">&nbsp;</td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp;</font></td></tr>
+<tr><td bgcolor="#99cc99">&nbsp;</td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;CNetManager::getNetBase(serviceName)-&gt;authorizeOnly (&quot;AUTH&quot;, from);</font></td></tr>
+<tr><td bgcolor="#99cc99">&nbsp;</td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp;}</font></td></tr>
+<tr><td bgcolor="#99cc99">&nbsp;</td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp;</font></td></tr>
+<tr><td bgcolor="#99cc99">&nbsp;</td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp;static void cbAuthenticateClient (CMessage&amp; msgin, TSockId from, CCallbackNetBase &amp;netbase)</font></td></tr>
+<tr><td bgcolor="#99cc99">&nbsp;</td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp;{</font></td></tr>
+<tr><td bgcolor="#99cc99">&nbsp;</td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;//</font></td></tr>
+<tr><td bgcolor="#99cc99">&nbsp;</td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// Check the validity of the admin</font></td></tr>
+<tr><td bgcolor="#99cc99">&nbsp;</td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;//</font></td></tr>
+<tr><td bgcolor="#99cc99">&nbsp;</td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;</font></td></tr>
+<tr><td bgcolor="#99cc99">&nbsp;</td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;string password;</font></td></tr>
+<tr><td bgcolor="#99cc99">&nbsp;</td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;bool ok = false;</font></td></tr>
+<tr><td bgcolor="#99cc99">&nbsp;</td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;try</font></td></tr>
+<tr><td bgcolor="#99cc99">&nbsp;</td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{</font></td></tr>
+<tr><td bgcolor="#99cc99">&nbsp;</td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;msgin.serial (password);</font></td></tr>
+<tr><td bgcolor="#99cc99">&nbsp;</td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp;</font></td></tr>
+<tr><td bgcolor="#99cc99">&nbsp;</td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;if (password == IService::ConfigFile.getVar(&quot;Password&quot;).asString())</font></td></tr>
+<tr><td bgcolor="#99cc99">&nbsp;</td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{</font></td></tr>
+<tr><td bgcolor="#99cc99">&nbsp;</td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// good authentification</font></td></tr>
+<tr><td bgcolor="#99cc99">&nbsp;</td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;ok = true;</font></td></tr>
+<tr><td bgcolor="#99cc99">&nbsp;</td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}</font></td></tr>
+<tr><td bgcolor="#99cc99">&nbsp;</td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}</font></td></tr>
+<tr><td bgcolor="#99cc99">&nbsp;</td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;catch (Exception &amp;)</font></td></tr>
+<tr><td bgcolor="#99cc99">&nbsp;</td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{</font></td></tr>
+<tr><td bgcolor="#99cc99">&nbsp;</td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// problem, eject him</font></td></tr>
+<tr><td bgcolor="#99cc99">&nbsp;</td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}</font></td></tr>
+<tr><td bgcolor="#99cc99">&nbsp;</td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp;</font></td></tr>
+<tr><td bgcolor="#99cc99">&nbsp;</td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;if (ok)</font></td></tr>
+<tr><td bgcolor="#99cc99">&nbsp;</td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{</font></td></tr>
+<tr><td bgcolor="#99cc99">&nbsp;</td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;netbase.authorizeOnly (NULL, from);</font></td></tr>
+<tr><td bgcolor="#99cc99">&nbsp;</td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;nlinfo (&quot;Admin authentification success&quot;);</font></td></tr>
+<tr><td bgcolor="#99cc99">&nbsp;</td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}</font></td></tr>
+<tr><td bgcolor="#99cc99">&nbsp;</td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;else</font></td></tr>
+<tr><td bgcolor="#99cc99">&nbsp;</td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{</font></td></tr>
+<tr><td bgcolor="#99cc99">&nbsp;</td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// bad auth =&gt; disconnect</font></td></tr>
+<tr><td bgcolor="#99cc99">&nbsp;</td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;netbase.disconnect (from);</font></td></tr>
+<tr><td bgcolor="#99cc99">&nbsp;</td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;nlwarning (&quot;Bad admin authentification, tried password: '%s'&quot;, password.c_str());</font></td></tr>
+<tr><td bgcolor="#99cc99">&nbsp;</td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;return;</font></td></tr>
+<tr><td bgcolor="#99cc99">&nbsp;</td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp;</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp;</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;//</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;//</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// send the list of all the aes</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// send the list of all the aes</font></td></tr>
+<tr bgcolor="#dddddd"><td width="50%"><table width="100%" border=1 cellpadding=5><tr><td><b>Line 605</b>&nbsp;<font size=-1></font></td></tr></table></td><td width="50%"><table width="100%" border=1 cellpadding=5><tr><td><b>Line 750</b>&nbsp;<font size=-1></font></td></tr></table></td>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;msgout.serial ((*sit).Id, (*sit).AliasName, (*sit).ShortName, (*sit).LongName);</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;msgout.serial ((*sit).Id, (*sit).AliasName, (*sit).ShortName, (*sit).LongName);</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;msgout.serial ((*sit).Ready, (*sit).Connected, (*sit).InConfig);</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;msgout.serial ((*sit).Ready, (*sit).Connected, (*sit).InConfig);</font></td></tr>
+<tr><td bgcolor="#cccccc">&nbsp;</td><td bgcolor="#ccccff"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;msgout.serialCont ((*sit).Commands);</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;CNetManager::send (&quot;AS&quot;, msgout, from);</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;CNetManager::send (&quot;AS&quot;, msgout, from);</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp;</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp;</font></td></tr>
+<tr><td bgcolor="#cccccc">&nbsp;</td><td bgcolor="#ccccff"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;displayServices ();</font></td></tr>
+<tr><td bgcolor="#cccccc">&nbsp;</td><td bgcolor="#ccccff"><font face="Helvetica,Arial" size="-1">&nbsp;</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;//</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;//</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// send service alias list</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// send service alias list</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;//</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;//</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp;</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp;</font></td></tr>
+<tr><td bgcolor="#cccccc">&nbsp;</td><td bgcolor="#ccccff"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;nlinfo(&quot;send SAL to admin startup&quot;);</font></td></tr>
+<tr><td bgcolor="#cccccc">&nbsp;</td><td bgcolor="#ccccff"><font face="Helvetica,Arial" size="-1">&nbsp;</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;for (aesit = AdminExecutorServices.begin(); aesit != AdminExecutorServices.end(); aesit++)</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;for (aesit = AdminExecutorServices.begin(); aesit != AdminExecutorServices.end(); aesit++)</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;CMessage msgout2 (CNetManager::getSIDA (&quot;AS&quot;), &quot;SAL&quot;);</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;CMessage msgout2 (CNetManager::getSIDA (&quot;AS&quot;), &quot;SAL&quot;);</font></td></tr>
+<tr bgcolor="#dddddd"><td width="50%"><table width="100%" border=1 cellpadding=5><tr><td><b>Line 634</b>&nbsp;<font size=-1></font></td></tr></table></td><td width="50%"><table width="100%" border=1 cellpadding=5><tr><td><b>Line 784</b>&nbsp;<font size=-1></font></td></tr></table></td>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;if (aesit == AdminExecutorServices.end())</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;if (aesit == AdminExecutorServices.end())</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// don't find the aes, send an error message</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// don't find the aes, send an error message</font></td></tr>
+<tr><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;errorMessage (&quot;couldn't execute command, as didn't find the aes&quot;, from, netbase);</font></td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;messageToClient (0, &quot;couldn't execute command, as didn't find the aes&quot;, from);</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;return;</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;return;</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp;</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp;</font></td></tr>
+<tr bgcolor="#dddddd"><td width="50%"><table width="100%" border=1 cellpadding=5><tr><td><b>Line 657</b>&nbsp;<font size=-1></font></td></tr></table></td><td width="50%"><table width="100%" border=1 cellpadding=5><tr><td><b>Line 807</b>&nbsp;<font size=-1></font></td></tr></table></td>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;if (aesit == AdminExecutorServices.end())</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;if (aesit == AdminExecutorServices.end())</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// don't find the aes, send an error message</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// don't find the aes, send an error message</font></td></tr>
+<tr><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;errorMessage (&quot;couldn't start service, as didn't find the aes&quot;, from, netbase);</font></td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;messageToClient (0, &quot;couldn't start service, as didn't find the aes&quot;, from);</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;return;</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;return;</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp;</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp;</font></td></tr>
+<tr bgcolor="#dddddd"><td width="50%"><table width="100%" border=1 cellpadding=5><tr><td><b>Line 677</b>&nbsp;<font size=-1></font></td></tr></table></td><td width="50%"><table width="100%" border=1 cellpadding=5><tr><td><b>Line 827</b>&nbsp;<font size=-1></font></td></tr></table></td>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;AESIT aesit = findAdminExecutorService (aesid, false);</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;AESIT aesit = findAdminExecutorService (aesid, false);</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;if (aesit == AdminExecutorServices.end())</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;if (aesit == AdminExecutorServices.end())</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{</font></td></tr>
+<tr><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;errorMessage (&quot;couldn't stop service, as didn't find the aes&quot;, from, netbase);</font></td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;messageToClient (0, &quot;couldn't stop service, as didn't find the aes&quot;, from);</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// don't find the aes, send an error message</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// don't find the aes, send an error message</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;return;</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;return;</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}</font></td></tr>
+<tr bgcolor="#dddddd"><td width="50%"><table width="100%" border=1 cellpadding=5><tr><td><b>Line 686</b>&nbsp;<font size=-1></font></td></tr></table></td><td width="50%"><table width="100%" border=1 cellpadding=5><tr><td><b>Line 836</b>&nbsp;<font size=-1></font></td></tr></table></td>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;if (sit == (*aesit).Services.end())</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;if (sit == (*aesit).Services.end())</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// don't find the s, send an error message</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// don't find the s, send an error message</font></td></tr>
+<tr><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;errorMessage (&quot;couldn't stop service, as didn't find the service&quot;, from, netbase);</font></td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;messageToClient (0, &quot;couldn't stop service, as didn't find the service&quot;, from);</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;return;</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;return;</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp;</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp;</font></td></tr>
+<tr bgcolor="#dddddd"><td width="50%"><table width="100%" border=1 cellpadding=5><tr><td><b>Line 708</b>&nbsp;<font size=-1></font></td></tr></table></td><td width="50%"><table width="100%" border=1 cellpadding=5><tr><td><b>Line 858</b>&nbsp;<font size=-1></font></td></tr></table></td>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;AESIT aesit = findAdminExecutorService (aesid, false);</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;AESIT aesit = findAdminExecutorService (aesid, false);</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;if (aesit == AdminExecutorServices.end())</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;if (aesit == AdminExecutorServices.end())</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{</font></td></tr>
+<tr><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;errorMessage (&quot;couldn't stop service, as didn't find the aes&quot;, from, netbase);</font></td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;messageToClient (0, &quot;couldn't stop service, as didn't find the aes&quot;, from);</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// don't find the aes, send an error message</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// don't find the aes, send an error message</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;return;</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;return;</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}</font></td></tr>
+<tr bgcolor="#dddddd"><td width="50%"><table width="100%" border=1 cellpadding=5><tr><td><b>Line 717</b>&nbsp;<font size=-1></font></td></tr></table></td><td width="50%"><table width="100%" border=1 cellpadding=5><tr><td><b>Line 867</b>&nbsp;<font size=-1></font></td></tr></table></td>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;if (sit == (*aesit).Services.end())</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;if (sit == (*aesit).Services.end())</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// don't find the s, send an error message</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// don't find the s, send an error message</font></td></tr>
+<tr><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;errorMessage (&quot;couldn't stop service, as didn't find the service&quot;, from, netbase);</font></td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;messageToClient (0, &quot;couldn't stop service, as didn't find the service&quot;, from);</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;return;</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;return;</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp;</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp;</font></td></tr>
+<tr bgcolor="#dddddd"><td width="50%"><table width="100%" border=1 cellpadding=5><tr><td><b>Line 752</b>&nbsp;<font size=-1></font></td></tr></table></td><td width="50%"><table width="100%" border=1 cellpadding=5><tr><td><b>Line 902</b>&nbsp;<font size=-1></font></td></tr></table></td>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp;</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp;</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp;TCallbackItem ClientCallbackArray[] =</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp;TCallbackItem ClientCallbackArray[] =</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp;{</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp;{</font></td></tr>
+<tr><td bgcolor="#cccccc">&nbsp;</td><td bgcolor="#ccccff"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{ &quot;AUTH&quot;, cbAuthenticateClient },</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{ &quot;SYS&quot;, cbExecuteSystemCommand },</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{ &quot;SYS&quot;, cbExecuteSystemCommand },</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{ &quot;STARTS&quot;, cbStartService },</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{ &quot;STARTS&quot;, cbStartService },</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{ &quot;STOPS&quot;, cbStopService },</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{ &quot;STOPS&quot;, cbStopService },</font></td></tr>
+<tr bgcolor="#dddddd"><td width="50%"><table width="100%" border=1 cellpadding=5><tr><td><b>Line 785</b>&nbsp;<font size=-1></font></td></tr></table></td><td width="50%"><table width="100%" border=1 cellpadding=5><tr><td><b>Line 936</b>&nbsp;<font size=-1></font></td></tr></table></td>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;//</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;//</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp;</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp;</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;CConfigFile::CVar &amp;host = ConfigFile.getVar (&quot;AESHosts&quot;);</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;CConfigFile::CVar &amp;host = ConfigFile.getVar (&quot;AESHosts&quot;);</font></td></tr>
+<tr><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;for (sint i = 0 ; i &lt; host.size (); i+=2)</font></td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;sint i;</font></td></tr>
+<tr><td bgcolor="#99cc99">&nbsp;</td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;for (i = 0 ; i &lt; host.size (); i+=2)</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;string serverAlias = host.asString(i);</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;string serverAlias = host.asString(i);</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;string serverAddr = host.asString(i+1);</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;string serverAddr = host.asString(i+1);</font></td></tr>
+<tr bgcolor="#dddddd"><td width="50%"><table width="100%" border=1 cellpadding=5><tr><td><b>Line 821</b>&nbsp;<font size=-1></font></td></tr></table></td><td width="50%"><table width="100%" border=1 cellpadding=5><tr><td><b>Line 973</b>&nbsp;<font size=-1></font></td></tr></table></td>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;s.InConfig = true;</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;s.InConfig = true;</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;(*aesit).Services.push_back (s);</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;(*aesit).Services.push_back (s);</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}</font></td></tr>
+<tr><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}</font></td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;displayServices ();</font></td></tr>
+<tr><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp;</font></td><td bgcolor="#99cc99">&nbsp;</td></tr>
+<tr><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;bool &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;update ()</font></td><td bgcolor="#99cc99">&nbsp;</td></tr>
+<tr><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{</font></td><td bgcolor="#99cc99">&nbsp;</td></tr>
+<tr><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;return true;</font></td><td bgcolor="#99cc99">&nbsp;</td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp;};</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp;};</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp;</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp;</font></td></tr>
+<tr bgcolor="#dddddd"><td width="50%"><table width="100%" border=1 cellpadding=5><tr><td><b>Line 834</b>&nbsp;<font size=-1></font></td></tr></table></td><td width="50%"><table width="100%" border=1 cellpadding=5><tr><td><b>Line 982</b>&nbsp;<font size=-1></font></td></tr></table></td>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp;// AESAS is a client connection to the admin executor</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp;// AESAS is a client connection to the admin executor</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp;</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp;</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp;/// Naming Service</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp;/// Naming Service</font></td></tr>
+<tr><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp;NLNET_SERVICE_MAIN (CAdminService, &quot;AS&quot;, &quot;admin_service&quot;, 49995, ClientCallbackArray);</font></td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp;NLNET_SERVICE_MAIN (CAdminService, &quot;AS&quot;, &quot;admin_service&quot;, 49995, ClientCallbackArray, NELNS_CONFIG, NELNS_LOGS);</font></td></tr>
+</table><br><hr noshade width="100%">
+<table border=0><tr><td><table border=1><tr><td>Legend:<br><table border=0 cellspacing=0 cellpadding=1>
+<tr><td align=center bgcolor="#ff9999">Removed from v.1.5</td><td bgcolor="#cccccc">&nbsp;</td></tr><tr bgcolor="#99ff99"><td align=center colspan=2>changed lines</td></tr><tr><td bgcolor="#cccccc">&nbsp;</td><td align=center bgcolor="#ccccff">Added in v.1.14</td></tr></table></td></tr></table>
+<td><FORM METHOD="GET" ACTION="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cpp.diff">
+<INPUT TYPE=HIDDEN NAME="r1" VALUE="1.5">
+<INPUT TYPE=HIDDEN NAME="r2" VALUE="1.14">
+<SELECT NAME="f" onchange="submit()">
+<OPTION VALUE=h SELECTED>Colored Diff<OPTION VALUE=H>Long Colored Diff<OPTION VALUE=u>Unidiff<OPTION VALUE=c>Context Diff<OPTION VALUE=s>Side by Side</SELECT><INPUT TYPE=SUBMIT VALUE="Show">
+</FORM>
+</td></tr></table> \ No newline at end of file
diff --git a/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cpp.diff?r1=1.5&r2=1.6 b/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cpp.diff?r1=1.5&r2=1.6
new file mode 100644
index 00000000..733a57bc
--- /dev/null
+++ b/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cpp.diff?r1=1.5&r2=1.6
@@ -0,0 +1,379 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"><HTML>
+<HEAD><style> A { color:black }</style>
+<!-- hennerik CVSweb $Revision: 1.93 $ -->
+<TITLE>code/nelns/admin_service/admin_service.cpp - diff - 1.6</TITLE></HEAD>
+<BODY BGCOLOR="#eeeeee">
+<table width="100%" border=0 cellspacing=0 cellpadding=1 bgcolor="#aaaaaa"><tr valign=bottom><td><a href="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cpp"><IMG SRC="http://www.nevrax.org/inc/img/picto-up.gif" ALT="[BACK]" BORDER="0" WIDTH="14" HEIGHT="13"></a> <b>Return to <A HREF="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cpp">admin_service.cpp</A>
+ CVS log</b> <IMG SRC="http://www.nevrax.org/inc/img/picto-news.gif" ALT="[TXT]" BORDER="0" WIDTH="13" HEIGHT="15"></td><td align=right><IMG SRC="http://www.nevrax.org/inc/img/picto-dir.gif" ALT="[DIR]" BORDER="0" WIDTH="15" HEIGHT="13"> <b>Up to <a href="/cvs/cvsweb.cgi/">Nevrax</a> / <a href="/cvs/cvsweb.cgi/code/">code</a> / <a href="/cvs/cvsweb.cgi/code/nelns/">nelns</a> / <a href="/cvs/cvsweb.cgi/code/nelns/admin_service/">admin_service</a></b></td></tr></table><h3 align=center>Diff for /code/nelns/admin_service/admin_service.cpp between version 1.5 and 1.6</h3>
+<table border=0 cellspacing=0 cellpadding=0 width="100%">
+<tr bgcolor="#ffffff">
+<th width="50%" valign=TOP>version 1.5, 2001/05/31 16:44:54</th>
+<th width="50%" valign=TOP>version 1.6, 2001/06/07 16:19:05</th>
+<tr bgcolor="#dddddd"><td width="50%"><table width="100%" border=1 cellpadding=5><tr><td><b>Line 51</b>&nbsp;<font size=-1></font></td></tr></table></td><td width="50%"><table width="100%" border=1 cellpadding=5><tr><td><b>Line 51</b>&nbsp;<font size=-1></font></td></tr></table></td>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;bool &nbsp; &nbsp; &nbsp; &nbsp;Ready; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;/// true if the service is ready</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;bool &nbsp; &nbsp; &nbsp; &nbsp;Ready; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;/// true if the service is ready</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;bool &nbsp; &nbsp; &nbsp; &nbsp;Connected; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;/// true if the service is connected to the AES</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;bool &nbsp; &nbsp; &nbsp; &nbsp;Connected; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;/// true if the service is connected to the AES</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;bool &nbsp; &nbsp; &nbsp; &nbsp;InConfig; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;/// true if the service is in the configuration</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;bool &nbsp; &nbsp; &nbsp; &nbsp;InConfig; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;/// true if the service is in the configuration</font></td></tr>
+<tr><td bgcolor="#cccccc">&nbsp;</td><td bgcolor="#ccccff"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;vector&lt;string&gt; &nbsp; &nbsp; &nbsp; &nbsp;Commands;</font></td></tr>
+<tr><td bgcolor="#cccccc">&nbsp;</td><td bgcolor="#ccccff"><font face="Helvetica,Arial" size="-1">&nbsp;</font></td></tr>
+<tr><td bgcolor="#cccccc">&nbsp;</td><td bgcolor="#ccccff"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;void setValues (const CService &amp;t)</font></td></tr>
+<tr><td bgcolor="#cccccc">&nbsp;</td><td bgcolor="#ccccff"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{</font></td></tr>
+<tr><td bgcolor="#cccccc">&nbsp;</td><td bgcolor="#ccccff"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// copy all except gtk stuffs</font></td></tr>
+<tr><td bgcolor="#cccccc">&nbsp;</td><td bgcolor="#ccccff"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;Id = t.Id;</font></td></tr>
+<tr><td bgcolor="#cccccc">&nbsp;</td><td bgcolor="#ccccff"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;AliasName = t.AliasName;</font></td></tr>
+<tr><td bgcolor="#cccccc">&nbsp;</td><td bgcolor="#ccccff"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;ShortName = t.ShortName;</font></td></tr>
+<tr><td bgcolor="#cccccc">&nbsp;</td><td bgcolor="#ccccff"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;LongName = t.LongName;</font></td></tr>
+<tr><td bgcolor="#cccccc">&nbsp;</td><td bgcolor="#ccccff"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;Ready = t.Ready;</font></td></tr>
+<tr><td bgcolor="#cccccc">&nbsp;</td><td bgcolor="#ccccff"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;Connected = t.Connected;</font></td></tr>
+<tr><td bgcolor="#cccccc">&nbsp;</td><td bgcolor="#ccccff"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;//InConfig = t.InConfig; never change the inconfig value</font></td></tr>
+<tr><td bgcolor="#cccccc">&nbsp;</td><td bgcolor="#ccccff"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp;};</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp;};</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp;</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp;</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp;typedef list&lt;CService&gt; TServices;</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp;typedef list&lt;CService&gt; TServices;</font></td></tr>
+<tr bgcolor="#dddddd"><td width="50%"><table width="100%" border=1 cellpadding=5><tr><td><b>Line 136</b>&nbsp;<font size=-1></font></td></tr></table></td><td width="50%"><table width="100%" border=1 cellpadding=5><tr><td><b>Line 149</b>&nbsp;<font size=-1></font></td></tr></table></td>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp;{</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp;{</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;for (AESIT aesit = AdminExecutorServices.begin(); aesit != AdminExecutorServices.end(); aesit++)</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;for (AESIT aesit = AdminExecutorServices.begin(); aesit != AdminExecutorServices.end(); aesit++)</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{</font></td></tr>
+<tr><td bgcolor="#cccccc">&nbsp;</td><td bgcolor="#ccccff"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;nlinfo (&quot;&gt; Admin&quot;);</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;for (SIT sit = (*aesit).Services.begin(); sit != (*aesit).Services.end(); sit++)</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;for (SIT sit = (*aesit).Services.begin(); sit != (*aesit).Services.end(); sit++)</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{</font></td></tr>
+<tr><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;nlinfo (&quot;&gt; %s %s %s %d %d&quot;, (*aesit).SockId-&gt;asString().c_str(), (*sit).ShortName.c_str(), (*sit).LongName.c_str(), (*aesit).Id, (*sit).Id);</font></td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;nlinfo (&quot; &nbsp;&gt; '%s' '%s' '%s' '%s' %d %d&quot;, (*aesit).SockId-&gt;asString().c_str(), (*sit).AliasName.c_str(), (*sit).ShortName.c_str(), (*sit).LongName.c_str(), (*aesit).Id, (*sit).Id);</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp;}</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp;}</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp;</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp;</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp;</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp;</font></td></tr>
+<tr><td bgcolor="#cccccc">&nbsp;</td><td bgcolor="#ccccff"><font face="Helvetica,Arial" size="-1">&nbsp;// send a message to a client. if ok is 0 it s an error or it s a normal </font></td></tr>
+<tr><td bgcolor="#cccccc">&nbsp;</td><td bgcolor="#ccccff"><font face="Helvetica,Arial" size="-1">&nbsp;void messageToClient (uint8 ok, string msg, TSockId from = NULL)</font></td></tr>
+<tr><td bgcolor="#cccccc">&nbsp;</td><td bgcolor="#ccccff"><font face="Helvetica,Arial" size="-1">&nbsp;{</font></td></tr>
+<tr><td bgcolor="#cccccc">&nbsp;</td><td bgcolor="#ccccff"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;CMessage msgout (CNetManager::getSIDA (&quot;AS&quot;), &quot;MESSAGE&quot;);</font></td></tr>
+<tr><td bgcolor="#cccccc">&nbsp;</td><td bgcolor="#ccccff"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;msgout.serial (ok, msg);</font></td></tr>
+<tr><td bgcolor="#cccccc">&nbsp;</td><td bgcolor="#ccccff"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;CNetManager::send (&quot;AS&quot;, msgout, from);</font></td></tr>
+<tr><td bgcolor="#cccccc">&nbsp;</td><td bgcolor="#ccccff"><font face="Helvetica,Arial" size="-1">&nbsp;}</font></td></tr>
+<tr><td bgcolor="#cccccc">&nbsp;</td><td bgcolor="#ccccff"><font face="Helvetica,Arial" size="-1">&nbsp;</font></td></tr>
+<tr><td bgcolor="#cccccc">&nbsp;</td><td bgcolor="#ccccff"><font face="Helvetica,Arial" size="-1">&nbsp;</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp;////////////////////////////////////////////////////////////////////////////////////////////////////////</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp;////////////////////////////////////////////////////////////////////////////////////////////////////////</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp;////////////////////////////////////////////////////////////////////////////////////////////////////////</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp;////////////////////////////////////////////////////////////////////////////////////////////////////////</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp;/////////////////// SCRIPT MANAGER /////////////////////////////////////////////////////////////////////</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp;/////////////////// SCRIPT MANAGER /////////////////////////////////////////////////////////////////////</font></td></tr>
+<tr bgcolor="#dddddd"><td width="50%"><table width="100%" border=1 cellpadding=5><tr><td><b>Line 167</b>&nbsp;<font size=-1></font></td></tr></table></td><td width="50%"><table width="100%" border=1 cellpadding=5><tr><td><b>Line 190</b>&nbsp;<font size=-1></font></td></tr></table></td>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;if (StartAllServicesPos*2 &gt;= (uint32)script.size())</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;if (StartAllServicesPos*2 &gt;= (uint32)script.size())</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;StartAllServices = false;</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;StartAllServices = false;</font></td></tr>
+<tr><td bgcolor="#cccccc">&nbsp;</td><td bgcolor="#ccccff"><font face="Helvetica,Arial" size="-1">&nbsp;</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;nlinfo(&quot;end of the script&quot;);</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;nlinfo(&quot;end of the script&quot;);</font></td></tr>
+<tr><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// todo send that the script is finish to the admin</font></td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;messageToClient (1, &quot;Start All Service finnished correctly&quot;);</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;return;</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;return;</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp;</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp;</font></td></tr>
+<tr bgcolor="#dddddd"><td width="50%"><table width="100%" border=1 cellpadding=5><tr><td><b>Line 184</b>&nbsp;<font size=-1></font></td></tr></table></td><td width="50%"><table width="100%" border=1 cellpadding=5><tr><td><b>Line 208</b>&nbsp;<font size=-1></font></td></tr></table></td>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;catch(EBadSize &amp;)</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;catch(EBadSize &amp;)</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{</font></td></tr>
+<tr><td bgcolor="#cccccc">&nbsp;</td><td bgcolor="#ccccff"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;messageToClient (1, &quot;'Services' variable does not contains a good number of entries (must be a multiple of 2)&quot;);</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;nlwarning (&quot;'Services' variable does not contains a good number of entries (must be a multiple of 2)&quot;);</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;nlwarning (&quot;'Services' variable does not contains a good number of entries (must be a multiple of 2)&quot;);</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;StartAllServices = false;</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;StartAllServices = false;</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;return;</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;return;</font></td></tr>
+<tr bgcolor="#dddddd"><td width="50%"><table width="100%" border=1 cellpadding=5><tr><td><b>Line 192</b>&nbsp;<font size=-1></font></td></tr></table></td><td width="50%"><table width="100%" border=1 cellpadding=5><tr><td><b>Line 217</b>&nbsp;<font size=-1></font></td></tr></table></td>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;AESIT aesit = findAdminExecutorService (serverAlias, false);</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;AESIT aesit = findAdminExecutorService (serverAlias, false);</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;if (aesit == AdminExecutorServices.end())</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;if (aesit == AdminExecutorServices.end())</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{</font></td></tr>
+<tr><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;StartAllServices = false;</font></td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;messageToClient (1, &quot;don't find the server&quot;);</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;nlwarning(&quot;don't find the server&quot;);</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;nlwarning(&quot;don't find the server&quot;);</font></td></tr>
+<tr><td bgcolor="#cccccc">&nbsp;</td><td bgcolor="#ccccff"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;StartAllServices = false;</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;return;</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;return;</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp;</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp;</font></td></tr>
+<tr bgcolor="#dddddd"><td width="50%"><table width="100%" border=1 cellpadding=5><tr><td><b>Line 218</b>&nbsp;<font size=-1></font></td></tr></table></td><td width="50%"><table width="100%" border=1 cellpadding=5><tr><td><b>Line 244</b>&nbsp;<font size=-1></font></td></tr></table></td>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;catch(EUnknownVar&amp;)</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;catch(EUnknownVar&amp;)</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{</font></td></tr>
+<tr><td bgcolor="#cccccc">&nbsp;</td><td bgcolor="#ccccff"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;messageToClient (1, &quot;'Services' variable is not found&quot;);</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;nlwarning (&quot;'Services' variable is not found&quot;);</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;nlwarning (&quot;'Services' variable is not found&quot;);</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;StartAllServices = false;</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;StartAllServices = false;</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;return;</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;return;</font></td></tr>
+<tr bgcolor="#dddddd"><td width="50%"><table width="100%" border=1 cellpadding=5><tr><td><b>Line 228</b>&nbsp;<font size=-1></font></td></tr></table></td><td width="50%"><table width="100%" border=1 cellpadding=5><tr><td><b>Line 255</b>&nbsp;<font size=-1></font></td></tr></table></td>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp;{</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp;{</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;if (StartAllServices)</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;if (StartAllServices)</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{</font></td></tr>
+<tr><td bgcolor="#cccccc">&nbsp;</td><td bgcolor="#ccccff"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;messageToClient (1, &quot;already running a script, reset it&quot;);</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;nlwarning(&quot;already running a script, reset it&quot;);</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;nlwarning(&quot;already running a script, reset it&quot;);</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;StartAllServices = false;</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;StartAllServices = false;</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}</font></td></tr>
+<tr bgcolor="#dddddd"><td width="50%"><table width="100%" border=1 cellpadding=5><tr><td><b>Line 242</b>&nbsp;<font size=-1></font></td></tr></table></td><td width="50%"><table width="100%" border=1 cellpadding=5><tr><td><b>Line 270</b>&nbsp;<font size=-1></font></td></tr></table></td>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;AESIT aesit = findAdminExecutorService (serverAlias, false);</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;AESIT aesit = findAdminExecutorService (serverAlias, false);</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;if (aesit == AdminExecutorServices.end())</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;if (aesit == AdminExecutorServices.end())</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{</font></td></tr>
+<tr><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;nlwarning(&quot;aes '%s' not running, can't run the script&quot;, serverAlias.c_str());</font></td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;messageToClient (1, &quot;an aes is not running, can't run the script&quot;);</font></td></tr>
+<tr><td bgcolor="#99cc99">&nbsp;</td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;nlwarning(&quot;aes '%s' isn't running, can't run the script&quot;, serverAlias.c_str());</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;return;</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;return;</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;catch(EConfigFile &amp;)</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;catch(EConfigFile &amp;)</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{</font></td></tr>
+<tr><td bgcolor="#cccccc">&nbsp;</td><td bgcolor="#ccccff"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;messageToClient (1, &quot;bad config file&quot;);</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;nlwarning (&quot;bad config file&quot;);</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;nlwarning (&quot;bad config file&quot;);</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;return;</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;return;</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}</font></td></tr>
+<tr bgcolor="#dddddd"><td width="50%"><table width="100%" border=1 cellpadding=5><tr><td><b>Line 280</b>&nbsp;<font size=-1></font></td></tr></table></td><td width="50%"><table width="100%" border=1 cellpadding=5><tr><td><b>Line 310</b>&nbsp;<font size=-1></font></td></tr></table></td>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;nlinfo(&quot;end of command result&quot;);</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;nlinfo(&quot;end of command result&quot;);</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp;}</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp;}</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp;</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp;</font></td></tr>
+<tr><td bgcolor="#cccccc">&nbsp;</td><td bgcolor="#ccccff"><font face="Helvetica,Arial" size="-1">&nbsp;// get the service list from the admin exec and send the list to all admin client</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp;static void cbServiceList (CMessage&amp; msgin, TSockId from, CCallbackNetBase &amp;netbase)</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp;static void cbServiceList (CMessage&amp; msgin, TSockId from, CCallbackNetBase &amp;netbase)</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp;{</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp;{</font></td></tr>
+<tr><td bgcolor="#ff9999"><font face="Helvetica,Arial" size="-1">&nbsp;/* &nbsp; &nbsp; &nbsp;// get the service list from the admin exec and send the list to all admin client</font></td><td bgcolor="#cccccc">&nbsp;</td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;CAdminExecutorService *aes = (CAdminExecutorService*) from-&gt;appId();</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;CAdminExecutorService *aes = (CAdminExecutorService*) from-&gt;appId();</font></td></tr>
+<tr><td bgcolor="#ff9999"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;aes-&gt;Services.clear();</font></td><td bgcolor="#cccccc">&nbsp;</td></tr>
+<tr><td bgcolor="#ff9999"><font face="Helvetica,Arial" size="-1">&nbsp;</font></td><td bgcolor="#cccccc">&nbsp;</td></tr>
+<tr><td bgcolor="#ff9999"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;CMessage msgout (CNetManager::getSIDA (&quot;AS&quot;), &quot;SL&quot;);</font></td><td bgcolor="#cccccc">&nbsp;</td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp;</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp;</font></td></tr>
+<tr><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;uint32 nbaes = 1;</font></td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;//</font></td></tr>
+<tr><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;msgout.serial (nbaes);</font></td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// Get the list of service from aes</font></td></tr>
+<tr><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;msgout.serial (aes-&gt;Id);</font></td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;//</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp;</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp;</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;uint32 nbs;</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;uint32 nbs;</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;msgin.serial (nbs);</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;msgin.serial (nbs);</font></td></tr>
+<tr><td bgcolor="#ff9999"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;msgout.serial (nbs);</font></td><td bgcolor="#cccccc">&nbsp;</td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp;</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp;</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;for (uint32 i = 0; i &lt; nbs; i++)</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;for (uint32 i = 0; i &lt; nbs; i++)</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{</font></td></tr>
+<tr><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;uint32 sid;</font></td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// find the service</font></td></tr>
+<tr><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;msgin.serial(sid);</font></td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;CService s;</font></td></tr>
+<tr><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp;</font></td><td bgcolor="#99cc99">&nbsp;</td></tr>
+<tr><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;aes-&gt;Services.push_back (CService(sid));</font></td><td bgcolor="#99cc99">&nbsp;</td></tr>
+<tr><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;CService *s = &amp;(aes-&gt;Services.back());</font></td><td bgcolor="#99cc99">&nbsp;</td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp;</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp;</font></td></tr>
+<tr><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;msgin.serial(s-&gt;ShortName, s-&gt;LongName, s-&gt;Ready);</font></td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;msgin.serial (s.Id, s.AliasName, s.ShortName, s.LongName, s.Ready);</font></td></tr>
+<tr><td bgcolor="#99cc99">&nbsp;</td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;msgin.serialCont (s.Commands);</font></td></tr>
+<tr><td bgcolor="#99cc99">&nbsp;</td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;s.Connected = true;</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp;</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp;</font></td></tr>
+<tr><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;msgout.serial (s-&gt;Id, s-&gt;ShortName, s-&gt;LongName, s-&gt;Ready);</font></td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;if (!s.AliasName.empty())</font></td></tr>
+<tr><td bgcolor="#99cc99">&nbsp;</td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{</font></td></tr>
+<tr><td bgcolor="#99cc99">&nbsp;</td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;SIT sit = aes-&gt;findService (s.AliasName, false);</font></td></tr>
+<tr><td bgcolor="#99cc99">&nbsp;</td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;if (sit == aes-&gt;Services.end ())</font></td></tr>
+<tr><td bgcolor="#99cc99">&nbsp;</td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{</font></td></tr>
+<tr><td bgcolor="#99cc99">&nbsp;</td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;aes-&gt;Services.push_back (s);</font></td></tr>
+<tr><td bgcolor="#99cc99">&nbsp;</td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}</font></td></tr>
+<tr><td bgcolor="#99cc99">&nbsp;</td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;else</font></td></tr>
+<tr><td bgcolor="#99cc99">&nbsp;</td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{</font></td></tr>
+<tr><td bgcolor="#99cc99">&nbsp;</td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;nlassert (&quot;the service already exists with alias, update it&quot;);</font></td></tr>
+<tr><td bgcolor="#99cc99">&nbsp;</td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;(*sit).setValues (s);</font></td></tr>
+<tr><td bgcolor="#99cc99">&nbsp;</td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}</font></td></tr>
+<tr><td bgcolor="#99cc99">&nbsp;</td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}</font></td></tr>
+<tr><td bgcolor="#99cc99">&nbsp;</td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;else</font></td></tr>
+<tr><td bgcolor="#99cc99">&nbsp;</td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{</font></td></tr>
+<tr><td bgcolor="#99cc99">&nbsp;</td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;SIT sit = aes-&gt;findService (s.Id, false);</font></td></tr>
+<tr><td bgcolor="#99cc99">&nbsp;</td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;if (sit == aes-&gt;Services.end ())</font></td></tr>
+<tr><td bgcolor="#99cc99">&nbsp;</td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{</font></td></tr>
+<tr><td bgcolor="#99cc99">&nbsp;</td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;aes-&gt;Services.push_back (s);</font></td></tr>
+<tr><td bgcolor="#99cc99">&nbsp;</td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}</font></td></tr>
+<tr><td bgcolor="#99cc99">&nbsp;</td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;else</font></td></tr>
+<tr><td bgcolor="#99cc99">&nbsp;</td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{</font></td></tr>
+<tr><td bgcolor="#99cc99">&nbsp;</td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;nlassert (&quot;the service already exists with id, update it&quot;);</font></td></tr>
+<tr><td bgcolor="#99cc99">&nbsp;</td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;(*sit).setValues (s);</font></td></tr>
+<tr><td bgcolor="#99cc99">&nbsp;</td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}</font></td></tr>
+<tr><td bgcolor="#99cc99">&nbsp;</td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}</font></td></tr>
+<tr><td bgcolor="#ff9999"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;CNetManager::send (&quot;AS&quot;, msgout, 0);</font></td><td bgcolor="#cccccc">&nbsp;</td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;displayServices ();</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;displayServices ();</font></td></tr>
+<tr><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp;*/}</font></td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp;</font></td></tr>
+<tr><td bgcolor="#99cc99">&nbsp;</td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;//</font></td></tr>
+<tr><td bgcolor="#99cc99">&nbsp;</td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// Send the new list to all admin</font></td></tr>
+<tr><td bgcolor="#99cc99">&nbsp;</td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;//</font></td></tr>
+<tr><td bgcolor="#99cc99">&nbsp;</td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp;</font></td></tr>
+<tr><td bgcolor="#99cc99">&nbsp;</td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;CMessage msgout (CNetManager::getSIDA (&quot;AS&quot;), &quot;SERVICE_LIST&quot;);</font></td></tr>
+<tr><td bgcolor="#99cc99">&nbsp;</td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;uint32 nbaes = 1;</font></td></tr>
+<tr><td bgcolor="#99cc99">&nbsp;</td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;msgout.serial (nbaes);</font></td></tr>
+<tr><td bgcolor="#99cc99">&nbsp;</td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;msgout.serial (aes-&gt;Id);</font></td></tr>
+<tr><td bgcolor="#99cc99">&nbsp;</td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;uint32 ss = aes-&gt;Services.size();</font></td></tr>
+<tr><td bgcolor="#99cc99">&nbsp;</td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;msgout.serial (ss);</font></td></tr>
+<tr><td bgcolor="#99cc99">&nbsp;</td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp;</font></td></tr>
+<tr><td bgcolor="#99cc99">&nbsp;</td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;for (SIT sit = aes-&gt;Services.begin(); sit != aes-&gt;Services.end(); sit++)</font></td></tr>
+<tr><td bgcolor="#99cc99">&nbsp;</td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{</font></td></tr>
+<tr><td bgcolor="#99cc99">&nbsp;</td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;msgout.serial ((*sit).Id, (*sit).AliasName, (*sit).ShortName, (*sit).LongName);</font></td></tr>
+<tr><td bgcolor="#99cc99">&nbsp;</td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;msgout.serial ((*sit).Ready, (*sit).Connected, (*sit).InConfig);</font></td></tr>
+<tr><td bgcolor="#99cc99">&nbsp;</td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;msgout.serialCont ((*sit).Commands);</font></td></tr>
+<tr><td bgcolor="#99cc99">&nbsp;</td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}</font></td></tr>
+<tr><td bgcolor="#99cc99">&nbsp;</td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;CNetManager::send (&quot;AS&quot;, msgout, 0);</font></td></tr>
+<tr><td bgcolor="#99cc99">&nbsp;</td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp;}</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp;</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp;</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp;static void cbServiceAliasList (CMessage&amp; msgin, TSockId from, CCallbackNetBase &amp;netbase)</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp;static void cbServiceAliasList (CMessage&amp; msgin, TSockId from, CCallbackNetBase &amp;netbase)</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp;{</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp;{</font></td></tr>
+<tr bgcolor="#dddddd"><td width="50%"><table width="100%" border=1 cellpadding=5><tr><td><b>Line 321</b>&nbsp;<font size=-1></font></td></tr></table></td><td width="50%"><table width="100%" border=1 cellpadding=5><tr><td><b>Line 389</b>&nbsp;<font size=-1></font></td></tr></table></td>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;aes-&gt;ServiceAliasList.clear ();</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;aes-&gt;ServiceAliasList.clear ();</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;msgin.serialCont (aes-&gt;ServiceAliasList);</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;msgin.serialCont (aes-&gt;ServiceAliasList);</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp;</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp;</font></td></tr>
+<tr><td bgcolor="#cccccc">&nbsp;</td><td bgcolor="#ccccff"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;nlinfo(&quot;send SAL to admin callback from aes&quot;);</font></td></tr>
+<tr><td bgcolor="#cccccc">&nbsp;</td><td bgcolor="#ccccff"><font face="Helvetica,Arial" size="-1">&nbsp;</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;CMessage msgout (CNetManager::getSIDA (&quot;AS&quot;), &quot;SAL&quot;);</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;CMessage msgout (CNetManager::getSIDA (&quot;AS&quot;), &quot;SAL&quot;);</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;msgout.serial (aes-&gt;Id);</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;msgout.serial (aes-&gt;Id);</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;msgout.serialCont (aes-&gt;ServiceAliasList);</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;msgout.serialCont (aes-&gt;ServiceAliasList);</font></td></tr>
+<tr bgcolor="#dddddd"><td width="50%"><table width="100%" border=1 cellpadding=5><tr><td><b>Line 365</b>&nbsp;<font size=-1></font></td></tr></table></td><td width="50%"><table width="100%" border=1 cellpadding=5><tr><td><b>Line 435</b>&nbsp;<font size=-1></font></td></tr></table></td>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;if (sit == aes-&gt;Services.end ())</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;if (sit == aes-&gt;Services.end ())</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// normal case for unknown services</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// normal case for unknown services</font></td></tr>
+<tr><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;nlwarning (&quot;new service with alias (%s) but not in my list&quot;, alias.c_str());</font></td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;nlwarning (&quot;new service without alias and not in my list, add it&quot;);</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;else</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;else</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{</font></td></tr>
+<tr><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;nlwarning (&quot;new service without alias is already in my list with id %d&quot;, sid);</font></td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;nlwarning (&quot;new service without alias is already in my list with id %d, add it&quot;, sid);</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;aes-&gt;Services.push_back (CService ());</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;aes-&gt;Services.push_back (CService ());</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;sit = aes-&gt;Services.end();</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;sit = aes-&gt;Services.end();</font></td></tr>
+<tr bgcolor="#dddddd"><td width="50%"><table width="100%" border=1 cellpadding=5><tr><td><b>Line 380</b>&nbsp;<font size=-1></font></td></tr></table></td><td width="50%"><table width="100%" border=1 cellpadding=5><tr><td><b>Line 450</b>&nbsp;<font size=-1></font></td></tr></table></td>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;(*sit).AliasName = alias;</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;(*sit).AliasName = alias;</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;(*sit).Connected = true;</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;(*sit).Connected = true;</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;msgin.serial ((*sit).ShortName, (*sit).LongName);</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;msgin.serial ((*sit).ShortName, (*sit).LongName);</font></td></tr>
+<tr><td bgcolor="#cccccc">&nbsp;</td><td bgcolor="#ccccff"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;msgin.serialCont ((*sit).Commands);</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp;</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp;</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;nlinfo (&quot;*:%d:%d is identified to be '%s' '%s' '%s'&quot;, aes-&gt;Id, sid, (*sit).AliasName.c_str(), (*sit).ShortName.c_str(), (*sit).LongName.c_str());</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;nlinfo (&quot;*:%d:%d is identified to be '%s' '%s' '%s'&quot;, aes-&gt;Id, sid, (*sit).AliasName.c_str(), (*sit).ShortName.c_str(), (*sit).LongName.c_str());</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp;</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp;</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// broadcast the message to all admin client</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// broadcast the message to all admin client</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;CMessage msgout (CNetManager::getSIDA (&quot;AS&quot;), &quot;SID&quot;);</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;CMessage msgout (CNetManager::getSIDA (&quot;AS&quot;), &quot;SID&quot;);</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;msgout.serial (aes-&gt;Id, sid, (*sit).AliasName, (*sit).ShortName, (*sit).LongName);</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;msgout.serial (aes-&gt;Id, sid, (*sit).AliasName, (*sit).ShortName, (*sit).LongName);</font></td></tr>
+<tr><td bgcolor="#cccccc">&nbsp;</td><td bgcolor="#ccccff"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;msgout.serialCont ((*sit).Commands);</font></td></tr>
+<tr><td bgcolor="#cccccc">&nbsp;</td><td bgcolor="#ccccff"><font face="Helvetica,Arial" size="-1">&nbsp;</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;CNetManager::send (&quot;AS&quot;, msgout, 0);</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;CNetManager::send (&quot;AS&quot;, msgout, 0);</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp;}</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp;}</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp;</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp;</font></td></tr>
+<tr bgcolor="#dddddd"><td width="50%"><table width="100%" border=1 cellpadding=5><tr><td><b>Line 458</b>&nbsp;<font size=-1></font></td></tr></table></td><td width="50%"><table width="100%" border=1 cellpadding=5><tr><td><b>Line 531</b>&nbsp;<font size=-1></font></td></tr></table></td>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// erase only if it's not a service in the config</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// erase only if it's not a service in the config</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;aes-&gt;Services.erase (sit);</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;aes-&gt;Services.erase (sit);</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}</font></td></tr>
+<tr><td bgcolor="#cccccc">&nbsp;</td><td bgcolor="#ccccff"><font face="Helvetica,Arial" size="-1">&nbsp;</font></td></tr>
+<tr><td bgcolor="#cccccc">&nbsp;</td><td bgcolor="#ccccff"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;displayServices ();</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp;}</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp;}</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp;</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp;</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp;// i'm connected to a new admin executor service</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp;// i'm connected to a new admin executor service</font></td></tr>
+<tr bgcolor="#dddddd"><td width="50%"><table width="100%" border=1 cellpadding=5><tr><td><b>Line 495</b>&nbsp;<font size=-1></font></td></tr></table></td><td width="50%"><table width="100%" border=1 cellpadding=5><tr><td><b>Line 570</b>&nbsp;<font size=-1></font></td></tr></table></td>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;aes-&gt;Connected = false;</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;aes-&gt;Connected = false;</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp;</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp;</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;SIT sit;</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;SIT sit;</font></td></tr>
+<tr><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;for (sit = aes-&gt;Services.begin(); sit != aes-&gt;Services.end(); sit++)</font></td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;for (sit = aes-&gt;Services.begin(); sit != aes-&gt;Services.end();)</font></td></tr>
+<tr><td bgcolor="#99cc99">&nbsp;</td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{</font></td></tr>
+<tr><td bgcolor="#99cc99">&nbsp;</td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// keep only inconfig services</font></td></tr>
+<tr><td bgcolor="#99cc99">&nbsp;</td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;if ((*sit).InConfig)</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;(*sit).Id = 0xFFFFFFFF;</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;(*sit).Id = 0xFFFFFFFF;</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;(*sit).ShortName = (*sit).LongName = &quot;&quot;;</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;(*sit).ShortName = (*sit).LongName = &quot;&quot;;</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;(*sit).Ready = (*sit).Connected = false;</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;(*sit).Ready = (*sit).Connected = false;</font></td></tr>
+<tr><td bgcolor="#cccccc">&nbsp;</td><td bgcolor="#ccccff"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;sit++;</font></td></tr>
+<tr><td bgcolor="#cccccc">&nbsp;</td><td bgcolor="#ccccff"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}</font></td></tr>
+<tr><td bgcolor="#cccccc">&nbsp;</td><td bgcolor="#ccccff"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;else</font></td></tr>
+<tr><td bgcolor="#cccccc">&nbsp;</td><td bgcolor="#ccccff"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{</font></td></tr>
+<tr><td bgcolor="#cccccc">&nbsp;</td><td bgcolor="#ccccff"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// erase only if it's not a service in the config</font></td></tr>
+<tr><td bgcolor="#cccccc">&nbsp;</td><td bgcolor="#ccccff"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;sit = aes-&gt;Services.erase (sit);</font></td></tr>
+<tr><td bgcolor="#cccccc">&nbsp;</td><td bgcolor="#ccccff"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp;</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp;</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;nlinfo (&quot;*:%d:* disconnected&quot;, aes-&gt;Id);</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;nlinfo (&quot;*:%d:* disconnected&quot;, aes-&gt;Id);</font></td></tr>
+<tr bgcolor="#dddddd"><td width="50%"><table width="100%" border=1 cellpadding=5><tr><td><b>Line 510</b>&nbsp;<font size=-1></font></td></tr></table></td><td width="50%"><table width="100%" border=1 cellpadding=5><tr><td><b>Line 595</b>&nbsp;<font size=-1></font></td></tr></table></td>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;CNetManager::send (&quot;AS&quot;, msgout, 0);</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;CNetManager::send (&quot;AS&quot;, msgout, 0);</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp;*/</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp;*/</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp;</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp;</font></td></tr>
+<tr><td bgcolor="#cccccc">&nbsp;</td><td bgcolor="#ccccff"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;displayServices ();</font></td></tr>
+<tr><td bgcolor="#cccccc">&nbsp;</td><td bgcolor="#ccccff"><font face="Helvetica,Arial" size="-1">&nbsp;</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// broadcast the new state of this AES</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// broadcast the new state of this AES</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;CMessage msgout (CNetManager::getSIDA (&quot;AS&quot;), &quot;AES_LIST&quot;);</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;CMessage msgout (CNetManager::getSIDA (&quot;AS&quot;), &quot;AES_LIST&quot;);</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;uint32 nbaes = 1;</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;uint32 nbaes = 1;</font></td></tr>
+<tr bgcolor="#dddddd"><td width="50%"><table width="100%" border=1 cellpadding=5><tr><td><b>Line 553</b>&nbsp;<font size=-1></font></td></tr></table></td><td width="50%"><table width="100%" border=1 cellpadding=5><tr><td><b>Line 640</b>&nbsp;<font size=-1></font></td></tr></table></td>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp;////////////////////////////////////////////////////////////////////////////////////////////////////////</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp;////////////////////////////////////////////////////////////////////////////////////////////////////////</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp;////////////////////////////////////////////////////////////////////////////////////////////////////////</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp;////////////////////////////////////////////////////////////////////////////////////////////////////////</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp;</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp;</font></td></tr>
+<tr><td bgcolor="#ff9999"><font face="Helvetica,Arial" size="-1">&nbsp;void errorMessage(string message, TSockId from, CCallbackNetBase &amp;netbase)</font></td><td bgcolor="#cccccc">&nbsp;</td></tr>
+<tr><td bgcolor="#ff9999"><font face="Helvetica,Arial" size="-1">&nbsp;{</font></td><td bgcolor="#cccccc">&nbsp;</td></tr>
+<tr><td bgcolor="#ff9999"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;CMessage msgout (netbase.getSIDA (), &quot;ERR&quot;);</font></td><td bgcolor="#cccccc">&nbsp;</td></tr>
+<tr><td bgcolor="#ff9999"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;msgout.serial (message);</font></td><td bgcolor="#cccccc">&nbsp;</td></tr>
+<tr><td bgcolor="#ff9999"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;netbase.send (msgout, from);</font></td><td bgcolor="#cccccc">&nbsp;</td></tr>
+<tr><td bgcolor="#ff9999"><font face="Helvetica,Arial" size="-1">&nbsp;}</font></td><td bgcolor="#cccccc">&nbsp;</td></tr>
+<tr><td bgcolor="#ff9999"><font face="Helvetica,Arial" size="-1">&nbsp;</font></td><td bgcolor="#cccccc">&nbsp;</td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp;//</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp;//</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp;// A new admin client is connected.</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp;// A new admin client is connected.</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp;//</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp;//</font></td></tr>
+<tr bgcolor="#dddddd"><td width="50%"><table width="100%" border=1 cellpadding=5><tr><td><b>Line 605</b>&nbsp;<font size=-1></font></td></tr></table></td><td width="50%"><table width="100%" border=1 cellpadding=5><tr><td><b>Line 685</b>&nbsp;<font size=-1></font></td></tr></table></td>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;msgout.serial ((*sit).Id, (*sit).AliasName, (*sit).ShortName, (*sit).LongName);</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;msgout.serial ((*sit).Id, (*sit).AliasName, (*sit).ShortName, (*sit).LongName);</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;msgout.serial ((*sit).Ready, (*sit).Connected, (*sit).InConfig);</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;msgout.serial ((*sit).Ready, (*sit).Connected, (*sit).InConfig);</font></td></tr>
+<tr><td bgcolor="#cccccc">&nbsp;</td><td bgcolor="#ccccff"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;msgout.serialCont ((*sit).Commands);</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;CNetManager::send (&quot;AS&quot;, msgout, from);</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;CNetManager::send (&quot;AS&quot;, msgout, from);</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp;</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp;</font></td></tr>
+<tr><td bgcolor="#cccccc">&nbsp;</td><td bgcolor="#ccccff"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;displayServices ();</font></td></tr>
+<tr><td bgcolor="#cccccc">&nbsp;</td><td bgcolor="#ccccff"><font face="Helvetica,Arial" size="-1">&nbsp;</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;//</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;//</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// send service alias list</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// send service alias list</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;//</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;//</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp;</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp;</font></td></tr>
+<tr><td bgcolor="#cccccc">&nbsp;</td><td bgcolor="#ccccff"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;nlinfo(&quot;send SAL to admin startup&quot;);</font></td></tr>
+<tr><td bgcolor="#cccccc">&nbsp;</td><td bgcolor="#ccccff"><font face="Helvetica,Arial" size="-1">&nbsp;</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;for (aesit = AdminExecutorServices.begin(); aesit != AdminExecutorServices.end(); aesit++)</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;for (aesit = AdminExecutorServices.begin(); aesit != AdminExecutorServices.end(); aesit++)</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;CMessage msgout2 (CNetManager::getSIDA (&quot;AS&quot;), &quot;SAL&quot;);</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;CMessage msgout2 (CNetManager::getSIDA (&quot;AS&quot;), &quot;SAL&quot;);</font></td></tr>
+<tr bgcolor="#dddddd"><td width="50%"><table width="100%" border=1 cellpadding=5><tr><td><b>Line 634</b>&nbsp;<font size=-1></font></td></tr></table></td><td width="50%"><table width="100%" border=1 cellpadding=5><tr><td><b>Line 719</b>&nbsp;<font size=-1></font></td></tr></table></td>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;if (aesit == AdminExecutorServices.end())</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;if (aesit == AdminExecutorServices.end())</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// don't find the aes, send an error message</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// don't find the aes, send an error message</font></td></tr>
+<tr><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;errorMessage (&quot;couldn't execute command, as didn't find the aes&quot;, from, netbase);</font></td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;messageToClient (0, &quot;couldn't execute command, as didn't find the aes&quot;, from);</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;return;</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;return;</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp;</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp;</font></td></tr>
+<tr bgcolor="#dddddd"><td width="50%"><table width="100%" border=1 cellpadding=5><tr><td><b>Line 657</b>&nbsp;<font size=-1></font></td></tr></table></td><td width="50%"><table width="100%" border=1 cellpadding=5><tr><td><b>Line 742</b>&nbsp;<font size=-1></font></td></tr></table></td>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;if (aesit == AdminExecutorServices.end())</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;if (aesit == AdminExecutorServices.end())</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// don't find the aes, send an error message</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// don't find the aes, send an error message</font></td></tr>
+<tr><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;errorMessage (&quot;couldn't start service, as didn't find the aes&quot;, from, netbase);</font></td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;messageToClient (0, &quot;couldn't start service, as didn't find the aes&quot;, from);</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;return;</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;return;</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp;</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp;</font></td></tr>
+<tr bgcolor="#dddddd"><td width="50%"><table width="100%" border=1 cellpadding=5><tr><td><b>Line 677</b>&nbsp;<font size=-1></font></td></tr></table></td><td width="50%"><table width="100%" border=1 cellpadding=5><tr><td><b>Line 762</b>&nbsp;<font size=-1></font></td></tr></table></td>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;AESIT aesit = findAdminExecutorService (aesid, false);</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;AESIT aesit = findAdminExecutorService (aesid, false);</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;if (aesit == AdminExecutorServices.end())</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;if (aesit == AdminExecutorServices.end())</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{</font></td></tr>
+<tr><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;errorMessage (&quot;couldn't stop service, as didn't find the aes&quot;, from, netbase);</font></td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;messageToClient (0, &quot;couldn't stop service, as didn't find the aes&quot;, from);</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// don't find the aes, send an error message</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// don't find the aes, send an error message</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;return;</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;return;</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}</font></td></tr>
+<tr bgcolor="#dddddd"><td width="50%"><table width="100%" border=1 cellpadding=5><tr><td><b>Line 686</b>&nbsp;<font size=-1></font></td></tr></table></td><td width="50%"><table width="100%" border=1 cellpadding=5><tr><td><b>Line 771</b>&nbsp;<font size=-1></font></td></tr></table></td>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;if (sit == (*aesit).Services.end())</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;if (sit == (*aesit).Services.end())</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// don't find the s, send an error message</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// don't find the s, send an error message</font></td></tr>
+<tr><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;errorMessage (&quot;couldn't stop service, as didn't find the service&quot;, from, netbase);</font></td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;messageToClient (0, &quot;couldn't stop service, as didn't find the service&quot;, from);</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;return;</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;return;</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp;</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp;</font></td></tr>
+<tr bgcolor="#dddddd"><td width="50%"><table width="100%" border=1 cellpadding=5><tr><td><b>Line 708</b>&nbsp;<font size=-1></font></td></tr></table></td><td width="50%"><table width="100%" border=1 cellpadding=5><tr><td><b>Line 793</b>&nbsp;<font size=-1></font></td></tr></table></td>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;AESIT aesit = findAdminExecutorService (aesid, false);</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;AESIT aesit = findAdminExecutorService (aesid, false);</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;if (aesit == AdminExecutorServices.end())</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;if (aesit == AdminExecutorServices.end())</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{</font></td></tr>
+<tr><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;errorMessage (&quot;couldn't stop service, as didn't find the aes&quot;, from, netbase);</font></td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;messageToClient (0, &quot;couldn't stop service, as didn't find the aes&quot;, from);</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// don't find the aes, send an error message</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// don't find the aes, send an error message</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;return;</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;return;</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}</font></td></tr>
+<tr bgcolor="#dddddd"><td width="50%"><table width="100%" border=1 cellpadding=5><tr><td><b>Line 717</b>&nbsp;<font size=-1></font></td></tr></table></td><td width="50%"><table width="100%" border=1 cellpadding=5><tr><td><b>Line 802</b>&nbsp;<font size=-1></font></td></tr></table></td>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;if (sit == (*aesit).Services.end())</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;if (sit == (*aesit).Services.end())</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// don't find the s, send an error message</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// don't find the s, send an error message</font></td></tr>
+<tr><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;errorMessage (&quot;couldn't stop service, as didn't find the service&quot;, from, netbase);</font></td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;messageToClient (0, &quot;couldn't stop service, as didn't find the service&quot;, from);</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;return;</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;return;</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp;</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp;</font></td></tr>
+<tr bgcolor="#dddddd"><td width="50%"><table width="100%" border=1 cellpadding=5><tr><td><b>Line 821</b>&nbsp;<font size=-1></font></td></tr></table></td><td width="50%"><table width="100%" border=1 cellpadding=5><tr><td><b>Line 906</b>&nbsp;<font size=-1></font></td></tr></table></td>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;s.InConfig = true;</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;s.InConfig = true;</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;(*aesit).Services.push_back (s);</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;(*aesit).Services.push_back (s);</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}</font></td></tr>
+<tr><td bgcolor="#cccccc">&nbsp;</td><td bgcolor="#ccccff"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;displayServices ();</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp;</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp;</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;bool &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;update ()</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;bool &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;update ()</font></td></tr>
+</table><br><hr noshade width="100%">
+<table border=0><tr><td><table border=1><tr><td>Legend:<br><table border=0 cellspacing=0 cellpadding=1>
+<tr><td align=center bgcolor="#ff9999">Removed from v.1.5</td><td bgcolor="#cccccc">&nbsp;</td></tr><tr bgcolor="#99ff99"><td align=center colspan=2>changed lines</td></tr><tr><td bgcolor="#cccccc">&nbsp;</td><td align=center bgcolor="#ccccff">Added in v.1.6</td></tr></table></td></tr></table>
+<td><FORM METHOD="GET" ACTION="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cpp.diff">
+<INPUT TYPE=HIDDEN NAME="r1" VALUE="1.5">
+<INPUT TYPE=HIDDEN NAME="r2" VALUE="1.6">
+<SELECT NAME="f" onchange="submit()">
+<OPTION VALUE=h SELECTED>Colored Diff<OPTION VALUE=H>Long Colored Diff<OPTION VALUE=u>Unidiff<OPTION VALUE=c>Context Diff<OPTION VALUE=s>Side by Side</SELECT><INPUT TYPE=SUBMIT VALUE="Show">
+</FORM>
+</td></tr></table> \ No newline at end of file
diff --git a/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cpp.diff?r1=1.7&r2=1.8 b/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cpp.diff?r1=1.7&r2=1.8
new file mode 100644
index 00000000..aeb87448
--- /dev/null
+++ b/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cpp.diff?r1=1.7&r2=1.8
@@ -0,0 +1,29 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"><HTML>
+<HEAD><style> A { color:black }</style>
+<!-- hennerik CVSweb $Revision: 1.93 $ -->
+<TITLE>code/nelns/admin_service/admin_service.cpp - diff - 1.8</TITLE></HEAD>
+<BODY BGCOLOR="#eeeeee">
+<table width="100%" border=0 cellspacing=0 cellpadding=1 bgcolor="#aaaaaa"><tr valign=bottom><td><a href="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cpp"><IMG SRC="http://www.nevrax.org/inc/img/picto-up.gif" ALT="[BACK]" BORDER="0" WIDTH="14" HEIGHT="13"></a> <b>Return to <A HREF="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cpp">admin_service.cpp</A>
+ CVS log</b> <IMG SRC="http://www.nevrax.org/inc/img/picto-news.gif" ALT="[TXT]" BORDER="0" WIDTH="13" HEIGHT="15"></td><td align=right><IMG SRC="http://www.nevrax.org/inc/img/picto-dir.gif" ALT="[DIR]" BORDER="0" WIDTH="15" HEIGHT="13"> <b>Up to <a href="/cvs/cvsweb.cgi/">Nevrax</a> / <a href="/cvs/cvsweb.cgi/code/">code</a> / <a href="/cvs/cvsweb.cgi/code/nelns/">nelns</a> / <a href="/cvs/cvsweb.cgi/code/nelns/admin_service/">admin_service</a></b></td></tr></table><h3 align=center>Diff for /code/nelns/admin_service/admin_service.cpp between version 1.7 and 1.8</h3>
+<table border=0 cellspacing=0 cellpadding=0 width="100%">
+<tr bgcolor="#ffffff">
+<th width="50%" valign=TOP>version 1.7, 2001/06/18 14:43:31</th>
+<th width="50%" valign=TOP>version 1.8, 2001/06/18 14:54:06</th>
+<tr bgcolor="#dddddd"><td width="50%"><table width="100%" border=1 cellpadding=5><tr><td><b>Line 542</b>&nbsp;<font size=-1></font></td></tr></table></td><td width="50%"><table width="100%" border=1 cellpadding=5><tr><td><b>Line 542</b>&nbsp;<font size=-1></font></td></tr></table></td>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;CAdminExecutorService *aes = &amp;(*aesit);</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;CAdminExecutorService *aes = &amp;(*aesit);</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// set the appid to find the aes in O(1)</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// set the appid to find the aes in O(1)</font></td></tr>
+<tr><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;from-&gt;setAppId ((uint64)aes);</font></td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;from-&gt;setAppId ((uint64)(uint)aes);</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp;</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp;</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;aes-&gt;Connected = true;</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;aes-&gt;Connected = true;</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;nlinfo (&quot;*:%d:* connected&quot;, aes-&gt;Id);</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;nlinfo (&quot;*:%d:* connected&quot;, aes-&gt;Id);</font></td></tr>
+</table><br><hr noshade width="100%">
+<table border=0><tr><td><table border=1><tr><td>Legend:<br><table border=0 cellspacing=0 cellpadding=1>
+<tr><td align=center bgcolor="#ff9999">Removed from v.1.7</td><td bgcolor="#cccccc">&nbsp;</td></tr><tr bgcolor="#99ff99"><td align=center colspan=2>changed lines</td></tr><tr><td bgcolor="#cccccc">&nbsp;</td><td align=center bgcolor="#ccccff">Added in v.1.8</td></tr></table></td></tr></table>
+<td><FORM METHOD="GET" ACTION="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cpp.diff">
+<INPUT TYPE=HIDDEN NAME="r1" VALUE="1.7">
+<INPUT TYPE=HIDDEN NAME="r2" VALUE="1.8">
+<SELECT NAME="f" onchange="submit()">
+<OPTION VALUE=h SELECTED>Colored Diff<OPTION VALUE=H>Long Colored Diff<OPTION VALUE=u>Unidiff<OPTION VALUE=c>Context Diff<OPTION VALUE=s>Side by Side</SELECT><INPUT TYPE=SUBMIT VALUE="Show">
+</FORM>
+</td></tr></table> \ No newline at end of file
diff --git a/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cpp?annotate=1.14 b/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cpp?annotate=1.14
new file mode 100644
index 00000000..3b3eb0f3
--- /dev/null
+++ b/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cpp?annotate=1.14
@@ -0,0 +1,76 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"><HTML>
+<HEAD><style> A { color:black }</style>
+<!-- hennerik CVSweb $Revision: 1.93 $ -->
+<TITLE>code/nelns/admin_service/admin_service.cpp - annotate - 1.14</TITLE></HEAD>
+<BODY BGCOLOR="#eeeeee">
+<table width="100%" border=0 cellspacing=0 cellpadding=1 bgcolor="#aaaaaa"><tr valign=bottom><td><a href="admin_service.cpp"><IMG SRC="http://www.nevrax.org/inc/img/picto-up.gif" ALT="[BACK]" BORDER="0" WIDTH="14" HEIGHT="13"></a> <b>Return to <A HREF="admin_service.cpp">admin_service.cpp</A>
+ CVS log</b> <IMG SRC="http://www.nevrax.org/inc/img/picto-news.gif" ALT="[TXT]" BORDER="0" WIDTH="13" HEIGHT="15"></td><td align=right><IMG SRC="http://www.nevrax.org/inc/img/picto-dir.gif" ALT="[DIR]" BORDER="0" WIDTH="15" HEIGHT="13"> <b>Up to <a href="/cvs/cvsweb.cgi/">Nevrax</a> / <a href="/cvs/cvsweb.cgi/code/">code</a> / <a href="/cvs/cvsweb.cgi/code/nelns/">nelns</a> / <a href="/cvs/cvsweb.cgi/code/nelns/admin_service/">admin_service</a></b></td></tr></table><h3 align=center>Annotation of code/nelns/admin_service/admin_service.cpp, Revision 1.14</h3>
+<pre>Status: 500 Internal Error
+Content-type: text/html
+
+<!doctype html public "-//W3C//DTD HTML 4.0 Transitional//EN" "http://www.w3.org/TR/REC-html40/loose.dtd">
+<HTML>
+<HEAD>
+ <TITLE>nevrax.org : cvs</TITLE>
+ <META name="keywords" content="freesoftware,nel,newt,snowballs,richard stallman,GNU,Multi-User Online World">
+
+ <LINK REL=stylesheet TYPE="text/css" HREF="http://www.nevrax.org/inc/css/nevrax.css">
+</HEAD>
+<BODY MARGINHEIGHT="0" MARGINWIDTH="0">
+
+<!-- uplinks -->
+<TABLE CELLSPACING=0 CELLPADDING=0 BORDER=0>
+ <TR>
+ <TD WIDTH=16><IMG SRC="http://www.nevrax.org/inc/img/pixel.gif" WIDTH="16" HEIGHT="16" BORDER=0 ALT=""></TD>
+ <TD WIDTH=140 BGCOLOR=#dddddd><IMG SRC="http://www.nevrax.org/inc/img/pixel.gif" WIDTH="140" HEIGHT="16" BORDER=0 ALT=""></TD>
+ <TD WIDTH=16><IMG SRC="http://www.nevrax.org/inc/img/pixel.gif" WIDTH="16" HEIGHT="16" BORDER=0 ALT=""></TD>
+ <TD><IMG width=6 height=14 SRC="http://www.nevrax.org/inc/img/reddots.gif" ALT="#" VSPACE=2 HSPACE=2 BORDER=0 ></TD><TD VALIGN=middle>&nbsp;<A CLASS=uplinks HREF=http://www.nevrax.org><b>Home</B></FONT></A>&nbsp;&nbsp;&nbsp;</TD>
+ <TD><IMG width=6 height=14 SRC="http://www.nevrax.org/inc/img/reddots.gif" ALT="#" VSPACE=2 HSPACE=2 BORDER=0 ></TD><TD VALIGN=middle>&nbsp;<A CLASS=uplinks HREF=http://www.nevrax.com><b>nevrax.com</B></FONT></A>&nbsp;&nbsp;&nbsp;</TD>
+ </TR>
+</TABLE>
+
+<!-- banner Nevrax -->
+<TABLE CELLSPACING=0 CELLPADDING=0 BORDER=0 WIDTH=100%>
+ <TR><TD BGCOLOR="#000000" BACKGROUND="http://www.nevrax.org/inc/img/black_banner.jpg"><A HREF="http://www.nevrax.org"><IMG SRC="http://www.nevrax.org/inc/img/nevrax.gif" WIDTH="170" HEIGHT="45" BORDER=0 ALT="Nevrax" ></A></TD></TR>
+</TABLE>
+
+<!-- main table -->
+<TABLE CELLSPACING=0 CELLPADDING=0 BORDER=0 height=100%>
+ <TR>
+ <TD WIDTH=16><IMG SRC="http://www.nevrax.org/inc/img/pixel.gif" WIDTH="16" HEIGHT="10" BORDER=0 ALT=""></TD>
+ <TD WIDTH=140 BGCOLOR=#dddddd VALIGN=TOP ALIGN=middle><IMG SRC="http://www.nevrax.org/inc/img/pixel.gif" WIDTH="140" HEIGHT="10" BORDER=0 ALT="">
+
+ <!------ Begin Box ------>
+ <TABLE BORDER=0 CELLSPACING=0 CELLPADDING=0 BGCOLOR=black><TR><TD><TABLE border=0 cellspacing=2 cellpadding=0 width=120><tr><TD ALIGN=middle bgcolor=black>
+ <FONT COLOR=white FACE="sans-serif"><B>Nevrax.org</B></FONT></TD></TR><tr><td colspan=2 bgcolor=#FFFFFF>
+ <TABLE cellspacing=0 cellpadding=1 border=0>
+ <tr><td ALIGN=middle><a class='linkbox' href="http://www.nevrax.org/news/" TITLE="Rubrique news"><img width=13 height=15 hspace=5 border=0 src=http://www.nevrax.org/inc/img/picto-news.gif ALT=#></A></td><td><a class='linkbox' href="http://www.nevrax.org/news/" TITLE="News">News</a></td></tr>
+ <tr><td ALIGN=middle><a class='linkbox' href="http://www.nevrax.org/mail/" TITLE="Rubrique mail"><img width=15 height=11 hspace=5 border=0 src=http://www.nevrax.org/inc/img/picto-mail.gif ALT=#></A></td><td><a class='linkbox' href="http://www.nevrax.org/mail/" TITLE="Mailing list archive">Mailing-list</a></td></tr>
+ <tr><td ALIGN=middle><a class='linkbox' href="http://www.nevrax.org/docs/" TITLE="Rubrique docs"><img width=14 height=16 hspace=5 border=0 src=http://www.nevrax.org/inc/img/picto-docs.gif ALT=#></A></td><td><a class='linkbox' href="http://www.nevrax.org/docs/" TITLE="Documentation">Documentation</a></td></tr>
+ <tr><td ALIGN=middle><a class='linkbox' href="http://www.nevrax.org/cvs/" TITLE="Rubrique cvs"><img width=13 height=17 hspace=5 border=0 src=http://www.nevrax.org/inc/img/picto-cvs.gif ALT=#></A></td><td><a class='linkbox' href="http://www.nevrax.org/cvs/" TITLE="CVS Web">CVS</a></td></tr>
+ <tr><td ALIGN=middle><a class='linkbox' href="http://www.nevrax.org/bugs/" TITLE="Rubrique bugs"><img width=20 height=16 hspace=5 border=0 src=http://www.nevrax.org/inc/img/picto-bugs.gif ALT=#></A></td><td><a class='linkbox' href="http://www.nevrax.org/bugs/" TITLE="Bugtracking">Bugs</a></td></tr>
+ <tr><td ALIGN=middle><a class='linkbox' href="http://www.nevrax.org/free/" TITLE="Rubrique license"><img width=18 height=12 hspace=5 border=0 src=http://www.nevrax.org/inc/img/picto-free.gif ALT=#></A></td><td><a class='linkbox' href="http://www.nevrax.org/free/" TITLE="Free Software">Free software</a></td></tr>
+ </TABLE>
+ </TD></TR></TABLE></TD></TR></TABLE>
+ <!------ End Box ------>
+
+ </TD>
+ <TD WIDTH=15><IMG SRC="http://www.nevrax.org/inc/img/pixel.gif" WIDTH="16" HEIGHT="16" BORDER=0 ALT=""></TD>
+ <TD ALIGN=left valign=top><IMG SRC="http://www.nevrax.org/inc/img/pixel.gif" WIDTH="140" HEIGHT="10" BORDER=0 ALT="">
+
+<!-- title -->
+<TABLE background="http://www.nevrax.org/inc/img/redline.gif" CELLSPACING=0 CELLPADDING=0 BORDER=0 width=100%><tr><td>
+<A HREF="http://www.nevrax.org/cvs/"><img src="http://www.nevrax.org/inc/img/t_cvs.gif" ALT="cvs" HEIGHT=20 BORDER=0></A>
+</td><td><IMG SRC="http://www.nevrax.org/inc/img/pixel.gif" WIDTH="1" HEIGHT="1" BORDER=0 ALT="">
+</td></tr></table>
+Error: Error occured during annotate: <b>error
+</b>
+
+<!-- footer -->
+<BR><FONT Size=+5>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </FONT>
+</TD>
+<TD WIDTH=15><IMG SRC=http://www.nevrax.org/inc/img/pixel.gif WIDTH=15 HEIGHT=15 BORDER=0 ALT=""></TD>
+</TR>
+</TABLE>
+</BODY>
+</HTML> \ No newline at end of file
diff --git a/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cpp?annotate=1.15 b/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cpp?annotate=1.15
new file mode 100644
index 00000000..59d73165
--- /dev/null
+++ b/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cpp?annotate=1.15
@@ -0,0 +1,76 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"><HTML>
+<HEAD><style> A { color:black }</style>
+<!-- hennerik CVSweb $Revision: 1.93 $ -->
+<TITLE>code/nelns/admin_service/admin_service.cpp - annotate - 1.15</TITLE></HEAD>
+<BODY BGCOLOR="#eeeeee">
+<table width="100%" border=0 cellspacing=0 cellpadding=1 bgcolor="#aaaaaa"><tr valign=bottom><td><a href="admin_service.cpp"><IMG SRC="http://www.nevrax.org/inc/img/picto-up.gif" ALT="[BACK]" BORDER="0" WIDTH="14" HEIGHT="13"></a> <b>Return to <A HREF="admin_service.cpp">admin_service.cpp</A>
+ CVS log</b> <IMG SRC="http://www.nevrax.org/inc/img/picto-news.gif" ALT="[TXT]" BORDER="0" WIDTH="13" HEIGHT="15"></td><td align=right><IMG SRC="http://www.nevrax.org/inc/img/picto-dir.gif" ALT="[DIR]" BORDER="0" WIDTH="15" HEIGHT="13"> <b>Up to <a href="/cvs/cvsweb.cgi/">Nevrax</a> / <a href="/cvs/cvsweb.cgi/code/">code</a> / <a href="/cvs/cvsweb.cgi/code/nelns/">nelns</a> / <a href="/cvs/cvsweb.cgi/code/nelns/admin_service/">admin_service</a></b></td></tr></table><h3 align=center>Annotation of code/nelns/admin_service/admin_service.cpp, Revision 1.15</h3>
+<pre>Status: 500 Internal Error
+Content-type: text/html
+
+<!doctype html public "-//W3C//DTD HTML 4.0 Transitional//EN" "http://www.w3.org/TR/REC-html40/loose.dtd">
+<HTML>
+<HEAD>
+ <TITLE>nevrax.org : cvs</TITLE>
+ <META name="keywords" content="freesoftware,nel,newt,snowballs,richard stallman,GNU,Multi-User Online World">
+
+ <LINK REL=stylesheet TYPE="text/css" HREF="http://www.nevrax.org/inc/css/nevrax.css">
+</HEAD>
+<BODY MARGINHEIGHT="0" MARGINWIDTH="0">
+
+<!-- uplinks -->
+<TABLE CELLSPACING=0 CELLPADDING=0 BORDER=0>
+ <TR>
+ <TD WIDTH=16><IMG SRC="http://www.nevrax.org/inc/img/pixel.gif" WIDTH="16" HEIGHT="16" BORDER=0 ALT=""></TD>
+ <TD WIDTH=140 BGCOLOR=#dddddd><IMG SRC="http://www.nevrax.org/inc/img/pixel.gif" WIDTH="140" HEIGHT="16" BORDER=0 ALT=""></TD>
+ <TD WIDTH=16><IMG SRC="http://www.nevrax.org/inc/img/pixel.gif" WIDTH="16" HEIGHT="16" BORDER=0 ALT=""></TD>
+ <TD><IMG width=6 height=14 SRC="http://www.nevrax.org/inc/img/reddots.gif" ALT="#" VSPACE=2 HSPACE=2 BORDER=0 ></TD><TD VALIGN=middle>&nbsp;<A CLASS=uplinks HREF=http://www.nevrax.org><b>Home</B></FONT></A>&nbsp;&nbsp;&nbsp;</TD>
+ <TD><IMG width=6 height=14 SRC="http://www.nevrax.org/inc/img/reddots.gif" ALT="#" VSPACE=2 HSPACE=2 BORDER=0 ></TD><TD VALIGN=middle>&nbsp;<A CLASS=uplinks HREF=http://www.nevrax.com><b>nevrax.com</B></FONT></A>&nbsp;&nbsp;&nbsp;</TD>
+ </TR>
+</TABLE>
+
+<!-- banner Nevrax -->
+<TABLE CELLSPACING=0 CELLPADDING=0 BORDER=0 WIDTH=100%>
+ <TR><TD BGCOLOR="#000000" BACKGROUND="http://www.nevrax.org/inc/img/black_banner.jpg"><A HREF="http://www.nevrax.org"><IMG SRC="http://www.nevrax.org/inc/img/nevrax.gif" WIDTH="170" HEIGHT="45" BORDER=0 ALT="Nevrax" ></A></TD></TR>
+</TABLE>
+
+<!-- main table -->
+<TABLE CELLSPACING=0 CELLPADDING=0 BORDER=0 height=100%>
+ <TR>
+ <TD WIDTH=16><IMG SRC="http://www.nevrax.org/inc/img/pixel.gif" WIDTH="16" HEIGHT="10" BORDER=0 ALT=""></TD>
+ <TD WIDTH=140 BGCOLOR=#dddddd VALIGN=TOP ALIGN=middle><IMG SRC="http://www.nevrax.org/inc/img/pixel.gif" WIDTH="140" HEIGHT="10" BORDER=0 ALT="">
+
+ <!------ Begin Box ------>
+ <TABLE BORDER=0 CELLSPACING=0 CELLPADDING=0 BGCOLOR=black><TR><TD><TABLE border=0 cellspacing=2 cellpadding=0 width=120><tr><TD ALIGN=middle bgcolor=black>
+ <FONT COLOR=white FACE="sans-serif"><B>Nevrax.org</B></FONT></TD></TR><tr><td colspan=2 bgcolor=#FFFFFF>
+ <TABLE cellspacing=0 cellpadding=1 border=0>
+ <tr><td ALIGN=middle><a class='linkbox' href="http://www.nevrax.org/news/" TITLE="Rubrique news"><img width=13 height=15 hspace=5 border=0 src=http://www.nevrax.org/inc/img/picto-news.gif ALT=#></A></td><td><a class='linkbox' href="http://www.nevrax.org/news/" TITLE="News">News</a></td></tr>
+ <tr><td ALIGN=middle><a class='linkbox' href="http://www.nevrax.org/mail/" TITLE="Rubrique mail"><img width=15 height=11 hspace=5 border=0 src=http://www.nevrax.org/inc/img/picto-mail.gif ALT=#></A></td><td><a class='linkbox' href="http://www.nevrax.org/mail/" TITLE="Mailing list archive">Mailing-list</a></td></tr>
+ <tr><td ALIGN=middle><a class='linkbox' href="http://www.nevrax.org/docs/" TITLE="Rubrique docs"><img width=14 height=16 hspace=5 border=0 src=http://www.nevrax.org/inc/img/picto-docs.gif ALT=#></A></td><td><a class='linkbox' href="http://www.nevrax.org/docs/" TITLE="Documentation">Documentation</a></td></tr>
+ <tr><td ALIGN=middle><a class='linkbox' href="http://www.nevrax.org/cvs/" TITLE="Rubrique cvs"><img width=13 height=17 hspace=5 border=0 src=http://www.nevrax.org/inc/img/picto-cvs.gif ALT=#></A></td><td><a class='linkbox' href="http://www.nevrax.org/cvs/" TITLE="CVS Web">CVS</a></td></tr>
+ <tr><td ALIGN=middle><a class='linkbox' href="http://www.nevrax.org/bugs/" TITLE="Rubrique bugs"><img width=20 height=16 hspace=5 border=0 src=http://www.nevrax.org/inc/img/picto-bugs.gif ALT=#></A></td><td><a class='linkbox' href="http://www.nevrax.org/bugs/" TITLE="Bugtracking">Bugs</a></td></tr>
+ <tr><td ALIGN=middle><a class='linkbox' href="http://www.nevrax.org/free/" TITLE="Rubrique license"><img width=18 height=12 hspace=5 border=0 src=http://www.nevrax.org/inc/img/picto-free.gif ALT=#></A></td><td><a class='linkbox' href="http://www.nevrax.org/free/" TITLE="Free Software">Free software</a></td></tr>
+ </TABLE>
+ </TD></TR></TABLE></TD></TR></TABLE>
+ <!------ End Box ------>
+
+ </TD>
+ <TD WIDTH=15><IMG SRC="http://www.nevrax.org/inc/img/pixel.gif" WIDTH="16" HEIGHT="16" BORDER=0 ALT=""></TD>
+ <TD ALIGN=left valign=top><IMG SRC="http://www.nevrax.org/inc/img/pixel.gif" WIDTH="140" HEIGHT="10" BORDER=0 ALT="">
+
+<!-- title -->
+<TABLE background="http://www.nevrax.org/inc/img/redline.gif" CELLSPACING=0 CELLPADDING=0 BORDER=0 width=100%><tr><td>
+<A HREF="http://www.nevrax.org/cvs/"><img src="http://www.nevrax.org/inc/img/t_cvs.gif" ALT="cvs" HEIGHT=20 BORDER=0></A>
+</td><td><IMG SRC="http://www.nevrax.org/inc/img/pixel.gif" WIDTH="1" HEIGHT="1" BORDER=0 ALT="">
+</td></tr></table>
+Error: Error occured during annotate: <b>error
+</b>
+
+<!-- footer -->
+<BR><FONT Size=+5>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </FONT>
+</TD>
+<TD WIDTH=15><IMG SRC=http://www.nevrax.org/inc/img/pixel.gif WIDTH=15 HEIGHT=15 BORDER=0 ALT=""></TD>
+</TR>
+</TABLE>
+</BODY>
+</HTML> \ No newline at end of file
diff --git a/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cpp?annotate=1.7 b/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cpp?annotate=1.7
new file mode 100644
index 00000000..6921ef0a
--- /dev/null
+++ b/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cpp?annotate=1.7
@@ -0,0 +1,76 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"><HTML>
+<HEAD><style> A { color:black }</style>
+<!-- hennerik CVSweb $Revision: 1.93 $ -->
+<TITLE>code/nelns/admin_service/admin_service.cpp - annotate - 1.7</TITLE></HEAD>
+<BODY BGCOLOR="#eeeeee">
+<table width="100%" border=0 cellspacing=0 cellpadding=1 bgcolor="#aaaaaa"><tr valign=bottom><td><a href="admin_service.cpp"><IMG SRC="http://www.nevrax.org/inc/img/picto-up.gif" ALT="[BACK]" BORDER="0" WIDTH="14" HEIGHT="13"></a> <b>Return to <A HREF="admin_service.cpp">admin_service.cpp</A>
+ CVS log</b> <IMG SRC="http://www.nevrax.org/inc/img/picto-news.gif" ALT="[TXT]" BORDER="0" WIDTH="13" HEIGHT="15"></td><td align=right><IMG SRC="http://www.nevrax.org/inc/img/picto-dir.gif" ALT="[DIR]" BORDER="0" WIDTH="15" HEIGHT="13"> <b>Up to <a href="/cvs/cvsweb.cgi/">Nevrax</a> / <a href="/cvs/cvsweb.cgi/code/">code</a> / <a href="/cvs/cvsweb.cgi/code/nelns/">nelns</a> / <a href="/cvs/cvsweb.cgi/code/nelns/admin_service/">admin_service</a></b></td></tr></table><h3 align=center>Annotation of code/nelns/admin_service/admin_service.cpp, Revision 1.7</h3>
+<pre>Status: 500 Internal Error
+Content-type: text/html
+
+<!doctype html public "-//W3C//DTD HTML 4.0 Transitional//EN" "http://www.w3.org/TR/REC-html40/loose.dtd">
+<HTML>
+<HEAD>
+ <TITLE>nevrax.org : cvs</TITLE>
+ <META name="keywords" content="freesoftware,nel,newt,snowballs,richard stallman,GNU,Multi-User Online World">
+
+ <LINK REL=stylesheet TYPE="text/css" HREF="http://www.nevrax.org/inc/css/nevrax.css">
+</HEAD>
+<BODY MARGINHEIGHT="0" MARGINWIDTH="0">
+
+<!-- uplinks -->
+<TABLE CELLSPACING=0 CELLPADDING=0 BORDER=0>
+ <TR>
+ <TD WIDTH=16><IMG SRC="http://www.nevrax.org/inc/img/pixel.gif" WIDTH="16" HEIGHT="16" BORDER=0 ALT=""></TD>
+ <TD WIDTH=140 BGCOLOR=#dddddd><IMG SRC="http://www.nevrax.org/inc/img/pixel.gif" WIDTH="140" HEIGHT="16" BORDER=0 ALT=""></TD>
+ <TD WIDTH=16><IMG SRC="http://www.nevrax.org/inc/img/pixel.gif" WIDTH="16" HEIGHT="16" BORDER=0 ALT=""></TD>
+ <TD><IMG width=6 height=14 SRC="http://www.nevrax.org/inc/img/reddots.gif" ALT="#" VSPACE=2 HSPACE=2 BORDER=0 ></TD><TD VALIGN=middle>&nbsp;<A CLASS=uplinks HREF=http://www.nevrax.org><b>Home</B></FONT></A>&nbsp;&nbsp;&nbsp;</TD>
+ <TD><IMG width=6 height=14 SRC="http://www.nevrax.org/inc/img/reddots.gif" ALT="#" VSPACE=2 HSPACE=2 BORDER=0 ></TD><TD VALIGN=middle>&nbsp;<A CLASS=uplinks HREF=http://www.nevrax.com><b>nevrax.com</B></FONT></A>&nbsp;&nbsp;&nbsp;</TD>
+ </TR>
+</TABLE>
+
+<!-- banner Nevrax -->
+<TABLE CELLSPACING=0 CELLPADDING=0 BORDER=0 WIDTH=100%>
+ <TR><TD BGCOLOR="#000000" BACKGROUND="http://www.nevrax.org/inc/img/black_banner.jpg"><A HREF="http://www.nevrax.org"><IMG SRC="http://www.nevrax.org/inc/img/nevrax.gif" WIDTH="170" HEIGHT="45" BORDER=0 ALT="Nevrax" ></A></TD></TR>
+</TABLE>
+
+<!-- main table -->
+<TABLE CELLSPACING=0 CELLPADDING=0 BORDER=0 height=100%>
+ <TR>
+ <TD WIDTH=16><IMG SRC="http://www.nevrax.org/inc/img/pixel.gif" WIDTH="16" HEIGHT="10" BORDER=0 ALT=""></TD>
+ <TD WIDTH=140 BGCOLOR=#dddddd VALIGN=TOP ALIGN=middle><IMG SRC="http://www.nevrax.org/inc/img/pixel.gif" WIDTH="140" HEIGHT="10" BORDER=0 ALT="">
+
+ <!------ Begin Box ------>
+ <TABLE BORDER=0 CELLSPACING=0 CELLPADDING=0 BGCOLOR=black><TR><TD><TABLE border=0 cellspacing=2 cellpadding=0 width=120><tr><TD ALIGN=middle bgcolor=black>
+ <FONT COLOR=white FACE="sans-serif"><B>Nevrax.org</B></FONT></TD></TR><tr><td colspan=2 bgcolor=#FFFFFF>
+ <TABLE cellspacing=0 cellpadding=1 border=0>
+ <tr><td ALIGN=middle><a class='linkbox' href="http://www.nevrax.org/news/" TITLE="Rubrique news"><img width=13 height=15 hspace=5 border=0 src=http://www.nevrax.org/inc/img/picto-news.gif ALT=#></A></td><td><a class='linkbox' href="http://www.nevrax.org/news/" TITLE="News">News</a></td></tr>
+ <tr><td ALIGN=middle><a class='linkbox' href="http://www.nevrax.org/mail/" TITLE="Rubrique mail"><img width=15 height=11 hspace=5 border=0 src=http://www.nevrax.org/inc/img/picto-mail.gif ALT=#></A></td><td><a class='linkbox' href="http://www.nevrax.org/mail/" TITLE="Mailing list archive">Mailing-list</a></td></tr>
+ <tr><td ALIGN=middle><a class='linkbox' href="http://www.nevrax.org/docs/" TITLE="Rubrique docs"><img width=14 height=16 hspace=5 border=0 src=http://www.nevrax.org/inc/img/picto-docs.gif ALT=#></A></td><td><a class='linkbox' href="http://www.nevrax.org/docs/" TITLE="Documentation">Documentation</a></td></tr>
+ <tr><td ALIGN=middle><a class='linkbox' href="http://www.nevrax.org/cvs/" TITLE="Rubrique cvs"><img width=13 height=17 hspace=5 border=0 src=http://www.nevrax.org/inc/img/picto-cvs.gif ALT=#></A></td><td><a class='linkbox' href="http://www.nevrax.org/cvs/" TITLE="CVS Web">CVS</a></td></tr>
+ <tr><td ALIGN=middle><a class='linkbox' href="http://www.nevrax.org/bugs/" TITLE="Rubrique bugs"><img width=20 height=16 hspace=5 border=0 src=http://www.nevrax.org/inc/img/picto-bugs.gif ALT=#></A></td><td><a class='linkbox' href="http://www.nevrax.org/bugs/" TITLE="Bugtracking">Bugs</a></td></tr>
+ <tr><td ALIGN=middle><a class='linkbox' href="http://www.nevrax.org/free/" TITLE="Rubrique license"><img width=18 height=12 hspace=5 border=0 src=http://www.nevrax.org/inc/img/picto-free.gif ALT=#></A></td><td><a class='linkbox' href="http://www.nevrax.org/free/" TITLE="Free Software">Free software</a></td></tr>
+ </TABLE>
+ </TD></TR></TABLE></TD></TR></TABLE>
+ <!------ End Box ------>
+
+ </TD>
+ <TD WIDTH=15><IMG SRC="http://www.nevrax.org/inc/img/pixel.gif" WIDTH="16" HEIGHT="16" BORDER=0 ALT=""></TD>
+ <TD ALIGN=left valign=top><IMG SRC="http://www.nevrax.org/inc/img/pixel.gif" WIDTH="140" HEIGHT="10" BORDER=0 ALT="">
+
+<!-- title -->
+<TABLE background="http://www.nevrax.org/inc/img/redline.gif" CELLSPACING=0 CELLPADDING=0 BORDER=0 width=100%><tr><td>
+<A HREF="http://www.nevrax.org/cvs/"><img src="http://www.nevrax.org/inc/img/t_cvs.gif" ALT="cvs" HEIGHT=20 BORDER=0></A>
+</td><td><IMG SRC="http://www.nevrax.org/inc/img/pixel.gif" WIDTH="1" HEIGHT="1" BORDER=0 ALT="">
+</td></tr></table>
+Error: Error occured during annotate: <b>error
+</b>
+
+<!-- footer -->
+<BR><FONT Size=+5>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </FONT>
+</TD>
+<TD WIDTH=15><IMG SRC=http://www.nevrax.org/inc/img/pixel.gif WIDTH=15 HEIGHT=15 BORDER=0 ALT=""></TD>
+</TR>
+</TABLE>
+</BODY>
+</HTML> \ No newline at end of file
diff --git a/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cpp?annotate=1.9 b/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cpp?annotate=1.9
new file mode 100644
index 00000000..9c9c8398
--- /dev/null
+++ b/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cpp?annotate=1.9
@@ -0,0 +1,76 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"><HTML>
+<HEAD><style> A { color:black }</style>
+<!-- hennerik CVSweb $Revision: 1.93 $ -->
+<TITLE>code/nelns/admin_service/admin_service.cpp - annotate - 1.9</TITLE></HEAD>
+<BODY BGCOLOR="#eeeeee">
+<table width="100%" border=0 cellspacing=0 cellpadding=1 bgcolor="#aaaaaa"><tr valign=bottom><td><a href="admin_service.cpp"><IMG SRC="http://www.nevrax.org/inc/img/picto-up.gif" ALT="[BACK]" BORDER="0" WIDTH="14" HEIGHT="13"></a> <b>Return to <A HREF="admin_service.cpp">admin_service.cpp</A>
+ CVS log</b> <IMG SRC="http://www.nevrax.org/inc/img/picto-news.gif" ALT="[TXT]" BORDER="0" WIDTH="13" HEIGHT="15"></td><td align=right><IMG SRC="http://www.nevrax.org/inc/img/picto-dir.gif" ALT="[DIR]" BORDER="0" WIDTH="15" HEIGHT="13"> <b>Up to <a href="/cvs/cvsweb.cgi/">Nevrax</a> / <a href="/cvs/cvsweb.cgi/code/">code</a> / <a href="/cvs/cvsweb.cgi/code/nelns/">nelns</a> / <a href="/cvs/cvsweb.cgi/code/nelns/admin_service/">admin_service</a></b></td></tr></table><h3 align=center>Annotation of code/nelns/admin_service/admin_service.cpp, Revision 1.9</h3>
+<pre>Status: 500 Internal Error
+Content-type: text/html
+
+<!doctype html public "-//W3C//DTD HTML 4.0 Transitional//EN" "http://www.w3.org/TR/REC-html40/loose.dtd">
+<HTML>
+<HEAD>
+ <TITLE>nevrax.org : cvs</TITLE>
+ <META name="keywords" content="freesoftware,nel,newt,snowballs,richard stallman,GNU,Multi-User Online World">
+
+ <LINK REL=stylesheet TYPE="text/css" HREF="http://www.nevrax.org/inc/css/nevrax.css">
+</HEAD>
+<BODY MARGINHEIGHT="0" MARGINWIDTH="0">
+
+<!-- uplinks -->
+<TABLE CELLSPACING=0 CELLPADDING=0 BORDER=0>
+ <TR>
+ <TD WIDTH=16><IMG SRC="http://www.nevrax.org/inc/img/pixel.gif" WIDTH="16" HEIGHT="16" BORDER=0 ALT=""></TD>
+ <TD WIDTH=140 BGCOLOR=#dddddd><IMG SRC="http://www.nevrax.org/inc/img/pixel.gif" WIDTH="140" HEIGHT="16" BORDER=0 ALT=""></TD>
+ <TD WIDTH=16><IMG SRC="http://www.nevrax.org/inc/img/pixel.gif" WIDTH="16" HEIGHT="16" BORDER=0 ALT=""></TD>
+ <TD><IMG width=6 height=14 SRC="http://www.nevrax.org/inc/img/reddots.gif" ALT="#" VSPACE=2 HSPACE=2 BORDER=0 ></TD><TD VALIGN=middle>&nbsp;<A CLASS=uplinks HREF=http://www.nevrax.org><b>Home</B></FONT></A>&nbsp;&nbsp;&nbsp;</TD>
+ <TD><IMG width=6 height=14 SRC="http://www.nevrax.org/inc/img/reddots.gif" ALT="#" VSPACE=2 HSPACE=2 BORDER=0 ></TD><TD VALIGN=middle>&nbsp;<A CLASS=uplinks HREF=http://www.nevrax.com><b>nevrax.com</B></FONT></A>&nbsp;&nbsp;&nbsp;</TD>
+ </TR>
+</TABLE>
+
+<!-- banner Nevrax -->
+<TABLE CELLSPACING=0 CELLPADDING=0 BORDER=0 WIDTH=100%>
+ <TR><TD BGCOLOR="#000000" BACKGROUND="http://www.nevrax.org/inc/img/black_banner.jpg"><A HREF="http://www.nevrax.org"><IMG SRC="http://www.nevrax.org/inc/img/nevrax.gif" WIDTH="170" HEIGHT="45" BORDER=0 ALT="Nevrax" ></A></TD></TR>
+</TABLE>
+
+<!-- main table -->
+<TABLE CELLSPACING=0 CELLPADDING=0 BORDER=0 height=100%>
+ <TR>
+ <TD WIDTH=16><IMG SRC="http://www.nevrax.org/inc/img/pixel.gif" WIDTH="16" HEIGHT="10" BORDER=0 ALT=""></TD>
+ <TD WIDTH=140 BGCOLOR=#dddddd VALIGN=TOP ALIGN=middle><IMG SRC="http://www.nevrax.org/inc/img/pixel.gif" WIDTH="140" HEIGHT="10" BORDER=0 ALT="">
+
+ <!------ Begin Box ------>
+ <TABLE BORDER=0 CELLSPACING=0 CELLPADDING=0 BGCOLOR=black><TR><TD><TABLE border=0 cellspacing=2 cellpadding=0 width=120><tr><TD ALIGN=middle bgcolor=black>
+ <FONT COLOR=white FACE="sans-serif"><B>Nevrax.org</B></FONT></TD></TR><tr><td colspan=2 bgcolor=#FFFFFF>
+ <TABLE cellspacing=0 cellpadding=1 border=0>
+ <tr><td ALIGN=middle><a class='linkbox' href="http://www.nevrax.org/news/" TITLE="Rubrique news"><img width=13 height=15 hspace=5 border=0 src=http://www.nevrax.org/inc/img/picto-news.gif ALT=#></A></td><td><a class='linkbox' href="http://www.nevrax.org/news/" TITLE="News">News</a></td></tr>
+ <tr><td ALIGN=middle><a class='linkbox' href="http://www.nevrax.org/mail/" TITLE="Rubrique mail"><img width=15 height=11 hspace=5 border=0 src=http://www.nevrax.org/inc/img/picto-mail.gif ALT=#></A></td><td><a class='linkbox' href="http://www.nevrax.org/mail/" TITLE="Mailing list archive">Mailing-list</a></td></tr>
+ <tr><td ALIGN=middle><a class='linkbox' href="http://www.nevrax.org/docs/" TITLE="Rubrique docs"><img width=14 height=16 hspace=5 border=0 src=http://www.nevrax.org/inc/img/picto-docs.gif ALT=#></A></td><td><a class='linkbox' href="http://www.nevrax.org/docs/" TITLE="Documentation">Documentation</a></td></tr>
+ <tr><td ALIGN=middle><a class='linkbox' href="http://www.nevrax.org/cvs/" TITLE="Rubrique cvs"><img width=13 height=17 hspace=5 border=0 src=http://www.nevrax.org/inc/img/picto-cvs.gif ALT=#></A></td><td><a class='linkbox' href="http://www.nevrax.org/cvs/" TITLE="CVS Web">CVS</a></td></tr>
+ <tr><td ALIGN=middle><a class='linkbox' href="http://www.nevrax.org/bugs/" TITLE="Rubrique bugs"><img width=20 height=16 hspace=5 border=0 src=http://www.nevrax.org/inc/img/picto-bugs.gif ALT=#></A></td><td><a class='linkbox' href="http://www.nevrax.org/bugs/" TITLE="Bugtracking">Bugs</a></td></tr>
+ <tr><td ALIGN=middle><a class='linkbox' href="http://www.nevrax.org/free/" TITLE="Rubrique license"><img width=18 height=12 hspace=5 border=0 src=http://www.nevrax.org/inc/img/picto-free.gif ALT=#></A></td><td><a class='linkbox' href="http://www.nevrax.org/free/" TITLE="Free Software">Free software</a></td></tr>
+ </TABLE>
+ </TD></TR></TABLE></TD></TR></TABLE>
+ <!------ End Box ------>
+
+ </TD>
+ <TD WIDTH=15><IMG SRC="http://www.nevrax.org/inc/img/pixel.gif" WIDTH="16" HEIGHT="16" BORDER=0 ALT=""></TD>
+ <TD ALIGN=left valign=top><IMG SRC="http://www.nevrax.org/inc/img/pixel.gif" WIDTH="140" HEIGHT="10" BORDER=0 ALT="">
+
+<!-- title -->
+<TABLE background="http://www.nevrax.org/inc/img/redline.gif" CELLSPACING=0 CELLPADDING=0 BORDER=0 width=100%><tr><td>
+<A HREF="http://www.nevrax.org/cvs/"><img src="http://www.nevrax.org/inc/img/t_cvs.gif" ALT="cvs" HEIGHT=20 BORDER=0></A>
+</td><td><IMG SRC="http://www.nevrax.org/inc/img/pixel.gif" WIDTH="1" HEIGHT="1" BORDER=0 ALT="">
+</td></tr></table>
+Error: Error occured during annotate: <b>error
+</b>
+
+<!-- footer -->
+<BR><FONT Size=+5>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </FONT>
+</TD>
+<TD WIDTH=15><IMG SRC=http://www.nevrax.org/inc/img/pixel.gif WIDTH=15 HEIGHT=15 BORDER=0 ALT=""></TD>
+</TR>
+</TABLE>
+</BODY>
+</HTML> \ No newline at end of file
diff --git a/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cpp?content-type=text/x-cvsweb-markup&rev=1.14 b/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cpp?content-type=text/x-cvsweb-markup&rev=1.14
new file mode 100644
index 00000000..1134159b
--- /dev/null
+++ b/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cpp?content-type=text/x-cvsweb-markup&rev=1.14
@@ -0,0 +1,999 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"><HTML>
+<HEAD><style> A { color:black }</style>
+<!-- hennerik CVSweb $Revision: 1.93 $ -->
+<TITLE>code/nelns/admin_service/admin_service.cpp - view - 1.14</TITLE></HEAD>
+<BODY BGCOLOR="#eeeeee">
+<table width="100%" border=0 cellspacing=0 cellpadding=1 bgcolor="#aaaaaa"><tr valign=bottom><td><a href="admin_service.cpp"><IMG SRC="http://www.nevrax.org/inc/img/picto-up.gif" ALT="[BACK]" BORDER="0" WIDTH="14" HEIGHT="13"></a> <b>Return to <A HREF="admin_service.cpp">admin_service.cpp</A>
+ CVS log</b> <IMG SRC="http://www.nevrax.org/inc/img/picto-news.gif" ALT="[TXT]" BORDER="0" WIDTH="13" HEIGHT="15"></td><td align=right><IMG SRC="http://www.nevrax.org/inc/img/picto-dir.gif" ALT="[DIR]" BORDER="0" WIDTH="15" HEIGHT="13"> <b>Up to <a href="/cvs/cvsweb.cgi/">Nevrax</a> / <a href="/cvs/cvsweb.cgi/code/">code</a> / <a href="/cvs/cvsweb.cgi/code/nelns/">nelns</a> / <a href="/cvs/cvsweb.cgi/code/nelns/admin_service/">admin_service</a></b></td></tr></table><HR noshade><table width="100%"><tr><td bgcolor="#ffffff">File: <a href="/cvs/cvsweb.cgi/">Nevrax</a> / <a href="/cvs/cvsweb.cgi/code/">code</a> / <a href="/cvs/cvsweb.cgi/code/nelns/">nelns</a> / <a href="/cvs/cvsweb.cgi/code/nelns/admin_service/">admin_service</a> / <a href="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cpp">admin_service.cpp</a>&nbsp;(<A HREF="/cvs/cvsweb.cgi/~checkout~/code/nelns/admin_service/admin_service.cpp?rev=1.14" target="cvs_checkout" onClick="window.open('/cvs/cvsweb.cgi/~checkout~/code/nelns/admin_service/admin_service.cpp?rev=1.14','cvs_checkout','resizeable,scrollbars');"><b>download</b></A>)<BR>
+Revision <B>1.14</B>, <i>Tue Mar 19 17:42:48 2002 UTC</i> (4 months ago) by <i>valignat</i>
+<BR>Branch: <b>MAIN</b>
+<BR>Changes since <b>1.13: +14 -2
+ lines</b><PRE>
+Applied patches which help to have a clen install on GNU/Linux and to make a Debian package (changes on the management of config and log files, bugfixes, etc ...)
+</PRE>
+</td></tr></table><HR noshade><PRE>/** \file admin_service.cpp
+ * Admin Service (AS)
+ *
+ * $Id: admin_service.cpp,v 1.14 2002/03/19 17:42:48 valignat Exp $
+ *
+ */
+
+/* Copyright, 2000 Nevrax Ltd.
+ *
+ * This file is part of NEVRAX NeL Network Services.
+ * NEVRAX NeL Network Services is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2, or (at your option)
+ * any later version.
+ *
+ * NEVRAX NeL Network Services is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with NEVRAX NeL Network Services; see the file COPYING. If not, write to the
+ * Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston,
+ * MA 02111-1307, USA.
+ */
+
+#ifdef HAVE_CONFIG_H
+#include &quot;config.h&quot;
+#endif // HAVE_CONFIG_H
+
+#ifndef NELNS_CONFIG
+#define NELNS_CONFIG &quot;&quot;
+#endif // NELNS_CONFIG
+
+#ifndef NELNS_LOGS
+#define NELNS_LOGS &quot;&quot;
+#endif // NELNS_LOGS
+
+#include &lt;string&gt;
+#include &lt;list&gt;
+
+#include &quot;nel/net/service.h&quot;
+#include &quot;nel/misc/debug.h&quot;
+#include &quot;nel/misc/config_file.h&quot;
+#include &quot;nel/misc/command.h&quot;
+
+#include &quot;nel/net/net_manager.h&quot;
+
+using namespace std;
+using namespace NLMISC;
+using namespace NLNET;
+
+////////////////////////
+
+
+struct CService
+{
+ &nbsp; &nbsp; &nbsp; &nbsp;CService () : Id(0xFFFFFFFF), Ready(false), Connected(false), InConfig(false) { }
+
+ &nbsp; &nbsp; &nbsp; &nbsp;uint32 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;Id; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;/// uint32 to identify the service
+ &nbsp; &nbsp; &nbsp; &nbsp;string &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;AliasName; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;/// alias of the service used in the AES and AS to find him (unique per AES)
+ &nbsp; &nbsp; &nbsp; &nbsp;string &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;ShortName; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;/// name of the service in short format (&quot;NS&quot; for example)
+ &nbsp; &nbsp; &nbsp; &nbsp;string &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;LongName; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;/// name of the service in long format (&quot;naming_service&quot;)
+ &nbsp; &nbsp; &nbsp; &nbsp;bool &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;Ready; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;/// true if the service is ready
+ &nbsp; &nbsp; &nbsp; &nbsp;bool &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;Connected; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;/// true if the service is connected to the AES
+ &nbsp; &nbsp; &nbsp; &nbsp;bool &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;InConfig; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;/// true if the service is in the configuration
+ &nbsp; &nbsp; &nbsp; &nbsp;std::vector&lt;NLMISC::CSerialCommand&gt; &nbsp; &nbsp; &nbsp; &nbsp;Commands;
+
+ &nbsp; &nbsp; &nbsp; &nbsp;void setValues (const CService &amp;t)
+ &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// copy all except gtk stuffs
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;Id = t.Id;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;AliasName = t.AliasName;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;ShortName = t.ShortName;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;LongName = t.LongName;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;Ready = t.Ready;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;Connected = t.Connected;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;//InConfig = t.InConfig; never change the inconfig value
+ &nbsp; &nbsp; &nbsp; &nbsp;}
+};
+
+typedef list&lt;CService&gt; TServices;
+typedef list&lt;CService&gt;::iterator SIT;
+
+struct CAdminExecutorService
+{
+ &nbsp; &nbsp; &nbsp; &nbsp;CAdminExecutorService () : Id(NextId++), SockId(NULL), Connected(false) { }
+
+ &nbsp; &nbsp; &nbsp; &nbsp;TSockId &nbsp; &nbsp; &nbsp; &nbsp;SockId; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;/// connection to the AES
+ &nbsp; &nbsp; &nbsp; &nbsp;uint32 &nbsp; &nbsp; &nbsp; &nbsp;Id; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;/// uint32 to identify the AES where the service is running
+
+ &nbsp; &nbsp; &nbsp; &nbsp;string &nbsp; &nbsp; &nbsp; &nbsp;ServerAlias; &nbsp; &nbsp; &nbsp; &nbsp;/// name of the layer4 connection, used to send message to this AES
+ &nbsp; &nbsp; &nbsp; &nbsp;string &nbsp; &nbsp; &nbsp; &nbsp;ServerAddr; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;/// address in a string format (only the ip)
+ &nbsp; &nbsp; &nbsp; &nbsp;bool &nbsp; &nbsp; &nbsp; &nbsp;Connected; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;/// true if the AES is connected
+
+ &nbsp; &nbsp; &nbsp; &nbsp;TServices Services;
+
+ &nbsp; &nbsp; &nbsp; &nbsp;vector&lt;string&gt; &nbsp; &nbsp; &nbsp; &nbsp;ServiceAliasList;
+
+ &nbsp; &nbsp; &nbsp; &nbsp;SIT findService (uint32 sid, bool asrt = true)
+ &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;SIT sit;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;for (sit = Services.begin(); sit != Services.end(); sit++)
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;if ((*sit).Id == sid)
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;break;
+
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;if (asrt)
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;nlassert (sit != Services.end());
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;return sit;
+ &nbsp; &nbsp; &nbsp; &nbsp;}
+
+ &nbsp; &nbsp; &nbsp; &nbsp;SIT findService (const string &amp;alias, bool asrt = true)
+ &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;SIT sit;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;for (sit = Services.begin(); sit != Services.end(); sit++)
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;if ((*sit).AliasName == alias)
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;break;
+
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;if (asrt)
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;nlassert (sit != Services.end());
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;return sit;
+ &nbsp; &nbsp; &nbsp; &nbsp;}
+
+private:
+ &nbsp; &nbsp; &nbsp; &nbsp;static uint32 NextId;
+};
+
+uint32 CAdminExecutorService::NextId = 1;
+
+typedef list&lt;CAdminExecutorService&gt; TAdminExecutorServices;
+typedef list&lt;CAdminExecutorService&gt;::iterator AESIT;
+
+TAdminExecutorServices AdminExecutorServices;
+
+/////////////////
+
+AESIT findAdminExecutorService (uint32 aesid, bool asrt = true)
+{
+ &nbsp; &nbsp; &nbsp; &nbsp;AESIT aesit;
+ &nbsp; &nbsp; &nbsp; &nbsp;for (aesit = AdminExecutorServices.begin(); aesit != AdminExecutorServices.end(); aesit++)
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;if ((*aesit).Id == aesid)
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;break;
+
+ &nbsp; &nbsp; &nbsp; &nbsp;if (asrt)
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;nlassert (aesit != AdminExecutorServices.end());
+ &nbsp; &nbsp; &nbsp; &nbsp;return aesit;
+}
+
+AESIT findAdminExecutorService (string ServerAlias, bool asrt = true)
+{
+ &nbsp; &nbsp; &nbsp; &nbsp;AESIT aesit;
+ &nbsp; &nbsp; &nbsp; &nbsp;for (aesit = AdminExecutorServices.begin(); aesit != AdminExecutorServices.end(); aesit++)
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;if ((*aesit).ServerAlias == ServerAlias)
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;break;
+
+ &nbsp; &nbsp; &nbsp; &nbsp;if (asrt)
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;nlassert (aesit != AdminExecutorServices.end());
+ &nbsp; &nbsp; &nbsp; &nbsp;return aesit;
+}
+
+void displayServices ()
+{
+ &nbsp; &nbsp; &nbsp; &nbsp;for (AESIT aesit = AdminExecutorServices.begin(); aesit != AdminExecutorServices.end(); aesit++)
+ &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;nlinfo (&quot;&gt; Admin&quot;);
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;for (SIT sit = (*aesit).Services.begin(); sit != (*aesit).Services.end(); sit++)
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;nlinfo (&quot; &nbsp;&gt; '%s' '%s' '%s' '%s' %d %d&quot;, (*aesit).SockId-&gt;asString().c_str(), (*sit).AliasName.c_str(), (*sit).ShortName.c_str(), (*sit).LongName.c_str(), (*aesit).Id, (*sit).Id);
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}
+ &nbsp; &nbsp; &nbsp; &nbsp;}
+}
+
+
+// send a message to a client. if ok is 0 it s an error or it s a normal
+void messageToClient (uint8 ok, string msg, TSockId from = NULL)
+{
+ &nbsp; &nbsp; &nbsp; &nbsp;CMessage msgout (CNetManager::getSIDA (&quot;AS&quot;), &quot;MESSAGE&quot;);
+ &nbsp; &nbsp; &nbsp; &nbsp;msgout.serial (ok, msg);
+ &nbsp; &nbsp; &nbsp; &nbsp;CNetManager::send (&quot;AS&quot;, msgout, from);
+}
+
+
+////////////////////////////////////////////////////////////////////////////////////////////////////////
+////////////////////////////////////////////////////////////////////////////////////////////////////////
+/////////////////// SCRIPT MANAGER /////////////////////////////////////////////////////////////////////
+////////////////////////////////////////////////////////////////////////////////////////////////////////
+////////////////////////////////////////////////////////////////////////////////////////////////////////
+
+bool StartAllServices = false;
+uint32 StartAllServicesPos;
+
+void doNextStartAllServicesStep ()
+{
+ &nbsp; &nbsp; &nbsp; &nbsp;nlassert (StartAllServices);
+
+ &nbsp; &nbsp; &nbsp; &nbsp;// get the script
+ &nbsp; &nbsp; &nbsp; &nbsp;try
+ &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;CConfigFile::CVar &amp;script = IService::ConfigFile.getVar(&quot;Services&quot;);
+
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// check the position
+
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;if (StartAllServicesPos*2 &gt;= (uint32)script.size())
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;StartAllServices = false;
+
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;nlinfo(&quot;end of the script&quot;);
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;messageToClient (1, &quot;Start All Service finnished correctly&quot;);
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;return;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}
+
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// get the script line
+
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;string serverAlias;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;string serviceAlias;
+
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;try
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;serverAlias = script.asString (StartAllServicesPos*2);
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;serviceAlias = script.asString (StartAllServicesPos*2+1);
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;catch(EBadSize &amp;)
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;messageToClient (1, &quot;'Services' variable does not contains a good number of entries (must be a multiple of 2)&quot;);
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;nlwarning (&quot;'Services' variable does not contains a good number of entries (must be a multiple of 2)&quot;);
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;StartAllServices = false;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;return;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}
+
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;AESIT aesit = findAdminExecutorService (serverAlias, false);
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;if (aesit == AdminExecutorServices.end())
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;messageToClient (1, &quot;don't find the server&quot;);
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;nlwarning(&quot;don't find the server&quot;);
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;StartAllServices = false;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;return;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}
+
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// check if the service is not currently running
+
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;StartAllServicesPos++;
+
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;SIT sit = (*aesit).findService (serviceAlias);
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;if ((*sit).Connected)
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// the service is already running, go to the next process
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;doNextStartAllServicesStep ();
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;else
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// send the resquest to the AES
+
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;CMessage msgout (CNetManager::getSIDA((*aesit).ServerAlias), &quot;STARTS&quot;);
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;msgout.serial (serviceAlias);
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;CNetManager::send ((*aesit).ServerAlias, msgout);
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}
+ &nbsp; &nbsp; &nbsp; &nbsp;}
+ &nbsp; &nbsp; &nbsp; &nbsp;catch(EUnknownVar&amp;)
+ &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;messageToClient (1, &quot;'Services' variable is not found&quot;);
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;nlwarning (&quot;'Services' variable is not found&quot;);
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;StartAllServices = false;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;return;
+ &nbsp; &nbsp; &nbsp; &nbsp;}
+}
+
+void initStartAllServices ()
+{
+ &nbsp; &nbsp; &nbsp; &nbsp;if (StartAllServices)
+ &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;messageToClient (1, &quot;already running a script, reset it&quot;);
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;nlwarning(&quot;already running a script, reset it&quot;);
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;StartAllServices = false;
+ &nbsp; &nbsp; &nbsp; &nbsp;}
+
+ &nbsp; &nbsp; &nbsp; &nbsp;try
+ &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;CConfigFile::CVar &amp;script = IService::ConfigFile.getVar(&quot;Services&quot;);
+
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;for (sint i = 0 ; i &lt; script.size (); i+=2)
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;string serverAlias = script.asString(i);
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;AESIT aesit = findAdminExecutorService (serverAlias, false);
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;if (aesit == AdminExecutorServices.end())
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;messageToClient (1, &quot;an aes is not running, can't run the script&quot;);
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;nlwarning(&quot;aes '%s' isn't running, can't run the script&quot;, serverAlias.c_str());
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;return;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}
+ &nbsp; &nbsp; &nbsp; &nbsp;}
+ &nbsp; &nbsp; &nbsp; &nbsp;catch(EConfigFile &amp;)
+ &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;messageToClient (1, &quot;bad config file&quot;);
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;nlwarning (&quot;bad config file&quot;);
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;return;
+ &nbsp; &nbsp; &nbsp; &nbsp;}
+
+ &nbsp; &nbsp; &nbsp; &nbsp;StartAllServicesPos = 0;
+ &nbsp; &nbsp; &nbsp; &nbsp;StartAllServices = true;
+
+ &nbsp; &nbsp; &nbsp; &nbsp;doNextStartAllServicesStep();
+}
+
+
+////////////////////////////////////////////////////////////////////////////////////////////////////////
+////////////////////////////////////////////////////////////////////////////////////////////////////////
+////////////////// CONNECTION TO THE AES ///////////////////////////////////////////////////////////////
+////////////////////////////////////////////////////////////////////////////////////////////////////////
+////////////////////////////////////////////////////////////////////////////////////////////////////////
+
+
+static void cbExecuteSystemCommandResult (CMessage&amp; msgin, TSockId from, CCallbackNetBase &amp;netbase)
+{
+ &nbsp; &nbsp; &nbsp; &nbsp;vector&lt;string&gt; result;
+ &nbsp; &nbsp; &nbsp; &nbsp;msgin.serialCont (result);
+
+ &nbsp; &nbsp; &nbsp; &nbsp;nlinfo(&quot;command result&quot;);
+ &nbsp; &nbsp; &nbsp; &nbsp;for (uint i = 0; i &lt; result.size(); i++)
+ &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;printf (&quot;%s&quot;, result[i].c_str());
+ &nbsp; &nbsp; &nbsp; &nbsp;}
+ &nbsp; &nbsp; &nbsp; &nbsp;nlinfo(&quot;end of command result&quot;);
+}
+
+// get the service list from the admin exec and send the list to all admin client
+static void cbServiceList (CMessage&amp; msgin, TSockId from, CCallbackNetBase &amp;netbase)
+{
+ &nbsp; &nbsp; &nbsp; &nbsp;CAdminExecutorService *aes = (CAdminExecutorService*) (uint) from-&gt;appId();
+
+ &nbsp; &nbsp; &nbsp; &nbsp;//
+ &nbsp; &nbsp; &nbsp; &nbsp;// Get the list of service from aes
+ &nbsp; &nbsp; &nbsp; &nbsp;//
+
+ &nbsp; &nbsp; &nbsp; &nbsp;uint32 nbs;
+ &nbsp; &nbsp; &nbsp; &nbsp;msgin.serial (nbs);
+
+ &nbsp; &nbsp; &nbsp; &nbsp;for (uint32 i = 0; i &lt; nbs; i++)
+ &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// find the service
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;CService s;
+
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;msgin.serial (s.Id, s.AliasName, s.ShortName, s.LongName, s.Ready);
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;msgin.serialCont (s.Commands);
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;s.Connected = true;
+
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;if (!s.AliasName.empty())
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;SIT sit = aes-&gt;findService (s.AliasName, false);
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;if (sit == aes-&gt;Services.end ())
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;aes-&gt;Services.push_back (s);
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;else
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;nlassert (&quot;the service already exists with alias, update it&quot;);
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;(*sit).setValues (s);
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;else
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;SIT sit = aes-&gt;findService (s.Id, false);
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;if (sit == aes-&gt;Services.end ())
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;aes-&gt;Services.push_back (s);
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;else
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;nlassert (&quot;the service already exists with id, update it&quot;);
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;(*sit).setValues (s);
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}
+ &nbsp; &nbsp; &nbsp; &nbsp;}
+ &nbsp; &nbsp; &nbsp; &nbsp;
+ &nbsp; &nbsp; &nbsp; &nbsp;displayServices ();
+
+ &nbsp; &nbsp; &nbsp; &nbsp;//
+ &nbsp; &nbsp; &nbsp; &nbsp;// Send the new list to all admin
+ &nbsp; &nbsp; &nbsp; &nbsp;//
+
+ &nbsp; &nbsp; &nbsp; &nbsp;CMessage msgout (CNetManager::getSIDA (&quot;AS&quot;), &quot;SERVICE_LIST&quot;);
+ &nbsp; &nbsp; &nbsp; &nbsp;uint32 nbaes = 1;
+ &nbsp; &nbsp; &nbsp; &nbsp;msgout.serial (nbaes);
+ &nbsp; &nbsp; &nbsp; &nbsp;msgout.serial (aes-&gt;Id);
+ &nbsp; &nbsp; &nbsp; &nbsp;uint32 ss = aes-&gt;Services.size();
+ &nbsp; &nbsp; &nbsp; &nbsp;msgout.serial (ss);
+
+ &nbsp; &nbsp; &nbsp; &nbsp;for (SIT sit = aes-&gt;Services.begin(); sit != aes-&gt;Services.end(); sit++)
+ &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;msgout.serial ((*sit).Id, (*sit).AliasName, (*sit).ShortName, (*sit).LongName);
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;msgout.serial ((*sit).Ready, (*sit).Connected, (*sit).InConfig);
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;msgout.serialCont ((*sit).Commands);
+ &nbsp; &nbsp; &nbsp; &nbsp;}
+ &nbsp; &nbsp; &nbsp; &nbsp;CNetManager::send (&quot;AS&quot;, msgout, 0);
+}
+
+static void cbServiceAliasList (CMessage&amp; msgin, TSockId from, CCallbackNetBase &amp;netbase)
+{
+ &nbsp; &nbsp; &nbsp; &nbsp;// get the service list from the admin exec and send the list to all admin client
+ &nbsp; &nbsp; &nbsp; &nbsp;CAdminExecutorService *aes = (CAdminExecutorService*) (uint) from-&gt;appId();
+
+ &nbsp; &nbsp; &nbsp; &nbsp;aes-&gt;ServiceAliasList.clear ();
+ &nbsp; &nbsp; &nbsp; &nbsp;msgin.serialCont (aes-&gt;ServiceAliasList);
+
+ &nbsp; &nbsp; &nbsp; &nbsp;nlinfo(&quot;send SAL to admin callback from aes&quot;);
+
+ &nbsp; &nbsp; &nbsp; &nbsp;CMessage msgout (CNetManager::getSIDA (&quot;AS&quot;), &quot;SAL&quot;);
+ &nbsp; &nbsp; &nbsp; &nbsp;msgout.serial (aes-&gt;Id);
+ &nbsp; &nbsp; &nbsp; &nbsp;msgout.serialCont (aes-&gt;ServiceAliasList);
+ &nbsp; &nbsp; &nbsp; &nbsp;CNetManager::send (&quot;AS&quot;, msgout, 0);
+ &nbsp; &nbsp; &nbsp; &nbsp;
+ &nbsp; &nbsp; &nbsp; &nbsp;nlinfo(&quot;new service alias list&quot;);
+}
+
+
+static void cbServiceIdentification (CMessage&amp; msgin, TSockId from, CCallbackNetBase &amp;netbase)
+{
+ &nbsp; &nbsp; &nbsp; &nbsp;CAdminExecutorService *aes = (CAdminExecutorService*) (uint) from-&gt;appId();
+
+ &nbsp; &nbsp; &nbsp; &nbsp;uint32 sid;
+ &nbsp; &nbsp; &nbsp; &nbsp;string alias;
+
+ &nbsp; &nbsp; &nbsp; &nbsp;msgin.serial (sid, alias);
+
+ &nbsp; &nbsp; &nbsp; &nbsp;SIT sit;
+ &nbsp; &nbsp; &nbsp; &nbsp;if (!alias.empty())
+ &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;sit = aes-&gt;findService (alias, false);
+
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;if (sit == aes-&gt;Services.end ())
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// the alias is not found
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;nlwarning (&quot;new service with alias (%s) but not in my list&quot;, alias.c_str());
+
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;aes-&gt;Services.push_back (CService ());
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;sit = aes-&gt;Services.end();
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;sit--;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;else
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// normal case
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}
+ &nbsp; &nbsp; &nbsp; &nbsp;}
+ &nbsp; &nbsp; &nbsp; &nbsp;else
+ &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;sit = aes-&gt;findService (sid, false);
+
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;if (sit == aes-&gt;Services.end ())
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// normal case for unknown services
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;nlwarning (&quot;new service without alias and not in my list, add it&quot;);
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;else
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;nlwarning (&quot;new service without alias is already in my list with id %d, add it&quot;, sid);
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;aes-&gt;Services.push_back (CService ());
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;sit = aes-&gt;Services.end();
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;sit--;
+ &nbsp; &nbsp; &nbsp; &nbsp;}
+
+ &nbsp; &nbsp; &nbsp; &nbsp;(*sit).Id = sid;
+ &nbsp; &nbsp; &nbsp; &nbsp;(*sit).AliasName = alias;
+ &nbsp; &nbsp; &nbsp; &nbsp;(*sit).Connected = true;
+ &nbsp; &nbsp; &nbsp; &nbsp;msgin.serial ((*sit).ShortName, (*sit).LongName);
+ &nbsp; &nbsp; &nbsp; &nbsp;msgin.serialCont ((*sit).Commands);
+
+ &nbsp; &nbsp; &nbsp; &nbsp;nlinfo (&quot;*:%d:%d is identified to be '%s' '%s' '%s'&quot;, aes-&gt;Id, sid, (*sit).AliasName.c_str(), (*sit).ShortName.c_str(), (*sit).LongName.c_str());
+
+ &nbsp; &nbsp; &nbsp; &nbsp;// broadcast the message to all admin client
+ &nbsp; &nbsp; &nbsp; &nbsp;CMessage msgout (CNetManager::getSIDA (&quot;AS&quot;), &quot;SID&quot;);
+ &nbsp; &nbsp; &nbsp; &nbsp;msgout.serial (aes-&gt;Id, sid, (*sit).AliasName, (*sit).ShortName, (*sit).LongName);
+ &nbsp; &nbsp; &nbsp; &nbsp;msgout.serialCont ((*sit).Commands);
+
+ &nbsp; &nbsp; &nbsp; &nbsp;CNetManager::send (&quot;AS&quot;, msgout, 0);
+}
+
+static void cbServiceReady (CMessage&amp; msgin, TSockId from, CCallbackNetBase &amp;netbase)
+{
+ &nbsp; &nbsp; &nbsp; &nbsp;CAdminExecutorService *aes = (CAdminExecutorService*) (uint) from-&gt;appId();
+
+ &nbsp; &nbsp; &nbsp; &nbsp;uint32 sid;
+ &nbsp; &nbsp; &nbsp; &nbsp;msgin.serial (sid);
+
+ &nbsp; &nbsp; &nbsp; &nbsp;SIT sit = aes-&gt;findService(sid);
+ &nbsp; &nbsp; &nbsp; &nbsp;(*sit).Ready = true;
+
+ &nbsp; &nbsp; &nbsp; &nbsp;nlinfo (&quot;*:%d:%d is ready&quot;, aes-&gt;Id, sid);
+
+ &nbsp; &nbsp; &nbsp; &nbsp;// broadcast the message to all admin client
+ &nbsp; &nbsp; &nbsp; &nbsp;CMessage msgout (CNetManager::getSIDA (&quot;AS&quot;), &quot;SR&quot;);
+ &nbsp; &nbsp; &nbsp; &nbsp;msgout.serial (aes-&gt;Id, sid);
+ &nbsp; &nbsp; &nbsp; &nbsp;CNetManager::send (&quot;AS&quot;, msgout, 0);
+
+ &nbsp; &nbsp; &nbsp; &nbsp;// if we are in a script execution, continue
+ &nbsp; &nbsp; &nbsp; &nbsp;if (StartAllServices)
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;doNextStartAllServicesStep();
+}
+
+static void cbServiceConnection (CMessage&amp; msgin, TSockId from, CCallbackNetBase &amp;netbase)
+{
+ &nbsp; &nbsp; &nbsp; &nbsp;CAdminExecutorService *aes = (CAdminExecutorService*) (uint) from-&gt;appId();
+
+ &nbsp; &nbsp; &nbsp; &nbsp;uint32 sid;
+ &nbsp; &nbsp; &nbsp; &nbsp;msgin.serial (sid);
+
+ &nbsp; &nbsp; &nbsp; &nbsp;nlinfo (&quot;*:%d:%d connected&quot;, aes-&gt;Id, sid);
+
+ &nbsp; &nbsp; &nbsp; &nbsp;// don't do anything. we have to wait identification to add it in out lists
+
+/*
+ &nbsp; &nbsp; &nbsp; &nbsp;aes-&gt;Services.push_back (CService(sid));
+*/
+ &nbsp; &nbsp; &nbsp; &nbsp;// broadcast the message to all admin client
+ &nbsp; &nbsp; &nbsp; &nbsp;CMessage msgout (CNetManager::getSIDA (&quot;AS&quot;), &quot;SC&quot;);
+ &nbsp; &nbsp; &nbsp; &nbsp;msgout.serial (aes-&gt;Id, sid);
+ &nbsp; &nbsp; &nbsp; &nbsp;CNetManager::send (&quot;AS&quot;, msgout, 0);
+}
+
+static void cbServiceDisconnection (CMessage&amp; msgin, TSockId from, CCallbackNetBase &amp;netbase)
+{
+ &nbsp; &nbsp; &nbsp; &nbsp;CAdminExecutorService *aes = (CAdminExecutorService*) (uint) from-&gt;appId();
+
+ &nbsp; &nbsp; &nbsp; &nbsp;uint32 sid;
+ &nbsp; &nbsp; &nbsp; &nbsp;msgin.serial (sid);
+
+ &nbsp; &nbsp; &nbsp; &nbsp;nlinfo (&quot;*:%d:%d disconnected&quot;, aes-&gt;Id, sid);
+
+ &nbsp; &nbsp; &nbsp; &nbsp;SIT sit = aes-&gt;findService(sid, false);
+ &nbsp; &nbsp; &nbsp; &nbsp;
+ &nbsp; &nbsp; &nbsp; &nbsp;// broadcast the message to all admin client
+ &nbsp; &nbsp; &nbsp; &nbsp;CMessage msgout (CNetManager::getSIDA (&quot;AS&quot;), &quot;SD&quot;);
+ &nbsp; &nbsp; &nbsp; &nbsp;msgout.serial (aes-&gt;Id, sid);
+ &nbsp; &nbsp; &nbsp; &nbsp;CNetManager::send (&quot;AS&quot;, msgout, 0);
+
+ &nbsp; &nbsp; &nbsp; &nbsp;// the service could disconnect before it's identification, in this case, we don't have it in the service list
+ &nbsp; &nbsp; &nbsp; &nbsp;if (sit != aes-&gt;Services.end ())
+ &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;if ((*sit).InConfig)
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;(*sit).Ready = (*sit).Connected = false;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;(*sit).Id = 0xFFFFFFFF;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;(*sit).ShortName = (*sit).LongName = &quot;&quot;;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;(*sit).Commands.clear ();
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;else
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// erase only if it's not a service in the config
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;aes-&gt;Services.erase (sit);
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}
+ &nbsp; &nbsp; &nbsp; &nbsp;}
+
+ &nbsp; &nbsp; &nbsp; &nbsp;displayServices ();
+}
+
+// i'm connected to a new admin executor service
+void cbAESConnection (const string &amp;serviceName, TSockId from, void *arg)
+{
+ &nbsp; &nbsp; &nbsp; &nbsp;AESIT aesit = findAdminExecutorService (serviceName); &nbsp; &nbsp; &nbsp; &nbsp;
+ &nbsp; &nbsp; &nbsp; &nbsp;CAdminExecutorService *aes = &amp;(*aesit);
+ &nbsp; &nbsp; &nbsp; &nbsp;
+ &nbsp; &nbsp; &nbsp; &nbsp;// set the appid to find the aes in O(1)
+ &nbsp; &nbsp; &nbsp; &nbsp;from-&gt;setAppId ((uint64)(uint)aes);
+
+ &nbsp; &nbsp; &nbsp; &nbsp;aes-&gt;Connected = true;
+ &nbsp; &nbsp; &nbsp; &nbsp;nlinfo (&quot;*:%d:* connected&quot;, aes-&gt;Id);
+/*
+ &nbsp; &nbsp; &nbsp; &nbsp;// broadcast the message that an admin exec is connected to all admin client
+ &nbsp; &nbsp; &nbsp; &nbsp;CMessage msgout (CNetManager::getSIDA (&quot;AS&quot;), &quot;AESC&quot;);
+ &nbsp; &nbsp; &nbsp; &nbsp;msgout.serial (aes-&gt;Id);
+ &nbsp; &nbsp; &nbsp; &nbsp;CNetManager::send (&quot;AS&quot;, msgout, 0);
+*/
+
+ &nbsp; &nbsp; &nbsp; &nbsp;// broadcast the new state of this AES
+ &nbsp; &nbsp; &nbsp; &nbsp;CMessage msgout (CNetManager::getSIDA (&quot;AS&quot;), &quot;AES_LIST&quot;);
+ &nbsp; &nbsp; &nbsp; &nbsp;uint32 nbaes = 1;
+ &nbsp; &nbsp; &nbsp; &nbsp;msgout.serial (nbaes);
+ &nbsp; &nbsp; &nbsp; &nbsp;msgout.serial (aes-&gt;Id, aes-&gt;ServerAlias, aes-&gt;ServerAddr, aes-&gt;Connected);
+ &nbsp; &nbsp; &nbsp; &nbsp;CNetManager::send (&quot;AS&quot;, msgout, 0);
+}
+
+// i'm disconnected to an admin executor service
+void cbAESDisconnection (const string &amp;serviceName, TSockId from, void *arg)
+{
+ &nbsp; &nbsp; &nbsp; &nbsp;// get the aes with the appid
+ &nbsp; &nbsp; &nbsp; &nbsp;CAdminExecutorService *aes = (CAdminExecutorService*) (uint) from-&gt;appId();
+
+ &nbsp; &nbsp; &nbsp; &nbsp;aes-&gt;Connected = false;
+
+ &nbsp; &nbsp; &nbsp; &nbsp;SIT sit;
+ &nbsp; &nbsp; &nbsp; &nbsp;for (sit = aes-&gt;Services.begin(); sit != aes-&gt;Services.end();)
+ &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// keep only inconfig services
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;if ((*sit).InConfig)
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;(*sit).Id = 0xFFFFFFFF;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;(*sit).ShortName = (*sit).LongName = &quot;&quot;;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;(*sit).Ready = (*sit).Connected = false;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;sit++;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;else
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// erase only if it's not a service in the config
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;sit = aes-&gt;Services.erase (sit);
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}
+ &nbsp; &nbsp; &nbsp; &nbsp;}
+
+ &nbsp; &nbsp; &nbsp; &nbsp;nlinfo (&quot;*:%d:* disconnected&quot;, aes-&gt;Id);
+/* &nbsp; &nbsp; &nbsp;
+ &nbsp; &nbsp; &nbsp; &nbsp;// broadcast the message to all admin client that an admin exec is disconnected
+ &nbsp; &nbsp; &nbsp; &nbsp;CMessage msgout (CNetManager::getSIDA (&quot;AS&quot;), &quot;AESD&quot;);
+ &nbsp; &nbsp; &nbsp; &nbsp;msgout.serial (aes-&gt;Id);
+ &nbsp; &nbsp; &nbsp; &nbsp;CNetManager::send (&quot;AS&quot;, msgout, 0);
+*/
+
+ &nbsp; &nbsp; &nbsp; &nbsp;displayServices ();
+
+ &nbsp; &nbsp; &nbsp; &nbsp;// broadcast the new state of this AES
+ &nbsp; &nbsp; &nbsp; &nbsp;CMessage msgout (CNetManager::getSIDA (&quot;AS&quot;), &quot;AES_LIST&quot;);
+ &nbsp; &nbsp; &nbsp; &nbsp;uint32 nbaes = 1;
+ &nbsp; &nbsp; &nbsp; &nbsp;msgout.serial (nbaes);
+ &nbsp; &nbsp; &nbsp; &nbsp;msgout.serial (aes-&gt;Id, aes-&gt;ServerAlias, aes-&gt;ServerAddr, aes-&gt;Connected);
+ &nbsp; &nbsp; &nbsp; &nbsp;CNetManager::send (&quot;AS&quot;, msgout, 0);
+}
+
+static void cbLog (CMessage&amp; msgin, TSockId from, CCallbackNetBase &amp;netbase)
+{
+ &nbsp; &nbsp; &nbsp; &nbsp;// received an answer for a command, give it to all admin client
+
+ &nbsp; &nbsp; &nbsp; &nbsp;// get the aes with the appid
+ &nbsp; &nbsp; &nbsp; &nbsp;CAdminExecutorService *aes = (CAdminExecutorService*) (uint) from-&gt;appId();
+
+ &nbsp; &nbsp; &nbsp; &nbsp;// broadcast the message to the admin service
+ &nbsp; &nbsp; &nbsp; &nbsp;CMessage msgout (CNetManager::getSIDA (&quot;AS&quot;), &quot;XLOG&quot;);
+ &nbsp; &nbsp; &nbsp; &nbsp;string log;
+ &nbsp; &nbsp; &nbsp; &nbsp;uint32 sid;
+ &nbsp; &nbsp; &nbsp; &nbsp;msgin.serial (sid);
+ &nbsp; &nbsp; &nbsp; &nbsp;msgin.serial (log);
+
+ &nbsp; &nbsp; &nbsp; &nbsp;msgout.serial (aes-&gt;Id);
+ &nbsp; &nbsp; &nbsp; &nbsp;msgout.serial (sid);
+ &nbsp; &nbsp; &nbsp; &nbsp;msgout.serial (log);
+ &nbsp; &nbsp; &nbsp; &nbsp;CNetManager::send (&quot;AS&quot;, msgout, 0);
+}
+
+
+TCallbackItem AESCallbackArray[] =
+{
+ &nbsp; &nbsp; &nbsp; &nbsp;{ &quot;ESCR&quot;, cbExecuteSystemCommandResult },
+
+ &nbsp; &nbsp; &nbsp; &nbsp;{ &quot;SL&quot;, cbServiceList },
+ &nbsp; &nbsp; &nbsp; &nbsp;{ &quot;SID&quot;, cbServiceIdentification },
+ &nbsp; &nbsp; &nbsp; &nbsp;{ &quot;SR&quot;, cbServiceReady },
+ &nbsp; &nbsp; &nbsp; &nbsp;{ &quot;SC&quot;, cbServiceConnection },
+ &nbsp; &nbsp; &nbsp; &nbsp;{ &quot;SD&quot;, cbServiceDisconnection },
+
+ &nbsp; &nbsp; &nbsp; &nbsp;{ &quot;SAL&quot;, cbServiceAliasList },
+
+ &nbsp; &nbsp; &nbsp; &nbsp;{ &quot;XLOG&quot;, cbLog },
+};
+
+
+////////////////////////////////////////////////////////////////////////////////////////////////////////
+////////////////////////////////////////////////////////////////////////////////////////////////////////
+////////////////// CONNECTION TO THE CLIENT ////////////////////////////////////////////////////////////
+////////////////////////////////////////////////////////////////////////////////////////////////////////
+////////////////////////////////////////////////////////////////////////////////////////////////////////
+
+//
+// A new admin client is connected.
+//
+void clientConnection (const string &amp;serviceName, TSockId from, void *arg)
+{
+ &nbsp; &nbsp; &nbsp; &nbsp;// new client, send him all out info about services
+
+ &nbsp; &nbsp; &nbsp; &nbsp;nlinfo (&quot;admin %s is connected&quot;, from-&gt;asString().c_str());
+
+ &nbsp; &nbsp; &nbsp; &nbsp;CNetManager::getNetBase(serviceName)-&gt;authorizeOnly (&quot;AUTH&quot;, from);
+}
+
+static void cbAuthenticateClient (CMessage&amp; msgin, TSockId from, CCallbackNetBase &amp;netbase)
+{
+ &nbsp; &nbsp; &nbsp; &nbsp;//
+ &nbsp; &nbsp; &nbsp; &nbsp;// Check the validity of the admin
+ &nbsp; &nbsp; &nbsp; &nbsp;//
+ &nbsp; &nbsp; &nbsp; &nbsp;
+ &nbsp; &nbsp; &nbsp; &nbsp;string password;
+ &nbsp; &nbsp; &nbsp; &nbsp;bool ok = false;
+ &nbsp; &nbsp; &nbsp; &nbsp;try
+ &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;msgin.serial (password);
+
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;if (password == IService::ConfigFile.getVar(&quot;Password&quot;).asString())
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// good authentification
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;ok = true;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}
+ &nbsp; &nbsp; &nbsp; &nbsp;}
+ &nbsp; &nbsp; &nbsp; &nbsp;catch (Exception &amp;)
+ &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// problem, eject him
+ &nbsp; &nbsp; &nbsp; &nbsp;}
+
+ &nbsp; &nbsp; &nbsp; &nbsp;if (ok)
+ &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;netbase.authorizeOnly (NULL, from);
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;nlinfo (&quot;Admin authentification success&quot;);
+ &nbsp; &nbsp; &nbsp; &nbsp;}
+ &nbsp; &nbsp; &nbsp; &nbsp;else
+ &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// bad auth =&gt; disconnect
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;netbase.disconnect (from);
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;nlwarning (&quot;Bad admin authentification, tried password: '%s'&quot;, password.c_str());
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;return;
+ &nbsp; &nbsp; &nbsp; &nbsp;}
+
+ &nbsp; &nbsp; &nbsp; &nbsp;//
+ &nbsp; &nbsp; &nbsp; &nbsp;// send the list of all the aes
+ &nbsp; &nbsp; &nbsp; &nbsp;//
+
+ &nbsp; &nbsp; &nbsp; &nbsp;CMessage msgout2 (CNetManager::getSIDA (&quot;AS&quot;), &quot;AES_LIST&quot;);
+ &nbsp; &nbsp; &nbsp; &nbsp;AESIT aesit;
+ &nbsp; &nbsp; &nbsp; &nbsp;uint32 nbaes = (uint32)AdminExecutorServices.size();
+ &nbsp; &nbsp; &nbsp; &nbsp;msgout2.serial (nbaes);
+ &nbsp; &nbsp; &nbsp; &nbsp;for (aesit = AdminExecutorServices.begin(); aesit != AdminExecutorServices.end(); aesit++)
+ &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// send info about the AES
+
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;msgout2.serial ((*aesit).Id, (*aesit).ServerAlias, (*aesit).ServerAddr, (*aesit).Connected);
+ &nbsp; &nbsp; &nbsp; &nbsp;}
+ &nbsp; &nbsp; &nbsp; &nbsp;CNetManager::send (&quot;AS&quot;, msgout2, from);
+
+ &nbsp; &nbsp; &nbsp; &nbsp;//
+ &nbsp; &nbsp; &nbsp; &nbsp;// send the list of all services
+ &nbsp; &nbsp; &nbsp; &nbsp;//
+
+ &nbsp; &nbsp; &nbsp; &nbsp;CMessage msgout (CNetManager::getSIDA (&quot;AS&quot;), &quot;SERVICE_LIST&quot;);
+ &nbsp; &nbsp; &nbsp; &nbsp;nbaes = (uint32)AdminExecutorServices.size();
+ &nbsp; &nbsp; &nbsp; &nbsp;msgout.serial (nbaes);
+ &nbsp; &nbsp; &nbsp; &nbsp;for (aesit = AdminExecutorServices.begin(); aesit != AdminExecutorServices.end(); aesit++)
+ &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;msgout.serial ((*aesit).Id);
+
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;uint32 nbs = (uint32)(*aesit).Services.size();
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;msgout.serial (nbs);
+
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;for (SIT sit = (*aesit).Services.begin(); sit != (*aesit).Services.end(); sit++)
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// send info about services of the AES
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;msgout.serial ((*sit).Id, (*sit).AliasName, (*sit).ShortName, (*sit).LongName);
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;msgout.serial ((*sit).Ready, (*sit).Connected, (*sit).InConfig);
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;msgout.serialCont ((*sit).Commands);
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}
+ &nbsp; &nbsp; &nbsp; &nbsp;}
+ &nbsp; &nbsp; &nbsp; &nbsp;CNetManager::send (&quot;AS&quot;, msgout, from);
+
+ &nbsp; &nbsp; &nbsp; &nbsp;displayServices ();
+
+ &nbsp; &nbsp; &nbsp; &nbsp;//
+ &nbsp; &nbsp; &nbsp; &nbsp;// send service alias list
+ &nbsp; &nbsp; &nbsp; &nbsp;//
+
+ &nbsp; &nbsp; &nbsp; &nbsp;nlinfo(&quot;send SAL to admin startup&quot;);
+
+ &nbsp; &nbsp; &nbsp; &nbsp;for (aesit = AdminExecutorServices.begin(); aesit != AdminExecutorServices.end(); aesit++)
+ &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;CMessage msgout2 (CNetManager::getSIDA (&quot;AS&quot;), &quot;SAL&quot;);
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;msgout2.serial ((*aesit).Id);
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;msgout2.serialCont ((*aesit).ServiceAliasList);
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;CNetManager::send (&quot;AS&quot;, msgout2, from);
+ &nbsp; &nbsp; &nbsp; &nbsp;}
+}
+
+
+static void cbExecuteSystemCommand (CMessage&amp; msgin, TSockId from, CCallbackNetBase &amp;netbase)
+{
+ &nbsp; &nbsp; &nbsp; &nbsp;string command;
+ &nbsp; &nbsp; &nbsp; &nbsp;uint32 aesid;
+ &nbsp; &nbsp; &nbsp; &nbsp;msgin.serial (aesid);
+ &nbsp; &nbsp; &nbsp; &nbsp;msgin.serial (command);
+
+ &nbsp; &nbsp; &nbsp; &nbsp;AESIT aesit = findAdminExecutorService (aesid, false);
+ &nbsp; &nbsp; &nbsp; &nbsp;if (aesit == AdminExecutorServices.end())
+ &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// don't find the aes, send an error message
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;messageToClient (0, &quot;couldn't execute command, as didn't find the aes&quot;, from);
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;return;
+ &nbsp; &nbsp; &nbsp; &nbsp;}
+
+ &nbsp; &nbsp; &nbsp; &nbsp;// send the resquest to the AES
+
+ &nbsp; &nbsp; &nbsp; &nbsp;CMessage msgout (CNetManager::getSIDA((*aesit).ServerAlias), &quot;SYS&quot;);
+ &nbsp; &nbsp; &nbsp; &nbsp;msgout.serial (command);
+ &nbsp; &nbsp; &nbsp; &nbsp;CNetManager::send ((*aesit).ServerAlias, msgout);
+}
+
+
+static void cbStartService (CMessage&amp; msgin, TSockId from, CCallbackNetBase &amp;netbase)
+{
+ &nbsp; &nbsp; &nbsp; &nbsp;string serviceAlias;
+ &nbsp; &nbsp; &nbsp; &nbsp;uint32 aesid;
+ &nbsp; &nbsp; &nbsp; &nbsp;msgin.serial (aesid);
+ &nbsp; &nbsp; &nbsp; &nbsp;msgin.serial (serviceAlias);
+
+ &nbsp; &nbsp; &nbsp; &nbsp;AESIT aesit = findAdminExecutorService (aesid, false);
+ &nbsp; &nbsp; &nbsp; &nbsp;if (aesit == AdminExecutorServices.end())
+ &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// don't find the aes, send an error message
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;messageToClient (0, &quot;couldn't start service, as didn't find the aes&quot;, from);
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;return;
+ &nbsp; &nbsp; &nbsp; &nbsp;}
+
+ &nbsp; &nbsp; &nbsp; &nbsp;// send the resquest to the AES
+
+ &nbsp; &nbsp; &nbsp; &nbsp;CMessage msgout (CNetManager::getSIDA((*aesit).ServerAlias), &quot;STARTS&quot;);
+ &nbsp; &nbsp; &nbsp; &nbsp;msgout.serial (serviceAlias);
+ &nbsp; &nbsp; &nbsp; &nbsp;CNetManager::send ((*aesit).ServerAlias, msgout);
+}
+
+static void cbStopService (CMessage&amp; msgin, TSockId from, CCallbackNetBase &amp;netbase)
+{
+ &nbsp; &nbsp; &nbsp; &nbsp;uint32 aesid, sid;
+ &nbsp; &nbsp; &nbsp; &nbsp;msgin.serial (aesid);
+ &nbsp; &nbsp; &nbsp; &nbsp;msgin.serial (sid);
+
+ &nbsp; &nbsp; &nbsp; &nbsp;AESIT aesit = findAdminExecutorService (aesid, false);
+ &nbsp; &nbsp; &nbsp; &nbsp;if (aesit == AdminExecutorServices.end())
+ &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;messageToClient (0, &quot;couldn't stop service, as didn't find the aes&quot;, from);
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// don't find the aes, send an error message
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;return;
+ &nbsp; &nbsp; &nbsp; &nbsp;}
+
+ &nbsp; &nbsp; &nbsp; &nbsp;SIT sit = (*aesit).findService (sid, false);
+ &nbsp; &nbsp; &nbsp; &nbsp;if (sit == (*aesit).Services.end())
+ &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// don't find the s, send an error message
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;messageToClient (0, &quot;couldn't stop service, as didn't find the service&quot;, from);
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;return;
+ &nbsp; &nbsp; &nbsp; &nbsp;}
+
+ &nbsp; &nbsp; &nbsp; &nbsp;// send the resquest to the AES
+
+ &nbsp; &nbsp; &nbsp; &nbsp;CMessage msgout (CNetManager::getSIDA((*aesit).ServerAlias), &quot;STOPS&quot;);
+ &nbsp; &nbsp; &nbsp; &nbsp;msgout.serial (sid);
+ &nbsp; &nbsp; &nbsp; &nbsp;CNetManager::send ((*aesit).ServerAlias, msgout);
+}
+
+static void cbExecCommand (CMessage&amp; msgin, TSockId from, CCallbackNetBase &amp;netbase)
+{
+ &nbsp; &nbsp; &nbsp; &nbsp;uint32 aesid, sid;
+ &nbsp; &nbsp; &nbsp; &nbsp;string command;
+ &nbsp; &nbsp; &nbsp; &nbsp;msgin.serial (aesid);
+ &nbsp; &nbsp; &nbsp; &nbsp;msgin.serial (sid);
+ &nbsp; &nbsp; &nbsp; &nbsp;msgin.serial (command);
+
+ &nbsp; &nbsp; &nbsp; &nbsp;AESIT aesit = findAdminExecutorService (aesid, false);
+ &nbsp; &nbsp; &nbsp; &nbsp;if (aesit == AdminExecutorServices.end())
+ &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;messageToClient (0, &quot;couldn't stop service, as didn't find the aes&quot;, from);
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// don't find the aes, send an error message
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;return;
+ &nbsp; &nbsp; &nbsp; &nbsp;}
+
+ &nbsp; &nbsp; &nbsp; &nbsp;SIT sit = (*aesit).findService (sid, false);
+ &nbsp; &nbsp; &nbsp; &nbsp;if (sit == (*aesit).Services.end())
+ &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// don't find the s, send an error message
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;messageToClient (0, &quot;couldn't stop service, as didn't find the service&quot;, from);
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;return;
+ &nbsp; &nbsp; &nbsp; &nbsp;}
+
+ &nbsp; &nbsp; &nbsp; &nbsp;// send the resquest to the AES
+
+ &nbsp; &nbsp; &nbsp; &nbsp;CMessage msgout (CNetManager::getSIDA((*aesit).ServerAlias), &quot;EXEC_COMMAND&quot;);
+ &nbsp; &nbsp; &nbsp; &nbsp;msgout.serial (sid);
+ &nbsp; &nbsp; &nbsp; &nbsp;msgout.serial (command);
+ &nbsp; &nbsp; &nbsp; &nbsp;CNetManager::send ((*aesit).ServerAlias, msgout);
+}
+
+static void cbStartAllServices (CMessage&amp; msgin, TSockId from, CCallbackNetBase &amp;netbase)
+{
+ &nbsp; &nbsp; &nbsp; &nbsp;initStartAllServices ();
+}
+
+static void cbStopAllServices (CMessage&amp; msgin, TSockId from, CCallbackNetBase &amp;netbase)
+{
+ &nbsp; &nbsp; &nbsp; &nbsp;for (AESIT aesit = AdminExecutorServices.begin(); aesit != AdminExecutorServices.end(); aesit++)
+ &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;for (SIT sit = (*aesit).Services.begin(); sit != (*aesit).Services.end(); sit++)
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;if ((*sit).Connected)
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;CMessage msgout (CNetManager::getSIDA((*aesit).ServerAlias), &quot;STOPS&quot;);
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;msgout.serial ((*sit).Id);
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;CNetManager::send ((*aesit).ServerAlias, msgout);
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}
+ &nbsp; &nbsp; &nbsp; &nbsp;}
+}
+
+TCallbackItem ClientCallbackArray[] =
+{
+ &nbsp; &nbsp; &nbsp; &nbsp;{ &quot;AUTH&quot;, cbAuthenticateClient },
+ &nbsp; &nbsp; &nbsp; &nbsp;{ &quot;SYS&quot;, cbExecuteSystemCommand },
+ &nbsp; &nbsp; &nbsp; &nbsp;{ &quot;STARTS&quot;, cbStartService },
+ &nbsp; &nbsp; &nbsp; &nbsp;{ &quot;STOPS&quot;, cbStopService },
+ &nbsp; &nbsp; &nbsp; &nbsp;{ &quot;EXEC_COMMAND&quot;, cbExecCommand },
+ &nbsp; &nbsp; &nbsp; &nbsp;{ &quot;START_ALL_SERVICES&quot;, cbStartAllServices },
+ &nbsp; &nbsp; &nbsp; &nbsp;{ &quot;STOP_ALL_SERVICES&quot;, cbStopAllServices },
+};
+
+////////////////////////////////////////////////////////////////////////////////////////////////////////
+////////////////////////////////////////////////////////////////////////////////////////////////////////
+////////////////// SERVICE IMPLEMENTATION //////////////////////////////////////////////////////////////
+////////////////////////////////////////////////////////////////////////////////////////////////////////
+////////////////////////////////////////////////////////////////////////////////////////////////////////
+
+class CAdminService : public IService
+{
+public:
+
+ &nbsp; &nbsp; &nbsp; &nbsp;/// Init the service, load the universal time.
+ &nbsp; &nbsp; &nbsp; &nbsp;void &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;init ()
+ &nbsp; &nbsp; &nbsp; &nbsp;{
+// &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;DebugLog-&gt;addNegativeFilter (&quot;L0:&quot;);
+// &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;DebugLog-&gt;addNegativeFilter (&quot;L1:&quot;);
+// &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;DebugLog-&gt;addNegativeFilter (&quot;L2:&quot;);
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;CNetManager::setConnectionCallback (&quot;AS&quot;, clientConnection, NULL);
+
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;//
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// Get the list of AESHosts, add in the structures and create connection to all AES
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;//
+
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;CConfigFile::CVar &amp;host = ConfigFile.getVar (&quot;AESHosts&quot;);
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;sint i;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;for (i = 0 ; i &lt; host.size (); i+=2)
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;string serverAlias = host.asString(i);
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;string serverAddr = host.asString(i+1);
+
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// add to the list
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;CAdminExecutorService aes;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;aes.ServerAlias = serverAlias;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;aes.ServerAddr = serverAddr;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;AdminExecutorServices.push_back (aes);
+
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// connect to the AES
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;CNetManager::setConnectionCallback (serverAlias, cbAESConnection, NULL);
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;CNetManager::setDisconnectionCallback (serverAlias, cbAESDisconnection, NULL);
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;CNetManager::addClient (serverAlias, serverAddr+&quot;:49996&quot;);
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;CNetManager::addCallbackArray (serverAlias, AESCallbackArray, sizeof (AESCallbackArray)/sizeof(AESCallbackArray[0]));
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}
+
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;//
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// Get the list of services in the shard
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;//
+
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;CConfigFile::CVar &amp;serv = ConfigFile.getVar (&quot;Services&quot;);
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;for (i = 0 ; i &lt; serv.size (); i+=2)
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;string serverAlias = serv.asString(i);
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;string serviceAlias = serv.asString(i+1);
+
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;AESIT aesit = findAdminExecutorService (serverAlias);
+
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// add new AES in the list
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;CService s;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;s.AliasName = serviceAlias;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;s.InConfig = true;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;(*aesit).Services.push_back (s);
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;displayServices ();
+ &nbsp; &nbsp; &nbsp; &nbsp;}
+};
+
+
+// AS is a server connection to the admin client
+// AESAS is a client connection to the admin executor
+
+/// Naming Service
+NLNET_SERVICE_MAIN (CAdminService, &quot;AS&quot;, &quot;admin_service&quot;, 49995, ClientCallbackArray, NELNS_CONFIG, NELNS_LOGS);
+</PRE> \ No newline at end of file
diff --git a/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cpp?r1=1.11 b/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cpp?r1=1.11
new file mode 100644
index 00000000..00d382c1
--- /dev/null
+++ b/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cpp?r1=1.11
@@ -0,0 +1,286 @@
+<!doctype html public "-//W3C//DTD HTML 4.0 Transitional//EN" "http://www.w3.org/TR/REC-html40/loose.dtd">
+<HTML>
+<HEAD>
+ <TITLE>nevrax.org : cvs</TITLE>
+ <META name="keywords" content="freesoftware,nel,newt,snowballs,richard stallman,GNU,Multi-User Online World">
+
+ <LINK REL=stylesheet TYPE="text/css" HREF="http://www.nevrax.org/inc/css/nevrax.css">
+</HEAD>
+<BODY MARGINHEIGHT="0" MARGINWIDTH="0">
+
+<!-- uplinks -->
+<TABLE CELLSPACING=0 CELLPADDING=0 BORDER=0>
+ <TR>
+ <TD WIDTH=16><IMG SRC="http://www.nevrax.org/inc/img/pixel.gif" WIDTH="16" HEIGHT="16" BORDER=0 ALT=""></TD>
+ <TD WIDTH=140 BGCOLOR=#dddddd><IMG SRC="http://www.nevrax.org/inc/img/pixel.gif" WIDTH="140" HEIGHT="16" BORDER=0 ALT=""></TD>
+ <TD WIDTH=16><IMG SRC="http://www.nevrax.org/inc/img/pixel.gif" WIDTH="16" HEIGHT="16" BORDER=0 ALT=""></TD>
+ <TD><IMG width=6 height=14 SRC="http://www.nevrax.org/inc/img/reddots.gif" ALT="#" VSPACE=2 HSPACE=2 BORDER=0 ></TD><TD VALIGN=middle>&nbsp;<A CLASS=uplinks HREF=http://www.nevrax.org><b>Home</B></FONT></A>&nbsp;&nbsp;&nbsp;</TD>
+ <TD><IMG width=6 height=14 SRC="http://www.nevrax.org/inc/img/reddots.gif" ALT="#" VSPACE=2 HSPACE=2 BORDER=0 ></TD><TD VALIGN=middle>&nbsp;<A CLASS=uplinks HREF=http://www.nevrax.com><b>nevrax.com</B></FONT></A>&nbsp;&nbsp;&nbsp;</TD>
+ </TR>
+</TABLE>
+
+<!-- banner Nevrax -->
+<TABLE CELLSPACING=0 CELLPADDING=0 BORDER=0 WIDTH=100%>
+ <TR><TD BGCOLOR="#000000" BACKGROUND="http://www.nevrax.org/inc/img/black_banner.jpg"><A HREF="http://www.nevrax.org"><IMG SRC="http://www.nevrax.org/inc/img/nevrax.gif" WIDTH="170" HEIGHT="45" BORDER=0 ALT="Nevrax" ></A></TD></TR>
+</TABLE>
+
+<!-- main table -->
+<TABLE CELLSPACING=0 CELLPADDING=0 BORDER=0 height=100%>
+ <TR>
+ <TD WIDTH=16><IMG SRC="http://www.nevrax.org/inc/img/pixel.gif" WIDTH="16" HEIGHT="10" BORDER=0 ALT=""></TD>
+ <TD WIDTH=140 BGCOLOR=#dddddd VALIGN=TOP ALIGN=middle><IMG SRC="http://www.nevrax.org/inc/img/pixel.gif" WIDTH="140" HEIGHT="10" BORDER=0 ALT="">
+
+ <!------ Begin Box ------>
+ <TABLE BORDER=0 CELLSPACING=0 CELLPADDING=0 BGCOLOR=black><TR><TD><TABLE border=0 cellspacing=2 cellpadding=0 width=120><tr><TD ALIGN=middle bgcolor=black>
+ <FONT COLOR=white FACE="sans-serif"><B>Nevrax.org</B></FONT></TD></TR><tr><td colspan=2 bgcolor=#FFFFFF>
+ <TABLE cellspacing=0 cellpadding=1 border=0>
+ <tr><td ALIGN=middle><a class='linkbox' href="http://www.nevrax.org/news/" TITLE="Rubrique news"><img width=13 height=15 hspace=5 border=0 src=http://www.nevrax.org/inc/img/picto-news.gif ALT=#></A></td><td><a class='linkbox' href="http://www.nevrax.org/news/" TITLE="News">News</a></td></tr>
+ <tr><td ALIGN=middle><a class='linkbox' href="http://www.nevrax.org/mail/" TITLE="Rubrique mail"><img width=15 height=11 hspace=5 border=0 src=http://www.nevrax.org/inc/img/picto-mail.gif ALT=#></A></td><td><a class='linkbox' href="http://www.nevrax.org/mail/" TITLE="Mailing list archive">Mailing-list</a></td></tr>
+ <tr><td ALIGN=middle><a class='linkbox' href="http://www.nevrax.org/docs/" TITLE="Rubrique docs"><img width=14 height=16 hspace=5 border=0 src=http://www.nevrax.org/inc/img/picto-docs.gif ALT=#></A></td><td><a class='linkbox' href="http://www.nevrax.org/docs/" TITLE="Documentation">Documentation</a></td></tr>
+ <tr><td ALIGN=middle><a class='linkbox' href="http://www.nevrax.org/cvs/" TITLE="Rubrique cvs"><img width=13 height=17 hspace=5 border=0 src=http://www.nevrax.org/inc/img/picto-cvs.gif ALT=#></A></td><td><a class='linkbox' href="http://www.nevrax.org/cvs/" TITLE="CVS Web">CVS</a></td></tr>
+ <tr><td ALIGN=middle><a class='linkbox' href="http://www.nevrax.org/bugs/" TITLE="Rubrique bugs"><img width=20 height=16 hspace=5 border=0 src=http://www.nevrax.org/inc/img/picto-bugs.gif ALT=#></A></td><td><a class='linkbox' href="http://www.nevrax.org/bugs/" TITLE="Bugtracking">Bugs</a></td></tr>
+ <tr><td ALIGN=middle><a class='linkbox' href="http://www.nevrax.org/free/" TITLE="Rubrique license"><img width=18 height=12 hspace=5 border=0 src=http://www.nevrax.org/inc/img/picto-free.gif ALT=#></A></td><td><a class='linkbox' href="http://www.nevrax.org/free/" TITLE="Free Software">Free software</a></td></tr>
+ </TABLE>
+ </TD></TR></TABLE></TD></TR></TABLE>
+ <!------ End Box ------>
+
+ </TD>
+ <TD WIDTH=15><IMG SRC="http://www.nevrax.org/inc/img/pixel.gif" WIDTH="16" HEIGHT="16" BORDER=0 ALT=""></TD>
+ <TD ALIGN=left valign=top><IMG SRC="http://www.nevrax.org/inc/img/pixel.gif" WIDTH="140" HEIGHT="10" BORDER=0 ALT="">
+
+<!-- title -->
+<TABLE background="http://www.nevrax.org/inc/img/redline.gif" CELLSPACING=0 CELLPADDING=0 BORDER=0 width=100%><tr><td>
+<A HREF="http://www.nevrax.org/cvs/"><img src="http://www.nevrax.org/inc/img/t_cvs.gif" ALT="cvs" HEIGHT=20 BORDER=0></A>
+</td><td><IMG SRC="http://www.nevrax.org/inc/img/pixel.gif" WIDTH="1" HEIGHT="1" BORDER=0 ALT="">
+</td></tr></table>
+
+<!-- title -->
+<table width=100%><tr><td align=left><b> <a href="/cvs/cvsweb.cgi/">Nevrax</a> / <a href="/cvs/cvsweb.cgi/code/">code</a> / <a href="/cvs/cvsweb.cgi/code/nelns/">nelns</a> / <a href="/cvs/cvsweb.cgi/code/nelns/admin_service/">admin_service</a> / admin_service.cpp</b></td><td align=right><b></b></td></TR></TABLE>
+
+<!-- block -->
+<TABLE bgcolor="#dddddd" CELLSPACING=0 CELLPADDING=0 BORDER=0 width=100%><tr><td width=1% valign=middle><img width=6 height=14 hspace=2 vspace=2 src="http://www.nevrax.org/inc/img/reddots.gif"></TD>
+ <TD><B>admin_service.cpp</B></TD>
+ <TD ALIGN=RIGHT> </td>
+</tr></table>
+<P>
+<p>Default branch: MAIN<BR>
+<HR size=1 NOSHADE><P><a NAME="rev1.15"></a><a NAME="HEAD"></a><a NAME="MAIN"></a>
+ Revision <A HREF="admin_service.cpp?rev=1.15&amp;content-type=text/x-cvsweb-markup"><b>1.15</b></A> / (<A HREF="/cvs/cvsweb.cgi/~checkout~/code/nelns/admin_service/admin_service.cpp?rev=1.15&amp;content-type=text/plain" target="cvs_checkout" onClick="window.open('/cvs/cvsweb.cgi/~checkout~/code/nelns/admin_service/admin_service.cpp?rev=1.15&amp;content-type=text/plain','cvs_checkout','resizeable,scrollbars');"><b>download</b></A>) - <a href="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cpp?annotate=1.15">annotate</a> - <A HREF="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cpp?r1=1.15">[select for diffs]</A>
+, <i>Mon Mar 25 09:28:00 2002 UTC</i> (4 months ago) by <i>lecroart</i>
+<BR>Branch: <b><A HREF="admin_service.cpp?only_with_tag=MAIN">MAIN</A>
+</b>
+<BR>CVS Tags: <b><A HREF="admin_service.cpp?only_with_tag=HEAD">HEAD</A>
+</b><BR>Changes since <b>1.14: +8 -6
+ lines</b><BR>Diff to previous <A HREF="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cpp.diff?r1=1.14&amp;r2=1.15">1.14</A>
+ to selected <A HREF="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cpp.diff?r1=1.11&amp;r2=1.15">1.11</A>
+<PRE>
+CHANGED: use new service functions
+</PRE>
+<HR size=1 NOSHADE><P><a NAME="rev1.14"></a>
+ Revision <A HREF="admin_service.cpp?rev=1.14&amp;content-type=text/x-cvsweb-markup"><b>1.14</b></A> / (<A HREF="/cvs/cvsweb.cgi/~checkout~/code/nelns/admin_service/admin_service.cpp?rev=1.14&amp;content-type=text/plain" target="cvs_checkout" onClick="window.open('/cvs/cvsweb.cgi/~checkout~/code/nelns/admin_service/admin_service.cpp?rev=1.14&amp;content-type=text/plain','cvs_checkout','resizeable,scrollbars');"><b>download</b></A>) - <a href="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cpp?annotate=1.14">annotate</a> - <A HREF="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cpp?r1=1.14">[select for diffs]</A>
+, <i>Tue Mar 19 17:42:48 2002 UTC</i> (4 months ago) by <i>valignat</i>
+<BR>Branch: <b><A HREF="admin_service.cpp?only_with_tag=MAIN">MAIN</A>
+</b>
+<BR>Changes since <b>1.13: +14 -2
+ lines</b><BR>Diff to previous <A HREF="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cpp.diff?r1=1.13&amp;r2=1.14">1.13</A>
+ to selected <A HREF="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cpp.diff?r1=1.11&amp;r2=1.14">1.11</A>
+<PRE>
+Applied patches which help to have a clen install on GNU/Linux and to make a Debian package (changes on the management of config and log files, bugfixes, etc ...)
+</PRE>
+<HR size=1 NOSHADE><P><a NAME="rev1.13"></a>
+ Revision <A HREF="admin_service.cpp?rev=1.13&amp;content-type=text/x-cvsweb-markup"><b>1.13</b></A> / (<A HREF="/cvs/cvsweb.cgi/~checkout~/code/nelns/admin_service/admin_service.cpp?rev=1.13&amp;content-type=text/plain" target="cvs_checkout" onClick="window.open('/cvs/cvsweb.cgi/~checkout~/code/nelns/admin_service/admin_service.cpp?rev=1.13&amp;content-type=text/plain','cvs_checkout','resizeable,scrollbars');"><b>download</b></A>) - <a href="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cpp?annotate=1.13">annotate</a> - <A HREF="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cpp?r1=1.13">[select for diffs]</A>
+, <i>Fri Mar 1 10:20:32 2002 UTC</i> (4 months, 3 weeks ago) by <i>lecroart</i>
+<BR>Branch: <b><A HREF="admin_service.cpp?only_with_tag=MAIN">MAIN</A>
+</b>
+<BR>Changes since <b>1.12: +8 -16
+ lines</b><BR>Diff to previous <A HREF="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cpp.diff?r1=1.12&amp;r2=1.13">1.12</A>
+ to selected <A HREF="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cpp.diff?r1=1.11&amp;r2=1.13">1.11</A>
+<PRE>
+ADDED: password per shard auth
+</PRE>
+<HR size=1 NOSHADE><P><a NAME="rev1.12"></a>
+ Revision <A HREF="admin_service.cpp?rev=1.12&amp;content-type=text/x-cvsweb-markup"><b>1.12</b></A> / (<A HREF="/cvs/cvsweb.cgi/~checkout~/code/nelns/admin_service/admin_service.cpp?rev=1.12&amp;content-type=text/plain" target="cvs_checkout" onClick="window.open('/cvs/cvsweb.cgi/~checkout~/code/nelns/admin_service/admin_service.cpp?rev=1.12&amp;content-type=text/plain','cvs_checkout','resizeable,scrollbars');"><b>download</b></A>) - <a href="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cpp?annotate=1.12">annotate</a> - <A HREF="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cpp?r1=1.12">[select for diffs]</A>
+, <i>Fri Feb 15 17:07:43 2002 UTC</i> (5 months, 1 week ago) by <i>lecroart</i>
+<BR>Branch: <b><A HREF="admin_service.cpp?only_with_tag=MAIN">MAIN</A>
+</b>
+<BR>Changes since <b>1.11: +50 -2
+ lines</b><BR>Diff to previous <A HREF="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cpp.diff?r1=1.11&amp;r2=1.12">1.11</A>
+<PRE>
+ADDED: login password
+</PRE>
+<HR size=1 NOSHADE><P><a NAME="rev1.11"></a>
+ Revision <A HREF="admin_service.cpp?rev=1.11&amp;content-type=text/x-cvsweb-markup"><b>1.11</b></A> / (<A HREF="/cvs/cvsweb.cgi/~checkout~/code/nelns/admin_service/admin_service.cpp?rev=1.11&amp;content-type=text/plain" target="cvs_checkout" onClick="window.open('/cvs/cvsweb.cgi/~checkout~/code/nelns/admin_service/admin_service.cpp?rev=1.11&amp;content-type=text/plain','cvs_checkout','resizeable,scrollbars');"><b>download</b></A>) - <a href="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cpp?annotate=1.11">annotate</a> - <b>[selected]</b>, <i>Tue Jul 10 16:49:53 2001 UTC</i> (12 months, 2 weeks ago) by <i>lecroart</i>
+<BR>Branch: <b><A HREF="admin_service.cpp?only_with_tag=MAIN">MAIN</A>
+</b>
+<BR>Changes since <b>1.10: +18 -14
+ lines</b><BR>Diff to previous <A HREF="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cpp.diff?r1=1.10&amp;r2=1.11">1.10</A>
+<PRE>
+BUGFIX: when a service isn't ready and already disconnected, it doesn't crash anymore
+</PRE>
+<HR size=1 NOSHADE><P><a NAME="rev1.10"></a>
+ Revision <A HREF="admin_service.cpp?rev=1.10&amp;content-type=text/x-cvsweb-markup"><b>1.10</b></A> / (<A HREF="/cvs/cvsweb.cgi/~checkout~/code/nelns/admin_service/admin_service.cpp?rev=1.10&amp;content-type=text/plain" target="cvs_checkout" onClick="window.open('/cvs/cvsweb.cgi/~checkout~/code/nelns/admin_service/admin_service.cpp?rev=1.10&amp;content-type=text/plain','cvs_checkout','resizeable,scrollbars');"><b>download</b></A>) - <a href="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cpp?annotate=1.10">annotate</a> - <A HREF="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cpp?r1=1.10">[select for diffs]</A>
+, <i>Thu Jul 5 08:26:07 2001 UTC</i> (12 months, 2 weeks ago) by <i>lecroart</i>
+<BR>Branch: <b><A HREF="admin_service.cpp?only_with_tag=MAIN">MAIN</A>
+</b>
+<BR>Changes since <b>1.9: +1 -6
+ lines</b><BR>Diff to previous <A HREF="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cpp.diff?r1=1.9&amp;r2=1.10">1.9</A>
+ to selected <A HREF="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cpp.diff?r1=1.11&amp;r2=1.10">1.11</A>
+<PRE>
+REMOVED: update()
+</PRE>
+<HR size=1 NOSHADE><P><a NAME="rev1.9"></a>
+ Revision <A HREF="admin_service.cpp?rev=1.9&amp;content-type=text/x-cvsweb-markup"><b>1.9</b></A> / (<A HREF="/cvs/cvsweb.cgi/~checkout~/code/nelns/admin_service/admin_service.cpp?rev=1.9&amp;content-type=text/plain" target="cvs_checkout" onClick="window.open('/cvs/cvsweb.cgi/~checkout~/code/nelns/admin_service/admin_service.cpp?rev=1.9&amp;content-type=text/plain','cvs_checkout','resizeable,scrollbars');"><b>download</b></A>) - <a href="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cpp?annotate=1.9">annotate</a> - <A HREF="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cpp?r1=1.9">[select for diffs]</A>
+, <i>Wed Jun 27 08:34:23 2001 UTC</i> (12 months, 4 weeks ago) by <i>lecroart</i>
+<BR>Branch: <b><A HREF="admin_service.cpp?only_with_tag=MAIN">MAIN</A>
+</b>
+<BR>Changes since <b>1.8: +14 -4
+ lines</b><BR>Diff to previous <A HREF="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cpp.diff?r1=1.8&amp;r2=1.9">1.8</A>
+ to selected <A HREF="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cpp.diff?r1=1.11&amp;r2=1.9">1.11</A>
+<PRE>
+ADDED: command redirection
+</PRE>
+<HR size=1 NOSHADE><P><a NAME="rev1.8"></a>
+ Revision <A HREF="admin_service.cpp?rev=1.8&amp;content-type=text/x-cvsweb-markup"><b>1.8</b></A> / (<A HREF="/cvs/cvsweb.cgi/~checkout~/code/nelns/admin_service/admin_service.cpp?rev=1.8&amp;content-type=text/plain" target="cvs_checkout" onClick="window.open('/cvs/cvsweb.cgi/~checkout~/code/nelns/admin_service/admin_service.cpp?rev=1.8&amp;content-type=text/plain','cvs_checkout','resizeable,scrollbars');"><b>download</b></A>) - <a href="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cpp?annotate=1.8">annotate</a> - <A HREF="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cpp?r1=1.8">[select for diffs]</A>
+, <i>Mon Jun 18 14:54:06 2001 UTC</i> (13 months ago) by <i>lecroart</i>
+<BR>Branch: <b><A HREF="admin_service.cpp?only_with_tag=MAIN">MAIN</A>
+</b>
+<BR>Changes since <b>1.7: +2 -2
+ lines</b><BR>Diff to previous <A HREF="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cpp.diff?r1=1.7&amp;r2=1.8">1.7</A>
+ to selected <A HREF="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cpp.diff?r1=1.11&amp;r2=1.8">1.11</A>
+<PRE>
+BUGFIX: linux compilation
+</PRE>
+<HR size=1 NOSHADE><P><a NAME="rev1.7"></a>
+ Revision <A HREF="admin_service.cpp?rev=1.7&amp;content-type=text/x-cvsweb-markup"><b>1.7</b></A> / (<A HREF="/cvs/cvsweb.cgi/~checkout~/code/nelns/admin_service/admin_service.cpp?rev=1.7&amp;content-type=text/plain" target="cvs_checkout" onClick="window.open('/cvs/cvsweb.cgi/~checkout~/code/nelns/admin_service/admin_service.cpp?rev=1.7&amp;content-type=text/plain','cvs_checkout','resizeable,scrollbars');"><b>download</b></A>) - <a href="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cpp?annotate=1.7">annotate</a> - <A HREF="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cpp?r1=1.7">[select for diffs]</A>
+, <i>Mon Jun 18 14:43:31 2001 UTC</i> (13 months ago) by <i>lecroart</i>
+<BR>Branch: <b><A HREF="admin_service.cpp?only_with_tag=MAIN">MAIN</A>
+</b>
+<BR>Changes since <b>1.6: +10 -9
+ lines</b><BR>Diff to previous <A HREF="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cpp.diff?r1=1.6&amp;r2=1.7">1.6</A>
+ to selected <A HREF="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cpp.diff?r1=1.11&amp;r2=1.7">1.11</A>
+<PRE>
+BUGFIX: linux compilation
+</PRE>
+<HR size=1 NOSHADE><P><a NAME="rev1.6"></a>
+ Revision <A HREF="admin_service.cpp?rev=1.6&amp;content-type=text/x-cvsweb-markup"><b>1.6</b></A> / (<A HREF="/cvs/cvsweb.cgi/~checkout~/code/nelns/admin_service/admin_service.cpp?rev=1.6&amp;content-type=text/plain" target="cvs_checkout" onClick="window.open('/cvs/cvsweb.cgi/~checkout~/code/nelns/admin_service/admin_service.cpp?rev=1.6&amp;content-type=text/plain','cvs_checkout','resizeable,scrollbars');"><b>download</b></A>) - <a href="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cpp?annotate=1.6">annotate</a> - <A HREF="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cpp?r1=1.6">[select for diffs]</A>
+, <i>Thu Jun 7 16:19:05 2001 UTC</i> (13 months, 2 weeks ago) by <i>lecroart</i>
+<BR>Branch: <b><A HREF="admin_service.cpp?only_with_tag=MAIN">MAIN</A>
+</b>
+<BR>Changes since <b>1.5: +134 -48
+ lines</b><BR>Diff to previous <A HREF="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cpp.diff?r1=1.5&amp;r2=1.6">1.5</A>
+ to selected <A HREF="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cpp.diff?r1=1.11&amp;r2=1.6">1.11</A>
+<PRE>
+ADDED: commands system
+</PRE>
+<HR size=1 NOSHADE><P><a NAME="rev1.5"></a>
+ Revision <A HREF="admin_service.cpp?rev=1.5&amp;content-type=text/x-cvsweb-markup"><b>1.5</b></A> / (<A HREF="/cvs/cvsweb.cgi/~checkout~/code/nelns/admin_service/admin_service.cpp?rev=1.5&amp;content-type=text/plain" target="cvs_checkout" onClick="window.open('/cvs/cvsweb.cgi/~checkout~/code/nelns/admin_service/admin_service.cpp?rev=1.5&amp;content-type=text/plain','cvs_checkout','resizeable,scrollbars');"><b>download</b></A>) - <a href="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cpp?annotate=1.5">annotate</a> - <A HREF="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cpp?r1=1.5">[select for diffs]</A>
+, <i>Thu May 31 16:44:54 2001 UTC</i> (13 months, 3 weeks ago) by <i>lecroart</i>
+<BR>Branch: <b><A HREF="admin_service.cpp?only_with_tag=MAIN">MAIN</A>
+</b>
+<BR>Changes since <b>1.4: +156 -61
+ lines</b><BR>Diff to previous <A HREF="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cpp.diff?r1=1.4&amp;r2=1.5">1.4</A>
+ to selected <A HREF="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cpp.diff?r1=1.11&amp;r2=1.5">1.11</A>
+<PRE>
+ADDED: service alias naming
+</PRE>
+<HR size=1 NOSHADE><P><a NAME="rev1.4"></a>
+ Revision <A HREF="admin_service.cpp?rev=1.4&amp;content-type=text/x-cvsweb-markup"><b>1.4</b></A> / (<A HREF="/cvs/cvsweb.cgi/~checkout~/code/nelns/admin_service/admin_service.cpp?rev=1.4&amp;content-type=text/plain" target="cvs_checkout" onClick="window.open('/cvs/cvsweb.cgi/~checkout~/code/nelns/admin_service/admin_service.cpp?rev=1.4&amp;content-type=text/plain','cvs_checkout','resizeable,scrollbars');"><b>download</b></A>) - <a href="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cpp?annotate=1.4">annotate</a> - <A HREF="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cpp?r1=1.4">[select for diffs]</A>
+, <i>Fri May 18 16:51:33 2001 UTC</i> (14 months ago) by <i>lecroart</i>
+<BR>Branch: <b><A HREF="admin_service.cpp?only_with_tag=MAIN">MAIN</A>
+</b>
+<BR>Changes since <b>1.3: +405 -101
+ lines</b><BR>Diff to previous <A HREF="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cpp.diff?r1=1.3&amp;r2=1.4">1.3</A>
+ to selected <A HREF="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cpp.diff?r1=1.11&amp;r2=1.4">1.11</A>
+<PRE>
+ADDED: work in progress. added gtk
+</PRE>
+<HR size=1 NOSHADE><P><a NAME="rev1.3"></a>
+ Revision <A HREF="admin_service.cpp?rev=1.3&amp;content-type=text/x-cvsweb-markup"><b>1.3</b></A> / (<A HREF="/cvs/cvsweb.cgi/~checkout~/code/nelns/admin_service/admin_service.cpp?rev=1.3&amp;content-type=text/plain" target="cvs_checkout" onClick="window.open('/cvs/cvsweb.cgi/~checkout~/code/nelns/admin_service/admin_service.cpp?rev=1.3&amp;content-type=text/plain','cvs_checkout','resizeable,scrollbars');"><b>download</b></A>) - <a href="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cpp?annotate=1.3">annotate</a> - <A HREF="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cpp?r1=1.3">[select for diffs]</A>
+, <i>Thu May 10 08:20:06 2001 UTC</i> (14 months, 2 weeks ago) by <i>lecroart</i>
+<BR>Branch: <b><A HREF="admin_service.cpp?only_with_tag=MAIN">MAIN</A>
+</b>
+<BR>Changes since <b>1.2: +233 -34
+ lines</b><BR>Diff to previous <A HREF="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cpp.diff?r1=1.2&amp;r2=1.3">1.2</A>
+ to selected <A HREF="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cpp.diff?r1=1.11&amp;r2=1.3">1.11</A>
+<PRE>
+ADDED: changed the data structures
+</PRE>
+<HR size=1 NOSHADE><P><a NAME="rev1.2"></a>
+ Revision <A HREF="admin_service.cpp?rev=1.2&amp;content-type=text/x-cvsweb-markup"><b>1.2</b></A> / (<A HREF="/cvs/cvsweb.cgi/~checkout~/code/nelns/admin_service/admin_service.cpp?rev=1.2&amp;content-type=text/plain" target="cvs_checkout" onClick="window.open('/cvs/cvsweb.cgi/~checkout~/code/nelns/admin_service/admin_service.cpp?rev=1.2&amp;content-type=text/plain','cvs_checkout','resizeable,scrollbars');"><b>download</b></A>) - <a href="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cpp?annotate=1.2">annotate</a> - <A HREF="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cpp?r1=1.2">[select for diffs]</A>
+, <i>Thu May 3 13:19:13 2001 UTC</i> (14 months, 3 weeks ago) by <i>lecroart</i>
+<BR>Branch: <b><A HREF="admin_service.cpp?only_with_tag=MAIN">MAIN</A>
+</b>
+<BR>Changes since <b>1.1: +2 -6
+ lines</b><BR>Diff to previous <A HREF="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cpp.diff?r1=1.1&amp;r2=1.2">1.1</A>
+ to selected <A HREF="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cpp.diff?r1=1.11&amp;r2=1.2">1.11</A>
+<PRE>
+BUGFIX: now compile on linux
+</PRE>
+<HR size=1 NOSHADE><P><a NAME="rev1.1"></a>
+ Revision <A HREF="admin_service.cpp?rev=1.1&amp;content-type=text/x-cvsweb-markup"><b>1.1</b></A> / (<A HREF="/cvs/cvsweb.cgi/~checkout~/code/nelns/admin_service/admin_service.cpp?rev=1.1&amp;content-type=text/plain" target="cvs_checkout" onClick="window.open('/cvs/cvsweb.cgi/~checkout~/code/nelns/admin_service/admin_service.cpp?rev=1.1&amp;content-type=text/plain','cvs_checkout','resizeable,scrollbars');"><b>download</b></A>) - <a href="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cpp?annotate=1.1">annotate</a> - <A HREF="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cpp?r1=1.1">[select for diffs]</A>
+, <i>Wed May 2 12:36:39 2001 UTC</i> (14 months, 3 weeks ago) by <i>lecroart</i>
+<BR>Branch: <b><A HREF="admin_service.cpp?only_with_tag=MAIN">MAIN</A>
+</b>
+<BR>Diff to selected <A HREF="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cpp.diff?r1=1.11&amp;r2=1.1">1.11</A>
+<PRE>
+ADD: new version of the network system (in NeL and NeLns)
+</PRE>
+
+<!-- block -->
+<TABLE bgcolor="#dddddd" CELLSPACING=0 CELLPADDING=0 BORDER=0 width=100%><tr><td width=1% valign=middle><img width=6 height=14 hspace=2 vspace=2 src="http://www.nevrax.org/inc/img/reddots.gif"></TD>
+ <TD><B>Request Diffs</B></TD>
+ <TD ALIGN=RIGHT> </td>
+</tr></table>
+<P>
+<P>
+<FORM METHOD="GET" ACTION="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cpp.diff" NAME="diff_select">
+Diffs between
+<SELECT NAME="r1">
+<OPTION VALUE="text" SELECTED>Use Text Field
+<OPTION VALUE="1:MAIN">MAIN
+<OPTION VALUE="1.15:HEAD">HEAD
+</SELECT>
+<INPUT TYPE="TEXT" SIZE="12" NAME="tr1" VALUE="1.11" onChange='document.diff_select.r1.selectedIndex=0'>
+ and
+<SELECT NAME="r2">
+<OPTION VALUE="text" SELECTED>Use Text Field
+<OPTION VALUE="1:MAIN">MAIN
+<OPTION VALUE="1.15:HEAD">HEAD
+</SELECT>
+<INPUT TYPE="TEXT" SIZE="12" NAME="tr2" VALUE="1.15" onChange='docuement.diff_select.r2.selectedIndex=0'>
+<BR>Type of Diff should be a&nbsp;<SELECT NAME="f">
+<OPTION VALUE=h SELECTED>Colored Diff<OPTION VALUE=H>Long Colored Diff<OPTION VALUE=u>Unidiff<OPTION VALUE=c>Context Diff<OPTION VALUE=s>Side by Side</SELECT><INPUT TYPE=SUBMIT VALUE=" Get Diffs ">
+</FORM>
+
+<!-- block -->
+<TABLE bgcolor="#dddddd" CELLSPACING=0 CELLPADDING=0 BORDER=0 width=100%><tr><td width=1% valign=middle><img width=6 height=14 hspace=2 vspace=2 src="http://www.nevrax.org/inc/img/reddots.gif"></TD>
+ <TD><B>Select branch</B></TD>
+ <TD ALIGN=RIGHT> </td>
+</tr></table>
+<P>
+<P>
+<A name=branch></A>
+<FORM METHOD="GET" ACTION="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cpp">
+View only Branch:
+<SELECT NAME="only_with_tag" onchange="submit()">
+<OPTION VALUE="">Show all branches
+<OPTION>MAIN
+</SELECT>
+<INPUT TYPE=SUBMIT VALUE=" View Branch ">
+</FORM>
+<A name=logsort></A>
+<FORM METHOD="GET" ACTION="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cpp">
+Sort log by:
+<SELECT NAME="logsort" onchange="submit()">
+<OPTION VALUE=cvs>Not sorted<OPTION VALUE=date SELECTED>Commit date<OPTION VALUE=rev>Revision</SELECT>
+<INPUT TYPE=SUBMIT VALUE=" Sort ">
+</FORM>
+
+<!-- footer -->
+<BR><FONT Size=+5>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </FONT>
+</TD>
+<TD WIDTH=15><IMG SRC=http://www.nevrax.org/inc/img/pixel.gif WIDTH=15 HEIGHT=15 BORDER=0 ALT=""></TD>
+</TR>
+</TABLE>
+</BODY>
+</HTML></BODY></HTML>
diff --git a/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cpp?r1=1.14 b/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cpp?r1=1.14
new file mode 100644
index 00000000..546c08e8
--- /dev/null
+++ b/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cpp?r1=1.14
@@ -0,0 +1,286 @@
+<!doctype html public "-//W3C//DTD HTML 4.0 Transitional//EN" "http://www.w3.org/TR/REC-html40/loose.dtd">
+<HTML>
+<HEAD>
+ <TITLE>nevrax.org : cvs</TITLE>
+ <META name="keywords" content="freesoftware,nel,newt,snowballs,richard stallman,GNU,Multi-User Online World">
+
+ <LINK REL=stylesheet TYPE="text/css" HREF="http://www.nevrax.org/inc/css/nevrax.css">
+</HEAD>
+<BODY MARGINHEIGHT="0" MARGINWIDTH="0">
+
+<!-- uplinks -->
+<TABLE CELLSPACING=0 CELLPADDING=0 BORDER=0>
+ <TR>
+ <TD WIDTH=16><IMG SRC="http://www.nevrax.org/inc/img/pixel.gif" WIDTH="16" HEIGHT="16" BORDER=0 ALT=""></TD>
+ <TD WIDTH=140 BGCOLOR=#dddddd><IMG SRC="http://www.nevrax.org/inc/img/pixel.gif" WIDTH="140" HEIGHT="16" BORDER=0 ALT=""></TD>
+ <TD WIDTH=16><IMG SRC="http://www.nevrax.org/inc/img/pixel.gif" WIDTH="16" HEIGHT="16" BORDER=0 ALT=""></TD>
+ <TD><IMG width=6 height=14 SRC="http://www.nevrax.org/inc/img/reddots.gif" ALT="#" VSPACE=2 HSPACE=2 BORDER=0 ></TD><TD VALIGN=middle>&nbsp;<A CLASS=uplinks HREF=http://www.nevrax.org><b>Home</B></FONT></A>&nbsp;&nbsp;&nbsp;</TD>
+ <TD><IMG width=6 height=14 SRC="http://www.nevrax.org/inc/img/reddots.gif" ALT="#" VSPACE=2 HSPACE=2 BORDER=0 ></TD><TD VALIGN=middle>&nbsp;<A CLASS=uplinks HREF=http://www.nevrax.com><b>nevrax.com</B></FONT></A>&nbsp;&nbsp;&nbsp;</TD>
+ </TR>
+</TABLE>
+
+<!-- banner Nevrax -->
+<TABLE CELLSPACING=0 CELLPADDING=0 BORDER=0 WIDTH=100%>
+ <TR><TD BGCOLOR="#000000" BACKGROUND="http://www.nevrax.org/inc/img/black_banner.jpg"><A HREF="http://www.nevrax.org"><IMG SRC="http://www.nevrax.org/inc/img/nevrax.gif" WIDTH="170" HEIGHT="45" BORDER=0 ALT="Nevrax" ></A></TD></TR>
+</TABLE>
+
+<!-- main table -->
+<TABLE CELLSPACING=0 CELLPADDING=0 BORDER=0 height=100%>
+ <TR>
+ <TD WIDTH=16><IMG SRC="http://www.nevrax.org/inc/img/pixel.gif" WIDTH="16" HEIGHT="10" BORDER=0 ALT=""></TD>
+ <TD WIDTH=140 BGCOLOR=#dddddd VALIGN=TOP ALIGN=middle><IMG SRC="http://www.nevrax.org/inc/img/pixel.gif" WIDTH="140" HEIGHT="10" BORDER=0 ALT="">
+
+ <!------ Begin Box ------>
+ <TABLE BORDER=0 CELLSPACING=0 CELLPADDING=0 BGCOLOR=black><TR><TD><TABLE border=0 cellspacing=2 cellpadding=0 width=120><tr><TD ALIGN=middle bgcolor=black>
+ <FONT COLOR=white FACE="sans-serif"><B>Nevrax.org</B></FONT></TD></TR><tr><td colspan=2 bgcolor=#FFFFFF>
+ <TABLE cellspacing=0 cellpadding=1 border=0>
+ <tr><td ALIGN=middle><a class='linkbox' href="http://www.nevrax.org/news/" TITLE="Rubrique news"><img width=13 height=15 hspace=5 border=0 src=http://www.nevrax.org/inc/img/picto-news.gif ALT=#></A></td><td><a class='linkbox' href="http://www.nevrax.org/news/" TITLE="News">News</a></td></tr>
+ <tr><td ALIGN=middle><a class='linkbox' href="http://www.nevrax.org/mail/" TITLE="Rubrique mail"><img width=15 height=11 hspace=5 border=0 src=http://www.nevrax.org/inc/img/picto-mail.gif ALT=#></A></td><td><a class='linkbox' href="http://www.nevrax.org/mail/" TITLE="Mailing list archive">Mailing-list</a></td></tr>
+ <tr><td ALIGN=middle><a class='linkbox' href="http://www.nevrax.org/docs/" TITLE="Rubrique docs"><img width=14 height=16 hspace=5 border=0 src=http://www.nevrax.org/inc/img/picto-docs.gif ALT=#></A></td><td><a class='linkbox' href="http://www.nevrax.org/docs/" TITLE="Documentation">Documentation</a></td></tr>
+ <tr><td ALIGN=middle><a class='linkbox' href="http://www.nevrax.org/cvs/" TITLE="Rubrique cvs"><img width=13 height=17 hspace=5 border=0 src=http://www.nevrax.org/inc/img/picto-cvs.gif ALT=#></A></td><td><a class='linkbox' href="http://www.nevrax.org/cvs/" TITLE="CVS Web">CVS</a></td></tr>
+ <tr><td ALIGN=middle><a class='linkbox' href="http://www.nevrax.org/bugs/" TITLE="Rubrique bugs"><img width=20 height=16 hspace=5 border=0 src=http://www.nevrax.org/inc/img/picto-bugs.gif ALT=#></A></td><td><a class='linkbox' href="http://www.nevrax.org/bugs/" TITLE="Bugtracking">Bugs</a></td></tr>
+ <tr><td ALIGN=middle><a class='linkbox' href="http://www.nevrax.org/free/" TITLE="Rubrique license"><img width=18 height=12 hspace=5 border=0 src=http://www.nevrax.org/inc/img/picto-free.gif ALT=#></A></td><td><a class='linkbox' href="http://www.nevrax.org/free/" TITLE="Free Software">Free software</a></td></tr>
+ </TABLE>
+ </TD></TR></TABLE></TD></TR></TABLE>
+ <!------ End Box ------>
+
+ </TD>
+ <TD WIDTH=15><IMG SRC="http://www.nevrax.org/inc/img/pixel.gif" WIDTH="16" HEIGHT="16" BORDER=0 ALT=""></TD>
+ <TD ALIGN=left valign=top><IMG SRC="http://www.nevrax.org/inc/img/pixel.gif" WIDTH="140" HEIGHT="10" BORDER=0 ALT="">
+
+<!-- title -->
+<TABLE background="http://www.nevrax.org/inc/img/redline.gif" CELLSPACING=0 CELLPADDING=0 BORDER=0 width=100%><tr><td>
+<A HREF="http://www.nevrax.org/cvs/"><img src="http://www.nevrax.org/inc/img/t_cvs.gif" ALT="cvs" HEIGHT=20 BORDER=0></A>
+</td><td><IMG SRC="http://www.nevrax.org/inc/img/pixel.gif" WIDTH="1" HEIGHT="1" BORDER=0 ALT="">
+</td></tr></table>
+
+<!-- title -->
+<table width=100%><tr><td align=left><b> <a href="/cvs/cvsweb.cgi/">Nevrax</a> / <a href="/cvs/cvsweb.cgi/code/">code</a> / <a href="/cvs/cvsweb.cgi/code/nelns/">nelns</a> / <a href="/cvs/cvsweb.cgi/code/nelns/admin_service/">admin_service</a> / admin_service.cpp</b></td><td align=right><b></b></td></TR></TABLE>
+
+<!-- block -->
+<TABLE bgcolor="#dddddd" CELLSPACING=0 CELLPADDING=0 BORDER=0 width=100%><tr><td width=1% valign=middle><img width=6 height=14 hspace=2 vspace=2 src="http://www.nevrax.org/inc/img/reddots.gif"></TD>
+ <TD><B>admin_service.cpp</B></TD>
+ <TD ALIGN=RIGHT> </td>
+</tr></table>
+<P>
+<p>Default branch: MAIN<BR>
+<HR size=1 NOSHADE><P><a NAME="rev1.15"></a><a NAME="HEAD"></a><a NAME="MAIN"></a>
+ Revision <A HREF="admin_service.cpp?rev=1.15&amp;content-type=text/x-cvsweb-markup"><b>1.15</b></A> / (<A HREF="/cvs/cvsweb.cgi/~checkout~/code/nelns/admin_service/admin_service.cpp?rev=1.15&amp;content-type=text/plain" target="cvs_checkout" onClick="window.open('/cvs/cvsweb.cgi/~checkout~/code/nelns/admin_service/admin_service.cpp?rev=1.15&amp;content-type=text/plain','cvs_checkout','resizeable,scrollbars');"><b>download</b></A>) - <a href="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cpp?annotate=1.15">annotate</a> - <A HREF="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cpp?r1=1.15">[select for diffs]</A>
+, <i>Mon Mar 25 09:28:00 2002 UTC</i> (4 months ago) by <i>lecroart</i>
+<BR>Branch: <b><A HREF="admin_service.cpp?only_with_tag=MAIN">MAIN</A>
+</b>
+<BR>CVS Tags: <b><A HREF="admin_service.cpp?only_with_tag=HEAD">HEAD</A>
+</b><BR>Changes since <b>1.14: +8 -6
+ lines</b><BR>Diff to previous <A HREF="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cpp.diff?r1=1.14&amp;r2=1.15">1.14</A>
+<PRE>
+CHANGED: use new service functions
+</PRE>
+<HR size=1 NOSHADE><P><a NAME="rev1.14"></a>
+ Revision <A HREF="admin_service.cpp?rev=1.14&amp;content-type=text/x-cvsweb-markup"><b>1.14</b></A> / (<A HREF="/cvs/cvsweb.cgi/~checkout~/code/nelns/admin_service/admin_service.cpp?rev=1.14&amp;content-type=text/plain" target="cvs_checkout" onClick="window.open('/cvs/cvsweb.cgi/~checkout~/code/nelns/admin_service/admin_service.cpp?rev=1.14&amp;content-type=text/plain','cvs_checkout','resizeable,scrollbars');"><b>download</b></A>) - <a href="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cpp?annotate=1.14">annotate</a> - <b>[selected]</b>, <i>Tue Mar 19 17:42:48 2002 UTC</i> (4 months ago) by <i>valignat</i>
+<BR>Branch: <b><A HREF="admin_service.cpp?only_with_tag=MAIN">MAIN</A>
+</b>
+<BR>Changes since <b>1.13: +14 -2
+ lines</b><BR>Diff to previous <A HREF="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cpp.diff?r1=1.13&amp;r2=1.14">1.13</A>
+<PRE>
+Applied patches which help to have a clen install on GNU/Linux and to make a Debian package (changes on the management of config and log files, bugfixes, etc ...)
+</PRE>
+<HR size=1 NOSHADE><P><a NAME="rev1.13"></a>
+ Revision <A HREF="admin_service.cpp?rev=1.13&amp;content-type=text/x-cvsweb-markup"><b>1.13</b></A> / (<A HREF="/cvs/cvsweb.cgi/~checkout~/code/nelns/admin_service/admin_service.cpp?rev=1.13&amp;content-type=text/plain" target="cvs_checkout" onClick="window.open('/cvs/cvsweb.cgi/~checkout~/code/nelns/admin_service/admin_service.cpp?rev=1.13&amp;content-type=text/plain','cvs_checkout','resizeable,scrollbars');"><b>download</b></A>) - <a href="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cpp?annotate=1.13">annotate</a> - <A HREF="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cpp?r1=1.13">[select for diffs]</A>
+, <i>Fri Mar 1 10:20:32 2002 UTC</i> (4 months, 3 weeks ago) by <i>lecroart</i>
+<BR>Branch: <b><A HREF="admin_service.cpp?only_with_tag=MAIN">MAIN</A>
+</b>
+<BR>Changes since <b>1.12: +8 -16
+ lines</b><BR>Diff to previous <A HREF="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cpp.diff?r1=1.12&amp;r2=1.13">1.12</A>
+ to selected <A HREF="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cpp.diff?r1=1.14&amp;r2=1.13">1.14</A>
+<PRE>
+ADDED: password per shard auth
+</PRE>
+<HR size=1 NOSHADE><P><a NAME="rev1.12"></a>
+ Revision <A HREF="admin_service.cpp?rev=1.12&amp;content-type=text/x-cvsweb-markup"><b>1.12</b></A> / (<A HREF="/cvs/cvsweb.cgi/~checkout~/code/nelns/admin_service/admin_service.cpp?rev=1.12&amp;content-type=text/plain" target="cvs_checkout" onClick="window.open('/cvs/cvsweb.cgi/~checkout~/code/nelns/admin_service/admin_service.cpp?rev=1.12&amp;content-type=text/plain','cvs_checkout','resizeable,scrollbars');"><b>download</b></A>) - <a href="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cpp?annotate=1.12">annotate</a> - <A HREF="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cpp?r1=1.12">[select for diffs]</A>
+, <i>Fri Feb 15 17:07:43 2002 UTC</i> (5 months, 1 week ago) by <i>lecroart</i>
+<BR>Branch: <b><A HREF="admin_service.cpp?only_with_tag=MAIN">MAIN</A>
+</b>
+<BR>Changes since <b>1.11: +50 -2
+ lines</b><BR>Diff to previous <A HREF="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cpp.diff?r1=1.11&amp;r2=1.12">1.11</A>
+ to selected <A HREF="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cpp.diff?r1=1.14&amp;r2=1.12">1.14</A>
+<PRE>
+ADDED: login password
+</PRE>
+<HR size=1 NOSHADE><P><a NAME="rev1.11"></a>
+ Revision <A HREF="admin_service.cpp?rev=1.11&amp;content-type=text/x-cvsweb-markup"><b>1.11</b></A> / (<A HREF="/cvs/cvsweb.cgi/~checkout~/code/nelns/admin_service/admin_service.cpp?rev=1.11&amp;content-type=text/plain" target="cvs_checkout" onClick="window.open('/cvs/cvsweb.cgi/~checkout~/code/nelns/admin_service/admin_service.cpp?rev=1.11&amp;content-type=text/plain','cvs_checkout','resizeable,scrollbars');"><b>download</b></A>) - <a href="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cpp?annotate=1.11">annotate</a> - <A HREF="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cpp?r1=1.11">[select for diffs]</A>
+, <i>Tue Jul 10 16:49:53 2001 UTC</i> (12 months, 2 weeks ago) by <i>lecroart</i>
+<BR>Branch: <b><A HREF="admin_service.cpp?only_with_tag=MAIN">MAIN</A>
+</b>
+<BR>Changes since <b>1.10: +18 -14
+ lines</b><BR>Diff to previous <A HREF="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cpp.diff?r1=1.10&amp;r2=1.11">1.10</A>
+ to selected <A HREF="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cpp.diff?r1=1.14&amp;r2=1.11">1.14</A>
+<PRE>
+BUGFIX: when a service isn't ready and already disconnected, it doesn't crash anymore
+</PRE>
+<HR size=1 NOSHADE><P><a NAME="rev1.10"></a>
+ Revision <A HREF="admin_service.cpp?rev=1.10&amp;content-type=text/x-cvsweb-markup"><b>1.10</b></A> / (<A HREF="/cvs/cvsweb.cgi/~checkout~/code/nelns/admin_service/admin_service.cpp?rev=1.10&amp;content-type=text/plain" target="cvs_checkout" onClick="window.open('/cvs/cvsweb.cgi/~checkout~/code/nelns/admin_service/admin_service.cpp?rev=1.10&amp;content-type=text/plain','cvs_checkout','resizeable,scrollbars');"><b>download</b></A>) - <a href="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cpp?annotate=1.10">annotate</a> - <A HREF="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cpp?r1=1.10">[select for diffs]</A>
+, <i>Thu Jul 5 08:26:07 2001 UTC</i> (12 months, 2 weeks ago) by <i>lecroart</i>
+<BR>Branch: <b><A HREF="admin_service.cpp?only_with_tag=MAIN">MAIN</A>
+</b>
+<BR>Changes since <b>1.9: +1 -6
+ lines</b><BR>Diff to previous <A HREF="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cpp.diff?r1=1.9&amp;r2=1.10">1.9</A>
+ to selected <A HREF="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cpp.diff?r1=1.14&amp;r2=1.10">1.14</A>
+<PRE>
+REMOVED: update()
+</PRE>
+<HR size=1 NOSHADE><P><a NAME="rev1.9"></a>
+ Revision <A HREF="admin_service.cpp?rev=1.9&amp;content-type=text/x-cvsweb-markup"><b>1.9</b></A> / (<A HREF="/cvs/cvsweb.cgi/~checkout~/code/nelns/admin_service/admin_service.cpp?rev=1.9&amp;content-type=text/plain" target="cvs_checkout" onClick="window.open('/cvs/cvsweb.cgi/~checkout~/code/nelns/admin_service/admin_service.cpp?rev=1.9&amp;content-type=text/plain','cvs_checkout','resizeable,scrollbars');"><b>download</b></A>) - <a href="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cpp?annotate=1.9">annotate</a> - <A HREF="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cpp?r1=1.9">[select for diffs]</A>
+, <i>Wed Jun 27 08:34:23 2001 UTC</i> (12 months, 4 weeks ago) by <i>lecroart</i>
+<BR>Branch: <b><A HREF="admin_service.cpp?only_with_tag=MAIN">MAIN</A>
+</b>
+<BR>Changes since <b>1.8: +14 -4
+ lines</b><BR>Diff to previous <A HREF="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cpp.diff?r1=1.8&amp;r2=1.9">1.8</A>
+ to selected <A HREF="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cpp.diff?r1=1.14&amp;r2=1.9">1.14</A>
+<PRE>
+ADDED: command redirection
+</PRE>
+<HR size=1 NOSHADE><P><a NAME="rev1.8"></a>
+ Revision <A HREF="admin_service.cpp?rev=1.8&amp;content-type=text/x-cvsweb-markup"><b>1.8</b></A> / (<A HREF="/cvs/cvsweb.cgi/~checkout~/code/nelns/admin_service/admin_service.cpp?rev=1.8&amp;content-type=text/plain" target="cvs_checkout" onClick="window.open('/cvs/cvsweb.cgi/~checkout~/code/nelns/admin_service/admin_service.cpp?rev=1.8&amp;content-type=text/plain','cvs_checkout','resizeable,scrollbars');"><b>download</b></A>) - <a href="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cpp?annotate=1.8">annotate</a> - <A HREF="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cpp?r1=1.8">[select for diffs]</A>
+, <i>Mon Jun 18 14:54:06 2001 UTC</i> (13 months ago) by <i>lecroart</i>
+<BR>Branch: <b><A HREF="admin_service.cpp?only_with_tag=MAIN">MAIN</A>
+</b>
+<BR>Changes since <b>1.7: +2 -2
+ lines</b><BR>Diff to previous <A HREF="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cpp.diff?r1=1.7&amp;r2=1.8">1.7</A>
+ to selected <A HREF="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cpp.diff?r1=1.14&amp;r2=1.8">1.14</A>
+<PRE>
+BUGFIX: linux compilation
+</PRE>
+<HR size=1 NOSHADE><P><a NAME="rev1.7"></a>
+ Revision <A HREF="admin_service.cpp?rev=1.7&amp;content-type=text/x-cvsweb-markup"><b>1.7</b></A> / (<A HREF="/cvs/cvsweb.cgi/~checkout~/code/nelns/admin_service/admin_service.cpp?rev=1.7&amp;content-type=text/plain" target="cvs_checkout" onClick="window.open('/cvs/cvsweb.cgi/~checkout~/code/nelns/admin_service/admin_service.cpp?rev=1.7&amp;content-type=text/plain','cvs_checkout','resizeable,scrollbars');"><b>download</b></A>) - <a href="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cpp?annotate=1.7">annotate</a> - <A HREF="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cpp?r1=1.7">[select for diffs]</A>
+, <i>Mon Jun 18 14:43:31 2001 UTC</i> (13 months ago) by <i>lecroart</i>
+<BR>Branch: <b><A HREF="admin_service.cpp?only_with_tag=MAIN">MAIN</A>
+</b>
+<BR>Changes since <b>1.6: +10 -9
+ lines</b><BR>Diff to previous <A HREF="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cpp.diff?r1=1.6&amp;r2=1.7">1.6</A>
+ to selected <A HREF="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cpp.diff?r1=1.14&amp;r2=1.7">1.14</A>
+<PRE>
+BUGFIX: linux compilation
+</PRE>
+<HR size=1 NOSHADE><P><a NAME="rev1.6"></a>
+ Revision <A HREF="admin_service.cpp?rev=1.6&amp;content-type=text/x-cvsweb-markup"><b>1.6</b></A> / (<A HREF="/cvs/cvsweb.cgi/~checkout~/code/nelns/admin_service/admin_service.cpp?rev=1.6&amp;content-type=text/plain" target="cvs_checkout" onClick="window.open('/cvs/cvsweb.cgi/~checkout~/code/nelns/admin_service/admin_service.cpp?rev=1.6&amp;content-type=text/plain','cvs_checkout','resizeable,scrollbars');"><b>download</b></A>) - <a href="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cpp?annotate=1.6">annotate</a> - <A HREF="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cpp?r1=1.6">[select for diffs]</A>
+, <i>Thu Jun 7 16:19:05 2001 UTC</i> (13 months, 2 weeks ago) by <i>lecroart</i>
+<BR>Branch: <b><A HREF="admin_service.cpp?only_with_tag=MAIN">MAIN</A>
+</b>
+<BR>Changes since <b>1.5: +134 -48
+ lines</b><BR>Diff to previous <A HREF="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cpp.diff?r1=1.5&amp;r2=1.6">1.5</A>
+ to selected <A HREF="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cpp.diff?r1=1.14&amp;r2=1.6">1.14</A>
+<PRE>
+ADDED: commands system
+</PRE>
+<HR size=1 NOSHADE><P><a NAME="rev1.5"></a>
+ Revision <A HREF="admin_service.cpp?rev=1.5&amp;content-type=text/x-cvsweb-markup"><b>1.5</b></A> / (<A HREF="/cvs/cvsweb.cgi/~checkout~/code/nelns/admin_service/admin_service.cpp?rev=1.5&amp;content-type=text/plain" target="cvs_checkout" onClick="window.open('/cvs/cvsweb.cgi/~checkout~/code/nelns/admin_service/admin_service.cpp?rev=1.5&amp;content-type=text/plain','cvs_checkout','resizeable,scrollbars');"><b>download</b></A>) - <a href="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cpp?annotate=1.5">annotate</a> - <A HREF="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cpp?r1=1.5">[select for diffs]</A>
+, <i>Thu May 31 16:44:54 2001 UTC</i> (13 months, 3 weeks ago) by <i>lecroart</i>
+<BR>Branch: <b><A HREF="admin_service.cpp?only_with_tag=MAIN">MAIN</A>
+</b>
+<BR>Changes since <b>1.4: +156 -61
+ lines</b><BR>Diff to previous <A HREF="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cpp.diff?r1=1.4&amp;r2=1.5">1.4</A>
+ to selected <A HREF="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cpp.diff?r1=1.14&amp;r2=1.5">1.14</A>
+<PRE>
+ADDED: service alias naming
+</PRE>
+<HR size=1 NOSHADE><P><a NAME="rev1.4"></a>
+ Revision <A HREF="admin_service.cpp?rev=1.4&amp;content-type=text/x-cvsweb-markup"><b>1.4</b></A> / (<A HREF="/cvs/cvsweb.cgi/~checkout~/code/nelns/admin_service/admin_service.cpp?rev=1.4&amp;content-type=text/plain" target="cvs_checkout" onClick="window.open('/cvs/cvsweb.cgi/~checkout~/code/nelns/admin_service/admin_service.cpp?rev=1.4&amp;content-type=text/plain','cvs_checkout','resizeable,scrollbars');"><b>download</b></A>) - <a href="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cpp?annotate=1.4">annotate</a> - <A HREF="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cpp?r1=1.4">[select for diffs]</A>
+, <i>Fri May 18 16:51:33 2001 UTC</i> (14 months ago) by <i>lecroart</i>
+<BR>Branch: <b><A HREF="admin_service.cpp?only_with_tag=MAIN">MAIN</A>
+</b>
+<BR>Changes since <b>1.3: +405 -101
+ lines</b><BR>Diff to previous <A HREF="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cpp.diff?r1=1.3&amp;r2=1.4">1.3</A>
+ to selected <A HREF="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cpp.diff?r1=1.14&amp;r2=1.4">1.14</A>
+<PRE>
+ADDED: work in progress. added gtk
+</PRE>
+<HR size=1 NOSHADE><P><a NAME="rev1.3"></a>
+ Revision <A HREF="admin_service.cpp?rev=1.3&amp;content-type=text/x-cvsweb-markup"><b>1.3</b></A> / (<A HREF="/cvs/cvsweb.cgi/~checkout~/code/nelns/admin_service/admin_service.cpp?rev=1.3&amp;content-type=text/plain" target="cvs_checkout" onClick="window.open('/cvs/cvsweb.cgi/~checkout~/code/nelns/admin_service/admin_service.cpp?rev=1.3&amp;content-type=text/plain','cvs_checkout','resizeable,scrollbars');"><b>download</b></A>) - <a href="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cpp?annotate=1.3">annotate</a> - <A HREF="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cpp?r1=1.3">[select for diffs]</A>
+, <i>Thu May 10 08:20:06 2001 UTC</i> (14 months, 2 weeks ago) by <i>lecroart</i>
+<BR>Branch: <b><A HREF="admin_service.cpp?only_with_tag=MAIN">MAIN</A>
+</b>
+<BR>Changes since <b>1.2: +233 -34
+ lines</b><BR>Diff to previous <A HREF="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cpp.diff?r1=1.2&amp;r2=1.3">1.2</A>
+ to selected <A HREF="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cpp.diff?r1=1.14&amp;r2=1.3">1.14</A>
+<PRE>
+ADDED: changed the data structures
+</PRE>
+<HR size=1 NOSHADE><P><a NAME="rev1.2"></a>
+ Revision <A HREF="admin_service.cpp?rev=1.2&amp;content-type=text/x-cvsweb-markup"><b>1.2</b></A> / (<A HREF="/cvs/cvsweb.cgi/~checkout~/code/nelns/admin_service/admin_service.cpp?rev=1.2&amp;content-type=text/plain" target="cvs_checkout" onClick="window.open('/cvs/cvsweb.cgi/~checkout~/code/nelns/admin_service/admin_service.cpp?rev=1.2&amp;content-type=text/plain','cvs_checkout','resizeable,scrollbars');"><b>download</b></A>) - <a href="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cpp?annotate=1.2">annotate</a> - <A HREF="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cpp?r1=1.2">[select for diffs]</A>
+, <i>Thu May 3 13:19:13 2001 UTC</i> (14 months, 3 weeks ago) by <i>lecroart</i>
+<BR>Branch: <b><A HREF="admin_service.cpp?only_with_tag=MAIN">MAIN</A>
+</b>
+<BR>Changes since <b>1.1: +2 -6
+ lines</b><BR>Diff to previous <A HREF="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cpp.diff?r1=1.1&amp;r2=1.2">1.1</A>
+ to selected <A HREF="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cpp.diff?r1=1.14&amp;r2=1.2">1.14</A>
+<PRE>
+BUGFIX: now compile on linux
+</PRE>
+<HR size=1 NOSHADE><P><a NAME="rev1.1"></a>
+ Revision <A HREF="admin_service.cpp?rev=1.1&amp;content-type=text/x-cvsweb-markup"><b>1.1</b></A> / (<A HREF="/cvs/cvsweb.cgi/~checkout~/code/nelns/admin_service/admin_service.cpp?rev=1.1&amp;content-type=text/plain" target="cvs_checkout" onClick="window.open('/cvs/cvsweb.cgi/~checkout~/code/nelns/admin_service/admin_service.cpp?rev=1.1&amp;content-type=text/plain','cvs_checkout','resizeable,scrollbars');"><b>download</b></A>) - <a href="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cpp?annotate=1.1">annotate</a> - <A HREF="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cpp?r1=1.1">[select for diffs]</A>
+, <i>Wed May 2 12:36:39 2001 UTC</i> (14 months, 3 weeks ago) by <i>lecroart</i>
+<BR>Branch: <b><A HREF="admin_service.cpp?only_with_tag=MAIN">MAIN</A>
+</b>
+<BR>Diff to selected <A HREF="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cpp.diff?r1=1.14&amp;r2=1.1">1.14</A>
+<PRE>
+ADD: new version of the network system (in NeL and NeLns)
+</PRE>
+
+<!-- block -->
+<TABLE bgcolor="#dddddd" CELLSPACING=0 CELLPADDING=0 BORDER=0 width=100%><tr><td width=1% valign=middle><img width=6 height=14 hspace=2 vspace=2 src="http://www.nevrax.org/inc/img/reddots.gif"></TD>
+ <TD><B>Request Diffs</B></TD>
+ <TD ALIGN=RIGHT> </td>
+</tr></table>
+<P>
+<P>
+<FORM METHOD="GET" ACTION="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cpp.diff" NAME="diff_select">
+Diffs between
+<SELECT NAME="r1">
+<OPTION VALUE="text" SELECTED>Use Text Field
+<OPTION VALUE="1:MAIN">MAIN
+<OPTION VALUE="1.15:HEAD">HEAD
+</SELECT>
+<INPUT TYPE="TEXT" SIZE="12" NAME="tr1" VALUE="1.14" onChange='document.diff_select.r1.selectedIndex=0'>
+ and
+<SELECT NAME="r2">
+<OPTION VALUE="text" SELECTED>Use Text Field
+<OPTION VALUE="1:MAIN">MAIN
+<OPTION VALUE="1.15:HEAD">HEAD
+</SELECT>
+<INPUT TYPE="TEXT" SIZE="12" NAME="tr2" VALUE="1.15" onChange='docuement.diff_select.r2.selectedIndex=0'>
+<BR>Type of Diff should be a&nbsp;<SELECT NAME="f">
+<OPTION VALUE=h SELECTED>Colored Diff<OPTION VALUE=H>Long Colored Diff<OPTION VALUE=u>Unidiff<OPTION VALUE=c>Context Diff<OPTION VALUE=s>Side by Side</SELECT><INPUT TYPE=SUBMIT VALUE=" Get Diffs ">
+</FORM>
+
+<!-- block -->
+<TABLE bgcolor="#dddddd" CELLSPACING=0 CELLPADDING=0 BORDER=0 width=100%><tr><td width=1% valign=middle><img width=6 height=14 hspace=2 vspace=2 src="http://www.nevrax.org/inc/img/reddots.gif"></TD>
+ <TD><B>Select branch</B></TD>
+ <TD ALIGN=RIGHT> </td>
+</tr></table>
+<P>
+<P>
+<A name=branch></A>
+<FORM METHOD="GET" ACTION="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cpp">
+View only Branch:
+<SELECT NAME="only_with_tag" onchange="submit()">
+<OPTION VALUE="">Show all branches
+<OPTION>MAIN
+</SELECT>
+<INPUT TYPE=SUBMIT VALUE=" View Branch ">
+</FORM>
+<A name=logsort></A>
+<FORM METHOD="GET" ACTION="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cpp">
+Sort log by:
+<SELECT NAME="logsort" onchange="submit()">
+<OPTION VALUE=cvs>Not sorted<OPTION VALUE=date SELECTED>Commit date<OPTION VALUE=rev>Revision</SELECT>
+<INPUT TYPE=SUBMIT VALUE=" Sort ">
+</FORM>
+
+<!-- footer -->
+<BR><FONT Size=+5>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </FONT>
+</TD>
+<TD WIDTH=15><IMG SRC=http://www.nevrax.org/inc/img/pixel.gif WIDTH=15 HEIGHT=15 BORDER=0 ALT=""></TD>
+</TR>
+</TABLE>
+</BODY>
+</HTML></BODY></HTML>
diff --git a/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cpp?r1=1.15 b/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cpp?r1=1.15
new file mode 100644
index 00000000..a82ce1c0
--- /dev/null
+++ b/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cpp?r1=1.15
@@ -0,0 +1,287 @@
+<!doctype html public "-//W3C//DTD HTML 4.0 Transitional//EN" "http://www.w3.org/TR/REC-html40/loose.dtd">
+<HTML>
+<HEAD>
+ <TITLE>nevrax.org : cvs</TITLE>
+ <META name="keywords" content="freesoftware,nel,newt,snowballs,richard stallman,GNU,Multi-User Online World">
+
+ <LINK REL=stylesheet TYPE="text/css" HREF="http://www.nevrax.org/inc/css/nevrax.css">
+</HEAD>
+<BODY MARGINHEIGHT="0" MARGINWIDTH="0">
+
+<!-- uplinks -->
+<TABLE CELLSPACING=0 CELLPADDING=0 BORDER=0>
+ <TR>
+ <TD WIDTH=16><IMG SRC="http://www.nevrax.org/inc/img/pixel.gif" WIDTH="16" HEIGHT="16" BORDER=0 ALT=""></TD>
+ <TD WIDTH=140 BGCOLOR=#dddddd><IMG SRC="http://www.nevrax.org/inc/img/pixel.gif" WIDTH="140" HEIGHT="16" BORDER=0 ALT=""></TD>
+ <TD WIDTH=16><IMG SRC="http://www.nevrax.org/inc/img/pixel.gif" WIDTH="16" HEIGHT="16" BORDER=0 ALT=""></TD>
+ <TD><IMG width=6 height=14 SRC="http://www.nevrax.org/inc/img/reddots.gif" ALT="#" VSPACE=2 HSPACE=2 BORDER=0 ></TD><TD VALIGN=middle>&nbsp;<A CLASS=uplinks HREF=http://www.nevrax.org><b>Home</B></FONT></A>&nbsp;&nbsp;&nbsp;</TD>
+ <TD><IMG width=6 height=14 SRC="http://www.nevrax.org/inc/img/reddots.gif" ALT="#" VSPACE=2 HSPACE=2 BORDER=0 ></TD><TD VALIGN=middle>&nbsp;<A CLASS=uplinks HREF=http://www.nevrax.com><b>nevrax.com</B></FONT></A>&nbsp;&nbsp;&nbsp;</TD>
+ </TR>
+</TABLE>
+
+<!-- banner Nevrax -->
+<TABLE CELLSPACING=0 CELLPADDING=0 BORDER=0 WIDTH=100%>
+ <TR><TD BGCOLOR="#000000" BACKGROUND="http://www.nevrax.org/inc/img/black_banner.jpg"><A HREF="http://www.nevrax.org"><IMG SRC="http://www.nevrax.org/inc/img/nevrax.gif" WIDTH="170" HEIGHT="45" BORDER=0 ALT="Nevrax" ></A></TD></TR>
+</TABLE>
+
+<!-- main table -->
+<TABLE CELLSPACING=0 CELLPADDING=0 BORDER=0 height=100%>
+ <TR>
+ <TD WIDTH=16><IMG SRC="http://www.nevrax.org/inc/img/pixel.gif" WIDTH="16" HEIGHT="10" BORDER=0 ALT=""></TD>
+ <TD WIDTH=140 BGCOLOR=#dddddd VALIGN=TOP ALIGN=middle><IMG SRC="http://www.nevrax.org/inc/img/pixel.gif" WIDTH="140" HEIGHT="10" BORDER=0 ALT="">
+
+ <!------ Begin Box ------>
+ <TABLE BORDER=0 CELLSPACING=0 CELLPADDING=0 BGCOLOR=black><TR><TD><TABLE border=0 cellspacing=2 cellpadding=0 width=120><tr><TD ALIGN=middle bgcolor=black>
+ <FONT COLOR=white FACE="sans-serif"><B>Nevrax.org</B></FONT></TD></TR><tr><td colspan=2 bgcolor=#FFFFFF>
+ <TABLE cellspacing=0 cellpadding=1 border=0>
+ <tr><td ALIGN=middle><a class='linkbox' href="http://www.nevrax.org/news/" TITLE="Rubrique news"><img width=13 height=15 hspace=5 border=0 src=http://www.nevrax.org/inc/img/picto-news.gif ALT=#></A></td><td><a class='linkbox' href="http://www.nevrax.org/news/" TITLE="News">News</a></td></tr>
+ <tr><td ALIGN=middle><a class='linkbox' href="http://www.nevrax.org/mail/" TITLE="Rubrique mail"><img width=15 height=11 hspace=5 border=0 src=http://www.nevrax.org/inc/img/picto-mail.gif ALT=#></A></td><td><a class='linkbox' href="http://www.nevrax.org/mail/" TITLE="Mailing list archive">Mailing-list</a></td></tr>
+ <tr><td ALIGN=middle><a class='linkbox' href="http://www.nevrax.org/docs/" TITLE="Rubrique docs"><img width=14 height=16 hspace=5 border=0 src=http://www.nevrax.org/inc/img/picto-docs.gif ALT=#></A></td><td><a class='linkbox' href="http://www.nevrax.org/docs/" TITLE="Documentation">Documentation</a></td></tr>
+ <tr><td ALIGN=middle><a class='linkbox' href="http://www.nevrax.org/cvs/" TITLE="Rubrique cvs"><img width=13 height=17 hspace=5 border=0 src=http://www.nevrax.org/inc/img/picto-cvs.gif ALT=#></A></td><td><a class='linkbox' href="http://www.nevrax.org/cvs/" TITLE="CVS Web">CVS</a></td></tr>
+ <tr><td ALIGN=middle><a class='linkbox' href="http://www.nevrax.org/bugs/" TITLE="Rubrique bugs"><img width=20 height=16 hspace=5 border=0 src=http://www.nevrax.org/inc/img/picto-bugs.gif ALT=#></A></td><td><a class='linkbox' href="http://www.nevrax.org/bugs/" TITLE="Bugtracking">Bugs</a></td></tr>
+ <tr><td ALIGN=middle><a class='linkbox' href="http://www.nevrax.org/free/" TITLE="Rubrique license"><img width=18 height=12 hspace=5 border=0 src=http://www.nevrax.org/inc/img/picto-free.gif ALT=#></A></td><td><a class='linkbox' href="http://www.nevrax.org/free/" TITLE="Free Software">Free software</a></td></tr>
+ </TABLE>
+ </TD></TR></TABLE></TD></TR></TABLE>
+ <!------ End Box ------>
+
+ </TD>
+ <TD WIDTH=15><IMG SRC="http://www.nevrax.org/inc/img/pixel.gif" WIDTH="16" HEIGHT="16" BORDER=0 ALT=""></TD>
+ <TD ALIGN=left valign=top><IMG SRC="http://www.nevrax.org/inc/img/pixel.gif" WIDTH="140" HEIGHT="10" BORDER=0 ALT="">
+
+<!-- title -->
+<TABLE background="http://www.nevrax.org/inc/img/redline.gif" CELLSPACING=0 CELLPADDING=0 BORDER=0 width=100%><tr><td>
+<A HREF="http://www.nevrax.org/cvs/"><img src="http://www.nevrax.org/inc/img/t_cvs.gif" ALT="cvs" HEIGHT=20 BORDER=0></A>
+</td><td><IMG SRC="http://www.nevrax.org/inc/img/pixel.gif" WIDTH="1" HEIGHT="1" BORDER=0 ALT="">
+</td></tr></table>
+
+<!-- title -->
+<table width=100%><tr><td align=left><b> <a href="/cvs/cvsweb.cgi/">Nevrax</a> / <a href="/cvs/cvsweb.cgi/code/">code</a> / <a href="/cvs/cvsweb.cgi/code/nelns/">nelns</a> / <a href="/cvs/cvsweb.cgi/code/nelns/admin_service/">admin_service</a> / admin_service.cpp</b></td><td align=right><b></b></td></TR></TABLE>
+
+<!-- block -->
+<TABLE bgcolor="#dddddd" CELLSPACING=0 CELLPADDING=0 BORDER=0 width=100%><tr><td width=1% valign=middle><img width=6 height=14 hspace=2 vspace=2 src="http://www.nevrax.org/inc/img/reddots.gif"></TD>
+ <TD><B>admin_service.cpp</B></TD>
+ <TD ALIGN=RIGHT> </td>
+</tr></table>
+<P>
+<p>Default branch: MAIN<BR>
+<HR size=1 NOSHADE><P><a NAME="rev1.15"></a><a NAME="HEAD"></a><a NAME="MAIN"></a>
+ Revision <A HREF="admin_service.cpp?rev=1.15&amp;content-type=text/x-cvsweb-markup"><b>1.15</b></A> / (<A HREF="/cvs/cvsweb.cgi/~checkout~/code/nelns/admin_service/admin_service.cpp?rev=1.15&amp;content-type=text/plain" target="cvs_checkout" onClick="window.open('/cvs/cvsweb.cgi/~checkout~/code/nelns/admin_service/admin_service.cpp?rev=1.15&amp;content-type=text/plain','cvs_checkout','resizeable,scrollbars');"><b>download</b></A>) - <a href="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cpp?annotate=1.15">annotate</a> - <b>[selected]</b>, <i>Mon Mar 25 09:28:00 2002 UTC</i> (4 months ago) by <i>lecroart</i>
+<BR>Branch: <b><A HREF="admin_service.cpp?only_with_tag=MAIN">MAIN</A>
+</b>
+<BR>CVS Tags: <b><A HREF="admin_service.cpp?only_with_tag=HEAD">HEAD</A>
+</b><BR>Changes since <b>1.14: +8 -6
+ lines</b><BR>Diff to previous <A HREF="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cpp.diff?r1=1.14&amp;r2=1.15">1.14</A>
+<PRE>
+CHANGED: use new service functions
+</PRE>
+<HR size=1 NOSHADE><P><a NAME="rev1.14"></a>
+ Revision <A HREF="admin_service.cpp?rev=1.14&amp;content-type=text/x-cvsweb-markup"><b>1.14</b></A> / (<A HREF="/cvs/cvsweb.cgi/~checkout~/code/nelns/admin_service/admin_service.cpp?rev=1.14&amp;content-type=text/plain" target="cvs_checkout" onClick="window.open('/cvs/cvsweb.cgi/~checkout~/code/nelns/admin_service/admin_service.cpp?rev=1.14&amp;content-type=text/plain','cvs_checkout','resizeable,scrollbars');"><b>download</b></A>) - <a href="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cpp?annotate=1.14">annotate</a> - <A HREF="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cpp?r1=1.14">[select for diffs]</A>
+, <i>Tue Mar 19 17:42:48 2002 UTC</i> (4 months ago) by <i>valignat</i>
+<BR>Branch: <b><A HREF="admin_service.cpp?only_with_tag=MAIN">MAIN</A>
+</b>
+<BR>Changes since <b>1.13: +14 -2
+ lines</b><BR>Diff to previous <A HREF="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cpp.diff?r1=1.13&amp;r2=1.14">1.13</A>
+ to selected <A HREF="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cpp.diff?r1=1.15&amp;r2=1.14">1.15</A>
+<PRE>
+Applied patches which help to have a clen install on GNU/Linux and to make a Debian package (changes on the management of config and log files, bugfixes, etc ...)
+</PRE>
+<HR size=1 NOSHADE><P><a NAME="rev1.13"></a>
+ Revision <A HREF="admin_service.cpp?rev=1.13&amp;content-type=text/x-cvsweb-markup"><b>1.13</b></A> / (<A HREF="/cvs/cvsweb.cgi/~checkout~/code/nelns/admin_service/admin_service.cpp?rev=1.13&amp;content-type=text/plain" target="cvs_checkout" onClick="window.open('/cvs/cvsweb.cgi/~checkout~/code/nelns/admin_service/admin_service.cpp?rev=1.13&amp;content-type=text/plain','cvs_checkout','resizeable,scrollbars');"><b>download</b></A>) - <a href="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cpp?annotate=1.13">annotate</a> - <A HREF="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cpp?r1=1.13">[select for diffs]</A>
+, <i>Fri Mar 1 10:20:32 2002 UTC</i> (4 months, 3 weeks ago) by <i>lecroart</i>
+<BR>Branch: <b><A HREF="admin_service.cpp?only_with_tag=MAIN">MAIN</A>
+</b>
+<BR>Changes since <b>1.12: +8 -16
+ lines</b><BR>Diff to previous <A HREF="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cpp.diff?r1=1.12&amp;r2=1.13">1.12</A>
+ to selected <A HREF="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cpp.diff?r1=1.15&amp;r2=1.13">1.15</A>
+<PRE>
+ADDED: password per shard auth
+</PRE>
+<HR size=1 NOSHADE><P><a NAME="rev1.12"></a>
+ Revision <A HREF="admin_service.cpp?rev=1.12&amp;content-type=text/x-cvsweb-markup"><b>1.12</b></A> / (<A HREF="/cvs/cvsweb.cgi/~checkout~/code/nelns/admin_service/admin_service.cpp?rev=1.12&amp;content-type=text/plain" target="cvs_checkout" onClick="window.open('/cvs/cvsweb.cgi/~checkout~/code/nelns/admin_service/admin_service.cpp?rev=1.12&amp;content-type=text/plain','cvs_checkout','resizeable,scrollbars');"><b>download</b></A>) - <a href="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cpp?annotate=1.12">annotate</a> - <A HREF="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cpp?r1=1.12">[select for diffs]</A>
+, <i>Fri Feb 15 17:07:43 2002 UTC</i> (5 months, 1 week ago) by <i>lecroart</i>
+<BR>Branch: <b><A HREF="admin_service.cpp?only_with_tag=MAIN">MAIN</A>
+</b>
+<BR>Changes since <b>1.11: +50 -2
+ lines</b><BR>Diff to previous <A HREF="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cpp.diff?r1=1.11&amp;r2=1.12">1.11</A>
+ to selected <A HREF="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cpp.diff?r1=1.15&amp;r2=1.12">1.15</A>
+<PRE>
+ADDED: login password
+</PRE>
+<HR size=1 NOSHADE><P><a NAME="rev1.11"></a>
+ Revision <A HREF="admin_service.cpp?rev=1.11&amp;content-type=text/x-cvsweb-markup"><b>1.11</b></A> / (<A HREF="/cvs/cvsweb.cgi/~checkout~/code/nelns/admin_service/admin_service.cpp?rev=1.11&amp;content-type=text/plain" target="cvs_checkout" onClick="window.open('/cvs/cvsweb.cgi/~checkout~/code/nelns/admin_service/admin_service.cpp?rev=1.11&amp;content-type=text/plain','cvs_checkout','resizeable,scrollbars');"><b>download</b></A>) - <a href="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cpp?annotate=1.11">annotate</a> - <A HREF="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cpp?r1=1.11">[select for diffs]</A>
+, <i>Tue Jul 10 16:49:53 2001 UTC</i> (12 months, 2 weeks ago) by <i>lecroart</i>
+<BR>Branch: <b><A HREF="admin_service.cpp?only_with_tag=MAIN">MAIN</A>
+</b>
+<BR>Changes since <b>1.10: +18 -14
+ lines</b><BR>Diff to previous <A HREF="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cpp.diff?r1=1.10&amp;r2=1.11">1.10</A>
+ to selected <A HREF="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cpp.diff?r1=1.15&amp;r2=1.11">1.15</A>
+<PRE>
+BUGFIX: when a service isn't ready and already disconnected, it doesn't crash anymore
+</PRE>
+<HR size=1 NOSHADE><P><a NAME="rev1.10"></a>
+ Revision <A HREF="admin_service.cpp?rev=1.10&amp;content-type=text/x-cvsweb-markup"><b>1.10</b></A> / (<A HREF="/cvs/cvsweb.cgi/~checkout~/code/nelns/admin_service/admin_service.cpp?rev=1.10&amp;content-type=text/plain" target="cvs_checkout" onClick="window.open('/cvs/cvsweb.cgi/~checkout~/code/nelns/admin_service/admin_service.cpp?rev=1.10&amp;content-type=text/plain','cvs_checkout','resizeable,scrollbars');"><b>download</b></A>) - <a href="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cpp?annotate=1.10">annotate</a> - <A HREF="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cpp?r1=1.10">[select for diffs]</A>
+, <i>Thu Jul 5 08:26:07 2001 UTC</i> (12 months, 2 weeks ago) by <i>lecroart</i>
+<BR>Branch: <b><A HREF="admin_service.cpp?only_with_tag=MAIN">MAIN</A>
+</b>
+<BR>Changes since <b>1.9: +1 -6
+ lines</b><BR>Diff to previous <A HREF="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cpp.diff?r1=1.9&amp;r2=1.10">1.9</A>
+ to selected <A HREF="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cpp.diff?r1=1.15&amp;r2=1.10">1.15</A>
+<PRE>
+REMOVED: update()
+</PRE>
+<HR size=1 NOSHADE><P><a NAME="rev1.9"></a>
+ Revision <A HREF="admin_service.cpp?rev=1.9&amp;content-type=text/x-cvsweb-markup"><b>1.9</b></A> / (<A HREF="/cvs/cvsweb.cgi/~checkout~/code/nelns/admin_service/admin_service.cpp?rev=1.9&amp;content-type=text/plain" target="cvs_checkout" onClick="window.open('/cvs/cvsweb.cgi/~checkout~/code/nelns/admin_service/admin_service.cpp?rev=1.9&amp;content-type=text/plain','cvs_checkout','resizeable,scrollbars');"><b>download</b></A>) - <a href="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cpp?annotate=1.9">annotate</a> - <A HREF="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cpp?r1=1.9">[select for diffs]</A>
+, <i>Wed Jun 27 08:34:23 2001 UTC</i> (12 months, 4 weeks ago) by <i>lecroart</i>
+<BR>Branch: <b><A HREF="admin_service.cpp?only_with_tag=MAIN">MAIN</A>
+</b>
+<BR>Changes since <b>1.8: +14 -4
+ lines</b><BR>Diff to previous <A HREF="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cpp.diff?r1=1.8&amp;r2=1.9">1.8</A>
+ to selected <A HREF="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cpp.diff?r1=1.15&amp;r2=1.9">1.15</A>
+<PRE>
+ADDED: command redirection
+</PRE>
+<HR size=1 NOSHADE><P><a NAME="rev1.8"></a>
+ Revision <A HREF="admin_service.cpp?rev=1.8&amp;content-type=text/x-cvsweb-markup"><b>1.8</b></A> / (<A HREF="/cvs/cvsweb.cgi/~checkout~/code/nelns/admin_service/admin_service.cpp?rev=1.8&amp;content-type=text/plain" target="cvs_checkout" onClick="window.open('/cvs/cvsweb.cgi/~checkout~/code/nelns/admin_service/admin_service.cpp?rev=1.8&amp;content-type=text/plain','cvs_checkout','resizeable,scrollbars');"><b>download</b></A>) - <a href="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cpp?annotate=1.8">annotate</a> - <A HREF="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cpp?r1=1.8">[select for diffs]</A>
+, <i>Mon Jun 18 14:54:06 2001 UTC</i> (13 months ago) by <i>lecroart</i>
+<BR>Branch: <b><A HREF="admin_service.cpp?only_with_tag=MAIN">MAIN</A>
+</b>
+<BR>Changes since <b>1.7: +2 -2
+ lines</b><BR>Diff to previous <A HREF="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cpp.diff?r1=1.7&amp;r2=1.8">1.7</A>
+ to selected <A HREF="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cpp.diff?r1=1.15&amp;r2=1.8">1.15</A>
+<PRE>
+BUGFIX: linux compilation
+</PRE>
+<HR size=1 NOSHADE><P><a NAME="rev1.7"></a>
+ Revision <A HREF="admin_service.cpp?rev=1.7&amp;content-type=text/x-cvsweb-markup"><b>1.7</b></A> / (<A HREF="/cvs/cvsweb.cgi/~checkout~/code/nelns/admin_service/admin_service.cpp?rev=1.7&amp;content-type=text/plain" target="cvs_checkout" onClick="window.open('/cvs/cvsweb.cgi/~checkout~/code/nelns/admin_service/admin_service.cpp?rev=1.7&amp;content-type=text/plain','cvs_checkout','resizeable,scrollbars');"><b>download</b></A>) - <a href="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cpp?annotate=1.7">annotate</a> - <A HREF="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cpp?r1=1.7">[select for diffs]</A>
+, <i>Mon Jun 18 14:43:31 2001 UTC</i> (13 months ago) by <i>lecroart</i>
+<BR>Branch: <b><A HREF="admin_service.cpp?only_with_tag=MAIN">MAIN</A>
+</b>
+<BR>Changes since <b>1.6: +10 -9
+ lines</b><BR>Diff to previous <A HREF="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cpp.diff?r1=1.6&amp;r2=1.7">1.6</A>
+ to selected <A HREF="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cpp.diff?r1=1.15&amp;r2=1.7">1.15</A>
+<PRE>
+BUGFIX: linux compilation
+</PRE>
+<HR size=1 NOSHADE><P><a NAME="rev1.6"></a>
+ Revision <A HREF="admin_service.cpp?rev=1.6&amp;content-type=text/x-cvsweb-markup"><b>1.6</b></A> / (<A HREF="/cvs/cvsweb.cgi/~checkout~/code/nelns/admin_service/admin_service.cpp?rev=1.6&amp;content-type=text/plain" target="cvs_checkout" onClick="window.open('/cvs/cvsweb.cgi/~checkout~/code/nelns/admin_service/admin_service.cpp?rev=1.6&amp;content-type=text/plain','cvs_checkout','resizeable,scrollbars');"><b>download</b></A>) - <a href="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cpp?annotate=1.6">annotate</a> - <A HREF="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cpp?r1=1.6">[select for diffs]</A>
+, <i>Thu Jun 7 16:19:05 2001 UTC</i> (13 months, 2 weeks ago) by <i>lecroart</i>
+<BR>Branch: <b><A HREF="admin_service.cpp?only_with_tag=MAIN">MAIN</A>
+</b>
+<BR>Changes since <b>1.5: +134 -48
+ lines</b><BR>Diff to previous <A HREF="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cpp.diff?r1=1.5&amp;r2=1.6">1.5</A>
+ to selected <A HREF="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cpp.diff?r1=1.15&amp;r2=1.6">1.15</A>
+<PRE>
+ADDED: commands system
+</PRE>
+<HR size=1 NOSHADE><P><a NAME="rev1.5"></a>
+ Revision <A HREF="admin_service.cpp?rev=1.5&amp;content-type=text/x-cvsweb-markup"><b>1.5</b></A> / (<A HREF="/cvs/cvsweb.cgi/~checkout~/code/nelns/admin_service/admin_service.cpp?rev=1.5&amp;content-type=text/plain" target="cvs_checkout" onClick="window.open('/cvs/cvsweb.cgi/~checkout~/code/nelns/admin_service/admin_service.cpp?rev=1.5&amp;content-type=text/plain','cvs_checkout','resizeable,scrollbars');"><b>download</b></A>) - <a href="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cpp?annotate=1.5">annotate</a> - <A HREF="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cpp?r1=1.5">[select for diffs]</A>
+, <i>Thu May 31 16:44:54 2001 UTC</i> (13 months, 3 weeks ago) by <i>lecroart</i>
+<BR>Branch: <b><A HREF="admin_service.cpp?only_with_tag=MAIN">MAIN</A>
+</b>
+<BR>Changes since <b>1.4: +156 -61
+ lines</b><BR>Diff to previous <A HREF="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cpp.diff?r1=1.4&amp;r2=1.5">1.4</A>
+ to selected <A HREF="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cpp.diff?r1=1.15&amp;r2=1.5">1.15</A>
+<PRE>
+ADDED: service alias naming
+</PRE>
+<HR size=1 NOSHADE><P><a NAME="rev1.4"></a>
+ Revision <A HREF="admin_service.cpp?rev=1.4&amp;content-type=text/x-cvsweb-markup"><b>1.4</b></A> / (<A HREF="/cvs/cvsweb.cgi/~checkout~/code/nelns/admin_service/admin_service.cpp?rev=1.4&amp;content-type=text/plain" target="cvs_checkout" onClick="window.open('/cvs/cvsweb.cgi/~checkout~/code/nelns/admin_service/admin_service.cpp?rev=1.4&amp;content-type=text/plain','cvs_checkout','resizeable,scrollbars');"><b>download</b></A>) - <a href="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cpp?annotate=1.4">annotate</a> - <A HREF="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cpp?r1=1.4">[select for diffs]</A>
+, <i>Fri May 18 16:51:33 2001 UTC</i> (14 months ago) by <i>lecroart</i>
+<BR>Branch: <b><A HREF="admin_service.cpp?only_with_tag=MAIN">MAIN</A>
+</b>
+<BR>Changes since <b>1.3: +405 -101
+ lines</b><BR>Diff to previous <A HREF="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cpp.diff?r1=1.3&amp;r2=1.4">1.3</A>
+ to selected <A HREF="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cpp.diff?r1=1.15&amp;r2=1.4">1.15</A>
+<PRE>
+ADDED: work in progress. added gtk
+</PRE>
+<HR size=1 NOSHADE><P><a NAME="rev1.3"></a>
+ Revision <A HREF="admin_service.cpp?rev=1.3&amp;content-type=text/x-cvsweb-markup"><b>1.3</b></A> / (<A HREF="/cvs/cvsweb.cgi/~checkout~/code/nelns/admin_service/admin_service.cpp?rev=1.3&amp;content-type=text/plain" target="cvs_checkout" onClick="window.open('/cvs/cvsweb.cgi/~checkout~/code/nelns/admin_service/admin_service.cpp?rev=1.3&amp;content-type=text/plain','cvs_checkout','resizeable,scrollbars');"><b>download</b></A>) - <a href="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cpp?annotate=1.3">annotate</a> - <A HREF="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cpp?r1=1.3">[select for diffs]</A>
+, <i>Thu May 10 08:20:06 2001 UTC</i> (14 months, 2 weeks ago) by <i>lecroart</i>
+<BR>Branch: <b><A HREF="admin_service.cpp?only_with_tag=MAIN">MAIN</A>
+</b>
+<BR>Changes since <b>1.2: +233 -34
+ lines</b><BR>Diff to previous <A HREF="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cpp.diff?r1=1.2&amp;r2=1.3">1.2</A>
+ to selected <A HREF="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cpp.diff?r1=1.15&amp;r2=1.3">1.15</A>
+<PRE>
+ADDED: changed the data structures
+</PRE>
+<HR size=1 NOSHADE><P><a NAME="rev1.2"></a>
+ Revision <A HREF="admin_service.cpp?rev=1.2&amp;content-type=text/x-cvsweb-markup"><b>1.2</b></A> / (<A HREF="/cvs/cvsweb.cgi/~checkout~/code/nelns/admin_service/admin_service.cpp?rev=1.2&amp;content-type=text/plain" target="cvs_checkout" onClick="window.open('/cvs/cvsweb.cgi/~checkout~/code/nelns/admin_service/admin_service.cpp?rev=1.2&amp;content-type=text/plain','cvs_checkout','resizeable,scrollbars');"><b>download</b></A>) - <a href="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cpp?annotate=1.2">annotate</a> - <A HREF="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cpp?r1=1.2">[select for diffs]</A>
+, <i>Thu May 3 13:19:13 2001 UTC</i> (14 months, 3 weeks ago) by <i>lecroart</i>
+<BR>Branch: <b><A HREF="admin_service.cpp?only_with_tag=MAIN">MAIN</A>
+</b>
+<BR>Changes since <b>1.1: +2 -6
+ lines</b><BR>Diff to previous <A HREF="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cpp.diff?r1=1.1&amp;r2=1.2">1.1</A>
+ to selected <A HREF="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cpp.diff?r1=1.15&amp;r2=1.2">1.15</A>
+<PRE>
+BUGFIX: now compile on linux
+</PRE>
+<HR size=1 NOSHADE><P><a NAME="rev1.1"></a>
+ Revision <A HREF="admin_service.cpp?rev=1.1&amp;content-type=text/x-cvsweb-markup"><b>1.1</b></A> / (<A HREF="/cvs/cvsweb.cgi/~checkout~/code/nelns/admin_service/admin_service.cpp?rev=1.1&amp;content-type=text/plain" target="cvs_checkout" onClick="window.open('/cvs/cvsweb.cgi/~checkout~/code/nelns/admin_service/admin_service.cpp?rev=1.1&amp;content-type=text/plain','cvs_checkout','resizeable,scrollbars');"><b>download</b></A>) - <a href="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cpp?annotate=1.1">annotate</a> - <A HREF="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cpp?r1=1.1">[select for diffs]</A>
+, <i>Wed May 2 12:36:39 2001 UTC</i> (14 months, 3 weeks ago) by <i>lecroart</i>
+<BR>Branch: <b><A HREF="admin_service.cpp?only_with_tag=MAIN">MAIN</A>
+</b>
+<BR>Diff to selected <A HREF="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cpp.diff?r1=1.15&amp;r2=1.1">1.15</A>
+<PRE>
+ADD: new version of the network system (in NeL and NeLns)
+</PRE>
+
+<!-- block -->
+<TABLE bgcolor="#dddddd" CELLSPACING=0 CELLPADDING=0 BORDER=0 width=100%><tr><td width=1% valign=middle><img width=6 height=14 hspace=2 vspace=2 src="http://www.nevrax.org/inc/img/reddots.gif"></TD>
+ <TD><B>Request Diffs</B></TD>
+ <TD ALIGN=RIGHT> </td>
+</tr></table>
+<P>
+<P>
+<FORM METHOD="GET" ACTION="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cpp.diff" NAME="diff_select">
+Diffs between
+<SELECT NAME="r1">
+<OPTION VALUE="text" SELECTED>Use Text Field
+<OPTION VALUE="1:MAIN">MAIN
+<OPTION VALUE="1.15:HEAD">HEAD
+</SELECT>
+<INPUT TYPE="TEXT" SIZE="12" NAME="tr1" VALUE="1.15" onChange='document.diff_select.r1.selectedIndex=0'>
+ and
+<SELECT NAME="r2">
+<OPTION VALUE="text" SELECTED>Use Text Field
+<OPTION VALUE="1:MAIN">MAIN
+<OPTION VALUE="1.15:HEAD">HEAD
+</SELECT>
+<INPUT TYPE="TEXT" SIZE="12" NAME="tr2" VALUE="1.15" onChange='docuement.diff_select.r2.selectedIndex=0'>
+<BR>Type of Diff should be a&nbsp;<SELECT NAME="f">
+<OPTION VALUE=h SELECTED>Colored Diff<OPTION VALUE=H>Long Colored Diff<OPTION VALUE=u>Unidiff<OPTION VALUE=c>Context Diff<OPTION VALUE=s>Side by Side</SELECT><INPUT TYPE=SUBMIT VALUE=" Get Diffs ">
+</FORM>
+
+<!-- block -->
+<TABLE bgcolor="#dddddd" CELLSPACING=0 CELLPADDING=0 BORDER=0 width=100%><tr><td width=1% valign=middle><img width=6 height=14 hspace=2 vspace=2 src="http://www.nevrax.org/inc/img/reddots.gif"></TD>
+ <TD><B>Select branch</B></TD>
+ <TD ALIGN=RIGHT> </td>
+</tr></table>
+<P>
+<P>
+<A name=branch></A>
+<FORM METHOD="GET" ACTION="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cpp">
+View only Branch:
+<SELECT NAME="only_with_tag" onchange="submit()">
+<OPTION VALUE="">Show all branches
+<OPTION>MAIN
+</SELECT>
+<INPUT TYPE=SUBMIT VALUE=" View Branch ">
+</FORM>
+<A name=logsort></A>
+<FORM METHOD="GET" ACTION="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cpp">
+Sort log by:
+<SELECT NAME="logsort" onchange="submit()">
+<OPTION VALUE=cvs>Not sorted<OPTION VALUE=date SELECTED>Commit date<OPTION VALUE=rev>Revision</SELECT>
+<INPUT TYPE=SUBMIT VALUE=" Sort ">
+</FORM>
+
+<!-- footer -->
+<BR><FONT Size=+5>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </FONT>
+</TD>
+<TD WIDTH=15><IMG SRC=http://www.nevrax.org/inc/img/pixel.gif WIDTH=15 HEIGHT=15 BORDER=0 ALT=""></TD>
+</TR>
+</TABLE>
+</BODY>
+</HTML></BODY></HTML>
diff --git a/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cpp?r1=1.2 b/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cpp?r1=1.2
new file mode 100644
index 00000000..621da126
--- /dev/null
+++ b/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cpp?r1=1.2
@@ -0,0 +1,286 @@
+<!doctype html public "-//W3C//DTD HTML 4.0 Transitional//EN" "http://www.w3.org/TR/REC-html40/loose.dtd">
+<HTML>
+<HEAD>
+ <TITLE>nevrax.org : cvs</TITLE>
+ <META name="keywords" content="freesoftware,nel,newt,snowballs,richard stallman,GNU,Multi-User Online World">
+
+ <LINK REL=stylesheet TYPE="text/css" HREF="http://www.nevrax.org/inc/css/nevrax.css">
+</HEAD>
+<BODY MARGINHEIGHT="0" MARGINWIDTH="0">
+
+<!-- uplinks -->
+<TABLE CELLSPACING=0 CELLPADDING=0 BORDER=0>
+ <TR>
+ <TD WIDTH=16><IMG SRC="http://www.nevrax.org/inc/img/pixel.gif" WIDTH="16" HEIGHT="16" BORDER=0 ALT=""></TD>
+ <TD WIDTH=140 BGCOLOR=#dddddd><IMG SRC="http://www.nevrax.org/inc/img/pixel.gif" WIDTH="140" HEIGHT="16" BORDER=0 ALT=""></TD>
+ <TD WIDTH=16><IMG SRC="http://www.nevrax.org/inc/img/pixel.gif" WIDTH="16" HEIGHT="16" BORDER=0 ALT=""></TD>
+ <TD><IMG width=6 height=14 SRC="http://www.nevrax.org/inc/img/reddots.gif" ALT="#" VSPACE=2 HSPACE=2 BORDER=0 ></TD><TD VALIGN=middle>&nbsp;<A CLASS=uplinks HREF=http://www.nevrax.org><b>Home</B></FONT></A>&nbsp;&nbsp;&nbsp;</TD>
+ <TD><IMG width=6 height=14 SRC="http://www.nevrax.org/inc/img/reddots.gif" ALT="#" VSPACE=2 HSPACE=2 BORDER=0 ></TD><TD VALIGN=middle>&nbsp;<A CLASS=uplinks HREF=http://www.nevrax.com><b>nevrax.com</B></FONT></A>&nbsp;&nbsp;&nbsp;</TD>
+ </TR>
+</TABLE>
+
+<!-- banner Nevrax -->
+<TABLE CELLSPACING=0 CELLPADDING=0 BORDER=0 WIDTH=100%>
+ <TR><TD BGCOLOR="#000000" BACKGROUND="http://www.nevrax.org/inc/img/black_banner.jpg"><A HREF="http://www.nevrax.org"><IMG SRC="http://www.nevrax.org/inc/img/nevrax.gif" WIDTH="170" HEIGHT="45" BORDER=0 ALT="Nevrax" ></A></TD></TR>
+</TABLE>
+
+<!-- main table -->
+<TABLE CELLSPACING=0 CELLPADDING=0 BORDER=0 height=100%>
+ <TR>
+ <TD WIDTH=16><IMG SRC="http://www.nevrax.org/inc/img/pixel.gif" WIDTH="16" HEIGHT="10" BORDER=0 ALT=""></TD>
+ <TD WIDTH=140 BGCOLOR=#dddddd VALIGN=TOP ALIGN=middle><IMG SRC="http://www.nevrax.org/inc/img/pixel.gif" WIDTH="140" HEIGHT="10" BORDER=0 ALT="">
+
+ <!------ Begin Box ------>
+ <TABLE BORDER=0 CELLSPACING=0 CELLPADDING=0 BGCOLOR=black><TR><TD><TABLE border=0 cellspacing=2 cellpadding=0 width=120><tr><TD ALIGN=middle bgcolor=black>
+ <FONT COLOR=white FACE="sans-serif"><B>Nevrax.org</B></FONT></TD></TR><tr><td colspan=2 bgcolor=#FFFFFF>
+ <TABLE cellspacing=0 cellpadding=1 border=0>
+ <tr><td ALIGN=middle><a class='linkbox' href="http://www.nevrax.org/news/" TITLE="Rubrique news"><img width=13 height=15 hspace=5 border=0 src=http://www.nevrax.org/inc/img/picto-news.gif ALT=#></A></td><td><a class='linkbox' href="http://www.nevrax.org/news/" TITLE="News">News</a></td></tr>
+ <tr><td ALIGN=middle><a class='linkbox' href="http://www.nevrax.org/mail/" TITLE="Rubrique mail"><img width=15 height=11 hspace=5 border=0 src=http://www.nevrax.org/inc/img/picto-mail.gif ALT=#></A></td><td><a class='linkbox' href="http://www.nevrax.org/mail/" TITLE="Mailing list archive">Mailing-list</a></td></tr>
+ <tr><td ALIGN=middle><a class='linkbox' href="http://www.nevrax.org/docs/" TITLE="Rubrique docs"><img width=14 height=16 hspace=5 border=0 src=http://www.nevrax.org/inc/img/picto-docs.gif ALT=#></A></td><td><a class='linkbox' href="http://www.nevrax.org/docs/" TITLE="Documentation">Documentation</a></td></tr>
+ <tr><td ALIGN=middle><a class='linkbox' href="http://www.nevrax.org/cvs/" TITLE="Rubrique cvs"><img width=13 height=17 hspace=5 border=0 src=http://www.nevrax.org/inc/img/picto-cvs.gif ALT=#></A></td><td><a class='linkbox' href="http://www.nevrax.org/cvs/" TITLE="CVS Web">CVS</a></td></tr>
+ <tr><td ALIGN=middle><a class='linkbox' href="http://www.nevrax.org/bugs/" TITLE="Rubrique bugs"><img width=20 height=16 hspace=5 border=0 src=http://www.nevrax.org/inc/img/picto-bugs.gif ALT=#></A></td><td><a class='linkbox' href="http://www.nevrax.org/bugs/" TITLE="Bugtracking">Bugs</a></td></tr>
+ <tr><td ALIGN=middle><a class='linkbox' href="http://www.nevrax.org/free/" TITLE="Rubrique license"><img width=18 height=12 hspace=5 border=0 src=http://www.nevrax.org/inc/img/picto-free.gif ALT=#></A></td><td><a class='linkbox' href="http://www.nevrax.org/free/" TITLE="Free Software">Free software</a></td></tr>
+ </TABLE>
+ </TD></TR></TABLE></TD></TR></TABLE>
+ <!------ End Box ------>
+
+ </TD>
+ <TD WIDTH=15><IMG SRC="http://www.nevrax.org/inc/img/pixel.gif" WIDTH="16" HEIGHT="16" BORDER=0 ALT=""></TD>
+ <TD ALIGN=left valign=top><IMG SRC="http://www.nevrax.org/inc/img/pixel.gif" WIDTH="140" HEIGHT="10" BORDER=0 ALT="">
+
+<!-- title -->
+<TABLE background="http://www.nevrax.org/inc/img/redline.gif" CELLSPACING=0 CELLPADDING=0 BORDER=0 width=100%><tr><td>
+<A HREF="http://www.nevrax.org/cvs/"><img src="http://www.nevrax.org/inc/img/t_cvs.gif" ALT="cvs" HEIGHT=20 BORDER=0></A>
+</td><td><IMG SRC="http://www.nevrax.org/inc/img/pixel.gif" WIDTH="1" HEIGHT="1" BORDER=0 ALT="">
+</td></tr></table>
+
+<!-- title -->
+<table width=100%><tr><td align=left><b> <a href="/cvs/cvsweb.cgi/">Nevrax</a> / <a href="/cvs/cvsweb.cgi/code/">code</a> / <a href="/cvs/cvsweb.cgi/code/nelns/">nelns</a> / <a href="/cvs/cvsweb.cgi/code/nelns/admin_service/">admin_service</a> / admin_service.cpp</b></td><td align=right><b></b></td></TR></TABLE>
+
+<!-- block -->
+<TABLE bgcolor="#dddddd" CELLSPACING=0 CELLPADDING=0 BORDER=0 width=100%><tr><td width=1% valign=middle><img width=6 height=14 hspace=2 vspace=2 src="http://www.nevrax.org/inc/img/reddots.gif"></TD>
+ <TD><B>admin_service.cpp</B></TD>
+ <TD ALIGN=RIGHT> </td>
+</tr></table>
+<P>
+<p>Default branch: MAIN<BR>
+<HR size=1 NOSHADE><P><a NAME="rev1.15"></a><a NAME="HEAD"></a><a NAME="MAIN"></a>
+ Revision <A HREF="admin_service.cpp?rev=1.15&amp;content-type=text/x-cvsweb-markup"><b>1.15</b></A> / (<A HREF="/cvs/cvsweb.cgi/~checkout~/code/nelns/admin_service/admin_service.cpp?rev=1.15&amp;content-type=text/plain" target="cvs_checkout" onClick="window.open('/cvs/cvsweb.cgi/~checkout~/code/nelns/admin_service/admin_service.cpp?rev=1.15&amp;content-type=text/plain','cvs_checkout','resizeable,scrollbars');"><b>download</b></A>) - <a href="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cpp?annotate=1.15">annotate</a> - <A HREF="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cpp?r1=1.15">[select for diffs]</A>
+, <i>Mon Mar 25 09:28:00 2002 UTC</i> (4 months ago) by <i>lecroart</i>
+<BR>Branch: <b><A HREF="admin_service.cpp?only_with_tag=MAIN">MAIN</A>
+</b>
+<BR>CVS Tags: <b><A HREF="admin_service.cpp?only_with_tag=HEAD">HEAD</A>
+</b><BR>Changes since <b>1.14: +8 -6
+ lines</b><BR>Diff to previous <A HREF="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cpp.diff?r1=1.14&amp;r2=1.15">1.14</A>
+ to selected <A HREF="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cpp.diff?r1=1.2&amp;r2=1.15">1.2</A>
+<PRE>
+CHANGED: use new service functions
+</PRE>
+<HR size=1 NOSHADE><P><a NAME="rev1.14"></a>
+ Revision <A HREF="admin_service.cpp?rev=1.14&amp;content-type=text/x-cvsweb-markup"><b>1.14</b></A> / (<A HREF="/cvs/cvsweb.cgi/~checkout~/code/nelns/admin_service/admin_service.cpp?rev=1.14&amp;content-type=text/plain" target="cvs_checkout" onClick="window.open('/cvs/cvsweb.cgi/~checkout~/code/nelns/admin_service/admin_service.cpp?rev=1.14&amp;content-type=text/plain','cvs_checkout','resizeable,scrollbars');"><b>download</b></A>) - <a href="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cpp?annotate=1.14">annotate</a> - <A HREF="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cpp?r1=1.14">[select for diffs]</A>
+, <i>Tue Mar 19 17:42:48 2002 UTC</i> (4 months ago) by <i>valignat</i>
+<BR>Branch: <b><A HREF="admin_service.cpp?only_with_tag=MAIN">MAIN</A>
+</b>
+<BR>Changes since <b>1.13: +14 -2
+ lines</b><BR>Diff to previous <A HREF="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cpp.diff?r1=1.13&amp;r2=1.14">1.13</A>
+ to selected <A HREF="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cpp.diff?r1=1.2&amp;r2=1.14">1.2</A>
+<PRE>
+Applied patches which help to have a clen install on GNU/Linux and to make a Debian package (changes on the management of config and log files, bugfixes, etc ...)
+</PRE>
+<HR size=1 NOSHADE><P><a NAME="rev1.13"></a>
+ Revision <A HREF="admin_service.cpp?rev=1.13&amp;content-type=text/x-cvsweb-markup"><b>1.13</b></A> / (<A HREF="/cvs/cvsweb.cgi/~checkout~/code/nelns/admin_service/admin_service.cpp?rev=1.13&amp;content-type=text/plain" target="cvs_checkout" onClick="window.open('/cvs/cvsweb.cgi/~checkout~/code/nelns/admin_service/admin_service.cpp?rev=1.13&amp;content-type=text/plain','cvs_checkout','resizeable,scrollbars');"><b>download</b></A>) - <a href="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cpp?annotate=1.13">annotate</a> - <A HREF="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cpp?r1=1.13">[select for diffs]</A>
+, <i>Fri Mar 1 10:20:32 2002 UTC</i> (4 months, 3 weeks ago) by <i>lecroart</i>
+<BR>Branch: <b><A HREF="admin_service.cpp?only_with_tag=MAIN">MAIN</A>
+</b>
+<BR>Changes since <b>1.12: +8 -16
+ lines</b><BR>Diff to previous <A HREF="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cpp.diff?r1=1.12&amp;r2=1.13">1.12</A>
+ to selected <A HREF="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cpp.diff?r1=1.2&amp;r2=1.13">1.2</A>
+<PRE>
+ADDED: password per shard auth
+</PRE>
+<HR size=1 NOSHADE><P><a NAME="rev1.12"></a>
+ Revision <A HREF="admin_service.cpp?rev=1.12&amp;content-type=text/x-cvsweb-markup"><b>1.12</b></A> / (<A HREF="/cvs/cvsweb.cgi/~checkout~/code/nelns/admin_service/admin_service.cpp?rev=1.12&amp;content-type=text/plain" target="cvs_checkout" onClick="window.open('/cvs/cvsweb.cgi/~checkout~/code/nelns/admin_service/admin_service.cpp?rev=1.12&amp;content-type=text/plain','cvs_checkout','resizeable,scrollbars');"><b>download</b></A>) - <a href="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cpp?annotate=1.12">annotate</a> - <A HREF="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cpp?r1=1.12">[select for diffs]</A>
+, <i>Fri Feb 15 17:07:43 2002 UTC</i> (5 months, 1 week ago) by <i>lecroart</i>
+<BR>Branch: <b><A HREF="admin_service.cpp?only_with_tag=MAIN">MAIN</A>
+</b>
+<BR>Changes since <b>1.11: +50 -2
+ lines</b><BR>Diff to previous <A HREF="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cpp.diff?r1=1.11&amp;r2=1.12">1.11</A>
+ to selected <A HREF="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cpp.diff?r1=1.2&amp;r2=1.12">1.2</A>
+<PRE>
+ADDED: login password
+</PRE>
+<HR size=1 NOSHADE><P><a NAME="rev1.11"></a>
+ Revision <A HREF="admin_service.cpp?rev=1.11&amp;content-type=text/x-cvsweb-markup"><b>1.11</b></A> / (<A HREF="/cvs/cvsweb.cgi/~checkout~/code/nelns/admin_service/admin_service.cpp?rev=1.11&amp;content-type=text/plain" target="cvs_checkout" onClick="window.open('/cvs/cvsweb.cgi/~checkout~/code/nelns/admin_service/admin_service.cpp?rev=1.11&amp;content-type=text/plain','cvs_checkout','resizeable,scrollbars');"><b>download</b></A>) - <a href="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cpp?annotate=1.11">annotate</a> - <A HREF="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cpp?r1=1.11">[select for diffs]</A>
+, <i>Tue Jul 10 16:49:53 2001 UTC</i> (12 months, 2 weeks ago) by <i>lecroart</i>
+<BR>Branch: <b><A HREF="admin_service.cpp?only_with_tag=MAIN">MAIN</A>
+</b>
+<BR>Changes since <b>1.10: +18 -14
+ lines</b><BR>Diff to previous <A HREF="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cpp.diff?r1=1.10&amp;r2=1.11">1.10</A>
+ to selected <A HREF="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cpp.diff?r1=1.2&amp;r2=1.11">1.2</A>
+<PRE>
+BUGFIX: when a service isn't ready and already disconnected, it doesn't crash anymore
+</PRE>
+<HR size=1 NOSHADE><P><a NAME="rev1.10"></a>
+ Revision <A HREF="admin_service.cpp?rev=1.10&amp;content-type=text/x-cvsweb-markup"><b>1.10</b></A> / (<A HREF="/cvs/cvsweb.cgi/~checkout~/code/nelns/admin_service/admin_service.cpp?rev=1.10&amp;content-type=text/plain" target="cvs_checkout" onClick="window.open('/cvs/cvsweb.cgi/~checkout~/code/nelns/admin_service/admin_service.cpp?rev=1.10&amp;content-type=text/plain','cvs_checkout','resizeable,scrollbars');"><b>download</b></A>) - <a href="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cpp?annotate=1.10">annotate</a> - <A HREF="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cpp?r1=1.10">[select for diffs]</A>
+, <i>Thu Jul 5 08:26:07 2001 UTC</i> (12 months, 2 weeks ago) by <i>lecroart</i>
+<BR>Branch: <b><A HREF="admin_service.cpp?only_with_tag=MAIN">MAIN</A>
+</b>
+<BR>Changes since <b>1.9: +1 -6
+ lines</b><BR>Diff to previous <A HREF="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cpp.diff?r1=1.9&amp;r2=1.10">1.9</A>
+ to selected <A HREF="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cpp.diff?r1=1.2&amp;r2=1.10">1.2</A>
+<PRE>
+REMOVED: update()
+</PRE>
+<HR size=1 NOSHADE><P><a NAME="rev1.9"></a>
+ Revision <A HREF="admin_service.cpp?rev=1.9&amp;content-type=text/x-cvsweb-markup"><b>1.9</b></A> / (<A HREF="/cvs/cvsweb.cgi/~checkout~/code/nelns/admin_service/admin_service.cpp?rev=1.9&amp;content-type=text/plain" target="cvs_checkout" onClick="window.open('/cvs/cvsweb.cgi/~checkout~/code/nelns/admin_service/admin_service.cpp?rev=1.9&amp;content-type=text/plain','cvs_checkout','resizeable,scrollbars');"><b>download</b></A>) - <a href="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cpp?annotate=1.9">annotate</a> - <A HREF="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cpp?r1=1.9">[select for diffs]</A>
+, <i>Wed Jun 27 08:34:23 2001 UTC</i> (12 months, 4 weeks ago) by <i>lecroart</i>
+<BR>Branch: <b><A HREF="admin_service.cpp?only_with_tag=MAIN">MAIN</A>
+</b>
+<BR>Changes since <b>1.8: +14 -4
+ lines</b><BR>Diff to previous <A HREF="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cpp.diff?r1=1.8&amp;r2=1.9">1.8</A>
+ to selected <A HREF="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cpp.diff?r1=1.2&amp;r2=1.9">1.2</A>
+<PRE>
+ADDED: command redirection
+</PRE>
+<HR size=1 NOSHADE><P><a NAME="rev1.8"></a>
+ Revision <A HREF="admin_service.cpp?rev=1.8&amp;content-type=text/x-cvsweb-markup"><b>1.8</b></A> / (<A HREF="/cvs/cvsweb.cgi/~checkout~/code/nelns/admin_service/admin_service.cpp?rev=1.8&amp;content-type=text/plain" target="cvs_checkout" onClick="window.open('/cvs/cvsweb.cgi/~checkout~/code/nelns/admin_service/admin_service.cpp?rev=1.8&amp;content-type=text/plain','cvs_checkout','resizeable,scrollbars');"><b>download</b></A>) - <a href="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cpp?annotate=1.8">annotate</a> - <A HREF="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cpp?r1=1.8">[select for diffs]</A>
+, <i>Mon Jun 18 14:54:06 2001 UTC</i> (13 months ago) by <i>lecroart</i>
+<BR>Branch: <b><A HREF="admin_service.cpp?only_with_tag=MAIN">MAIN</A>
+</b>
+<BR>Changes since <b>1.7: +2 -2
+ lines</b><BR>Diff to previous <A HREF="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cpp.diff?r1=1.7&amp;r2=1.8">1.7</A>
+ to selected <A HREF="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cpp.diff?r1=1.2&amp;r2=1.8">1.2</A>
+<PRE>
+BUGFIX: linux compilation
+</PRE>
+<HR size=1 NOSHADE><P><a NAME="rev1.7"></a>
+ Revision <A HREF="admin_service.cpp?rev=1.7&amp;content-type=text/x-cvsweb-markup"><b>1.7</b></A> / (<A HREF="/cvs/cvsweb.cgi/~checkout~/code/nelns/admin_service/admin_service.cpp?rev=1.7&amp;content-type=text/plain" target="cvs_checkout" onClick="window.open('/cvs/cvsweb.cgi/~checkout~/code/nelns/admin_service/admin_service.cpp?rev=1.7&amp;content-type=text/plain','cvs_checkout','resizeable,scrollbars');"><b>download</b></A>) - <a href="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cpp?annotate=1.7">annotate</a> - <A HREF="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cpp?r1=1.7">[select for diffs]</A>
+, <i>Mon Jun 18 14:43:31 2001 UTC</i> (13 months ago) by <i>lecroart</i>
+<BR>Branch: <b><A HREF="admin_service.cpp?only_with_tag=MAIN">MAIN</A>
+</b>
+<BR>Changes since <b>1.6: +10 -9
+ lines</b><BR>Diff to previous <A HREF="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cpp.diff?r1=1.6&amp;r2=1.7">1.6</A>
+ to selected <A HREF="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cpp.diff?r1=1.2&amp;r2=1.7">1.2</A>
+<PRE>
+BUGFIX: linux compilation
+</PRE>
+<HR size=1 NOSHADE><P><a NAME="rev1.6"></a>
+ Revision <A HREF="admin_service.cpp?rev=1.6&amp;content-type=text/x-cvsweb-markup"><b>1.6</b></A> / (<A HREF="/cvs/cvsweb.cgi/~checkout~/code/nelns/admin_service/admin_service.cpp?rev=1.6&amp;content-type=text/plain" target="cvs_checkout" onClick="window.open('/cvs/cvsweb.cgi/~checkout~/code/nelns/admin_service/admin_service.cpp?rev=1.6&amp;content-type=text/plain','cvs_checkout','resizeable,scrollbars');"><b>download</b></A>) - <a href="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cpp?annotate=1.6">annotate</a> - <A HREF="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cpp?r1=1.6">[select for diffs]</A>
+, <i>Thu Jun 7 16:19:05 2001 UTC</i> (13 months, 2 weeks ago) by <i>lecroart</i>
+<BR>Branch: <b><A HREF="admin_service.cpp?only_with_tag=MAIN">MAIN</A>
+</b>
+<BR>Changes since <b>1.5: +134 -48
+ lines</b><BR>Diff to previous <A HREF="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cpp.diff?r1=1.5&amp;r2=1.6">1.5</A>
+ to selected <A HREF="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cpp.diff?r1=1.2&amp;r2=1.6">1.2</A>
+<PRE>
+ADDED: commands system
+</PRE>
+<HR size=1 NOSHADE><P><a NAME="rev1.5"></a>
+ Revision <A HREF="admin_service.cpp?rev=1.5&amp;content-type=text/x-cvsweb-markup"><b>1.5</b></A> / (<A HREF="/cvs/cvsweb.cgi/~checkout~/code/nelns/admin_service/admin_service.cpp?rev=1.5&amp;content-type=text/plain" target="cvs_checkout" onClick="window.open('/cvs/cvsweb.cgi/~checkout~/code/nelns/admin_service/admin_service.cpp?rev=1.5&amp;content-type=text/plain','cvs_checkout','resizeable,scrollbars');"><b>download</b></A>) - <a href="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cpp?annotate=1.5">annotate</a> - <A HREF="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cpp?r1=1.5">[select for diffs]</A>
+, <i>Thu May 31 16:44:54 2001 UTC</i> (13 months, 3 weeks ago) by <i>lecroart</i>
+<BR>Branch: <b><A HREF="admin_service.cpp?only_with_tag=MAIN">MAIN</A>
+</b>
+<BR>Changes since <b>1.4: +156 -61
+ lines</b><BR>Diff to previous <A HREF="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cpp.diff?r1=1.4&amp;r2=1.5">1.4</A>
+ to selected <A HREF="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cpp.diff?r1=1.2&amp;r2=1.5">1.2</A>
+<PRE>
+ADDED: service alias naming
+</PRE>
+<HR size=1 NOSHADE><P><a NAME="rev1.4"></a>
+ Revision <A HREF="admin_service.cpp?rev=1.4&amp;content-type=text/x-cvsweb-markup"><b>1.4</b></A> / (<A HREF="/cvs/cvsweb.cgi/~checkout~/code/nelns/admin_service/admin_service.cpp?rev=1.4&amp;content-type=text/plain" target="cvs_checkout" onClick="window.open('/cvs/cvsweb.cgi/~checkout~/code/nelns/admin_service/admin_service.cpp?rev=1.4&amp;content-type=text/plain','cvs_checkout','resizeable,scrollbars');"><b>download</b></A>) - <a href="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cpp?annotate=1.4">annotate</a> - <A HREF="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cpp?r1=1.4">[select for diffs]</A>
+, <i>Fri May 18 16:51:33 2001 UTC</i> (14 months ago) by <i>lecroart</i>
+<BR>Branch: <b><A HREF="admin_service.cpp?only_with_tag=MAIN">MAIN</A>
+</b>
+<BR>Changes since <b>1.3: +405 -101
+ lines</b><BR>Diff to previous <A HREF="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cpp.diff?r1=1.3&amp;r2=1.4">1.3</A>
+ to selected <A HREF="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cpp.diff?r1=1.2&amp;r2=1.4">1.2</A>
+<PRE>
+ADDED: work in progress. added gtk
+</PRE>
+<HR size=1 NOSHADE><P><a NAME="rev1.3"></a>
+ Revision <A HREF="admin_service.cpp?rev=1.3&amp;content-type=text/x-cvsweb-markup"><b>1.3</b></A> / (<A HREF="/cvs/cvsweb.cgi/~checkout~/code/nelns/admin_service/admin_service.cpp?rev=1.3&amp;content-type=text/plain" target="cvs_checkout" onClick="window.open('/cvs/cvsweb.cgi/~checkout~/code/nelns/admin_service/admin_service.cpp?rev=1.3&amp;content-type=text/plain','cvs_checkout','resizeable,scrollbars');"><b>download</b></A>) - <a href="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cpp?annotate=1.3">annotate</a> - <A HREF="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cpp?r1=1.3">[select for diffs]</A>
+, <i>Thu May 10 08:20:06 2001 UTC</i> (14 months, 2 weeks ago) by <i>lecroart</i>
+<BR>Branch: <b><A HREF="admin_service.cpp?only_with_tag=MAIN">MAIN</A>
+</b>
+<BR>Changes since <b>1.2: +233 -34
+ lines</b><BR>Diff to previous <A HREF="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cpp.diff?r1=1.2&amp;r2=1.3">1.2</A>
+<PRE>
+ADDED: changed the data structures
+</PRE>
+<HR size=1 NOSHADE><P><a NAME="rev1.2"></a>
+ Revision <A HREF="admin_service.cpp?rev=1.2&amp;content-type=text/x-cvsweb-markup"><b>1.2</b></A> / (<A HREF="/cvs/cvsweb.cgi/~checkout~/code/nelns/admin_service/admin_service.cpp?rev=1.2&amp;content-type=text/plain" target="cvs_checkout" onClick="window.open('/cvs/cvsweb.cgi/~checkout~/code/nelns/admin_service/admin_service.cpp?rev=1.2&amp;content-type=text/plain','cvs_checkout','resizeable,scrollbars');"><b>download</b></A>) - <a href="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cpp?annotate=1.2">annotate</a> - <b>[selected]</b>, <i>Thu May 3 13:19:13 2001 UTC</i> (14 months, 3 weeks ago) by <i>lecroart</i>
+<BR>Branch: <b><A HREF="admin_service.cpp?only_with_tag=MAIN">MAIN</A>
+</b>
+<BR>Changes since <b>1.1: +2 -6
+ lines</b><BR>Diff to previous <A HREF="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cpp.diff?r1=1.1&amp;r2=1.2">1.1</A>
+<PRE>
+BUGFIX: now compile on linux
+</PRE>
+<HR size=1 NOSHADE><P><a NAME="rev1.1"></a>
+ Revision <A HREF="admin_service.cpp?rev=1.1&amp;content-type=text/x-cvsweb-markup"><b>1.1</b></A> / (<A HREF="/cvs/cvsweb.cgi/~checkout~/code/nelns/admin_service/admin_service.cpp?rev=1.1&amp;content-type=text/plain" target="cvs_checkout" onClick="window.open('/cvs/cvsweb.cgi/~checkout~/code/nelns/admin_service/admin_service.cpp?rev=1.1&amp;content-type=text/plain','cvs_checkout','resizeable,scrollbars');"><b>download</b></A>) - <a href="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cpp?annotate=1.1">annotate</a> - <A HREF="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cpp?r1=1.1">[select for diffs]</A>
+, <i>Wed May 2 12:36:39 2001 UTC</i> (14 months, 3 weeks ago) by <i>lecroart</i>
+<BR>Branch: <b><A HREF="admin_service.cpp?only_with_tag=MAIN">MAIN</A>
+</b>
+<BR>Diff to selected <A HREF="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cpp.diff?r1=1.2&amp;r2=1.1">1.2</A>
+<PRE>
+ADD: new version of the network system (in NeL and NeLns)
+</PRE>
+
+<!-- block -->
+<TABLE bgcolor="#dddddd" CELLSPACING=0 CELLPADDING=0 BORDER=0 width=100%><tr><td width=1% valign=middle><img width=6 height=14 hspace=2 vspace=2 src="http://www.nevrax.org/inc/img/reddots.gif"></TD>
+ <TD><B>Request Diffs</B></TD>
+ <TD ALIGN=RIGHT> </td>
+</tr></table>
+<P>
+<P>
+<FORM METHOD="GET" ACTION="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cpp.diff" NAME="diff_select">
+Diffs between
+<SELECT NAME="r1">
+<OPTION VALUE="text" SELECTED>Use Text Field
+<OPTION VALUE="1:MAIN">MAIN
+<OPTION VALUE="1.15:HEAD">HEAD
+</SELECT>
+<INPUT TYPE="TEXT" SIZE="12" NAME="tr1" VALUE="1.2" onChange='document.diff_select.r1.selectedIndex=0'>
+ and
+<SELECT NAME="r2">
+<OPTION VALUE="text" SELECTED>Use Text Field
+<OPTION VALUE="1:MAIN">MAIN
+<OPTION VALUE="1.15:HEAD">HEAD
+</SELECT>
+<INPUT TYPE="TEXT" SIZE="12" NAME="tr2" VALUE="1.15" onChange='docuement.diff_select.r2.selectedIndex=0'>
+<BR>Type of Diff should be a&nbsp;<SELECT NAME="f">
+<OPTION VALUE=h SELECTED>Colored Diff<OPTION VALUE=H>Long Colored Diff<OPTION VALUE=u>Unidiff<OPTION VALUE=c>Context Diff<OPTION VALUE=s>Side by Side</SELECT><INPUT TYPE=SUBMIT VALUE=" Get Diffs ">
+</FORM>
+
+<!-- block -->
+<TABLE bgcolor="#dddddd" CELLSPACING=0 CELLPADDING=0 BORDER=0 width=100%><tr><td width=1% valign=middle><img width=6 height=14 hspace=2 vspace=2 src="http://www.nevrax.org/inc/img/reddots.gif"></TD>
+ <TD><B>Select branch</B></TD>
+ <TD ALIGN=RIGHT> </td>
+</tr></table>
+<P>
+<P>
+<A name=branch></A>
+<FORM METHOD="GET" ACTION="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cpp">
+View only Branch:
+<SELECT NAME="only_with_tag" onchange="submit()">
+<OPTION VALUE="">Show all branches
+<OPTION>MAIN
+</SELECT>
+<INPUT TYPE=SUBMIT VALUE=" View Branch ">
+</FORM>
+<A name=logsort></A>
+<FORM METHOD="GET" ACTION="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cpp">
+Sort log by:
+<SELECT NAME="logsort" onchange="submit()">
+<OPTION VALUE=cvs>Not sorted<OPTION VALUE=date SELECTED>Commit date<OPTION VALUE=rev>Revision</SELECT>
+<INPUT TYPE=SUBMIT VALUE=" Sort ">
+</FORM>
+
+<!-- footer -->
+<BR><FONT Size=+5>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </FONT>
+</TD>
+<TD WIDTH=15><IMG SRC=http://www.nevrax.org/inc/img/pixel.gif WIDTH=15 HEIGHT=15 BORDER=0 ALT=""></TD>
+</TR>
+</TABLE>
+</BODY>
+</HTML></BODY></HTML>
diff --git a/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cpp?r1=1.4 b/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cpp?r1=1.4
new file mode 100644
index 00000000..0ee6f961
--- /dev/null
+++ b/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cpp?r1=1.4
@@ -0,0 +1,286 @@
+<!doctype html public "-//W3C//DTD HTML 4.0 Transitional//EN" "http://www.w3.org/TR/REC-html40/loose.dtd">
+<HTML>
+<HEAD>
+ <TITLE>nevrax.org : cvs</TITLE>
+ <META name="keywords" content="freesoftware,nel,newt,snowballs,richard stallman,GNU,Multi-User Online World">
+
+ <LINK REL=stylesheet TYPE="text/css" HREF="http://www.nevrax.org/inc/css/nevrax.css">
+</HEAD>
+<BODY MARGINHEIGHT="0" MARGINWIDTH="0">
+
+<!-- uplinks -->
+<TABLE CELLSPACING=0 CELLPADDING=0 BORDER=0>
+ <TR>
+ <TD WIDTH=16><IMG SRC="http://www.nevrax.org/inc/img/pixel.gif" WIDTH="16" HEIGHT="16" BORDER=0 ALT=""></TD>
+ <TD WIDTH=140 BGCOLOR=#dddddd><IMG SRC="http://www.nevrax.org/inc/img/pixel.gif" WIDTH="140" HEIGHT="16" BORDER=0 ALT=""></TD>
+ <TD WIDTH=16><IMG SRC="http://www.nevrax.org/inc/img/pixel.gif" WIDTH="16" HEIGHT="16" BORDER=0 ALT=""></TD>
+ <TD><IMG width=6 height=14 SRC="http://www.nevrax.org/inc/img/reddots.gif" ALT="#" VSPACE=2 HSPACE=2 BORDER=0 ></TD><TD VALIGN=middle>&nbsp;<A CLASS=uplinks HREF=http://www.nevrax.org><b>Home</B></FONT></A>&nbsp;&nbsp;&nbsp;</TD>
+ <TD><IMG width=6 height=14 SRC="http://www.nevrax.org/inc/img/reddots.gif" ALT="#" VSPACE=2 HSPACE=2 BORDER=0 ></TD><TD VALIGN=middle>&nbsp;<A CLASS=uplinks HREF=http://www.nevrax.com><b>nevrax.com</B></FONT></A>&nbsp;&nbsp;&nbsp;</TD>
+ </TR>
+</TABLE>
+
+<!-- banner Nevrax -->
+<TABLE CELLSPACING=0 CELLPADDING=0 BORDER=0 WIDTH=100%>
+ <TR><TD BGCOLOR="#000000" BACKGROUND="http://www.nevrax.org/inc/img/black_banner.jpg"><A HREF="http://www.nevrax.org"><IMG SRC="http://www.nevrax.org/inc/img/nevrax.gif" WIDTH="170" HEIGHT="45" BORDER=0 ALT="Nevrax" ></A></TD></TR>
+</TABLE>
+
+<!-- main table -->
+<TABLE CELLSPACING=0 CELLPADDING=0 BORDER=0 height=100%>
+ <TR>
+ <TD WIDTH=16><IMG SRC="http://www.nevrax.org/inc/img/pixel.gif" WIDTH="16" HEIGHT="10" BORDER=0 ALT=""></TD>
+ <TD WIDTH=140 BGCOLOR=#dddddd VALIGN=TOP ALIGN=middle><IMG SRC="http://www.nevrax.org/inc/img/pixel.gif" WIDTH="140" HEIGHT="10" BORDER=0 ALT="">
+
+ <!------ Begin Box ------>
+ <TABLE BORDER=0 CELLSPACING=0 CELLPADDING=0 BGCOLOR=black><TR><TD><TABLE border=0 cellspacing=2 cellpadding=0 width=120><tr><TD ALIGN=middle bgcolor=black>
+ <FONT COLOR=white FACE="sans-serif"><B>Nevrax.org</B></FONT></TD></TR><tr><td colspan=2 bgcolor=#FFFFFF>
+ <TABLE cellspacing=0 cellpadding=1 border=0>
+ <tr><td ALIGN=middle><a class='linkbox' href="http://www.nevrax.org/news/" TITLE="Rubrique news"><img width=13 height=15 hspace=5 border=0 src=http://www.nevrax.org/inc/img/picto-news.gif ALT=#></A></td><td><a class='linkbox' href="http://www.nevrax.org/news/" TITLE="News">News</a></td></tr>
+ <tr><td ALIGN=middle><a class='linkbox' href="http://www.nevrax.org/mail/" TITLE="Rubrique mail"><img width=15 height=11 hspace=5 border=0 src=http://www.nevrax.org/inc/img/picto-mail.gif ALT=#></A></td><td><a class='linkbox' href="http://www.nevrax.org/mail/" TITLE="Mailing list archive">Mailing-list</a></td></tr>
+ <tr><td ALIGN=middle><a class='linkbox' href="http://www.nevrax.org/docs/" TITLE="Rubrique docs"><img width=14 height=16 hspace=5 border=0 src=http://www.nevrax.org/inc/img/picto-docs.gif ALT=#></A></td><td><a class='linkbox' href="http://www.nevrax.org/docs/" TITLE="Documentation">Documentation</a></td></tr>
+ <tr><td ALIGN=middle><a class='linkbox' href="http://www.nevrax.org/cvs/" TITLE="Rubrique cvs"><img width=13 height=17 hspace=5 border=0 src=http://www.nevrax.org/inc/img/picto-cvs.gif ALT=#></A></td><td><a class='linkbox' href="http://www.nevrax.org/cvs/" TITLE="CVS Web">CVS</a></td></tr>
+ <tr><td ALIGN=middle><a class='linkbox' href="http://www.nevrax.org/bugs/" TITLE="Rubrique bugs"><img width=20 height=16 hspace=5 border=0 src=http://www.nevrax.org/inc/img/picto-bugs.gif ALT=#></A></td><td><a class='linkbox' href="http://www.nevrax.org/bugs/" TITLE="Bugtracking">Bugs</a></td></tr>
+ <tr><td ALIGN=middle><a class='linkbox' href="http://www.nevrax.org/free/" TITLE="Rubrique license"><img width=18 height=12 hspace=5 border=0 src=http://www.nevrax.org/inc/img/picto-free.gif ALT=#></A></td><td><a class='linkbox' href="http://www.nevrax.org/free/" TITLE="Free Software">Free software</a></td></tr>
+ </TABLE>
+ </TD></TR></TABLE></TD></TR></TABLE>
+ <!------ End Box ------>
+
+ </TD>
+ <TD WIDTH=15><IMG SRC="http://www.nevrax.org/inc/img/pixel.gif" WIDTH="16" HEIGHT="16" BORDER=0 ALT=""></TD>
+ <TD ALIGN=left valign=top><IMG SRC="http://www.nevrax.org/inc/img/pixel.gif" WIDTH="140" HEIGHT="10" BORDER=0 ALT="">
+
+<!-- title -->
+<TABLE background="http://www.nevrax.org/inc/img/redline.gif" CELLSPACING=0 CELLPADDING=0 BORDER=0 width=100%><tr><td>
+<A HREF="http://www.nevrax.org/cvs/"><img src="http://www.nevrax.org/inc/img/t_cvs.gif" ALT="cvs" HEIGHT=20 BORDER=0></A>
+</td><td><IMG SRC="http://www.nevrax.org/inc/img/pixel.gif" WIDTH="1" HEIGHT="1" BORDER=0 ALT="">
+</td></tr></table>
+
+<!-- title -->
+<table width=100%><tr><td align=left><b> <a href="/cvs/cvsweb.cgi/">Nevrax</a> / <a href="/cvs/cvsweb.cgi/code/">code</a> / <a href="/cvs/cvsweb.cgi/code/nelns/">nelns</a> / <a href="/cvs/cvsweb.cgi/code/nelns/admin_service/">admin_service</a> / admin_service.cpp</b></td><td align=right><b></b></td></TR></TABLE>
+
+<!-- block -->
+<TABLE bgcolor="#dddddd" CELLSPACING=0 CELLPADDING=0 BORDER=0 width=100%><tr><td width=1% valign=middle><img width=6 height=14 hspace=2 vspace=2 src="http://www.nevrax.org/inc/img/reddots.gif"></TD>
+ <TD><B>admin_service.cpp</B></TD>
+ <TD ALIGN=RIGHT> </td>
+</tr></table>
+<P>
+<p>Default branch: MAIN<BR>
+<HR size=1 NOSHADE><P><a NAME="rev1.15"></a><a NAME="HEAD"></a><a NAME="MAIN"></a>
+ Revision <A HREF="admin_service.cpp?rev=1.15&amp;content-type=text/x-cvsweb-markup"><b>1.15</b></A> / (<A HREF="/cvs/cvsweb.cgi/~checkout~/code/nelns/admin_service/admin_service.cpp?rev=1.15&amp;content-type=text/plain" target="cvs_checkout" onClick="window.open('/cvs/cvsweb.cgi/~checkout~/code/nelns/admin_service/admin_service.cpp?rev=1.15&amp;content-type=text/plain','cvs_checkout','resizeable,scrollbars');"><b>download</b></A>) - <a href="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cpp?annotate=1.15">annotate</a> - <A HREF="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cpp?r1=1.15">[select for diffs]</A>
+, <i>Mon Mar 25 09:28:00 2002 UTC</i> (4 months ago) by <i>lecroart</i>
+<BR>Branch: <b><A HREF="admin_service.cpp?only_with_tag=MAIN">MAIN</A>
+</b>
+<BR>CVS Tags: <b><A HREF="admin_service.cpp?only_with_tag=HEAD">HEAD</A>
+</b><BR>Changes since <b>1.14: +8 -6
+ lines</b><BR>Diff to previous <A HREF="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cpp.diff?r1=1.14&amp;r2=1.15">1.14</A>
+ to selected <A HREF="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cpp.diff?r1=1.4&amp;r2=1.15">1.4</A>
+<PRE>
+CHANGED: use new service functions
+</PRE>
+<HR size=1 NOSHADE><P><a NAME="rev1.14"></a>
+ Revision <A HREF="admin_service.cpp?rev=1.14&amp;content-type=text/x-cvsweb-markup"><b>1.14</b></A> / (<A HREF="/cvs/cvsweb.cgi/~checkout~/code/nelns/admin_service/admin_service.cpp?rev=1.14&amp;content-type=text/plain" target="cvs_checkout" onClick="window.open('/cvs/cvsweb.cgi/~checkout~/code/nelns/admin_service/admin_service.cpp?rev=1.14&amp;content-type=text/plain','cvs_checkout','resizeable,scrollbars');"><b>download</b></A>) - <a href="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cpp?annotate=1.14">annotate</a> - <A HREF="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cpp?r1=1.14">[select for diffs]</A>
+, <i>Tue Mar 19 17:42:48 2002 UTC</i> (4 months ago) by <i>valignat</i>
+<BR>Branch: <b><A HREF="admin_service.cpp?only_with_tag=MAIN">MAIN</A>
+</b>
+<BR>Changes since <b>1.13: +14 -2
+ lines</b><BR>Diff to previous <A HREF="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cpp.diff?r1=1.13&amp;r2=1.14">1.13</A>
+ to selected <A HREF="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cpp.diff?r1=1.4&amp;r2=1.14">1.4</A>
+<PRE>
+Applied patches which help to have a clen install on GNU/Linux and to make a Debian package (changes on the management of config and log files, bugfixes, etc ...)
+</PRE>
+<HR size=1 NOSHADE><P><a NAME="rev1.13"></a>
+ Revision <A HREF="admin_service.cpp?rev=1.13&amp;content-type=text/x-cvsweb-markup"><b>1.13</b></A> / (<A HREF="/cvs/cvsweb.cgi/~checkout~/code/nelns/admin_service/admin_service.cpp?rev=1.13&amp;content-type=text/plain" target="cvs_checkout" onClick="window.open('/cvs/cvsweb.cgi/~checkout~/code/nelns/admin_service/admin_service.cpp?rev=1.13&amp;content-type=text/plain','cvs_checkout','resizeable,scrollbars');"><b>download</b></A>) - <a href="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cpp?annotate=1.13">annotate</a> - <A HREF="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cpp?r1=1.13">[select for diffs]</A>
+, <i>Fri Mar 1 10:20:32 2002 UTC</i> (4 months, 3 weeks ago) by <i>lecroart</i>
+<BR>Branch: <b><A HREF="admin_service.cpp?only_with_tag=MAIN">MAIN</A>
+</b>
+<BR>Changes since <b>1.12: +8 -16
+ lines</b><BR>Diff to previous <A HREF="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cpp.diff?r1=1.12&amp;r2=1.13">1.12</A>
+ to selected <A HREF="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cpp.diff?r1=1.4&amp;r2=1.13">1.4</A>
+<PRE>
+ADDED: password per shard auth
+</PRE>
+<HR size=1 NOSHADE><P><a NAME="rev1.12"></a>
+ Revision <A HREF="admin_service.cpp?rev=1.12&amp;content-type=text/x-cvsweb-markup"><b>1.12</b></A> / (<A HREF="/cvs/cvsweb.cgi/~checkout~/code/nelns/admin_service/admin_service.cpp?rev=1.12&amp;content-type=text/plain" target="cvs_checkout" onClick="window.open('/cvs/cvsweb.cgi/~checkout~/code/nelns/admin_service/admin_service.cpp?rev=1.12&amp;content-type=text/plain','cvs_checkout','resizeable,scrollbars');"><b>download</b></A>) - <a href="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cpp?annotate=1.12">annotate</a> - <A HREF="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cpp?r1=1.12">[select for diffs]</A>
+, <i>Fri Feb 15 17:07:43 2002 UTC</i> (5 months, 1 week ago) by <i>lecroart</i>
+<BR>Branch: <b><A HREF="admin_service.cpp?only_with_tag=MAIN">MAIN</A>
+</b>
+<BR>Changes since <b>1.11: +50 -2
+ lines</b><BR>Diff to previous <A HREF="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cpp.diff?r1=1.11&amp;r2=1.12">1.11</A>
+ to selected <A HREF="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cpp.diff?r1=1.4&amp;r2=1.12">1.4</A>
+<PRE>
+ADDED: login password
+</PRE>
+<HR size=1 NOSHADE><P><a NAME="rev1.11"></a>
+ Revision <A HREF="admin_service.cpp?rev=1.11&amp;content-type=text/x-cvsweb-markup"><b>1.11</b></A> / (<A HREF="/cvs/cvsweb.cgi/~checkout~/code/nelns/admin_service/admin_service.cpp?rev=1.11&amp;content-type=text/plain" target="cvs_checkout" onClick="window.open('/cvs/cvsweb.cgi/~checkout~/code/nelns/admin_service/admin_service.cpp?rev=1.11&amp;content-type=text/plain','cvs_checkout','resizeable,scrollbars');"><b>download</b></A>) - <a href="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cpp?annotate=1.11">annotate</a> - <A HREF="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cpp?r1=1.11">[select for diffs]</A>
+, <i>Tue Jul 10 16:49:53 2001 UTC</i> (12 months, 2 weeks ago) by <i>lecroart</i>
+<BR>Branch: <b><A HREF="admin_service.cpp?only_with_tag=MAIN">MAIN</A>
+</b>
+<BR>Changes since <b>1.10: +18 -14
+ lines</b><BR>Diff to previous <A HREF="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cpp.diff?r1=1.10&amp;r2=1.11">1.10</A>
+ to selected <A HREF="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cpp.diff?r1=1.4&amp;r2=1.11">1.4</A>
+<PRE>
+BUGFIX: when a service isn't ready and already disconnected, it doesn't crash anymore
+</PRE>
+<HR size=1 NOSHADE><P><a NAME="rev1.10"></a>
+ Revision <A HREF="admin_service.cpp?rev=1.10&amp;content-type=text/x-cvsweb-markup"><b>1.10</b></A> / (<A HREF="/cvs/cvsweb.cgi/~checkout~/code/nelns/admin_service/admin_service.cpp?rev=1.10&amp;content-type=text/plain" target="cvs_checkout" onClick="window.open('/cvs/cvsweb.cgi/~checkout~/code/nelns/admin_service/admin_service.cpp?rev=1.10&amp;content-type=text/plain','cvs_checkout','resizeable,scrollbars');"><b>download</b></A>) - <a href="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cpp?annotate=1.10">annotate</a> - <A HREF="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cpp?r1=1.10">[select for diffs]</A>
+, <i>Thu Jul 5 08:26:07 2001 UTC</i> (12 months, 2 weeks ago) by <i>lecroart</i>
+<BR>Branch: <b><A HREF="admin_service.cpp?only_with_tag=MAIN">MAIN</A>
+</b>
+<BR>Changes since <b>1.9: +1 -6
+ lines</b><BR>Diff to previous <A HREF="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cpp.diff?r1=1.9&amp;r2=1.10">1.9</A>
+ to selected <A HREF="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cpp.diff?r1=1.4&amp;r2=1.10">1.4</A>
+<PRE>
+REMOVED: update()
+</PRE>
+<HR size=1 NOSHADE><P><a NAME="rev1.9"></a>
+ Revision <A HREF="admin_service.cpp?rev=1.9&amp;content-type=text/x-cvsweb-markup"><b>1.9</b></A> / (<A HREF="/cvs/cvsweb.cgi/~checkout~/code/nelns/admin_service/admin_service.cpp?rev=1.9&amp;content-type=text/plain" target="cvs_checkout" onClick="window.open('/cvs/cvsweb.cgi/~checkout~/code/nelns/admin_service/admin_service.cpp?rev=1.9&amp;content-type=text/plain','cvs_checkout','resizeable,scrollbars');"><b>download</b></A>) - <a href="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cpp?annotate=1.9">annotate</a> - <A HREF="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cpp?r1=1.9">[select for diffs]</A>
+, <i>Wed Jun 27 08:34:23 2001 UTC</i> (12 months, 4 weeks ago) by <i>lecroart</i>
+<BR>Branch: <b><A HREF="admin_service.cpp?only_with_tag=MAIN">MAIN</A>
+</b>
+<BR>Changes since <b>1.8: +14 -4
+ lines</b><BR>Diff to previous <A HREF="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cpp.diff?r1=1.8&amp;r2=1.9">1.8</A>
+ to selected <A HREF="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cpp.diff?r1=1.4&amp;r2=1.9">1.4</A>
+<PRE>
+ADDED: command redirection
+</PRE>
+<HR size=1 NOSHADE><P><a NAME="rev1.8"></a>
+ Revision <A HREF="admin_service.cpp?rev=1.8&amp;content-type=text/x-cvsweb-markup"><b>1.8</b></A> / (<A HREF="/cvs/cvsweb.cgi/~checkout~/code/nelns/admin_service/admin_service.cpp?rev=1.8&amp;content-type=text/plain" target="cvs_checkout" onClick="window.open('/cvs/cvsweb.cgi/~checkout~/code/nelns/admin_service/admin_service.cpp?rev=1.8&amp;content-type=text/plain','cvs_checkout','resizeable,scrollbars');"><b>download</b></A>) - <a href="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cpp?annotate=1.8">annotate</a> - <A HREF="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cpp?r1=1.8">[select for diffs]</A>
+, <i>Mon Jun 18 14:54:06 2001 UTC</i> (13 months ago) by <i>lecroart</i>
+<BR>Branch: <b><A HREF="admin_service.cpp?only_with_tag=MAIN">MAIN</A>
+</b>
+<BR>Changes since <b>1.7: +2 -2
+ lines</b><BR>Diff to previous <A HREF="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cpp.diff?r1=1.7&amp;r2=1.8">1.7</A>
+ to selected <A HREF="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cpp.diff?r1=1.4&amp;r2=1.8">1.4</A>
+<PRE>
+BUGFIX: linux compilation
+</PRE>
+<HR size=1 NOSHADE><P><a NAME="rev1.7"></a>
+ Revision <A HREF="admin_service.cpp?rev=1.7&amp;content-type=text/x-cvsweb-markup"><b>1.7</b></A> / (<A HREF="/cvs/cvsweb.cgi/~checkout~/code/nelns/admin_service/admin_service.cpp?rev=1.7&amp;content-type=text/plain" target="cvs_checkout" onClick="window.open('/cvs/cvsweb.cgi/~checkout~/code/nelns/admin_service/admin_service.cpp?rev=1.7&amp;content-type=text/plain','cvs_checkout','resizeable,scrollbars');"><b>download</b></A>) - <a href="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cpp?annotate=1.7">annotate</a> - <A HREF="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cpp?r1=1.7">[select for diffs]</A>
+, <i>Mon Jun 18 14:43:31 2001 UTC</i> (13 months ago) by <i>lecroart</i>
+<BR>Branch: <b><A HREF="admin_service.cpp?only_with_tag=MAIN">MAIN</A>
+</b>
+<BR>Changes since <b>1.6: +10 -9
+ lines</b><BR>Diff to previous <A HREF="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cpp.diff?r1=1.6&amp;r2=1.7">1.6</A>
+ to selected <A HREF="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cpp.diff?r1=1.4&amp;r2=1.7">1.4</A>
+<PRE>
+BUGFIX: linux compilation
+</PRE>
+<HR size=1 NOSHADE><P><a NAME="rev1.6"></a>
+ Revision <A HREF="admin_service.cpp?rev=1.6&amp;content-type=text/x-cvsweb-markup"><b>1.6</b></A> / (<A HREF="/cvs/cvsweb.cgi/~checkout~/code/nelns/admin_service/admin_service.cpp?rev=1.6&amp;content-type=text/plain" target="cvs_checkout" onClick="window.open('/cvs/cvsweb.cgi/~checkout~/code/nelns/admin_service/admin_service.cpp?rev=1.6&amp;content-type=text/plain','cvs_checkout','resizeable,scrollbars');"><b>download</b></A>) - <a href="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cpp?annotate=1.6">annotate</a> - <A HREF="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cpp?r1=1.6">[select for diffs]</A>
+, <i>Thu Jun 7 16:19:05 2001 UTC</i> (13 months, 2 weeks ago) by <i>lecroart</i>
+<BR>Branch: <b><A HREF="admin_service.cpp?only_with_tag=MAIN">MAIN</A>
+</b>
+<BR>Changes since <b>1.5: +134 -48
+ lines</b><BR>Diff to previous <A HREF="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cpp.diff?r1=1.5&amp;r2=1.6">1.5</A>
+ to selected <A HREF="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cpp.diff?r1=1.4&amp;r2=1.6">1.4</A>
+<PRE>
+ADDED: commands system
+</PRE>
+<HR size=1 NOSHADE><P><a NAME="rev1.5"></a>
+ Revision <A HREF="admin_service.cpp?rev=1.5&amp;content-type=text/x-cvsweb-markup"><b>1.5</b></A> / (<A HREF="/cvs/cvsweb.cgi/~checkout~/code/nelns/admin_service/admin_service.cpp?rev=1.5&amp;content-type=text/plain" target="cvs_checkout" onClick="window.open('/cvs/cvsweb.cgi/~checkout~/code/nelns/admin_service/admin_service.cpp?rev=1.5&amp;content-type=text/plain','cvs_checkout','resizeable,scrollbars');"><b>download</b></A>) - <a href="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cpp?annotate=1.5">annotate</a> - <A HREF="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cpp?r1=1.5">[select for diffs]</A>
+, <i>Thu May 31 16:44:54 2001 UTC</i> (13 months, 3 weeks ago) by <i>lecroart</i>
+<BR>Branch: <b><A HREF="admin_service.cpp?only_with_tag=MAIN">MAIN</A>
+</b>
+<BR>Changes since <b>1.4: +156 -61
+ lines</b><BR>Diff to previous <A HREF="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cpp.diff?r1=1.4&amp;r2=1.5">1.4</A>
+<PRE>
+ADDED: service alias naming
+</PRE>
+<HR size=1 NOSHADE><P><a NAME="rev1.4"></a>
+ Revision <A HREF="admin_service.cpp?rev=1.4&amp;content-type=text/x-cvsweb-markup"><b>1.4</b></A> / (<A HREF="/cvs/cvsweb.cgi/~checkout~/code/nelns/admin_service/admin_service.cpp?rev=1.4&amp;content-type=text/plain" target="cvs_checkout" onClick="window.open('/cvs/cvsweb.cgi/~checkout~/code/nelns/admin_service/admin_service.cpp?rev=1.4&amp;content-type=text/plain','cvs_checkout','resizeable,scrollbars');"><b>download</b></A>) - <a href="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cpp?annotate=1.4">annotate</a> - <b>[selected]</b>, <i>Fri May 18 16:51:33 2001 UTC</i> (14 months ago) by <i>lecroart</i>
+<BR>Branch: <b><A HREF="admin_service.cpp?only_with_tag=MAIN">MAIN</A>
+</b>
+<BR>Changes since <b>1.3: +405 -101
+ lines</b><BR>Diff to previous <A HREF="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cpp.diff?r1=1.3&amp;r2=1.4">1.3</A>
+<PRE>
+ADDED: work in progress. added gtk
+</PRE>
+<HR size=1 NOSHADE><P><a NAME="rev1.3"></a>
+ Revision <A HREF="admin_service.cpp?rev=1.3&amp;content-type=text/x-cvsweb-markup"><b>1.3</b></A> / (<A HREF="/cvs/cvsweb.cgi/~checkout~/code/nelns/admin_service/admin_service.cpp?rev=1.3&amp;content-type=text/plain" target="cvs_checkout" onClick="window.open('/cvs/cvsweb.cgi/~checkout~/code/nelns/admin_service/admin_service.cpp?rev=1.3&amp;content-type=text/plain','cvs_checkout','resizeable,scrollbars');"><b>download</b></A>) - <a href="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cpp?annotate=1.3">annotate</a> - <A HREF="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cpp?r1=1.3">[select for diffs]</A>
+, <i>Thu May 10 08:20:06 2001 UTC</i> (14 months, 2 weeks ago) by <i>lecroart</i>
+<BR>Branch: <b><A HREF="admin_service.cpp?only_with_tag=MAIN">MAIN</A>
+</b>
+<BR>Changes since <b>1.2: +233 -34
+ lines</b><BR>Diff to previous <A HREF="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cpp.diff?r1=1.2&amp;r2=1.3">1.2</A>
+ to selected <A HREF="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cpp.diff?r1=1.4&amp;r2=1.3">1.4</A>
+<PRE>
+ADDED: changed the data structures
+</PRE>
+<HR size=1 NOSHADE><P><a NAME="rev1.2"></a>
+ Revision <A HREF="admin_service.cpp?rev=1.2&amp;content-type=text/x-cvsweb-markup"><b>1.2</b></A> / (<A HREF="/cvs/cvsweb.cgi/~checkout~/code/nelns/admin_service/admin_service.cpp?rev=1.2&amp;content-type=text/plain" target="cvs_checkout" onClick="window.open('/cvs/cvsweb.cgi/~checkout~/code/nelns/admin_service/admin_service.cpp?rev=1.2&amp;content-type=text/plain','cvs_checkout','resizeable,scrollbars');"><b>download</b></A>) - <a href="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cpp?annotate=1.2">annotate</a> - <A HREF="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cpp?r1=1.2">[select for diffs]</A>
+, <i>Thu May 3 13:19:13 2001 UTC</i> (14 months, 3 weeks ago) by <i>lecroart</i>
+<BR>Branch: <b><A HREF="admin_service.cpp?only_with_tag=MAIN">MAIN</A>
+</b>
+<BR>Changes since <b>1.1: +2 -6
+ lines</b><BR>Diff to previous <A HREF="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cpp.diff?r1=1.1&amp;r2=1.2">1.1</A>
+ to selected <A HREF="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cpp.diff?r1=1.4&amp;r2=1.2">1.4</A>
+<PRE>
+BUGFIX: now compile on linux
+</PRE>
+<HR size=1 NOSHADE><P><a NAME="rev1.1"></a>
+ Revision <A HREF="admin_service.cpp?rev=1.1&amp;content-type=text/x-cvsweb-markup"><b>1.1</b></A> / (<A HREF="/cvs/cvsweb.cgi/~checkout~/code/nelns/admin_service/admin_service.cpp?rev=1.1&amp;content-type=text/plain" target="cvs_checkout" onClick="window.open('/cvs/cvsweb.cgi/~checkout~/code/nelns/admin_service/admin_service.cpp?rev=1.1&amp;content-type=text/plain','cvs_checkout','resizeable,scrollbars');"><b>download</b></A>) - <a href="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cpp?annotate=1.1">annotate</a> - <A HREF="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cpp?r1=1.1">[select for diffs]</A>
+, <i>Wed May 2 12:36:39 2001 UTC</i> (14 months, 3 weeks ago) by <i>lecroart</i>
+<BR>Branch: <b><A HREF="admin_service.cpp?only_with_tag=MAIN">MAIN</A>
+</b>
+<BR>Diff to selected <A HREF="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cpp.diff?r1=1.4&amp;r2=1.1">1.4</A>
+<PRE>
+ADD: new version of the network system (in NeL and NeLns)
+</PRE>
+
+<!-- block -->
+<TABLE bgcolor="#dddddd" CELLSPACING=0 CELLPADDING=0 BORDER=0 width=100%><tr><td width=1% valign=middle><img width=6 height=14 hspace=2 vspace=2 src="http://www.nevrax.org/inc/img/reddots.gif"></TD>
+ <TD><B>Request Diffs</B></TD>
+ <TD ALIGN=RIGHT> </td>
+</tr></table>
+<P>
+<P>
+<FORM METHOD="GET" ACTION="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cpp.diff" NAME="diff_select">
+Diffs between
+<SELECT NAME="r1">
+<OPTION VALUE="text" SELECTED>Use Text Field
+<OPTION VALUE="1:MAIN">MAIN
+<OPTION VALUE="1.15:HEAD">HEAD
+</SELECT>
+<INPUT TYPE="TEXT" SIZE="12" NAME="tr1" VALUE="1.4" onChange='document.diff_select.r1.selectedIndex=0'>
+ and
+<SELECT NAME="r2">
+<OPTION VALUE="text" SELECTED>Use Text Field
+<OPTION VALUE="1:MAIN">MAIN
+<OPTION VALUE="1.15:HEAD">HEAD
+</SELECT>
+<INPUT TYPE="TEXT" SIZE="12" NAME="tr2" VALUE="1.15" onChange='docuement.diff_select.r2.selectedIndex=0'>
+<BR>Type of Diff should be a&nbsp;<SELECT NAME="f">
+<OPTION VALUE=h SELECTED>Colored Diff<OPTION VALUE=H>Long Colored Diff<OPTION VALUE=u>Unidiff<OPTION VALUE=c>Context Diff<OPTION VALUE=s>Side by Side</SELECT><INPUT TYPE=SUBMIT VALUE=" Get Diffs ">
+</FORM>
+
+<!-- block -->
+<TABLE bgcolor="#dddddd" CELLSPACING=0 CELLPADDING=0 BORDER=0 width=100%><tr><td width=1% valign=middle><img width=6 height=14 hspace=2 vspace=2 src="http://www.nevrax.org/inc/img/reddots.gif"></TD>
+ <TD><B>Select branch</B></TD>
+ <TD ALIGN=RIGHT> </td>
+</tr></table>
+<P>
+<P>
+<A name=branch></A>
+<FORM METHOD="GET" ACTION="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cpp">
+View only Branch:
+<SELECT NAME="only_with_tag" onchange="submit()">
+<OPTION VALUE="">Show all branches
+<OPTION>MAIN
+</SELECT>
+<INPUT TYPE=SUBMIT VALUE=" View Branch ">
+</FORM>
+<A name=logsort></A>
+<FORM METHOD="GET" ACTION="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cpp">
+Sort log by:
+<SELECT NAME="logsort" onchange="submit()">
+<OPTION VALUE=cvs>Not sorted<OPTION VALUE=date SELECTED>Commit date<OPTION VALUE=rev>Revision</SELECT>
+<INPUT TYPE=SUBMIT VALUE=" Sort ">
+</FORM>
+
+<!-- footer -->
+<BR><FONT Size=+5>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </FONT>
+</TD>
+<TD WIDTH=15><IMG SRC=http://www.nevrax.org/inc/img/pixel.gif WIDTH=15 HEIGHT=15 BORDER=0 ALT=""></TD>
+</TR>
+</TABLE>
+</BODY>
+</HTML></BODY></HTML>
diff --git a/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cpp?r1=1.6 b/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cpp?r1=1.6
new file mode 100644
index 00000000..334a4355
--- /dev/null
+++ b/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cpp?r1=1.6
@@ -0,0 +1,286 @@
+<!doctype html public "-//W3C//DTD HTML 4.0 Transitional//EN" "http://www.w3.org/TR/REC-html40/loose.dtd">
+<HTML>
+<HEAD>
+ <TITLE>nevrax.org : cvs</TITLE>
+ <META name="keywords" content="freesoftware,nel,newt,snowballs,richard stallman,GNU,Multi-User Online World">
+
+ <LINK REL=stylesheet TYPE="text/css" HREF="http://www.nevrax.org/inc/css/nevrax.css">
+</HEAD>
+<BODY MARGINHEIGHT="0" MARGINWIDTH="0">
+
+<!-- uplinks -->
+<TABLE CELLSPACING=0 CELLPADDING=0 BORDER=0>
+ <TR>
+ <TD WIDTH=16><IMG SRC="http://www.nevrax.org/inc/img/pixel.gif" WIDTH="16" HEIGHT="16" BORDER=0 ALT=""></TD>
+ <TD WIDTH=140 BGCOLOR=#dddddd><IMG SRC="http://www.nevrax.org/inc/img/pixel.gif" WIDTH="140" HEIGHT="16" BORDER=0 ALT=""></TD>
+ <TD WIDTH=16><IMG SRC="http://www.nevrax.org/inc/img/pixel.gif" WIDTH="16" HEIGHT="16" BORDER=0 ALT=""></TD>
+ <TD><IMG width=6 height=14 SRC="http://www.nevrax.org/inc/img/reddots.gif" ALT="#" VSPACE=2 HSPACE=2 BORDER=0 ></TD><TD VALIGN=middle>&nbsp;<A CLASS=uplinks HREF=http://www.nevrax.org><b>Home</B></FONT></A>&nbsp;&nbsp;&nbsp;</TD>
+ <TD><IMG width=6 height=14 SRC="http://www.nevrax.org/inc/img/reddots.gif" ALT="#" VSPACE=2 HSPACE=2 BORDER=0 ></TD><TD VALIGN=middle>&nbsp;<A CLASS=uplinks HREF=http://www.nevrax.com><b>nevrax.com</B></FONT></A>&nbsp;&nbsp;&nbsp;</TD>
+ </TR>
+</TABLE>
+
+<!-- banner Nevrax -->
+<TABLE CELLSPACING=0 CELLPADDING=0 BORDER=0 WIDTH=100%>
+ <TR><TD BGCOLOR="#000000" BACKGROUND="http://www.nevrax.org/inc/img/black_banner.jpg"><A HREF="http://www.nevrax.org"><IMG SRC="http://www.nevrax.org/inc/img/nevrax.gif" WIDTH="170" HEIGHT="45" BORDER=0 ALT="Nevrax" ></A></TD></TR>
+</TABLE>
+
+<!-- main table -->
+<TABLE CELLSPACING=0 CELLPADDING=0 BORDER=0 height=100%>
+ <TR>
+ <TD WIDTH=16><IMG SRC="http://www.nevrax.org/inc/img/pixel.gif" WIDTH="16" HEIGHT="10" BORDER=0 ALT=""></TD>
+ <TD WIDTH=140 BGCOLOR=#dddddd VALIGN=TOP ALIGN=middle><IMG SRC="http://www.nevrax.org/inc/img/pixel.gif" WIDTH="140" HEIGHT="10" BORDER=0 ALT="">
+
+ <!------ Begin Box ------>
+ <TABLE BORDER=0 CELLSPACING=0 CELLPADDING=0 BGCOLOR=black><TR><TD><TABLE border=0 cellspacing=2 cellpadding=0 width=120><tr><TD ALIGN=middle bgcolor=black>
+ <FONT COLOR=white FACE="sans-serif"><B>Nevrax.org</B></FONT></TD></TR><tr><td colspan=2 bgcolor=#FFFFFF>
+ <TABLE cellspacing=0 cellpadding=1 border=0>
+ <tr><td ALIGN=middle><a class='linkbox' href="http://www.nevrax.org/news/" TITLE="Rubrique news"><img width=13 height=15 hspace=5 border=0 src=http://www.nevrax.org/inc/img/picto-news.gif ALT=#></A></td><td><a class='linkbox' href="http://www.nevrax.org/news/" TITLE="News">News</a></td></tr>
+ <tr><td ALIGN=middle><a class='linkbox' href="http://www.nevrax.org/mail/" TITLE="Rubrique mail"><img width=15 height=11 hspace=5 border=0 src=http://www.nevrax.org/inc/img/picto-mail.gif ALT=#></A></td><td><a class='linkbox' href="http://www.nevrax.org/mail/" TITLE="Mailing list archive">Mailing-list</a></td></tr>
+ <tr><td ALIGN=middle><a class='linkbox' href="http://www.nevrax.org/docs/" TITLE="Rubrique docs"><img width=14 height=16 hspace=5 border=0 src=http://www.nevrax.org/inc/img/picto-docs.gif ALT=#></A></td><td><a class='linkbox' href="http://www.nevrax.org/docs/" TITLE="Documentation">Documentation</a></td></tr>
+ <tr><td ALIGN=middle><a class='linkbox' href="http://www.nevrax.org/cvs/" TITLE="Rubrique cvs"><img width=13 height=17 hspace=5 border=0 src=http://www.nevrax.org/inc/img/picto-cvs.gif ALT=#></A></td><td><a class='linkbox' href="http://www.nevrax.org/cvs/" TITLE="CVS Web">CVS</a></td></tr>
+ <tr><td ALIGN=middle><a class='linkbox' href="http://www.nevrax.org/bugs/" TITLE="Rubrique bugs"><img width=20 height=16 hspace=5 border=0 src=http://www.nevrax.org/inc/img/picto-bugs.gif ALT=#></A></td><td><a class='linkbox' href="http://www.nevrax.org/bugs/" TITLE="Bugtracking">Bugs</a></td></tr>
+ <tr><td ALIGN=middle><a class='linkbox' href="http://www.nevrax.org/free/" TITLE="Rubrique license"><img width=18 height=12 hspace=5 border=0 src=http://www.nevrax.org/inc/img/picto-free.gif ALT=#></A></td><td><a class='linkbox' href="http://www.nevrax.org/free/" TITLE="Free Software">Free software</a></td></tr>
+ </TABLE>
+ </TD></TR></TABLE></TD></TR></TABLE>
+ <!------ End Box ------>
+
+ </TD>
+ <TD WIDTH=15><IMG SRC="http://www.nevrax.org/inc/img/pixel.gif" WIDTH="16" HEIGHT="16" BORDER=0 ALT=""></TD>
+ <TD ALIGN=left valign=top><IMG SRC="http://www.nevrax.org/inc/img/pixel.gif" WIDTH="140" HEIGHT="10" BORDER=0 ALT="">
+
+<!-- title -->
+<TABLE background="http://www.nevrax.org/inc/img/redline.gif" CELLSPACING=0 CELLPADDING=0 BORDER=0 width=100%><tr><td>
+<A HREF="http://www.nevrax.org/cvs/"><img src="http://www.nevrax.org/inc/img/t_cvs.gif" ALT="cvs" HEIGHT=20 BORDER=0></A>
+</td><td><IMG SRC="http://www.nevrax.org/inc/img/pixel.gif" WIDTH="1" HEIGHT="1" BORDER=0 ALT="">
+</td></tr></table>
+
+<!-- title -->
+<table width=100%><tr><td align=left><b> <a href="/cvs/cvsweb.cgi/">Nevrax</a> / <a href="/cvs/cvsweb.cgi/code/">code</a> / <a href="/cvs/cvsweb.cgi/code/nelns/">nelns</a> / <a href="/cvs/cvsweb.cgi/code/nelns/admin_service/">admin_service</a> / admin_service.cpp</b></td><td align=right><b></b></td></TR></TABLE>
+
+<!-- block -->
+<TABLE bgcolor="#dddddd" CELLSPACING=0 CELLPADDING=0 BORDER=0 width=100%><tr><td width=1% valign=middle><img width=6 height=14 hspace=2 vspace=2 src="http://www.nevrax.org/inc/img/reddots.gif"></TD>
+ <TD><B>admin_service.cpp</B></TD>
+ <TD ALIGN=RIGHT> </td>
+</tr></table>
+<P>
+<p>Default branch: MAIN<BR>
+<HR size=1 NOSHADE><P><a NAME="rev1.15"></a><a NAME="HEAD"></a><a NAME="MAIN"></a>
+ Revision <A HREF="admin_service.cpp?rev=1.15&amp;content-type=text/x-cvsweb-markup"><b>1.15</b></A> / (<A HREF="/cvs/cvsweb.cgi/~checkout~/code/nelns/admin_service/admin_service.cpp?rev=1.15&amp;content-type=text/plain" target="cvs_checkout" onClick="window.open('/cvs/cvsweb.cgi/~checkout~/code/nelns/admin_service/admin_service.cpp?rev=1.15&amp;content-type=text/plain','cvs_checkout','resizeable,scrollbars');"><b>download</b></A>) - <a href="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cpp?annotate=1.15">annotate</a> - <A HREF="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cpp?r1=1.15">[select for diffs]</A>
+, <i>Mon Mar 25 09:28:00 2002 UTC</i> (4 months ago) by <i>lecroart</i>
+<BR>Branch: <b><A HREF="admin_service.cpp?only_with_tag=MAIN">MAIN</A>
+</b>
+<BR>CVS Tags: <b><A HREF="admin_service.cpp?only_with_tag=HEAD">HEAD</A>
+</b><BR>Changes since <b>1.14: +8 -6
+ lines</b><BR>Diff to previous <A HREF="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cpp.diff?r1=1.14&amp;r2=1.15">1.14</A>
+ to selected <A HREF="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cpp.diff?r1=1.6&amp;r2=1.15">1.6</A>
+<PRE>
+CHANGED: use new service functions
+</PRE>
+<HR size=1 NOSHADE><P><a NAME="rev1.14"></a>
+ Revision <A HREF="admin_service.cpp?rev=1.14&amp;content-type=text/x-cvsweb-markup"><b>1.14</b></A> / (<A HREF="/cvs/cvsweb.cgi/~checkout~/code/nelns/admin_service/admin_service.cpp?rev=1.14&amp;content-type=text/plain" target="cvs_checkout" onClick="window.open('/cvs/cvsweb.cgi/~checkout~/code/nelns/admin_service/admin_service.cpp?rev=1.14&amp;content-type=text/plain','cvs_checkout','resizeable,scrollbars');"><b>download</b></A>) - <a href="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cpp?annotate=1.14">annotate</a> - <A HREF="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cpp?r1=1.14">[select for diffs]</A>
+, <i>Tue Mar 19 17:42:48 2002 UTC</i> (4 months ago) by <i>valignat</i>
+<BR>Branch: <b><A HREF="admin_service.cpp?only_with_tag=MAIN">MAIN</A>
+</b>
+<BR>Changes since <b>1.13: +14 -2
+ lines</b><BR>Diff to previous <A HREF="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cpp.diff?r1=1.13&amp;r2=1.14">1.13</A>
+ to selected <A HREF="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cpp.diff?r1=1.6&amp;r2=1.14">1.6</A>
+<PRE>
+Applied patches which help to have a clen install on GNU/Linux and to make a Debian package (changes on the management of config and log files, bugfixes, etc ...)
+</PRE>
+<HR size=1 NOSHADE><P><a NAME="rev1.13"></a>
+ Revision <A HREF="admin_service.cpp?rev=1.13&amp;content-type=text/x-cvsweb-markup"><b>1.13</b></A> / (<A HREF="/cvs/cvsweb.cgi/~checkout~/code/nelns/admin_service/admin_service.cpp?rev=1.13&amp;content-type=text/plain" target="cvs_checkout" onClick="window.open('/cvs/cvsweb.cgi/~checkout~/code/nelns/admin_service/admin_service.cpp?rev=1.13&amp;content-type=text/plain','cvs_checkout','resizeable,scrollbars');"><b>download</b></A>) - <a href="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cpp?annotate=1.13">annotate</a> - <A HREF="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cpp?r1=1.13">[select for diffs]</A>
+, <i>Fri Mar 1 10:20:32 2002 UTC</i> (4 months, 3 weeks ago) by <i>lecroart</i>
+<BR>Branch: <b><A HREF="admin_service.cpp?only_with_tag=MAIN">MAIN</A>
+</b>
+<BR>Changes since <b>1.12: +8 -16
+ lines</b><BR>Diff to previous <A HREF="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cpp.diff?r1=1.12&amp;r2=1.13">1.12</A>
+ to selected <A HREF="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cpp.diff?r1=1.6&amp;r2=1.13">1.6</A>
+<PRE>
+ADDED: password per shard auth
+</PRE>
+<HR size=1 NOSHADE><P><a NAME="rev1.12"></a>
+ Revision <A HREF="admin_service.cpp?rev=1.12&amp;content-type=text/x-cvsweb-markup"><b>1.12</b></A> / (<A HREF="/cvs/cvsweb.cgi/~checkout~/code/nelns/admin_service/admin_service.cpp?rev=1.12&amp;content-type=text/plain" target="cvs_checkout" onClick="window.open('/cvs/cvsweb.cgi/~checkout~/code/nelns/admin_service/admin_service.cpp?rev=1.12&amp;content-type=text/plain','cvs_checkout','resizeable,scrollbars');"><b>download</b></A>) - <a href="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cpp?annotate=1.12">annotate</a> - <A HREF="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cpp?r1=1.12">[select for diffs]</A>
+, <i>Fri Feb 15 17:07:43 2002 UTC</i> (5 months, 1 week ago) by <i>lecroart</i>
+<BR>Branch: <b><A HREF="admin_service.cpp?only_with_tag=MAIN">MAIN</A>
+</b>
+<BR>Changes since <b>1.11: +50 -2
+ lines</b><BR>Diff to previous <A HREF="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cpp.diff?r1=1.11&amp;r2=1.12">1.11</A>
+ to selected <A HREF="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cpp.diff?r1=1.6&amp;r2=1.12">1.6</A>
+<PRE>
+ADDED: login password
+</PRE>
+<HR size=1 NOSHADE><P><a NAME="rev1.11"></a>
+ Revision <A HREF="admin_service.cpp?rev=1.11&amp;content-type=text/x-cvsweb-markup"><b>1.11</b></A> / (<A HREF="/cvs/cvsweb.cgi/~checkout~/code/nelns/admin_service/admin_service.cpp?rev=1.11&amp;content-type=text/plain" target="cvs_checkout" onClick="window.open('/cvs/cvsweb.cgi/~checkout~/code/nelns/admin_service/admin_service.cpp?rev=1.11&amp;content-type=text/plain','cvs_checkout','resizeable,scrollbars');"><b>download</b></A>) - <a href="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cpp?annotate=1.11">annotate</a> - <A HREF="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cpp?r1=1.11">[select for diffs]</A>
+, <i>Tue Jul 10 16:49:53 2001 UTC</i> (12 months, 2 weeks ago) by <i>lecroart</i>
+<BR>Branch: <b><A HREF="admin_service.cpp?only_with_tag=MAIN">MAIN</A>
+</b>
+<BR>Changes since <b>1.10: +18 -14
+ lines</b><BR>Diff to previous <A HREF="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cpp.diff?r1=1.10&amp;r2=1.11">1.10</A>
+ to selected <A HREF="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cpp.diff?r1=1.6&amp;r2=1.11">1.6</A>
+<PRE>
+BUGFIX: when a service isn't ready and already disconnected, it doesn't crash anymore
+</PRE>
+<HR size=1 NOSHADE><P><a NAME="rev1.10"></a>
+ Revision <A HREF="admin_service.cpp?rev=1.10&amp;content-type=text/x-cvsweb-markup"><b>1.10</b></A> / (<A HREF="/cvs/cvsweb.cgi/~checkout~/code/nelns/admin_service/admin_service.cpp?rev=1.10&amp;content-type=text/plain" target="cvs_checkout" onClick="window.open('/cvs/cvsweb.cgi/~checkout~/code/nelns/admin_service/admin_service.cpp?rev=1.10&amp;content-type=text/plain','cvs_checkout','resizeable,scrollbars');"><b>download</b></A>) - <a href="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cpp?annotate=1.10">annotate</a> - <A HREF="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cpp?r1=1.10">[select for diffs]</A>
+, <i>Thu Jul 5 08:26:07 2001 UTC</i> (12 months, 2 weeks ago) by <i>lecroart</i>
+<BR>Branch: <b><A HREF="admin_service.cpp?only_with_tag=MAIN">MAIN</A>
+</b>
+<BR>Changes since <b>1.9: +1 -6
+ lines</b><BR>Diff to previous <A HREF="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cpp.diff?r1=1.9&amp;r2=1.10">1.9</A>
+ to selected <A HREF="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cpp.diff?r1=1.6&amp;r2=1.10">1.6</A>
+<PRE>
+REMOVED: update()
+</PRE>
+<HR size=1 NOSHADE><P><a NAME="rev1.9"></a>
+ Revision <A HREF="admin_service.cpp?rev=1.9&amp;content-type=text/x-cvsweb-markup"><b>1.9</b></A> / (<A HREF="/cvs/cvsweb.cgi/~checkout~/code/nelns/admin_service/admin_service.cpp?rev=1.9&amp;content-type=text/plain" target="cvs_checkout" onClick="window.open('/cvs/cvsweb.cgi/~checkout~/code/nelns/admin_service/admin_service.cpp?rev=1.9&amp;content-type=text/plain','cvs_checkout','resizeable,scrollbars');"><b>download</b></A>) - <a href="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cpp?annotate=1.9">annotate</a> - <A HREF="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cpp?r1=1.9">[select for diffs]</A>
+, <i>Wed Jun 27 08:34:23 2001 UTC</i> (12 months, 4 weeks ago) by <i>lecroart</i>
+<BR>Branch: <b><A HREF="admin_service.cpp?only_with_tag=MAIN">MAIN</A>
+</b>
+<BR>Changes since <b>1.8: +14 -4
+ lines</b><BR>Diff to previous <A HREF="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cpp.diff?r1=1.8&amp;r2=1.9">1.8</A>
+ to selected <A HREF="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cpp.diff?r1=1.6&amp;r2=1.9">1.6</A>
+<PRE>
+ADDED: command redirection
+</PRE>
+<HR size=1 NOSHADE><P><a NAME="rev1.8"></a>
+ Revision <A HREF="admin_service.cpp?rev=1.8&amp;content-type=text/x-cvsweb-markup"><b>1.8</b></A> / (<A HREF="/cvs/cvsweb.cgi/~checkout~/code/nelns/admin_service/admin_service.cpp?rev=1.8&amp;content-type=text/plain" target="cvs_checkout" onClick="window.open('/cvs/cvsweb.cgi/~checkout~/code/nelns/admin_service/admin_service.cpp?rev=1.8&amp;content-type=text/plain','cvs_checkout','resizeable,scrollbars');"><b>download</b></A>) - <a href="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cpp?annotate=1.8">annotate</a> - <A HREF="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cpp?r1=1.8">[select for diffs]</A>
+, <i>Mon Jun 18 14:54:06 2001 UTC</i> (13 months ago) by <i>lecroart</i>
+<BR>Branch: <b><A HREF="admin_service.cpp?only_with_tag=MAIN">MAIN</A>
+</b>
+<BR>Changes since <b>1.7: +2 -2
+ lines</b><BR>Diff to previous <A HREF="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cpp.diff?r1=1.7&amp;r2=1.8">1.7</A>
+ to selected <A HREF="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cpp.diff?r1=1.6&amp;r2=1.8">1.6</A>
+<PRE>
+BUGFIX: linux compilation
+</PRE>
+<HR size=1 NOSHADE><P><a NAME="rev1.7"></a>
+ Revision <A HREF="admin_service.cpp?rev=1.7&amp;content-type=text/x-cvsweb-markup"><b>1.7</b></A> / (<A HREF="/cvs/cvsweb.cgi/~checkout~/code/nelns/admin_service/admin_service.cpp?rev=1.7&amp;content-type=text/plain" target="cvs_checkout" onClick="window.open('/cvs/cvsweb.cgi/~checkout~/code/nelns/admin_service/admin_service.cpp?rev=1.7&amp;content-type=text/plain','cvs_checkout','resizeable,scrollbars');"><b>download</b></A>) - <a href="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cpp?annotate=1.7">annotate</a> - <A HREF="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cpp?r1=1.7">[select for diffs]</A>
+, <i>Mon Jun 18 14:43:31 2001 UTC</i> (13 months ago) by <i>lecroart</i>
+<BR>Branch: <b><A HREF="admin_service.cpp?only_with_tag=MAIN">MAIN</A>
+</b>
+<BR>Changes since <b>1.6: +10 -9
+ lines</b><BR>Diff to previous <A HREF="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cpp.diff?r1=1.6&amp;r2=1.7">1.6</A>
+<PRE>
+BUGFIX: linux compilation
+</PRE>
+<HR size=1 NOSHADE><P><a NAME="rev1.6"></a>
+ Revision <A HREF="admin_service.cpp?rev=1.6&amp;content-type=text/x-cvsweb-markup"><b>1.6</b></A> / (<A HREF="/cvs/cvsweb.cgi/~checkout~/code/nelns/admin_service/admin_service.cpp?rev=1.6&amp;content-type=text/plain" target="cvs_checkout" onClick="window.open('/cvs/cvsweb.cgi/~checkout~/code/nelns/admin_service/admin_service.cpp?rev=1.6&amp;content-type=text/plain','cvs_checkout','resizeable,scrollbars');"><b>download</b></A>) - <a href="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cpp?annotate=1.6">annotate</a> - <b>[selected]</b>, <i>Thu Jun 7 16:19:05 2001 UTC</i> (13 months, 2 weeks ago) by <i>lecroart</i>
+<BR>Branch: <b><A HREF="admin_service.cpp?only_with_tag=MAIN">MAIN</A>
+</b>
+<BR>Changes since <b>1.5: +134 -48
+ lines</b><BR>Diff to previous <A HREF="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cpp.diff?r1=1.5&amp;r2=1.6">1.5</A>
+<PRE>
+ADDED: commands system
+</PRE>
+<HR size=1 NOSHADE><P><a NAME="rev1.5"></a>
+ Revision <A HREF="admin_service.cpp?rev=1.5&amp;content-type=text/x-cvsweb-markup"><b>1.5</b></A> / (<A HREF="/cvs/cvsweb.cgi/~checkout~/code/nelns/admin_service/admin_service.cpp?rev=1.5&amp;content-type=text/plain" target="cvs_checkout" onClick="window.open('/cvs/cvsweb.cgi/~checkout~/code/nelns/admin_service/admin_service.cpp?rev=1.5&amp;content-type=text/plain','cvs_checkout','resizeable,scrollbars');"><b>download</b></A>) - <a href="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cpp?annotate=1.5">annotate</a> - <A HREF="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cpp?r1=1.5">[select for diffs]</A>
+, <i>Thu May 31 16:44:54 2001 UTC</i> (13 months, 3 weeks ago) by <i>lecroart</i>
+<BR>Branch: <b><A HREF="admin_service.cpp?only_with_tag=MAIN">MAIN</A>
+</b>
+<BR>Changes since <b>1.4: +156 -61
+ lines</b><BR>Diff to previous <A HREF="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cpp.diff?r1=1.4&amp;r2=1.5">1.4</A>
+ to selected <A HREF="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cpp.diff?r1=1.6&amp;r2=1.5">1.6</A>
+<PRE>
+ADDED: service alias naming
+</PRE>
+<HR size=1 NOSHADE><P><a NAME="rev1.4"></a>
+ Revision <A HREF="admin_service.cpp?rev=1.4&amp;content-type=text/x-cvsweb-markup"><b>1.4</b></A> / (<A HREF="/cvs/cvsweb.cgi/~checkout~/code/nelns/admin_service/admin_service.cpp?rev=1.4&amp;content-type=text/plain" target="cvs_checkout" onClick="window.open('/cvs/cvsweb.cgi/~checkout~/code/nelns/admin_service/admin_service.cpp?rev=1.4&amp;content-type=text/plain','cvs_checkout','resizeable,scrollbars');"><b>download</b></A>) - <a href="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cpp?annotate=1.4">annotate</a> - <A HREF="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cpp?r1=1.4">[select for diffs]</A>
+, <i>Fri May 18 16:51:33 2001 UTC</i> (14 months ago) by <i>lecroart</i>
+<BR>Branch: <b><A HREF="admin_service.cpp?only_with_tag=MAIN">MAIN</A>
+</b>
+<BR>Changes since <b>1.3: +405 -101
+ lines</b><BR>Diff to previous <A HREF="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cpp.diff?r1=1.3&amp;r2=1.4">1.3</A>
+ to selected <A HREF="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cpp.diff?r1=1.6&amp;r2=1.4">1.6</A>
+<PRE>
+ADDED: work in progress. added gtk
+</PRE>
+<HR size=1 NOSHADE><P><a NAME="rev1.3"></a>
+ Revision <A HREF="admin_service.cpp?rev=1.3&amp;content-type=text/x-cvsweb-markup"><b>1.3</b></A> / (<A HREF="/cvs/cvsweb.cgi/~checkout~/code/nelns/admin_service/admin_service.cpp?rev=1.3&amp;content-type=text/plain" target="cvs_checkout" onClick="window.open('/cvs/cvsweb.cgi/~checkout~/code/nelns/admin_service/admin_service.cpp?rev=1.3&amp;content-type=text/plain','cvs_checkout','resizeable,scrollbars');"><b>download</b></A>) - <a href="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cpp?annotate=1.3">annotate</a> - <A HREF="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cpp?r1=1.3">[select for diffs]</A>
+, <i>Thu May 10 08:20:06 2001 UTC</i> (14 months, 2 weeks ago) by <i>lecroart</i>
+<BR>Branch: <b><A HREF="admin_service.cpp?only_with_tag=MAIN">MAIN</A>
+</b>
+<BR>Changes since <b>1.2: +233 -34
+ lines</b><BR>Diff to previous <A HREF="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cpp.diff?r1=1.2&amp;r2=1.3">1.2</A>
+ to selected <A HREF="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cpp.diff?r1=1.6&amp;r2=1.3">1.6</A>
+<PRE>
+ADDED: changed the data structures
+</PRE>
+<HR size=1 NOSHADE><P><a NAME="rev1.2"></a>
+ Revision <A HREF="admin_service.cpp?rev=1.2&amp;content-type=text/x-cvsweb-markup"><b>1.2</b></A> / (<A HREF="/cvs/cvsweb.cgi/~checkout~/code/nelns/admin_service/admin_service.cpp?rev=1.2&amp;content-type=text/plain" target="cvs_checkout" onClick="window.open('/cvs/cvsweb.cgi/~checkout~/code/nelns/admin_service/admin_service.cpp?rev=1.2&amp;content-type=text/plain','cvs_checkout','resizeable,scrollbars');"><b>download</b></A>) - <a href="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cpp?annotate=1.2">annotate</a> - <A HREF="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cpp?r1=1.2">[select for diffs]</A>
+, <i>Thu May 3 13:19:13 2001 UTC</i> (14 months, 3 weeks ago) by <i>lecroart</i>
+<BR>Branch: <b><A HREF="admin_service.cpp?only_with_tag=MAIN">MAIN</A>
+</b>
+<BR>Changes since <b>1.1: +2 -6
+ lines</b><BR>Diff to previous <A HREF="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cpp.diff?r1=1.1&amp;r2=1.2">1.1</A>
+ to selected <A HREF="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cpp.diff?r1=1.6&amp;r2=1.2">1.6</A>
+<PRE>
+BUGFIX: now compile on linux
+</PRE>
+<HR size=1 NOSHADE><P><a NAME="rev1.1"></a>
+ Revision <A HREF="admin_service.cpp?rev=1.1&amp;content-type=text/x-cvsweb-markup"><b>1.1</b></A> / (<A HREF="/cvs/cvsweb.cgi/~checkout~/code/nelns/admin_service/admin_service.cpp?rev=1.1&amp;content-type=text/plain" target="cvs_checkout" onClick="window.open('/cvs/cvsweb.cgi/~checkout~/code/nelns/admin_service/admin_service.cpp?rev=1.1&amp;content-type=text/plain','cvs_checkout','resizeable,scrollbars');"><b>download</b></A>) - <a href="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cpp?annotate=1.1">annotate</a> - <A HREF="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cpp?r1=1.1">[select for diffs]</A>
+, <i>Wed May 2 12:36:39 2001 UTC</i> (14 months, 3 weeks ago) by <i>lecroart</i>
+<BR>Branch: <b><A HREF="admin_service.cpp?only_with_tag=MAIN">MAIN</A>
+</b>
+<BR>Diff to selected <A HREF="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cpp.diff?r1=1.6&amp;r2=1.1">1.6</A>
+<PRE>
+ADD: new version of the network system (in NeL and NeLns)
+</PRE>
+
+<!-- block -->
+<TABLE bgcolor="#dddddd" CELLSPACING=0 CELLPADDING=0 BORDER=0 width=100%><tr><td width=1% valign=middle><img width=6 height=14 hspace=2 vspace=2 src="http://www.nevrax.org/inc/img/reddots.gif"></TD>
+ <TD><B>Request Diffs</B></TD>
+ <TD ALIGN=RIGHT> </td>
+</tr></table>
+<P>
+<P>
+<FORM METHOD="GET" ACTION="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cpp.diff" NAME="diff_select">
+Diffs between
+<SELECT NAME="r1">
+<OPTION VALUE="text" SELECTED>Use Text Field
+<OPTION VALUE="1:MAIN">MAIN
+<OPTION VALUE="1.15:HEAD">HEAD
+</SELECT>
+<INPUT TYPE="TEXT" SIZE="12" NAME="tr1" VALUE="1.6" onChange='document.diff_select.r1.selectedIndex=0'>
+ and
+<SELECT NAME="r2">
+<OPTION VALUE="text" SELECTED>Use Text Field
+<OPTION VALUE="1:MAIN">MAIN
+<OPTION VALUE="1.15:HEAD">HEAD
+</SELECT>
+<INPUT TYPE="TEXT" SIZE="12" NAME="tr2" VALUE="1.15" onChange='docuement.diff_select.r2.selectedIndex=0'>
+<BR>Type of Diff should be a&nbsp;<SELECT NAME="f">
+<OPTION VALUE=h SELECTED>Colored Diff<OPTION VALUE=H>Long Colored Diff<OPTION VALUE=u>Unidiff<OPTION VALUE=c>Context Diff<OPTION VALUE=s>Side by Side</SELECT><INPUT TYPE=SUBMIT VALUE=" Get Diffs ">
+</FORM>
+
+<!-- block -->
+<TABLE bgcolor="#dddddd" CELLSPACING=0 CELLPADDING=0 BORDER=0 width=100%><tr><td width=1% valign=middle><img width=6 height=14 hspace=2 vspace=2 src="http://www.nevrax.org/inc/img/reddots.gif"></TD>
+ <TD><B>Select branch</B></TD>
+ <TD ALIGN=RIGHT> </td>
+</tr></table>
+<P>
+<P>
+<A name=branch></A>
+<FORM METHOD="GET" ACTION="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cpp">
+View only Branch:
+<SELECT NAME="only_with_tag" onchange="submit()">
+<OPTION VALUE="">Show all branches
+<OPTION>MAIN
+</SELECT>
+<INPUT TYPE=SUBMIT VALUE=" View Branch ">
+</FORM>
+<A name=logsort></A>
+<FORM METHOD="GET" ACTION="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cpp">
+Sort log by:
+<SELECT NAME="logsort" onchange="submit()">
+<OPTION VALUE=cvs>Not sorted<OPTION VALUE=date SELECTED>Commit date<OPTION VALUE=rev>Revision</SELECT>
+<INPUT TYPE=SUBMIT VALUE=" Sort ">
+</FORM>
+
+<!-- footer -->
+<BR><FONT Size=+5>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </FONT>
+</TD>
+<TD WIDTH=15><IMG SRC=http://www.nevrax.org/inc/img/pixel.gif WIDTH=15 HEIGHT=15 BORDER=0 ALT=""></TD>
+</TR>
+</TABLE>
+</BODY>
+</HTML></BODY></HTML>
diff --git a/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cpp?r1=1.7 b/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cpp?r1=1.7
new file mode 100644
index 00000000..a72d0297
--- /dev/null
+++ b/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cpp?r1=1.7
@@ -0,0 +1,286 @@
+<!doctype html public "-//W3C//DTD HTML 4.0 Transitional//EN" "http://www.w3.org/TR/REC-html40/loose.dtd">
+<HTML>
+<HEAD>
+ <TITLE>nevrax.org : cvs</TITLE>
+ <META name="keywords" content="freesoftware,nel,newt,snowballs,richard stallman,GNU,Multi-User Online World">
+
+ <LINK REL=stylesheet TYPE="text/css" HREF="http://www.nevrax.org/inc/css/nevrax.css">
+</HEAD>
+<BODY MARGINHEIGHT="0" MARGINWIDTH="0">
+
+<!-- uplinks -->
+<TABLE CELLSPACING=0 CELLPADDING=0 BORDER=0>
+ <TR>
+ <TD WIDTH=16><IMG SRC="http://www.nevrax.org/inc/img/pixel.gif" WIDTH="16" HEIGHT="16" BORDER=0 ALT=""></TD>
+ <TD WIDTH=140 BGCOLOR=#dddddd><IMG SRC="http://www.nevrax.org/inc/img/pixel.gif" WIDTH="140" HEIGHT="16" BORDER=0 ALT=""></TD>
+ <TD WIDTH=16><IMG SRC="http://www.nevrax.org/inc/img/pixel.gif" WIDTH="16" HEIGHT="16" BORDER=0 ALT=""></TD>
+ <TD><IMG width=6 height=14 SRC="http://www.nevrax.org/inc/img/reddots.gif" ALT="#" VSPACE=2 HSPACE=2 BORDER=0 ></TD><TD VALIGN=middle>&nbsp;<A CLASS=uplinks HREF=http://www.nevrax.org><b>Home</B></FONT></A>&nbsp;&nbsp;&nbsp;</TD>
+ <TD><IMG width=6 height=14 SRC="http://www.nevrax.org/inc/img/reddots.gif" ALT="#" VSPACE=2 HSPACE=2 BORDER=0 ></TD><TD VALIGN=middle>&nbsp;<A CLASS=uplinks HREF=http://www.nevrax.com><b>nevrax.com</B></FONT></A>&nbsp;&nbsp;&nbsp;</TD>
+ </TR>
+</TABLE>
+
+<!-- banner Nevrax -->
+<TABLE CELLSPACING=0 CELLPADDING=0 BORDER=0 WIDTH=100%>
+ <TR><TD BGCOLOR="#000000" BACKGROUND="http://www.nevrax.org/inc/img/black_banner.jpg"><A HREF="http://www.nevrax.org"><IMG SRC="http://www.nevrax.org/inc/img/nevrax.gif" WIDTH="170" HEIGHT="45" BORDER=0 ALT="Nevrax" ></A></TD></TR>
+</TABLE>
+
+<!-- main table -->
+<TABLE CELLSPACING=0 CELLPADDING=0 BORDER=0 height=100%>
+ <TR>
+ <TD WIDTH=16><IMG SRC="http://www.nevrax.org/inc/img/pixel.gif" WIDTH="16" HEIGHT="10" BORDER=0 ALT=""></TD>
+ <TD WIDTH=140 BGCOLOR=#dddddd VALIGN=TOP ALIGN=middle><IMG SRC="http://www.nevrax.org/inc/img/pixel.gif" WIDTH="140" HEIGHT="10" BORDER=0 ALT="">
+
+ <!------ Begin Box ------>
+ <TABLE BORDER=0 CELLSPACING=0 CELLPADDING=0 BGCOLOR=black><TR><TD><TABLE border=0 cellspacing=2 cellpadding=0 width=120><tr><TD ALIGN=middle bgcolor=black>
+ <FONT COLOR=white FACE="sans-serif"><B>Nevrax.org</B></FONT></TD></TR><tr><td colspan=2 bgcolor=#FFFFFF>
+ <TABLE cellspacing=0 cellpadding=1 border=0>
+ <tr><td ALIGN=middle><a class='linkbox' href="http://www.nevrax.org/news/" TITLE="Rubrique news"><img width=13 height=15 hspace=5 border=0 src=http://www.nevrax.org/inc/img/picto-news.gif ALT=#></A></td><td><a class='linkbox' href="http://www.nevrax.org/news/" TITLE="News">News</a></td></tr>
+ <tr><td ALIGN=middle><a class='linkbox' href="http://www.nevrax.org/mail/" TITLE="Rubrique mail"><img width=15 height=11 hspace=5 border=0 src=http://www.nevrax.org/inc/img/picto-mail.gif ALT=#></A></td><td><a class='linkbox' href="http://www.nevrax.org/mail/" TITLE="Mailing list archive">Mailing-list</a></td></tr>
+ <tr><td ALIGN=middle><a class='linkbox' href="http://www.nevrax.org/docs/" TITLE="Rubrique docs"><img width=14 height=16 hspace=5 border=0 src=http://www.nevrax.org/inc/img/picto-docs.gif ALT=#></A></td><td><a class='linkbox' href="http://www.nevrax.org/docs/" TITLE="Documentation">Documentation</a></td></tr>
+ <tr><td ALIGN=middle><a class='linkbox' href="http://www.nevrax.org/cvs/" TITLE="Rubrique cvs"><img width=13 height=17 hspace=5 border=0 src=http://www.nevrax.org/inc/img/picto-cvs.gif ALT=#></A></td><td><a class='linkbox' href="http://www.nevrax.org/cvs/" TITLE="CVS Web">CVS</a></td></tr>
+ <tr><td ALIGN=middle><a class='linkbox' href="http://www.nevrax.org/bugs/" TITLE="Rubrique bugs"><img width=20 height=16 hspace=5 border=0 src=http://www.nevrax.org/inc/img/picto-bugs.gif ALT=#></A></td><td><a class='linkbox' href="http://www.nevrax.org/bugs/" TITLE="Bugtracking">Bugs</a></td></tr>
+ <tr><td ALIGN=middle><a class='linkbox' href="http://www.nevrax.org/free/" TITLE="Rubrique license"><img width=18 height=12 hspace=5 border=0 src=http://www.nevrax.org/inc/img/picto-free.gif ALT=#></A></td><td><a class='linkbox' href="http://www.nevrax.org/free/" TITLE="Free Software">Free software</a></td></tr>
+ </TABLE>
+ </TD></TR></TABLE></TD></TR></TABLE>
+ <!------ End Box ------>
+
+ </TD>
+ <TD WIDTH=15><IMG SRC="http://www.nevrax.org/inc/img/pixel.gif" WIDTH="16" HEIGHT="16" BORDER=0 ALT=""></TD>
+ <TD ALIGN=left valign=top><IMG SRC="http://www.nevrax.org/inc/img/pixel.gif" WIDTH="140" HEIGHT="10" BORDER=0 ALT="">
+
+<!-- title -->
+<TABLE background="http://www.nevrax.org/inc/img/redline.gif" CELLSPACING=0 CELLPADDING=0 BORDER=0 width=100%><tr><td>
+<A HREF="http://www.nevrax.org/cvs/"><img src="http://www.nevrax.org/inc/img/t_cvs.gif" ALT="cvs" HEIGHT=20 BORDER=0></A>
+</td><td><IMG SRC="http://www.nevrax.org/inc/img/pixel.gif" WIDTH="1" HEIGHT="1" BORDER=0 ALT="">
+</td></tr></table>
+
+<!-- title -->
+<table width=100%><tr><td align=left><b> <a href="/cvs/cvsweb.cgi/">Nevrax</a> / <a href="/cvs/cvsweb.cgi/code/">code</a> / <a href="/cvs/cvsweb.cgi/code/nelns/">nelns</a> / <a href="/cvs/cvsweb.cgi/code/nelns/admin_service/">admin_service</a> / admin_service.cpp</b></td><td align=right><b></b></td></TR></TABLE>
+
+<!-- block -->
+<TABLE bgcolor="#dddddd" CELLSPACING=0 CELLPADDING=0 BORDER=0 width=100%><tr><td width=1% valign=middle><img width=6 height=14 hspace=2 vspace=2 src="http://www.nevrax.org/inc/img/reddots.gif"></TD>
+ <TD><B>admin_service.cpp</B></TD>
+ <TD ALIGN=RIGHT> </td>
+</tr></table>
+<P>
+<p>Default branch: MAIN<BR>
+<HR size=1 NOSHADE><P><a NAME="rev1.15"></a><a NAME="HEAD"></a><a NAME="MAIN"></a>
+ Revision <A HREF="admin_service.cpp?rev=1.15&amp;content-type=text/x-cvsweb-markup"><b>1.15</b></A> / (<A HREF="/cvs/cvsweb.cgi/~checkout~/code/nelns/admin_service/admin_service.cpp?rev=1.15&amp;content-type=text/plain" target="cvs_checkout" onClick="window.open('/cvs/cvsweb.cgi/~checkout~/code/nelns/admin_service/admin_service.cpp?rev=1.15&amp;content-type=text/plain','cvs_checkout','resizeable,scrollbars');"><b>download</b></A>) - <a href="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cpp?annotate=1.15">annotate</a> - <A HREF="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cpp?r1=1.15">[select for diffs]</A>
+, <i>Mon Mar 25 09:28:00 2002 UTC</i> (4 months ago) by <i>lecroart</i>
+<BR>Branch: <b><A HREF="admin_service.cpp?only_with_tag=MAIN">MAIN</A>
+</b>
+<BR>CVS Tags: <b><A HREF="admin_service.cpp?only_with_tag=HEAD">HEAD</A>
+</b><BR>Changes since <b>1.14: +8 -6
+ lines</b><BR>Diff to previous <A HREF="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cpp.diff?r1=1.14&amp;r2=1.15">1.14</A>
+ to selected <A HREF="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cpp.diff?r1=1.7&amp;r2=1.15">1.7</A>
+<PRE>
+CHANGED: use new service functions
+</PRE>
+<HR size=1 NOSHADE><P><a NAME="rev1.14"></a>
+ Revision <A HREF="admin_service.cpp?rev=1.14&amp;content-type=text/x-cvsweb-markup"><b>1.14</b></A> / (<A HREF="/cvs/cvsweb.cgi/~checkout~/code/nelns/admin_service/admin_service.cpp?rev=1.14&amp;content-type=text/plain" target="cvs_checkout" onClick="window.open('/cvs/cvsweb.cgi/~checkout~/code/nelns/admin_service/admin_service.cpp?rev=1.14&amp;content-type=text/plain','cvs_checkout','resizeable,scrollbars');"><b>download</b></A>) - <a href="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cpp?annotate=1.14">annotate</a> - <A HREF="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cpp?r1=1.14">[select for diffs]</A>
+, <i>Tue Mar 19 17:42:48 2002 UTC</i> (4 months ago) by <i>valignat</i>
+<BR>Branch: <b><A HREF="admin_service.cpp?only_with_tag=MAIN">MAIN</A>
+</b>
+<BR>Changes since <b>1.13: +14 -2
+ lines</b><BR>Diff to previous <A HREF="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cpp.diff?r1=1.13&amp;r2=1.14">1.13</A>
+ to selected <A HREF="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cpp.diff?r1=1.7&amp;r2=1.14">1.7</A>
+<PRE>
+Applied patches which help to have a clen install on GNU/Linux and to make a Debian package (changes on the management of config and log files, bugfixes, etc ...)
+</PRE>
+<HR size=1 NOSHADE><P><a NAME="rev1.13"></a>
+ Revision <A HREF="admin_service.cpp?rev=1.13&amp;content-type=text/x-cvsweb-markup"><b>1.13</b></A> / (<A HREF="/cvs/cvsweb.cgi/~checkout~/code/nelns/admin_service/admin_service.cpp?rev=1.13&amp;content-type=text/plain" target="cvs_checkout" onClick="window.open('/cvs/cvsweb.cgi/~checkout~/code/nelns/admin_service/admin_service.cpp?rev=1.13&amp;content-type=text/plain','cvs_checkout','resizeable,scrollbars');"><b>download</b></A>) - <a href="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cpp?annotate=1.13">annotate</a> - <A HREF="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cpp?r1=1.13">[select for diffs]</A>
+, <i>Fri Mar 1 10:20:32 2002 UTC</i> (4 months, 3 weeks ago) by <i>lecroart</i>
+<BR>Branch: <b><A HREF="admin_service.cpp?only_with_tag=MAIN">MAIN</A>
+</b>
+<BR>Changes since <b>1.12: +8 -16
+ lines</b><BR>Diff to previous <A HREF="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cpp.diff?r1=1.12&amp;r2=1.13">1.12</A>
+ to selected <A HREF="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cpp.diff?r1=1.7&amp;r2=1.13">1.7</A>
+<PRE>
+ADDED: password per shard auth
+</PRE>
+<HR size=1 NOSHADE><P><a NAME="rev1.12"></a>
+ Revision <A HREF="admin_service.cpp?rev=1.12&amp;content-type=text/x-cvsweb-markup"><b>1.12</b></A> / (<A HREF="/cvs/cvsweb.cgi/~checkout~/code/nelns/admin_service/admin_service.cpp?rev=1.12&amp;content-type=text/plain" target="cvs_checkout" onClick="window.open('/cvs/cvsweb.cgi/~checkout~/code/nelns/admin_service/admin_service.cpp?rev=1.12&amp;content-type=text/plain','cvs_checkout','resizeable,scrollbars');"><b>download</b></A>) - <a href="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cpp?annotate=1.12">annotate</a> - <A HREF="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cpp?r1=1.12">[select for diffs]</A>
+, <i>Fri Feb 15 17:07:43 2002 UTC</i> (5 months, 1 week ago) by <i>lecroart</i>
+<BR>Branch: <b><A HREF="admin_service.cpp?only_with_tag=MAIN">MAIN</A>
+</b>
+<BR>Changes since <b>1.11: +50 -2
+ lines</b><BR>Diff to previous <A HREF="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cpp.diff?r1=1.11&amp;r2=1.12">1.11</A>
+ to selected <A HREF="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cpp.diff?r1=1.7&amp;r2=1.12">1.7</A>
+<PRE>
+ADDED: login password
+</PRE>
+<HR size=1 NOSHADE><P><a NAME="rev1.11"></a>
+ Revision <A HREF="admin_service.cpp?rev=1.11&amp;content-type=text/x-cvsweb-markup"><b>1.11</b></A> / (<A HREF="/cvs/cvsweb.cgi/~checkout~/code/nelns/admin_service/admin_service.cpp?rev=1.11&amp;content-type=text/plain" target="cvs_checkout" onClick="window.open('/cvs/cvsweb.cgi/~checkout~/code/nelns/admin_service/admin_service.cpp?rev=1.11&amp;content-type=text/plain','cvs_checkout','resizeable,scrollbars');"><b>download</b></A>) - <a href="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cpp?annotate=1.11">annotate</a> - <A HREF="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cpp?r1=1.11">[select for diffs]</A>
+, <i>Tue Jul 10 16:49:53 2001 UTC</i> (12 months, 2 weeks ago) by <i>lecroart</i>
+<BR>Branch: <b><A HREF="admin_service.cpp?only_with_tag=MAIN">MAIN</A>
+</b>
+<BR>Changes since <b>1.10: +18 -14
+ lines</b><BR>Diff to previous <A HREF="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cpp.diff?r1=1.10&amp;r2=1.11">1.10</A>
+ to selected <A HREF="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cpp.diff?r1=1.7&amp;r2=1.11">1.7</A>
+<PRE>
+BUGFIX: when a service isn't ready and already disconnected, it doesn't crash anymore
+</PRE>
+<HR size=1 NOSHADE><P><a NAME="rev1.10"></a>
+ Revision <A HREF="admin_service.cpp?rev=1.10&amp;content-type=text/x-cvsweb-markup"><b>1.10</b></A> / (<A HREF="/cvs/cvsweb.cgi/~checkout~/code/nelns/admin_service/admin_service.cpp?rev=1.10&amp;content-type=text/plain" target="cvs_checkout" onClick="window.open('/cvs/cvsweb.cgi/~checkout~/code/nelns/admin_service/admin_service.cpp?rev=1.10&amp;content-type=text/plain','cvs_checkout','resizeable,scrollbars');"><b>download</b></A>) - <a href="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cpp?annotate=1.10">annotate</a> - <A HREF="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cpp?r1=1.10">[select for diffs]</A>
+, <i>Thu Jul 5 08:26:07 2001 UTC</i> (12 months, 2 weeks ago) by <i>lecroart</i>
+<BR>Branch: <b><A HREF="admin_service.cpp?only_with_tag=MAIN">MAIN</A>
+</b>
+<BR>Changes since <b>1.9: +1 -6
+ lines</b><BR>Diff to previous <A HREF="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cpp.diff?r1=1.9&amp;r2=1.10">1.9</A>
+ to selected <A HREF="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cpp.diff?r1=1.7&amp;r2=1.10">1.7</A>
+<PRE>
+REMOVED: update()
+</PRE>
+<HR size=1 NOSHADE><P><a NAME="rev1.9"></a>
+ Revision <A HREF="admin_service.cpp?rev=1.9&amp;content-type=text/x-cvsweb-markup"><b>1.9</b></A> / (<A HREF="/cvs/cvsweb.cgi/~checkout~/code/nelns/admin_service/admin_service.cpp?rev=1.9&amp;content-type=text/plain" target="cvs_checkout" onClick="window.open('/cvs/cvsweb.cgi/~checkout~/code/nelns/admin_service/admin_service.cpp?rev=1.9&amp;content-type=text/plain','cvs_checkout','resizeable,scrollbars');"><b>download</b></A>) - <a href="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cpp?annotate=1.9">annotate</a> - <A HREF="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cpp?r1=1.9">[select for diffs]</A>
+, <i>Wed Jun 27 08:34:23 2001 UTC</i> (12 months, 4 weeks ago) by <i>lecroart</i>
+<BR>Branch: <b><A HREF="admin_service.cpp?only_with_tag=MAIN">MAIN</A>
+</b>
+<BR>Changes since <b>1.8: +14 -4
+ lines</b><BR>Diff to previous <A HREF="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cpp.diff?r1=1.8&amp;r2=1.9">1.8</A>
+ to selected <A HREF="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cpp.diff?r1=1.7&amp;r2=1.9">1.7</A>
+<PRE>
+ADDED: command redirection
+</PRE>
+<HR size=1 NOSHADE><P><a NAME="rev1.8"></a>
+ Revision <A HREF="admin_service.cpp?rev=1.8&amp;content-type=text/x-cvsweb-markup"><b>1.8</b></A> / (<A HREF="/cvs/cvsweb.cgi/~checkout~/code/nelns/admin_service/admin_service.cpp?rev=1.8&amp;content-type=text/plain" target="cvs_checkout" onClick="window.open('/cvs/cvsweb.cgi/~checkout~/code/nelns/admin_service/admin_service.cpp?rev=1.8&amp;content-type=text/plain','cvs_checkout','resizeable,scrollbars');"><b>download</b></A>) - <a href="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cpp?annotate=1.8">annotate</a> - <A HREF="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cpp?r1=1.8">[select for diffs]</A>
+, <i>Mon Jun 18 14:54:06 2001 UTC</i> (13 months ago) by <i>lecroart</i>
+<BR>Branch: <b><A HREF="admin_service.cpp?only_with_tag=MAIN">MAIN</A>
+</b>
+<BR>Changes since <b>1.7: +2 -2
+ lines</b><BR>Diff to previous <A HREF="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cpp.diff?r1=1.7&amp;r2=1.8">1.7</A>
+<PRE>
+BUGFIX: linux compilation
+</PRE>
+<HR size=1 NOSHADE><P><a NAME="rev1.7"></a>
+ Revision <A HREF="admin_service.cpp?rev=1.7&amp;content-type=text/x-cvsweb-markup"><b>1.7</b></A> / (<A HREF="/cvs/cvsweb.cgi/~checkout~/code/nelns/admin_service/admin_service.cpp?rev=1.7&amp;content-type=text/plain" target="cvs_checkout" onClick="window.open('/cvs/cvsweb.cgi/~checkout~/code/nelns/admin_service/admin_service.cpp?rev=1.7&amp;content-type=text/plain','cvs_checkout','resizeable,scrollbars');"><b>download</b></A>) - <a href="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cpp?annotate=1.7">annotate</a> - <b>[selected]</b>, <i>Mon Jun 18 14:43:31 2001 UTC</i> (13 months ago) by <i>lecroart</i>
+<BR>Branch: <b><A HREF="admin_service.cpp?only_with_tag=MAIN">MAIN</A>
+</b>
+<BR>Changes since <b>1.6: +10 -9
+ lines</b><BR>Diff to previous <A HREF="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cpp.diff?r1=1.6&amp;r2=1.7">1.6</A>
+<PRE>
+BUGFIX: linux compilation
+</PRE>
+<HR size=1 NOSHADE><P><a NAME="rev1.6"></a>
+ Revision <A HREF="admin_service.cpp?rev=1.6&amp;content-type=text/x-cvsweb-markup"><b>1.6</b></A> / (<A HREF="/cvs/cvsweb.cgi/~checkout~/code/nelns/admin_service/admin_service.cpp?rev=1.6&amp;content-type=text/plain" target="cvs_checkout" onClick="window.open('/cvs/cvsweb.cgi/~checkout~/code/nelns/admin_service/admin_service.cpp?rev=1.6&amp;content-type=text/plain','cvs_checkout','resizeable,scrollbars');"><b>download</b></A>) - <a href="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cpp?annotate=1.6">annotate</a> - <A HREF="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cpp?r1=1.6">[select for diffs]</A>
+, <i>Thu Jun 7 16:19:05 2001 UTC</i> (13 months, 2 weeks ago) by <i>lecroart</i>
+<BR>Branch: <b><A HREF="admin_service.cpp?only_with_tag=MAIN">MAIN</A>
+</b>
+<BR>Changes since <b>1.5: +134 -48
+ lines</b><BR>Diff to previous <A HREF="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cpp.diff?r1=1.5&amp;r2=1.6">1.5</A>
+ to selected <A HREF="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cpp.diff?r1=1.7&amp;r2=1.6">1.7</A>
+<PRE>
+ADDED: commands system
+</PRE>
+<HR size=1 NOSHADE><P><a NAME="rev1.5"></a>
+ Revision <A HREF="admin_service.cpp?rev=1.5&amp;content-type=text/x-cvsweb-markup"><b>1.5</b></A> / (<A HREF="/cvs/cvsweb.cgi/~checkout~/code/nelns/admin_service/admin_service.cpp?rev=1.5&amp;content-type=text/plain" target="cvs_checkout" onClick="window.open('/cvs/cvsweb.cgi/~checkout~/code/nelns/admin_service/admin_service.cpp?rev=1.5&amp;content-type=text/plain','cvs_checkout','resizeable,scrollbars');"><b>download</b></A>) - <a href="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cpp?annotate=1.5">annotate</a> - <A HREF="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cpp?r1=1.5">[select for diffs]</A>
+, <i>Thu May 31 16:44:54 2001 UTC</i> (13 months, 3 weeks ago) by <i>lecroart</i>
+<BR>Branch: <b><A HREF="admin_service.cpp?only_with_tag=MAIN">MAIN</A>
+</b>
+<BR>Changes since <b>1.4: +156 -61
+ lines</b><BR>Diff to previous <A HREF="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cpp.diff?r1=1.4&amp;r2=1.5">1.4</A>
+ to selected <A HREF="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cpp.diff?r1=1.7&amp;r2=1.5">1.7</A>
+<PRE>
+ADDED: service alias naming
+</PRE>
+<HR size=1 NOSHADE><P><a NAME="rev1.4"></a>
+ Revision <A HREF="admin_service.cpp?rev=1.4&amp;content-type=text/x-cvsweb-markup"><b>1.4</b></A> / (<A HREF="/cvs/cvsweb.cgi/~checkout~/code/nelns/admin_service/admin_service.cpp?rev=1.4&amp;content-type=text/plain" target="cvs_checkout" onClick="window.open('/cvs/cvsweb.cgi/~checkout~/code/nelns/admin_service/admin_service.cpp?rev=1.4&amp;content-type=text/plain','cvs_checkout','resizeable,scrollbars');"><b>download</b></A>) - <a href="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cpp?annotate=1.4">annotate</a> - <A HREF="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cpp?r1=1.4">[select for diffs]</A>
+, <i>Fri May 18 16:51:33 2001 UTC</i> (14 months ago) by <i>lecroart</i>
+<BR>Branch: <b><A HREF="admin_service.cpp?only_with_tag=MAIN">MAIN</A>
+</b>
+<BR>Changes since <b>1.3: +405 -101
+ lines</b><BR>Diff to previous <A HREF="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cpp.diff?r1=1.3&amp;r2=1.4">1.3</A>
+ to selected <A HREF="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cpp.diff?r1=1.7&amp;r2=1.4">1.7</A>
+<PRE>
+ADDED: work in progress. added gtk
+</PRE>
+<HR size=1 NOSHADE><P><a NAME="rev1.3"></a>
+ Revision <A HREF="admin_service.cpp?rev=1.3&amp;content-type=text/x-cvsweb-markup"><b>1.3</b></A> / (<A HREF="/cvs/cvsweb.cgi/~checkout~/code/nelns/admin_service/admin_service.cpp?rev=1.3&amp;content-type=text/plain" target="cvs_checkout" onClick="window.open('/cvs/cvsweb.cgi/~checkout~/code/nelns/admin_service/admin_service.cpp?rev=1.3&amp;content-type=text/plain','cvs_checkout','resizeable,scrollbars');"><b>download</b></A>) - <a href="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cpp?annotate=1.3">annotate</a> - <A HREF="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cpp?r1=1.3">[select for diffs]</A>
+, <i>Thu May 10 08:20:06 2001 UTC</i> (14 months, 2 weeks ago) by <i>lecroart</i>
+<BR>Branch: <b><A HREF="admin_service.cpp?only_with_tag=MAIN">MAIN</A>
+</b>
+<BR>Changes since <b>1.2: +233 -34
+ lines</b><BR>Diff to previous <A HREF="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cpp.diff?r1=1.2&amp;r2=1.3">1.2</A>
+ to selected <A HREF="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cpp.diff?r1=1.7&amp;r2=1.3">1.7</A>
+<PRE>
+ADDED: changed the data structures
+</PRE>
+<HR size=1 NOSHADE><P><a NAME="rev1.2"></a>
+ Revision <A HREF="admin_service.cpp?rev=1.2&amp;content-type=text/x-cvsweb-markup"><b>1.2</b></A> / (<A HREF="/cvs/cvsweb.cgi/~checkout~/code/nelns/admin_service/admin_service.cpp?rev=1.2&amp;content-type=text/plain" target="cvs_checkout" onClick="window.open('/cvs/cvsweb.cgi/~checkout~/code/nelns/admin_service/admin_service.cpp?rev=1.2&amp;content-type=text/plain','cvs_checkout','resizeable,scrollbars');"><b>download</b></A>) - <a href="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cpp?annotate=1.2">annotate</a> - <A HREF="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cpp?r1=1.2">[select for diffs]</A>
+, <i>Thu May 3 13:19:13 2001 UTC</i> (14 months, 3 weeks ago) by <i>lecroart</i>
+<BR>Branch: <b><A HREF="admin_service.cpp?only_with_tag=MAIN">MAIN</A>
+</b>
+<BR>Changes since <b>1.1: +2 -6
+ lines</b><BR>Diff to previous <A HREF="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cpp.diff?r1=1.1&amp;r2=1.2">1.1</A>
+ to selected <A HREF="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cpp.diff?r1=1.7&amp;r2=1.2">1.7</A>
+<PRE>
+BUGFIX: now compile on linux
+</PRE>
+<HR size=1 NOSHADE><P><a NAME="rev1.1"></a>
+ Revision <A HREF="admin_service.cpp?rev=1.1&amp;content-type=text/x-cvsweb-markup"><b>1.1</b></A> / (<A HREF="/cvs/cvsweb.cgi/~checkout~/code/nelns/admin_service/admin_service.cpp?rev=1.1&amp;content-type=text/plain" target="cvs_checkout" onClick="window.open('/cvs/cvsweb.cgi/~checkout~/code/nelns/admin_service/admin_service.cpp?rev=1.1&amp;content-type=text/plain','cvs_checkout','resizeable,scrollbars');"><b>download</b></A>) - <a href="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cpp?annotate=1.1">annotate</a> - <A HREF="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cpp?r1=1.1">[select for diffs]</A>
+, <i>Wed May 2 12:36:39 2001 UTC</i> (14 months, 3 weeks ago) by <i>lecroart</i>
+<BR>Branch: <b><A HREF="admin_service.cpp?only_with_tag=MAIN">MAIN</A>
+</b>
+<BR>Diff to selected <A HREF="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cpp.diff?r1=1.7&amp;r2=1.1">1.7</A>
+<PRE>
+ADD: new version of the network system (in NeL and NeLns)
+</PRE>
+
+<!-- block -->
+<TABLE bgcolor="#dddddd" CELLSPACING=0 CELLPADDING=0 BORDER=0 width=100%><tr><td width=1% valign=middle><img width=6 height=14 hspace=2 vspace=2 src="http://www.nevrax.org/inc/img/reddots.gif"></TD>
+ <TD><B>Request Diffs</B></TD>
+ <TD ALIGN=RIGHT> </td>
+</tr></table>
+<P>
+<P>
+<FORM METHOD="GET" ACTION="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cpp.diff" NAME="diff_select">
+Diffs between
+<SELECT NAME="r1">
+<OPTION VALUE="text" SELECTED>Use Text Field
+<OPTION VALUE="1:MAIN">MAIN
+<OPTION VALUE="1.15:HEAD">HEAD
+</SELECT>
+<INPUT TYPE="TEXT" SIZE="12" NAME="tr1" VALUE="1.7" onChange='document.diff_select.r1.selectedIndex=0'>
+ and
+<SELECT NAME="r2">
+<OPTION VALUE="text" SELECTED>Use Text Field
+<OPTION VALUE="1:MAIN">MAIN
+<OPTION VALUE="1.15:HEAD">HEAD
+</SELECT>
+<INPUT TYPE="TEXT" SIZE="12" NAME="tr2" VALUE="1.15" onChange='docuement.diff_select.r2.selectedIndex=0'>
+<BR>Type of Diff should be a&nbsp;<SELECT NAME="f">
+<OPTION VALUE=h SELECTED>Colored Diff<OPTION VALUE=H>Long Colored Diff<OPTION VALUE=u>Unidiff<OPTION VALUE=c>Context Diff<OPTION VALUE=s>Side by Side</SELECT><INPUT TYPE=SUBMIT VALUE=" Get Diffs ">
+</FORM>
+
+<!-- block -->
+<TABLE bgcolor="#dddddd" CELLSPACING=0 CELLPADDING=0 BORDER=0 width=100%><tr><td width=1% valign=middle><img width=6 height=14 hspace=2 vspace=2 src="http://www.nevrax.org/inc/img/reddots.gif"></TD>
+ <TD><B>Select branch</B></TD>
+ <TD ALIGN=RIGHT> </td>
+</tr></table>
+<P>
+<P>
+<A name=branch></A>
+<FORM METHOD="GET" ACTION="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cpp">
+View only Branch:
+<SELECT NAME="only_with_tag" onchange="submit()">
+<OPTION VALUE="">Show all branches
+<OPTION>MAIN
+</SELECT>
+<INPUT TYPE=SUBMIT VALUE=" View Branch ">
+</FORM>
+<A name=logsort></A>
+<FORM METHOD="GET" ACTION="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cpp">
+Sort log by:
+<SELECT NAME="logsort" onchange="submit()">
+<OPTION VALUE=cvs>Not sorted<OPTION VALUE=date SELECTED>Commit date<OPTION VALUE=rev>Revision</SELECT>
+<INPUT TYPE=SUBMIT VALUE=" Sort ">
+</FORM>
+
+<!-- footer -->
+<BR><FONT Size=+5>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </FONT>
+</TD>
+<TD WIDTH=15><IMG SRC=http://www.nevrax.org/inc/img/pixel.gif WIDTH=15 HEIGHT=15 BORDER=0 ALT=""></TD>
+</TR>
+</TABLE>
+</BODY>
+</HTML></BODY></HTML>
diff --git a/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cpp?rev=1.10&content-type=text/x-cvsweb-markup/index.html b/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cpp?rev=1.10&content-type=text/x-cvsweb-markup/index.html
new file mode 100644
index 00000000..70e1502b
--- /dev/null
+++ b/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cpp?rev=1.10&content-type=text/x-cvsweb-markup/index.html
@@ -0,0 +1,943 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"><HTML>
+<HEAD><style> A { color:black }</style>
+<!-- hennerik CVSweb $Revision: 1.93 $ -->
+<TITLE>code/nelns/admin_service/admin_service.cpp - view - 1.10</TITLE></HEAD>
+<BODY BGCOLOR="#eeeeee">
+<table width="100%" border=0 cellspacing=0 cellpadding=1 bgcolor="#aaaaaa"><tr valign=bottom><td><a href="admin_service.cpp"><IMG SRC="http://www.nevrax.org/inc/img/picto-up.gif" ALT="[BACK]" BORDER="0" WIDTH="14" HEIGHT="13"></a> <b>Return to <A HREF="admin_service.cpp">admin_service.cpp</A>
+ CVS log</b> <IMG SRC="http://www.nevrax.org/inc/img/picto-news.gif" ALT="[TXT]" BORDER="0" WIDTH="13" HEIGHT="15"></td><td align=right><IMG SRC="http://www.nevrax.org/inc/img/picto-dir.gif" ALT="[DIR]" BORDER="0" WIDTH="15" HEIGHT="13"> <b>Up to <a href="/cvs/cvsweb.cgi/">Nevrax</a> / <a href="/cvs/cvsweb.cgi/code/">code</a> / <a href="/cvs/cvsweb.cgi/code/nelns/">nelns</a> / <a href="/cvs/cvsweb.cgi/code/nelns/admin_service/">admin_service</a></b></td></tr></table><HR noshade><table width="100%"><tr><td bgcolor="#ffffff">File: <a href="/cvs/cvsweb.cgi/">Nevrax</a> / <a href="/cvs/cvsweb.cgi/code/">code</a> / <a href="/cvs/cvsweb.cgi/code/nelns/">nelns</a> / <a href="/cvs/cvsweb.cgi/code/nelns/admin_service/">admin_service</a> / <a href="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cpp">admin_service.cpp</a>&nbsp;(<A HREF="/cvs/cvsweb.cgi/~checkout~/code/nelns/admin_service/admin_service.cpp?rev=1.10" target="cvs_checkout" onClick="window.open('/cvs/cvsweb.cgi/~checkout~/code/nelns/admin_service/admin_service.cpp?rev=1.10','cvs_checkout','resizeable,scrollbars');"><b>download</b></A>)<BR>
+Revision <B>1.10</B>, <i>Thu Jul 5 08:26:07 2001 UTC</i> (12 months, 2 weeks ago) by <i>lecroart</i>
+<BR>Branch: <b>MAIN</b>
+<BR>Changes since <b>1.9: +1 -6
+ lines</b><PRE>
+REMOVED: update()
+</PRE>
+</td></tr></table><HR noshade><PRE>/** \file admin_service.cpp
+ * Admin Service (AS)
+ *
+ * $Id: admin_service.cpp,v 1.10 2001/07/05 08:26:07 lecroart Exp $
+ *
+ */
+
+/* Copyright, 2000 Nevrax Ltd.
+ *
+ * This file is part of NEVRAX NeL Network Services.
+ * NEVRAX NeL Network Services is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2, or (at your option)
+ * any later version.
+ *
+ * NEVRAX NeL Network Services is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with NEVRAX NeL Network Services; see the file COPYING. If not, write to the
+ * Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston,
+ * MA 02111-1307, USA.
+ */
+
+#include &lt;string&gt;
+#include &lt;list&gt;
+
+#include &quot;nel/net/service.h&quot;
+#include &quot;nel/misc/debug.h&quot;
+#include &quot;nel/misc/config_file.h&quot;
+#include &quot;nel/misc/command.h&quot;
+
+#include &quot;nel/net/net_manager.h&quot;
+
+using namespace std;
+using namespace NLMISC;
+using namespace NLNET;
+
+////////////////////////
+
+
+struct CService
+{
+ &nbsp; &nbsp; &nbsp; &nbsp;CService () : Id(0xFFFFFFFF), Ready(false), Connected(false), InConfig(false) { }
+
+ &nbsp; &nbsp; &nbsp; &nbsp;uint32 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;Id; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;/// uint32 to identify the service
+ &nbsp; &nbsp; &nbsp; &nbsp;string &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;AliasName; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;/// alias of the service used in the AES and AS to find him (unique per AES)
+ &nbsp; &nbsp; &nbsp; &nbsp;string &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;ShortName; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;/// name of the service in short format (&quot;NS&quot; for example)
+ &nbsp; &nbsp; &nbsp; &nbsp;string &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;LongName; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;/// name of the service in long format (&quot;naming_service&quot;)
+ &nbsp; &nbsp; &nbsp; &nbsp;bool &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;Ready; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;/// true if the service is ready
+ &nbsp; &nbsp; &nbsp; &nbsp;bool &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;Connected; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;/// true if the service is connected to the AES
+ &nbsp; &nbsp; &nbsp; &nbsp;bool &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;InConfig; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;/// true if the service is in the configuration
+ &nbsp; &nbsp; &nbsp; &nbsp;std::vector&lt;NLMISC::CSerialCommand&gt; &nbsp; &nbsp; &nbsp; &nbsp;Commands;
+
+ &nbsp; &nbsp; &nbsp; &nbsp;void setValues (const CService &amp;t)
+ &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// copy all except gtk stuffs
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;Id = t.Id;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;AliasName = t.AliasName;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;ShortName = t.ShortName;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;LongName = t.LongName;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;Ready = t.Ready;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;Connected = t.Connected;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;//InConfig = t.InConfig; never change the inconfig value
+ &nbsp; &nbsp; &nbsp; &nbsp;}
+};
+
+typedef list&lt;CService&gt; TServices;
+typedef list&lt;CService&gt;::iterator SIT;
+
+struct CAdminExecutorService
+{
+ &nbsp; &nbsp; &nbsp; &nbsp;CAdminExecutorService () : Id(NextId++), SockId(NULL), Connected(false) { }
+
+ &nbsp; &nbsp; &nbsp; &nbsp;TSockId &nbsp; &nbsp; &nbsp; &nbsp;SockId; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;/// connection to the AES
+ &nbsp; &nbsp; &nbsp; &nbsp;uint32 &nbsp; &nbsp; &nbsp; &nbsp;Id; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;/// uint32 to identify the AES where the service is running
+
+ &nbsp; &nbsp; &nbsp; &nbsp;string &nbsp; &nbsp; &nbsp; &nbsp;ServerAlias; &nbsp; &nbsp; &nbsp; &nbsp;/// name of the layer4 connection, used to send message to this AES
+ &nbsp; &nbsp; &nbsp; &nbsp;string &nbsp; &nbsp; &nbsp; &nbsp;ServerAddr; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;/// address in a string format (only the ip)
+ &nbsp; &nbsp; &nbsp; &nbsp;bool &nbsp; &nbsp; &nbsp; &nbsp;Connected; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;/// true if the AES is connected
+
+ &nbsp; &nbsp; &nbsp; &nbsp;TServices Services;
+
+ &nbsp; &nbsp; &nbsp; &nbsp;vector&lt;string&gt; &nbsp; &nbsp; &nbsp; &nbsp;ServiceAliasList;
+
+ &nbsp; &nbsp; &nbsp; &nbsp;SIT findService (uint32 sid, bool asrt = true)
+ &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;SIT sit;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;for (sit = Services.begin(); sit != Services.end(); sit++)
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;if ((*sit).Id == sid)
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;break;
+
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;if (asrt)
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;nlassert (sit != Services.end());
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;return sit;
+ &nbsp; &nbsp; &nbsp; &nbsp;}
+
+ &nbsp; &nbsp; &nbsp; &nbsp;SIT findService (const string &amp;alias, bool asrt = true)
+ &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;SIT sit;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;for (sit = Services.begin(); sit != Services.end(); sit++)
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;if ((*sit).AliasName == alias)
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;break;
+
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;if (asrt)
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;nlassert (sit != Services.end());
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;return sit;
+ &nbsp; &nbsp; &nbsp; &nbsp;}
+
+private:
+ &nbsp; &nbsp; &nbsp; &nbsp;static uint32 NextId;
+};
+
+uint32 CAdminExecutorService::NextId = 1;
+
+typedef list&lt;CAdminExecutorService&gt; TAdminExecutorServices;
+typedef list&lt;CAdminExecutorService&gt;::iterator AESIT;
+
+TAdminExecutorServices AdminExecutorServices;
+
+/////////////////
+
+AESIT findAdminExecutorService (uint32 aesid, bool asrt = true)
+{
+ &nbsp; &nbsp; &nbsp; &nbsp;AESIT aesit;
+ &nbsp; &nbsp; &nbsp; &nbsp;for (aesit = AdminExecutorServices.begin(); aesit != AdminExecutorServices.end(); aesit++)
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;if ((*aesit).Id == aesid)
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;break;
+
+ &nbsp; &nbsp; &nbsp; &nbsp;if (asrt)
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;nlassert (aesit != AdminExecutorServices.end());
+ &nbsp; &nbsp; &nbsp; &nbsp;return aesit;
+}
+
+AESIT findAdminExecutorService (string ServerAlias, bool asrt = true)
+{
+ &nbsp; &nbsp; &nbsp; &nbsp;AESIT aesit;
+ &nbsp; &nbsp; &nbsp; &nbsp;for (aesit = AdminExecutorServices.begin(); aesit != AdminExecutorServices.end(); aesit++)
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;if ((*aesit).ServerAlias == ServerAlias)
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;break;
+
+ &nbsp; &nbsp; &nbsp; &nbsp;if (asrt)
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;nlassert (aesit != AdminExecutorServices.end());
+ &nbsp; &nbsp; &nbsp; &nbsp;return aesit;
+}
+
+void displayServices ()
+{
+ &nbsp; &nbsp; &nbsp; &nbsp;for (AESIT aesit = AdminExecutorServices.begin(); aesit != AdminExecutorServices.end(); aesit++)
+ &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;nlinfo (&quot;&gt; Admin&quot;);
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;for (SIT sit = (*aesit).Services.begin(); sit != (*aesit).Services.end(); sit++)
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;nlinfo (&quot; &nbsp;&gt; '%s' '%s' '%s' '%s' %d %d&quot;, (*aesit).SockId-&gt;asString().c_str(), (*sit).AliasName.c_str(), (*sit).ShortName.c_str(), (*sit).LongName.c_str(), (*aesit).Id, (*sit).Id);
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}
+ &nbsp; &nbsp; &nbsp; &nbsp;}
+}
+
+
+// send a message to a client. if ok is 0 it s an error or it s a normal
+void messageToClient (uint8 ok, string msg, TSockId from = NULL)
+{
+ &nbsp; &nbsp; &nbsp; &nbsp;CMessage msgout (CNetManager::getSIDA (&quot;AS&quot;), &quot;MESSAGE&quot;);
+ &nbsp; &nbsp; &nbsp; &nbsp;msgout.serial (ok, msg);
+ &nbsp; &nbsp; &nbsp; &nbsp;CNetManager::send (&quot;AS&quot;, msgout, from);
+}
+
+
+////////////////////////////////////////////////////////////////////////////////////////////////////////
+////////////////////////////////////////////////////////////////////////////////////////////////////////
+/////////////////// SCRIPT MANAGER /////////////////////////////////////////////////////////////////////
+////////////////////////////////////////////////////////////////////////////////////////////////////////
+////////////////////////////////////////////////////////////////////////////////////////////////////////
+
+bool StartAllServices = false;
+uint32 StartAllServicesPos;
+
+void doNextStartAllServicesStep ()
+{
+ &nbsp; &nbsp; &nbsp; &nbsp;nlassert (StartAllServices);
+
+ &nbsp; &nbsp; &nbsp; &nbsp;// get the script
+ &nbsp; &nbsp; &nbsp; &nbsp;try
+ &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;CConfigFile::CVar &amp;script = IService::ConfigFile.getVar(&quot;Services&quot;);
+
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// check the position
+
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;if (StartAllServicesPos*2 &gt;= (uint32)script.size())
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;StartAllServices = false;
+
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;nlinfo(&quot;end of the script&quot;);
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;messageToClient (1, &quot;Start All Service finnished correctly&quot;);
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;return;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}
+
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// get the script line
+
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;string serverAlias;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;string serviceAlias;
+
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;try
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;serverAlias = script.asString (StartAllServicesPos*2);
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;serviceAlias = script.asString (StartAllServicesPos*2+1);
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;catch(EBadSize &amp;)
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;messageToClient (1, &quot;'Services' variable does not contains a good number of entries (must be a multiple of 2)&quot;);
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;nlwarning (&quot;'Services' variable does not contains a good number of entries (must be a multiple of 2)&quot;);
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;StartAllServices = false;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;return;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}
+
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;AESIT aesit = findAdminExecutorService (serverAlias, false);
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;if (aesit == AdminExecutorServices.end())
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;messageToClient (1, &quot;don't find the server&quot;);
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;nlwarning(&quot;don't find the server&quot;);
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;StartAllServices = false;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;return;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}
+
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// check if the service is not currently running
+
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;StartAllServicesPos++;
+
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;SIT sit = (*aesit).findService (serviceAlias);
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;if ((*sit).Connected)
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// the service is already running, go to the next process
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;doNextStartAllServicesStep ();
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;else
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// send the resquest to the AES
+
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;CMessage msgout (CNetManager::getSIDA((*aesit).ServerAlias), &quot;STARTS&quot;);
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;msgout.serial (serviceAlias);
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;CNetManager::send ((*aesit).ServerAlias, msgout);
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}
+ &nbsp; &nbsp; &nbsp; &nbsp;}
+ &nbsp; &nbsp; &nbsp; &nbsp;catch(EUnknownVar&amp;)
+ &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;messageToClient (1, &quot;'Services' variable is not found&quot;);
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;nlwarning (&quot;'Services' variable is not found&quot;);
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;StartAllServices = false;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;return;
+ &nbsp; &nbsp; &nbsp; &nbsp;}
+}
+
+void initStartAllServices ()
+{
+ &nbsp; &nbsp; &nbsp; &nbsp;if (StartAllServices)
+ &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;messageToClient (1, &quot;already running a script, reset it&quot;);
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;nlwarning(&quot;already running a script, reset it&quot;);
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;StartAllServices = false;
+ &nbsp; &nbsp; &nbsp; &nbsp;}
+
+ &nbsp; &nbsp; &nbsp; &nbsp;try
+ &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;CConfigFile::CVar &amp;script = IService::ConfigFile.getVar(&quot;Services&quot;);
+
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;for (sint i = 0 ; i &lt; script.size (); i+=2)
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;string serverAlias = script.asString(i);
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;AESIT aesit = findAdminExecutorService (serverAlias, false);
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;if (aesit == AdminExecutorServices.end())
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;messageToClient (1, &quot;an aes is not running, can't run the script&quot;);
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;nlwarning(&quot;aes '%s' isn't running, can't run the script&quot;, serverAlias.c_str());
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;return;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}
+ &nbsp; &nbsp; &nbsp; &nbsp;}
+ &nbsp; &nbsp; &nbsp; &nbsp;catch(EConfigFile &amp;)
+ &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;messageToClient (1, &quot;bad config file&quot;);
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;nlwarning (&quot;bad config file&quot;);
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;return;
+ &nbsp; &nbsp; &nbsp; &nbsp;}
+
+ &nbsp; &nbsp; &nbsp; &nbsp;StartAllServicesPos = 0;
+ &nbsp; &nbsp; &nbsp; &nbsp;StartAllServices = true;
+
+ &nbsp; &nbsp; &nbsp; &nbsp;doNextStartAllServicesStep();
+}
+
+
+////////////////////////////////////////////////////////////////////////////////////////////////////////
+////////////////////////////////////////////////////////////////////////////////////////////////////////
+////////////////// CONNECTION TO THE AES ///////////////////////////////////////////////////////////////
+////////////////////////////////////////////////////////////////////////////////////////////////////////
+////////////////////////////////////////////////////////////////////////////////////////////////////////
+
+
+static void cbExecuteSystemCommandResult (CMessage&amp; msgin, TSockId from, CCallbackNetBase &amp;netbase)
+{
+ &nbsp; &nbsp; &nbsp; &nbsp;vector&lt;string&gt; result;
+ &nbsp; &nbsp; &nbsp; &nbsp;msgin.serialCont (result);
+
+ &nbsp; &nbsp; &nbsp; &nbsp;nlinfo(&quot;command result&quot;);
+ &nbsp; &nbsp; &nbsp; &nbsp;for (uint i = 0; i &lt; result.size(); i++)
+ &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;printf (&quot;%s&quot;, result[i].c_str());
+ &nbsp; &nbsp; &nbsp; &nbsp;}
+ &nbsp; &nbsp; &nbsp; &nbsp;nlinfo(&quot;end of command result&quot;);
+}
+
+// get the service list from the admin exec and send the list to all admin client
+static void cbServiceList (CMessage&amp; msgin, TSockId from, CCallbackNetBase &amp;netbase)
+{
+ &nbsp; &nbsp; &nbsp; &nbsp;CAdminExecutorService *aes = (CAdminExecutorService*) (uint) from-&gt;appId();
+
+ &nbsp; &nbsp; &nbsp; &nbsp;//
+ &nbsp; &nbsp; &nbsp; &nbsp;// Get the list of service from aes
+ &nbsp; &nbsp; &nbsp; &nbsp;//
+
+ &nbsp; &nbsp; &nbsp; &nbsp;uint32 nbs;
+ &nbsp; &nbsp; &nbsp; &nbsp;msgin.serial (nbs);
+
+ &nbsp; &nbsp; &nbsp; &nbsp;for (uint32 i = 0; i &lt; nbs; i++)
+ &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// find the service
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;CService s;
+
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;msgin.serial (s.Id, s.AliasName, s.ShortName, s.LongName, s.Ready);
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;msgin.serialCont (s.Commands);
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;s.Connected = true;
+
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;if (!s.AliasName.empty())
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;SIT sit = aes-&gt;findService (s.AliasName, false);
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;if (sit == aes-&gt;Services.end ())
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;aes-&gt;Services.push_back (s);
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;else
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;nlassert (&quot;the service already exists with alias, update it&quot;);
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;(*sit).setValues (s);
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;else
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;SIT sit = aes-&gt;findService (s.Id, false);
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;if (sit == aes-&gt;Services.end ())
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;aes-&gt;Services.push_back (s);
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;else
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;nlassert (&quot;the service already exists with id, update it&quot;);
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;(*sit).setValues (s);
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}
+ &nbsp; &nbsp; &nbsp; &nbsp;}
+ &nbsp; &nbsp; &nbsp; &nbsp;
+ &nbsp; &nbsp; &nbsp; &nbsp;displayServices ();
+
+ &nbsp; &nbsp; &nbsp; &nbsp;//
+ &nbsp; &nbsp; &nbsp; &nbsp;// Send the new list to all admin
+ &nbsp; &nbsp; &nbsp; &nbsp;//
+
+ &nbsp; &nbsp; &nbsp; &nbsp;CMessage msgout (CNetManager::getSIDA (&quot;AS&quot;), &quot;SERVICE_LIST&quot;);
+ &nbsp; &nbsp; &nbsp; &nbsp;uint32 nbaes = 1;
+ &nbsp; &nbsp; &nbsp; &nbsp;msgout.serial (nbaes);
+ &nbsp; &nbsp; &nbsp; &nbsp;msgout.serial (aes-&gt;Id);
+ &nbsp; &nbsp; &nbsp; &nbsp;uint32 ss = aes-&gt;Services.size();
+ &nbsp; &nbsp; &nbsp; &nbsp;msgout.serial (ss);
+
+ &nbsp; &nbsp; &nbsp; &nbsp;for (SIT sit = aes-&gt;Services.begin(); sit != aes-&gt;Services.end(); sit++)
+ &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;msgout.serial ((*sit).Id, (*sit).AliasName, (*sit).ShortName, (*sit).LongName);
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;msgout.serial ((*sit).Ready, (*sit).Connected, (*sit).InConfig);
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;msgout.serialCont ((*sit).Commands);
+ &nbsp; &nbsp; &nbsp; &nbsp;}
+ &nbsp; &nbsp; &nbsp; &nbsp;CNetManager::send (&quot;AS&quot;, msgout, 0);
+}
+
+static void cbServiceAliasList (CMessage&amp; msgin, TSockId from, CCallbackNetBase &amp;netbase)
+{
+ &nbsp; &nbsp; &nbsp; &nbsp;// get the service list from the admin exec and send the list to all admin client
+ &nbsp; &nbsp; &nbsp; &nbsp;CAdminExecutorService *aes = (CAdminExecutorService*) (uint) from-&gt;appId();
+
+ &nbsp; &nbsp; &nbsp; &nbsp;aes-&gt;ServiceAliasList.clear ();
+ &nbsp; &nbsp; &nbsp; &nbsp;msgin.serialCont (aes-&gt;ServiceAliasList);
+
+ &nbsp; &nbsp; &nbsp; &nbsp;nlinfo(&quot;send SAL to admin callback from aes&quot;);
+
+ &nbsp; &nbsp; &nbsp; &nbsp;CMessage msgout (CNetManager::getSIDA (&quot;AS&quot;), &quot;SAL&quot;);
+ &nbsp; &nbsp; &nbsp; &nbsp;msgout.serial (aes-&gt;Id);
+ &nbsp; &nbsp; &nbsp; &nbsp;msgout.serialCont (aes-&gt;ServiceAliasList);
+ &nbsp; &nbsp; &nbsp; &nbsp;CNetManager::send (&quot;AS&quot;, msgout, 0);
+ &nbsp; &nbsp; &nbsp; &nbsp;
+ &nbsp; &nbsp; &nbsp; &nbsp;nlinfo(&quot;new service alias list&quot;);
+}
+
+
+static void cbServiceIdentification (CMessage&amp; msgin, TSockId from, CCallbackNetBase &amp;netbase)
+{
+ &nbsp; &nbsp; &nbsp; &nbsp;CAdminExecutorService *aes = (CAdminExecutorService*) (uint) from-&gt;appId();
+
+ &nbsp; &nbsp; &nbsp; &nbsp;uint32 sid;
+ &nbsp; &nbsp; &nbsp; &nbsp;string alias;
+
+ &nbsp; &nbsp; &nbsp; &nbsp;msgin.serial (sid, alias);
+
+ &nbsp; &nbsp; &nbsp; &nbsp;SIT sit;
+ &nbsp; &nbsp; &nbsp; &nbsp;if (!alias.empty())
+ &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;sit = aes-&gt;findService (alias, false);
+
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;if (sit == aes-&gt;Services.end ())
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// the alias is not found
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;nlwarning (&quot;new service with alias (%s) but not in my list&quot;, alias.c_str());
+
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;aes-&gt;Services.push_back (CService ());
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;sit = aes-&gt;Services.end();
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;sit--;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;else
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// normal case
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}
+ &nbsp; &nbsp; &nbsp; &nbsp;}
+ &nbsp; &nbsp; &nbsp; &nbsp;else
+ &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;sit = aes-&gt;findService (sid, false);
+
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;if (sit == aes-&gt;Services.end ())
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// normal case for unknown services
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;nlwarning (&quot;new service without alias and not in my list, add it&quot;);
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;else
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;nlwarning (&quot;new service without alias is already in my list with id %d, add it&quot;, sid);
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;aes-&gt;Services.push_back (CService ());
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;sit = aes-&gt;Services.end();
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;sit--;
+ &nbsp; &nbsp; &nbsp; &nbsp;}
+
+ &nbsp; &nbsp; &nbsp; &nbsp;(*sit).Id = sid;
+ &nbsp; &nbsp; &nbsp; &nbsp;(*sit).AliasName = alias;
+ &nbsp; &nbsp; &nbsp; &nbsp;(*sit).Connected = true;
+ &nbsp; &nbsp; &nbsp; &nbsp;msgin.serial ((*sit).ShortName, (*sit).LongName);
+ &nbsp; &nbsp; &nbsp; &nbsp;msgin.serialCont ((*sit).Commands);
+
+ &nbsp; &nbsp; &nbsp; &nbsp;nlinfo (&quot;*:%d:%d is identified to be '%s' '%s' '%s'&quot;, aes-&gt;Id, sid, (*sit).AliasName.c_str(), (*sit).ShortName.c_str(), (*sit).LongName.c_str());
+
+ &nbsp; &nbsp; &nbsp; &nbsp;// broadcast the message to all admin client
+ &nbsp; &nbsp; &nbsp; &nbsp;CMessage msgout (CNetManager::getSIDA (&quot;AS&quot;), &quot;SID&quot;);
+ &nbsp; &nbsp; &nbsp; &nbsp;msgout.serial (aes-&gt;Id, sid, (*sit).AliasName, (*sit).ShortName, (*sit).LongName);
+ &nbsp; &nbsp; &nbsp; &nbsp;msgout.serialCont ((*sit).Commands);
+
+ &nbsp; &nbsp; &nbsp; &nbsp;CNetManager::send (&quot;AS&quot;, msgout, 0);
+}
+
+static void cbServiceReady (CMessage&amp; msgin, TSockId from, CCallbackNetBase &amp;netbase)
+{
+ &nbsp; &nbsp; &nbsp; &nbsp;CAdminExecutorService *aes = (CAdminExecutorService*) (uint) from-&gt;appId();
+
+ &nbsp; &nbsp; &nbsp; &nbsp;uint32 sid;
+ &nbsp; &nbsp; &nbsp; &nbsp;msgin.serial (sid);
+
+ &nbsp; &nbsp; &nbsp; &nbsp;SIT sit = aes-&gt;findService(sid);
+ &nbsp; &nbsp; &nbsp; &nbsp;(*sit).Ready = true;
+
+ &nbsp; &nbsp; &nbsp; &nbsp;nlinfo (&quot;*:%d:%d is ready&quot;, aes-&gt;Id, sid);
+
+ &nbsp; &nbsp; &nbsp; &nbsp;// broadcast the message to all admin client
+ &nbsp; &nbsp; &nbsp; &nbsp;CMessage msgout (CNetManager::getSIDA (&quot;AS&quot;), &quot;SR&quot;);
+ &nbsp; &nbsp; &nbsp; &nbsp;msgout.serial (aes-&gt;Id, sid);
+ &nbsp; &nbsp; &nbsp; &nbsp;CNetManager::send (&quot;AS&quot;, msgout, 0);
+
+ &nbsp; &nbsp; &nbsp; &nbsp;// if we are in a script execution, continue
+ &nbsp; &nbsp; &nbsp; &nbsp;if (StartAllServices)
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;doNextStartAllServicesStep();
+}
+
+static void cbServiceConnection (CMessage&amp; msgin, TSockId from, CCallbackNetBase &amp;netbase)
+{
+ &nbsp; &nbsp; &nbsp; &nbsp;CAdminExecutorService *aes = (CAdminExecutorService*) (uint) from-&gt;appId();
+
+ &nbsp; &nbsp; &nbsp; &nbsp;uint32 sid;
+ &nbsp; &nbsp; &nbsp; &nbsp;msgin.serial (sid);
+
+ &nbsp; &nbsp; &nbsp; &nbsp;nlinfo (&quot;*:%d:%d connected&quot;, aes-&gt;Id, sid);
+
+ &nbsp; &nbsp; &nbsp; &nbsp;// don't do anything. we have to wait identification to add it in out lists
+
+/*
+ &nbsp; &nbsp; &nbsp; &nbsp;aes-&gt;Services.push_back (CService(sid));
+*/
+ &nbsp; &nbsp; &nbsp; &nbsp;// broadcast the message to all admin client
+ &nbsp; &nbsp; &nbsp; &nbsp;CMessage msgout (CNetManager::getSIDA (&quot;AS&quot;), &quot;SC&quot;);
+ &nbsp; &nbsp; &nbsp; &nbsp;msgout.serial (aes-&gt;Id, sid);
+ &nbsp; &nbsp; &nbsp; &nbsp;CNetManager::send (&quot;AS&quot;, msgout, 0);
+}
+
+static void cbServiceDisconnection (CMessage&amp; msgin, TSockId from, CCallbackNetBase &amp;netbase)
+{
+ &nbsp; &nbsp; &nbsp; &nbsp;CAdminExecutorService *aes = (CAdminExecutorService*) (uint) from-&gt;appId();
+
+ &nbsp; &nbsp; &nbsp; &nbsp;uint32 sid;
+ &nbsp; &nbsp; &nbsp; &nbsp;msgin.serial (sid);
+
+ &nbsp; &nbsp; &nbsp; &nbsp;nlinfo (&quot;*:%d:%d disconnected&quot;, aes-&gt;Id, sid);
+
+ &nbsp; &nbsp; &nbsp; &nbsp;SIT sit = aes-&gt;findService(sid);
+
+ &nbsp; &nbsp; &nbsp; &nbsp;// broadcast the message to all admin client
+ &nbsp; &nbsp; &nbsp; &nbsp;CMessage msgout (CNetManager::getSIDA (&quot;AS&quot;), &quot;SD&quot;);
+ &nbsp; &nbsp; &nbsp; &nbsp;msgout.serial (aes-&gt;Id, (*sit).Id);
+ &nbsp; &nbsp; &nbsp; &nbsp;CNetManager::send (&quot;AS&quot;, msgout, 0);
+
+ &nbsp; &nbsp; &nbsp; &nbsp;if ((*sit).InConfig)
+ &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;(*sit).Ready = (*sit).Connected = false;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;(*sit).Id = 0xFFFFFFFF;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;(*sit).ShortName = (*sit).LongName = &quot;&quot;;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;(*sit).Commands.clear ();
+ &nbsp; &nbsp; &nbsp; &nbsp;}
+ &nbsp; &nbsp; &nbsp; &nbsp;else
+ &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// erase only if it's not a service in the config
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;aes-&gt;Services.erase (sit);
+ &nbsp; &nbsp; &nbsp; &nbsp;}
+
+ &nbsp; &nbsp; &nbsp; &nbsp;displayServices ();
+}
+
+// i'm connected to a new admin executor service
+void cbAESConnection (const string &amp;serviceName, TSockId from, void *arg)
+{
+ &nbsp; &nbsp; &nbsp; &nbsp;AESIT aesit = findAdminExecutorService (serviceName); &nbsp; &nbsp; &nbsp; &nbsp;
+ &nbsp; &nbsp; &nbsp; &nbsp;CAdminExecutorService *aes = &amp;(*aesit);
+ &nbsp; &nbsp; &nbsp; &nbsp;
+ &nbsp; &nbsp; &nbsp; &nbsp;// set the appid to find the aes in O(1)
+ &nbsp; &nbsp; &nbsp; &nbsp;from-&gt;setAppId ((uint64)(uint)aes);
+
+ &nbsp; &nbsp; &nbsp; &nbsp;aes-&gt;Connected = true;
+ &nbsp; &nbsp; &nbsp; &nbsp;nlinfo (&quot;*:%d:* connected&quot;, aes-&gt;Id);
+/*
+ &nbsp; &nbsp; &nbsp; &nbsp;// broadcast the message that an admin exec is connected to all admin client
+ &nbsp; &nbsp; &nbsp; &nbsp;CMessage msgout (CNetManager::getSIDA (&quot;AS&quot;), &quot;AESC&quot;);
+ &nbsp; &nbsp; &nbsp; &nbsp;msgout.serial (aes-&gt;Id);
+ &nbsp; &nbsp; &nbsp; &nbsp;CNetManager::send (&quot;AS&quot;, msgout, 0);
+*/
+
+ &nbsp; &nbsp; &nbsp; &nbsp;// broadcast the new state of this AES
+ &nbsp; &nbsp; &nbsp; &nbsp;CMessage msgout (CNetManager::getSIDA (&quot;AS&quot;), &quot;AES_LIST&quot;);
+ &nbsp; &nbsp; &nbsp; &nbsp;uint32 nbaes = 1;
+ &nbsp; &nbsp; &nbsp; &nbsp;msgout.serial (nbaes);
+ &nbsp; &nbsp; &nbsp; &nbsp;msgout.serial (aes-&gt;Id, aes-&gt;ServerAlias, aes-&gt;ServerAddr, aes-&gt;Connected);
+ &nbsp; &nbsp; &nbsp; &nbsp;CNetManager::send (&quot;AS&quot;, msgout, 0);
+}
+
+// i'm disconnected to an admin executor service
+void cbAESDisconnection (const string &amp;serviceName, TSockId from, void *arg)
+{
+ &nbsp; &nbsp; &nbsp; &nbsp;// get the aes with the appid
+ &nbsp; &nbsp; &nbsp; &nbsp;CAdminExecutorService *aes = (CAdminExecutorService*) (uint) from-&gt;appId();
+
+ &nbsp; &nbsp; &nbsp; &nbsp;aes-&gt;Connected = false;
+
+ &nbsp; &nbsp; &nbsp; &nbsp;SIT sit;
+ &nbsp; &nbsp; &nbsp; &nbsp;for (sit = aes-&gt;Services.begin(); sit != aes-&gt;Services.end();)
+ &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// keep only inconfig services
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;if ((*sit).InConfig)
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;(*sit).Id = 0xFFFFFFFF;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;(*sit).ShortName = (*sit).LongName = &quot;&quot;;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;(*sit).Ready = (*sit).Connected = false;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;sit++;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;else
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// erase only if it's not a service in the config
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;sit = aes-&gt;Services.erase (sit);
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}
+ &nbsp; &nbsp; &nbsp; &nbsp;}
+
+ &nbsp; &nbsp; &nbsp; &nbsp;nlinfo (&quot;*:%d:* disconnected&quot;, aes-&gt;Id);
+/* &nbsp; &nbsp; &nbsp;
+ &nbsp; &nbsp; &nbsp; &nbsp;// broadcast the message to all admin client that an admin exec is disconnected
+ &nbsp; &nbsp; &nbsp; &nbsp;CMessage msgout (CNetManager::getSIDA (&quot;AS&quot;), &quot;AESD&quot;);
+ &nbsp; &nbsp; &nbsp; &nbsp;msgout.serial (aes-&gt;Id);
+ &nbsp; &nbsp; &nbsp; &nbsp;CNetManager::send (&quot;AS&quot;, msgout, 0);
+*/
+
+ &nbsp; &nbsp; &nbsp; &nbsp;displayServices ();
+
+ &nbsp; &nbsp; &nbsp; &nbsp;// broadcast the new state of this AES
+ &nbsp; &nbsp; &nbsp; &nbsp;CMessage msgout (CNetManager::getSIDA (&quot;AS&quot;), &quot;AES_LIST&quot;);
+ &nbsp; &nbsp; &nbsp; &nbsp;uint32 nbaes = 1;
+ &nbsp; &nbsp; &nbsp; &nbsp;msgout.serial (nbaes);
+ &nbsp; &nbsp; &nbsp; &nbsp;msgout.serial (aes-&gt;Id, aes-&gt;ServerAlias, aes-&gt;ServerAddr, aes-&gt;Connected);
+ &nbsp; &nbsp; &nbsp; &nbsp;CNetManager::send (&quot;AS&quot;, msgout, 0);
+}
+
+static void cbLog (CMessage&amp; msgin, TSockId from, CCallbackNetBase &amp;netbase)
+{
+ &nbsp; &nbsp; &nbsp; &nbsp;// received an answer for a command, give it to all admin client
+
+ &nbsp; &nbsp; &nbsp; &nbsp;// get the aes with the appid
+ &nbsp; &nbsp; &nbsp; &nbsp;CAdminExecutorService *aes = (CAdminExecutorService*) (uint) from-&gt;appId();
+
+ &nbsp; &nbsp; &nbsp; &nbsp;// broadcast the message to the admin service
+ &nbsp; &nbsp; &nbsp; &nbsp;CMessage msgout (CNetManager::getSIDA (&quot;AS&quot;), &quot;XLOG&quot;);
+ &nbsp; &nbsp; &nbsp; &nbsp;string log;
+ &nbsp; &nbsp; &nbsp; &nbsp;uint32 sid;
+ &nbsp; &nbsp; &nbsp; &nbsp;msgin.serial (sid);
+ &nbsp; &nbsp; &nbsp; &nbsp;msgin.serial (log);
+
+ &nbsp; &nbsp; &nbsp; &nbsp;msgout.serial (aes-&gt;Id);
+ &nbsp; &nbsp; &nbsp; &nbsp;msgout.serial (sid);
+ &nbsp; &nbsp; &nbsp; &nbsp;msgout.serial (log);
+ &nbsp; &nbsp; &nbsp; &nbsp;CNetManager::send (&quot;AS&quot;, msgout, 0);
+}
+
+
+TCallbackItem AESCallbackArray[] =
+{
+ &nbsp; &nbsp; &nbsp; &nbsp;{ &quot;ESCR&quot;, cbExecuteSystemCommandResult },
+
+ &nbsp; &nbsp; &nbsp; &nbsp;{ &quot;SL&quot;, cbServiceList },
+ &nbsp; &nbsp; &nbsp; &nbsp;{ &quot;SID&quot;, cbServiceIdentification },
+ &nbsp; &nbsp; &nbsp; &nbsp;{ &quot;SR&quot;, cbServiceReady },
+ &nbsp; &nbsp; &nbsp; &nbsp;{ &quot;SC&quot;, cbServiceConnection },
+ &nbsp; &nbsp; &nbsp; &nbsp;{ &quot;SD&quot;, cbServiceDisconnection },
+
+ &nbsp; &nbsp; &nbsp; &nbsp;{ &quot;SAL&quot;, cbServiceAliasList },
+
+ &nbsp; &nbsp; &nbsp; &nbsp;{ &quot;XLOG&quot;, cbLog },
+};
+
+
+////////////////////////////////////////////////////////////////////////////////////////////////////////
+////////////////////////////////////////////////////////////////////////////////////////////////////////
+////////////////// CONNECTION TO THE CLIENT ////////////////////////////////////////////////////////////
+////////////////////////////////////////////////////////////////////////////////////////////////////////
+////////////////////////////////////////////////////////////////////////////////////////////////////////
+
+//
+// A new admin client is connected.
+//
+void clientConnection (const string &amp;serviceName, TSockId from, void *arg)
+{
+ &nbsp; &nbsp; &nbsp; &nbsp;// new client, send him all out info about services
+
+ &nbsp; &nbsp; &nbsp; &nbsp;nlinfo (&quot;client %s is connected&quot;, from-&gt;asString().c_str());
+
+ &nbsp; &nbsp; &nbsp; &nbsp;//
+ &nbsp; &nbsp; &nbsp; &nbsp;// send the list of all the aes
+ &nbsp; &nbsp; &nbsp; &nbsp;//
+
+ &nbsp; &nbsp; &nbsp; &nbsp;CMessage msgout2 (CNetManager::getSIDA (&quot;AS&quot;), &quot;AES_LIST&quot;);
+ &nbsp; &nbsp; &nbsp; &nbsp;AESIT aesit;
+ &nbsp; &nbsp; &nbsp; &nbsp;uint32 nbaes = (uint32)AdminExecutorServices.size();
+ &nbsp; &nbsp; &nbsp; &nbsp;msgout2.serial (nbaes);
+ &nbsp; &nbsp; &nbsp; &nbsp;for (aesit = AdminExecutorServices.begin(); aesit != AdminExecutorServices.end(); aesit++)
+ &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// send info about the AES
+
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;msgout2.serial ((*aesit).Id, (*aesit).ServerAlias, (*aesit).ServerAddr, (*aesit).Connected);
+ &nbsp; &nbsp; &nbsp; &nbsp;}
+ &nbsp; &nbsp; &nbsp; &nbsp;CNetManager::send (&quot;AS&quot;, msgout2, from);
+
+ &nbsp; &nbsp; &nbsp; &nbsp;//
+ &nbsp; &nbsp; &nbsp; &nbsp;// send the list of all services
+ &nbsp; &nbsp; &nbsp; &nbsp;//
+
+ &nbsp; &nbsp; &nbsp; &nbsp;CMessage msgout (CNetManager::getSIDA (&quot;AS&quot;), &quot;SERVICE_LIST&quot;);
+ &nbsp; &nbsp; &nbsp; &nbsp;nbaes = (uint32)AdminExecutorServices.size();
+ &nbsp; &nbsp; &nbsp; &nbsp;msgout.serial (nbaes);
+ &nbsp; &nbsp; &nbsp; &nbsp;for (aesit = AdminExecutorServices.begin(); aesit != AdminExecutorServices.end(); aesit++)
+ &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;msgout.serial ((*aesit).Id);
+
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;uint32 nbs = (uint32)(*aesit).Services.size();
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;msgout.serial (nbs);
+
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;for (SIT sit = (*aesit).Services.begin(); sit != (*aesit).Services.end(); sit++)
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// send info about services of the AES
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;msgout.serial ((*sit).Id, (*sit).AliasName, (*sit).ShortName, (*sit).LongName);
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;msgout.serial ((*sit).Ready, (*sit).Connected, (*sit).InConfig);
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;msgout.serialCont ((*sit).Commands);
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}
+ &nbsp; &nbsp; &nbsp; &nbsp;}
+ &nbsp; &nbsp; &nbsp; &nbsp;CNetManager::send (&quot;AS&quot;, msgout, from);
+
+ &nbsp; &nbsp; &nbsp; &nbsp;displayServices ();
+
+ &nbsp; &nbsp; &nbsp; &nbsp;//
+ &nbsp; &nbsp; &nbsp; &nbsp;// send service alias list
+ &nbsp; &nbsp; &nbsp; &nbsp;//
+
+ &nbsp; &nbsp; &nbsp; &nbsp;nlinfo(&quot;send SAL to admin startup&quot;);
+
+ &nbsp; &nbsp; &nbsp; &nbsp;for (aesit = AdminExecutorServices.begin(); aesit != AdminExecutorServices.end(); aesit++)
+ &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;CMessage msgout2 (CNetManager::getSIDA (&quot;AS&quot;), &quot;SAL&quot;);
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;msgout2.serial ((*aesit).Id);
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;msgout2.serialCont ((*aesit).ServiceAliasList);
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;CNetManager::send (&quot;AS&quot;, msgout2, from);
+ &nbsp; &nbsp; &nbsp; &nbsp;}
+}
+
+
+static void cbExecuteSystemCommand (CMessage&amp; msgin, TSockId from, CCallbackNetBase &amp;netbase)
+{
+ &nbsp; &nbsp; &nbsp; &nbsp;string command;
+ &nbsp; &nbsp; &nbsp; &nbsp;uint32 aesid;
+ &nbsp; &nbsp; &nbsp; &nbsp;msgin.serial (aesid);
+ &nbsp; &nbsp; &nbsp; &nbsp;msgin.serial (command);
+
+ &nbsp; &nbsp; &nbsp; &nbsp;AESIT aesit = findAdminExecutorService (aesid, false);
+ &nbsp; &nbsp; &nbsp; &nbsp;if (aesit == AdminExecutorServices.end())
+ &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// don't find the aes, send an error message
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;messageToClient (0, &quot;couldn't execute command, as didn't find the aes&quot;, from);
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;return;
+ &nbsp; &nbsp; &nbsp; &nbsp;}
+
+ &nbsp; &nbsp; &nbsp; &nbsp;// send the resquest to the AES
+
+ &nbsp; &nbsp; &nbsp; &nbsp;CMessage msgout (CNetManager::getSIDA((*aesit).ServerAlias), &quot;SYS&quot;);
+ &nbsp; &nbsp; &nbsp; &nbsp;msgout.serial (command);
+ &nbsp; &nbsp; &nbsp; &nbsp;CNetManager::send ((*aesit).ServerAlias, msgout);
+}
+
+
+static void cbStartService (CMessage&amp; msgin, TSockId from, CCallbackNetBase &amp;netbase)
+{
+ &nbsp; &nbsp; &nbsp; &nbsp;string serviceAlias;
+ &nbsp; &nbsp; &nbsp; &nbsp;uint32 aesid;
+ &nbsp; &nbsp; &nbsp; &nbsp;msgin.serial (aesid);
+ &nbsp; &nbsp; &nbsp; &nbsp;msgin.serial (serviceAlias);
+
+ &nbsp; &nbsp; &nbsp; &nbsp;AESIT aesit = findAdminExecutorService (aesid, false);
+ &nbsp; &nbsp; &nbsp; &nbsp;if (aesit == AdminExecutorServices.end())
+ &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// don't find the aes, send an error message
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;messageToClient (0, &quot;couldn't start service, as didn't find the aes&quot;, from);
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;return;
+ &nbsp; &nbsp; &nbsp; &nbsp;}
+
+ &nbsp; &nbsp; &nbsp; &nbsp;// send the resquest to the AES
+
+ &nbsp; &nbsp; &nbsp; &nbsp;CMessage msgout (CNetManager::getSIDA((*aesit).ServerAlias), &quot;STARTS&quot;);
+ &nbsp; &nbsp; &nbsp; &nbsp;msgout.serial (serviceAlias);
+ &nbsp; &nbsp; &nbsp; &nbsp;CNetManager::send ((*aesit).ServerAlias, msgout);
+}
+
+static void cbStopService (CMessage&amp; msgin, TSockId from, CCallbackNetBase &amp;netbase)
+{
+ &nbsp; &nbsp; &nbsp; &nbsp;uint32 aesid, sid;
+ &nbsp; &nbsp; &nbsp; &nbsp;msgin.serial (aesid);
+ &nbsp; &nbsp; &nbsp; &nbsp;msgin.serial (sid);
+
+ &nbsp; &nbsp; &nbsp; &nbsp;AESIT aesit = findAdminExecutorService (aesid, false);
+ &nbsp; &nbsp; &nbsp; &nbsp;if (aesit == AdminExecutorServices.end())
+ &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;messageToClient (0, &quot;couldn't stop service, as didn't find the aes&quot;, from);
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// don't find the aes, send an error message
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;return;
+ &nbsp; &nbsp; &nbsp; &nbsp;}
+
+ &nbsp; &nbsp; &nbsp; &nbsp;SIT sit = (*aesit).findService (sid, false);
+ &nbsp; &nbsp; &nbsp; &nbsp;if (sit == (*aesit).Services.end())
+ &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// don't find the s, send an error message
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;messageToClient (0, &quot;couldn't stop service, as didn't find the service&quot;, from);
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;return;
+ &nbsp; &nbsp; &nbsp; &nbsp;}
+
+ &nbsp; &nbsp; &nbsp; &nbsp;// send the resquest to the AES
+
+ &nbsp; &nbsp; &nbsp; &nbsp;CMessage msgout (CNetManager::getSIDA((*aesit).ServerAlias), &quot;STOPS&quot;);
+ &nbsp; &nbsp; &nbsp; &nbsp;msgout.serial (sid);
+ &nbsp; &nbsp; &nbsp; &nbsp;CNetManager::send ((*aesit).ServerAlias, msgout);
+}
+
+static void cbExecCommand (CMessage&amp; msgin, TSockId from, CCallbackNetBase &amp;netbase)
+{
+ &nbsp; &nbsp; &nbsp; &nbsp;uint32 aesid, sid;
+ &nbsp; &nbsp; &nbsp; &nbsp;string command;
+ &nbsp; &nbsp; &nbsp; &nbsp;msgin.serial (aesid);
+ &nbsp; &nbsp; &nbsp; &nbsp;msgin.serial (sid);
+ &nbsp; &nbsp; &nbsp; &nbsp;msgin.serial (command);
+
+ &nbsp; &nbsp; &nbsp; &nbsp;AESIT aesit = findAdminExecutorService (aesid, false);
+ &nbsp; &nbsp; &nbsp; &nbsp;if (aesit == AdminExecutorServices.end())
+ &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;messageToClient (0, &quot;couldn't stop service, as didn't find the aes&quot;, from);
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// don't find the aes, send an error message
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;return;
+ &nbsp; &nbsp; &nbsp; &nbsp;}
+
+ &nbsp; &nbsp; &nbsp; &nbsp;SIT sit = (*aesit).findService (sid, false);
+ &nbsp; &nbsp; &nbsp; &nbsp;if (sit == (*aesit).Services.end())
+ &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// don't find the s, send an error message
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;messageToClient (0, &quot;couldn't stop service, as didn't find the service&quot;, from);
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;return;
+ &nbsp; &nbsp; &nbsp; &nbsp;}
+
+ &nbsp; &nbsp; &nbsp; &nbsp;// send the resquest to the AES
+
+ &nbsp; &nbsp; &nbsp; &nbsp;CMessage msgout (CNetManager::getSIDA((*aesit).ServerAlias), &quot;EXEC_COMMAND&quot;);
+ &nbsp; &nbsp; &nbsp; &nbsp;msgout.serial (sid);
+ &nbsp; &nbsp; &nbsp; &nbsp;msgout.serial (command);
+ &nbsp; &nbsp; &nbsp; &nbsp;CNetManager::send ((*aesit).ServerAlias, msgout);
+}
+
+static void cbStartAllServices (CMessage&amp; msgin, TSockId from, CCallbackNetBase &amp;netbase)
+{
+ &nbsp; &nbsp; &nbsp; &nbsp;initStartAllServices ();
+}
+
+static void cbStopAllServices (CMessage&amp; msgin, TSockId from, CCallbackNetBase &amp;netbase)
+{
+ &nbsp; &nbsp; &nbsp; &nbsp;for (AESIT aesit = AdminExecutorServices.begin(); aesit != AdminExecutorServices.end(); aesit++)
+ &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;for (SIT sit = (*aesit).Services.begin(); sit != (*aesit).Services.end(); sit++)
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;if ((*sit).Connected)
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;CMessage msgout (CNetManager::getSIDA((*aesit).ServerAlias), &quot;STOPS&quot;);
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;msgout.serial ((*sit).Id);
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;CNetManager::send ((*aesit).ServerAlias, msgout);
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}
+ &nbsp; &nbsp; &nbsp; &nbsp;}
+}
+
+TCallbackItem ClientCallbackArray[] =
+{
+ &nbsp; &nbsp; &nbsp; &nbsp;{ &quot;SYS&quot;, cbExecuteSystemCommand },
+ &nbsp; &nbsp; &nbsp; &nbsp;{ &quot;STARTS&quot;, cbStartService },
+ &nbsp; &nbsp; &nbsp; &nbsp;{ &quot;STOPS&quot;, cbStopService },
+ &nbsp; &nbsp; &nbsp; &nbsp;{ &quot;EXEC_COMMAND&quot;, cbExecCommand },
+ &nbsp; &nbsp; &nbsp; &nbsp;{ &quot;START_ALL_SERVICES&quot;, cbStartAllServices },
+ &nbsp; &nbsp; &nbsp; &nbsp;{ &quot;STOP_ALL_SERVICES&quot;, cbStopAllServices },
+};
+
+////////////////////////////////////////////////////////////////////////////////////////////////////////
+////////////////////////////////////////////////////////////////////////////////////////////////////////
+////////////////// SERVICE IMPLEMENTATION //////////////////////////////////////////////////////////////
+////////////////////////////////////////////////////////////////////////////////////////////////////////
+////////////////////////////////////////////////////////////////////////////////////////////////////////
+
+class CAdminService : public IService
+{
+public:
+
+ &nbsp; &nbsp; &nbsp; &nbsp;/// Init the service, load the universal time.
+ &nbsp; &nbsp; &nbsp; &nbsp;void &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;init ()
+ &nbsp; &nbsp; &nbsp; &nbsp;{
+// &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;DebugLog-&gt;addNegativeFilter (&quot;L0:&quot;);
+// &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;DebugLog-&gt;addNegativeFilter (&quot;L1:&quot;);
+// &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;DebugLog-&gt;addNegativeFilter (&quot;L2:&quot;);
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;CNetManager::setConnectionCallback (&quot;AS&quot;, clientConnection, NULL);
+
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;//
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// Get the list of AESHosts, add in the structures and create connection to all AES
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;//
+
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;CConfigFile::CVar &amp;host = ConfigFile.getVar (&quot;AESHosts&quot;);
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;sint i;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;for (i = 0 ; i &lt; host.size (); i+=2)
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;string serverAlias = host.asString(i);
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;string serverAddr = host.asString(i+1);
+
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// add to the list
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;CAdminExecutorService aes;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;aes.ServerAlias = serverAlias;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;aes.ServerAddr = serverAddr;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;AdminExecutorServices.push_back (aes);
+
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// connect to the AES
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;CNetManager::setConnectionCallback (serverAlias, cbAESConnection, NULL);
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;CNetManager::setDisconnectionCallback (serverAlias, cbAESDisconnection, NULL);
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;CNetManager::addClient (serverAlias, serverAddr+&quot;:49996&quot;);
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;CNetManager::addCallbackArray (serverAlias, AESCallbackArray, sizeof (AESCallbackArray)/sizeof(AESCallbackArray[0]));
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}
+
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;//
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// Get the list of services in the shard
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;//
+
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;CConfigFile::CVar &amp;serv = ConfigFile.getVar (&quot;Services&quot;);
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;for (i = 0 ; i &lt; serv.size (); i+=2)
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;string serverAlias = serv.asString(i);
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;string serviceAlias = serv.asString(i+1);
+
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;AESIT aesit = findAdminExecutorService (serverAlias);
+
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// add new AES in the list
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;CService s;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;s.AliasName = serviceAlias;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;s.InConfig = true;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;(*aesit).Services.push_back (s);
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;displayServices ();
+ &nbsp; &nbsp; &nbsp; &nbsp;}
+};
+
+
+// AS is a server connection to the admin client
+// AESAS is a client connection to the admin executor
+
+/// Naming Service
+NLNET_SERVICE_MAIN (CAdminService, &quot;AS&quot;, &quot;admin_service&quot;, 49995, ClientCallbackArray);
+</PRE> \ No newline at end of file
diff --git a/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cpp?rev=1.11&content-type=text/x-cvsweb-markup/index.html b/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cpp?rev=1.11&content-type=text/x-cvsweb-markup/index.html
new file mode 100644
index 00000000..ee08cca2
--- /dev/null
+++ b/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cpp?rev=1.11&content-type=text/x-cvsweb-markup/index.html
@@ -0,0 +1,947 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"><HTML>
+<HEAD><style> A { color:black }</style>
+<!-- hennerik CVSweb $Revision: 1.93 $ -->
+<TITLE>code/nelns/admin_service/admin_service.cpp - view - 1.11</TITLE></HEAD>
+<BODY BGCOLOR="#eeeeee">
+<table width="100%" border=0 cellspacing=0 cellpadding=1 bgcolor="#aaaaaa"><tr valign=bottom><td><a href="admin_service.cpp"><IMG SRC="http://www.nevrax.org/inc/img/picto-up.gif" ALT="[BACK]" BORDER="0" WIDTH="14" HEIGHT="13"></a> <b>Return to <A HREF="admin_service.cpp">admin_service.cpp</A>
+ CVS log</b> <IMG SRC="http://www.nevrax.org/inc/img/picto-news.gif" ALT="[TXT]" BORDER="0" WIDTH="13" HEIGHT="15"></td><td align=right><IMG SRC="http://www.nevrax.org/inc/img/picto-dir.gif" ALT="[DIR]" BORDER="0" WIDTH="15" HEIGHT="13"> <b>Up to <a href="/cvs/cvsweb.cgi/">Nevrax</a> / <a href="/cvs/cvsweb.cgi/code/">code</a> / <a href="/cvs/cvsweb.cgi/code/nelns/">nelns</a> / <a href="/cvs/cvsweb.cgi/code/nelns/admin_service/">admin_service</a></b></td></tr></table><HR noshade><table width="100%"><tr><td bgcolor="#ffffff">File: <a href="/cvs/cvsweb.cgi/">Nevrax</a> / <a href="/cvs/cvsweb.cgi/code/">code</a> / <a href="/cvs/cvsweb.cgi/code/nelns/">nelns</a> / <a href="/cvs/cvsweb.cgi/code/nelns/admin_service/">admin_service</a> / <a href="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cpp">admin_service.cpp</a>&nbsp;(<A HREF="/cvs/cvsweb.cgi/~checkout~/code/nelns/admin_service/admin_service.cpp?rev=1.11" target="cvs_checkout" onClick="window.open('/cvs/cvsweb.cgi/~checkout~/code/nelns/admin_service/admin_service.cpp?rev=1.11','cvs_checkout','resizeable,scrollbars');"><b>download</b></A>)<BR>
+Revision <B>1.11</B>, <i>Tue Jul 10 16:49:53 2001 UTC</i> (12 months, 2 weeks ago) by <i>lecroart</i>
+<BR>Branch: <b>MAIN</b>
+<BR>Changes since <b>1.10: +18 -14
+ lines</b><PRE>
+BUGFIX: when a service isn't ready and already disconnected, it doesn't crash anymore
+</PRE>
+</td></tr></table><HR noshade><PRE>/** \file admin_service.cpp
+ * Admin Service (AS)
+ *
+ * $Id: admin_service.cpp,v 1.11 2001/07/10 16:49:53 lecroart Exp $
+ *
+ */
+
+/* Copyright, 2000 Nevrax Ltd.
+ *
+ * This file is part of NEVRAX NeL Network Services.
+ * NEVRAX NeL Network Services is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2, or (at your option)
+ * any later version.
+ *
+ * NEVRAX NeL Network Services is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with NEVRAX NeL Network Services; see the file COPYING. If not, write to the
+ * Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston,
+ * MA 02111-1307, USA.
+ */
+
+#include &lt;string&gt;
+#include &lt;list&gt;
+
+#include &quot;nel/net/service.h&quot;
+#include &quot;nel/misc/debug.h&quot;
+#include &quot;nel/misc/config_file.h&quot;
+#include &quot;nel/misc/command.h&quot;
+
+#include &quot;nel/net/net_manager.h&quot;
+
+using namespace std;
+using namespace NLMISC;
+using namespace NLNET;
+
+////////////////////////
+
+
+struct CService
+{
+ &nbsp; &nbsp; &nbsp; &nbsp;CService () : Id(0xFFFFFFFF), Ready(false), Connected(false), InConfig(false) { }
+
+ &nbsp; &nbsp; &nbsp; &nbsp;uint32 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;Id; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;/// uint32 to identify the service
+ &nbsp; &nbsp; &nbsp; &nbsp;string &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;AliasName; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;/// alias of the service used in the AES and AS to find him (unique per AES)
+ &nbsp; &nbsp; &nbsp; &nbsp;string &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;ShortName; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;/// name of the service in short format (&quot;NS&quot; for example)
+ &nbsp; &nbsp; &nbsp; &nbsp;string &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;LongName; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;/// name of the service in long format (&quot;naming_service&quot;)
+ &nbsp; &nbsp; &nbsp; &nbsp;bool &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;Ready; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;/// true if the service is ready
+ &nbsp; &nbsp; &nbsp; &nbsp;bool &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;Connected; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;/// true if the service is connected to the AES
+ &nbsp; &nbsp; &nbsp; &nbsp;bool &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;InConfig; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;/// true if the service is in the configuration
+ &nbsp; &nbsp; &nbsp; &nbsp;std::vector&lt;NLMISC::CSerialCommand&gt; &nbsp; &nbsp; &nbsp; &nbsp;Commands;
+
+ &nbsp; &nbsp; &nbsp; &nbsp;void setValues (const CService &amp;t)
+ &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// copy all except gtk stuffs
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;Id = t.Id;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;AliasName = t.AliasName;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;ShortName = t.ShortName;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;LongName = t.LongName;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;Ready = t.Ready;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;Connected = t.Connected;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;//InConfig = t.InConfig; never change the inconfig value
+ &nbsp; &nbsp; &nbsp; &nbsp;}
+};
+
+typedef list&lt;CService&gt; TServices;
+typedef list&lt;CService&gt;::iterator SIT;
+
+struct CAdminExecutorService
+{
+ &nbsp; &nbsp; &nbsp; &nbsp;CAdminExecutorService () : Id(NextId++), SockId(NULL), Connected(false) { }
+
+ &nbsp; &nbsp; &nbsp; &nbsp;TSockId &nbsp; &nbsp; &nbsp; &nbsp;SockId; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;/// connection to the AES
+ &nbsp; &nbsp; &nbsp; &nbsp;uint32 &nbsp; &nbsp; &nbsp; &nbsp;Id; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;/// uint32 to identify the AES where the service is running
+
+ &nbsp; &nbsp; &nbsp; &nbsp;string &nbsp; &nbsp; &nbsp; &nbsp;ServerAlias; &nbsp; &nbsp; &nbsp; &nbsp;/// name of the layer4 connection, used to send message to this AES
+ &nbsp; &nbsp; &nbsp; &nbsp;string &nbsp; &nbsp; &nbsp; &nbsp;ServerAddr; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;/// address in a string format (only the ip)
+ &nbsp; &nbsp; &nbsp; &nbsp;bool &nbsp; &nbsp; &nbsp; &nbsp;Connected; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;/// true if the AES is connected
+
+ &nbsp; &nbsp; &nbsp; &nbsp;TServices Services;
+
+ &nbsp; &nbsp; &nbsp; &nbsp;vector&lt;string&gt; &nbsp; &nbsp; &nbsp; &nbsp;ServiceAliasList;
+
+ &nbsp; &nbsp; &nbsp; &nbsp;SIT findService (uint32 sid, bool asrt = true)
+ &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;SIT sit;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;for (sit = Services.begin(); sit != Services.end(); sit++)
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;if ((*sit).Id == sid)
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;break;
+
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;if (asrt)
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;nlassert (sit != Services.end());
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;return sit;
+ &nbsp; &nbsp; &nbsp; &nbsp;}
+
+ &nbsp; &nbsp; &nbsp; &nbsp;SIT findService (const string &amp;alias, bool asrt = true)
+ &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;SIT sit;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;for (sit = Services.begin(); sit != Services.end(); sit++)
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;if ((*sit).AliasName == alias)
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;break;
+
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;if (asrt)
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;nlassert (sit != Services.end());
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;return sit;
+ &nbsp; &nbsp; &nbsp; &nbsp;}
+
+private:
+ &nbsp; &nbsp; &nbsp; &nbsp;static uint32 NextId;
+};
+
+uint32 CAdminExecutorService::NextId = 1;
+
+typedef list&lt;CAdminExecutorService&gt; TAdminExecutorServices;
+typedef list&lt;CAdminExecutorService&gt;::iterator AESIT;
+
+TAdminExecutorServices AdminExecutorServices;
+
+/////////////////
+
+AESIT findAdminExecutorService (uint32 aesid, bool asrt = true)
+{
+ &nbsp; &nbsp; &nbsp; &nbsp;AESIT aesit;
+ &nbsp; &nbsp; &nbsp; &nbsp;for (aesit = AdminExecutorServices.begin(); aesit != AdminExecutorServices.end(); aesit++)
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;if ((*aesit).Id == aesid)
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;break;
+
+ &nbsp; &nbsp; &nbsp; &nbsp;if (asrt)
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;nlassert (aesit != AdminExecutorServices.end());
+ &nbsp; &nbsp; &nbsp; &nbsp;return aesit;
+}
+
+AESIT findAdminExecutorService (string ServerAlias, bool asrt = true)
+{
+ &nbsp; &nbsp; &nbsp; &nbsp;AESIT aesit;
+ &nbsp; &nbsp; &nbsp; &nbsp;for (aesit = AdminExecutorServices.begin(); aesit != AdminExecutorServices.end(); aesit++)
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;if ((*aesit).ServerAlias == ServerAlias)
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;break;
+
+ &nbsp; &nbsp; &nbsp; &nbsp;if (asrt)
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;nlassert (aesit != AdminExecutorServices.end());
+ &nbsp; &nbsp; &nbsp; &nbsp;return aesit;
+}
+
+void displayServices ()
+{
+ &nbsp; &nbsp; &nbsp; &nbsp;for (AESIT aesit = AdminExecutorServices.begin(); aesit != AdminExecutorServices.end(); aesit++)
+ &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;nlinfo (&quot;&gt; Admin&quot;);
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;for (SIT sit = (*aesit).Services.begin(); sit != (*aesit).Services.end(); sit++)
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;nlinfo (&quot; &nbsp;&gt; '%s' '%s' '%s' '%s' %d %d&quot;, (*aesit).SockId-&gt;asString().c_str(), (*sit).AliasName.c_str(), (*sit).ShortName.c_str(), (*sit).LongName.c_str(), (*aesit).Id, (*sit).Id);
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}
+ &nbsp; &nbsp; &nbsp; &nbsp;}
+}
+
+
+// send a message to a client. if ok is 0 it s an error or it s a normal
+void messageToClient (uint8 ok, string msg, TSockId from = NULL)
+{
+ &nbsp; &nbsp; &nbsp; &nbsp;CMessage msgout (CNetManager::getSIDA (&quot;AS&quot;), &quot;MESSAGE&quot;);
+ &nbsp; &nbsp; &nbsp; &nbsp;msgout.serial (ok, msg);
+ &nbsp; &nbsp; &nbsp; &nbsp;CNetManager::send (&quot;AS&quot;, msgout, from);
+}
+
+
+////////////////////////////////////////////////////////////////////////////////////////////////////////
+////////////////////////////////////////////////////////////////////////////////////////////////////////
+/////////////////// SCRIPT MANAGER /////////////////////////////////////////////////////////////////////
+////////////////////////////////////////////////////////////////////////////////////////////////////////
+////////////////////////////////////////////////////////////////////////////////////////////////////////
+
+bool StartAllServices = false;
+uint32 StartAllServicesPos;
+
+void doNextStartAllServicesStep ()
+{
+ &nbsp; &nbsp; &nbsp; &nbsp;nlassert (StartAllServices);
+
+ &nbsp; &nbsp; &nbsp; &nbsp;// get the script
+ &nbsp; &nbsp; &nbsp; &nbsp;try
+ &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;CConfigFile::CVar &amp;script = IService::ConfigFile.getVar(&quot;Services&quot;);
+
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// check the position
+
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;if (StartAllServicesPos*2 &gt;= (uint32)script.size())
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;StartAllServices = false;
+
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;nlinfo(&quot;end of the script&quot;);
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;messageToClient (1, &quot;Start All Service finnished correctly&quot;);
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;return;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}
+
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// get the script line
+
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;string serverAlias;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;string serviceAlias;
+
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;try
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;serverAlias = script.asString (StartAllServicesPos*2);
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;serviceAlias = script.asString (StartAllServicesPos*2+1);
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;catch(EBadSize &amp;)
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;messageToClient (1, &quot;'Services' variable does not contains a good number of entries (must be a multiple of 2)&quot;);
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;nlwarning (&quot;'Services' variable does not contains a good number of entries (must be a multiple of 2)&quot;);
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;StartAllServices = false;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;return;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}
+
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;AESIT aesit = findAdminExecutorService (serverAlias, false);
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;if (aesit == AdminExecutorServices.end())
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;messageToClient (1, &quot;don't find the server&quot;);
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;nlwarning(&quot;don't find the server&quot;);
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;StartAllServices = false;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;return;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}
+
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// check if the service is not currently running
+
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;StartAllServicesPos++;
+
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;SIT sit = (*aesit).findService (serviceAlias);
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;if ((*sit).Connected)
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// the service is already running, go to the next process
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;doNextStartAllServicesStep ();
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;else
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// send the resquest to the AES
+
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;CMessage msgout (CNetManager::getSIDA((*aesit).ServerAlias), &quot;STARTS&quot;);
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;msgout.serial (serviceAlias);
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;CNetManager::send ((*aesit).ServerAlias, msgout);
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}
+ &nbsp; &nbsp; &nbsp; &nbsp;}
+ &nbsp; &nbsp; &nbsp; &nbsp;catch(EUnknownVar&amp;)
+ &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;messageToClient (1, &quot;'Services' variable is not found&quot;);
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;nlwarning (&quot;'Services' variable is not found&quot;);
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;StartAllServices = false;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;return;
+ &nbsp; &nbsp; &nbsp; &nbsp;}
+}
+
+void initStartAllServices ()
+{
+ &nbsp; &nbsp; &nbsp; &nbsp;if (StartAllServices)
+ &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;messageToClient (1, &quot;already running a script, reset it&quot;);
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;nlwarning(&quot;already running a script, reset it&quot;);
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;StartAllServices = false;
+ &nbsp; &nbsp; &nbsp; &nbsp;}
+
+ &nbsp; &nbsp; &nbsp; &nbsp;try
+ &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;CConfigFile::CVar &amp;script = IService::ConfigFile.getVar(&quot;Services&quot;);
+
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;for (sint i = 0 ; i &lt; script.size (); i+=2)
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;string serverAlias = script.asString(i);
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;AESIT aesit = findAdminExecutorService (serverAlias, false);
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;if (aesit == AdminExecutorServices.end())
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;messageToClient (1, &quot;an aes is not running, can't run the script&quot;);
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;nlwarning(&quot;aes '%s' isn't running, can't run the script&quot;, serverAlias.c_str());
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;return;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}
+ &nbsp; &nbsp; &nbsp; &nbsp;}
+ &nbsp; &nbsp; &nbsp; &nbsp;catch(EConfigFile &amp;)
+ &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;messageToClient (1, &quot;bad config file&quot;);
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;nlwarning (&quot;bad config file&quot;);
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;return;
+ &nbsp; &nbsp; &nbsp; &nbsp;}
+
+ &nbsp; &nbsp; &nbsp; &nbsp;StartAllServicesPos = 0;
+ &nbsp; &nbsp; &nbsp; &nbsp;StartAllServices = true;
+
+ &nbsp; &nbsp; &nbsp; &nbsp;doNextStartAllServicesStep();
+}
+
+
+////////////////////////////////////////////////////////////////////////////////////////////////////////
+////////////////////////////////////////////////////////////////////////////////////////////////////////
+////////////////// CONNECTION TO THE AES ///////////////////////////////////////////////////////////////
+////////////////////////////////////////////////////////////////////////////////////////////////////////
+////////////////////////////////////////////////////////////////////////////////////////////////////////
+
+
+static void cbExecuteSystemCommandResult (CMessage&amp; msgin, TSockId from, CCallbackNetBase &amp;netbase)
+{
+ &nbsp; &nbsp; &nbsp; &nbsp;vector&lt;string&gt; result;
+ &nbsp; &nbsp; &nbsp; &nbsp;msgin.serialCont (result);
+
+ &nbsp; &nbsp; &nbsp; &nbsp;nlinfo(&quot;command result&quot;);
+ &nbsp; &nbsp; &nbsp; &nbsp;for (uint i = 0; i &lt; result.size(); i++)
+ &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;printf (&quot;%s&quot;, result[i].c_str());
+ &nbsp; &nbsp; &nbsp; &nbsp;}
+ &nbsp; &nbsp; &nbsp; &nbsp;nlinfo(&quot;end of command result&quot;);
+}
+
+// get the service list from the admin exec and send the list to all admin client
+static void cbServiceList (CMessage&amp; msgin, TSockId from, CCallbackNetBase &amp;netbase)
+{
+ &nbsp; &nbsp; &nbsp; &nbsp;CAdminExecutorService *aes = (CAdminExecutorService*) (uint) from-&gt;appId();
+
+ &nbsp; &nbsp; &nbsp; &nbsp;//
+ &nbsp; &nbsp; &nbsp; &nbsp;// Get the list of service from aes
+ &nbsp; &nbsp; &nbsp; &nbsp;//
+
+ &nbsp; &nbsp; &nbsp; &nbsp;uint32 nbs;
+ &nbsp; &nbsp; &nbsp; &nbsp;msgin.serial (nbs);
+
+ &nbsp; &nbsp; &nbsp; &nbsp;for (uint32 i = 0; i &lt; nbs; i++)
+ &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// find the service
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;CService s;
+
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;msgin.serial (s.Id, s.AliasName, s.ShortName, s.LongName, s.Ready);
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;msgin.serialCont (s.Commands);
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;s.Connected = true;
+
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;if (!s.AliasName.empty())
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;SIT sit = aes-&gt;findService (s.AliasName, false);
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;if (sit == aes-&gt;Services.end ())
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;aes-&gt;Services.push_back (s);
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;else
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;nlassert (&quot;the service already exists with alias, update it&quot;);
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;(*sit).setValues (s);
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;else
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;SIT sit = aes-&gt;findService (s.Id, false);
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;if (sit == aes-&gt;Services.end ())
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;aes-&gt;Services.push_back (s);
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;else
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;nlassert (&quot;the service already exists with id, update it&quot;);
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;(*sit).setValues (s);
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}
+ &nbsp; &nbsp; &nbsp; &nbsp;}
+ &nbsp; &nbsp; &nbsp; &nbsp;
+ &nbsp; &nbsp; &nbsp; &nbsp;displayServices ();
+
+ &nbsp; &nbsp; &nbsp; &nbsp;//
+ &nbsp; &nbsp; &nbsp; &nbsp;// Send the new list to all admin
+ &nbsp; &nbsp; &nbsp; &nbsp;//
+
+ &nbsp; &nbsp; &nbsp; &nbsp;CMessage msgout (CNetManager::getSIDA (&quot;AS&quot;), &quot;SERVICE_LIST&quot;);
+ &nbsp; &nbsp; &nbsp; &nbsp;uint32 nbaes = 1;
+ &nbsp; &nbsp; &nbsp; &nbsp;msgout.serial (nbaes);
+ &nbsp; &nbsp; &nbsp; &nbsp;msgout.serial (aes-&gt;Id);
+ &nbsp; &nbsp; &nbsp; &nbsp;uint32 ss = aes-&gt;Services.size();
+ &nbsp; &nbsp; &nbsp; &nbsp;msgout.serial (ss);
+
+ &nbsp; &nbsp; &nbsp; &nbsp;for (SIT sit = aes-&gt;Services.begin(); sit != aes-&gt;Services.end(); sit++)
+ &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;msgout.serial ((*sit).Id, (*sit).AliasName, (*sit).ShortName, (*sit).LongName);
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;msgout.serial ((*sit).Ready, (*sit).Connected, (*sit).InConfig);
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;msgout.serialCont ((*sit).Commands);
+ &nbsp; &nbsp; &nbsp; &nbsp;}
+ &nbsp; &nbsp; &nbsp; &nbsp;CNetManager::send (&quot;AS&quot;, msgout, 0);
+}
+
+static void cbServiceAliasList (CMessage&amp; msgin, TSockId from, CCallbackNetBase &amp;netbase)
+{
+ &nbsp; &nbsp; &nbsp; &nbsp;// get the service list from the admin exec and send the list to all admin client
+ &nbsp; &nbsp; &nbsp; &nbsp;CAdminExecutorService *aes = (CAdminExecutorService*) (uint) from-&gt;appId();
+
+ &nbsp; &nbsp; &nbsp; &nbsp;aes-&gt;ServiceAliasList.clear ();
+ &nbsp; &nbsp; &nbsp; &nbsp;msgin.serialCont (aes-&gt;ServiceAliasList);
+
+ &nbsp; &nbsp; &nbsp; &nbsp;nlinfo(&quot;send SAL to admin callback from aes&quot;);
+
+ &nbsp; &nbsp; &nbsp; &nbsp;CMessage msgout (CNetManager::getSIDA (&quot;AS&quot;), &quot;SAL&quot;);
+ &nbsp; &nbsp; &nbsp; &nbsp;msgout.serial (aes-&gt;Id);
+ &nbsp; &nbsp; &nbsp; &nbsp;msgout.serialCont (aes-&gt;ServiceAliasList);
+ &nbsp; &nbsp; &nbsp; &nbsp;CNetManager::send (&quot;AS&quot;, msgout, 0);
+ &nbsp; &nbsp; &nbsp; &nbsp;
+ &nbsp; &nbsp; &nbsp; &nbsp;nlinfo(&quot;new service alias list&quot;);
+}
+
+
+static void cbServiceIdentification (CMessage&amp; msgin, TSockId from, CCallbackNetBase &amp;netbase)
+{
+ &nbsp; &nbsp; &nbsp; &nbsp;CAdminExecutorService *aes = (CAdminExecutorService*) (uint) from-&gt;appId();
+
+ &nbsp; &nbsp; &nbsp; &nbsp;uint32 sid;
+ &nbsp; &nbsp; &nbsp; &nbsp;string alias;
+
+ &nbsp; &nbsp; &nbsp; &nbsp;msgin.serial (sid, alias);
+
+ &nbsp; &nbsp; &nbsp; &nbsp;SIT sit;
+ &nbsp; &nbsp; &nbsp; &nbsp;if (!alias.empty())
+ &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;sit = aes-&gt;findService (alias, false);
+
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;if (sit == aes-&gt;Services.end ())
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// the alias is not found
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;nlwarning (&quot;new service with alias (%s) but not in my list&quot;, alias.c_str());
+
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;aes-&gt;Services.push_back (CService ());
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;sit = aes-&gt;Services.end();
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;sit--;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;else
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// normal case
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}
+ &nbsp; &nbsp; &nbsp; &nbsp;}
+ &nbsp; &nbsp; &nbsp; &nbsp;else
+ &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;sit = aes-&gt;findService (sid, false);
+
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;if (sit == aes-&gt;Services.end ())
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// normal case for unknown services
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;nlwarning (&quot;new service without alias and not in my list, add it&quot;);
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;else
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;nlwarning (&quot;new service without alias is already in my list with id %d, add it&quot;, sid);
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;aes-&gt;Services.push_back (CService ());
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;sit = aes-&gt;Services.end();
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;sit--;
+ &nbsp; &nbsp; &nbsp; &nbsp;}
+
+ &nbsp; &nbsp; &nbsp; &nbsp;(*sit).Id = sid;
+ &nbsp; &nbsp; &nbsp; &nbsp;(*sit).AliasName = alias;
+ &nbsp; &nbsp; &nbsp; &nbsp;(*sit).Connected = true;
+ &nbsp; &nbsp; &nbsp; &nbsp;msgin.serial ((*sit).ShortName, (*sit).LongName);
+ &nbsp; &nbsp; &nbsp; &nbsp;msgin.serialCont ((*sit).Commands);
+
+ &nbsp; &nbsp; &nbsp; &nbsp;nlinfo (&quot;*:%d:%d is identified to be '%s' '%s' '%s'&quot;, aes-&gt;Id, sid, (*sit).AliasName.c_str(), (*sit).ShortName.c_str(), (*sit).LongName.c_str());
+
+ &nbsp; &nbsp; &nbsp; &nbsp;// broadcast the message to all admin client
+ &nbsp; &nbsp; &nbsp; &nbsp;CMessage msgout (CNetManager::getSIDA (&quot;AS&quot;), &quot;SID&quot;);
+ &nbsp; &nbsp; &nbsp; &nbsp;msgout.serial (aes-&gt;Id, sid, (*sit).AliasName, (*sit).ShortName, (*sit).LongName);
+ &nbsp; &nbsp; &nbsp; &nbsp;msgout.serialCont ((*sit).Commands);
+
+ &nbsp; &nbsp; &nbsp; &nbsp;CNetManager::send (&quot;AS&quot;, msgout, 0);
+}
+
+static void cbServiceReady (CMessage&amp; msgin, TSockId from, CCallbackNetBase &amp;netbase)
+{
+ &nbsp; &nbsp; &nbsp; &nbsp;CAdminExecutorService *aes = (CAdminExecutorService*) (uint) from-&gt;appId();
+
+ &nbsp; &nbsp; &nbsp; &nbsp;uint32 sid;
+ &nbsp; &nbsp; &nbsp; &nbsp;msgin.serial (sid);
+
+ &nbsp; &nbsp; &nbsp; &nbsp;SIT sit = aes-&gt;findService(sid);
+ &nbsp; &nbsp; &nbsp; &nbsp;(*sit).Ready = true;
+
+ &nbsp; &nbsp; &nbsp; &nbsp;nlinfo (&quot;*:%d:%d is ready&quot;, aes-&gt;Id, sid);
+
+ &nbsp; &nbsp; &nbsp; &nbsp;// broadcast the message to all admin client
+ &nbsp; &nbsp; &nbsp; &nbsp;CMessage msgout (CNetManager::getSIDA (&quot;AS&quot;), &quot;SR&quot;);
+ &nbsp; &nbsp; &nbsp; &nbsp;msgout.serial (aes-&gt;Id, sid);
+ &nbsp; &nbsp; &nbsp; &nbsp;CNetManager::send (&quot;AS&quot;, msgout, 0);
+
+ &nbsp; &nbsp; &nbsp; &nbsp;// if we are in a script execution, continue
+ &nbsp; &nbsp; &nbsp; &nbsp;if (StartAllServices)
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;doNextStartAllServicesStep();
+}
+
+static void cbServiceConnection (CMessage&amp; msgin, TSockId from, CCallbackNetBase &amp;netbase)
+{
+ &nbsp; &nbsp; &nbsp; &nbsp;CAdminExecutorService *aes = (CAdminExecutorService*) (uint) from-&gt;appId();
+
+ &nbsp; &nbsp; &nbsp; &nbsp;uint32 sid;
+ &nbsp; &nbsp; &nbsp; &nbsp;msgin.serial (sid);
+
+ &nbsp; &nbsp; &nbsp; &nbsp;nlinfo (&quot;*:%d:%d connected&quot;, aes-&gt;Id, sid);
+
+ &nbsp; &nbsp; &nbsp; &nbsp;// don't do anything. we have to wait identification to add it in out lists
+
+/*
+ &nbsp; &nbsp; &nbsp; &nbsp;aes-&gt;Services.push_back (CService(sid));
+*/
+ &nbsp; &nbsp; &nbsp; &nbsp;// broadcast the message to all admin client
+ &nbsp; &nbsp; &nbsp; &nbsp;CMessage msgout (CNetManager::getSIDA (&quot;AS&quot;), &quot;SC&quot;);
+ &nbsp; &nbsp; &nbsp; &nbsp;msgout.serial (aes-&gt;Id, sid);
+ &nbsp; &nbsp; &nbsp; &nbsp;CNetManager::send (&quot;AS&quot;, msgout, 0);
+}
+
+static void cbServiceDisconnection (CMessage&amp; msgin, TSockId from, CCallbackNetBase &amp;netbase)
+{
+ &nbsp; &nbsp; &nbsp; &nbsp;CAdminExecutorService *aes = (CAdminExecutorService*) (uint) from-&gt;appId();
+
+ &nbsp; &nbsp; &nbsp; &nbsp;uint32 sid;
+ &nbsp; &nbsp; &nbsp; &nbsp;msgin.serial (sid);
+
+ &nbsp; &nbsp; &nbsp; &nbsp;nlinfo (&quot;*:%d:%d disconnected&quot;, aes-&gt;Id, sid);
+
+ &nbsp; &nbsp; &nbsp; &nbsp;SIT sit = aes-&gt;findService(sid, false);
+ &nbsp; &nbsp; &nbsp; &nbsp;
+ &nbsp; &nbsp; &nbsp; &nbsp;// broadcast the message to all admin client
+ &nbsp; &nbsp; &nbsp; &nbsp;CMessage msgout (CNetManager::getSIDA (&quot;AS&quot;), &quot;SD&quot;);
+ &nbsp; &nbsp; &nbsp; &nbsp;msgout.serial (aes-&gt;Id, sid);
+ &nbsp; &nbsp; &nbsp; &nbsp;CNetManager::send (&quot;AS&quot;, msgout, 0);
+
+ &nbsp; &nbsp; &nbsp; &nbsp;// the service could disconnect before it's identification, in this case, we don't have it in the service list
+ &nbsp; &nbsp; &nbsp; &nbsp;if (sit != aes-&gt;Services.end ())
+ &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;if ((*sit).InConfig)
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;(*sit).Ready = (*sit).Connected = false;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;(*sit).Id = 0xFFFFFFFF;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;(*sit).ShortName = (*sit).LongName = &quot;&quot;;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;(*sit).Commands.clear ();
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;else
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// erase only if it's not a service in the config
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;aes-&gt;Services.erase (sit);
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}
+ &nbsp; &nbsp; &nbsp; &nbsp;}
+
+ &nbsp; &nbsp; &nbsp; &nbsp;displayServices ();
+}
+
+// i'm connected to a new admin executor service
+void cbAESConnection (const string &amp;serviceName, TSockId from, void *arg)
+{
+ &nbsp; &nbsp; &nbsp; &nbsp;AESIT aesit = findAdminExecutorService (serviceName); &nbsp; &nbsp; &nbsp; &nbsp;
+ &nbsp; &nbsp; &nbsp; &nbsp;CAdminExecutorService *aes = &amp;(*aesit);
+ &nbsp; &nbsp; &nbsp; &nbsp;
+ &nbsp; &nbsp; &nbsp; &nbsp;// set the appid to find the aes in O(1)
+ &nbsp; &nbsp; &nbsp; &nbsp;from-&gt;setAppId ((uint64)(uint)aes);
+
+ &nbsp; &nbsp; &nbsp; &nbsp;aes-&gt;Connected = true;
+ &nbsp; &nbsp; &nbsp; &nbsp;nlinfo (&quot;*:%d:* connected&quot;, aes-&gt;Id);
+/*
+ &nbsp; &nbsp; &nbsp; &nbsp;// broadcast the message that an admin exec is connected to all admin client
+ &nbsp; &nbsp; &nbsp; &nbsp;CMessage msgout (CNetManager::getSIDA (&quot;AS&quot;), &quot;AESC&quot;);
+ &nbsp; &nbsp; &nbsp; &nbsp;msgout.serial (aes-&gt;Id);
+ &nbsp; &nbsp; &nbsp; &nbsp;CNetManager::send (&quot;AS&quot;, msgout, 0);
+*/
+
+ &nbsp; &nbsp; &nbsp; &nbsp;// broadcast the new state of this AES
+ &nbsp; &nbsp; &nbsp; &nbsp;CMessage msgout (CNetManager::getSIDA (&quot;AS&quot;), &quot;AES_LIST&quot;);
+ &nbsp; &nbsp; &nbsp; &nbsp;uint32 nbaes = 1;
+ &nbsp; &nbsp; &nbsp; &nbsp;msgout.serial (nbaes);
+ &nbsp; &nbsp; &nbsp; &nbsp;msgout.serial (aes-&gt;Id, aes-&gt;ServerAlias, aes-&gt;ServerAddr, aes-&gt;Connected);
+ &nbsp; &nbsp; &nbsp; &nbsp;CNetManager::send (&quot;AS&quot;, msgout, 0);
+}
+
+// i'm disconnected to an admin executor service
+void cbAESDisconnection (const string &amp;serviceName, TSockId from, void *arg)
+{
+ &nbsp; &nbsp; &nbsp; &nbsp;// get the aes with the appid
+ &nbsp; &nbsp; &nbsp; &nbsp;CAdminExecutorService *aes = (CAdminExecutorService*) (uint) from-&gt;appId();
+
+ &nbsp; &nbsp; &nbsp; &nbsp;aes-&gt;Connected = false;
+
+ &nbsp; &nbsp; &nbsp; &nbsp;SIT sit;
+ &nbsp; &nbsp; &nbsp; &nbsp;for (sit = aes-&gt;Services.begin(); sit != aes-&gt;Services.end();)
+ &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// keep only inconfig services
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;if ((*sit).InConfig)
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;(*sit).Id = 0xFFFFFFFF;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;(*sit).ShortName = (*sit).LongName = &quot;&quot;;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;(*sit).Ready = (*sit).Connected = false;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;sit++;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;else
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// erase only if it's not a service in the config
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;sit = aes-&gt;Services.erase (sit);
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}
+ &nbsp; &nbsp; &nbsp; &nbsp;}
+
+ &nbsp; &nbsp; &nbsp; &nbsp;nlinfo (&quot;*:%d:* disconnected&quot;, aes-&gt;Id);
+/* &nbsp; &nbsp; &nbsp;
+ &nbsp; &nbsp; &nbsp; &nbsp;// broadcast the message to all admin client that an admin exec is disconnected
+ &nbsp; &nbsp; &nbsp; &nbsp;CMessage msgout (CNetManager::getSIDA (&quot;AS&quot;), &quot;AESD&quot;);
+ &nbsp; &nbsp; &nbsp; &nbsp;msgout.serial (aes-&gt;Id);
+ &nbsp; &nbsp; &nbsp; &nbsp;CNetManager::send (&quot;AS&quot;, msgout, 0);
+*/
+
+ &nbsp; &nbsp; &nbsp; &nbsp;displayServices ();
+
+ &nbsp; &nbsp; &nbsp; &nbsp;// broadcast the new state of this AES
+ &nbsp; &nbsp; &nbsp; &nbsp;CMessage msgout (CNetManager::getSIDA (&quot;AS&quot;), &quot;AES_LIST&quot;);
+ &nbsp; &nbsp; &nbsp; &nbsp;uint32 nbaes = 1;
+ &nbsp; &nbsp; &nbsp; &nbsp;msgout.serial (nbaes);
+ &nbsp; &nbsp; &nbsp; &nbsp;msgout.serial (aes-&gt;Id, aes-&gt;ServerAlias, aes-&gt;ServerAddr, aes-&gt;Connected);
+ &nbsp; &nbsp; &nbsp; &nbsp;CNetManager::send (&quot;AS&quot;, msgout, 0);
+}
+
+static void cbLog (CMessage&amp; msgin, TSockId from, CCallbackNetBase &amp;netbase)
+{
+ &nbsp; &nbsp; &nbsp; &nbsp;// received an answer for a command, give it to all admin client
+
+ &nbsp; &nbsp; &nbsp; &nbsp;// get the aes with the appid
+ &nbsp; &nbsp; &nbsp; &nbsp;CAdminExecutorService *aes = (CAdminExecutorService*) (uint) from-&gt;appId();
+
+ &nbsp; &nbsp; &nbsp; &nbsp;// broadcast the message to the admin service
+ &nbsp; &nbsp; &nbsp; &nbsp;CMessage msgout (CNetManager::getSIDA (&quot;AS&quot;), &quot;XLOG&quot;);
+ &nbsp; &nbsp; &nbsp; &nbsp;string log;
+ &nbsp; &nbsp; &nbsp; &nbsp;uint32 sid;
+ &nbsp; &nbsp; &nbsp; &nbsp;msgin.serial (sid);
+ &nbsp; &nbsp; &nbsp; &nbsp;msgin.serial (log);
+
+ &nbsp; &nbsp; &nbsp; &nbsp;msgout.serial (aes-&gt;Id);
+ &nbsp; &nbsp; &nbsp; &nbsp;msgout.serial (sid);
+ &nbsp; &nbsp; &nbsp; &nbsp;msgout.serial (log);
+ &nbsp; &nbsp; &nbsp; &nbsp;CNetManager::send (&quot;AS&quot;, msgout, 0);
+}
+
+
+TCallbackItem AESCallbackArray[] =
+{
+ &nbsp; &nbsp; &nbsp; &nbsp;{ &quot;ESCR&quot;, cbExecuteSystemCommandResult },
+
+ &nbsp; &nbsp; &nbsp; &nbsp;{ &quot;SL&quot;, cbServiceList },
+ &nbsp; &nbsp; &nbsp; &nbsp;{ &quot;SID&quot;, cbServiceIdentification },
+ &nbsp; &nbsp; &nbsp; &nbsp;{ &quot;SR&quot;, cbServiceReady },
+ &nbsp; &nbsp; &nbsp; &nbsp;{ &quot;SC&quot;, cbServiceConnection },
+ &nbsp; &nbsp; &nbsp; &nbsp;{ &quot;SD&quot;, cbServiceDisconnection },
+
+ &nbsp; &nbsp; &nbsp; &nbsp;{ &quot;SAL&quot;, cbServiceAliasList },
+
+ &nbsp; &nbsp; &nbsp; &nbsp;{ &quot;XLOG&quot;, cbLog },
+};
+
+
+////////////////////////////////////////////////////////////////////////////////////////////////////////
+////////////////////////////////////////////////////////////////////////////////////////////////////////
+////////////////// CONNECTION TO THE CLIENT ////////////////////////////////////////////////////////////
+////////////////////////////////////////////////////////////////////////////////////////////////////////
+////////////////////////////////////////////////////////////////////////////////////////////////////////
+
+//
+// A new admin client is connected.
+//
+void clientConnection (const string &amp;serviceName, TSockId from, void *arg)
+{
+ &nbsp; &nbsp; &nbsp; &nbsp;// new client, send him all out info about services
+
+ &nbsp; &nbsp; &nbsp; &nbsp;nlinfo (&quot;client %s is connected&quot;, from-&gt;asString().c_str());
+
+ &nbsp; &nbsp; &nbsp; &nbsp;//
+ &nbsp; &nbsp; &nbsp; &nbsp;// send the list of all the aes
+ &nbsp; &nbsp; &nbsp; &nbsp;//
+
+ &nbsp; &nbsp; &nbsp; &nbsp;CMessage msgout2 (CNetManager::getSIDA (&quot;AS&quot;), &quot;AES_LIST&quot;);
+ &nbsp; &nbsp; &nbsp; &nbsp;AESIT aesit;
+ &nbsp; &nbsp; &nbsp; &nbsp;uint32 nbaes = (uint32)AdminExecutorServices.size();
+ &nbsp; &nbsp; &nbsp; &nbsp;msgout2.serial (nbaes);
+ &nbsp; &nbsp; &nbsp; &nbsp;for (aesit = AdminExecutorServices.begin(); aesit != AdminExecutorServices.end(); aesit++)
+ &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// send info about the AES
+
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;msgout2.serial ((*aesit).Id, (*aesit).ServerAlias, (*aesit).ServerAddr, (*aesit).Connected);
+ &nbsp; &nbsp; &nbsp; &nbsp;}
+ &nbsp; &nbsp; &nbsp; &nbsp;CNetManager::send (&quot;AS&quot;, msgout2, from);
+
+ &nbsp; &nbsp; &nbsp; &nbsp;//
+ &nbsp; &nbsp; &nbsp; &nbsp;// send the list of all services
+ &nbsp; &nbsp; &nbsp; &nbsp;//
+
+ &nbsp; &nbsp; &nbsp; &nbsp;CMessage msgout (CNetManager::getSIDA (&quot;AS&quot;), &quot;SERVICE_LIST&quot;);
+ &nbsp; &nbsp; &nbsp; &nbsp;nbaes = (uint32)AdminExecutorServices.size();
+ &nbsp; &nbsp; &nbsp; &nbsp;msgout.serial (nbaes);
+ &nbsp; &nbsp; &nbsp; &nbsp;for (aesit = AdminExecutorServices.begin(); aesit != AdminExecutorServices.end(); aesit++)
+ &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;msgout.serial ((*aesit).Id);
+
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;uint32 nbs = (uint32)(*aesit).Services.size();
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;msgout.serial (nbs);
+
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;for (SIT sit = (*aesit).Services.begin(); sit != (*aesit).Services.end(); sit++)
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// send info about services of the AES
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;msgout.serial ((*sit).Id, (*sit).AliasName, (*sit).ShortName, (*sit).LongName);
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;msgout.serial ((*sit).Ready, (*sit).Connected, (*sit).InConfig);
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;msgout.serialCont ((*sit).Commands);
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}
+ &nbsp; &nbsp; &nbsp; &nbsp;}
+ &nbsp; &nbsp; &nbsp; &nbsp;CNetManager::send (&quot;AS&quot;, msgout, from);
+
+ &nbsp; &nbsp; &nbsp; &nbsp;displayServices ();
+
+ &nbsp; &nbsp; &nbsp; &nbsp;//
+ &nbsp; &nbsp; &nbsp; &nbsp;// send service alias list
+ &nbsp; &nbsp; &nbsp; &nbsp;//
+
+ &nbsp; &nbsp; &nbsp; &nbsp;nlinfo(&quot;send SAL to admin startup&quot;);
+
+ &nbsp; &nbsp; &nbsp; &nbsp;for (aesit = AdminExecutorServices.begin(); aesit != AdminExecutorServices.end(); aesit++)
+ &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;CMessage msgout2 (CNetManager::getSIDA (&quot;AS&quot;), &quot;SAL&quot;);
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;msgout2.serial ((*aesit).Id);
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;msgout2.serialCont ((*aesit).ServiceAliasList);
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;CNetManager::send (&quot;AS&quot;, msgout2, from);
+ &nbsp; &nbsp; &nbsp; &nbsp;}
+}
+
+
+static void cbExecuteSystemCommand (CMessage&amp; msgin, TSockId from, CCallbackNetBase &amp;netbase)
+{
+ &nbsp; &nbsp; &nbsp; &nbsp;string command;
+ &nbsp; &nbsp; &nbsp; &nbsp;uint32 aesid;
+ &nbsp; &nbsp; &nbsp; &nbsp;msgin.serial (aesid);
+ &nbsp; &nbsp; &nbsp; &nbsp;msgin.serial (command);
+
+ &nbsp; &nbsp; &nbsp; &nbsp;AESIT aesit = findAdminExecutorService (aesid, false);
+ &nbsp; &nbsp; &nbsp; &nbsp;if (aesit == AdminExecutorServices.end())
+ &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// don't find the aes, send an error message
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;messageToClient (0, &quot;couldn't execute command, as didn't find the aes&quot;, from);
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;return;
+ &nbsp; &nbsp; &nbsp; &nbsp;}
+
+ &nbsp; &nbsp; &nbsp; &nbsp;// send the resquest to the AES
+
+ &nbsp; &nbsp; &nbsp; &nbsp;CMessage msgout (CNetManager::getSIDA((*aesit).ServerAlias), &quot;SYS&quot;);
+ &nbsp; &nbsp; &nbsp; &nbsp;msgout.serial (command);
+ &nbsp; &nbsp; &nbsp; &nbsp;CNetManager::send ((*aesit).ServerAlias, msgout);
+}
+
+
+static void cbStartService (CMessage&amp; msgin, TSockId from, CCallbackNetBase &amp;netbase)
+{
+ &nbsp; &nbsp; &nbsp; &nbsp;string serviceAlias;
+ &nbsp; &nbsp; &nbsp; &nbsp;uint32 aesid;
+ &nbsp; &nbsp; &nbsp; &nbsp;msgin.serial (aesid);
+ &nbsp; &nbsp; &nbsp; &nbsp;msgin.serial (serviceAlias);
+
+ &nbsp; &nbsp; &nbsp; &nbsp;AESIT aesit = findAdminExecutorService (aesid, false);
+ &nbsp; &nbsp; &nbsp; &nbsp;if (aesit == AdminExecutorServices.end())
+ &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// don't find the aes, send an error message
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;messageToClient (0, &quot;couldn't start service, as didn't find the aes&quot;, from);
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;return;
+ &nbsp; &nbsp; &nbsp; &nbsp;}
+
+ &nbsp; &nbsp; &nbsp; &nbsp;// send the resquest to the AES
+
+ &nbsp; &nbsp; &nbsp; &nbsp;CMessage msgout (CNetManager::getSIDA((*aesit).ServerAlias), &quot;STARTS&quot;);
+ &nbsp; &nbsp; &nbsp; &nbsp;msgout.serial (serviceAlias);
+ &nbsp; &nbsp; &nbsp; &nbsp;CNetManager::send ((*aesit).ServerAlias, msgout);
+}
+
+static void cbStopService (CMessage&amp; msgin, TSockId from, CCallbackNetBase &amp;netbase)
+{
+ &nbsp; &nbsp; &nbsp; &nbsp;uint32 aesid, sid;
+ &nbsp; &nbsp; &nbsp; &nbsp;msgin.serial (aesid);
+ &nbsp; &nbsp; &nbsp; &nbsp;msgin.serial (sid);
+
+ &nbsp; &nbsp; &nbsp; &nbsp;AESIT aesit = findAdminExecutorService (aesid, false);
+ &nbsp; &nbsp; &nbsp; &nbsp;if (aesit == AdminExecutorServices.end())
+ &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;messageToClient (0, &quot;couldn't stop service, as didn't find the aes&quot;, from);
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// don't find the aes, send an error message
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;return;
+ &nbsp; &nbsp; &nbsp; &nbsp;}
+
+ &nbsp; &nbsp; &nbsp; &nbsp;SIT sit = (*aesit).findService (sid, false);
+ &nbsp; &nbsp; &nbsp; &nbsp;if (sit == (*aesit).Services.end())
+ &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// don't find the s, send an error message
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;messageToClient (0, &quot;couldn't stop service, as didn't find the service&quot;, from);
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;return;
+ &nbsp; &nbsp; &nbsp; &nbsp;}
+
+ &nbsp; &nbsp; &nbsp; &nbsp;// send the resquest to the AES
+
+ &nbsp; &nbsp; &nbsp; &nbsp;CMessage msgout (CNetManager::getSIDA((*aesit).ServerAlias), &quot;STOPS&quot;);
+ &nbsp; &nbsp; &nbsp; &nbsp;msgout.serial (sid);
+ &nbsp; &nbsp; &nbsp; &nbsp;CNetManager::send ((*aesit).ServerAlias, msgout);
+}
+
+static void cbExecCommand (CMessage&amp; msgin, TSockId from, CCallbackNetBase &amp;netbase)
+{
+ &nbsp; &nbsp; &nbsp; &nbsp;uint32 aesid, sid;
+ &nbsp; &nbsp; &nbsp; &nbsp;string command;
+ &nbsp; &nbsp; &nbsp; &nbsp;msgin.serial (aesid);
+ &nbsp; &nbsp; &nbsp; &nbsp;msgin.serial (sid);
+ &nbsp; &nbsp; &nbsp; &nbsp;msgin.serial (command);
+
+ &nbsp; &nbsp; &nbsp; &nbsp;AESIT aesit = findAdminExecutorService (aesid, false);
+ &nbsp; &nbsp; &nbsp; &nbsp;if (aesit == AdminExecutorServices.end())
+ &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;messageToClient (0, &quot;couldn't stop service, as didn't find the aes&quot;, from);
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// don't find the aes, send an error message
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;return;
+ &nbsp; &nbsp; &nbsp; &nbsp;}
+
+ &nbsp; &nbsp; &nbsp; &nbsp;SIT sit = (*aesit).findService (sid, false);
+ &nbsp; &nbsp; &nbsp; &nbsp;if (sit == (*aesit).Services.end())
+ &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// don't find the s, send an error message
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;messageToClient (0, &quot;couldn't stop service, as didn't find the service&quot;, from);
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;return;
+ &nbsp; &nbsp; &nbsp; &nbsp;}
+
+ &nbsp; &nbsp; &nbsp; &nbsp;// send the resquest to the AES
+
+ &nbsp; &nbsp; &nbsp; &nbsp;CMessage msgout (CNetManager::getSIDA((*aesit).ServerAlias), &quot;EXEC_COMMAND&quot;);
+ &nbsp; &nbsp; &nbsp; &nbsp;msgout.serial (sid);
+ &nbsp; &nbsp; &nbsp; &nbsp;msgout.serial (command);
+ &nbsp; &nbsp; &nbsp; &nbsp;CNetManager::send ((*aesit).ServerAlias, msgout);
+}
+
+static void cbStartAllServices (CMessage&amp; msgin, TSockId from, CCallbackNetBase &amp;netbase)
+{
+ &nbsp; &nbsp; &nbsp; &nbsp;initStartAllServices ();
+}
+
+static void cbStopAllServices (CMessage&amp; msgin, TSockId from, CCallbackNetBase &amp;netbase)
+{
+ &nbsp; &nbsp; &nbsp; &nbsp;for (AESIT aesit = AdminExecutorServices.begin(); aesit != AdminExecutorServices.end(); aesit++)
+ &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;for (SIT sit = (*aesit).Services.begin(); sit != (*aesit).Services.end(); sit++)
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;if ((*sit).Connected)
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;CMessage msgout (CNetManager::getSIDA((*aesit).ServerAlias), &quot;STOPS&quot;);
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;msgout.serial ((*sit).Id);
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;CNetManager::send ((*aesit).ServerAlias, msgout);
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}
+ &nbsp; &nbsp; &nbsp; &nbsp;}
+}
+
+TCallbackItem ClientCallbackArray[] =
+{
+ &nbsp; &nbsp; &nbsp; &nbsp;{ &quot;SYS&quot;, cbExecuteSystemCommand },
+ &nbsp; &nbsp; &nbsp; &nbsp;{ &quot;STARTS&quot;, cbStartService },
+ &nbsp; &nbsp; &nbsp; &nbsp;{ &quot;STOPS&quot;, cbStopService },
+ &nbsp; &nbsp; &nbsp; &nbsp;{ &quot;EXEC_COMMAND&quot;, cbExecCommand },
+ &nbsp; &nbsp; &nbsp; &nbsp;{ &quot;START_ALL_SERVICES&quot;, cbStartAllServices },
+ &nbsp; &nbsp; &nbsp; &nbsp;{ &quot;STOP_ALL_SERVICES&quot;, cbStopAllServices },
+};
+
+////////////////////////////////////////////////////////////////////////////////////////////////////////
+////////////////////////////////////////////////////////////////////////////////////////////////////////
+////////////////// SERVICE IMPLEMENTATION //////////////////////////////////////////////////////////////
+////////////////////////////////////////////////////////////////////////////////////////////////////////
+////////////////////////////////////////////////////////////////////////////////////////////////////////
+
+class CAdminService : public IService
+{
+public:
+
+ &nbsp; &nbsp; &nbsp; &nbsp;/// Init the service, load the universal time.
+ &nbsp; &nbsp; &nbsp; &nbsp;void &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;init ()
+ &nbsp; &nbsp; &nbsp; &nbsp;{
+// &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;DebugLog-&gt;addNegativeFilter (&quot;L0:&quot;);
+// &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;DebugLog-&gt;addNegativeFilter (&quot;L1:&quot;);
+// &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;DebugLog-&gt;addNegativeFilter (&quot;L2:&quot;);
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;CNetManager::setConnectionCallback (&quot;AS&quot;, clientConnection, NULL);
+
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;//
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// Get the list of AESHosts, add in the structures and create connection to all AES
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;//
+
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;CConfigFile::CVar &amp;host = ConfigFile.getVar (&quot;AESHosts&quot;);
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;sint i;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;for (i = 0 ; i &lt; host.size (); i+=2)
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;string serverAlias = host.asString(i);
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;string serverAddr = host.asString(i+1);
+
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// add to the list
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;CAdminExecutorService aes;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;aes.ServerAlias = serverAlias;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;aes.ServerAddr = serverAddr;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;AdminExecutorServices.push_back (aes);
+
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// connect to the AES
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;CNetManager::setConnectionCallback (serverAlias, cbAESConnection, NULL);
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;CNetManager::setDisconnectionCallback (serverAlias, cbAESDisconnection, NULL);
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;CNetManager::addClient (serverAlias, serverAddr+&quot;:49996&quot;);
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;CNetManager::addCallbackArray (serverAlias, AESCallbackArray, sizeof (AESCallbackArray)/sizeof(AESCallbackArray[0]));
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}
+
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;//
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// Get the list of services in the shard
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;//
+
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;CConfigFile::CVar &amp;serv = ConfigFile.getVar (&quot;Services&quot;);
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;for (i = 0 ; i &lt; serv.size (); i+=2)
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;string serverAlias = serv.asString(i);
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;string serviceAlias = serv.asString(i+1);
+
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;AESIT aesit = findAdminExecutorService (serverAlias);
+
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// add new AES in the list
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;CService s;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;s.AliasName = serviceAlias;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;s.InConfig = true;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;(*aesit).Services.push_back (s);
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;displayServices ();
+ &nbsp; &nbsp; &nbsp; &nbsp;}
+};
+
+
+// AS is a server connection to the admin client
+// AESAS is a client connection to the admin executor
+
+/// Naming Service
+NLNET_SERVICE_MAIN (CAdminService, &quot;AS&quot;, &quot;admin_service&quot;, 49995, ClientCallbackArray);
+</PRE> \ No newline at end of file
diff --git a/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cpp?rev=1.12&content-type=text/x-cvsweb-markup/index.html b/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cpp?rev=1.12&content-type=text/x-cvsweb-markup/index.html
new file mode 100644
index 00000000..f9dda49d
--- /dev/null
+++ b/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cpp?rev=1.12&content-type=text/x-cvsweb-markup/index.html
@@ -0,0 +1,995 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"><HTML>
+<HEAD><style> A { color:black }</style>
+<!-- hennerik CVSweb $Revision: 1.93 $ -->
+<TITLE>code/nelns/admin_service/admin_service.cpp - view - 1.12</TITLE></HEAD>
+<BODY BGCOLOR="#eeeeee">
+<table width="100%" border=0 cellspacing=0 cellpadding=1 bgcolor="#aaaaaa"><tr valign=bottom><td><a href="admin_service.cpp"><IMG SRC="http://www.nevrax.org/inc/img/picto-up.gif" ALT="[BACK]" BORDER="0" WIDTH="14" HEIGHT="13"></a> <b>Return to <A HREF="admin_service.cpp">admin_service.cpp</A>
+ CVS log</b> <IMG SRC="http://www.nevrax.org/inc/img/picto-news.gif" ALT="[TXT]" BORDER="0" WIDTH="13" HEIGHT="15"></td><td align=right><IMG SRC="http://www.nevrax.org/inc/img/picto-dir.gif" ALT="[DIR]" BORDER="0" WIDTH="15" HEIGHT="13"> <b>Up to <a href="/cvs/cvsweb.cgi/">Nevrax</a> / <a href="/cvs/cvsweb.cgi/code/">code</a> / <a href="/cvs/cvsweb.cgi/code/nelns/">nelns</a> / <a href="/cvs/cvsweb.cgi/code/nelns/admin_service/">admin_service</a></b></td></tr></table><HR noshade><table width="100%"><tr><td bgcolor="#ffffff">File: <a href="/cvs/cvsweb.cgi/">Nevrax</a> / <a href="/cvs/cvsweb.cgi/code/">code</a> / <a href="/cvs/cvsweb.cgi/code/nelns/">nelns</a> / <a href="/cvs/cvsweb.cgi/code/nelns/admin_service/">admin_service</a> / <a href="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cpp">admin_service.cpp</a>&nbsp;(<A HREF="/cvs/cvsweb.cgi/~checkout~/code/nelns/admin_service/admin_service.cpp?rev=1.12" target="cvs_checkout" onClick="window.open('/cvs/cvsweb.cgi/~checkout~/code/nelns/admin_service/admin_service.cpp?rev=1.12','cvs_checkout','resizeable,scrollbars');"><b>download</b></A>)<BR>
+Revision <B>1.12</B>, <i>Fri Feb 15 17:07:43 2002 UTC</i> (5 months, 1 week ago) by <i>lecroart</i>
+<BR>Branch: <b>MAIN</b>
+<BR>Changes since <b>1.11: +50 -2
+ lines</b><PRE>
+ADDED: login password
+</PRE>
+</td></tr></table><HR noshade><PRE>/** \file admin_service.cpp
+ * Admin Service (AS)
+ *
+ * $Id: admin_service.cpp,v 1.12 2002/02/15 17:07:43 lecroart Exp $
+ *
+ */
+
+/* Copyright, 2000 Nevrax Ltd.
+ *
+ * This file is part of NEVRAX NeL Network Services.
+ * NEVRAX NeL Network Services is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2, or (at your option)
+ * any later version.
+ *
+ * NEVRAX NeL Network Services is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with NEVRAX NeL Network Services; see the file COPYING. If not, write to the
+ * Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston,
+ * MA 02111-1307, USA.
+ */
+
+#include &lt;string&gt;
+#include &lt;list&gt;
+
+#include &quot;nel/net/service.h&quot;
+#include &quot;nel/misc/debug.h&quot;
+#include &quot;nel/misc/config_file.h&quot;
+#include &quot;nel/misc/command.h&quot;
+
+#include &quot;nel/net/net_manager.h&quot;
+
+using namespace std;
+using namespace NLMISC;
+using namespace NLNET;
+
+////////////////////////
+
+
+struct CService
+{
+ &nbsp; &nbsp; &nbsp; &nbsp;CService () : Id(0xFFFFFFFF), Ready(false), Connected(false), InConfig(false) { }
+
+ &nbsp; &nbsp; &nbsp; &nbsp;uint32 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;Id; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;/// uint32 to identify the service
+ &nbsp; &nbsp; &nbsp; &nbsp;string &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;AliasName; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;/// alias of the service used in the AES and AS to find him (unique per AES)
+ &nbsp; &nbsp; &nbsp; &nbsp;string &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;ShortName; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;/// name of the service in short format (&quot;NS&quot; for example)
+ &nbsp; &nbsp; &nbsp; &nbsp;string &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;LongName; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;/// name of the service in long format (&quot;naming_service&quot;)
+ &nbsp; &nbsp; &nbsp; &nbsp;bool &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;Ready; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;/// true if the service is ready
+ &nbsp; &nbsp; &nbsp; &nbsp;bool &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;Connected; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;/// true if the service is connected to the AES
+ &nbsp; &nbsp; &nbsp; &nbsp;bool &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;InConfig; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;/// true if the service is in the configuration
+ &nbsp; &nbsp; &nbsp; &nbsp;std::vector&lt;NLMISC::CSerialCommand&gt; &nbsp; &nbsp; &nbsp; &nbsp;Commands;
+
+ &nbsp; &nbsp; &nbsp; &nbsp;void setValues (const CService &amp;t)
+ &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// copy all except gtk stuffs
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;Id = t.Id;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;AliasName = t.AliasName;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;ShortName = t.ShortName;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;LongName = t.LongName;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;Ready = t.Ready;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;Connected = t.Connected;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;//InConfig = t.InConfig; never change the inconfig value
+ &nbsp; &nbsp; &nbsp; &nbsp;}
+};
+
+typedef list&lt;CService&gt; TServices;
+typedef list&lt;CService&gt;::iterator SIT;
+
+struct CAdminExecutorService
+{
+ &nbsp; &nbsp; &nbsp; &nbsp;CAdminExecutorService () : Id(NextId++), SockId(NULL), Connected(false) { }
+
+ &nbsp; &nbsp; &nbsp; &nbsp;TSockId &nbsp; &nbsp; &nbsp; &nbsp;SockId; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;/// connection to the AES
+ &nbsp; &nbsp; &nbsp; &nbsp;uint32 &nbsp; &nbsp; &nbsp; &nbsp;Id; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;/// uint32 to identify the AES where the service is running
+
+ &nbsp; &nbsp; &nbsp; &nbsp;string &nbsp; &nbsp; &nbsp; &nbsp;ServerAlias; &nbsp; &nbsp; &nbsp; &nbsp;/// name of the layer4 connection, used to send message to this AES
+ &nbsp; &nbsp; &nbsp; &nbsp;string &nbsp; &nbsp; &nbsp; &nbsp;ServerAddr; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;/// address in a string format (only the ip)
+ &nbsp; &nbsp; &nbsp; &nbsp;bool &nbsp; &nbsp; &nbsp; &nbsp;Connected; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;/// true if the AES is connected
+
+ &nbsp; &nbsp; &nbsp; &nbsp;TServices Services;
+
+ &nbsp; &nbsp; &nbsp; &nbsp;vector&lt;string&gt; &nbsp; &nbsp; &nbsp; &nbsp;ServiceAliasList;
+
+ &nbsp; &nbsp; &nbsp; &nbsp;SIT findService (uint32 sid, bool asrt = true)
+ &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;SIT sit;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;for (sit = Services.begin(); sit != Services.end(); sit++)
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;if ((*sit).Id == sid)
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;break;
+
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;if (asrt)
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;nlassert (sit != Services.end());
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;return sit;
+ &nbsp; &nbsp; &nbsp; &nbsp;}
+
+ &nbsp; &nbsp; &nbsp; &nbsp;SIT findService (const string &amp;alias, bool asrt = true)
+ &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;SIT sit;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;for (sit = Services.begin(); sit != Services.end(); sit++)
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;if ((*sit).AliasName == alias)
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;break;
+
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;if (asrt)
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;nlassert (sit != Services.end());
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;return sit;
+ &nbsp; &nbsp; &nbsp; &nbsp;}
+
+private:
+ &nbsp; &nbsp; &nbsp; &nbsp;static uint32 NextId;
+};
+
+uint32 CAdminExecutorService::NextId = 1;
+
+typedef list&lt;CAdminExecutorService&gt; TAdminExecutorServices;
+typedef list&lt;CAdminExecutorService&gt;::iterator AESIT;
+
+TAdminExecutorServices AdminExecutorServices;
+
+/////////////////
+
+AESIT findAdminExecutorService (uint32 aesid, bool asrt = true)
+{
+ &nbsp; &nbsp; &nbsp; &nbsp;AESIT aesit;
+ &nbsp; &nbsp; &nbsp; &nbsp;for (aesit = AdminExecutorServices.begin(); aesit != AdminExecutorServices.end(); aesit++)
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;if ((*aesit).Id == aesid)
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;break;
+
+ &nbsp; &nbsp; &nbsp; &nbsp;if (asrt)
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;nlassert (aesit != AdminExecutorServices.end());
+ &nbsp; &nbsp; &nbsp; &nbsp;return aesit;
+}
+
+AESIT findAdminExecutorService (string ServerAlias, bool asrt = true)
+{
+ &nbsp; &nbsp; &nbsp; &nbsp;AESIT aesit;
+ &nbsp; &nbsp; &nbsp; &nbsp;for (aesit = AdminExecutorServices.begin(); aesit != AdminExecutorServices.end(); aesit++)
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;if ((*aesit).ServerAlias == ServerAlias)
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;break;
+
+ &nbsp; &nbsp; &nbsp; &nbsp;if (asrt)
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;nlassert (aesit != AdminExecutorServices.end());
+ &nbsp; &nbsp; &nbsp; &nbsp;return aesit;
+}
+
+void displayServices ()
+{
+ &nbsp; &nbsp; &nbsp; &nbsp;for (AESIT aesit = AdminExecutorServices.begin(); aesit != AdminExecutorServices.end(); aesit++)
+ &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;nlinfo (&quot;&gt; Admin&quot;);
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;for (SIT sit = (*aesit).Services.begin(); sit != (*aesit).Services.end(); sit++)
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;nlinfo (&quot; &nbsp;&gt; '%s' '%s' '%s' '%s' %d %d&quot;, (*aesit).SockId-&gt;asString().c_str(), (*sit).AliasName.c_str(), (*sit).ShortName.c_str(), (*sit).LongName.c_str(), (*aesit).Id, (*sit).Id);
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}
+ &nbsp; &nbsp; &nbsp; &nbsp;}
+}
+
+
+// send a message to a client. if ok is 0 it s an error or it s a normal
+void messageToClient (uint8 ok, string msg, TSockId from = NULL)
+{
+ &nbsp; &nbsp; &nbsp; &nbsp;CMessage msgout (CNetManager::getSIDA (&quot;AS&quot;), &quot;MESSAGE&quot;);
+ &nbsp; &nbsp; &nbsp; &nbsp;msgout.serial (ok, msg);
+ &nbsp; &nbsp; &nbsp; &nbsp;CNetManager::send (&quot;AS&quot;, msgout, from);
+}
+
+
+////////////////////////////////////////////////////////////////////////////////////////////////////////
+////////////////////////////////////////////////////////////////////////////////////////////////////////
+/////////////////// SCRIPT MANAGER /////////////////////////////////////////////////////////////////////
+////////////////////////////////////////////////////////////////////////////////////////////////////////
+////////////////////////////////////////////////////////////////////////////////////////////////////////
+
+bool StartAllServices = false;
+uint32 StartAllServicesPos;
+
+void doNextStartAllServicesStep ()
+{
+ &nbsp; &nbsp; &nbsp; &nbsp;nlassert (StartAllServices);
+
+ &nbsp; &nbsp; &nbsp; &nbsp;// get the script
+ &nbsp; &nbsp; &nbsp; &nbsp;try
+ &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;CConfigFile::CVar &amp;script = IService::ConfigFile.getVar(&quot;Services&quot;);
+
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// check the position
+
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;if (StartAllServicesPos*2 &gt;= (uint32)script.size())
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;StartAllServices = false;
+
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;nlinfo(&quot;end of the script&quot;);
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;messageToClient (1, &quot;Start All Service finnished correctly&quot;);
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;return;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}
+
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// get the script line
+
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;string serverAlias;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;string serviceAlias;
+
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;try
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;serverAlias = script.asString (StartAllServicesPos*2);
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;serviceAlias = script.asString (StartAllServicesPos*2+1);
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;catch(EBadSize &amp;)
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;messageToClient (1, &quot;'Services' variable does not contains a good number of entries (must be a multiple of 2)&quot;);
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;nlwarning (&quot;'Services' variable does not contains a good number of entries (must be a multiple of 2)&quot;);
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;StartAllServices = false;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;return;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}
+
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;AESIT aesit = findAdminExecutorService (serverAlias, false);
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;if (aesit == AdminExecutorServices.end())
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;messageToClient (1, &quot;don't find the server&quot;);
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;nlwarning(&quot;don't find the server&quot;);
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;StartAllServices = false;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;return;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}
+
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// check if the service is not currently running
+
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;StartAllServicesPos++;
+
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;SIT sit = (*aesit).findService (serviceAlias);
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;if ((*sit).Connected)
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// the service is already running, go to the next process
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;doNextStartAllServicesStep ();
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;else
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// send the resquest to the AES
+
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;CMessage msgout (CNetManager::getSIDA((*aesit).ServerAlias), &quot;STARTS&quot;);
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;msgout.serial (serviceAlias);
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;CNetManager::send ((*aesit).ServerAlias, msgout);
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}
+ &nbsp; &nbsp; &nbsp; &nbsp;}
+ &nbsp; &nbsp; &nbsp; &nbsp;catch(EUnknownVar&amp;)
+ &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;messageToClient (1, &quot;'Services' variable is not found&quot;);
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;nlwarning (&quot;'Services' variable is not found&quot;);
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;StartAllServices = false;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;return;
+ &nbsp; &nbsp; &nbsp; &nbsp;}
+}
+
+void initStartAllServices ()
+{
+ &nbsp; &nbsp; &nbsp; &nbsp;if (StartAllServices)
+ &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;messageToClient (1, &quot;already running a script, reset it&quot;);
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;nlwarning(&quot;already running a script, reset it&quot;);
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;StartAllServices = false;
+ &nbsp; &nbsp; &nbsp; &nbsp;}
+
+ &nbsp; &nbsp; &nbsp; &nbsp;try
+ &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;CConfigFile::CVar &amp;script = IService::ConfigFile.getVar(&quot;Services&quot;);
+
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;for (sint i = 0 ; i &lt; script.size (); i+=2)
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;string serverAlias = script.asString(i);
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;AESIT aesit = findAdminExecutorService (serverAlias, false);
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;if (aesit == AdminExecutorServices.end())
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;messageToClient (1, &quot;an aes is not running, can't run the script&quot;);
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;nlwarning(&quot;aes '%s' isn't running, can't run the script&quot;, serverAlias.c_str());
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;return;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}
+ &nbsp; &nbsp; &nbsp; &nbsp;}
+ &nbsp; &nbsp; &nbsp; &nbsp;catch(EConfigFile &amp;)
+ &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;messageToClient (1, &quot;bad config file&quot;);
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;nlwarning (&quot;bad config file&quot;);
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;return;
+ &nbsp; &nbsp; &nbsp; &nbsp;}
+
+ &nbsp; &nbsp; &nbsp; &nbsp;StartAllServicesPos = 0;
+ &nbsp; &nbsp; &nbsp; &nbsp;StartAllServices = true;
+
+ &nbsp; &nbsp; &nbsp; &nbsp;doNextStartAllServicesStep();
+}
+
+
+////////////////////////////////////////////////////////////////////////////////////////////////////////
+////////////////////////////////////////////////////////////////////////////////////////////////////////
+////////////////// CONNECTION TO THE AES ///////////////////////////////////////////////////////////////
+////////////////////////////////////////////////////////////////////////////////////////////////////////
+////////////////////////////////////////////////////////////////////////////////////////////////////////
+
+
+static void cbExecuteSystemCommandResult (CMessage&amp; msgin, TSockId from, CCallbackNetBase &amp;netbase)
+{
+ &nbsp; &nbsp; &nbsp; &nbsp;vector&lt;string&gt; result;
+ &nbsp; &nbsp; &nbsp; &nbsp;msgin.serialCont (result);
+
+ &nbsp; &nbsp; &nbsp; &nbsp;nlinfo(&quot;command result&quot;);
+ &nbsp; &nbsp; &nbsp; &nbsp;for (uint i = 0; i &lt; result.size(); i++)
+ &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;printf (&quot;%s&quot;, result[i].c_str());
+ &nbsp; &nbsp; &nbsp; &nbsp;}
+ &nbsp; &nbsp; &nbsp; &nbsp;nlinfo(&quot;end of command result&quot;);
+}
+
+// get the service list from the admin exec and send the list to all admin client
+static void cbServiceList (CMessage&amp; msgin, TSockId from, CCallbackNetBase &amp;netbase)
+{
+ &nbsp; &nbsp; &nbsp; &nbsp;CAdminExecutorService *aes = (CAdminExecutorService*) (uint) from-&gt;appId();
+
+ &nbsp; &nbsp; &nbsp; &nbsp;//
+ &nbsp; &nbsp; &nbsp; &nbsp;// Get the list of service from aes
+ &nbsp; &nbsp; &nbsp; &nbsp;//
+
+ &nbsp; &nbsp; &nbsp; &nbsp;uint32 nbs;
+ &nbsp; &nbsp; &nbsp; &nbsp;msgin.serial (nbs);
+
+ &nbsp; &nbsp; &nbsp; &nbsp;for (uint32 i = 0; i &lt; nbs; i++)
+ &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// find the service
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;CService s;
+
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;msgin.serial (s.Id, s.AliasName, s.ShortName, s.LongName, s.Ready);
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;msgin.serialCont (s.Commands);
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;s.Connected = true;
+
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;if (!s.AliasName.empty())
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;SIT sit = aes-&gt;findService (s.AliasName, false);
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;if (sit == aes-&gt;Services.end ())
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;aes-&gt;Services.push_back (s);
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;else
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;nlassert (&quot;the service already exists with alias, update it&quot;);
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;(*sit).setValues (s);
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;else
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;SIT sit = aes-&gt;findService (s.Id, false);
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;if (sit == aes-&gt;Services.end ())
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;aes-&gt;Services.push_back (s);
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;else
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;nlassert (&quot;the service already exists with id, update it&quot;);
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;(*sit).setValues (s);
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}
+ &nbsp; &nbsp; &nbsp; &nbsp;}
+ &nbsp; &nbsp; &nbsp; &nbsp;
+ &nbsp; &nbsp; &nbsp; &nbsp;displayServices ();
+
+ &nbsp; &nbsp; &nbsp; &nbsp;//
+ &nbsp; &nbsp; &nbsp; &nbsp;// Send the new list to all admin
+ &nbsp; &nbsp; &nbsp; &nbsp;//
+
+ &nbsp; &nbsp; &nbsp; &nbsp;CMessage msgout (CNetManager::getSIDA (&quot;AS&quot;), &quot;SERVICE_LIST&quot;);
+ &nbsp; &nbsp; &nbsp; &nbsp;uint32 nbaes = 1;
+ &nbsp; &nbsp; &nbsp; &nbsp;msgout.serial (nbaes);
+ &nbsp; &nbsp; &nbsp; &nbsp;msgout.serial (aes-&gt;Id);
+ &nbsp; &nbsp; &nbsp; &nbsp;uint32 ss = aes-&gt;Services.size();
+ &nbsp; &nbsp; &nbsp; &nbsp;msgout.serial (ss);
+
+ &nbsp; &nbsp; &nbsp; &nbsp;for (SIT sit = aes-&gt;Services.begin(); sit != aes-&gt;Services.end(); sit++)
+ &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;msgout.serial ((*sit).Id, (*sit).AliasName, (*sit).ShortName, (*sit).LongName);
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;msgout.serial ((*sit).Ready, (*sit).Connected, (*sit).InConfig);
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;msgout.serialCont ((*sit).Commands);
+ &nbsp; &nbsp; &nbsp; &nbsp;}
+ &nbsp; &nbsp; &nbsp; &nbsp;CNetManager::send (&quot;AS&quot;, msgout, 0);
+}
+
+static void cbServiceAliasList (CMessage&amp; msgin, TSockId from, CCallbackNetBase &amp;netbase)
+{
+ &nbsp; &nbsp; &nbsp; &nbsp;// get the service list from the admin exec and send the list to all admin client
+ &nbsp; &nbsp; &nbsp; &nbsp;CAdminExecutorService *aes = (CAdminExecutorService*) (uint) from-&gt;appId();
+
+ &nbsp; &nbsp; &nbsp; &nbsp;aes-&gt;ServiceAliasList.clear ();
+ &nbsp; &nbsp; &nbsp; &nbsp;msgin.serialCont (aes-&gt;ServiceAliasList);
+
+ &nbsp; &nbsp; &nbsp; &nbsp;nlinfo(&quot;send SAL to admin callback from aes&quot;);
+
+ &nbsp; &nbsp; &nbsp; &nbsp;CMessage msgout (CNetManager::getSIDA (&quot;AS&quot;), &quot;SAL&quot;);
+ &nbsp; &nbsp; &nbsp; &nbsp;msgout.serial (aes-&gt;Id);
+ &nbsp; &nbsp; &nbsp; &nbsp;msgout.serialCont (aes-&gt;ServiceAliasList);
+ &nbsp; &nbsp; &nbsp; &nbsp;CNetManager::send (&quot;AS&quot;, msgout, 0);
+ &nbsp; &nbsp; &nbsp; &nbsp;
+ &nbsp; &nbsp; &nbsp; &nbsp;nlinfo(&quot;new service alias list&quot;);
+}
+
+
+static void cbServiceIdentification (CMessage&amp; msgin, TSockId from, CCallbackNetBase &amp;netbase)
+{
+ &nbsp; &nbsp; &nbsp; &nbsp;CAdminExecutorService *aes = (CAdminExecutorService*) (uint) from-&gt;appId();
+
+ &nbsp; &nbsp; &nbsp; &nbsp;uint32 sid;
+ &nbsp; &nbsp; &nbsp; &nbsp;string alias;
+
+ &nbsp; &nbsp; &nbsp; &nbsp;msgin.serial (sid, alias);
+
+ &nbsp; &nbsp; &nbsp; &nbsp;SIT sit;
+ &nbsp; &nbsp; &nbsp; &nbsp;if (!alias.empty())
+ &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;sit = aes-&gt;findService (alias, false);
+
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;if (sit == aes-&gt;Services.end ())
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// the alias is not found
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;nlwarning (&quot;new service with alias (%s) but not in my list&quot;, alias.c_str());
+
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;aes-&gt;Services.push_back (CService ());
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;sit = aes-&gt;Services.end();
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;sit--;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;else
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// normal case
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}
+ &nbsp; &nbsp; &nbsp; &nbsp;}
+ &nbsp; &nbsp; &nbsp; &nbsp;else
+ &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;sit = aes-&gt;findService (sid, false);
+
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;if (sit == aes-&gt;Services.end ())
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// normal case for unknown services
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;nlwarning (&quot;new service without alias and not in my list, add it&quot;);
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;else
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;nlwarning (&quot;new service without alias is already in my list with id %d, add it&quot;, sid);
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;aes-&gt;Services.push_back (CService ());
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;sit = aes-&gt;Services.end();
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;sit--;
+ &nbsp; &nbsp; &nbsp; &nbsp;}
+
+ &nbsp; &nbsp; &nbsp; &nbsp;(*sit).Id = sid;
+ &nbsp; &nbsp; &nbsp; &nbsp;(*sit).AliasName = alias;
+ &nbsp; &nbsp; &nbsp; &nbsp;(*sit).Connected = true;
+ &nbsp; &nbsp; &nbsp; &nbsp;msgin.serial ((*sit).ShortName, (*sit).LongName);
+ &nbsp; &nbsp; &nbsp; &nbsp;msgin.serialCont ((*sit).Commands);
+
+ &nbsp; &nbsp; &nbsp; &nbsp;nlinfo (&quot;*:%d:%d is identified to be '%s' '%s' '%s'&quot;, aes-&gt;Id, sid, (*sit).AliasName.c_str(), (*sit).ShortName.c_str(), (*sit).LongName.c_str());
+
+ &nbsp; &nbsp; &nbsp; &nbsp;// broadcast the message to all admin client
+ &nbsp; &nbsp; &nbsp; &nbsp;CMessage msgout (CNetManager::getSIDA (&quot;AS&quot;), &quot;SID&quot;);
+ &nbsp; &nbsp; &nbsp; &nbsp;msgout.serial (aes-&gt;Id, sid, (*sit).AliasName, (*sit).ShortName, (*sit).LongName);
+ &nbsp; &nbsp; &nbsp; &nbsp;msgout.serialCont ((*sit).Commands);
+
+ &nbsp; &nbsp; &nbsp; &nbsp;CNetManager::send (&quot;AS&quot;, msgout, 0);
+}
+
+static void cbServiceReady (CMessage&amp; msgin, TSockId from, CCallbackNetBase &amp;netbase)
+{
+ &nbsp; &nbsp; &nbsp; &nbsp;CAdminExecutorService *aes = (CAdminExecutorService*) (uint) from-&gt;appId();
+
+ &nbsp; &nbsp; &nbsp; &nbsp;uint32 sid;
+ &nbsp; &nbsp; &nbsp; &nbsp;msgin.serial (sid);
+
+ &nbsp; &nbsp; &nbsp; &nbsp;SIT sit = aes-&gt;findService(sid);
+ &nbsp; &nbsp; &nbsp; &nbsp;(*sit).Ready = true;
+
+ &nbsp; &nbsp; &nbsp; &nbsp;nlinfo (&quot;*:%d:%d is ready&quot;, aes-&gt;Id, sid);
+
+ &nbsp; &nbsp; &nbsp; &nbsp;// broadcast the message to all admin client
+ &nbsp; &nbsp; &nbsp; &nbsp;CMessage msgout (CNetManager::getSIDA (&quot;AS&quot;), &quot;SR&quot;);
+ &nbsp; &nbsp; &nbsp; &nbsp;msgout.serial (aes-&gt;Id, sid);
+ &nbsp; &nbsp; &nbsp; &nbsp;CNetManager::send (&quot;AS&quot;, msgout, 0);
+
+ &nbsp; &nbsp; &nbsp; &nbsp;// if we are in a script execution, continue
+ &nbsp; &nbsp; &nbsp; &nbsp;if (StartAllServices)
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;doNextStartAllServicesStep();
+}
+
+static void cbServiceConnection (CMessage&amp; msgin, TSockId from, CCallbackNetBase &amp;netbase)
+{
+ &nbsp; &nbsp; &nbsp; &nbsp;CAdminExecutorService *aes = (CAdminExecutorService*) (uint) from-&gt;appId();
+
+ &nbsp; &nbsp; &nbsp; &nbsp;uint32 sid;
+ &nbsp; &nbsp; &nbsp; &nbsp;msgin.serial (sid);
+
+ &nbsp; &nbsp; &nbsp; &nbsp;nlinfo (&quot;*:%d:%d connected&quot;, aes-&gt;Id, sid);
+
+ &nbsp; &nbsp; &nbsp; &nbsp;// don't do anything. we have to wait identification to add it in out lists
+
+/*
+ &nbsp; &nbsp; &nbsp; &nbsp;aes-&gt;Services.push_back (CService(sid));
+*/
+ &nbsp; &nbsp; &nbsp; &nbsp;// broadcast the message to all admin client
+ &nbsp; &nbsp; &nbsp; &nbsp;CMessage msgout (CNetManager::getSIDA (&quot;AS&quot;), &quot;SC&quot;);
+ &nbsp; &nbsp; &nbsp; &nbsp;msgout.serial (aes-&gt;Id, sid);
+ &nbsp; &nbsp; &nbsp; &nbsp;CNetManager::send (&quot;AS&quot;, msgout, 0);
+}
+
+static void cbServiceDisconnection (CMessage&amp; msgin, TSockId from, CCallbackNetBase &amp;netbase)
+{
+ &nbsp; &nbsp; &nbsp; &nbsp;CAdminExecutorService *aes = (CAdminExecutorService*) (uint) from-&gt;appId();
+
+ &nbsp; &nbsp; &nbsp; &nbsp;uint32 sid;
+ &nbsp; &nbsp; &nbsp; &nbsp;msgin.serial (sid);
+
+ &nbsp; &nbsp; &nbsp; &nbsp;nlinfo (&quot;*:%d:%d disconnected&quot;, aes-&gt;Id, sid);
+
+ &nbsp; &nbsp; &nbsp; &nbsp;SIT sit = aes-&gt;findService(sid, false);
+ &nbsp; &nbsp; &nbsp; &nbsp;
+ &nbsp; &nbsp; &nbsp; &nbsp;// broadcast the message to all admin client
+ &nbsp; &nbsp; &nbsp; &nbsp;CMessage msgout (CNetManager::getSIDA (&quot;AS&quot;), &quot;SD&quot;);
+ &nbsp; &nbsp; &nbsp; &nbsp;msgout.serial (aes-&gt;Id, sid);
+ &nbsp; &nbsp; &nbsp; &nbsp;CNetManager::send (&quot;AS&quot;, msgout, 0);
+
+ &nbsp; &nbsp; &nbsp; &nbsp;// the service could disconnect before it's identification, in this case, we don't have it in the service list
+ &nbsp; &nbsp; &nbsp; &nbsp;if (sit != aes-&gt;Services.end ())
+ &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;if ((*sit).InConfig)
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;(*sit).Ready = (*sit).Connected = false;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;(*sit).Id = 0xFFFFFFFF;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;(*sit).ShortName = (*sit).LongName = &quot;&quot;;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;(*sit).Commands.clear ();
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;else
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// erase only if it's not a service in the config
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;aes-&gt;Services.erase (sit);
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}
+ &nbsp; &nbsp; &nbsp; &nbsp;}
+
+ &nbsp; &nbsp; &nbsp; &nbsp;displayServices ();
+}
+
+// i'm connected to a new admin executor service
+void cbAESConnection (const string &amp;serviceName, TSockId from, void *arg)
+{
+ &nbsp; &nbsp; &nbsp; &nbsp;AESIT aesit = findAdminExecutorService (serviceName); &nbsp; &nbsp; &nbsp; &nbsp;
+ &nbsp; &nbsp; &nbsp; &nbsp;CAdminExecutorService *aes = &amp;(*aesit);
+ &nbsp; &nbsp; &nbsp; &nbsp;
+ &nbsp; &nbsp; &nbsp; &nbsp;// set the appid to find the aes in O(1)
+ &nbsp; &nbsp; &nbsp; &nbsp;from-&gt;setAppId ((uint64)(uint)aes);
+
+ &nbsp; &nbsp; &nbsp; &nbsp;aes-&gt;Connected = true;
+ &nbsp; &nbsp; &nbsp; &nbsp;nlinfo (&quot;*:%d:* connected&quot;, aes-&gt;Id);
+/*
+ &nbsp; &nbsp; &nbsp; &nbsp;// broadcast the message that an admin exec is connected to all admin client
+ &nbsp; &nbsp; &nbsp; &nbsp;CMessage msgout (CNetManager::getSIDA (&quot;AS&quot;), &quot;AESC&quot;);
+ &nbsp; &nbsp; &nbsp; &nbsp;msgout.serial (aes-&gt;Id);
+ &nbsp; &nbsp; &nbsp; &nbsp;CNetManager::send (&quot;AS&quot;, msgout, 0);
+*/
+
+ &nbsp; &nbsp; &nbsp; &nbsp;// broadcast the new state of this AES
+ &nbsp; &nbsp; &nbsp; &nbsp;CMessage msgout (CNetManager::getSIDA (&quot;AS&quot;), &quot;AES_LIST&quot;);
+ &nbsp; &nbsp; &nbsp; &nbsp;uint32 nbaes = 1;
+ &nbsp; &nbsp; &nbsp; &nbsp;msgout.serial (nbaes);
+ &nbsp; &nbsp; &nbsp; &nbsp;msgout.serial (aes-&gt;Id, aes-&gt;ServerAlias, aes-&gt;ServerAddr, aes-&gt;Connected);
+ &nbsp; &nbsp; &nbsp; &nbsp;CNetManager::send (&quot;AS&quot;, msgout, 0);
+}
+
+// i'm disconnected to an admin executor service
+void cbAESDisconnection (const string &amp;serviceName, TSockId from, void *arg)
+{
+ &nbsp; &nbsp; &nbsp; &nbsp;// get the aes with the appid
+ &nbsp; &nbsp; &nbsp; &nbsp;CAdminExecutorService *aes = (CAdminExecutorService*) (uint) from-&gt;appId();
+
+ &nbsp; &nbsp; &nbsp; &nbsp;aes-&gt;Connected = false;
+
+ &nbsp; &nbsp; &nbsp; &nbsp;SIT sit;
+ &nbsp; &nbsp; &nbsp; &nbsp;for (sit = aes-&gt;Services.begin(); sit != aes-&gt;Services.end();)
+ &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// keep only inconfig services
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;if ((*sit).InConfig)
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;(*sit).Id = 0xFFFFFFFF;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;(*sit).ShortName = (*sit).LongName = &quot;&quot;;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;(*sit).Ready = (*sit).Connected = false;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;sit++;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;else
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// erase only if it's not a service in the config
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;sit = aes-&gt;Services.erase (sit);
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}
+ &nbsp; &nbsp; &nbsp; &nbsp;}
+
+ &nbsp; &nbsp; &nbsp; &nbsp;nlinfo (&quot;*:%d:* disconnected&quot;, aes-&gt;Id);
+/* &nbsp; &nbsp; &nbsp;
+ &nbsp; &nbsp; &nbsp; &nbsp;// broadcast the message to all admin client that an admin exec is disconnected
+ &nbsp; &nbsp; &nbsp; &nbsp;CMessage msgout (CNetManager::getSIDA (&quot;AS&quot;), &quot;AESD&quot;);
+ &nbsp; &nbsp; &nbsp; &nbsp;msgout.serial (aes-&gt;Id);
+ &nbsp; &nbsp; &nbsp; &nbsp;CNetManager::send (&quot;AS&quot;, msgout, 0);
+*/
+
+ &nbsp; &nbsp; &nbsp; &nbsp;displayServices ();
+
+ &nbsp; &nbsp; &nbsp; &nbsp;// broadcast the new state of this AES
+ &nbsp; &nbsp; &nbsp; &nbsp;CMessage msgout (CNetManager::getSIDA (&quot;AS&quot;), &quot;AES_LIST&quot;);
+ &nbsp; &nbsp; &nbsp; &nbsp;uint32 nbaes = 1;
+ &nbsp; &nbsp; &nbsp; &nbsp;msgout.serial (nbaes);
+ &nbsp; &nbsp; &nbsp; &nbsp;msgout.serial (aes-&gt;Id, aes-&gt;ServerAlias, aes-&gt;ServerAddr, aes-&gt;Connected);
+ &nbsp; &nbsp; &nbsp; &nbsp;CNetManager::send (&quot;AS&quot;, msgout, 0);
+}
+
+static void cbLog (CMessage&amp; msgin, TSockId from, CCallbackNetBase &amp;netbase)
+{
+ &nbsp; &nbsp; &nbsp; &nbsp;// received an answer for a command, give it to all admin client
+
+ &nbsp; &nbsp; &nbsp; &nbsp;// get the aes with the appid
+ &nbsp; &nbsp; &nbsp; &nbsp;CAdminExecutorService *aes = (CAdminExecutorService*) (uint) from-&gt;appId();
+
+ &nbsp; &nbsp; &nbsp; &nbsp;// broadcast the message to the admin service
+ &nbsp; &nbsp; &nbsp; &nbsp;CMessage msgout (CNetManager::getSIDA (&quot;AS&quot;), &quot;XLOG&quot;);
+ &nbsp; &nbsp; &nbsp; &nbsp;string log;
+ &nbsp; &nbsp; &nbsp; &nbsp;uint32 sid;
+ &nbsp; &nbsp; &nbsp; &nbsp;msgin.serial (sid);
+ &nbsp; &nbsp; &nbsp; &nbsp;msgin.serial (log);
+
+ &nbsp; &nbsp; &nbsp; &nbsp;msgout.serial (aes-&gt;Id);
+ &nbsp; &nbsp; &nbsp; &nbsp;msgout.serial (sid);
+ &nbsp; &nbsp; &nbsp; &nbsp;msgout.serial (log);
+ &nbsp; &nbsp; &nbsp; &nbsp;CNetManager::send (&quot;AS&quot;, msgout, 0);
+}
+
+
+TCallbackItem AESCallbackArray[] =
+{
+ &nbsp; &nbsp; &nbsp; &nbsp;{ &quot;ESCR&quot;, cbExecuteSystemCommandResult },
+
+ &nbsp; &nbsp; &nbsp; &nbsp;{ &quot;SL&quot;, cbServiceList },
+ &nbsp; &nbsp; &nbsp; &nbsp;{ &quot;SID&quot;, cbServiceIdentification },
+ &nbsp; &nbsp; &nbsp; &nbsp;{ &quot;SR&quot;, cbServiceReady },
+ &nbsp; &nbsp; &nbsp; &nbsp;{ &quot;SC&quot;, cbServiceConnection },
+ &nbsp; &nbsp; &nbsp; &nbsp;{ &quot;SD&quot;, cbServiceDisconnection },
+
+ &nbsp; &nbsp; &nbsp; &nbsp;{ &quot;SAL&quot;, cbServiceAliasList },
+
+ &nbsp; &nbsp; &nbsp; &nbsp;{ &quot;XLOG&quot;, cbLog },
+};
+
+
+////////////////////////////////////////////////////////////////////////////////////////////////////////
+////////////////////////////////////////////////////////////////////////////////////////////////////////
+////////////////// CONNECTION TO THE CLIENT ////////////////////////////////////////////////////////////
+////////////////////////////////////////////////////////////////////////////////////////////////////////
+////////////////////////////////////////////////////////////////////////////////////////////////////////
+
+//
+// A new admin client is connected.
+//
+void clientConnection (const string &amp;serviceName, TSockId from, void *arg)
+{
+ &nbsp; &nbsp; &nbsp; &nbsp;// new client, send him all out info about services
+
+ &nbsp; &nbsp; &nbsp; &nbsp;nlinfo (&quot;admin %s is connected&quot;, from-&gt;asString().c_str());
+
+ &nbsp; &nbsp; &nbsp; &nbsp;CNetManager::getNetBase(serviceName)-&gt;authorizeOnly (&quot;AUTH&quot;, from);
+}
+
+static void cbAuthenticateClient (CMessage&amp; msgin, TSockId from, CCallbackNetBase &amp;netbase)
+{
+ &nbsp; &nbsp; &nbsp; &nbsp;//
+ &nbsp; &nbsp; &nbsp; &nbsp;// Check the validity of the admin
+ &nbsp; &nbsp; &nbsp; &nbsp;//
+ &nbsp; &nbsp; &nbsp; &nbsp;
+ &nbsp; &nbsp; &nbsp; &nbsp;string login, password;
+ &nbsp; &nbsp; &nbsp; &nbsp;bool ok = false;
+ &nbsp; &nbsp; &nbsp; &nbsp;try
+ &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;msgin.serial (login, password);
+
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;CConfigFile::CVar &amp;users = IService::ConfigFile.getVar(&quot;Users&quot;);
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;for (sint i = 0 ; i &lt; users.size (); i+=2)
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;if (login == users.asString(i))
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;if (password == users.asString(i + 1))
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// good authentification
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;ok = true;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;break;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}
+ &nbsp; &nbsp; &nbsp; &nbsp;}
+ &nbsp; &nbsp; &nbsp; &nbsp;catch (Exception &amp;)
+ &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// problem, eject him
+ &nbsp; &nbsp; &nbsp; &nbsp;}
+
+ &nbsp; &nbsp; &nbsp; &nbsp;if (ok)
+ &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;netbase.authorizeOnly (NULL, from);
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;nlinfo (&quot;Admin authentification success login: '%s'&quot;, login.c_str());
+ &nbsp; &nbsp; &nbsp; &nbsp;}
+ &nbsp; &nbsp; &nbsp; &nbsp;else
+ &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// bad auth =&gt; disconnect
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;netbase.disconnect (from);
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;nlwarning (&quot;Bad admin authentification try login: '%s' password: '%s'&quot;, login.c_str(), password.c_str());
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;return;
+ &nbsp; &nbsp; &nbsp; &nbsp;}
+
+ &nbsp; &nbsp; &nbsp; &nbsp;//
+ &nbsp; &nbsp; &nbsp; &nbsp;// send the list of all the aes
+ &nbsp; &nbsp; &nbsp; &nbsp;//
+
+ &nbsp; &nbsp; &nbsp; &nbsp;CMessage msgout2 (CNetManager::getSIDA (&quot;AS&quot;), &quot;AES_LIST&quot;);
+ &nbsp; &nbsp; &nbsp; &nbsp;AESIT aesit;
+ &nbsp; &nbsp; &nbsp; &nbsp;uint32 nbaes = (uint32)AdminExecutorServices.size();
+ &nbsp; &nbsp; &nbsp; &nbsp;msgout2.serial (nbaes);
+ &nbsp; &nbsp; &nbsp; &nbsp;for (aesit = AdminExecutorServices.begin(); aesit != AdminExecutorServices.end(); aesit++)
+ &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// send info about the AES
+
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;msgout2.serial ((*aesit).Id, (*aesit).ServerAlias, (*aesit).ServerAddr, (*aesit).Connected);
+ &nbsp; &nbsp; &nbsp; &nbsp;}
+ &nbsp; &nbsp; &nbsp; &nbsp;CNetManager::send (&quot;AS&quot;, msgout2, from);
+
+ &nbsp; &nbsp; &nbsp; &nbsp;//
+ &nbsp; &nbsp; &nbsp; &nbsp;// send the list of all services
+ &nbsp; &nbsp; &nbsp; &nbsp;//
+
+ &nbsp; &nbsp; &nbsp; &nbsp;CMessage msgout (CNetManager::getSIDA (&quot;AS&quot;), &quot;SERVICE_LIST&quot;);
+ &nbsp; &nbsp; &nbsp; &nbsp;nbaes = (uint32)AdminExecutorServices.size();
+ &nbsp; &nbsp; &nbsp; &nbsp;msgout.serial (nbaes);
+ &nbsp; &nbsp; &nbsp; &nbsp;for (aesit = AdminExecutorServices.begin(); aesit != AdminExecutorServices.end(); aesit++)
+ &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;msgout.serial ((*aesit).Id);
+
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;uint32 nbs = (uint32)(*aesit).Services.size();
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;msgout.serial (nbs);
+
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;for (SIT sit = (*aesit).Services.begin(); sit != (*aesit).Services.end(); sit++)
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// send info about services of the AES
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;msgout.serial ((*sit).Id, (*sit).AliasName, (*sit).ShortName, (*sit).LongName);
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;msgout.serial ((*sit).Ready, (*sit).Connected, (*sit).InConfig);
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;msgout.serialCont ((*sit).Commands);
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}
+ &nbsp; &nbsp; &nbsp; &nbsp;}
+ &nbsp; &nbsp; &nbsp; &nbsp;CNetManager::send (&quot;AS&quot;, msgout, from);
+
+ &nbsp; &nbsp; &nbsp; &nbsp;displayServices ();
+
+ &nbsp; &nbsp; &nbsp; &nbsp;//
+ &nbsp; &nbsp; &nbsp; &nbsp;// send service alias list
+ &nbsp; &nbsp; &nbsp; &nbsp;//
+
+ &nbsp; &nbsp; &nbsp; &nbsp;nlinfo(&quot;send SAL to admin startup&quot;);
+
+ &nbsp; &nbsp; &nbsp; &nbsp;for (aesit = AdminExecutorServices.begin(); aesit != AdminExecutorServices.end(); aesit++)
+ &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;CMessage msgout2 (CNetManager::getSIDA (&quot;AS&quot;), &quot;SAL&quot;);
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;msgout2.serial ((*aesit).Id);
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;msgout2.serialCont ((*aesit).ServiceAliasList);
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;CNetManager::send (&quot;AS&quot;, msgout2, from);
+ &nbsp; &nbsp; &nbsp; &nbsp;}
+}
+
+
+static void cbExecuteSystemCommand (CMessage&amp; msgin, TSockId from, CCallbackNetBase &amp;netbase)
+{
+ &nbsp; &nbsp; &nbsp; &nbsp;string command;
+ &nbsp; &nbsp; &nbsp; &nbsp;uint32 aesid;
+ &nbsp; &nbsp; &nbsp; &nbsp;msgin.serial (aesid);
+ &nbsp; &nbsp; &nbsp; &nbsp;msgin.serial (command);
+
+ &nbsp; &nbsp; &nbsp; &nbsp;AESIT aesit = findAdminExecutorService (aesid, false);
+ &nbsp; &nbsp; &nbsp; &nbsp;if (aesit == AdminExecutorServices.end())
+ &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// don't find the aes, send an error message
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;messageToClient (0, &quot;couldn't execute command, as didn't find the aes&quot;, from);
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;return;
+ &nbsp; &nbsp; &nbsp; &nbsp;}
+
+ &nbsp; &nbsp; &nbsp; &nbsp;// send the resquest to the AES
+
+ &nbsp; &nbsp; &nbsp; &nbsp;CMessage msgout (CNetManager::getSIDA((*aesit).ServerAlias), &quot;SYS&quot;);
+ &nbsp; &nbsp; &nbsp; &nbsp;msgout.serial (command);
+ &nbsp; &nbsp; &nbsp; &nbsp;CNetManager::send ((*aesit).ServerAlias, msgout);
+}
+
+
+static void cbStartService (CMessage&amp; msgin, TSockId from, CCallbackNetBase &amp;netbase)
+{
+ &nbsp; &nbsp; &nbsp; &nbsp;string serviceAlias;
+ &nbsp; &nbsp; &nbsp; &nbsp;uint32 aesid;
+ &nbsp; &nbsp; &nbsp; &nbsp;msgin.serial (aesid);
+ &nbsp; &nbsp; &nbsp; &nbsp;msgin.serial (serviceAlias);
+
+ &nbsp; &nbsp; &nbsp; &nbsp;AESIT aesit = findAdminExecutorService (aesid, false);
+ &nbsp; &nbsp; &nbsp; &nbsp;if (aesit == AdminExecutorServices.end())
+ &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// don't find the aes, send an error message
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;messageToClient (0, &quot;couldn't start service, as didn't find the aes&quot;, from);
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;return;
+ &nbsp; &nbsp; &nbsp; &nbsp;}
+
+ &nbsp; &nbsp; &nbsp; &nbsp;// send the resquest to the AES
+
+ &nbsp; &nbsp; &nbsp; &nbsp;CMessage msgout (CNetManager::getSIDA((*aesit).ServerAlias), &quot;STARTS&quot;);
+ &nbsp; &nbsp; &nbsp; &nbsp;msgout.serial (serviceAlias);
+ &nbsp; &nbsp; &nbsp; &nbsp;CNetManager::send ((*aesit).ServerAlias, msgout);
+}
+
+static void cbStopService (CMessage&amp; msgin, TSockId from, CCallbackNetBase &amp;netbase)
+{
+ &nbsp; &nbsp; &nbsp; &nbsp;uint32 aesid, sid;
+ &nbsp; &nbsp; &nbsp; &nbsp;msgin.serial (aesid);
+ &nbsp; &nbsp; &nbsp; &nbsp;msgin.serial (sid);
+
+ &nbsp; &nbsp; &nbsp; &nbsp;AESIT aesit = findAdminExecutorService (aesid, false);
+ &nbsp; &nbsp; &nbsp; &nbsp;if (aesit == AdminExecutorServices.end())
+ &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;messageToClient (0, &quot;couldn't stop service, as didn't find the aes&quot;, from);
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// don't find the aes, send an error message
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;return;
+ &nbsp; &nbsp; &nbsp; &nbsp;}
+
+ &nbsp; &nbsp; &nbsp; &nbsp;SIT sit = (*aesit).findService (sid, false);
+ &nbsp; &nbsp; &nbsp; &nbsp;if (sit == (*aesit).Services.end())
+ &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// don't find the s, send an error message
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;messageToClient (0, &quot;couldn't stop service, as didn't find the service&quot;, from);
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;return;
+ &nbsp; &nbsp; &nbsp; &nbsp;}
+
+ &nbsp; &nbsp; &nbsp; &nbsp;// send the resquest to the AES
+
+ &nbsp; &nbsp; &nbsp; &nbsp;CMessage msgout (CNetManager::getSIDA((*aesit).ServerAlias), &quot;STOPS&quot;);
+ &nbsp; &nbsp; &nbsp; &nbsp;msgout.serial (sid);
+ &nbsp; &nbsp; &nbsp; &nbsp;CNetManager::send ((*aesit).ServerAlias, msgout);
+}
+
+static void cbExecCommand (CMessage&amp; msgin, TSockId from, CCallbackNetBase &amp;netbase)
+{
+ &nbsp; &nbsp; &nbsp; &nbsp;uint32 aesid, sid;
+ &nbsp; &nbsp; &nbsp; &nbsp;string command;
+ &nbsp; &nbsp; &nbsp; &nbsp;msgin.serial (aesid);
+ &nbsp; &nbsp; &nbsp; &nbsp;msgin.serial (sid);
+ &nbsp; &nbsp; &nbsp; &nbsp;msgin.serial (command);
+
+ &nbsp; &nbsp; &nbsp; &nbsp;AESIT aesit = findAdminExecutorService (aesid, false);
+ &nbsp; &nbsp; &nbsp; &nbsp;if (aesit == AdminExecutorServices.end())
+ &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;messageToClient (0, &quot;couldn't stop service, as didn't find the aes&quot;, from);
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// don't find the aes, send an error message
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;return;
+ &nbsp; &nbsp; &nbsp; &nbsp;}
+
+ &nbsp; &nbsp; &nbsp; &nbsp;SIT sit = (*aesit).findService (sid, false);
+ &nbsp; &nbsp; &nbsp; &nbsp;if (sit == (*aesit).Services.end())
+ &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// don't find the s, send an error message
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;messageToClient (0, &quot;couldn't stop service, as didn't find the service&quot;, from);
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;return;
+ &nbsp; &nbsp; &nbsp; &nbsp;}
+
+ &nbsp; &nbsp; &nbsp; &nbsp;// send the resquest to the AES
+
+ &nbsp; &nbsp; &nbsp; &nbsp;CMessage msgout (CNetManager::getSIDA((*aesit).ServerAlias), &quot;EXEC_COMMAND&quot;);
+ &nbsp; &nbsp; &nbsp; &nbsp;msgout.serial (sid);
+ &nbsp; &nbsp; &nbsp; &nbsp;msgout.serial (command);
+ &nbsp; &nbsp; &nbsp; &nbsp;CNetManager::send ((*aesit).ServerAlias, msgout);
+}
+
+static void cbStartAllServices (CMessage&amp; msgin, TSockId from, CCallbackNetBase &amp;netbase)
+{
+ &nbsp; &nbsp; &nbsp; &nbsp;initStartAllServices ();
+}
+
+static void cbStopAllServices (CMessage&amp; msgin, TSockId from, CCallbackNetBase &amp;netbase)
+{
+ &nbsp; &nbsp; &nbsp; &nbsp;for (AESIT aesit = AdminExecutorServices.begin(); aesit != AdminExecutorServices.end(); aesit++)
+ &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;for (SIT sit = (*aesit).Services.begin(); sit != (*aesit).Services.end(); sit++)
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;if ((*sit).Connected)
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;CMessage msgout (CNetManager::getSIDA((*aesit).ServerAlias), &quot;STOPS&quot;);
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;msgout.serial ((*sit).Id);
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;CNetManager::send ((*aesit).ServerAlias, msgout);
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}
+ &nbsp; &nbsp; &nbsp; &nbsp;}
+}
+
+TCallbackItem ClientCallbackArray[] =
+{
+ &nbsp; &nbsp; &nbsp; &nbsp;{ &quot;AUTH&quot;, cbAuthenticateClient },
+ &nbsp; &nbsp; &nbsp; &nbsp;{ &quot;SYS&quot;, cbExecuteSystemCommand },
+ &nbsp; &nbsp; &nbsp; &nbsp;{ &quot;STARTS&quot;, cbStartService },
+ &nbsp; &nbsp; &nbsp; &nbsp;{ &quot;STOPS&quot;, cbStopService },
+ &nbsp; &nbsp; &nbsp; &nbsp;{ &quot;EXEC_COMMAND&quot;, cbExecCommand },
+ &nbsp; &nbsp; &nbsp; &nbsp;{ &quot;START_ALL_SERVICES&quot;, cbStartAllServices },
+ &nbsp; &nbsp; &nbsp; &nbsp;{ &quot;STOP_ALL_SERVICES&quot;, cbStopAllServices },
+};
+
+////////////////////////////////////////////////////////////////////////////////////////////////////////
+////////////////////////////////////////////////////////////////////////////////////////////////////////
+////////////////// SERVICE IMPLEMENTATION //////////////////////////////////////////////////////////////
+////////////////////////////////////////////////////////////////////////////////////////////////////////
+////////////////////////////////////////////////////////////////////////////////////////////////////////
+
+class CAdminService : public IService
+{
+public:
+
+ &nbsp; &nbsp; &nbsp; &nbsp;/// Init the service, load the universal time.
+ &nbsp; &nbsp; &nbsp; &nbsp;void &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;init ()
+ &nbsp; &nbsp; &nbsp; &nbsp;{
+// &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;DebugLog-&gt;addNegativeFilter (&quot;L0:&quot;);
+// &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;DebugLog-&gt;addNegativeFilter (&quot;L1:&quot;);
+// &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;DebugLog-&gt;addNegativeFilter (&quot;L2:&quot;);
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;CNetManager::setConnectionCallback (&quot;AS&quot;, clientConnection, NULL);
+
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;//
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// Get the list of AESHosts, add in the structures and create connection to all AES
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;//
+
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;CConfigFile::CVar &amp;host = ConfigFile.getVar (&quot;AESHosts&quot;);
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;sint i;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;for (i = 0 ; i &lt; host.size (); i+=2)
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;string serverAlias = host.asString(i);
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;string serverAddr = host.asString(i+1);
+
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// add to the list
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;CAdminExecutorService aes;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;aes.ServerAlias = serverAlias;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;aes.ServerAddr = serverAddr;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;AdminExecutorServices.push_back (aes);
+
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// connect to the AES
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;CNetManager::setConnectionCallback (serverAlias, cbAESConnection, NULL);
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;CNetManager::setDisconnectionCallback (serverAlias, cbAESDisconnection, NULL);
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;CNetManager::addClient (serverAlias, serverAddr+&quot;:49996&quot;);
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;CNetManager::addCallbackArray (serverAlias, AESCallbackArray, sizeof (AESCallbackArray)/sizeof(AESCallbackArray[0]));
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}
+
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;//
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// Get the list of services in the shard
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;//
+
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;CConfigFile::CVar &amp;serv = ConfigFile.getVar (&quot;Services&quot;);
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;for (i = 0 ; i &lt; serv.size (); i+=2)
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;string serverAlias = serv.asString(i);
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;string serviceAlias = serv.asString(i+1);
+
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;AESIT aesit = findAdminExecutorService (serverAlias);
+
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// add new AES in the list
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;CService s;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;s.AliasName = serviceAlias;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;s.InConfig = true;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;(*aesit).Services.push_back (s);
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;displayServices ();
+ &nbsp; &nbsp; &nbsp; &nbsp;}
+};
+
+
+// AS is a server connection to the admin client
+// AESAS is a client connection to the admin executor
+
+/// Naming Service
+NLNET_SERVICE_MAIN (CAdminService, &quot;AS&quot;, &quot;admin_service&quot;, 49995, ClientCallbackArray);
+</PRE> \ No newline at end of file
diff --git a/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cpp?rev=1.15&content-type=text/x-cvsweb-markup&sortby=author/index.html b/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cpp?rev=1.15&content-type=text/x-cvsweb-markup&sortby=author/index.html
new file mode 100644
index 00000000..9f531956
--- /dev/null
+++ b/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cpp?rev=1.15&content-type=text/x-cvsweb-markup&sortby=author/index.html
@@ -0,0 +1,1001 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"><HTML>
+<HEAD><style> A { color:black }</style>
+<!-- hennerik CVSweb $Revision: 1.93 $ -->
+<TITLE>code/nelns/admin_service/admin_service.cpp - view - 1.15</TITLE></HEAD>
+<BODY BGCOLOR="#eeeeee">
+<table width="100%" border=0 cellspacing=0 cellpadding=1 bgcolor="#aaaaaa"><tr valign=bottom><td><a href="admin_service.cpp?sortby=author"><IMG SRC="http://www.nevrax.org/inc/img/picto-up.gif" ALT="[BACK]" BORDER="0" WIDTH="14" HEIGHT="13"></a> <b>Return to <A HREF="admin_service.cpp?sortby=author">admin_service.cpp</A>
+ CVS log</b> <IMG SRC="http://www.nevrax.org/inc/img/picto-news.gif" ALT="[TXT]" BORDER="0" WIDTH="13" HEIGHT="15"></td><td align=right><IMG SRC="http://www.nevrax.org/inc/img/picto-dir.gif" ALT="[DIR]" BORDER="0" WIDTH="15" HEIGHT="13"> <b>Up to <a href="/cvs/cvsweb.cgi/?sortby=author">Nevrax</a> / <a href="/cvs/cvsweb.cgi/code/?sortby=author">code</a> / <a href="/cvs/cvsweb.cgi/code/nelns/?sortby=author">nelns</a> / <a href="/cvs/cvsweb.cgi/code/nelns/admin_service/?sortby=author">admin_service</a></b></td></tr></table><HR noshade><table width="100%"><tr><td bgcolor="#ffffff">File: <a href="/cvs/cvsweb.cgi/?sortby=author">Nevrax</a> / <a href="/cvs/cvsweb.cgi/code/?sortby=author">code</a> / <a href="/cvs/cvsweb.cgi/code/nelns/?sortby=author">nelns</a> / <a href="/cvs/cvsweb.cgi/code/nelns/admin_service/?sortby=author">admin_service</a> / <a href="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cpp?sortby=author">admin_service.cpp</a>&nbsp;(<A HREF="/cvs/cvsweb.cgi/~checkout~/code/nelns/admin_service/admin_service.cpp?rev=1.15&amp;sortby=author" target="cvs_checkout" onClick="window.open('/cvs/cvsweb.cgi/~checkout~/code/nelns/admin_service/admin_service.cpp?rev=1.15','cvs_checkout','resizeable,scrollbars');"><b>download</b></A>)<BR>
+Revision <B>1.15</B>, <i>Mon Mar 25 09:28:00 2002 UTC</i> (4 months ago) by <i>lecroart</i>
+<BR>Branch: <b>MAIN</b>
+<BR>CVS Tags: <b>HEAD</b><BR>Changes since <b>1.14: +8 -6
+ lines</b><PRE>
+CHANGED: use new service functions
+</PRE>
+</td></tr></table><HR noshade><PRE>/** \file admin_service.cpp
+ * Admin Service (AS)
+ *
+ * $Id: admin_service.cpp,v 1.15 2002/03/25 09:28:00 lecroart Exp $
+ *
+ */
+
+/* Copyright, 2000 Nevrax Ltd.
+ *
+ * This file is part of NEVRAX NeL Network Services.
+ * NEVRAX NeL Network Services is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2, or (at your option)
+ * any later version.
+ *
+ * NEVRAX NeL Network Services is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with NEVRAX NeL Network Services; see the file COPYING. If not, write to the
+ * Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston,
+ * MA 02111-1307, USA.
+ */
+
+#ifdef HAVE_CONFIG_H
+#include &quot;config.h&quot;
+#endif // HAVE_CONFIG_H
+
+#ifndef NELNS_CONFIG
+#define NELNS_CONFIG &quot;&quot;
+#endif // NELNS_CONFIG
+
+#ifndef NELNS_LOGS
+#define NELNS_LOGS &quot;&quot;
+#endif // NELNS_LOGS
+
+#include &quot;nel/misc/types_nl.h&quot;
+
+#include &lt;string&gt;
+#include &lt;list&gt;
+
+#include &quot;nel/misc/debug.h&quot;
+#include &quot;nel/misc/config_file.h&quot;
+#include &quot;nel/misc/command.h&quot;
+
+#include &quot;nel/net/service.h&quot;
+#include &quot;nel/net/net_manager.h&quot;
+
+using namespace std;
+using namespace NLMISC;
+using namespace NLNET;
+
+////////////////////////
+
+
+struct CService
+{
+ &nbsp; &nbsp; &nbsp; &nbsp;CService () : Id(0xFFFFFFFF), Ready(false), Connected(false), InConfig(false) { }
+
+ &nbsp; &nbsp; &nbsp; &nbsp;uint32 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;Id; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;/// uint32 to identify the service
+ &nbsp; &nbsp; &nbsp; &nbsp;string &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;AliasName; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;/// alias of the service used in the AES and AS to find him (unique per AES)
+ &nbsp; &nbsp; &nbsp; &nbsp;string &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;ShortName; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;/// name of the service in short format (&quot;NS&quot; for example)
+ &nbsp; &nbsp; &nbsp; &nbsp;string &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;LongName; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;/// name of the service in long format (&quot;naming_service&quot;)
+ &nbsp; &nbsp; &nbsp; &nbsp;bool &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;Ready; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;/// true if the service is ready
+ &nbsp; &nbsp; &nbsp; &nbsp;bool &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;Connected; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;/// true if the service is connected to the AES
+ &nbsp; &nbsp; &nbsp; &nbsp;bool &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;InConfig; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;/// true if the service is in the configuration
+ &nbsp; &nbsp; &nbsp; &nbsp;std::vector&lt;NLMISC::CSerialCommand&gt; &nbsp; &nbsp; &nbsp; &nbsp;Commands;
+
+ &nbsp; &nbsp; &nbsp; &nbsp;void setValues (const CService &amp;t)
+ &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// copy all except gtk stuffs
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;Id = t.Id;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;AliasName = t.AliasName;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;ShortName = t.ShortName;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;LongName = t.LongName;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;Ready = t.Ready;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;Connected = t.Connected;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;//InConfig = t.InConfig; never change the inconfig value
+ &nbsp; &nbsp; &nbsp; &nbsp;}
+};
+
+typedef list&lt;CService&gt; TServices;
+typedef list&lt;CService&gt;::iterator SIT;
+
+struct CAdminExecutorService
+{
+ &nbsp; &nbsp; &nbsp; &nbsp;CAdminExecutorService () : Id(NextId++), SockId(NULL), Connected(false) { }
+
+ &nbsp; &nbsp; &nbsp; &nbsp;TSockId &nbsp; &nbsp; &nbsp; &nbsp;SockId; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;/// connection to the AES
+ &nbsp; &nbsp; &nbsp; &nbsp;uint32 &nbsp; &nbsp; &nbsp; &nbsp;Id; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;/// uint32 to identify the AES where the service is running
+
+ &nbsp; &nbsp; &nbsp; &nbsp;string &nbsp; &nbsp; &nbsp; &nbsp;ServerAlias; &nbsp; &nbsp; &nbsp; &nbsp;/// name of the layer4 connection, used to send message to this AES
+ &nbsp; &nbsp; &nbsp; &nbsp;string &nbsp; &nbsp; &nbsp; &nbsp;ServerAddr; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;/// address in a string format (only the ip)
+ &nbsp; &nbsp; &nbsp; &nbsp;bool &nbsp; &nbsp; &nbsp; &nbsp;Connected; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;/// true if the AES is connected
+
+ &nbsp; &nbsp; &nbsp; &nbsp;TServices Services;
+
+ &nbsp; &nbsp; &nbsp; &nbsp;vector&lt;string&gt; &nbsp; &nbsp; &nbsp; &nbsp;ServiceAliasList;
+
+ &nbsp; &nbsp; &nbsp; &nbsp;SIT findService (uint32 sid, bool asrt = true)
+ &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;SIT sit;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;for (sit = Services.begin(); sit != Services.end(); sit++)
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;if ((*sit).Id == sid)
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;break;
+
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;if (asrt)
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;nlassert (sit != Services.end());
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;return sit;
+ &nbsp; &nbsp; &nbsp; &nbsp;}
+
+ &nbsp; &nbsp; &nbsp; &nbsp;SIT findService (const string &amp;alias, bool asrt = true)
+ &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;SIT sit;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;for (sit = Services.begin(); sit != Services.end(); sit++)
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;if ((*sit).AliasName == alias)
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;break;
+
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;if (asrt)
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;nlassert (sit != Services.end());
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;return sit;
+ &nbsp; &nbsp; &nbsp; &nbsp;}
+
+private:
+ &nbsp; &nbsp; &nbsp; &nbsp;static uint32 NextId;
+};
+
+uint32 CAdminExecutorService::NextId = 1;
+
+typedef list&lt;CAdminExecutorService&gt; TAdminExecutorServices;
+typedef list&lt;CAdminExecutorService&gt;::iterator AESIT;
+
+TAdminExecutorServices AdminExecutorServices;
+
+/////////////////
+
+AESIT findAdminExecutorService (uint32 aesid, bool asrt = true)
+{
+ &nbsp; &nbsp; &nbsp; &nbsp;AESIT aesit;
+ &nbsp; &nbsp; &nbsp; &nbsp;for (aesit = AdminExecutorServices.begin(); aesit != AdminExecutorServices.end(); aesit++)
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;if ((*aesit).Id == aesid)
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;break;
+
+ &nbsp; &nbsp; &nbsp; &nbsp;if (asrt)
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;nlassert (aesit != AdminExecutorServices.end());
+ &nbsp; &nbsp; &nbsp; &nbsp;return aesit;
+}
+
+AESIT findAdminExecutorService (string ServerAlias, bool asrt = true)
+{
+ &nbsp; &nbsp; &nbsp; &nbsp;AESIT aesit;
+ &nbsp; &nbsp; &nbsp; &nbsp;for (aesit = AdminExecutorServices.begin(); aesit != AdminExecutorServices.end(); aesit++)
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;if ((*aesit).ServerAlias == ServerAlias)
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;break;
+
+ &nbsp; &nbsp; &nbsp; &nbsp;if (asrt)
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;nlassert (aesit != AdminExecutorServices.end());
+ &nbsp; &nbsp; &nbsp; &nbsp;return aesit;
+}
+
+void displayServices ()
+{
+ &nbsp; &nbsp; &nbsp; &nbsp;for (AESIT aesit = AdminExecutorServices.begin(); aesit != AdminExecutorServices.end(); aesit++)
+ &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;nlinfo (&quot;&gt; Admin&quot;);
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;for (SIT sit = (*aesit).Services.begin(); sit != (*aesit).Services.end(); sit++)
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;nlinfo (&quot; &nbsp;&gt; '%s' '%s' '%s' '%s' %d %d&quot;, (*aesit).SockId-&gt;asString().c_str(), (*sit).AliasName.c_str(), (*sit).ShortName.c_str(), (*sit).LongName.c_str(), (*aesit).Id, (*sit).Id);
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}
+ &nbsp; &nbsp; &nbsp; &nbsp;}
+}
+
+
+// send a message to a client. if ok is 0 it s an error or it s a normal
+void messageToClient (uint8 ok, string msg, TSockId from = NULL)
+{
+ &nbsp; &nbsp; &nbsp; &nbsp;CMessage msgout (CNetManager::getSIDA (&quot;AS&quot;), &quot;MESSAGE&quot;);
+ &nbsp; &nbsp; &nbsp; &nbsp;msgout.serial (ok, msg);
+ &nbsp; &nbsp; &nbsp; &nbsp;CNetManager::send (&quot;AS&quot;, msgout, from);
+}
+
+
+////////////////////////////////////////////////////////////////////////////////////////////////////////
+////////////////////////////////////////////////////////////////////////////////////////////////////////
+/////////////////// SCRIPT MANAGER /////////////////////////////////////////////////////////////////////
+////////////////////////////////////////////////////////////////////////////////////////////////////////
+////////////////////////////////////////////////////////////////////////////////////////////////////////
+
+bool StartAllServices = false;
+uint32 StartAllServicesPos;
+
+void doNextStartAllServicesStep ()
+{
+ &nbsp; &nbsp; &nbsp; &nbsp;nlassert (StartAllServices);
+
+ &nbsp; &nbsp; &nbsp; &nbsp;// get the script
+ &nbsp; &nbsp; &nbsp; &nbsp;try
+ &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;CConfigFile::CVar &amp;script = IService::getInstance()-&gt;ConfigFile.getVar(&quot;Services&quot;);
+
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// check the position
+
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;if (StartAllServicesPos*2 &gt;= (uint32)script.size())
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;StartAllServices = false;
+
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;nlinfo(&quot;end of the script&quot;);
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;messageToClient (1, &quot;Start All Service finnished correctly&quot;);
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;return;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}
+
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// get the script line
+
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;string serverAlias;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;string serviceAlias;
+
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;try
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;serverAlias = script.asString (StartAllServicesPos*2);
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;serviceAlias = script.asString (StartAllServicesPos*2+1);
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;catch(EBadSize &amp;)
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;messageToClient (1, &quot;'Services' variable does not contains a good number of entries (must be a multiple of 2)&quot;);
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;nlwarning (&quot;'Services' variable does not contains a good number of entries (must be a multiple of 2)&quot;);
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;StartAllServices = false;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;return;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}
+
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;AESIT aesit = findAdminExecutorService (serverAlias, false);
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;if (aesit == AdminExecutorServices.end())
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;messageToClient (1, &quot;don't find the server&quot;);
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;nlwarning(&quot;don't find the server&quot;);
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;StartAllServices = false;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;return;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}
+
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// check if the service is not currently running
+
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;StartAllServicesPos++;
+
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;SIT sit = (*aesit).findService (serviceAlias);
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;if ((*sit).Connected)
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// the service is already running, go to the next process
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;doNextStartAllServicesStep ();
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;else
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// send the resquest to the AES
+
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;CMessage msgout (CNetManager::getSIDA((*aesit).ServerAlias), &quot;STARTS&quot;);
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;msgout.serial (serviceAlias);
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;CNetManager::send ((*aesit).ServerAlias, msgout);
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}
+ &nbsp; &nbsp; &nbsp; &nbsp;}
+ &nbsp; &nbsp; &nbsp; &nbsp;catch(EUnknownVar&amp;)
+ &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;messageToClient (1, &quot;'Services' variable is not found&quot;);
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;nlwarning (&quot;'Services' variable is not found&quot;);
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;StartAllServices = false;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;return;
+ &nbsp; &nbsp; &nbsp; &nbsp;}
+}
+
+void initStartAllServices ()
+{
+ &nbsp; &nbsp; &nbsp; &nbsp;if (StartAllServices)
+ &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;messageToClient (1, &quot;already running a script, reset it&quot;);
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;nlwarning(&quot;already running a script, reset it&quot;);
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;StartAllServices = false;
+ &nbsp; &nbsp; &nbsp; &nbsp;}
+
+ &nbsp; &nbsp; &nbsp; &nbsp;try
+ &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;CConfigFile::CVar &amp;script = IService::getInstance()-&gt;ConfigFile.getVar(&quot;Services&quot;);
+
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;for (sint i = 0 ; i &lt; script.size (); i+=2)
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;string serverAlias = script.asString(i);
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;AESIT aesit = findAdminExecutorService (serverAlias, false);
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;if (aesit == AdminExecutorServices.end())
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;messageToClient (1, &quot;an aes is not running, can't run the script&quot;);
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;nlwarning(&quot;aes '%s' isn't running, can't run the script&quot;, serverAlias.c_str());
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;return;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}
+ &nbsp; &nbsp; &nbsp; &nbsp;}
+ &nbsp; &nbsp; &nbsp; &nbsp;catch(EConfigFile &amp;)
+ &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;messageToClient (1, &quot;bad config file&quot;);
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;nlwarning (&quot;bad config file&quot;);
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;return;
+ &nbsp; &nbsp; &nbsp; &nbsp;}
+
+ &nbsp; &nbsp; &nbsp; &nbsp;StartAllServicesPos = 0;
+ &nbsp; &nbsp; &nbsp; &nbsp;StartAllServices = true;
+
+ &nbsp; &nbsp; &nbsp; &nbsp;doNextStartAllServicesStep();
+}
+
+
+////////////////////////////////////////////////////////////////////////////////////////////////////////
+////////////////////////////////////////////////////////////////////////////////////////////////////////
+////////////////// CONNECTION TO THE AES ///////////////////////////////////////////////////////////////
+////////////////////////////////////////////////////////////////////////////////////////////////////////
+////////////////////////////////////////////////////////////////////////////////////////////////////////
+
+
+static void cbExecuteSystemCommandResult (CMessage&amp; msgin, TSockId from, CCallbackNetBase &amp;netbase)
+{
+ &nbsp; &nbsp; &nbsp; &nbsp;vector&lt;string&gt; result;
+ &nbsp; &nbsp; &nbsp; &nbsp;msgin.serialCont (result);
+
+ &nbsp; &nbsp; &nbsp; &nbsp;nlinfo(&quot;command result&quot;);
+ &nbsp; &nbsp; &nbsp; &nbsp;for (uint i = 0; i &lt; result.size(); i++)
+ &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;printf (&quot;%s&quot;, result[i].c_str());
+ &nbsp; &nbsp; &nbsp; &nbsp;}
+ &nbsp; &nbsp; &nbsp; &nbsp;nlinfo(&quot;end of command result&quot;);
+}
+
+// get the service list from the admin exec and send the list to all admin client
+static void cbServiceList (CMessage&amp; msgin, TSockId from, CCallbackNetBase &amp;netbase)
+{
+ &nbsp; &nbsp; &nbsp; &nbsp;CAdminExecutorService *aes = (CAdminExecutorService*) (uint) from-&gt;appId();
+
+ &nbsp; &nbsp; &nbsp; &nbsp;//
+ &nbsp; &nbsp; &nbsp; &nbsp;// Get the list of service from aes
+ &nbsp; &nbsp; &nbsp; &nbsp;//
+
+ &nbsp; &nbsp; &nbsp; &nbsp;uint32 nbs;
+ &nbsp; &nbsp; &nbsp; &nbsp;msgin.serial (nbs);
+
+ &nbsp; &nbsp; &nbsp; &nbsp;for (uint32 i = 0; i &lt; nbs; i++)
+ &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// find the service
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;CService s;
+
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;msgin.serial (s.Id, s.AliasName, s.ShortName, s.LongName, s.Ready);
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;msgin.serialCont (s.Commands);
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;s.Connected = true;
+
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;if (!s.AliasName.empty())
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;SIT sit = aes-&gt;findService (s.AliasName, false);
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;if (sit == aes-&gt;Services.end ())
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;aes-&gt;Services.push_back (s);
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;else
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;nlassert (&quot;the service already exists with alias, update it&quot;);
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;(*sit).setValues (s);
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;else
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;SIT sit = aes-&gt;findService (s.Id, false);
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;if (sit == aes-&gt;Services.end ())
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;aes-&gt;Services.push_back (s);
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;else
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;nlassert (&quot;the service already exists with id, update it&quot;);
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;(*sit).setValues (s);
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}
+ &nbsp; &nbsp; &nbsp; &nbsp;}
+ &nbsp; &nbsp; &nbsp; &nbsp;
+ &nbsp; &nbsp; &nbsp; &nbsp;displayServices ();
+
+ &nbsp; &nbsp; &nbsp; &nbsp;//
+ &nbsp; &nbsp; &nbsp; &nbsp;// Send the new list to all admin
+ &nbsp; &nbsp; &nbsp; &nbsp;//
+
+ &nbsp; &nbsp; &nbsp; &nbsp;CMessage msgout (CNetManager::getSIDA (&quot;AS&quot;), &quot;SERVICE_LIST&quot;);
+ &nbsp; &nbsp; &nbsp; &nbsp;uint32 nbaes = 1;
+ &nbsp; &nbsp; &nbsp; &nbsp;msgout.serial (nbaes);
+ &nbsp; &nbsp; &nbsp; &nbsp;msgout.serial (aes-&gt;Id);
+ &nbsp; &nbsp; &nbsp; &nbsp;uint32 ss = aes-&gt;Services.size();
+ &nbsp; &nbsp; &nbsp; &nbsp;msgout.serial (ss);
+
+ &nbsp; &nbsp; &nbsp; &nbsp;for (SIT sit = aes-&gt;Services.begin(); sit != aes-&gt;Services.end(); sit++)
+ &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;msgout.serial ((*sit).Id, (*sit).AliasName, (*sit).ShortName, (*sit).LongName);
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;msgout.serial ((*sit).Ready, (*sit).Connected, (*sit).InConfig);
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;msgout.serialCont ((*sit).Commands);
+ &nbsp; &nbsp; &nbsp; &nbsp;}
+ &nbsp; &nbsp; &nbsp; &nbsp;CNetManager::send (&quot;AS&quot;, msgout, 0);
+}
+
+static void cbServiceAliasList (CMessage&amp; msgin, TSockId from, CCallbackNetBase &amp;netbase)
+{
+ &nbsp; &nbsp; &nbsp; &nbsp;// get the service list from the admin exec and send the list to all admin client
+ &nbsp; &nbsp; &nbsp; &nbsp;CAdminExecutorService *aes = (CAdminExecutorService*) (uint) from-&gt;appId();
+
+ &nbsp; &nbsp; &nbsp; &nbsp;aes-&gt;ServiceAliasList.clear ();
+ &nbsp; &nbsp; &nbsp; &nbsp;msgin.serialCont (aes-&gt;ServiceAliasList);
+
+ &nbsp; &nbsp; &nbsp; &nbsp;nlinfo(&quot;send SAL to admin callback from aes&quot;);
+
+ &nbsp; &nbsp; &nbsp; &nbsp;CMessage msgout (CNetManager::getSIDA (&quot;AS&quot;), &quot;SAL&quot;);
+ &nbsp; &nbsp; &nbsp; &nbsp;msgout.serial (aes-&gt;Id);
+ &nbsp; &nbsp; &nbsp; &nbsp;msgout.serialCont (aes-&gt;ServiceAliasList);
+ &nbsp; &nbsp; &nbsp; &nbsp;CNetManager::send (&quot;AS&quot;, msgout, 0);
+ &nbsp; &nbsp; &nbsp; &nbsp;
+ &nbsp; &nbsp; &nbsp; &nbsp;nlinfo(&quot;new service alias list&quot;);
+}
+
+
+static void cbServiceIdentification (CMessage&amp; msgin, TSockId from, CCallbackNetBase &amp;netbase)
+{
+ &nbsp; &nbsp; &nbsp; &nbsp;CAdminExecutorService *aes = (CAdminExecutorService*) (uint) from-&gt;appId();
+
+ &nbsp; &nbsp; &nbsp; &nbsp;uint32 sid;
+ &nbsp; &nbsp; &nbsp; &nbsp;string alias;
+
+ &nbsp; &nbsp; &nbsp; &nbsp;msgin.serial (sid, alias);
+
+ &nbsp; &nbsp; &nbsp; &nbsp;SIT sit;
+ &nbsp; &nbsp; &nbsp; &nbsp;if (!alias.empty())
+ &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;sit = aes-&gt;findService (alias, false);
+
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;if (sit == aes-&gt;Services.end ())
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// the alias is not found
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;nlwarning (&quot;new service with alias (%s) but not in my list&quot;, alias.c_str());
+
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;aes-&gt;Services.push_back (CService ());
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;sit = aes-&gt;Services.end();
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;sit--;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;else
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// normal case
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}
+ &nbsp; &nbsp; &nbsp; &nbsp;}
+ &nbsp; &nbsp; &nbsp; &nbsp;else
+ &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;sit = aes-&gt;findService (sid, false);
+
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;if (sit == aes-&gt;Services.end ())
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// normal case for unknown services
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;nlwarning (&quot;new service without alias and not in my list, add it&quot;);
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;else
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;nlwarning (&quot;new service without alias is already in my list with id %d, add it&quot;, sid);
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;aes-&gt;Services.push_back (CService ());
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;sit = aes-&gt;Services.end();
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;sit--;
+ &nbsp; &nbsp; &nbsp; &nbsp;}
+
+ &nbsp; &nbsp; &nbsp; &nbsp;(*sit).Id = sid;
+ &nbsp; &nbsp; &nbsp; &nbsp;(*sit).AliasName = alias;
+ &nbsp; &nbsp; &nbsp; &nbsp;(*sit).Connected = true;
+ &nbsp; &nbsp; &nbsp; &nbsp;msgin.serial ((*sit).ShortName, (*sit).LongName);
+ &nbsp; &nbsp; &nbsp; &nbsp;msgin.serialCont ((*sit).Commands);
+
+ &nbsp; &nbsp; &nbsp; &nbsp;nlinfo (&quot;*:%d:%d is identified to be '%s' '%s' '%s'&quot;, aes-&gt;Id, sid, (*sit).AliasName.c_str(), (*sit).ShortName.c_str(), (*sit).LongName.c_str());
+
+ &nbsp; &nbsp; &nbsp; &nbsp;// broadcast the message to all admin client
+ &nbsp; &nbsp; &nbsp; &nbsp;CMessage msgout (CNetManager::getSIDA (&quot;AS&quot;), &quot;SID&quot;);
+ &nbsp; &nbsp; &nbsp; &nbsp;msgout.serial (aes-&gt;Id, sid, (*sit).AliasName, (*sit).ShortName, (*sit).LongName);
+ &nbsp; &nbsp; &nbsp; &nbsp;msgout.serialCont ((*sit).Commands);
+
+ &nbsp; &nbsp; &nbsp; &nbsp;CNetManager::send (&quot;AS&quot;, msgout, 0);
+}
+
+static void cbServiceReady (CMessage&amp; msgin, TSockId from, CCallbackNetBase &amp;netbase)
+{
+ &nbsp; &nbsp; &nbsp; &nbsp;CAdminExecutorService *aes = (CAdminExecutorService*) (uint) from-&gt;appId();
+
+ &nbsp; &nbsp; &nbsp; &nbsp;uint32 sid;
+ &nbsp; &nbsp; &nbsp; &nbsp;msgin.serial (sid);
+
+ &nbsp; &nbsp; &nbsp; &nbsp;SIT sit = aes-&gt;findService(sid);
+ &nbsp; &nbsp; &nbsp; &nbsp;(*sit).Ready = true;
+
+ &nbsp; &nbsp; &nbsp; &nbsp;nlinfo (&quot;*:%d:%d is ready&quot;, aes-&gt;Id, sid);
+
+ &nbsp; &nbsp; &nbsp; &nbsp;// broadcast the message to all admin client
+ &nbsp; &nbsp; &nbsp; &nbsp;CMessage msgout (CNetManager::getSIDA (&quot;AS&quot;), &quot;SR&quot;);
+ &nbsp; &nbsp; &nbsp; &nbsp;msgout.serial (aes-&gt;Id, sid);
+ &nbsp; &nbsp; &nbsp; &nbsp;CNetManager::send (&quot;AS&quot;, msgout, 0);
+
+ &nbsp; &nbsp; &nbsp; &nbsp;// if we are in a script execution, continue
+ &nbsp; &nbsp; &nbsp; &nbsp;if (StartAllServices)
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;doNextStartAllServicesStep();
+}
+
+static void cbServiceConnection (CMessage&amp; msgin, TSockId from, CCallbackNetBase &amp;netbase)
+{
+ &nbsp; &nbsp; &nbsp; &nbsp;CAdminExecutorService *aes = (CAdminExecutorService*) (uint) from-&gt;appId();
+
+ &nbsp; &nbsp; &nbsp; &nbsp;uint32 sid;
+ &nbsp; &nbsp; &nbsp; &nbsp;msgin.serial (sid);
+
+ &nbsp; &nbsp; &nbsp; &nbsp;nlinfo (&quot;*:%d:%d connected&quot;, aes-&gt;Id, sid);
+
+ &nbsp; &nbsp; &nbsp; &nbsp;// don't do anything. we have to wait identification to add it in out lists
+
+/*
+ &nbsp; &nbsp; &nbsp; &nbsp;aes-&gt;Services.push_back (CService(sid));
+*/
+ &nbsp; &nbsp; &nbsp; &nbsp;// broadcast the message to all admin client
+ &nbsp; &nbsp; &nbsp; &nbsp;CMessage msgout (CNetManager::getSIDA (&quot;AS&quot;), &quot;SC&quot;);
+ &nbsp; &nbsp; &nbsp; &nbsp;msgout.serial (aes-&gt;Id, sid);
+ &nbsp; &nbsp; &nbsp; &nbsp;CNetManager::send (&quot;AS&quot;, msgout, 0);
+}
+
+static void cbServiceDisconnection (CMessage&amp; msgin, TSockId from, CCallbackNetBase &amp;netbase)
+{
+ &nbsp; &nbsp; &nbsp; &nbsp;CAdminExecutorService *aes = (CAdminExecutorService*) (uint) from-&gt;appId();
+
+ &nbsp; &nbsp; &nbsp; &nbsp;uint32 sid;
+ &nbsp; &nbsp; &nbsp; &nbsp;msgin.serial (sid);
+
+ &nbsp; &nbsp; &nbsp; &nbsp;nlinfo (&quot;*:%d:%d disconnected&quot;, aes-&gt;Id, sid);
+
+ &nbsp; &nbsp; &nbsp; &nbsp;SIT sit = aes-&gt;findService(sid, false);
+ &nbsp; &nbsp; &nbsp; &nbsp;
+ &nbsp; &nbsp; &nbsp; &nbsp;// broadcast the message to all admin client
+ &nbsp; &nbsp; &nbsp; &nbsp;CMessage msgout (CNetManager::getSIDA (&quot;AS&quot;), &quot;SD&quot;);
+ &nbsp; &nbsp; &nbsp; &nbsp;msgout.serial (aes-&gt;Id, sid);
+ &nbsp; &nbsp; &nbsp; &nbsp;CNetManager::send (&quot;AS&quot;, msgout, 0);
+
+ &nbsp; &nbsp; &nbsp; &nbsp;// the service could disconnect before it's identification, in this case, we don't have it in the service list
+ &nbsp; &nbsp; &nbsp; &nbsp;if (sit != aes-&gt;Services.end ())
+ &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;if ((*sit).InConfig)
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;(*sit).Ready = (*sit).Connected = false;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;(*sit).Id = 0xFFFFFFFF;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;(*sit).ShortName = (*sit).LongName = &quot;&quot;;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;(*sit).Commands.clear ();
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;else
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// erase only if it's not a service in the config
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;aes-&gt;Services.erase (sit);
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}
+ &nbsp; &nbsp; &nbsp; &nbsp;}
+
+ &nbsp; &nbsp; &nbsp; &nbsp;displayServices ();
+}
+
+// i'm connected to a new admin executor service
+void cbAESConnection (const string &amp;serviceName, TSockId from, void *arg)
+{
+ &nbsp; &nbsp; &nbsp; &nbsp;AESIT aesit = findAdminExecutorService (serviceName); &nbsp; &nbsp; &nbsp; &nbsp;
+ &nbsp; &nbsp; &nbsp; &nbsp;CAdminExecutorService *aes = &amp;(*aesit);
+ &nbsp; &nbsp; &nbsp; &nbsp;
+ &nbsp; &nbsp; &nbsp; &nbsp;// set the appid to find the aes in O(1)
+ &nbsp; &nbsp; &nbsp; &nbsp;from-&gt;setAppId ((uint64)(uint)aes);
+
+ &nbsp; &nbsp; &nbsp; &nbsp;aes-&gt;Connected = true;
+ &nbsp; &nbsp; &nbsp; &nbsp;nlinfo (&quot;*:%d:* connected&quot;, aes-&gt;Id);
+/*
+ &nbsp; &nbsp; &nbsp; &nbsp;// broadcast the message that an admin exec is connected to all admin client
+ &nbsp; &nbsp; &nbsp; &nbsp;CMessage msgout (CNetManager::getSIDA (&quot;AS&quot;), &quot;AESC&quot;);
+ &nbsp; &nbsp; &nbsp; &nbsp;msgout.serial (aes-&gt;Id);
+ &nbsp; &nbsp; &nbsp; &nbsp;CNetManager::send (&quot;AS&quot;, msgout, 0);
+*/
+
+ &nbsp; &nbsp; &nbsp; &nbsp;// broadcast the new state of this AES
+ &nbsp; &nbsp; &nbsp; &nbsp;CMessage msgout (CNetManager::getSIDA (&quot;AS&quot;), &quot;AES_LIST&quot;);
+ &nbsp; &nbsp; &nbsp; &nbsp;uint32 nbaes = 1;
+ &nbsp; &nbsp; &nbsp; &nbsp;msgout.serial (nbaes);
+ &nbsp; &nbsp; &nbsp; &nbsp;msgout.serial (aes-&gt;Id, aes-&gt;ServerAlias, aes-&gt;ServerAddr, aes-&gt;Connected);
+ &nbsp; &nbsp; &nbsp; &nbsp;CNetManager::send (&quot;AS&quot;, msgout, 0);
+}
+
+// i'm disconnected to an admin executor service
+void cbAESDisconnection (const string &amp;serviceName, TSockId from, void *arg)
+{
+ &nbsp; &nbsp; &nbsp; &nbsp;// get the aes with the appid
+ &nbsp; &nbsp; &nbsp; &nbsp;CAdminExecutorService *aes = (CAdminExecutorService*) (uint) from-&gt;appId();
+
+ &nbsp; &nbsp; &nbsp; &nbsp;aes-&gt;Connected = false;
+
+ &nbsp; &nbsp; &nbsp; &nbsp;SIT sit;
+ &nbsp; &nbsp; &nbsp; &nbsp;for (sit = aes-&gt;Services.begin(); sit != aes-&gt;Services.end();)
+ &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// keep only inconfig services
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;if ((*sit).InConfig)
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;(*sit).Id = 0xFFFFFFFF;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;(*sit).ShortName = (*sit).LongName = &quot;&quot;;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;(*sit).Ready = (*sit).Connected = false;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;sit++;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;else
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// erase only if it's not a service in the config
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;sit = aes-&gt;Services.erase (sit);
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}
+ &nbsp; &nbsp; &nbsp; &nbsp;}
+
+ &nbsp; &nbsp; &nbsp; &nbsp;nlinfo (&quot;*:%d:* disconnected&quot;, aes-&gt;Id);
+/* &nbsp; &nbsp; &nbsp;
+ &nbsp; &nbsp; &nbsp; &nbsp;// broadcast the message to all admin client that an admin exec is disconnected
+ &nbsp; &nbsp; &nbsp; &nbsp;CMessage msgout (CNetManager::getSIDA (&quot;AS&quot;), &quot;AESD&quot;);
+ &nbsp; &nbsp; &nbsp; &nbsp;msgout.serial (aes-&gt;Id);
+ &nbsp; &nbsp; &nbsp; &nbsp;CNetManager::send (&quot;AS&quot;, msgout, 0);
+*/
+
+ &nbsp; &nbsp; &nbsp; &nbsp;displayServices ();
+
+ &nbsp; &nbsp; &nbsp; &nbsp;// broadcast the new state of this AES
+ &nbsp; &nbsp; &nbsp; &nbsp;CMessage msgout (CNetManager::getSIDA (&quot;AS&quot;), &quot;AES_LIST&quot;);
+ &nbsp; &nbsp; &nbsp; &nbsp;uint32 nbaes = 1;
+ &nbsp; &nbsp; &nbsp; &nbsp;msgout.serial (nbaes);
+ &nbsp; &nbsp; &nbsp; &nbsp;msgout.serial (aes-&gt;Id, aes-&gt;ServerAlias, aes-&gt;ServerAddr, aes-&gt;Connected);
+ &nbsp; &nbsp; &nbsp; &nbsp;CNetManager::send (&quot;AS&quot;, msgout, 0);
+}
+
+static void cbLog (CMessage&amp; msgin, TSockId from, CCallbackNetBase &amp;netbase)
+{
+ &nbsp; &nbsp; &nbsp; &nbsp;// received an answer for a command, give it to all admin client
+
+ &nbsp; &nbsp; &nbsp; &nbsp;// get the aes with the appid
+ &nbsp; &nbsp; &nbsp; &nbsp;CAdminExecutorService *aes = (CAdminExecutorService*) (uint) from-&gt;appId();
+
+ &nbsp; &nbsp; &nbsp; &nbsp;// broadcast the message to the admin service
+ &nbsp; &nbsp; &nbsp; &nbsp;CMessage msgout (CNetManager::getSIDA (&quot;AS&quot;), &quot;XLOG&quot;);
+ &nbsp; &nbsp; &nbsp; &nbsp;string log;
+ &nbsp; &nbsp; &nbsp; &nbsp;uint32 sid;
+ &nbsp; &nbsp; &nbsp; &nbsp;msgin.serial (sid);
+ &nbsp; &nbsp; &nbsp; &nbsp;msgin.serial (log);
+
+ &nbsp; &nbsp; &nbsp; &nbsp;msgout.serial (aes-&gt;Id);
+ &nbsp; &nbsp; &nbsp; &nbsp;msgout.serial (sid);
+ &nbsp; &nbsp; &nbsp; &nbsp;msgout.serial (log);
+ &nbsp; &nbsp; &nbsp; &nbsp;CNetManager::send (&quot;AS&quot;, msgout, 0);
+}
+
+
+TCallbackItem AESCallbackArray[] =
+{
+ &nbsp; &nbsp; &nbsp; &nbsp;{ &quot;ESCR&quot;, cbExecuteSystemCommandResult },
+
+ &nbsp; &nbsp; &nbsp; &nbsp;{ &quot;SL&quot;, cbServiceList },
+ &nbsp; &nbsp; &nbsp; &nbsp;{ &quot;SID&quot;, cbServiceIdentification },
+ &nbsp; &nbsp; &nbsp; &nbsp;{ &quot;SR&quot;, cbServiceReady },
+ &nbsp; &nbsp; &nbsp; &nbsp;{ &quot;SC&quot;, cbServiceConnection },
+ &nbsp; &nbsp; &nbsp; &nbsp;{ &quot;SD&quot;, cbServiceDisconnection },
+
+ &nbsp; &nbsp; &nbsp; &nbsp;{ &quot;SAL&quot;, cbServiceAliasList },
+
+ &nbsp; &nbsp; &nbsp; &nbsp;{ &quot;XLOG&quot;, cbLog },
+};
+
+
+////////////////////////////////////////////////////////////////////////////////////////////////////////
+////////////////////////////////////////////////////////////////////////////////////////////////////////
+////////////////// CONNECTION TO THE CLIENT ////////////////////////////////////////////////////////////
+////////////////////////////////////////////////////////////////////////////////////////////////////////
+////////////////////////////////////////////////////////////////////////////////////////////////////////
+
+//
+// A new admin client is connected.
+//
+void clientConnection (const string &amp;serviceName, TSockId from, void *arg)
+{
+ &nbsp; &nbsp; &nbsp; &nbsp;// new client, send him all out info about services
+
+ &nbsp; &nbsp; &nbsp; &nbsp;nlinfo (&quot;admin %s is connected&quot;, from-&gt;asString().c_str());
+
+ &nbsp; &nbsp; &nbsp; &nbsp;CNetManager::getNetBase(serviceName)-&gt;authorizeOnly (&quot;AUTH&quot;, from);
+}
+
+static void cbAuthenticateClient (CMessage&amp; msgin, TSockId from, CCallbackNetBase &amp;netbase)
+{
+ &nbsp; &nbsp; &nbsp; &nbsp;//
+ &nbsp; &nbsp; &nbsp; &nbsp;// Check the validity of the admin
+ &nbsp; &nbsp; &nbsp; &nbsp;//
+ &nbsp; &nbsp; &nbsp; &nbsp;
+ &nbsp; &nbsp; &nbsp; &nbsp;string password;
+ &nbsp; &nbsp; &nbsp; &nbsp;bool ok = false;
+ &nbsp; &nbsp; &nbsp; &nbsp;try
+ &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;msgin.serial (password);
+
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;if (password == IService::getInstance()-&gt;ConfigFile.getVar(&quot;Password&quot;).asString())
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// good authentification
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;ok = true;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}
+ &nbsp; &nbsp; &nbsp; &nbsp;}
+ &nbsp; &nbsp; &nbsp; &nbsp;catch (Exception &amp;)
+ &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// problem, eject him
+ &nbsp; &nbsp; &nbsp; &nbsp;}
+
+ &nbsp; &nbsp; &nbsp; &nbsp;if (ok)
+ &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;netbase.authorizeOnly (NULL, from);
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;nlinfo (&quot;Admin authentification success&quot;);
+ &nbsp; &nbsp; &nbsp; &nbsp;}
+ &nbsp; &nbsp; &nbsp; &nbsp;else
+ &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// bad auth =&gt; disconnect
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;netbase.disconnect (from);
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;nlwarning (&quot;Bad admin authentification, tried password: '%s'&quot;, password.c_str());
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;return;
+ &nbsp; &nbsp; &nbsp; &nbsp;}
+
+ &nbsp; &nbsp; &nbsp; &nbsp;//
+ &nbsp; &nbsp; &nbsp; &nbsp;// send the list of all the aes
+ &nbsp; &nbsp; &nbsp; &nbsp;//
+
+ &nbsp; &nbsp; &nbsp; &nbsp;CMessage msgout2 (CNetManager::getSIDA (&quot;AS&quot;), &quot;AES_LIST&quot;);
+ &nbsp; &nbsp; &nbsp; &nbsp;AESIT aesit;
+ &nbsp; &nbsp; &nbsp; &nbsp;uint32 nbaes = (uint32)AdminExecutorServices.size();
+ &nbsp; &nbsp; &nbsp; &nbsp;msgout2.serial (nbaes);
+ &nbsp; &nbsp; &nbsp; &nbsp;for (aesit = AdminExecutorServices.begin(); aesit != AdminExecutorServices.end(); aesit++)
+ &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// send info about the AES
+
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;msgout2.serial ((*aesit).Id, (*aesit).ServerAlias, (*aesit).ServerAddr, (*aesit).Connected);
+ &nbsp; &nbsp; &nbsp; &nbsp;}
+ &nbsp; &nbsp; &nbsp; &nbsp;CNetManager::send (&quot;AS&quot;, msgout2, from);
+
+ &nbsp; &nbsp; &nbsp; &nbsp;//
+ &nbsp; &nbsp; &nbsp; &nbsp;// send the list of all services
+ &nbsp; &nbsp; &nbsp; &nbsp;//
+
+ &nbsp; &nbsp; &nbsp; &nbsp;CMessage msgout (CNetManager::getSIDA (&quot;AS&quot;), &quot;SERVICE_LIST&quot;);
+ &nbsp; &nbsp; &nbsp; &nbsp;nbaes = (uint32)AdminExecutorServices.size();
+ &nbsp; &nbsp; &nbsp; &nbsp;msgout.serial (nbaes);
+ &nbsp; &nbsp; &nbsp; &nbsp;for (aesit = AdminExecutorServices.begin(); aesit != AdminExecutorServices.end(); aesit++)
+ &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;msgout.serial ((*aesit).Id);
+
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;uint32 nbs = (uint32)(*aesit).Services.size();
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;msgout.serial (nbs);
+
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;for (SIT sit = (*aesit).Services.begin(); sit != (*aesit).Services.end(); sit++)
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// send info about services of the AES
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;msgout.serial ((*sit).Id, (*sit).AliasName, (*sit).ShortName, (*sit).LongName);
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;msgout.serial ((*sit).Ready, (*sit).Connected, (*sit).InConfig);
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;msgout.serialCont ((*sit).Commands);
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}
+ &nbsp; &nbsp; &nbsp; &nbsp;}
+ &nbsp; &nbsp; &nbsp; &nbsp;CNetManager::send (&quot;AS&quot;, msgout, from);
+
+ &nbsp; &nbsp; &nbsp; &nbsp;displayServices ();
+
+ &nbsp; &nbsp; &nbsp; &nbsp;//
+ &nbsp; &nbsp; &nbsp; &nbsp;// send service alias list
+ &nbsp; &nbsp; &nbsp; &nbsp;//
+
+ &nbsp; &nbsp; &nbsp; &nbsp;nlinfo(&quot;send SAL to admin startup&quot;);
+
+ &nbsp; &nbsp; &nbsp; &nbsp;for (aesit = AdminExecutorServices.begin(); aesit != AdminExecutorServices.end(); aesit++)
+ &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;CMessage msgout2 (CNetManager::getSIDA (&quot;AS&quot;), &quot;SAL&quot;);
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;msgout2.serial ((*aesit).Id);
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;msgout2.serialCont ((*aesit).ServiceAliasList);
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;CNetManager::send (&quot;AS&quot;, msgout2, from);
+ &nbsp; &nbsp; &nbsp; &nbsp;}
+}
+
+
+static void cbExecuteSystemCommand (CMessage&amp; msgin, TSockId from, CCallbackNetBase &amp;netbase)
+{
+ &nbsp; &nbsp; &nbsp; &nbsp;string command;
+ &nbsp; &nbsp; &nbsp; &nbsp;uint32 aesid;
+ &nbsp; &nbsp; &nbsp; &nbsp;msgin.serial (aesid);
+ &nbsp; &nbsp; &nbsp; &nbsp;msgin.serial (command);
+
+ &nbsp; &nbsp; &nbsp; &nbsp;AESIT aesit = findAdminExecutorService (aesid, false);
+ &nbsp; &nbsp; &nbsp; &nbsp;if (aesit == AdminExecutorServices.end())
+ &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// don't find the aes, send an error message
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;messageToClient (0, &quot;couldn't execute command, as didn't find the aes&quot;, from);
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;return;
+ &nbsp; &nbsp; &nbsp; &nbsp;}
+
+ &nbsp; &nbsp; &nbsp; &nbsp;// send the resquest to the AES
+
+ &nbsp; &nbsp; &nbsp; &nbsp;CMessage msgout (CNetManager::getSIDA((*aesit).ServerAlias), &quot;SYS&quot;);
+ &nbsp; &nbsp; &nbsp; &nbsp;msgout.serial (command);
+ &nbsp; &nbsp; &nbsp; &nbsp;CNetManager::send ((*aesit).ServerAlias, msgout);
+}
+
+
+static void cbStartService (CMessage&amp; msgin, TSockId from, CCallbackNetBase &amp;netbase)
+{
+ &nbsp; &nbsp; &nbsp; &nbsp;string serviceAlias;
+ &nbsp; &nbsp; &nbsp; &nbsp;uint32 aesid;
+ &nbsp; &nbsp; &nbsp; &nbsp;msgin.serial (aesid);
+ &nbsp; &nbsp; &nbsp; &nbsp;msgin.serial (serviceAlias);
+
+ &nbsp; &nbsp; &nbsp; &nbsp;AESIT aesit = findAdminExecutorService (aesid, false);
+ &nbsp; &nbsp; &nbsp; &nbsp;if (aesit == AdminExecutorServices.end())
+ &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// don't find the aes, send an error message
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;messageToClient (0, &quot;couldn't start service, as didn't find the aes&quot;, from);
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;return;
+ &nbsp; &nbsp; &nbsp; &nbsp;}
+
+ &nbsp; &nbsp; &nbsp; &nbsp;// send the resquest to the AES
+
+ &nbsp; &nbsp; &nbsp; &nbsp;CMessage msgout (CNetManager::getSIDA((*aesit).ServerAlias), &quot;STARTS&quot;);
+ &nbsp; &nbsp; &nbsp; &nbsp;msgout.serial (serviceAlias);
+ &nbsp; &nbsp; &nbsp; &nbsp;CNetManager::send ((*aesit).ServerAlias, msgout);
+}
+
+static void cbStopService (CMessage&amp; msgin, TSockId from, CCallbackNetBase &amp;netbase)
+{
+ &nbsp; &nbsp; &nbsp; &nbsp;uint32 aesid, sid;
+ &nbsp; &nbsp; &nbsp; &nbsp;msgin.serial (aesid);
+ &nbsp; &nbsp; &nbsp; &nbsp;msgin.serial (sid);
+
+ &nbsp; &nbsp; &nbsp; &nbsp;AESIT aesit = findAdminExecutorService (aesid, false);
+ &nbsp; &nbsp; &nbsp; &nbsp;if (aesit == AdminExecutorServices.end())
+ &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;messageToClient (0, &quot;couldn't stop service, as didn't find the aes&quot;, from);
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// don't find the aes, send an error message
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;return;
+ &nbsp; &nbsp; &nbsp; &nbsp;}
+
+ &nbsp; &nbsp; &nbsp; &nbsp;SIT sit = (*aesit).findService (sid, false);
+ &nbsp; &nbsp; &nbsp; &nbsp;if (sit == (*aesit).Services.end())
+ &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// don't find the s, send an error message
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;messageToClient (0, &quot;couldn't stop service, as didn't find the service&quot;, from);
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;return;
+ &nbsp; &nbsp; &nbsp; &nbsp;}
+
+ &nbsp; &nbsp; &nbsp; &nbsp;// send the resquest to the AES
+
+ &nbsp; &nbsp; &nbsp; &nbsp;CMessage msgout (CNetManager::getSIDA((*aesit).ServerAlias), &quot;STOPS&quot;);
+ &nbsp; &nbsp; &nbsp; &nbsp;msgout.serial (sid);
+ &nbsp; &nbsp; &nbsp; &nbsp;CNetManager::send ((*aesit).ServerAlias, msgout);
+}
+
+static void cbExecCommand (CMessage&amp; msgin, TSockId from, CCallbackNetBase &amp;netbase)
+{
+ &nbsp; &nbsp; &nbsp; &nbsp;uint32 aesid, sid;
+ &nbsp; &nbsp; &nbsp; &nbsp;string command;
+ &nbsp; &nbsp; &nbsp; &nbsp;msgin.serial (aesid);
+ &nbsp; &nbsp; &nbsp; &nbsp;msgin.serial (sid);
+ &nbsp; &nbsp; &nbsp; &nbsp;msgin.serial (command);
+
+ &nbsp; &nbsp; &nbsp; &nbsp;AESIT aesit = findAdminExecutorService (aesid, false);
+ &nbsp; &nbsp; &nbsp; &nbsp;if (aesit == AdminExecutorServices.end())
+ &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;messageToClient (0, &quot;couldn't stop service, as didn't find the aes&quot;, from);
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// don't find the aes, send an error message
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;return;
+ &nbsp; &nbsp; &nbsp; &nbsp;}
+
+ &nbsp; &nbsp; &nbsp; &nbsp;SIT sit = (*aesit).findService (sid, false);
+ &nbsp; &nbsp; &nbsp; &nbsp;if (sit == (*aesit).Services.end())
+ &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// don't find the s, send an error message
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;messageToClient (0, &quot;couldn't stop service, as didn't find the service&quot;, from);
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;return;
+ &nbsp; &nbsp; &nbsp; &nbsp;}
+
+ &nbsp; &nbsp; &nbsp; &nbsp;// send the resquest to the AES
+
+ &nbsp; &nbsp; &nbsp; &nbsp;CMessage msgout (CNetManager::getSIDA((*aesit).ServerAlias), &quot;EXEC_COMMAND&quot;);
+ &nbsp; &nbsp; &nbsp; &nbsp;msgout.serial (sid);
+ &nbsp; &nbsp; &nbsp; &nbsp;msgout.serial (command);
+ &nbsp; &nbsp; &nbsp; &nbsp;CNetManager::send ((*aesit).ServerAlias, msgout);
+}
+
+static void cbStartAllServices (CMessage&amp; msgin, TSockId from, CCallbackNetBase &amp;netbase)
+{
+ &nbsp; &nbsp; &nbsp; &nbsp;initStartAllServices ();
+}
+
+static void cbStopAllServices (CMessage&amp; msgin, TSockId from, CCallbackNetBase &amp;netbase)
+{
+ &nbsp; &nbsp; &nbsp; &nbsp;for (AESIT aesit = AdminExecutorServices.begin(); aesit != AdminExecutorServices.end(); aesit++)
+ &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;for (SIT sit = (*aesit).Services.begin(); sit != (*aesit).Services.end(); sit++)
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;if ((*sit).Connected)
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;CMessage msgout (CNetManager::getSIDA((*aesit).ServerAlias), &quot;STOPS&quot;);
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;msgout.serial ((*sit).Id);
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;CNetManager::send ((*aesit).ServerAlias, msgout);
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}
+ &nbsp; &nbsp; &nbsp; &nbsp;}
+}
+
+TCallbackItem ClientCallbackArray[] =
+{
+ &nbsp; &nbsp; &nbsp; &nbsp;{ &quot;AUTH&quot;, cbAuthenticateClient },
+ &nbsp; &nbsp; &nbsp; &nbsp;{ &quot;SYS&quot;, cbExecuteSystemCommand },
+ &nbsp; &nbsp; &nbsp; &nbsp;{ &quot;STARTS&quot;, cbStartService },
+ &nbsp; &nbsp; &nbsp; &nbsp;{ &quot;STOPS&quot;, cbStopService },
+ &nbsp; &nbsp; &nbsp; &nbsp;{ &quot;EXEC_COMMAND&quot;, cbExecCommand },
+ &nbsp; &nbsp; &nbsp; &nbsp;{ &quot;START_ALL_SERVICES&quot;, cbStartAllServices },
+ &nbsp; &nbsp; &nbsp; &nbsp;{ &quot;STOP_ALL_SERVICES&quot;, cbStopAllServices },
+};
+
+////////////////////////////////////////////////////////////////////////////////////////////////////////
+////////////////////////////////////////////////////////////////////////////////////////////////////////
+////////////////// SERVICE IMPLEMENTATION //////////////////////////////////////////////////////////////
+////////////////////////////////////////////////////////////////////////////////////////////////////////
+////////////////////////////////////////////////////////////////////////////////////////////////////////
+
+class CAdminService : public IService
+{
+public:
+
+ &nbsp; &nbsp; &nbsp; &nbsp;/// Init the service, load the universal time.
+ &nbsp; &nbsp; &nbsp; &nbsp;void &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;init ()
+ &nbsp; &nbsp; &nbsp; &nbsp;{
+// &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;DebugLog-&gt;addNegativeFilter (&quot;L0:&quot;);
+// &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;DebugLog-&gt;addNegativeFilter (&quot;L1:&quot;);
+// &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;DebugLog-&gt;addNegativeFilter (&quot;L2:&quot;);
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;CNetManager::setConnectionCallback (&quot;AS&quot;, clientConnection, NULL);
+
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;//
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// Get the list of AESHosts, add in the structures and create connection to all AES
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;//
+
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;CConfigFile::CVar &amp;host = ConfigFile.getVar (&quot;AESHosts&quot;);
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;sint i;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;for (i = 0 ; i &lt; host.size (); i+=2)
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;string serverAlias = host.asString(i);
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;string serverAddr = host.asString(i+1);
+
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// add to the list
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;CAdminExecutorService aes;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;aes.ServerAlias = serverAlias;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;aes.ServerAddr = serverAddr;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;AdminExecutorServices.push_back (aes);
+
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// connect to the AES
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;CNetManager::setConnectionCallback (serverAlias, cbAESConnection, NULL);
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;CNetManager::setDisconnectionCallback (serverAlias, cbAESDisconnection, NULL);
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;CNetManager::addClient (serverAlias, serverAddr+&quot;:49996&quot;);
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;CNetManager::addCallbackArray (serverAlias, AESCallbackArray, sizeof (AESCallbackArray)/sizeof(AESCallbackArray[0]));
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}
+
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;//
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// Get the list of services in the shard
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;//
+
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;CConfigFile::CVar &amp;serv = ConfigFile.getVar (&quot;Services&quot;);
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;for (i = 0 ; i &lt; serv.size (); i+=2)
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;string serverAlias = serv.asString(i);
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;string serviceAlias = serv.asString(i+1);
+
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;AESIT aesit = findAdminExecutorService (serverAlias);
+
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// add new AES in the list
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;CService s;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;s.AliasName = serviceAlias;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;s.InConfig = true;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;(*aesit).Services.push_back (s);
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;displayServices ();
+ &nbsp; &nbsp; &nbsp; &nbsp;}
+};
+
+
+// AS is a server connection to the admin client
+// AESAS is a client connection to the admin executor
+
+/// Naming Service
+NLNET_OLD_SERVICE_MAIN (CAdminService, &quot;AS&quot;, &quot;admin_service&quot;, 49995, ClientCallbackArray, NELNS_CONFIG, NELNS_LOGS);
+</PRE> \ No newline at end of file
diff --git a/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cpp?rev=1.15&content-type=text/x-cvsweb-markup&sortby=log/index.html b/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cpp?rev=1.15&content-type=text/x-cvsweb-markup&sortby=log/index.html
new file mode 100644
index 00000000..b0b2ec7c
--- /dev/null
+++ b/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cpp?rev=1.15&content-type=text/x-cvsweb-markup&sortby=log/index.html
@@ -0,0 +1,1001 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"><HTML>
+<HEAD><style> A { color:black }</style>
+<!-- hennerik CVSweb $Revision: 1.93 $ -->
+<TITLE>code/nelns/admin_service/admin_service.cpp - view - 1.15</TITLE></HEAD>
+<BODY BGCOLOR="#eeeeee">
+<table width="100%" border=0 cellspacing=0 cellpadding=1 bgcolor="#aaaaaa"><tr valign=bottom><td><a href="admin_service.cpp?sortby=log"><IMG SRC="http://www.nevrax.org/inc/img/picto-up.gif" ALT="[BACK]" BORDER="0" WIDTH="14" HEIGHT="13"></a> <b>Return to <A HREF="admin_service.cpp?sortby=log">admin_service.cpp</A>
+ CVS log</b> <IMG SRC="http://www.nevrax.org/inc/img/picto-news.gif" ALT="[TXT]" BORDER="0" WIDTH="13" HEIGHT="15"></td><td align=right><IMG SRC="http://www.nevrax.org/inc/img/picto-dir.gif" ALT="[DIR]" BORDER="0" WIDTH="15" HEIGHT="13"> <b>Up to <a href="/cvs/cvsweb.cgi/?sortby=log">Nevrax</a> / <a href="/cvs/cvsweb.cgi/code/?sortby=log">code</a> / <a href="/cvs/cvsweb.cgi/code/nelns/?sortby=log">nelns</a> / <a href="/cvs/cvsweb.cgi/code/nelns/admin_service/?sortby=log">admin_service</a></b></td></tr></table><HR noshade><table width="100%"><tr><td bgcolor="#ffffff">File: <a href="/cvs/cvsweb.cgi/?sortby=log">Nevrax</a> / <a href="/cvs/cvsweb.cgi/code/?sortby=log">code</a> / <a href="/cvs/cvsweb.cgi/code/nelns/?sortby=log">nelns</a> / <a href="/cvs/cvsweb.cgi/code/nelns/admin_service/?sortby=log">admin_service</a> / <a href="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cpp?sortby=log">admin_service.cpp</a>&nbsp;(<A HREF="/cvs/cvsweb.cgi/~checkout~/code/nelns/admin_service/admin_service.cpp?rev=1.15&amp;sortby=log" target="cvs_checkout" onClick="window.open('/cvs/cvsweb.cgi/~checkout~/code/nelns/admin_service/admin_service.cpp?rev=1.15','cvs_checkout','resizeable,scrollbars');"><b>download</b></A>)<BR>
+Revision <B>1.15</B>, <i>Mon Mar 25 09:28:00 2002 UTC</i> (4 months ago) by <i>lecroart</i>
+<BR>Branch: <b>MAIN</b>
+<BR>CVS Tags: <b>HEAD</b><BR>Changes since <b>1.14: +8 -6
+ lines</b><PRE>
+CHANGED: use new service functions
+</PRE>
+</td></tr></table><HR noshade><PRE>/** \file admin_service.cpp
+ * Admin Service (AS)
+ *
+ * $Id: admin_service.cpp,v 1.15 2002/03/25 09:28:00 lecroart Exp $
+ *
+ */
+
+/* Copyright, 2000 Nevrax Ltd.
+ *
+ * This file is part of NEVRAX NeL Network Services.
+ * NEVRAX NeL Network Services is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2, or (at your option)
+ * any later version.
+ *
+ * NEVRAX NeL Network Services is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with NEVRAX NeL Network Services; see the file COPYING. If not, write to the
+ * Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston,
+ * MA 02111-1307, USA.
+ */
+
+#ifdef HAVE_CONFIG_H
+#include &quot;config.h&quot;
+#endif // HAVE_CONFIG_H
+
+#ifndef NELNS_CONFIG
+#define NELNS_CONFIG &quot;&quot;
+#endif // NELNS_CONFIG
+
+#ifndef NELNS_LOGS
+#define NELNS_LOGS &quot;&quot;
+#endif // NELNS_LOGS
+
+#include &quot;nel/misc/types_nl.h&quot;
+
+#include &lt;string&gt;
+#include &lt;list&gt;
+
+#include &quot;nel/misc/debug.h&quot;
+#include &quot;nel/misc/config_file.h&quot;
+#include &quot;nel/misc/command.h&quot;
+
+#include &quot;nel/net/service.h&quot;
+#include &quot;nel/net/net_manager.h&quot;
+
+using namespace std;
+using namespace NLMISC;
+using namespace NLNET;
+
+////////////////////////
+
+
+struct CService
+{
+ &nbsp; &nbsp; &nbsp; &nbsp;CService () : Id(0xFFFFFFFF), Ready(false), Connected(false), InConfig(false) { }
+
+ &nbsp; &nbsp; &nbsp; &nbsp;uint32 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;Id; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;/// uint32 to identify the service
+ &nbsp; &nbsp; &nbsp; &nbsp;string &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;AliasName; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;/// alias of the service used in the AES and AS to find him (unique per AES)
+ &nbsp; &nbsp; &nbsp; &nbsp;string &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;ShortName; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;/// name of the service in short format (&quot;NS&quot; for example)
+ &nbsp; &nbsp; &nbsp; &nbsp;string &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;LongName; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;/// name of the service in long format (&quot;naming_service&quot;)
+ &nbsp; &nbsp; &nbsp; &nbsp;bool &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;Ready; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;/// true if the service is ready
+ &nbsp; &nbsp; &nbsp; &nbsp;bool &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;Connected; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;/// true if the service is connected to the AES
+ &nbsp; &nbsp; &nbsp; &nbsp;bool &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;InConfig; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;/// true if the service is in the configuration
+ &nbsp; &nbsp; &nbsp; &nbsp;std::vector&lt;NLMISC::CSerialCommand&gt; &nbsp; &nbsp; &nbsp; &nbsp;Commands;
+
+ &nbsp; &nbsp; &nbsp; &nbsp;void setValues (const CService &amp;t)
+ &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// copy all except gtk stuffs
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;Id = t.Id;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;AliasName = t.AliasName;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;ShortName = t.ShortName;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;LongName = t.LongName;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;Ready = t.Ready;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;Connected = t.Connected;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;//InConfig = t.InConfig; never change the inconfig value
+ &nbsp; &nbsp; &nbsp; &nbsp;}
+};
+
+typedef list&lt;CService&gt; TServices;
+typedef list&lt;CService&gt;::iterator SIT;
+
+struct CAdminExecutorService
+{
+ &nbsp; &nbsp; &nbsp; &nbsp;CAdminExecutorService () : Id(NextId++), SockId(NULL), Connected(false) { }
+
+ &nbsp; &nbsp; &nbsp; &nbsp;TSockId &nbsp; &nbsp; &nbsp; &nbsp;SockId; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;/// connection to the AES
+ &nbsp; &nbsp; &nbsp; &nbsp;uint32 &nbsp; &nbsp; &nbsp; &nbsp;Id; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;/// uint32 to identify the AES where the service is running
+
+ &nbsp; &nbsp; &nbsp; &nbsp;string &nbsp; &nbsp; &nbsp; &nbsp;ServerAlias; &nbsp; &nbsp; &nbsp; &nbsp;/// name of the layer4 connection, used to send message to this AES
+ &nbsp; &nbsp; &nbsp; &nbsp;string &nbsp; &nbsp; &nbsp; &nbsp;ServerAddr; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;/// address in a string format (only the ip)
+ &nbsp; &nbsp; &nbsp; &nbsp;bool &nbsp; &nbsp; &nbsp; &nbsp;Connected; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;/// true if the AES is connected
+
+ &nbsp; &nbsp; &nbsp; &nbsp;TServices Services;
+
+ &nbsp; &nbsp; &nbsp; &nbsp;vector&lt;string&gt; &nbsp; &nbsp; &nbsp; &nbsp;ServiceAliasList;
+
+ &nbsp; &nbsp; &nbsp; &nbsp;SIT findService (uint32 sid, bool asrt = true)
+ &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;SIT sit;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;for (sit = Services.begin(); sit != Services.end(); sit++)
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;if ((*sit).Id == sid)
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;break;
+
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;if (asrt)
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;nlassert (sit != Services.end());
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;return sit;
+ &nbsp; &nbsp; &nbsp; &nbsp;}
+
+ &nbsp; &nbsp; &nbsp; &nbsp;SIT findService (const string &amp;alias, bool asrt = true)
+ &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;SIT sit;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;for (sit = Services.begin(); sit != Services.end(); sit++)
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;if ((*sit).AliasName == alias)
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;break;
+
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;if (asrt)
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;nlassert (sit != Services.end());
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;return sit;
+ &nbsp; &nbsp; &nbsp; &nbsp;}
+
+private:
+ &nbsp; &nbsp; &nbsp; &nbsp;static uint32 NextId;
+};
+
+uint32 CAdminExecutorService::NextId = 1;
+
+typedef list&lt;CAdminExecutorService&gt; TAdminExecutorServices;
+typedef list&lt;CAdminExecutorService&gt;::iterator AESIT;
+
+TAdminExecutorServices AdminExecutorServices;
+
+/////////////////
+
+AESIT findAdminExecutorService (uint32 aesid, bool asrt = true)
+{
+ &nbsp; &nbsp; &nbsp; &nbsp;AESIT aesit;
+ &nbsp; &nbsp; &nbsp; &nbsp;for (aesit = AdminExecutorServices.begin(); aesit != AdminExecutorServices.end(); aesit++)
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;if ((*aesit).Id == aesid)
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;break;
+
+ &nbsp; &nbsp; &nbsp; &nbsp;if (asrt)
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;nlassert (aesit != AdminExecutorServices.end());
+ &nbsp; &nbsp; &nbsp; &nbsp;return aesit;
+}
+
+AESIT findAdminExecutorService (string ServerAlias, bool asrt = true)
+{
+ &nbsp; &nbsp; &nbsp; &nbsp;AESIT aesit;
+ &nbsp; &nbsp; &nbsp; &nbsp;for (aesit = AdminExecutorServices.begin(); aesit != AdminExecutorServices.end(); aesit++)
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;if ((*aesit).ServerAlias == ServerAlias)
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;break;
+
+ &nbsp; &nbsp; &nbsp; &nbsp;if (asrt)
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;nlassert (aesit != AdminExecutorServices.end());
+ &nbsp; &nbsp; &nbsp; &nbsp;return aesit;
+}
+
+void displayServices ()
+{
+ &nbsp; &nbsp; &nbsp; &nbsp;for (AESIT aesit = AdminExecutorServices.begin(); aesit != AdminExecutorServices.end(); aesit++)
+ &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;nlinfo (&quot;&gt; Admin&quot;);
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;for (SIT sit = (*aesit).Services.begin(); sit != (*aesit).Services.end(); sit++)
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;nlinfo (&quot; &nbsp;&gt; '%s' '%s' '%s' '%s' %d %d&quot;, (*aesit).SockId-&gt;asString().c_str(), (*sit).AliasName.c_str(), (*sit).ShortName.c_str(), (*sit).LongName.c_str(), (*aesit).Id, (*sit).Id);
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}
+ &nbsp; &nbsp; &nbsp; &nbsp;}
+}
+
+
+// send a message to a client. if ok is 0 it s an error or it s a normal
+void messageToClient (uint8 ok, string msg, TSockId from = NULL)
+{
+ &nbsp; &nbsp; &nbsp; &nbsp;CMessage msgout (CNetManager::getSIDA (&quot;AS&quot;), &quot;MESSAGE&quot;);
+ &nbsp; &nbsp; &nbsp; &nbsp;msgout.serial (ok, msg);
+ &nbsp; &nbsp; &nbsp; &nbsp;CNetManager::send (&quot;AS&quot;, msgout, from);
+}
+
+
+////////////////////////////////////////////////////////////////////////////////////////////////////////
+////////////////////////////////////////////////////////////////////////////////////////////////////////
+/////////////////// SCRIPT MANAGER /////////////////////////////////////////////////////////////////////
+////////////////////////////////////////////////////////////////////////////////////////////////////////
+////////////////////////////////////////////////////////////////////////////////////////////////////////
+
+bool StartAllServices = false;
+uint32 StartAllServicesPos;
+
+void doNextStartAllServicesStep ()
+{
+ &nbsp; &nbsp; &nbsp; &nbsp;nlassert (StartAllServices);
+
+ &nbsp; &nbsp; &nbsp; &nbsp;// get the script
+ &nbsp; &nbsp; &nbsp; &nbsp;try
+ &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;CConfigFile::CVar &amp;script = IService::getInstance()-&gt;ConfigFile.getVar(&quot;Services&quot;);
+
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// check the position
+
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;if (StartAllServicesPos*2 &gt;= (uint32)script.size())
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;StartAllServices = false;
+
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;nlinfo(&quot;end of the script&quot;);
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;messageToClient (1, &quot;Start All Service finnished correctly&quot;);
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;return;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}
+
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// get the script line
+
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;string serverAlias;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;string serviceAlias;
+
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;try
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;serverAlias = script.asString (StartAllServicesPos*2);
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;serviceAlias = script.asString (StartAllServicesPos*2+1);
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;catch(EBadSize &amp;)
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;messageToClient (1, &quot;'Services' variable does not contains a good number of entries (must be a multiple of 2)&quot;);
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;nlwarning (&quot;'Services' variable does not contains a good number of entries (must be a multiple of 2)&quot;);
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;StartAllServices = false;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;return;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}
+
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;AESIT aesit = findAdminExecutorService (serverAlias, false);
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;if (aesit == AdminExecutorServices.end())
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;messageToClient (1, &quot;don't find the server&quot;);
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;nlwarning(&quot;don't find the server&quot;);
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;StartAllServices = false;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;return;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}
+
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// check if the service is not currently running
+
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;StartAllServicesPos++;
+
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;SIT sit = (*aesit).findService (serviceAlias);
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;if ((*sit).Connected)
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// the service is already running, go to the next process
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;doNextStartAllServicesStep ();
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;else
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// send the resquest to the AES
+
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;CMessage msgout (CNetManager::getSIDA((*aesit).ServerAlias), &quot;STARTS&quot;);
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;msgout.serial (serviceAlias);
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;CNetManager::send ((*aesit).ServerAlias, msgout);
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}
+ &nbsp; &nbsp; &nbsp; &nbsp;}
+ &nbsp; &nbsp; &nbsp; &nbsp;catch(EUnknownVar&amp;)
+ &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;messageToClient (1, &quot;'Services' variable is not found&quot;);
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;nlwarning (&quot;'Services' variable is not found&quot;);
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;StartAllServices = false;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;return;
+ &nbsp; &nbsp; &nbsp; &nbsp;}
+}
+
+void initStartAllServices ()
+{
+ &nbsp; &nbsp; &nbsp; &nbsp;if (StartAllServices)
+ &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;messageToClient (1, &quot;already running a script, reset it&quot;);
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;nlwarning(&quot;already running a script, reset it&quot;);
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;StartAllServices = false;
+ &nbsp; &nbsp; &nbsp; &nbsp;}
+
+ &nbsp; &nbsp; &nbsp; &nbsp;try
+ &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;CConfigFile::CVar &amp;script = IService::getInstance()-&gt;ConfigFile.getVar(&quot;Services&quot;);
+
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;for (sint i = 0 ; i &lt; script.size (); i+=2)
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;string serverAlias = script.asString(i);
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;AESIT aesit = findAdminExecutorService (serverAlias, false);
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;if (aesit == AdminExecutorServices.end())
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;messageToClient (1, &quot;an aes is not running, can't run the script&quot;);
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;nlwarning(&quot;aes '%s' isn't running, can't run the script&quot;, serverAlias.c_str());
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;return;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}
+ &nbsp; &nbsp; &nbsp; &nbsp;}
+ &nbsp; &nbsp; &nbsp; &nbsp;catch(EConfigFile &amp;)
+ &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;messageToClient (1, &quot;bad config file&quot;);
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;nlwarning (&quot;bad config file&quot;);
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;return;
+ &nbsp; &nbsp; &nbsp; &nbsp;}
+
+ &nbsp; &nbsp; &nbsp; &nbsp;StartAllServicesPos = 0;
+ &nbsp; &nbsp; &nbsp; &nbsp;StartAllServices = true;
+
+ &nbsp; &nbsp; &nbsp; &nbsp;doNextStartAllServicesStep();
+}
+
+
+////////////////////////////////////////////////////////////////////////////////////////////////////////
+////////////////////////////////////////////////////////////////////////////////////////////////////////
+////////////////// CONNECTION TO THE AES ///////////////////////////////////////////////////////////////
+////////////////////////////////////////////////////////////////////////////////////////////////////////
+////////////////////////////////////////////////////////////////////////////////////////////////////////
+
+
+static void cbExecuteSystemCommandResult (CMessage&amp; msgin, TSockId from, CCallbackNetBase &amp;netbase)
+{
+ &nbsp; &nbsp; &nbsp; &nbsp;vector&lt;string&gt; result;
+ &nbsp; &nbsp; &nbsp; &nbsp;msgin.serialCont (result);
+
+ &nbsp; &nbsp; &nbsp; &nbsp;nlinfo(&quot;command result&quot;);
+ &nbsp; &nbsp; &nbsp; &nbsp;for (uint i = 0; i &lt; result.size(); i++)
+ &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;printf (&quot;%s&quot;, result[i].c_str());
+ &nbsp; &nbsp; &nbsp; &nbsp;}
+ &nbsp; &nbsp; &nbsp; &nbsp;nlinfo(&quot;end of command result&quot;);
+}
+
+// get the service list from the admin exec and send the list to all admin client
+static void cbServiceList (CMessage&amp; msgin, TSockId from, CCallbackNetBase &amp;netbase)
+{
+ &nbsp; &nbsp; &nbsp; &nbsp;CAdminExecutorService *aes = (CAdminExecutorService*) (uint) from-&gt;appId();
+
+ &nbsp; &nbsp; &nbsp; &nbsp;//
+ &nbsp; &nbsp; &nbsp; &nbsp;// Get the list of service from aes
+ &nbsp; &nbsp; &nbsp; &nbsp;//
+
+ &nbsp; &nbsp; &nbsp; &nbsp;uint32 nbs;
+ &nbsp; &nbsp; &nbsp; &nbsp;msgin.serial (nbs);
+
+ &nbsp; &nbsp; &nbsp; &nbsp;for (uint32 i = 0; i &lt; nbs; i++)
+ &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// find the service
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;CService s;
+
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;msgin.serial (s.Id, s.AliasName, s.ShortName, s.LongName, s.Ready);
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;msgin.serialCont (s.Commands);
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;s.Connected = true;
+
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;if (!s.AliasName.empty())
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;SIT sit = aes-&gt;findService (s.AliasName, false);
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;if (sit == aes-&gt;Services.end ())
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;aes-&gt;Services.push_back (s);
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;else
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;nlassert (&quot;the service already exists with alias, update it&quot;);
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;(*sit).setValues (s);
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;else
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;SIT sit = aes-&gt;findService (s.Id, false);
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;if (sit == aes-&gt;Services.end ())
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;aes-&gt;Services.push_back (s);
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;else
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;nlassert (&quot;the service already exists with id, update it&quot;);
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;(*sit).setValues (s);
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}
+ &nbsp; &nbsp; &nbsp; &nbsp;}
+ &nbsp; &nbsp; &nbsp; &nbsp;
+ &nbsp; &nbsp; &nbsp; &nbsp;displayServices ();
+
+ &nbsp; &nbsp; &nbsp; &nbsp;//
+ &nbsp; &nbsp; &nbsp; &nbsp;// Send the new list to all admin
+ &nbsp; &nbsp; &nbsp; &nbsp;//
+
+ &nbsp; &nbsp; &nbsp; &nbsp;CMessage msgout (CNetManager::getSIDA (&quot;AS&quot;), &quot;SERVICE_LIST&quot;);
+ &nbsp; &nbsp; &nbsp; &nbsp;uint32 nbaes = 1;
+ &nbsp; &nbsp; &nbsp; &nbsp;msgout.serial (nbaes);
+ &nbsp; &nbsp; &nbsp; &nbsp;msgout.serial (aes-&gt;Id);
+ &nbsp; &nbsp; &nbsp; &nbsp;uint32 ss = aes-&gt;Services.size();
+ &nbsp; &nbsp; &nbsp; &nbsp;msgout.serial (ss);
+
+ &nbsp; &nbsp; &nbsp; &nbsp;for (SIT sit = aes-&gt;Services.begin(); sit != aes-&gt;Services.end(); sit++)
+ &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;msgout.serial ((*sit).Id, (*sit).AliasName, (*sit).ShortName, (*sit).LongName);
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;msgout.serial ((*sit).Ready, (*sit).Connected, (*sit).InConfig);
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;msgout.serialCont ((*sit).Commands);
+ &nbsp; &nbsp; &nbsp; &nbsp;}
+ &nbsp; &nbsp; &nbsp; &nbsp;CNetManager::send (&quot;AS&quot;, msgout, 0);
+}
+
+static void cbServiceAliasList (CMessage&amp; msgin, TSockId from, CCallbackNetBase &amp;netbase)
+{
+ &nbsp; &nbsp; &nbsp; &nbsp;// get the service list from the admin exec and send the list to all admin client
+ &nbsp; &nbsp; &nbsp; &nbsp;CAdminExecutorService *aes = (CAdminExecutorService*) (uint) from-&gt;appId();
+
+ &nbsp; &nbsp; &nbsp; &nbsp;aes-&gt;ServiceAliasList.clear ();
+ &nbsp; &nbsp; &nbsp; &nbsp;msgin.serialCont (aes-&gt;ServiceAliasList);
+
+ &nbsp; &nbsp; &nbsp; &nbsp;nlinfo(&quot;send SAL to admin callback from aes&quot;);
+
+ &nbsp; &nbsp; &nbsp; &nbsp;CMessage msgout (CNetManager::getSIDA (&quot;AS&quot;), &quot;SAL&quot;);
+ &nbsp; &nbsp; &nbsp; &nbsp;msgout.serial (aes-&gt;Id);
+ &nbsp; &nbsp; &nbsp; &nbsp;msgout.serialCont (aes-&gt;ServiceAliasList);
+ &nbsp; &nbsp; &nbsp; &nbsp;CNetManager::send (&quot;AS&quot;, msgout, 0);
+ &nbsp; &nbsp; &nbsp; &nbsp;
+ &nbsp; &nbsp; &nbsp; &nbsp;nlinfo(&quot;new service alias list&quot;);
+}
+
+
+static void cbServiceIdentification (CMessage&amp; msgin, TSockId from, CCallbackNetBase &amp;netbase)
+{
+ &nbsp; &nbsp; &nbsp; &nbsp;CAdminExecutorService *aes = (CAdminExecutorService*) (uint) from-&gt;appId();
+
+ &nbsp; &nbsp; &nbsp; &nbsp;uint32 sid;
+ &nbsp; &nbsp; &nbsp; &nbsp;string alias;
+
+ &nbsp; &nbsp; &nbsp; &nbsp;msgin.serial (sid, alias);
+
+ &nbsp; &nbsp; &nbsp; &nbsp;SIT sit;
+ &nbsp; &nbsp; &nbsp; &nbsp;if (!alias.empty())
+ &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;sit = aes-&gt;findService (alias, false);
+
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;if (sit == aes-&gt;Services.end ())
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// the alias is not found
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;nlwarning (&quot;new service with alias (%s) but not in my list&quot;, alias.c_str());
+
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;aes-&gt;Services.push_back (CService ());
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;sit = aes-&gt;Services.end();
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;sit--;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;else
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// normal case
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}
+ &nbsp; &nbsp; &nbsp; &nbsp;}
+ &nbsp; &nbsp; &nbsp; &nbsp;else
+ &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;sit = aes-&gt;findService (sid, false);
+
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;if (sit == aes-&gt;Services.end ())
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// normal case for unknown services
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;nlwarning (&quot;new service without alias and not in my list, add it&quot;);
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;else
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;nlwarning (&quot;new service without alias is already in my list with id %d, add it&quot;, sid);
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;aes-&gt;Services.push_back (CService ());
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;sit = aes-&gt;Services.end();
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;sit--;
+ &nbsp; &nbsp; &nbsp; &nbsp;}
+
+ &nbsp; &nbsp; &nbsp; &nbsp;(*sit).Id = sid;
+ &nbsp; &nbsp; &nbsp; &nbsp;(*sit).AliasName = alias;
+ &nbsp; &nbsp; &nbsp; &nbsp;(*sit).Connected = true;
+ &nbsp; &nbsp; &nbsp; &nbsp;msgin.serial ((*sit).ShortName, (*sit).LongName);
+ &nbsp; &nbsp; &nbsp; &nbsp;msgin.serialCont ((*sit).Commands);
+
+ &nbsp; &nbsp; &nbsp; &nbsp;nlinfo (&quot;*:%d:%d is identified to be '%s' '%s' '%s'&quot;, aes-&gt;Id, sid, (*sit).AliasName.c_str(), (*sit).ShortName.c_str(), (*sit).LongName.c_str());
+
+ &nbsp; &nbsp; &nbsp; &nbsp;// broadcast the message to all admin client
+ &nbsp; &nbsp; &nbsp; &nbsp;CMessage msgout (CNetManager::getSIDA (&quot;AS&quot;), &quot;SID&quot;);
+ &nbsp; &nbsp; &nbsp; &nbsp;msgout.serial (aes-&gt;Id, sid, (*sit).AliasName, (*sit).ShortName, (*sit).LongName);
+ &nbsp; &nbsp; &nbsp; &nbsp;msgout.serialCont ((*sit).Commands);
+
+ &nbsp; &nbsp; &nbsp; &nbsp;CNetManager::send (&quot;AS&quot;, msgout, 0);
+}
+
+static void cbServiceReady (CMessage&amp; msgin, TSockId from, CCallbackNetBase &amp;netbase)
+{
+ &nbsp; &nbsp; &nbsp; &nbsp;CAdminExecutorService *aes = (CAdminExecutorService*) (uint) from-&gt;appId();
+
+ &nbsp; &nbsp; &nbsp; &nbsp;uint32 sid;
+ &nbsp; &nbsp; &nbsp; &nbsp;msgin.serial (sid);
+
+ &nbsp; &nbsp; &nbsp; &nbsp;SIT sit = aes-&gt;findService(sid);
+ &nbsp; &nbsp; &nbsp; &nbsp;(*sit).Ready = true;
+
+ &nbsp; &nbsp; &nbsp; &nbsp;nlinfo (&quot;*:%d:%d is ready&quot;, aes-&gt;Id, sid);
+
+ &nbsp; &nbsp; &nbsp; &nbsp;// broadcast the message to all admin client
+ &nbsp; &nbsp; &nbsp; &nbsp;CMessage msgout (CNetManager::getSIDA (&quot;AS&quot;), &quot;SR&quot;);
+ &nbsp; &nbsp; &nbsp; &nbsp;msgout.serial (aes-&gt;Id, sid);
+ &nbsp; &nbsp; &nbsp; &nbsp;CNetManager::send (&quot;AS&quot;, msgout, 0);
+
+ &nbsp; &nbsp; &nbsp; &nbsp;// if we are in a script execution, continue
+ &nbsp; &nbsp; &nbsp; &nbsp;if (StartAllServices)
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;doNextStartAllServicesStep();
+}
+
+static void cbServiceConnection (CMessage&amp; msgin, TSockId from, CCallbackNetBase &amp;netbase)
+{
+ &nbsp; &nbsp; &nbsp; &nbsp;CAdminExecutorService *aes = (CAdminExecutorService*) (uint) from-&gt;appId();
+
+ &nbsp; &nbsp; &nbsp; &nbsp;uint32 sid;
+ &nbsp; &nbsp; &nbsp; &nbsp;msgin.serial (sid);
+
+ &nbsp; &nbsp; &nbsp; &nbsp;nlinfo (&quot;*:%d:%d connected&quot;, aes-&gt;Id, sid);
+
+ &nbsp; &nbsp; &nbsp; &nbsp;// don't do anything. we have to wait identification to add it in out lists
+
+/*
+ &nbsp; &nbsp; &nbsp; &nbsp;aes-&gt;Services.push_back (CService(sid));
+*/
+ &nbsp; &nbsp; &nbsp; &nbsp;// broadcast the message to all admin client
+ &nbsp; &nbsp; &nbsp; &nbsp;CMessage msgout (CNetManager::getSIDA (&quot;AS&quot;), &quot;SC&quot;);
+ &nbsp; &nbsp; &nbsp; &nbsp;msgout.serial (aes-&gt;Id, sid);
+ &nbsp; &nbsp; &nbsp; &nbsp;CNetManager::send (&quot;AS&quot;, msgout, 0);
+}
+
+static void cbServiceDisconnection (CMessage&amp; msgin, TSockId from, CCallbackNetBase &amp;netbase)
+{
+ &nbsp; &nbsp; &nbsp; &nbsp;CAdminExecutorService *aes = (CAdminExecutorService*) (uint) from-&gt;appId();
+
+ &nbsp; &nbsp; &nbsp; &nbsp;uint32 sid;
+ &nbsp; &nbsp; &nbsp; &nbsp;msgin.serial (sid);
+
+ &nbsp; &nbsp; &nbsp; &nbsp;nlinfo (&quot;*:%d:%d disconnected&quot;, aes-&gt;Id, sid);
+
+ &nbsp; &nbsp; &nbsp; &nbsp;SIT sit = aes-&gt;findService(sid, false);
+ &nbsp; &nbsp; &nbsp; &nbsp;
+ &nbsp; &nbsp; &nbsp; &nbsp;// broadcast the message to all admin client
+ &nbsp; &nbsp; &nbsp; &nbsp;CMessage msgout (CNetManager::getSIDA (&quot;AS&quot;), &quot;SD&quot;);
+ &nbsp; &nbsp; &nbsp; &nbsp;msgout.serial (aes-&gt;Id, sid);
+ &nbsp; &nbsp; &nbsp; &nbsp;CNetManager::send (&quot;AS&quot;, msgout, 0);
+
+ &nbsp; &nbsp; &nbsp; &nbsp;// the service could disconnect before it's identification, in this case, we don't have it in the service list
+ &nbsp; &nbsp; &nbsp; &nbsp;if (sit != aes-&gt;Services.end ())
+ &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;if ((*sit).InConfig)
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;(*sit).Ready = (*sit).Connected = false;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;(*sit).Id = 0xFFFFFFFF;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;(*sit).ShortName = (*sit).LongName = &quot;&quot;;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;(*sit).Commands.clear ();
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;else
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// erase only if it's not a service in the config
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;aes-&gt;Services.erase (sit);
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}
+ &nbsp; &nbsp; &nbsp; &nbsp;}
+
+ &nbsp; &nbsp; &nbsp; &nbsp;displayServices ();
+}
+
+// i'm connected to a new admin executor service
+void cbAESConnection (const string &amp;serviceName, TSockId from, void *arg)
+{
+ &nbsp; &nbsp; &nbsp; &nbsp;AESIT aesit = findAdminExecutorService (serviceName); &nbsp; &nbsp; &nbsp; &nbsp;
+ &nbsp; &nbsp; &nbsp; &nbsp;CAdminExecutorService *aes = &amp;(*aesit);
+ &nbsp; &nbsp; &nbsp; &nbsp;
+ &nbsp; &nbsp; &nbsp; &nbsp;// set the appid to find the aes in O(1)
+ &nbsp; &nbsp; &nbsp; &nbsp;from-&gt;setAppId ((uint64)(uint)aes);
+
+ &nbsp; &nbsp; &nbsp; &nbsp;aes-&gt;Connected = true;
+ &nbsp; &nbsp; &nbsp; &nbsp;nlinfo (&quot;*:%d:* connected&quot;, aes-&gt;Id);
+/*
+ &nbsp; &nbsp; &nbsp; &nbsp;// broadcast the message that an admin exec is connected to all admin client
+ &nbsp; &nbsp; &nbsp; &nbsp;CMessage msgout (CNetManager::getSIDA (&quot;AS&quot;), &quot;AESC&quot;);
+ &nbsp; &nbsp; &nbsp; &nbsp;msgout.serial (aes-&gt;Id);
+ &nbsp; &nbsp; &nbsp; &nbsp;CNetManager::send (&quot;AS&quot;, msgout, 0);
+*/
+
+ &nbsp; &nbsp; &nbsp; &nbsp;// broadcast the new state of this AES
+ &nbsp; &nbsp; &nbsp; &nbsp;CMessage msgout (CNetManager::getSIDA (&quot;AS&quot;), &quot;AES_LIST&quot;);
+ &nbsp; &nbsp; &nbsp; &nbsp;uint32 nbaes = 1;
+ &nbsp; &nbsp; &nbsp; &nbsp;msgout.serial (nbaes);
+ &nbsp; &nbsp; &nbsp; &nbsp;msgout.serial (aes-&gt;Id, aes-&gt;ServerAlias, aes-&gt;ServerAddr, aes-&gt;Connected);
+ &nbsp; &nbsp; &nbsp; &nbsp;CNetManager::send (&quot;AS&quot;, msgout, 0);
+}
+
+// i'm disconnected to an admin executor service
+void cbAESDisconnection (const string &amp;serviceName, TSockId from, void *arg)
+{
+ &nbsp; &nbsp; &nbsp; &nbsp;// get the aes with the appid
+ &nbsp; &nbsp; &nbsp; &nbsp;CAdminExecutorService *aes = (CAdminExecutorService*) (uint) from-&gt;appId();
+
+ &nbsp; &nbsp; &nbsp; &nbsp;aes-&gt;Connected = false;
+
+ &nbsp; &nbsp; &nbsp; &nbsp;SIT sit;
+ &nbsp; &nbsp; &nbsp; &nbsp;for (sit = aes-&gt;Services.begin(); sit != aes-&gt;Services.end();)
+ &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// keep only inconfig services
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;if ((*sit).InConfig)
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;(*sit).Id = 0xFFFFFFFF;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;(*sit).ShortName = (*sit).LongName = &quot;&quot;;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;(*sit).Ready = (*sit).Connected = false;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;sit++;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;else
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// erase only if it's not a service in the config
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;sit = aes-&gt;Services.erase (sit);
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}
+ &nbsp; &nbsp; &nbsp; &nbsp;}
+
+ &nbsp; &nbsp; &nbsp; &nbsp;nlinfo (&quot;*:%d:* disconnected&quot;, aes-&gt;Id);
+/* &nbsp; &nbsp; &nbsp;
+ &nbsp; &nbsp; &nbsp; &nbsp;// broadcast the message to all admin client that an admin exec is disconnected
+ &nbsp; &nbsp; &nbsp; &nbsp;CMessage msgout (CNetManager::getSIDA (&quot;AS&quot;), &quot;AESD&quot;);
+ &nbsp; &nbsp; &nbsp; &nbsp;msgout.serial (aes-&gt;Id);
+ &nbsp; &nbsp; &nbsp; &nbsp;CNetManager::send (&quot;AS&quot;, msgout, 0);
+*/
+
+ &nbsp; &nbsp; &nbsp; &nbsp;displayServices ();
+
+ &nbsp; &nbsp; &nbsp; &nbsp;// broadcast the new state of this AES
+ &nbsp; &nbsp; &nbsp; &nbsp;CMessage msgout (CNetManager::getSIDA (&quot;AS&quot;), &quot;AES_LIST&quot;);
+ &nbsp; &nbsp; &nbsp; &nbsp;uint32 nbaes = 1;
+ &nbsp; &nbsp; &nbsp; &nbsp;msgout.serial (nbaes);
+ &nbsp; &nbsp; &nbsp; &nbsp;msgout.serial (aes-&gt;Id, aes-&gt;ServerAlias, aes-&gt;ServerAddr, aes-&gt;Connected);
+ &nbsp; &nbsp; &nbsp; &nbsp;CNetManager::send (&quot;AS&quot;, msgout, 0);
+}
+
+static void cbLog (CMessage&amp; msgin, TSockId from, CCallbackNetBase &amp;netbase)
+{
+ &nbsp; &nbsp; &nbsp; &nbsp;// received an answer for a command, give it to all admin client
+
+ &nbsp; &nbsp; &nbsp; &nbsp;// get the aes with the appid
+ &nbsp; &nbsp; &nbsp; &nbsp;CAdminExecutorService *aes = (CAdminExecutorService*) (uint) from-&gt;appId();
+
+ &nbsp; &nbsp; &nbsp; &nbsp;// broadcast the message to the admin service
+ &nbsp; &nbsp; &nbsp; &nbsp;CMessage msgout (CNetManager::getSIDA (&quot;AS&quot;), &quot;XLOG&quot;);
+ &nbsp; &nbsp; &nbsp; &nbsp;string log;
+ &nbsp; &nbsp; &nbsp; &nbsp;uint32 sid;
+ &nbsp; &nbsp; &nbsp; &nbsp;msgin.serial (sid);
+ &nbsp; &nbsp; &nbsp; &nbsp;msgin.serial (log);
+
+ &nbsp; &nbsp; &nbsp; &nbsp;msgout.serial (aes-&gt;Id);
+ &nbsp; &nbsp; &nbsp; &nbsp;msgout.serial (sid);
+ &nbsp; &nbsp; &nbsp; &nbsp;msgout.serial (log);
+ &nbsp; &nbsp; &nbsp; &nbsp;CNetManager::send (&quot;AS&quot;, msgout, 0);
+}
+
+
+TCallbackItem AESCallbackArray[] =
+{
+ &nbsp; &nbsp; &nbsp; &nbsp;{ &quot;ESCR&quot;, cbExecuteSystemCommandResult },
+
+ &nbsp; &nbsp; &nbsp; &nbsp;{ &quot;SL&quot;, cbServiceList },
+ &nbsp; &nbsp; &nbsp; &nbsp;{ &quot;SID&quot;, cbServiceIdentification },
+ &nbsp; &nbsp; &nbsp; &nbsp;{ &quot;SR&quot;, cbServiceReady },
+ &nbsp; &nbsp; &nbsp; &nbsp;{ &quot;SC&quot;, cbServiceConnection },
+ &nbsp; &nbsp; &nbsp; &nbsp;{ &quot;SD&quot;, cbServiceDisconnection },
+
+ &nbsp; &nbsp; &nbsp; &nbsp;{ &quot;SAL&quot;, cbServiceAliasList },
+
+ &nbsp; &nbsp; &nbsp; &nbsp;{ &quot;XLOG&quot;, cbLog },
+};
+
+
+////////////////////////////////////////////////////////////////////////////////////////////////////////
+////////////////////////////////////////////////////////////////////////////////////////////////////////
+////////////////// CONNECTION TO THE CLIENT ////////////////////////////////////////////////////////////
+////////////////////////////////////////////////////////////////////////////////////////////////////////
+////////////////////////////////////////////////////////////////////////////////////////////////////////
+
+//
+// A new admin client is connected.
+//
+void clientConnection (const string &amp;serviceName, TSockId from, void *arg)
+{
+ &nbsp; &nbsp; &nbsp; &nbsp;// new client, send him all out info about services
+
+ &nbsp; &nbsp; &nbsp; &nbsp;nlinfo (&quot;admin %s is connected&quot;, from-&gt;asString().c_str());
+
+ &nbsp; &nbsp; &nbsp; &nbsp;CNetManager::getNetBase(serviceName)-&gt;authorizeOnly (&quot;AUTH&quot;, from);
+}
+
+static void cbAuthenticateClient (CMessage&amp; msgin, TSockId from, CCallbackNetBase &amp;netbase)
+{
+ &nbsp; &nbsp; &nbsp; &nbsp;//
+ &nbsp; &nbsp; &nbsp; &nbsp;// Check the validity of the admin
+ &nbsp; &nbsp; &nbsp; &nbsp;//
+ &nbsp; &nbsp; &nbsp; &nbsp;
+ &nbsp; &nbsp; &nbsp; &nbsp;string password;
+ &nbsp; &nbsp; &nbsp; &nbsp;bool ok = false;
+ &nbsp; &nbsp; &nbsp; &nbsp;try
+ &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;msgin.serial (password);
+
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;if (password == IService::getInstance()-&gt;ConfigFile.getVar(&quot;Password&quot;).asString())
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// good authentification
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;ok = true;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}
+ &nbsp; &nbsp; &nbsp; &nbsp;}
+ &nbsp; &nbsp; &nbsp; &nbsp;catch (Exception &amp;)
+ &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// problem, eject him
+ &nbsp; &nbsp; &nbsp; &nbsp;}
+
+ &nbsp; &nbsp; &nbsp; &nbsp;if (ok)
+ &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;netbase.authorizeOnly (NULL, from);
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;nlinfo (&quot;Admin authentification success&quot;);
+ &nbsp; &nbsp; &nbsp; &nbsp;}
+ &nbsp; &nbsp; &nbsp; &nbsp;else
+ &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// bad auth =&gt; disconnect
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;netbase.disconnect (from);
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;nlwarning (&quot;Bad admin authentification, tried password: '%s'&quot;, password.c_str());
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;return;
+ &nbsp; &nbsp; &nbsp; &nbsp;}
+
+ &nbsp; &nbsp; &nbsp; &nbsp;//
+ &nbsp; &nbsp; &nbsp; &nbsp;// send the list of all the aes
+ &nbsp; &nbsp; &nbsp; &nbsp;//
+
+ &nbsp; &nbsp; &nbsp; &nbsp;CMessage msgout2 (CNetManager::getSIDA (&quot;AS&quot;), &quot;AES_LIST&quot;);
+ &nbsp; &nbsp; &nbsp; &nbsp;AESIT aesit;
+ &nbsp; &nbsp; &nbsp; &nbsp;uint32 nbaes = (uint32)AdminExecutorServices.size();
+ &nbsp; &nbsp; &nbsp; &nbsp;msgout2.serial (nbaes);
+ &nbsp; &nbsp; &nbsp; &nbsp;for (aesit = AdminExecutorServices.begin(); aesit != AdminExecutorServices.end(); aesit++)
+ &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// send info about the AES
+
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;msgout2.serial ((*aesit).Id, (*aesit).ServerAlias, (*aesit).ServerAddr, (*aesit).Connected);
+ &nbsp; &nbsp; &nbsp; &nbsp;}
+ &nbsp; &nbsp; &nbsp; &nbsp;CNetManager::send (&quot;AS&quot;, msgout2, from);
+
+ &nbsp; &nbsp; &nbsp; &nbsp;//
+ &nbsp; &nbsp; &nbsp; &nbsp;// send the list of all services
+ &nbsp; &nbsp; &nbsp; &nbsp;//
+
+ &nbsp; &nbsp; &nbsp; &nbsp;CMessage msgout (CNetManager::getSIDA (&quot;AS&quot;), &quot;SERVICE_LIST&quot;);
+ &nbsp; &nbsp; &nbsp; &nbsp;nbaes = (uint32)AdminExecutorServices.size();
+ &nbsp; &nbsp; &nbsp; &nbsp;msgout.serial (nbaes);
+ &nbsp; &nbsp; &nbsp; &nbsp;for (aesit = AdminExecutorServices.begin(); aesit != AdminExecutorServices.end(); aesit++)
+ &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;msgout.serial ((*aesit).Id);
+
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;uint32 nbs = (uint32)(*aesit).Services.size();
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;msgout.serial (nbs);
+
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;for (SIT sit = (*aesit).Services.begin(); sit != (*aesit).Services.end(); sit++)
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// send info about services of the AES
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;msgout.serial ((*sit).Id, (*sit).AliasName, (*sit).ShortName, (*sit).LongName);
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;msgout.serial ((*sit).Ready, (*sit).Connected, (*sit).InConfig);
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;msgout.serialCont ((*sit).Commands);
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}
+ &nbsp; &nbsp; &nbsp; &nbsp;}
+ &nbsp; &nbsp; &nbsp; &nbsp;CNetManager::send (&quot;AS&quot;, msgout, from);
+
+ &nbsp; &nbsp; &nbsp; &nbsp;displayServices ();
+
+ &nbsp; &nbsp; &nbsp; &nbsp;//
+ &nbsp; &nbsp; &nbsp; &nbsp;// send service alias list
+ &nbsp; &nbsp; &nbsp; &nbsp;//
+
+ &nbsp; &nbsp; &nbsp; &nbsp;nlinfo(&quot;send SAL to admin startup&quot;);
+
+ &nbsp; &nbsp; &nbsp; &nbsp;for (aesit = AdminExecutorServices.begin(); aesit != AdminExecutorServices.end(); aesit++)
+ &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;CMessage msgout2 (CNetManager::getSIDA (&quot;AS&quot;), &quot;SAL&quot;);
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;msgout2.serial ((*aesit).Id);
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;msgout2.serialCont ((*aesit).ServiceAliasList);
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;CNetManager::send (&quot;AS&quot;, msgout2, from);
+ &nbsp; &nbsp; &nbsp; &nbsp;}
+}
+
+
+static void cbExecuteSystemCommand (CMessage&amp; msgin, TSockId from, CCallbackNetBase &amp;netbase)
+{
+ &nbsp; &nbsp; &nbsp; &nbsp;string command;
+ &nbsp; &nbsp; &nbsp; &nbsp;uint32 aesid;
+ &nbsp; &nbsp; &nbsp; &nbsp;msgin.serial (aesid);
+ &nbsp; &nbsp; &nbsp; &nbsp;msgin.serial (command);
+
+ &nbsp; &nbsp; &nbsp; &nbsp;AESIT aesit = findAdminExecutorService (aesid, false);
+ &nbsp; &nbsp; &nbsp; &nbsp;if (aesit == AdminExecutorServices.end())
+ &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// don't find the aes, send an error message
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;messageToClient (0, &quot;couldn't execute command, as didn't find the aes&quot;, from);
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;return;
+ &nbsp; &nbsp; &nbsp; &nbsp;}
+
+ &nbsp; &nbsp; &nbsp; &nbsp;// send the resquest to the AES
+
+ &nbsp; &nbsp; &nbsp; &nbsp;CMessage msgout (CNetManager::getSIDA((*aesit).ServerAlias), &quot;SYS&quot;);
+ &nbsp; &nbsp; &nbsp; &nbsp;msgout.serial (command);
+ &nbsp; &nbsp; &nbsp; &nbsp;CNetManager::send ((*aesit).ServerAlias, msgout);
+}
+
+
+static void cbStartService (CMessage&amp; msgin, TSockId from, CCallbackNetBase &amp;netbase)
+{
+ &nbsp; &nbsp; &nbsp; &nbsp;string serviceAlias;
+ &nbsp; &nbsp; &nbsp; &nbsp;uint32 aesid;
+ &nbsp; &nbsp; &nbsp; &nbsp;msgin.serial (aesid);
+ &nbsp; &nbsp; &nbsp; &nbsp;msgin.serial (serviceAlias);
+
+ &nbsp; &nbsp; &nbsp; &nbsp;AESIT aesit = findAdminExecutorService (aesid, false);
+ &nbsp; &nbsp; &nbsp; &nbsp;if (aesit == AdminExecutorServices.end())
+ &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// don't find the aes, send an error message
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;messageToClient (0, &quot;couldn't start service, as didn't find the aes&quot;, from);
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;return;
+ &nbsp; &nbsp; &nbsp; &nbsp;}
+
+ &nbsp; &nbsp; &nbsp; &nbsp;// send the resquest to the AES
+
+ &nbsp; &nbsp; &nbsp; &nbsp;CMessage msgout (CNetManager::getSIDA((*aesit).ServerAlias), &quot;STARTS&quot;);
+ &nbsp; &nbsp; &nbsp; &nbsp;msgout.serial (serviceAlias);
+ &nbsp; &nbsp; &nbsp; &nbsp;CNetManager::send ((*aesit).ServerAlias, msgout);
+}
+
+static void cbStopService (CMessage&amp; msgin, TSockId from, CCallbackNetBase &amp;netbase)
+{
+ &nbsp; &nbsp; &nbsp; &nbsp;uint32 aesid, sid;
+ &nbsp; &nbsp; &nbsp; &nbsp;msgin.serial (aesid);
+ &nbsp; &nbsp; &nbsp; &nbsp;msgin.serial (sid);
+
+ &nbsp; &nbsp; &nbsp; &nbsp;AESIT aesit = findAdminExecutorService (aesid, false);
+ &nbsp; &nbsp; &nbsp; &nbsp;if (aesit == AdminExecutorServices.end())
+ &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;messageToClient (0, &quot;couldn't stop service, as didn't find the aes&quot;, from);
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// don't find the aes, send an error message
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;return;
+ &nbsp; &nbsp; &nbsp; &nbsp;}
+
+ &nbsp; &nbsp; &nbsp; &nbsp;SIT sit = (*aesit).findService (sid, false);
+ &nbsp; &nbsp; &nbsp; &nbsp;if (sit == (*aesit).Services.end())
+ &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// don't find the s, send an error message
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;messageToClient (0, &quot;couldn't stop service, as didn't find the service&quot;, from);
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;return;
+ &nbsp; &nbsp; &nbsp; &nbsp;}
+
+ &nbsp; &nbsp; &nbsp; &nbsp;// send the resquest to the AES
+
+ &nbsp; &nbsp; &nbsp; &nbsp;CMessage msgout (CNetManager::getSIDA((*aesit).ServerAlias), &quot;STOPS&quot;);
+ &nbsp; &nbsp; &nbsp; &nbsp;msgout.serial (sid);
+ &nbsp; &nbsp; &nbsp; &nbsp;CNetManager::send ((*aesit).ServerAlias, msgout);
+}
+
+static void cbExecCommand (CMessage&amp; msgin, TSockId from, CCallbackNetBase &amp;netbase)
+{
+ &nbsp; &nbsp; &nbsp; &nbsp;uint32 aesid, sid;
+ &nbsp; &nbsp; &nbsp; &nbsp;string command;
+ &nbsp; &nbsp; &nbsp; &nbsp;msgin.serial (aesid);
+ &nbsp; &nbsp; &nbsp; &nbsp;msgin.serial (sid);
+ &nbsp; &nbsp; &nbsp; &nbsp;msgin.serial (command);
+
+ &nbsp; &nbsp; &nbsp; &nbsp;AESIT aesit = findAdminExecutorService (aesid, false);
+ &nbsp; &nbsp; &nbsp; &nbsp;if (aesit == AdminExecutorServices.end())
+ &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;messageToClient (0, &quot;couldn't stop service, as didn't find the aes&quot;, from);
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// don't find the aes, send an error message
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;return;
+ &nbsp; &nbsp; &nbsp; &nbsp;}
+
+ &nbsp; &nbsp; &nbsp; &nbsp;SIT sit = (*aesit).findService (sid, false);
+ &nbsp; &nbsp; &nbsp; &nbsp;if (sit == (*aesit).Services.end())
+ &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// don't find the s, send an error message
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;messageToClient (0, &quot;couldn't stop service, as didn't find the service&quot;, from);
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;return;
+ &nbsp; &nbsp; &nbsp; &nbsp;}
+
+ &nbsp; &nbsp; &nbsp; &nbsp;// send the resquest to the AES
+
+ &nbsp; &nbsp; &nbsp; &nbsp;CMessage msgout (CNetManager::getSIDA((*aesit).ServerAlias), &quot;EXEC_COMMAND&quot;);
+ &nbsp; &nbsp; &nbsp; &nbsp;msgout.serial (sid);
+ &nbsp; &nbsp; &nbsp; &nbsp;msgout.serial (command);
+ &nbsp; &nbsp; &nbsp; &nbsp;CNetManager::send ((*aesit).ServerAlias, msgout);
+}
+
+static void cbStartAllServices (CMessage&amp; msgin, TSockId from, CCallbackNetBase &amp;netbase)
+{
+ &nbsp; &nbsp; &nbsp; &nbsp;initStartAllServices ();
+}
+
+static void cbStopAllServices (CMessage&amp; msgin, TSockId from, CCallbackNetBase &amp;netbase)
+{
+ &nbsp; &nbsp; &nbsp; &nbsp;for (AESIT aesit = AdminExecutorServices.begin(); aesit != AdminExecutorServices.end(); aesit++)
+ &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;for (SIT sit = (*aesit).Services.begin(); sit != (*aesit).Services.end(); sit++)
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;if ((*sit).Connected)
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;CMessage msgout (CNetManager::getSIDA((*aesit).ServerAlias), &quot;STOPS&quot;);
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;msgout.serial ((*sit).Id);
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;CNetManager::send ((*aesit).ServerAlias, msgout);
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}
+ &nbsp; &nbsp; &nbsp; &nbsp;}
+}
+
+TCallbackItem ClientCallbackArray[] =
+{
+ &nbsp; &nbsp; &nbsp; &nbsp;{ &quot;AUTH&quot;, cbAuthenticateClient },
+ &nbsp; &nbsp; &nbsp; &nbsp;{ &quot;SYS&quot;, cbExecuteSystemCommand },
+ &nbsp; &nbsp; &nbsp; &nbsp;{ &quot;STARTS&quot;, cbStartService },
+ &nbsp; &nbsp; &nbsp; &nbsp;{ &quot;STOPS&quot;, cbStopService },
+ &nbsp; &nbsp; &nbsp; &nbsp;{ &quot;EXEC_COMMAND&quot;, cbExecCommand },
+ &nbsp; &nbsp; &nbsp; &nbsp;{ &quot;START_ALL_SERVICES&quot;, cbStartAllServices },
+ &nbsp; &nbsp; &nbsp; &nbsp;{ &quot;STOP_ALL_SERVICES&quot;, cbStopAllServices },
+};
+
+////////////////////////////////////////////////////////////////////////////////////////////////////////
+////////////////////////////////////////////////////////////////////////////////////////////////////////
+////////////////// SERVICE IMPLEMENTATION //////////////////////////////////////////////////////////////
+////////////////////////////////////////////////////////////////////////////////////////////////////////
+////////////////////////////////////////////////////////////////////////////////////////////////////////
+
+class CAdminService : public IService
+{
+public:
+
+ &nbsp; &nbsp; &nbsp; &nbsp;/// Init the service, load the universal time.
+ &nbsp; &nbsp; &nbsp; &nbsp;void &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;init ()
+ &nbsp; &nbsp; &nbsp; &nbsp;{
+// &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;DebugLog-&gt;addNegativeFilter (&quot;L0:&quot;);
+// &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;DebugLog-&gt;addNegativeFilter (&quot;L1:&quot;);
+// &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;DebugLog-&gt;addNegativeFilter (&quot;L2:&quot;);
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;CNetManager::setConnectionCallback (&quot;AS&quot;, clientConnection, NULL);
+
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;//
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// Get the list of AESHosts, add in the structures and create connection to all AES
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;//
+
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;CConfigFile::CVar &amp;host = ConfigFile.getVar (&quot;AESHosts&quot;);
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;sint i;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;for (i = 0 ; i &lt; host.size (); i+=2)
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;string serverAlias = host.asString(i);
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;string serverAddr = host.asString(i+1);
+
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// add to the list
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;CAdminExecutorService aes;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;aes.ServerAlias = serverAlias;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;aes.ServerAddr = serverAddr;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;AdminExecutorServices.push_back (aes);
+
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// connect to the AES
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;CNetManager::setConnectionCallback (serverAlias, cbAESConnection, NULL);
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;CNetManager::setDisconnectionCallback (serverAlias, cbAESDisconnection, NULL);
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;CNetManager::addClient (serverAlias, serverAddr+&quot;:49996&quot;);
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;CNetManager::addCallbackArray (serverAlias, AESCallbackArray, sizeof (AESCallbackArray)/sizeof(AESCallbackArray[0]));
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}
+
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;//
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// Get the list of services in the shard
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;//
+
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;CConfigFile::CVar &amp;serv = ConfigFile.getVar (&quot;Services&quot;);
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;for (i = 0 ; i &lt; serv.size (); i+=2)
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;string serverAlias = serv.asString(i);
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;string serviceAlias = serv.asString(i+1);
+
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;AESIT aesit = findAdminExecutorService (serverAlias);
+
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// add new AES in the list
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;CService s;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;s.AliasName = serviceAlias;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;s.InConfig = true;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;(*aesit).Services.push_back (s);
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;displayServices ();
+ &nbsp; &nbsp; &nbsp; &nbsp;}
+};
+
+
+// AS is a server connection to the admin client
+// AESAS is a client connection to the admin executor
+
+/// Naming Service
+NLNET_OLD_SERVICE_MAIN (CAdminService, &quot;AS&quot;, &quot;admin_service&quot;, 49995, ClientCallbackArray, NELNS_CONFIG, NELNS_LOGS);
+</PRE> \ No newline at end of file
diff --git a/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cpp?rev=1.15&content-type=text/x-cvsweb-markup&sortby=rev/index.html b/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cpp?rev=1.15&content-type=text/x-cvsweb-markup&sortby=rev/index.html
new file mode 100644
index 00000000..bbedf7ae
--- /dev/null
+++ b/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cpp?rev=1.15&content-type=text/x-cvsweb-markup&sortby=rev/index.html
@@ -0,0 +1,1001 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"><HTML>
+<HEAD><style> A { color:black }</style>
+<!-- hennerik CVSweb $Revision: 1.93 $ -->
+<TITLE>code/nelns/admin_service/admin_service.cpp - view - 1.15</TITLE></HEAD>
+<BODY BGCOLOR="#eeeeee">
+<table width="100%" border=0 cellspacing=0 cellpadding=1 bgcolor="#aaaaaa"><tr valign=bottom><td><a href="admin_service.cpp?sortby=rev"><IMG SRC="http://www.nevrax.org/inc/img/picto-up.gif" ALT="[BACK]" BORDER="0" WIDTH="14" HEIGHT="13"></a> <b>Return to <A HREF="admin_service.cpp?sortby=rev">admin_service.cpp</A>
+ CVS log</b> <IMG SRC="http://www.nevrax.org/inc/img/picto-news.gif" ALT="[TXT]" BORDER="0" WIDTH="13" HEIGHT="15"></td><td align=right><IMG SRC="http://www.nevrax.org/inc/img/picto-dir.gif" ALT="[DIR]" BORDER="0" WIDTH="15" HEIGHT="13"> <b>Up to <a href="/cvs/cvsweb.cgi/?sortby=rev">Nevrax</a> / <a href="/cvs/cvsweb.cgi/code/?sortby=rev">code</a> / <a href="/cvs/cvsweb.cgi/code/nelns/?sortby=rev">nelns</a> / <a href="/cvs/cvsweb.cgi/code/nelns/admin_service/?sortby=rev">admin_service</a></b></td></tr></table><HR noshade><table width="100%"><tr><td bgcolor="#ffffff">File: <a href="/cvs/cvsweb.cgi/?sortby=rev">Nevrax</a> / <a href="/cvs/cvsweb.cgi/code/?sortby=rev">code</a> / <a href="/cvs/cvsweb.cgi/code/nelns/?sortby=rev">nelns</a> / <a href="/cvs/cvsweb.cgi/code/nelns/admin_service/?sortby=rev">admin_service</a> / <a href="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cpp?sortby=rev">admin_service.cpp</a>&nbsp;(<A HREF="/cvs/cvsweb.cgi/~checkout~/code/nelns/admin_service/admin_service.cpp?rev=1.15&amp;sortby=rev" target="cvs_checkout" onClick="window.open('/cvs/cvsweb.cgi/~checkout~/code/nelns/admin_service/admin_service.cpp?rev=1.15','cvs_checkout','resizeable,scrollbars');"><b>download</b></A>)<BR>
+Revision <B>1.15</B>, <i>Mon Mar 25 09:28:00 2002 UTC</i> (4 months ago) by <i>lecroart</i>
+<BR>Branch: <b>MAIN</b>
+<BR>CVS Tags: <b>HEAD</b><BR>Changes since <b>1.14: +8 -6
+ lines</b><PRE>
+CHANGED: use new service functions
+</PRE>
+</td></tr></table><HR noshade><PRE>/** \file admin_service.cpp
+ * Admin Service (AS)
+ *
+ * $Id: admin_service.cpp,v 1.15 2002/03/25 09:28:00 lecroart Exp $
+ *
+ */
+
+/* Copyright, 2000 Nevrax Ltd.
+ *
+ * This file is part of NEVRAX NeL Network Services.
+ * NEVRAX NeL Network Services is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2, or (at your option)
+ * any later version.
+ *
+ * NEVRAX NeL Network Services is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with NEVRAX NeL Network Services; see the file COPYING. If not, write to the
+ * Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston,
+ * MA 02111-1307, USA.
+ */
+
+#ifdef HAVE_CONFIG_H
+#include &quot;config.h&quot;
+#endif // HAVE_CONFIG_H
+
+#ifndef NELNS_CONFIG
+#define NELNS_CONFIG &quot;&quot;
+#endif // NELNS_CONFIG
+
+#ifndef NELNS_LOGS
+#define NELNS_LOGS &quot;&quot;
+#endif // NELNS_LOGS
+
+#include &quot;nel/misc/types_nl.h&quot;
+
+#include &lt;string&gt;
+#include &lt;list&gt;
+
+#include &quot;nel/misc/debug.h&quot;
+#include &quot;nel/misc/config_file.h&quot;
+#include &quot;nel/misc/command.h&quot;
+
+#include &quot;nel/net/service.h&quot;
+#include &quot;nel/net/net_manager.h&quot;
+
+using namespace std;
+using namespace NLMISC;
+using namespace NLNET;
+
+////////////////////////
+
+
+struct CService
+{
+ &nbsp; &nbsp; &nbsp; &nbsp;CService () : Id(0xFFFFFFFF), Ready(false), Connected(false), InConfig(false) { }
+
+ &nbsp; &nbsp; &nbsp; &nbsp;uint32 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;Id; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;/// uint32 to identify the service
+ &nbsp; &nbsp; &nbsp; &nbsp;string &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;AliasName; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;/// alias of the service used in the AES and AS to find him (unique per AES)
+ &nbsp; &nbsp; &nbsp; &nbsp;string &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;ShortName; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;/// name of the service in short format (&quot;NS&quot; for example)
+ &nbsp; &nbsp; &nbsp; &nbsp;string &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;LongName; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;/// name of the service in long format (&quot;naming_service&quot;)
+ &nbsp; &nbsp; &nbsp; &nbsp;bool &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;Ready; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;/// true if the service is ready
+ &nbsp; &nbsp; &nbsp; &nbsp;bool &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;Connected; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;/// true if the service is connected to the AES
+ &nbsp; &nbsp; &nbsp; &nbsp;bool &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;InConfig; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;/// true if the service is in the configuration
+ &nbsp; &nbsp; &nbsp; &nbsp;std::vector&lt;NLMISC::CSerialCommand&gt; &nbsp; &nbsp; &nbsp; &nbsp;Commands;
+
+ &nbsp; &nbsp; &nbsp; &nbsp;void setValues (const CService &amp;t)
+ &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// copy all except gtk stuffs
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;Id = t.Id;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;AliasName = t.AliasName;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;ShortName = t.ShortName;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;LongName = t.LongName;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;Ready = t.Ready;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;Connected = t.Connected;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;//InConfig = t.InConfig; never change the inconfig value
+ &nbsp; &nbsp; &nbsp; &nbsp;}
+};
+
+typedef list&lt;CService&gt; TServices;
+typedef list&lt;CService&gt;::iterator SIT;
+
+struct CAdminExecutorService
+{
+ &nbsp; &nbsp; &nbsp; &nbsp;CAdminExecutorService () : Id(NextId++), SockId(NULL), Connected(false) { }
+
+ &nbsp; &nbsp; &nbsp; &nbsp;TSockId &nbsp; &nbsp; &nbsp; &nbsp;SockId; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;/// connection to the AES
+ &nbsp; &nbsp; &nbsp; &nbsp;uint32 &nbsp; &nbsp; &nbsp; &nbsp;Id; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;/// uint32 to identify the AES where the service is running
+
+ &nbsp; &nbsp; &nbsp; &nbsp;string &nbsp; &nbsp; &nbsp; &nbsp;ServerAlias; &nbsp; &nbsp; &nbsp; &nbsp;/// name of the layer4 connection, used to send message to this AES
+ &nbsp; &nbsp; &nbsp; &nbsp;string &nbsp; &nbsp; &nbsp; &nbsp;ServerAddr; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;/// address in a string format (only the ip)
+ &nbsp; &nbsp; &nbsp; &nbsp;bool &nbsp; &nbsp; &nbsp; &nbsp;Connected; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;/// true if the AES is connected
+
+ &nbsp; &nbsp; &nbsp; &nbsp;TServices Services;
+
+ &nbsp; &nbsp; &nbsp; &nbsp;vector&lt;string&gt; &nbsp; &nbsp; &nbsp; &nbsp;ServiceAliasList;
+
+ &nbsp; &nbsp; &nbsp; &nbsp;SIT findService (uint32 sid, bool asrt = true)
+ &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;SIT sit;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;for (sit = Services.begin(); sit != Services.end(); sit++)
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;if ((*sit).Id == sid)
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;break;
+
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;if (asrt)
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;nlassert (sit != Services.end());
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;return sit;
+ &nbsp; &nbsp; &nbsp; &nbsp;}
+
+ &nbsp; &nbsp; &nbsp; &nbsp;SIT findService (const string &amp;alias, bool asrt = true)
+ &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;SIT sit;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;for (sit = Services.begin(); sit != Services.end(); sit++)
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;if ((*sit).AliasName == alias)
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;break;
+
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;if (asrt)
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;nlassert (sit != Services.end());
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;return sit;
+ &nbsp; &nbsp; &nbsp; &nbsp;}
+
+private:
+ &nbsp; &nbsp; &nbsp; &nbsp;static uint32 NextId;
+};
+
+uint32 CAdminExecutorService::NextId = 1;
+
+typedef list&lt;CAdminExecutorService&gt; TAdminExecutorServices;
+typedef list&lt;CAdminExecutorService&gt;::iterator AESIT;
+
+TAdminExecutorServices AdminExecutorServices;
+
+/////////////////
+
+AESIT findAdminExecutorService (uint32 aesid, bool asrt = true)
+{
+ &nbsp; &nbsp; &nbsp; &nbsp;AESIT aesit;
+ &nbsp; &nbsp; &nbsp; &nbsp;for (aesit = AdminExecutorServices.begin(); aesit != AdminExecutorServices.end(); aesit++)
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;if ((*aesit).Id == aesid)
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;break;
+
+ &nbsp; &nbsp; &nbsp; &nbsp;if (asrt)
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;nlassert (aesit != AdminExecutorServices.end());
+ &nbsp; &nbsp; &nbsp; &nbsp;return aesit;
+}
+
+AESIT findAdminExecutorService (string ServerAlias, bool asrt = true)
+{
+ &nbsp; &nbsp; &nbsp; &nbsp;AESIT aesit;
+ &nbsp; &nbsp; &nbsp; &nbsp;for (aesit = AdminExecutorServices.begin(); aesit != AdminExecutorServices.end(); aesit++)
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;if ((*aesit).ServerAlias == ServerAlias)
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;break;
+
+ &nbsp; &nbsp; &nbsp; &nbsp;if (asrt)
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;nlassert (aesit != AdminExecutorServices.end());
+ &nbsp; &nbsp; &nbsp; &nbsp;return aesit;
+}
+
+void displayServices ()
+{
+ &nbsp; &nbsp; &nbsp; &nbsp;for (AESIT aesit = AdminExecutorServices.begin(); aesit != AdminExecutorServices.end(); aesit++)
+ &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;nlinfo (&quot;&gt; Admin&quot;);
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;for (SIT sit = (*aesit).Services.begin(); sit != (*aesit).Services.end(); sit++)
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;nlinfo (&quot; &nbsp;&gt; '%s' '%s' '%s' '%s' %d %d&quot;, (*aesit).SockId-&gt;asString().c_str(), (*sit).AliasName.c_str(), (*sit).ShortName.c_str(), (*sit).LongName.c_str(), (*aesit).Id, (*sit).Id);
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}
+ &nbsp; &nbsp; &nbsp; &nbsp;}
+}
+
+
+// send a message to a client. if ok is 0 it s an error or it s a normal
+void messageToClient (uint8 ok, string msg, TSockId from = NULL)
+{
+ &nbsp; &nbsp; &nbsp; &nbsp;CMessage msgout (CNetManager::getSIDA (&quot;AS&quot;), &quot;MESSAGE&quot;);
+ &nbsp; &nbsp; &nbsp; &nbsp;msgout.serial (ok, msg);
+ &nbsp; &nbsp; &nbsp; &nbsp;CNetManager::send (&quot;AS&quot;, msgout, from);
+}
+
+
+////////////////////////////////////////////////////////////////////////////////////////////////////////
+////////////////////////////////////////////////////////////////////////////////////////////////////////
+/////////////////// SCRIPT MANAGER /////////////////////////////////////////////////////////////////////
+////////////////////////////////////////////////////////////////////////////////////////////////////////
+////////////////////////////////////////////////////////////////////////////////////////////////////////
+
+bool StartAllServices = false;
+uint32 StartAllServicesPos;
+
+void doNextStartAllServicesStep ()
+{
+ &nbsp; &nbsp; &nbsp; &nbsp;nlassert (StartAllServices);
+
+ &nbsp; &nbsp; &nbsp; &nbsp;// get the script
+ &nbsp; &nbsp; &nbsp; &nbsp;try
+ &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;CConfigFile::CVar &amp;script = IService::getInstance()-&gt;ConfigFile.getVar(&quot;Services&quot;);
+
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// check the position
+
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;if (StartAllServicesPos*2 &gt;= (uint32)script.size())
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;StartAllServices = false;
+
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;nlinfo(&quot;end of the script&quot;);
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;messageToClient (1, &quot;Start All Service finnished correctly&quot;);
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;return;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}
+
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// get the script line
+
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;string serverAlias;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;string serviceAlias;
+
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;try
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;serverAlias = script.asString (StartAllServicesPos*2);
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;serviceAlias = script.asString (StartAllServicesPos*2+1);
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;catch(EBadSize &amp;)
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;messageToClient (1, &quot;'Services' variable does not contains a good number of entries (must be a multiple of 2)&quot;);
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;nlwarning (&quot;'Services' variable does not contains a good number of entries (must be a multiple of 2)&quot;);
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;StartAllServices = false;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;return;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}
+
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;AESIT aesit = findAdminExecutorService (serverAlias, false);
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;if (aesit == AdminExecutorServices.end())
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;messageToClient (1, &quot;don't find the server&quot;);
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;nlwarning(&quot;don't find the server&quot;);
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;StartAllServices = false;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;return;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}
+
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// check if the service is not currently running
+
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;StartAllServicesPos++;
+
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;SIT sit = (*aesit).findService (serviceAlias);
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;if ((*sit).Connected)
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// the service is already running, go to the next process
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;doNextStartAllServicesStep ();
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;else
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// send the resquest to the AES
+
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;CMessage msgout (CNetManager::getSIDA((*aesit).ServerAlias), &quot;STARTS&quot;);
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;msgout.serial (serviceAlias);
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;CNetManager::send ((*aesit).ServerAlias, msgout);
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}
+ &nbsp; &nbsp; &nbsp; &nbsp;}
+ &nbsp; &nbsp; &nbsp; &nbsp;catch(EUnknownVar&amp;)
+ &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;messageToClient (1, &quot;'Services' variable is not found&quot;);
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;nlwarning (&quot;'Services' variable is not found&quot;);
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;StartAllServices = false;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;return;
+ &nbsp; &nbsp; &nbsp; &nbsp;}
+}
+
+void initStartAllServices ()
+{
+ &nbsp; &nbsp; &nbsp; &nbsp;if (StartAllServices)
+ &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;messageToClient (1, &quot;already running a script, reset it&quot;);
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;nlwarning(&quot;already running a script, reset it&quot;);
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;StartAllServices = false;
+ &nbsp; &nbsp; &nbsp; &nbsp;}
+
+ &nbsp; &nbsp; &nbsp; &nbsp;try
+ &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;CConfigFile::CVar &amp;script = IService::getInstance()-&gt;ConfigFile.getVar(&quot;Services&quot;);
+
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;for (sint i = 0 ; i &lt; script.size (); i+=2)
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;string serverAlias = script.asString(i);
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;AESIT aesit = findAdminExecutorService (serverAlias, false);
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;if (aesit == AdminExecutorServices.end())
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;messageToClient (1, &quot;an aes is not running, can't run the script&quot;);
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;nlwarning(&quot;aes '%s' isn't running, can't run the script&quot;, serverAlias.c_str());
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;return;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}
+ &nbsp; &nbsp; &nbsp; &nbsp;}
+ &nbsp; &nbsp; &nbsp; &nbsp;catch(EConfigFile &amp;)
+ &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;messageToClient (1, &quot;bad config file&quot;);
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;nlwarning (&quot;bad config file&quot;);
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;return;
+ &nbsp; &nbsp; &nbsp; &nbsp;}
+
+ &nbsp; &nbsp; &nbsp; &nbsp;StartAllServicesPos = 0;
+ &nbsp; &nbsp; &nbsp; &nbsp;StartAllServices = true;
+
+ &nbsp; &nbsp; &nbsp; &nbsp;doNextStartAllServicesStep();
+}
+
+
+////////////////////////////////////////////////////////////////////////////////////////////////////////
+////////////////////////////////////////////////////////////////////////////////////////////////////////
+////////////////// CONNECTION TO THE AES ///////////////////////////////////////////////////////////////
+////////////////////////////////////////////////////////////////////////////////////////////////////////
+////////////////////////////////////////////////////////////////////////////////////////////////////////
+
+
+static void cbExecuteSystemCommandResult (CMessage&amp; msgin, TSockId from, CCallbackNetBase &amp;netbase)
+{
+ &nbsp; &nbsp; &nbsp; &nbsp;vector&lt;string&gt; result;
+ &nbsp; &nbsp; &nbsp; &nbsp;msgin.serialCont (result);
+
+ &nbsp; &nbsp; &nbsp; &nbsp;nlinfo(&quot;command result&quot;);
+ &nbsp; &nbsp; &nbsp; &nbsp;for (uint i = 0; i &lt; result.size(); i++)
+ &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;printf (&quot;%s&quot;, result[i].c_str());
+ &nbsp; &nbsp; &nbsp; &nbsp;}
+ &nbsp; &nbsp; &nbsp; &nbsp;nlinfo(&quot;end of command result&quot;);
+}
+
+// get the service list from the admin exec and send the list to all admin client
+static void cbServiceList (CMessage&amp; msgin, TSockId from, CCallbackNetBase &amp;netbase)
+{
+ &nbsp; &nbsp; &nbsp; &nbsp;CAdminExecutorService *aes = (CAdminExecutorService*) (uint) from-&gt;appId();
+
+ &nbsp; &nbsp; &nbsp; &nbsp;//
+ &nbsp; &nbsp; &nbsp; &nbsp;// Get the list of service from aes
+ &nbsp; &nbsp; &nbsp; &nbsp;//
+
+ &nbsp; &nbsp; &nbsp; &nbsp;uint32 nbs;
+ &nbsp; &nbsp; &nbsp; &nbsp;msgin.serial (nbs);
+
+ &nbsp; &nbsp; &nbsp; &nbsp;for (uint32 i = 0; i &lt; nbs; i++)
+ &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// find the service
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;CService s;
+
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;msgin.serial (s.Id, s.AliasName, s.ShortName, s.LongName, s.Ready);
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;msgin.serialCont (s.Commands);
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;s.Connected = true;
+
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;if (!s.AliasName.empty())
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;SIT sit = aes-&gt;findService (s.AliasName, false);
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;if (sit == aes-&gt;Services.end ())
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;aes-&gt;Services.push_back (s);
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;else
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;nlassert (&quot;the service already exists with alias, update it&quot;);
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;(*sit).setValues (s);
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;else
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;SIT sit = aes-&gt;findService (s.Id, false);
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;if (sit == aes-&gt;Services.end ())
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;aes-&gt;Services.push_back (s);
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;else
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;nlassert (&quot;the service already exists with id, update it&quot;);
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;(*sit).setValues (s);
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}
+ &nbsp; &nbsp; &nbsp; &nbsp;}
+ &nbsp; &nbsp; &nbsp; &nbsp;
+ &nbsp; &nbsp; &nbsp; &nbsp;displayServices ();
+
+ &nbsp; &nbsp; &nbsp; &nbsp;//
+ &nbsp; &nbsp; &nbsp; &nbsp;// Send the new list to all admin
+ &nbsp; &nbsp; &nbsp; &nbsp;//
+
+ &nbsp; &nbsp; &nbsp; &nbsp;CMessage msgout (CNetManager::getSIDA (&quot;AS&quot;), &quot;SERVICE_LIST&quot;);
+ &nbsp; &nbsp; &nbsp; &nbsp;uint32 nbaes = 1;
+ &nbsp; &nbsp; &nbsp; &nbsp;msgout.serial (nbaes);
+ &nbsp; &nbsp; &nbsp; &nbsp;msgout.serial (aes-&gt;Id);
+ &nbsp; &nbsp; &nbsp; &nbsp;uint32 ss = aes-&gt;Services.size();
+ &nbsp; &nbsp; &nbsp; &nbsp;msgout.serial (ss);
+
+ &nbsp; &nbsp; &nbsp; &nbsp;for (SIT sit = aes-&gt;Services.begin(); sit != aes-&gt;Services.end(); sit++)
+ &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;msgout.serial ((*sit).Id, (*sit).AliasName, (*sit).ShortName, (*sit).LongName);
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;msgout.serial ((*sit).Ready, (*sit).Connected, (*sit).InConfig);
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;msgout.serialCont ((*sit).Commands);
+ &nbsp; &nbsp; &nbsp; &nbsp;}
+ &nbsp; &nbsp; &nbsp; &nbsp;CNetManager::send (&quot;AS&quot;, msgout, 0);
+}
+
+static void cbServiceAliasList (CMessage&amp; msgin, TSockId from, CCallbackNetBase &amp;netbase)
+{
+ &nbsp; &nbsp; &nbsp; &nbsp;// get the service list from the admin exec and send the list to all admin client
+ &nbsp; &nbsp; &nbsp; &nbsp;CAdminExecutorService *aes = (CAdminExecutorService*) (uint) from-&gt;appId();
+
+ &nbsp; &nbsp; &nbsp; &nbsp;aes-&gt;ServiceAliasList.clear ();
+ &nbsp; &nbsp; &nbsp; &nbsp;msgin.serialCont (aes-&gt;ServiceAliasList);
+
+ &nbsp; &nbsp; &nbsp; &nbsp;nlinfo(&quot;send SAL to admin callback from aes&quot;);
+
+ &nbsp; &nbsp; &nbsp; &nbsp;CMessage msgout (CNetManager::getSIDA (&quot;AS&quot;), &quot;SAL&quot;);
+ &nbsp; &nbsp; &nbsp; &nbsp;msgout.serial (aes-&gt;Id);
+ &nbsp; &nbsp; &nbsp; &nbsp;msgout.serialCont (aes-&gt;ServiceAliasList);
+ &nbsp; &nbsp; &nbsp; &nbsp;CNetManager::send (&quot;AS&quot;, msgout, 0);
+ &nbsp; &nbsp; &nbsp; &nbsp;
+ &nbsp; &nbsp; &nbsp; &nbsp;nlinfo(&quot;new service alias list&quot;);
+}
+
+
+static void cbServiceIdentification (CMessage&amp; msgin, TSockId from, CCallbackNetBase &amp;netbase)
+{
+ &nbsp; &nbsp; &nbsp; &nbsp;CAdminExecutorService *aes = (CAdminExecutorService*) (uint) from-&gt;appId();
+
+ &nbsp; &nbsp; &nbsp; &nbsp;uint32 sid;
+ &nbsp; &nbsp; &nbsp; &nbsp;string alias;
+
+ &nbsp; &nbsp; &nbsp; &nbsp;msgin.serial (sid, alias);
+
+ &nbsp; &nbsp; &nbsp; &nbsp;SIT sit;
+ &nbsp; &nbsp; &nbsp; &nbsp;if (!alias.empty())
+ &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;sit = aes-&gt;findService (alias, false);
+
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;if (sit == aes-&gt;Services.end ())
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// the alias is not found
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;nlwarning (&quot;new service with alias (%s) but not in my list&quot;, alias.c_str());
+
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;aes-&gt;Services.push_back (CService ());
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;sit = aes-&gt;Services.end();
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;sit--;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;else
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// normal case
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}
+ &nbsp; &nbsp; &nbsp; &nbsp;}
+ &nbsp; &nbsp; &nbsp; &nbsp;else
+ &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;sit = aes-&gt;findService (sid, false);
+
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;if (sit == aes-&gt;Services.end ())
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// normal case for unknown services
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;nlwarning (&quot;new service without alias and not in my list, add it&quot;);
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;else
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;nlwarning (&quot;new service without alias is already in my list with id %d, add it&quot;, sid);
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;aes-&gt;Services.push_back (CService ());
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;sit = aes-&gt;Services.end();
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;sit--;
+ &nbsp; &nbsp; &nbsp; &nbsp;}
+
+ &nbsp; &nbsp; &nbsp; &nbsp;(*sit).Id = sid;
+ &nbsp; &nbsp; &nbsp; &nbsp;(*sit).AliasName = alias;
+ &nbsp; &nbsp; &nbsp; &nbsp;(*sit).Connected = true;
+ &nbsp; &nbsp; &nbsp; &nbsp;msgin.serial ((*sit).ShortName, (*sit).LongName);
+ &nbsp; &nbsp; &nbsp; &nbsp;msgin.serialCont ((*sit).Commands);
+
+ &nbsp; &nbsp; &nbsp; &nbsp;nlinfo (&quot;*:%d:%d is identified to be '%s' '%s' '%s'&quot;, aes-&gt;Id, sid, (*sit).AliasName.c_str(), (*sit).ShortName.c_str(), (*sit).LongName.c_str());
+
+ &nbsp; &nbsp; &nbsp; &nbsp;// broadcast the message to all admin client
+ &nbsp; &nbsp; &nbsp; &nbsp;CMessage msgout (CNetManager::getSIDA (&quot;AS&quot;), &quot;SID&quot;);
+ &nbsp; &nbsp; &nbsp; &nbsp;msgout.serial (aes-&gt;Id, sid, (*sit).AliasName, (*sit).ShortName, (*sit).LongName);
+ &nbsp; &nbsp; &nbsp; &nbsp;msgout.serialCont ((*sit).Commands);
+
+ &nbsp; &nbsp; &nbsp; &nbsp;CNetManager::send (&quot;AS&quot;, msgout, 0);
+}
+
+static void cbServiceReady (CMessage&amp; msgin, TSockId from, CCallbackNetBase &amp;netbase)
+{
+ &nbsp; &nbsp; &nbsp; &nbsp;CAdminExecutorService *aes = (CAdminExecutorService*) (uint) from-&gt;appId();
+
+ &nbsp; &nbsp; &nbsp; &nbsp;uint32 sid;
+ &nbsp; &nbsp; &nbsp; &nbsp;msgin.serial (sid);
+
+ &nbsp; &nbsp; &nbsp; &nbsp;SIT sit = aes-&gt;findService(sid);
+ &nbsp; &nbsp; &nbsp; &nbsp;(*sit).Ready = true;
+
+ &nbsp; &nbsp; &nbsp; &nbsp;nlinfo (&quot;*:%d:%d is ready&quot;, aes-&gt;Id, sid);
+
+ &nbsp; &nbsp; &nbsp; &nbsp;// broadcast the message to all admin client
+ &nbsp; &nbsp; &nbsp; &nbsp;CMessage msgout (CNetManager::getSIDA (&quot;AS&quot;), &quot;SR&quot;);
+ &nbsp; &nbsp; &nbsp; &nbsp;msgout.serial (aes-&gt;Id, sid);
+ &nbsp; &nbsp; &nbsp; &nbsp;CNetManager::send (&quot;AS&quot;, msgout, 0);
+
+ &nbsp; &nbsp; &nbsp; &nbsp;// if we are in a script execution, continue
+ &nbsp; &nbsp; &nbsp; &nbsp;if (StartAllServices)
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;doNextStartAllServicesStep();
+}
+
+static void cbServiceConnection (CMessage&amp; msgin, TSockId from, CCallbackNetBase &amp;netbase)
+{
+ &nbsp; &nbsp; &nbsp; &nbsp;CAdminExecutorService *aes = (CAdminExecutorService*) (uint) from-&gt;appId();
+
+ &nbsp; &nbsp; &nbsp; &nbsp;uint32 sid;
+ &nbsp; &nbsp; &nbsp; &nbsp;msgin.serial (sid);
+
+ &nbsp; &nbsp; &nbsp; &nbsp;nlinfo (&quot;*:%d:%d connected&quot;, aes-&gt;Id, sid);
+
+ &nbsp; &nbsp; &nbsp; &nbsp;// don't do anything. we have to wait identification to add it in out lists
+
+/*
+ &nbsp; &nbsp; &nbsp; &nbsp;aes-&gt;Services.push_back (CService(sid));
+*/
+ &nbsp; &nbsp; &nbsp; &nbsp;// broadcast the message to all admin client
+ &nbsp; &nbsp; &nbsp; &nbsp;CMessage msgout (CNetManager::getSIDA (&quot;AS&quot;), &quot;SC&quot;);
+ &nbsp; &nbsp; &nbsp; &nbsp;msgout.serial (aes-&gt;Id, sid);
+ &nbsp; &nbsp; &nbsp; &nbsp;CNetManager::send (&quot;AS&quot;, msgout, 0);
+}
+
+static void cbServiceDisconnection (CMessage&amp; msgin, TSockId from, CCallbackNetBase &amp;netbase)
+{
+ &nbsp; &nbsp; &nbsp; &nbsp;CAdminExecutorService *aes = (CAdminExecutorService*) (uint) from-&gt;appId();
+
+ &nbsp; &nbsp; &nbsp; &nbsp;uint32 sid;
+ &nbsp; &nbsp; &nbsp; &nbsp;msgin.serial (sid);
+
+ &nbsp; &nbsp; &nbsp; &nbsp;nlinfo (&quot;*:%d:%d disconnected&quot;, aes-&gt;Id, sid);
+
+ &nbsp; &nbsp; &nbsp; &nbsp;SIT sit = aes-&gt;findService(sid, false);
+ &nbsp; &nbsp; &nbsp; &nbsp;
+ &nbsp; &nbsp; &nbsp; &nbsp;// broadcast the message to all admin client
+ &nbsp; &nbsp; &nbsp; &nbsp;CMessage msgout (CNetManager::getSIDA (&quot;AS&quot;), &quot;SD&quot;);
+ &nbsp; &nbsp; &nbsp; &nbsp;msgout.serial (aes-&gt;Id, sid);
+ &nbsp; &nbsp; &nbsp; &nbsp;CNetManager::send (&quot;AS&quot;, msgout, 0);
+
+ &nbsp; &nbsp; &nbsp; &nbsp;// the service could disconnect before it's identification, in this case, we don't have it in the service list
+ &nbsp; &nbsp; &nbsp; &nbsp;if (sit != aes-&gt;Services.end ())
+ &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;if ((*sit).InConfig)
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;(*sit).Ready = (*sit).Connected = false;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;(*sit).Id = 0xFFFFFFFF;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;(*sit).ShortName = (*sit).LongName = &quot;&quot;;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;(*sit).Commands.clear ();
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;else
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// erase only if it's not a service in the config
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;aes-&gt;Services.erase (sit);
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}
+ &nbsp; &nbsp; &nbsp; &nbsp;}
+
+ &nbsp; &nbsp; &nbsp; &nbsp;displayServices ();
+}
+
+// i'm connected to a new admin executor service
+void cbAESConnection (const string &amp;serviceName, TSockId from, void *arg)
+{
+ &nbsp; &nbsp; &nbsp; &nbsp;AESIT aesit = findAdminExecutorService (serviceName); &nbsp; &nbsp; &nbsp; &nbsp;
+ &nbsp; &nbsp; &nbsp; &nbsp;CAdminExecutorService *aes = &amp;(*aesit);
+ &nbsp; &nbsp; &nbsp; &nbsp;
+ &nbsp; &nbsp; &nbsp; &nbsp;// set the appid to find the aes in O(1)
+ &nbsp; &nbsp; &nbsp; &nbsp;from-&gt;setAppId ((uint64)(uint)aes);
+
+ &nbsp; &nbsp; &nbsp; &nbsp;aes-&gt;Connected = true;
+ &nbsp; &nbsp; &nbsp; &nbsp;nlinfo (&quot;*:%d:* connected&quot;, aes-&gt;Id);
+/*
+ &nbsp; &nbsp; &nbsp; &nbsp;// broadcast the message that an admin exec is connected to all admin client
+ &nbsp; &nbsp; &nbsp; &nbsp;CMessage msgout (CNetManager::getSIDA (&quot;AS&quot;), &quot;AESC&quot;);
+ &nbsp; &nbsp; &nbsp; &nbsp;msgout.serial (aes-&gt;Id);
+ &nbsp; &nbsp; &nbsp; &nbsp;CNetManager::send (&quot;AS&quot;, msgout, 0);
+*/
+
+ &nbsp; &nbsp; &nbsp; &nbsp;// broadcast the new state of this AES
+ &nbsp; &nbsp; &nbsp; &nbsp;CMessage msgout (CNetManager::getSIDA (&quot;AS&quot;), &quot;AES_LIST&quot;);
+ &nbsp; &nbsp; &nbsp; &nbsp;uint32 nbaes = 1;
+ &nbsp; &nbsp; &nbsp; &nbsp;msgout.serial (nbaes);
+ &nbsp; &nbsp; &nbsp; &nbsp;msgout.serial (aes-&gt;Id, aes-&gt;ServerAlias, aes-&gt;ServerAddr, aes-&gt;Connected);
+ &nbsp; &nbsp; &nbsp; &nbsp;CNetManager::send (&quot;AS&quot;, msgout, 0);
+}
+
+// i'm disconnected to an admin executor service
+void cbAESDisconnection (const string &amp;serviceName, TSockId from, void *arg)
+{
+ &nbsp; &nbsp; &nbsp; &nbsp;// get the aes with the appid
+ &nbsp; &nbsp; &nbsp; &nbsp;CAdminExecutorService *aes = (CAdminExecutorService*) (uint) from-&gt;appId();
+
+ &nbsp; &nbsp; &nbsp; &nbsp;aes-&gt;Connected = false;
+
+ &nbsp; &nbsp; &nbsp; &nbsp;SIT sit;
+ &nbsp; &nbsp; &nbsp; &nbsp;for (sit = aes-&gt;Services.begin(); sit != aes-&gt;Services.end();)
+ &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// keep only inconfig services
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;if ((*sit).InConfig)
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;(*sit).Id = 0xFFFFFFFF;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;(*sit).ShortName = (*sit).LongName = &quot;&quot;;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;(*sit).Ready = (*sit).Connected = false;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;sit++;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;else
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// erase only if it's not a service in the config
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;sit = aes-&gt;Services.erase (sit);
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}
+ &nbsp; &nbsp; &nbsp; &nbsp;}
+
+ &nbsp; &nbsp; &nbsp; &nbsp;nlinfo (&quot;*:%d:* disconnected&quot;, aes-&gt;Id);
+/* &nbsp; &nbsp; &nbsp;
+ &nbsp; &nbsp; &nbsp; &nbsp;// broadcast the message to all admin client that an admin exec is disconnected
+ &nbsp; &nbsp; &nbsp; &nbsp;CMessage msgout (CNetManager::getSIDA (&quot;AS&quot;), &quot;AESD&quot;);
+ &nbsp; &nbsp; &nbsp; &nbsp;msgout.serial (aes-&gt;Id);
+ &nbsp; &nbsp; &nbsp; &nbsp;CNetManager::send (&quot;AS&quot;, msgout, 0);
+*/
+
+ &nbsp; &nbsp; &nbsp; &nbsp;displayServices ();
+
+ &nbsp; &nbsp; &nbsp; &nbsp;// broadcast the new state of this AES
+ &nbsp; &nbsp; &nbsp; &nbsp;CMessage msgout (CNetManager::getSIDA (&quot;AS&quot;), &quot;AES_LIST&quot;);
+ &nbsp; &nbsp; &nbsp; &nbsp;uint32 nbaes = 1;
+ &nbsp; &nbsp; &nbsp; &nbsp;msgout.serial (nbaes);
+ &nbsp; &nbsp; &nbsp; &nbsp;msgout.serial (aes-&gt;Id, aes-&gt;ServerAlias, aes-&gt;ServerAddr, aes-&gt;Connected);
+ &nbsp; &nbsp; &nbsp; &nbsp;CNetManager::send (&quot;AS&quot;, msgout, 0);
+}
+
+static void cbLog (CMessage&amp; msgin, TSockId from, CCallbackNetBase &amp;netbase)
+{
+ &nbsp; &nbsp; &nbsp; &nbsp;// received an answer for a command, give it to all admin client
+
+ &nbsp; &nbsp; &nbsp; &nbsp;// get the aes with the appid
+ &nbsp; &nbsp; &nbsp; &nbsp;CAdminExecutorService *aes = (CAdminExecutorService*) (uint) from-&gt;appId();
+
+ &nbsp; &nbsp; &nbsp; &nbsp;// broadcast the message to the admin service
+ &nbsp; &nbsp; &nbsp; &nbsp;CMessage msgout (CNetManager::getSIDA (&quot;AS&quot;), &quot;XLOG&quot;);
+ &nbsp; &nbsp; &nbsp; &nbsp;string log;
+ &nbsp; &nbsp; &nbsp; &nbsp;uint32 sid;
+ &nbsp; &nbsp; &nbsp; &nbsp;msgin.serial (sid);
+ &nbsp; &nbsp; &nbsp; &nbsp;msgin.serial (log);
+
+ &nbsp; &nbsp; &nbsp; &nbsp;msgout.serial (aes-&gt;Id);
+ &nbsp; &nbsp; &nbsp; &nbsp;msgout.serial (sid);
+ &nbsp; &nbsp; &nbsp; &nbsp;msgout.serial (log);
+ &nbsp; &nbsp; &nbsp; &nbsp;CNetManager::send (&quot;AS&quot;, msgout, 0);
+}
+
+
+TCallbackItem AESCallbackArray[] =
+{
+ &nbsp; &nbsp; &nbsp; &nbsp;{ &quot;ESCR&quot;, cbExecuteSystemCommandResult },
+
+ &nbsp; &nbsp; &nbsp; &nbsp;{ &quot;SL&quot;, cbServiceList },
+ &nbsp; &nbsp; &nbsp; &nbsp;{ &quot;SID&quot;, cbServiceIdentification },
+ &nbsp; &nbsp; &nbsp; &nbsp;{ &quot;SR&quot;, cbServiceReady },
+ &nbsp; &nbsp; &nbsp; &nbsp;{ &quot;SC&quot;, cbServiceConnection },
+ &nbsp; &nbsp; &nbsp; &nbsp;{ &quot;SD&quot;, cbServiceDisconnection },
+
+ &nbsp; &nbsp; &nbsp; &nbsp;{ &quot;SAL&quot;, cbServiceAliasList },
+
+ &nbsp; &nbsp; &nbsp; &nbsp;{ &quot;XLOG&quot;, cbLog },
+};
+
+
+////////////////////////////////////////////////////////////////////////////////////////////////////////
+////////////////////////////////////////////////////////////////////////////////////////////////////////
+////////////////// CONNECTION TO THE CLIENT ////////////////////////////////////////////////////////////
+////////////////////////////////////////////////////////////////////////////////////////////////////////
+////////////////////////////////////////////////////////////////////////////////////////////////////////
+
+//
+// A new admin client is connected.
+//
+void clientConnection (const string &amp;serviceName, TSockId from, void *arg)
+{
+ &nbsp; &nbsp; &nbsp; &nbsp;// new client, send him all out info about services
+
+ &nbsp; &nbsp; &nbsp; &nbsp;nlinfo (&quot;admin %s is connected&quot;, from-&gt;asString().c_str());
+
+ &nbsp; &nbsp; &nbsp; &nbsp;CNetManager::getNetBase(serviceName)-&gt;authorizeOnly (&quot;AUTH&quot;, from);
+}
+
+static void cbAuthenticateClient (CMessage&amp; msgin, TSockId from, CCallbackNetBase &amp;netbase)
+{
+ &nbsp; &nbsp; &nbsp; &nbsp;//
+ &nbsp; &nbsp; &nbsp; &nbsp;// Check the validity of the admin
+ &nbsp; &nbsp; &nbsp; &nbsp;//
+ &nbsp; &nbsp; &nbsp; &nbsp;
+ &nbsp; &nbsp; &nbsp; &nbsp;string password;
+ &nbsp; &nbsp; &nbsp; &nbsp;bool ok = false;
+ &nbsp; &nbsp; &nbsp; &nbsp;try
+ &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;msgin.serial (password);
+
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;if (password == IService::getInstance()-&gt;ConfigFile.getVar(&quot;Password&quot;).asString())
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// good authentification
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;ok = true;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}
+ &nbsp; &nbsp; &nbsp; &nbsp;}
+ &nbsp; &nbsp; &nbsp; &nbsp;catch (Exception &amp;)
+ &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// problem, eject him
+ &nbsp; &nbsp; &nbsp; &nbsp;}
+
+ &nbsp; &nbsp; &nbsp; &nbsp;if (ok)
+ &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;netbase.authorizeOnly (NULL, from);
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;nlinfo (&quot;Admin authentification success&quot;);
+ &nbsp; &nbsp; &nbsp; &nbsp;}
+ &nbsp; &nbsp; &nbsp; &nbsp;else
+ &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// bad auth =&gt; disconnect
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;netbase.disconnect (from);
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;nlwarning (&quot;Bad admin authentification, tried password: '%s'&quot;, password.c_str());
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;return;
+ &nbsp; &nbsp; &nbsp; &nbsp;}
+
+ &nbsp; &nbsp; &nbsp; &nbsp;//
+ &nbsp; &nbsp; &nbsp; &nbsp;// send the list of all the aes
+ &nbsp; &nbsp; &nbsp; &nbsp;//
+
+ &nbsp; &nbsp; &nbsp; &nbsp;CMessage msgout2 (CNetManager::getSIDA (&quot;AS&quot;), &quot;AES_LIST&quot;);
+ &nbsp; &nbsp; &nbsp; &nbsp;AESIT aesit;
+ &nbsp; &nbsp; &nbsp; &nbsp;uint32 nbaes = (uint32)AdminExecutorServices.size();
+ &nbsp; &nbsp; &nbsp; &nbsp;msgout2.serial (nbaes);
+ &nbsp; &nbsp; &nbsp; &nbsp;for (aesit = AdminExecutorServices.begin(); aesit != AdminExecutorServices.end(); aesit++)
+ &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// send info about the AES
+
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;msgout2.serial ((*aesit).Id, (*aesit).ServerAlias, (*aesit).ServerAddr, (*aesit).Connected);
+ &nbsp; &nbsp; &nbsp; &nbsp;}
+ &nbsp; &nbsp; &nbsp; &nbsp;CNetManager::send (&quot;AS&quot;, msgout2, from);
+
+ &nbsp; &nbsp; &nbsp; &nbsp;//
+ &nbsp; &nbsp; &nbsp; &nbsp;// send the list of all services
+ &nbsp; &nbsp; &nbsp; &nbsp;//
+
+ &nbsp; &nbsp; &nbsp; &nbsp;CMessage msgout (CNetManager::getSIDA (&quot;AS&quot;), &quot;SERVICE_LIST&quot;);
+ &nbsp; &nbsp; &nbsp; &nbsp;nbaes = (uint32)AdminExecutorServices.size();
+ &nbsp; &nbsp; &nbsp; &nbsp;msgout.serial (nbaes);
+ &nbsp; &nbsp; &nbsp; &nbsp;for (aesit = AdminExecutorServices.begin(); aesit != AdminExecutorServices.end(); aesit++)
+ &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;msgout.serial ((*aesit).Id);
+
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;uint32 nbs = (uint32)(*aesit).Services.size();
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;msgout.serial (nbs);
+
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;for (SIT sit = (*aesit).Services.begin(); sit != (*aesit).Services.end(); sit++)
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// send info about services of the AES
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;msgout.serial ((*sit).Id, (*sit).AliasName, (*sit).ShortName, (*sit).LongName);
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;msgout.serial ((*sit).Ready, (*sit).Connected, (*sit).InConfig);
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;msgout.serialCont ((*sit).Commands);
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}
+ &nbsp; &nbsp; &nbsp; &nbsp;}
+ &nbsp; &nbsp; &nbsp; &nbsp;CNetManager::send (&quot;AS&quot;, msgout, from);
+
+ &nbsp; &nbsp; &nbsp; &nbsp;displayServices ();
+
+ &nbsp; &nbsp; &nbsp; &nbsp;//
+ &nbsp; &nbsp; &nbsp; &nbsp;// send service alias list
+ &nbsp; &nbsp; &nbsp; &nbsp;//
+
+ &nbsp; &nbsp; &nbsp; &nbsp;nlinfo(&quot;send SAL to admin startup&quot;);
+
+ &nbsp; &nbsp; &nbsp; &nbsp;for (aesit = AdminExecutorServices.begin(); aesit != AdminExecutorServices.end(); aesit++)
+ &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;CMessage msgout2 (CNetManager::getSIDA (&quot;AS&quot;), &quot;SAL&quot;);
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;msgout2.serial ((*aesit).Id);
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;msgout2.serialCont ((*aesit).ServiceAliasList);
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;CNetManager::send (&quot;AS&quot;, msgout2, from);
+ &nbsp; &nbsp; &nbsp; &nbsp;}
+}
+
+
+static void cbExecuteSystemCommand (CMessage&amp; msgin, TSockId from, CCallbackNetBase &amp;netbase)
+{
+ &nbsp; &nbsp; &nbsp; &nbsp;string command;
+ &nbsp; &nbsp; &nbsp; &nbsp;uint32 aesid;
+ &nbsp; &nbsp; &nbsp; &nbsp;msgin.serial (aesid);
+ &nbsp; &nbsp; &nbsp; &nbsp;msgin.serial (command);
+
+ &nbsp; &nbsp; &nbsp; &nbsp;AESIT aesit = findAdminExecutorService (aesid, false);
+ &nbsp; &nbsp; &nbsp; &nbsp;if (aesit == AdminExecutorServices.end())
+ &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// don't find the aes, send an error message
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;messageToClient (0, &quot;couldn't execute command, as didn't find the aes&quot;, from);
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;return;
+ &nbsp; &nbsp; &nbsp; &nbsp;}
+
+ &nbsp; &nbsp; &nbsp; &nbsp;// send the resquest to the AES
+
+ &nbsp; &nbsp; &nbsp; &nbsp;CMessage msgout (CNetManager::getSIDA((*aesit).ServerAlias), &quot;SYS&quot;);
+ &nbsp; &nbsp; &nbsp; &nbsp;msgout.serial (command);
+ &nbsp; &nbsp; &nbsp; &nbsp;CNetManager::send ((*aesit).ServerAlias, msgout);
+}
+
+
+static void cbStartService (CMessage&amp; msgin, TSockId from, CCallbackNetBase &amp;netbase)
+{
+ &nbsp; &nbsp; &nbsp; &nbsp;string serviceAlias;
+ &nbsp; &nbsp; &nbsp; &nbsp;uint32 aesid;
+ &nbsp; &nbsp; &nbsp; &nbsp;msgin.serial (aesid);
+ &nbsp; &nbsp; &nbsp; &nbsp;msgin.serial (serviceAlias);
+
+ &nbsp; &nbsp; &nbsp; &nbsp;AESIT aesit = findAdminExecutorService (aesid, false);
+ &nbsp; &nbsp; &nbsp; &nbsp;if (aesit == AdminExecutorServices.end())
+ &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// don't find the aes, send an error message
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;messageToClient (0, &quot;couldn't start service, as didn't find the aes&quot;, from);
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;return;
+ &nbsp; &nbsp; &nbsp; &nbsp;}
+
+ &nbsp; &nbsp; &nbsp; &nbsp;// send the resquest to the AES
+
+ &nbsp; &nbsp; &nbsp; &nbsp;CMessage msgout (CNetManager::getSIDA((*aesit).ServerAlias), &quot;STARTS&quot;);
+ &nbsp; &nbsp; &nbsp; &nbsp;msgout.serial (serviceAlias);
+ &nbsp; &nbsp; &nbsp; &nbsp;CNetManager::send ((*aesit).ServerAlias, msgout);
+}
+
+static void cbStopService (CMessage&amp; msgin, TSockId from, CCallbackNetBase &amp;netbase)
+{
+ &nbsp; &nbsp; &nbsp; &nbsp;uint32 aesid, sid;
+ &nbsp; &nbsp; &nbsp; &nbsp;msgin.serial (aesid);
+ &nbsp; &nbsp; &nbsp; &nbsp;msgin.serial (sid);
+
+ &nbsp; &nbsp; &nbsp; &nbsp;AESIT aesit = findAdminExecutorService (aesid, false);
+ &nbsp; &nbsp; &nbsp; &nbsp;if (aesit == AdminExecutorServices.end())
+ &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;messageToClient (0, &quot;couldn't stop service, as didn't find the aes&quot;, from);
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// don't find the aes, send an error message
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;return;
+ &nbsp; &nbsp; &nbsp; &nbsp;}
+
+ &nbsp; &nbsp; &nbsp; &nbsp;SIT sit = (*aesit).findService (sid, false);
+ &nbsp; &nbsp; &nbsp; &nbsp;if (sit == (*aesit).Services.end())
+ &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// don't find the s, send an error message
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;messageToClient (0, &quot;couldn't stop service, as didn't find the service&quot;, from);
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;return;
+ &nbsp; &nbsp; &nbsp; &nbsp;}
+
+ &nbsp; &nbsp; &nbsp; &nbsp;// send the resquest to the AES
+
+ &nbsp; &nbsp; &nbsp; &nbsp;CMessage msgout (CNetManager::getSIDA((*aesit).ServerAlias), &quot;STOPS&quot;);
+ &nbsp; &nbsp; &nbsp; &nbsp;msgout.serial (sid);
+ &nbsp; &nbsp; &nbsp; &nbsp;CNetManager::send ((*aesit).ServerAlias, msgout);
+}
+
+static void cbExecCommand (CMessage&amp; msgin, TSockId from, CCallbackNetBase &amp;netbase)
+{
+ &nbsp; &nbsp; &nbsp; &nbsp;uint32 aesid, sid;
+ &nbsp; &nbsp; &nbsp; &nbsp;string command;
+ &nbsp; &nbsp; &nbsp; &nbsp;msgin.serial (aesid);
+ &nbsp; &nbsp; &nbsp; &nbsp;msgin.serial (sid);
+ &nbsp; &nbsp; &nbsp; &nbsp;msgin.serial (command);
+
+ &nbsp; &nbsp; &nbsp; &nbsp;AESIT aesit = findAdminExecutorService (aesid, false);
+ &nbsp; &nbsp; &nbsp; &nbsp;if (aesit == AdminExecutorServices.end())
+ &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;messageToClient (0, &quot;couldn't stop service, as didn't find the aes&quot;, from);
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// don't find the aes, send an error message
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;return;
+ &nbsp; &nbsp; &nbsp; &nbsp;}
+
+ &nbsp; &nbsp; &nbsp; &nbsp;SIT sit = (*aesit).findService (sid, false);
+ &nbsp; &nbsp; &nbsp; &nbsp;if (sit == (*aesit).Services.end())
+ &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// don't find the s, send an error message
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;messageToClient (0, &quot;couldn't stop service, as didn't find the service&quot;, from);
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;return;
+ &nbsp; &nbsp; &nbsp; &nbsp;}
+
+ &nbsp; &nbsp; &nbsp; &nbsp;// send the resquest to the AES
+
+ &nbsp; &nbsp; &nbsp; &nbsp;CMessage msgout (CNetManager::getSIDA((*aesit).ServerAlias), &quot;EXEC_COMMAND&quot;);
+ &nbsp; &nbsp; &nbsp; &nbsp;msgout.serial (sid);
+ &nbsp; &nbsp; &nbsp; &nbsp;msgout.serial (command);
+ &nbsp; &nbsp; &nbsp; &nbsp;CNetManager::send ((*aesit).ServerAlias, msgout);
+}
+
+static void cbStartAllServices (CMessage&amp; msgin, TSockId from, CCallbackNetBase &amp;netbase)
+{
+ &nbsp; &nbsp; &nbsp; &nbsp;initStartAllServices ();
+}
+
+static void cbStopAllServices (CMessage&amp; msgin, TSockId from, CCallbackNetBase &amp;netbase)
+{
+ &nbsp; &nbsp; &nbsp; &nbsp;for (AESIT aesit = AdminExecutorServices.begin(); aesit != AdminExecutorServices.end(); aesit++)
+ &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;for (SIT sit = (*aesit).Services.begin(); sit != (*aesit).Services.end(); sit++)
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;if ((*sit).Connected)
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;CMessage msgout (CNetManager::getSIDA((*aesit).ServerAlias), &quot;STOPS&quot;);
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;msgout.serial ((*sit).Id);
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;CNetManager::send ((*aesit).ServerAlias, msgout);
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}
+ &nbsp; &nbsp; &nbsp; &nbsp;}
+}
+
+TCallbackItem ClientCallbackArray[] =
+{
+ &nbsp; &nbsp; &nbsp; &nbsp;{ &quot;AUTH&quot;, cbAuthenticateClient },
+ &nbsp; &nbsp; &nbsp; &nbsp;{ &quot;SYS&quot;, cbExecuteSystemCommand },
+ &nbsp; &nbsp; &nbsp; &nbsp;{ &quot;STARTS&quot;, cbStartService },
+ &nbsp; &nbsp; &nbsp; &nbsp;{ &quot;STOPS&quot;, cbStopService },
+ &nbsp; &nbsp; &nbsp; &nbsp;{ &quot;EXEC_COMMAND&quot;, cbExecCommand },
+ &nbsp; &nbsp; &nbsp; &nbsp;{ &quot;START_ALL_SERVICES&quot;, cbStartAllServices },
+ &nbsp; &nbsp; &nbsp; &nbsp;{ &quot;STOP_ALL_SERVICES&quot;, cbStopAllServices },
+};
+
+////////////////////////////////////////////////////////////////////////////////////////////////////////
+////////////////////////////////////////////////////////////////////////////////////////////////////////
+////////////////// SERVICE IMPLEMENTATION //////////////////////////////////////////////////////////////
+////////////////////////////////////////////////////////////////////////////////////////////////////////
+////////////////////////////////////////////////////////////////////////////////////////////////////////
+
+class CAdminService : public IService
+{
+public:
+
+ &nbsp; &nbsp; &nbsp; &nbsp;/// Init the service, load the universal time.
+ &nbsp; &nbsp; &nbsp; &nbsp;void &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;init ()
+ &nbsp; &nbsp; &nbsp; &nbsp;{
+// &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;DebugLog-&gt;addNegativeFilter (&quot;L0:&quot;);
+// &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;DebugLog-&gt;addNegativeFilter (&quot;L1:&quot;);
+// &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;DebugLog-&gt;addNegativeFilter (&quot;L2:&quot;);
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;CNetManager::setConnectionCallback (&quot;AS&quot;, clientConnection, NULL);
+
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;//
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// Get the list of AESHosts, add in the structures and create connection to all AES
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;//
+
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;CConfigFile::CVar &amp;host = ConfigFile.getVar (&quot;AESHosts&quot;);
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;sint i;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;for (i = 0 ; i &lt; host.size (); i+=2)
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;string serverAlias = host.asString(i);
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;string serverAddr = host.asString(i+1);
+
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// add to the list
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;CAdminExecutorService aes;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;aes.ServerAlias = serverAlias;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;aes.ServerAddr = serverAddr;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;AdminExecutorServices.push_back (aes);
+
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// connect to the AES
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;CNetManager::setConnectionCallback (serverAlias, cbAESConnection, NULL);
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;CNetManager::setDisconnectionCallback (serverAlias, cbAESDisconnection, NULL);
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;CNetManager::addClient (serverAlias, serverAddr+&quot;:49996&quot;);
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;CNetManager::addCallbackArray (serverAlias, AESCallbackArray, sizeof (AESCallbackArray)/sizeof(AESCallbackArray[0]));
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}
+
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;//
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// Get the list of services in the shard
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;//
+
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;CConfigFile::CVar &amp;serv = ConfigFile.getVar (&quot;Services&quot;);
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;for (i = 0 ; i &lt; serv.size (); i+=2)
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;string serverAlias = serv.asString(i);
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;string serviceAlias = serv.asString(i+1);
+
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;AESIT aesit = findAdminExecutorService (serverAlias);
+
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// add new AES in the list
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;CService s;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;s.AliasName = serviceAlias;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;s.InConfig = true;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;(*aesit).Services.push_back (s);
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;displayServices ();
+ &nbsp; &nbsp; &nbsp; &nbsp;}
+};
+
+
+// AS is a server connection to the admin client
+// AESAS is a client connection to the admin executor
+
+/// Naming Service
+NLNET_OLD_SERVICE_MAIN (CAdminService, &quot;AS&quot;, &quot;admin_service&quot;, 49995, ClientCallbackArray, NELNS_CONFIG, NELNS_LOGS);
+</PRE> \ No newline at end of file
diff --git a/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cpp?rev=1.2&content-type=text/x-cvsweb-markup/index.html b/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cpp?rev=1.2&content-type=text/x-cvsweb-markup/index.html
new file mode 100644
index 00000000..eb84b26f
--- /dev/null
+++ b/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cpp?rev=1.2&content-type=text/x-cvsweb-markup/index.html
@@ -0,0 +1,253 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"><HTML>
+<HEAD><style> A { color:black }</style>
+<!-- hennerik CVSweb $Revision: 1.93 $ -->
+<TITLE>code/nelns/admin_service/admin_service.cpp - view - 1.2</TITLE></HEAD>
+<BODY BGCOLOR="#eeeeee">
+<table width="100%" border=0 cellspacing=0 cellpadding=1 bgcolor="#aaaaaa"><tr valign=bottom><td><a href="admin_service.cpp"><IMG SRC="http://www.nevrax.org/inc/img/picto-up.gif" ALT="[BACK]" BORDER="0" WIDTH="14" HEIGHT="13"></a> <b>Return to <A HREF="admin_service.cpp">admin_service.cpp</A>
+ CVS log</b> <IMG SRC="http://www.nevrax.org/inc/img/picto-news.gif" ALT="[TXT]" BORDER="0" WIDTH="13" HEIGHT="15"></td><td align=right><IMG SRC="http://www.nevrax.org/inc/img/picto-dir.gif" ALT="[DIR]" BORDER="0" WIDTH="15" HEIGHT="13"> <b>Up to <a href="/cvs/cvsweb.cgi/">Nevrax</a> / <a href="/cvs/cvsweb.cgi/code/">code</a> / <a href="/cvs/cvsweb.cgi/code/nelns/">nelns</a> / <a href="/cvs/cvsweb.cgi/code/nelns/admin_service/">admin_service</a></b></td></tr></table><HR noshade><table width="100%"><tr><td bgcolor="#ffffff">File: <a href="/cvs/cvsweb.cgi/">Nevrax</a> / <a href="/cvs/cvsweb.cgi/code/">code</a> / <a href="/cvs/cvsweb.cgi/code/nelns/">nelns</a> / <a href="/cvs/cvsweb.cgi/code/nelns/admin_service/">admin_service</a> / <a href="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cpp">admin_service.cpp</a>&nbsp;(<A HREF="/cvs/cvsweb.cgi/~checkout~/code/nelns/admin_service/admin_service.cpp?rev=1.2" target="cvs_checkout" onClick="window.open('/cvs/cvsweb.cgi/~checkout~/code/nelns/admin_service/admin_service.cpp?rev=1.2','cvs_checkout','resizeable,scrollbars');"><b>download</b></A>)<BR>
+Revision <B>1.2</B>, <i>Thu May 3 13:19:13 2001 UTC</i> (14 months, 3 weeks ago) by <i>lecroart</i>
+<BR>Branch: <b>MAIN</b>
+<BR>Changes since <b>1.1: +2 -6
+ lines</b><PRE>
+BUGFIX: now compile on linux
+</PRE>
+</td></tr></table><HR noshade><PRE>/** \file admin_service.cpp
+ * Admin Service (AS)
+ *
+ * $Id: admin_service.cpp,v 1.2 2001/05/03 13:19:13 lecroart Exp $
+ *
+ */
+
+/* Copyright, 2000 Nevrax Ltd.
+ *
+ * This file is part of NEVRAX D.T.C. SYSTEM.
+ * NEVRAX D.T.C. SYSTEM is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2, or (at your option)
+ * any later version.
+ *
+ * NEVRAX D.T.C. SYSTEM is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with NEVRAX D.T.C. SYSTEM; see the file COPYING. If not, write to the
+ * Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston,
+ * MA 02111-1307, USA.
+ */
+
+#include &lt;string&gt;
+#include &lt;list&gt;
+
+#include &quot;nel/net/service.h&quot;
+#include &quot;nel/misc/debug.h&quot;
+#include &quot;nel/misc/config_file.h&quot;
+
+#include &quot;nel/net/net_manager.h&quot;
+
+
+using namespace std;
+using namespace NLMISC;
+using namespace NLNET;
+
+
+struct CService
+{
+ &nbsp; &nbsp; &nbsp; &nbsp;CService(TSockId s) : AESSockId(s), AESId(NextAESId++) { }
+
+ &nbsp; &nbsp; &nbsp; &nbsp;TSockId &nbsp; &nbsp; &nbsp; &nbsp;AESSockId; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// TSockId of the AES that have this service
+ &nbsp; &nbsp; &nbsp; &nbsp;uint32 &nbsp; &nbsp; &nbsp; &nbsp;AESId; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// TSockId of the AES that have this service
+ &nbsp; &nbsp; &nbsp; &nbsp;uint32 &nbsp; &nbsp; &nbsp; &nbsp;SId; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// uint32 to identify the service
+ &nbsp; &nbsp; &nbsp; &nbsp;string &nbsp; &nbsp; &nbsp; &nbsp;ShortName;
+ &nbsp; &nbsp; &nbsp; &nbsp;string &nbsp; &nbsp; &nbsp; &nbsp;LongName;
+
+private:
+
+ &nbsp; &nbsp; &nbsp; &nbsp;static &nbsp; &nbsp; &nbsp; &nbsp;uint32 NextAESId;
+};
+
+uint32 CService::NextAESId = 0;
+
+list&lt;CService&gt; Services;
+typedef list&lt;CService&gt;::iterator sit;
+
+sit find (TSockId aesid, uint32 sid)
+{
+ &nbsp; &nbsp; &nbsp; &nbsp;sit it;
+ &nbsp; &nbsp; &nbsp; &nbsp;for (it = Services.begin(); it != Services.end(); it++)
+ &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;if ((*it).AESSockId== aesid &amp;&amp; (*it).SId == sid) break;
+ &nbsp; &nbsp; &nbsp; &nbsp;}
+ &nbsp; &nbsp; &nbsp; &nbsp;return it;
+}
+
+sit find (uint32 aesid, uint32 sid)
+{
+ &nbsp; &nbsp; &nbsp; &nbsp;sit it;
+ &nbsp; &nbsp; &nbsp; &nbsp;for (it = Services.begin(); it != Services.end(); it++)
+ &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;if ((*it).AESId == aesid &amp;&amp; (*it).SId == sid) break;
+ &nbsp; &nbsp; &nbsp; &nbsp;}
+ &nbsp; &nbsp; &nbsp; &nbsp;return it;
+}
+
+/*
+NLMISC_COMMAND (start, &quot;start a service&quot;, &quot;&lt;service_name&gt;&quot;)
+{
+ &nbsp; &nbsp; &nbsp; &nbsp;if(args.size() != 1 &amp;&amp; args.size() != 2) return false;
+
+ &nbsp; &nbsp; &nbsp; &nbsp;CMessage msgout (CNetManager::getSIDA(&quot;AES&quot;), &quot;ESC&quot;);
+ &nbsp; &nbsp; &nbsp; &nbsp;msgout.serial (args[1]);
+
+ &nbsp; &nbsp; &nbsp; &nbsp;uint8 background = 0;
+
+ &nbsp; &nbsp; &nbsp; &nbsp;if (args.size() == 2)
+ &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;if (args[1] == &quot;&amp;&quot;)
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;uint8 background = 1;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;else
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;return false;
+ &nbsp; &nbsp; &nbsp; &nbsp;}
+
+ &nbsp; &nbsp; &nbsp; &nbsp;msgout.serial (background);
+ &nbsp; &nbsp; &nbsp; &nbsp;CNetManager::send (&quot;AES&quot;, msgout);
+ &nbsp; &nbsp; &nbsp; &nbsp;return true;
+}
+
+
+CLog logstdout;
+CStdDisplayer dispstdout;
+
+NLMISC_COMMAND (stop, &quot;stop a service&quot;, &quot;&lt;aesid&gt; &lt;sid&gt;&quot;)
+{
+ &nbsp; &nbsp; &nbsp; &nbsp;if(args.size() != 3) return false;
+
+ &nbsp; &nbsp; &nbsp; &nbsp;CMessage msgout (CNetManager::getSIDA(&quot;AES&quot;), &quot;SS&quot;);
+ &nbsp; &nbsp; &nbsp; &nbsp;msgout.serial (args[2]);
+ &nbsp; &nbsp; &nbsp; &nbsp;CNetManager::send (&quot;AES&quot;, msgout);
+}
+*/
+
+////////////////////////////////////////////////////////////////////////////////////////////////////////
+////////////////////////////////////////////////////////////////////////////////////////////////////////
+////////////////// CONNECTION TO THE AES ///////////////////////////////////////////////////////////////
+////////////////////////////////////////////////////////////////////////////////////////////////////////
+////////////////////////////////////////////////////////////////////////////////////////////////////////
+
+
+static void cbExecuteSystemCommandResult (CMessage&amp; msgin, TSockId from, CCallbackNetBase &amp;netbase)
+{
+ &nbsp; &nbsp; &nbsp; &nbsp;vector&lt;string&gt; result;
+ &nbsp; &nbsp; &nbsp; &nbsp;msgin.serialCont (result);
+
+ &nbsp; &nbsp; &nbsp; &nbsp;nlinfo(&quot;command result&quot;);
+ &nbsp; &nbsp; &nbsp; &nbsp;for (uint i = 0; i &lt; result.size(); i++)
+ &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;printf (&quot;%s&quot;, result[i].c_str());
+ &nbsp; &nbsp; &nbsp; &nbsp;}
+ &nbsp; &nbsp; &nbsp; &nbsp;nlinfo(&quot;end of command result&quot;);
+}
+
+static void cbServiceIdentification (CMessage&amp; msgin, TSockId from, CCallbackNetBase &amp;netbase)
+{
+ &nbsp; &nbsp; &nbsp; &nbsp;string ShortName, LongName;
+
+ &nbsp; &nbsp; &nbsp; &nbsp;msgin.serial (ShortName);
+ &nbsp; &nbsp; &nbsp; &nbsp;msgin.serial (LongName);
+
+ &nbsp; &nbsp; &nbsp; &nbsp;nlinfo (&quot;%s %s %s is identified&quot;, from-&gt;asString().c_str(), ShortName.c_str(), LongName.c_str());
+}
+
+static void cbServiceReady (CMessage&amp; msgin, TSockId from, CCallbackNetBase &amp;netbase)
+{
+ &nbsp; &nbsp; &nbsp; &nbsp;string ShortName, LongName;
+
+ &nbsp; &nbsp; &nbsp; &nbsp;msgin.serial (ShortName);
+ &nbsp; &nbsp; &nbsp; &nbsp;msgin.serial (LongName);
+
+ &nbsp; &nbsp; &nbsp; &nbsp;nlinfo (&quot;%s %s %s is ready&quot;, from-&gt;asString().c_str(), ShortName.c_str(), LongName.c_str());
+}
+
+static void cbServiceConnection (CMessage&amp; msgin, TSockId from, CCallbackNetBase &amp;netbase)
+{
+ &nbsp; &nbsp; &nbsp; &nbsp;nlinfo (&quot;%s a service is connected&quot;, from-&gt;asString().c_str());
+}
+
+static void cbServiceDisconnection (CMessage&amp; msgin, TSockId from, CCallbackNetBase &amp;netbase)
+{
+ &nbsp; &nbsp; &nbsp; &nbsp;string ShortName, LongName;
+
+ &nbsp; &nbsp; &nbsp; &nbsp;msgin.serial (ShortName);
+ &nbsp; &nbsp; &nbsp; &nbsp;msgin.serial (LongName);
+
+ &nbsp; &nbsp; &nbsp; &nbsp;nlinfo (&quot;%s %s %s is disconnected&quot;, from-&gt;asString().c_str(), ShortName.c_str(), LongName.c_str());
+}
+
+
+TCallbackItem AESCallbackArray[] =
+{
+ &nbsp; &nbsp; &nbsp; &nbsp;{ &quot;ESCR&quot;, cbExecuteSystemCommandResult },
+
+ &nbsp; &nbsp; &nbsp; &nbsp;{ &quot;SID&quot;, cbServiceIdentification },
+ &nbsp; &nbsp; &nbsp; &nbsp;{ &quot;SR&quot;, cbServiceReady },
+ &nbsp; &nbsp; &nbsp; &nbsp;{ &quot;SC&quot;, cbServiceConnection },
+ &nbsp; &nbsp; &nbsp; &nbsp;{ &quot;SD&quot;, cbServiceDisconnection },
+};
+
+
+////////////////////////////////////////////////////////////////////////////////////////////////////////
+////////////////////////////////////////////////////////////////////////////////////////////////////////
+////////////////// CONNECTION TO THE CLIENT ////////////////////////////////////////////////////////////
+////////////////////////////////////////////////////////////////////////////////////////////////////////
+////////////////////////////////////////////////////////////////////////////////////////////////////////
+
+void clientConnection (const string &amp;serviceName, TSockId from, void *arg)
+{
+ &nbsp; &nbsp; &nbsp; &nbsp;// new client, send him all out info about services
+
+ &nbsp; &nbsp; &nbsp; &nbsp;nlinfo (&quot;client %s is connected&quot;, from-&gt;asString().c_str());
+ &nbsp; &nbsp; &nbsp; &nbsp;
+ &nbsp; &nbsp; &nbsp; &nbsp;CMessage msgout (CNetManager::getSIDA (&quot;AESAS&quot;), &quot;SL&quot;);
+ &nbsp; &nbsp; &nbsp; &nbsp;uint32 size = (uint32)Services.size();
+ &nbsp; &nbsp; &nbsp; &nbsp;msgout.serial (size);
+ &nbsp; &nbsp; &nbsp; &nbsp;for (sit it = Services.begin(); it != Services.end(); it++)
+ &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;msgout.serial ((*it).AESId);
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;msgout.serial ((*it).SId);
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;msgout.serial ((*it).ShortName);
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;msgout.serial ((*it).LongName);
+ &nbsp; &nbsp; &nbsp; &nbsp;}
+ &nbsp; &nbsp; &nbsp; &nbsp;CNetManager::send (&quot;AS&quot;, msgout, from);
+}
+
+TCallbackItem ASCallbackArray[] =
+{
+ &nbsp; &nbsp; &nbsp; &nbsp;{ &quot;&quot;, NULL },
+};
+
+class CAdminService : public IService
+{
+public:
+
+ &nbsp; &nbsp; &nbsp; &nbsp;/// Init the service, load the universal time.
+ &nbsp; &nbsp; &nbsp; &nbsp;void &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;init ()
+ &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;CNetManager::setConnectionCallback (&quot;AS&quot;, clientConnection, NULL);
+
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// connec to the AES
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;CNetManager::addClient (&quot;AES&quot;, &quot;localhost:49996&quot;);
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;CNetManager::addCallbackArray (&quot;AES&quot;, AESCallbackArray, sizeof (AESCallbackArray)/sizeof(AESCallbackArray[0]));
+
+ &nbsp; &nbsp; &nbsp; &nbsp;}
+
+ &nbsp; &nbsp; &nbsp; &nbsp;bool &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;update ()
+ &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;return true;
+ &nbsp; &nbsp; &nbsp; &nbsp;}
+};
+
+
+/// Naming Service
+NLNET_SERVICE_MAIN (CAdminService, &quot;AS&quot;, &quot;admin_service&quot;, 49995, ASCallbackArray);
+</PRE> \ No newline at end of file
diff --git a/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cpp?rev=1.4&content-type=text/x-cvsweb-markup/index.html b/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cpp?rev=1.4&content-type=text/x-cvsweb-markup/index.html
new file mode 100644
index 00000000..0e23cd2d
--- /dev/null
+++ b/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cpp?rev=1.4&content-type=text/x-cvsweb-markup/index.html
@@ -0,0 +1,756 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"><HTML>
+<HEAD><style> A { color:black }</style>
+<!-- hennerik CVSweb $Revision: 1.93 $ -->
+<TITLE>code/nelns/admin_service/admin_service.cpp - view - 1.4</TITLE></HEAD>
+<BODY BGCOLOR="#eeeeee">
+<table width="100%" border=0 cellspacing=0 cellpadding=1 bgcolor="#aaaaaa"><tr valign=bottom><td><a href="admin_service.cpp"><IMG SRC="http://www.nevrax.org/inc/img/picto-up.gif" ALT="[BACK]" BORDER="0" WIDTH="14" HEIGHT="13"></a> <b>Return to <A HREF="admin_service.cpp">admin_service.cpp</A>
+ CVS log</b> <IMG SRC="http://www.nevrax.org/inc/img/picto-news.gif" ALT="[TXT]" BORDER="0" WIDTH="13" HEIGHT="15"></td><td align=right><IMG SRC="http://www.nevrax.org/inc/img/picto-dir.gif" ALT="[DIR]" BORDER="0" WIDTH="15" HEIGHT="13"> <b>Up to <a href="/cvs/cvsweb.cgi/">Nevrax</a> / <a href="/cvs/cvsweb.cgi/code/">code</a> / <a href="/cvs/cvsweb.cgi/code/nelns/">nelns</a> / <a href="/cvs/cvsweb.cgi/code/nelns/admin_service/">admin_service</a></b></td></tr></table><HR noshade><table width="100%"><tr><td bgcolor="#ffffff">File: <a href="/cvs/cvsweb.cgi/">Nevrax</a> / <a href="/cvs/cvsweb.cgi/code/">code</a> / <a href="/cvs/cvsweb.cgi/code/nelns/">nelns</a> / <a href="/cvs/cvsweb.cgi/code/nelns/admin_service/">admin_service</a> / <a href="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cpp">admin_service.cpp</a>&nbsp;(<A HREF="/cvs/cvsweb.cgi/~checkout~/code/nelns/admin_service/admin_service.cpp?rev=1.4" target="cvs_checkout" onClick="window.open('/cvs/cvsweb.cgi/~checkout~/code/nelns/admin_service/admin_service.cpp?rev=1.4','cvs_checkout','resizeable,scrollbars');"><b>download</b></A>)<BR>
+Revision <B>1.4</B>, <i>Fri May 18 16:51:33 2001 UTC</i> (14 months ago) by <i>lecroart</i>
+<BR>Branch: <b>MAIN</b>
+<BR>Changes since <b>1.3: +405 -101
+ lines</b><PRE>
+ADDED: work in progress. added gtk
+</PRE>
+</td></tr></table><HR noshade><PRE>/** \file admin_service.cpp
+ * Admin Service (AS)
+ *
+ * $Id: admin_service.cpp,v 1.4 2001/05/18 16:51:33 lecroart Exp $
+ *
+ */
+
+/* Copyright, 2000 Nevrax Ltd.
+ *
+ * This file is part of NEVRAX NeL Network Services.
+ * NEVRAX NeL Network Services is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2, or (at your option)
+ * any later version.
+ *
+ * NEVRAX NeL Network Services is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with NEVRAX NeL Network Services; see the file COPYING. If not, write to the
+ * Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston,
+ * MA 02111-1307, USA.
+ */
+
+#include &lt;string&gt;
+#include &lt;list&gt;
+
+#include &quot;nel/net/service.h&quot;
+#include &quot;nel/misc/debug.h&quot;
+#include &quot;nel/misc/config_file.h&quot;
+
+#include &quot;nel/net/net_manager.h&quot;
+
+using namespace std;
+using namespace NLMISC;
+using namespace NLNET;
+
+////////////////////////
+
+
+struct CService
+{
+ &nbsp; &nbsp; &nbsp; &nbsp;CService () : Id(0xFFFFFFFF), Ready(false), Connected(false), InConfig(false) { }
+
+ &nbsp; &nbsp; &nbsp; &nbsp;uint32 &nbsp; &nbsp; &nbsp; &nbsp;Id; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;/// uint32 to identify the service
+ &nbsp; &nbsp; &nbsp; &nbsp;string &nbsp; &nbsp; &nbsp; &nbsp;ServiceAlias; &nbsp; &nbsp; &nbsp; &nbsp;/// alias of the service used in the AES and AS to find him (unique per AES)
+ &nbsp; &nbsp; &nbsp; &nbsp;string &nbsp; &nbsp; &nbsp; &nbsp;ShortName; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;/// name of the service in short format (&quot;NS&quot; for example)
+ &nbsp; &nbsp; &nbsp; &nbsp;string &nbsp; &nbsp; &nbsp; &nbsp;LongName; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;/// name of the service in long format (&quot;naming_service&quot;)
+ &nbsp; &nbsp; &nbsp; &nbsp;bool &nbsp; &nbsp; &nbsp; &nbsp;Ready; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;/// true if the service is ready
+ &nbsp; &nbsp; &nbsp; &nbsp;bool &nbsp; &nbsp; &nbsp; &nbsp;Connected; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;/// true if the service is connected to the AES
+ &nbsp; &nbsp; &nbsp; &nbsp;bool &nbsp; &nbsp; &nbsp; &nbsp;InConfig; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;/// true if the service is in the configuration
+};
+
+typedef list&lt;CService&gt; TServices;
+typedef list&lt;CService&gt;::iterator SIT;
+
+struct CAdminExecutorService
+{
+ &nbsp; &nbsp; &nbsp; &nbsp;CAdminExecutorService () : Id(NextId++), SockId(NULL), Connected(false) { }
+
+ &nbsp; &nbsp; &nbsp; &nbsp;TSockId &nbsp; &nbsp; &nbsp; &nbsp;SockId; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;/// connection to the AES
+ &nbsp; &nbsp; &nbsp; &nbsp;uint32 &nbsp; &nbsp; &nbsp; &nbsp;Id; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;/// uint32 to identify the AES where the service is running
+
+ &nbsp; &nbsp; &nbsp; &nbsp;string &nbsp; &nbsp; &nbsp; &nbsp;ServerAlias; &nbsp; &nbsp; &nbsp; &nbsp;/// name of the layer4 connection, used to send message to this AES
+ &nbsp; &nbsp; &nbsp; &nbsp;string &nbsp; &nbsp; &nbsp; &nbsp;ServerAddr; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;/// address in a string format (only the ip)
+ &nbsp; &nbsp; &nbsp; &nbsp;bool &nbsp; &nbsp; &nbsp; &nbsp;Connected; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;/// true if the AES is connected
+
+ &nbsp; &nbsp; &nbsp; &nbsp;TServices Services;
+
+ &nbsp; &nbsp; &nbsp; &nbsp;vector&lt;string&gt; &nbsp; &nbsp; &nbsp; &nbsp;ServiceAliasList;
+
+ &nbsp; &nbsp; &nbsp; &nbsp;SIT findService (uint32 sid, bool asrt = true)
+ &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;SIT sit;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;for (sit = Services.begin(); sit != Services.end(); sit++)
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;if ((*sit).Id == sid)
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;break;
+
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;if (asrt)
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;nlassert (sit != Services.end());
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;return sit;
+ &nbsp; &nbsp; &nbsp; &nbsp;}
+
+private:
+ &nbsp; &nbsp; &nbsp; &nbsp;static uint32 NextId;
+};
+
+uint32 CAdminExecutorService::NextId = 1;
+
+typedef list&lt;CAdminExecutorService&gt; TAdminExecutorServices;
+typedef list&lt;CAdminExecutorService&gt;::iterator AESIT;
+
+TAdminExecutorServices AdminExecutorServices;
+
+/////////////////
+
+AESIT findAdminExecutorService (uint32 aesid, bool asrt = true)
+{
+ &nbsp; &nbsp; &nbsp; &nbsp;AESIT aesit;
+ &nbsp; &nbsp; &nbsp; &nbsp;for (aesit = AdminExecutorServices.begin(); aesit != AdminExecutorServices.end(); aesit++)
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;if ((*aesit).Id == aesid)
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;break;
+
+ &nbsp; &nbsp; &nbsp; &nbsp;if (asrt)
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;nlassert (aesit != AdminExecutorServices.end());
+ &nbsp; &nbsp; &nbsp; &nbsp;return aesit;
+}
+
+AESIT findAdminExecutorService (string ServerAlias, bool asrt = true)
+{
+ &nbsp; &nbsp; &nbsp; &nbsp;AESIT aesit;
+ &nbsp; &nbsp; &nbsp; &nbsp;for (aesit = AdminExecutorServices.begin(); aesit != AdminExecutorServices.end(); aesit++)
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;if ((*aesit).ServerAlias == ServerAlias)
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;break;
+
+ &nbsp; &nbsp; &nbsp; &nbsp;if (asrt)
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;nlassert (aesit != AdminExecutorServices.end());
+ &nbsp; &nbsp; &nbsp; &nbsp;return aesit;
+}
+
+void displayServices ()
+{
+ &nbsp; &nbsp; &nbsp; &nbsp;for (AESIT aesit = AdminExecutorServices.begin(); aesit != AdminExecutorServices.end(); aesit++)
+ &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;for (SIT sit = (*aesit).Services.begin(); sit != (*aesit).Services.end(); sit++)
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;nlinfo (&quot;&gt; %s %s %s %d %d&quot;, (*aesit).SockId-&gt;asString().c_str(), (*sit).ShortName.c_str(), (*sit).LongName.c_str(), (*aesit).Id, (*sit).Id);
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}
+ &nbsp; &nbsp; &nbsp; &nbsp;}
+}
+
+
+////////////////////////////////////////////////////////////////////////////////////////////////////////
+////////////////////////////////////////////////////////////////////////////////////////////////////////
+/////////////////// SCRIPT MANAGER /////////////////////////////////////////////////////////////////////
+////////////////////////////////////////////////////////////////////////////////////////////////////////
+////////////////////////////////////////////////////////////////////////////////////////////////////////
+
+bool ScriptRunning = false;
+string ScriptName;
+uint32 ScriptPos;
+
+void doNextScriptStep ()
+{
+ &nbsp; &nbsp; &nbsp; &nbsp;nlassert (ScriptRunning);
+
+
+ &nbsp; &nbsp; &nbsp; &nbsp;// get the script
+
+ &nbsp; &nbsp; &nbsp; &nbsp;try
+ &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;CConfigFile::CVar &amp;script = IService::ConfigFile.getVar(ScriptName);
+
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// check the position
+
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;if (ScriptPos*2 &gt;= (uint32)script.size())
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;ScriptRunning = false;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;nlinfo(&quot;end of the script&quot;);
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// todo send that the script is finish to the admin
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;return;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}
+
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// get the script line
+
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;string serverAlias;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;string serviceAlias;
+
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;try
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;serverAlias = script.asString (ScriptPos*2);
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;serviceAlias = script.asString (ScriptPos*2+1);
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;catch(EBadSize &amp;)
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;nlwarning (&quot;script '%s' not contains a good number of entries (must be a multiple of 2)&quot;, ScriptName.c_str());
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;ScriptRunning = false;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;return;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}
+
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;AESIT aesit = findAdminExecutorService (serverAlias, false);
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;if (aesit == AdminExecutorServices.end())
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;ScriptRunning = false;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;nlwarning(&quot;don't find the server&quot;);
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;return;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}
+
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// send the resquest to the AES
+
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;CMessage msgout (CNetManager::getSIDA((*aesit).ServerAlias), &quot;STARTS&quot;);
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;msgout.serial (serviceAlias);
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;CNetManager::send ((*aesit).ServerAlias, msgout);
+
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;ScriptPos++;
+ &nbsp; &nbsp; &nbsp; &nbsp;}
+ &nbsp; &nbsp; &nbsp; &nbsp;catch(EUnknownVar&amp;)
+ &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;nlwarning (&quot;script '%s' not found&quot;, ScriptName.c_str());
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;ScriptRunning = false;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;return;
+ &nbsp; &nbsp; &nbsp; &nbsp;}
+}
+
+void initScript(string scriptName)
+{
+ &nbsp; &nbsp; &nbsp; &nbsp;if (ScriptRunning)
+ &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;nlwarning(&quot;already running a script, reset it&quot;);
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;ScriptRunning = false;
+ &nbsp; &nbsp; &nbsp; &nbsp;}
+
+ &nbsp; &nbsp; &nbsp; &nbsp;try
+ &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;CConfigFile::CVar &amp;script = IService::ConfigFile.getVar(scriptName);
+
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;for (sint i = 0 ; i &lt; script.size (); i+=2)
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;string serverAlias = script.asString(i);
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;AESIT aesit = findAdminExecutorService (serverAlias, false);
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;if (aesit == AdminExecutorServices.end())
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;nlwarning(&quot;aes not running, can't run the script&quot;);
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;return;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}
+ &nbsp; &nbsp; &nbsp; &nbsp;}
+ &nbsp; &nbsp; &nbsp; &nbsp;catch(EConfigFile &amp;)
+ &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;nlwarning (&quot;bad config file&quot;);
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;return;
+ &nbsp; &nbsp; &nbsp; &nbsp;}
+
+ &nbsp; &nbsp; &nbsp; &nbsp;ScriptName = scriptName;
+ &nbsp; &nbsp; &nbsp; &nbsp;ScriptPos = 0;
+ &nbsp; &nbsp; &nbsp; &nbsp;ScriptRunning = true;
+
+ &nbsp; &nbsp; &nbsp; &nbsp;doNextScriptStep();
+}
+
+
+////////////////////////////////////////////////////////////////////////////////////////////////////////
+////////////////////////////////////////////////////////////////////////////////////////////////////////
+////////////////// CONNECTION TO THE AES ///////////////////////////////////////////////////////////////
+////////////////////////////////////////////////////////////////////////////////////////////////////////
+////////////////////////////////////////////////////////////////////////////////////////////////////////
+
+
+static void cbExecuteSystemCommandResult (CMessage&amp; msgin, TSockId from, CCallbackNetBase &amp;netbase)
+{
+ &nbsp; &nbsp; &nbsp; &nbsp;vector&lt;string&gt; result;
+ &nbsp; &nbsp; &nbsp; &nbsp;msgin.serialCont (result);
+
+ &nbsp; &nbsp; &nbsp; &nbsp;nlinfo(&quot;command result&quot;);
+ &nbsp; &nbsp; &nbsp; &nbsp;for (uint i = 0; i &lt; result.size(); i++)
+ &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;printf (&quot;%s&quot;, result[i].c_str());
+ &nbsp; &nbsp; &nbsp; &nbsp;}
+ &nbsp; &nbsp; &nbsp; &nbsp;nlinfo(&quot;end of command result&quot;);
+}
+
+static void cbServiceList (CMessage&amp; msgin, TSockId from, CCallbackNetBase &amp;netbase)
+{
+/* &nbsp; &nbsp; &nbsp;// get the service list from the admin exec and send the list to all admin client
+ &nbsp; &nbsp; &nbsp; &nbsp;CAdminExecutorService *aes = (CAdminExecutorService*) from-&gt;appId();
+ &nbsp; &nbsp; &nbsp; &nbsp;aes-&gt;Services.clear();
+
+ &nbsp; &nbsp; &nbsp; &nbsp;CMessage msgout (CNetManager::getSIDA (&quot;AS&quot;), &quot;SL&quot;);
+
+ &nbsp; &nbsp; &nbsp; &nbsp;uint32 nbaes = 1;
+ &nbsp; &nbsp; &nbsp; &nbsp;msgout.serial (nbaes);
+ &nbsp; &nbsp; &nbsp; &nbsp;msgout.serial (aes-&gt;Id);
+
+ &nbsp; &nbsp; &nbsp; &nbsp;uint32 nbs;
+ &nbsp; &nbsp; &nbsp; &nbsp;msgin.serial (nbs);
+ &nbsp; &nbsp; &nbsp; &nbsp;msgout.serial (nbs);
+
+ &nbsp; &nbsp; &nbsp; &nbsp;for (uint32 i = 0; i &lt; nbs; i++)
+ &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;uint32 sid;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;msgin.serial(sid);
+
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;aes-&gt;Services.push_back (CService(sid));
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;CService *s = &amp;(aes-&gt;Services.back());
+
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;msgin.serial(s-&gt;ShortName, s-&gt;LongName, s-&gt;Ready);
+
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;msgout.serial (s-&gt;Id, s-&gt;ShortName, s-&gt;LongName, s-&gt;Ready);
+ &nbsp; &nbsp; &nbsp; &nbsp;}
+ &nbsp; &nbsp; &nbsp; &nbsp;CNetManager::send (&quot;AS&quot;, msgout, 0);
+ &nbsp; &nbsp; &nbsp; &nbsp;
+ &nbsp; &nbsp; &nbsp; &nbsp;displayServices ();
+*/}
+
+static void cbServiceAliasList (CMessage&amp; msgin, TSockId from, CCallbackNetBase &amp;netbase)
+{
+ &nbsp; &nbsp; &nbsp; &nbsp;// get the service list from the admin exec and send the list to all admin client
+ &nbsp; &nbsp; &nbsp; &nbsp;CAdminExecutorService *aes = (CAdminExecutorService*) from-&gt;appId();
+
+ &nbsp; &nbsp; &nbsp; &nbsp;aes-&gt;ServiceAliasList.clear ();
+ &nbsp; &nbsp; &nbsp; &nbsp;msgin.serialCont (aes-&gt;ServiceAliasList);
+
+ &nbsp; &nbsp; &nbsp; &nbsp;CMessage msgout (CNetManager::getSIDA (&quot;AS&quot;), &quot;SAL&quot;);
+ &nbsp; &nbsp; &nbsp; &nbsp;msgout.serial (aes-&gt;Id);
+ &nbsp; &nbsp; &nbsp; &nbsp;msgout.serialCont (aes-&gt;ServiceAliasList);
+ &nbsp; &nbsp; &nbsp; &nbsp;CNetManager::send (&quot;AS&quot;, msgout, 0);
+ &nbsp; &nbsp; &nbsp; &nbsp;
+ &nbsp; &nbsp; &nbsp; &nbsp;nlinfo(&quot;new service alias list&quot;);
+}
+
+
+static void cbServiceIdentification (CMessage&amp; msgin, TSockId from, CCallbackNetBase &amp;netbase)
+{
+ &nbsp; &nbsp; &nbsp; &nbsp;CAdminExecutorService *aes = (CAdminExecutorService*) from-&gt;appId();
+
+ &nbsp; &nbsp; &nbsp; &nbsp;uint32 sid;
+ &nbsp; &nbsp; &nbsp; &nbsp;msgin.serial (sid);
+
+ &nbsp; &nbsp; &nbsp; &nbsp;SIT sit = aes-&gt;findService(sid);
+ &nbsp; &nbsp; &nbsp; &nbsp;msgin.serial ((*sit).ShortName, (*sit).LongName);
+
+ &nbsp; &nbsp; &nbsp; &nbsp;nlinfo (&quot;*:%d:%d is identified to be '%s' '%s'&quot;, aes-&gt;Id, sid, (*sit).ShortName.c_str(), (*sit).LongName.c_str());
+
+ &nbsp; &nbsp; &nbsp; &nbsp;// broadcast the message to all admin client
+ &nbsp; &nbsp; &nbsp; &nbsp;CMessage msgout (CNetManager::getSIDA (&quot;AS&quot;), &quot;SID&quot;);
+ &nbsp; &nbsp; &nbsp; &nbsp;msgout.serial (aes-&gt;Id, sid, (*sit).ShortName, (*sit).LongName);
+ &nbsp; &nbsp; &nbsp; &nbsp;CNetManager::send (&quot;AS&quot;, msgout, 0);
+}
+
+static void cbServiceReady (CMessage&amp; msgin, TSockId from, CCallbackNetBase &amp;netbase)
+{
+ &nbsp; &nbsp; &nbsp; &nbsp;CAdminExecutorService *aes = (CAdminExecutorService*) from-&gt;appId();
+
+ &nbsp; &nbsp; &nbsp; &nbsp;uint32 sid;
+ &nbsp; &nbsp; &nbsp; &nbsp;msgin.serial (sid);
+
+ &nbsp; &nbsp; &nbsp; &nbsp;SIT sit = aes-&gt;findService(sid);
+ &nbsp; &nbsp; &nbsp; &nbsp;(*sit).Ready = true;
+
+ &nbsp; &nbsp; &nbsp; &nbsp;nlinfo (&quot;*:%d:%d is ready&quot;, aes-&gt;Id, sid);
+
+ &nbsp; &nbsp; &nbsp; &nbsp;// broadcast the message to all admin client
+ &nbsp; &nbsp; &nbsp; &nbsp;CMessage msgout (CNetManager::getSIDA (&quot;AS&quot;), &quot;SR&quot;);
+ &nbsp; &nbsp; &nbsp; &nbsp;msgout.serial (aes-&gt;Id, sid);
+ &nbsp; &nbsp; &nbsp; &nbsp;CNetManager::send (&quot;AS&quot;, msgout, 0);
+
+ &nbsp; &nbsp; &nbsp; &nbsp;// if we are in a script execution, continue
+ &nbsp; &nbsp; &nbsp; &nbsp;if (ScriptRunning)
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;doNextScriptStep();
+}
+
+static void cbServiceConnection (CMessage&amp; msgin, TSockId from, CCallbackNetBase &amp;netbase)
+{
+/* &nbsp; &nbsp; &nbsp;CAdminExecutorService *aes = (CAdminExecutorService*) from-&gt;appId();
+
+ &nbsp; &nbsp; &nbsp; &nbsp;uint32 sid;
+ &nbsp; &nbsp; &nbsp; &nbsp;msgin.serial (sid);
+
+ &nbsp; &nbsp; &nbsp; &nbsp;nlinfo (&quot;*:%d:%d connected&quot;, aes-&gt;Id, sid);
+
+ &nbsp; &nbsp; &nbsp; &nbsp;aes-&gt;Services.push_back (CService(sid));
+
+ &nbsp; &nbsp; &nbsp; &nbsp;// broadcast the message to all admin client
+ &nbsp; &nbsp; &nbsp; &nbsp;CMessage msgout (CNetManager::getSIDA (&quot;AS&quot;), &quot;SC&quot;);
+ &nbsp; &nbsp; &nbsp; &nbsp;msgout.serial (aes-&gt;Id, sid);
+ &nbsp; &nbsp; &nbsp; &nbsp;CNetManager::send (&quot;AS&quot;, msgout, 0);
+*/}
+
+static void cbServiceDisconnection (CMessage&amp; msgin, TSockId from, CCallbackNetBase &amp;netbase)
+{
+ &nbsp; &nbsp; &nbsp; &nbsp;CAdminExecutorService *aes = (CAdminExecutorService*) from-&gt;appId();
+
+ &nbsp; &nbsp; &nbsp; &nbsp;uint32 sid;
+ &nbsp; &nbsp; &nbsp; &nbsp;msgin.serial (sid);
+
+ &nbsp; &nbsp; &nbsp; &nbsp;nlinfo (&quot;*:%d:%d disconnected&quot;, aes-&gt;Id, sid);
+
+ &nbsp; &nbsp; &nbsp; &nbsp;SIT sit = aes-&gt;findService(sid);
+
+ &nbsp; &nbsp; &nbsp; &nbsp;// broadcast the message to all admin client
+ &nbsp; &nbsp; &nbsp; &nbsp;CMessage msgout (CNetManager::getSIDA (&quot;AS&quot;), &quot;SD&quot;);
+ &nbsp; &nbsp; &nbsp; &nbsp;msgout.serial (aes-&gt;Id, (*sit).Id);
+ &nbsp; &nbsp; &nbsp; &nbsp;CNetManager::send (&quot;AS&quot;, msgout, 0);
+
+ &nbsp; &nbsp; &nbsp; &nbsp;aes-&gt;Services.erase (sit);
+}
+
+// i'm connected to a new admin executor service
+void cbAESConnection (const string &amp;serviceName, TSockId from, void *arg)
+{
+ &nbsp; &nbsp; &nbsp; &nbsp;AESIT aesit = findAdminExecutorService (serviceName); &nbsp; &nbsp; &nbsp; &nbsp;
+ &nbsp; &nbsp; &nbsp; &nbsp;CAdminExecutorService *aes = &amp;(*aesit);
+ &nbsp; &nbsp; &nbsp; &nbsp;
+ &nbsp; &nbsp; &nbsp; &nbsp;// set the appid to find the aes in O(1)
+ &nbsp; &nbsp; &nbsp; &nbsp;from-&gt;setAppId ((uint64)aes);
+
+ &nbsp; &nbsp; &nbsp; &nbsp;aes-&gt;Connected = true;
+ &nbsp; &nbsp; &nbsp; &nbsp;nlinfo (&quot;*:%d:* connected&quot;, aes-&gt;Id);
+/* &nbsp; &nbsp; &nbsp;
+ &nbsp; &nbsp; &nbsp; &nbsp;// broadcast the message that an admin exec is connected to all admin client
+ &nbsp; &nbsp; &nbsp; &nbsp;CMessage msgout (CNetManager::getSIDA (&quot;AS&quot;), &quot;AESC&quot;);
+ &nbsp; &nbsp; &nbsp; &nbsp;msgout.serial (aes-&gt;Id);
+ &nbsp; &nbsp; &nbsp; &nbsp;CNetManager::send (&quot;AS&quot;, msgout, 0);
+*/
+
+ &nbsp; &nbsp; &nbsp; &nbsp;// broadcast the new state of this AES
+ &nbsp; &nbsp; &nbsp; &nbsp;CMessage msgout (CNetManager::getSIDA (&quot;AS&quot;), &quot;AES_LIST&quot;);
+ &nbsp; &nbsp; &nbsp; &nbsp;uint32 nbaes = 1;
+ &nbsp; &nbsp; &nbsp; &nbsp;msgout.serial (nbaes);
+ &nbsp; &nbsp; &nbsp; &nbsp;msgout.serial (aes-&gt;Id, aes-&gt;ServerAlias, aes-&gt;ServerAddr, aes-&gt;Connected);
+ &nbsp; &nbsp; &nbsp; &nbsp;CNetManager::send (&quot;AS&quot;, msgout, 0);
+}
+
+// i'm disconnected to an admin executor service
+void cbAESDisconnection (const string &amp;serviceName, TSockId from, void *arg)
+{
+ &nbsp; &nbsp; &nbsp; &nbsp;// get the aes with the appid
+ &nbsp; &nbsp; &nbsp; &nbsp;CAdminExecutorService *aes = (CAdminExecutorService*) from-&gt;appId();
+
+ &nbsp; &nbsp; &nbsp; &nbsp;aes-&gt;Connected = false;
+ &nbsp; &nbsp; &nbsp; &nbsp;nlinfo (&quot;*:%d:* disconnected&quot;, aes-&gt;Id);
+/* &nbsp; &nbsp; &nbsp;
+ &nbsp; &nbsp; &nbsp; &nbsp;// broadcast the message to all admin client that an admin exec is disconnected
+ &nbsp; &nbsp; &nbsp; &nbsp;CMessage msgout (CNetManager::getSIDA (&quot;AS&quot;), &quot;AESD&quot;);
+ &nbsp; &nbsp; &nbsp; &nbsp;msgout.serial (aes-&gt;Id);
+ &nbsp; &nbsp; &nbsp; &nbsp;CNetManager::send (&quot;AS&quot;, msgout, 0);
+*/
+
+ &nbsp; &nbsp; &nbsp; &nbsp;// broadcast the new state of this AES
+ &nbsp; &nbsp; &nbsp; &nbsp;CMessage msgout (CNetManager::getSIDA (&quot;AS&quot;), &quot;AES_LIST&quot;);
+ &nbsp; &nbsp; &nbsp; &nbsp;uint32 nbaes = 1;
+ &nbsp; &nbsp; &nbsp; &nbsp;msgout.serial (nbaes);
+ &nbsp; &nbsp; &nbsp; &nbsp;msgout.serial (aes-&gt;Id, aes-&gt;ServerAlias, aes-&gt;ServerAddr, aes-&gt;Connected);
+ &nbsp; &nbsp; &nbsp; &nbsp;CNetManager::send (&quot;AS&quot;, msgout, 0);
+}
+
+static void cbLog (CMessage&amp; msgin, TSockId from, CCallbackNetBase &amp;netbase)
+{
+ &nbsp; &nbsp; &nbsp; &nbsp;// received an answer for a command, give it to all admin client
+
+ &nbsp; &nbsp; &nbsp; &nbsp;// broadcast the message to the admin service
+ &nbsp; &nbsp; &nbsp; &nbsp;CMessage msgout (CNetManager::getSIDA (&quot;AS&quot;), &quot;LOG&quot;);
+ &nbsp; &nbsp; &nbsp; &nbsp;string log;
+ &nbsp; &nbsp; &nbsp; &nbsp;msgin.serial (log);
+ &nbsp; &nbsp; &nbsp; &nbsp;msgout.serial (log);
+ &nbsp; &nbsp; &nbsp; &nbsp;CNetManager::send (&quot;AS&quot;, msgout, 0);
+}
+
+
+TCallbackItem AESCallbackArray[] =
+{
+ &nbsp; &nbsp; &nbsp; &nbsp;{ &quot;ESCR&quot;, cbExecuteSystemCommandResult },
+
+ &nbsp; &nbsp; &nbsp; &nbsp;{ &quot;SL&quot;, cbServiceList },
+ &nbsp; &nbsp; &nbsp; &nbsp;{ &quot;SID&quot;, cbServiceIdentification },
+ &nbsp; &nbsp; &nbsp; &nbsp;{ &quot;SR&quot;, cbServiceReady },
+ &nbsp; &nbsp; &nbsp; &nbsp;{ &quot;SC&quot;, cbServiceConnection },
+ &nbsp; &nbsp; &nbsp; &nbsp;{ &quot;SD&quot;, cbServiceDisconnection },
+
+ &nbsp; &nbsp; &nbsp; &nbsp;{ &quot;SAL&quot;, cbServiceAliasList },
+
+ &nbsp; &nbsp; &nbsp; &nbsp;{ &quot;LOG&quot;, cbLog },
+};
+
+
+////////////////////////////////////////////////////////////////////////////////////////////////////////
+////////////////////////////////////////////////////////////////////////////////////////////////////////
+////////////////// CONNECTION TO THE CLIENT ////////////////////////////////////////////////////////////
+////////////////////////////////////////////////////////////////////////////////////////////////////////
+////////////////////////////////////////////////////////////////////////////////////////////////////////
+
+void errorMessage(string message, TSockId from, CCallbackNetBase &amp;netbase)
+{
+ &nbsp; &nbsp; &nbsp; &nbsp;CMessage msgout (netbase.getSIDA (), &quot;ERR&quot;);
+ &nbsp; &nbsp; &nbsp; &nbsp;msgout.serial (message);
+ &nbsp; &nbsp; &nbsp; &nbsp;netbase.send (msgout, from);
+}
+
+//
+// A new admin client is connected.
+//
+void clientConnection (const string &amp;serviceName, TSockId from, void *arg)
+{
+ &nbsp; &nbsp; &nbsp; &nbsp;// new client, send him all out info about services
+
+ &nbsp; &nbsp; &nbsp; &nbsp;nlinfo (&quot;client %s is connected&quot;, from-&gt;asString().c_str());
+
+ &nbsp; &nbsp; &nbsp; &nbsp;//
+ &nbsp; &nbsp; &nbsp; &nbsp;// send the list of all the aes
+ &nbsp; &nbsp; &nbsp; &nbsp;//
+
+ &nbsp; &nbsp; &nbsp; &nbsp;CMessage msgout2 (CNetManager::getSIDA (&quot;AS&quot;), &quot;AES_LIST&quot;);
+ &nbsp; &nbsp; &nbsp; &nbsp;AESIT aesit;
+ &nbsp; &nbsp; &nbsp; &nbsp;uint32 nbaes = (uint32)AdminExecutorServices.size();
+ &nbsp; &nbsp; &nbsp; &nbsp;msgout2.serial (nbaes);
+ &nbsp; &nbsp; &nbsp; &nbsp;for (aesit = AdminExecutorServices.begin(); aesit != AdminExecutorServices.end(); aesit++)
+ &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// send info about the AES
+
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;msgout2.serial ((*aesit).Id, (*aesit).ServerAlias, (*aesit).ServerAddr, (*aesit).Connected);
+ &nbsp; &nbsp; &nbsp; &nbsp;}
+ &nbsp; &nbsp; &nbsp; &nbsp;CNetManager::send (&quot;AS&quot;, msgout2, from);
+
+ &nbsp; &nbsp; &nbsp; &nbsp;//
+ &nbsp; &nbsp; &nbsp; &nbsp;// send the list of all services
+ &nbsp; &nbsp; &nbsp; &nbsp;//
+
+ &nbsp; &nbsp; &nbsp; &nbsp;CMessage msgout (CNetManager::getSIDA (&quot;AS&quot;), &quot;SERVICE_LIST&quot;);
+ &nbsp; &nbsp; &nbsp; &nbsp;nbaes = (uint32)AdminExecutorServices.size();
+ &nbsp; &nbsp; &nbsp; &nbsp;msgout.serial (nbaes);
+ &nbsp; &nbsp; &nbsp; &nbsp;for (aesit = AdminExecutorServices.begin(); aesit != AdminExecutorServices.end(); aesit++)
+ &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;msgout.serial ((*aesit).Id);
+
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;uint32 nbs = (uint32)(*aesit).Services.size();
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;msgout.serial (nbs);
+
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;for (SIT sit = (*aesit).Services.begin(); sit != (*aesit).Services.end(); sit++)
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// send info about services of the AES
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;msgout.serial ((*sit).Id, (*sit).ServiceAlias, (*sit).ShortName, (*sit).LongName);
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;msgout.serial ((*sit).Ready, (*sit).Connected, (*sit).InConfig);
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}
+ &nbsp; &nbsp; &nbsp; &nbsp;}
+ &nbsp; &nbsp; &nbsp; &nbsp;CNetManager::send (&quot;AS&quot;, msgout, from);
+
+ &nbsp; &nbsp; &nbsp; &nbsp;//
+ &nbsp; &nbsp; &nbsp; &nbsp;// send service alias list
+ &nbsp; &nbsp; &nbsp; &nbsp;//
+
+ &nbsp; &nbsp; &nbsp; &nbsp;for (aesit = AdminExecutorServices.begin(); aesit != AdminExecutorServices.end(); aesit++)
+ &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;CMessage msgout2 (CNetManager::getSIDA (&quot;AS&quot;), &quot;SAL&quot;);
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;msgout2.serial ((*aesit).Id);
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;msgout2.serialCont ((*aesit).ServiceAliasList);
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;CNetManager::send (&quot;AS&quot;, msgout2, from);
+ &nbsp; &nbsp; &nbsp; &nbsp;}
+}
+
+
+static void cbExecuteScript (CMessage&amp; msgin, TSockId from, CCallbackNetBase &amp;netbase)
+{
+ &nbsp; &nbsp; &nbsp; &nbsp;string script;
+ &nbsp; &nbsp; &nbsp; &nbsp;msgin.serial (script);
+ &nbsp; &nbsp; &nbsp; &nbsp;initScript (script);
+}
+
+
+static void cbExecuteSystemCommand (CMessage&amp; msgin, TSockId from, CCallbackNetBase &amp;netbase)
+{
+ &nbsp; &nbsp; &nbsp; &nbsp;string command;
+ &nbsp; &nbsp; &nbsp; &nbsp;uint32 aesid;
+ &nbsp; &nbsp; &nbsp; &nbsp;msgin.serial (aesid);
+ &nbsp; &nbsp; &nbsp; &nbsp;msgin.serial (command);
+
+ &nbsp; &nbsp; &nbsp; &nbsp;AESIT aesit = findAdminExecutorService (aesid, false);
+ &nbsp; &nbsp; &nbsp; &nbsp;if (aesit == AdminExecutorServices.end())
+ &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// don't find the aes, send an error message
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;errorMessage (&quot;couldn't execute command, as didn't find the aes&quot;, from, netbase);
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;return;
+ &nbsp; &nbsp; &nbsp; &nbsp;}
+
+ &nbsp; &nbsp; &nbsp; &nbsp;// send the resquest to the AES
+
+ &nbsp; &nbsp; &nbsp; &nbsp;CMessage msgout (CNetManager::getSIDA((*aesit).ServerAlias), &quot;SYS&quot;);
+ &nbsp; &nbsp; &nbsp; &nbsp;msgout.serial (command);
+ &nbsp; &nbsp; &nbsp; &nbsp;CNetManager::send ((*aesit).ServerAlias, msgout);
+}
+
+
+static void cbStartService (CMessage&amp; msgin, TSockId from, CCallbackNetBase &amp;netbase)
+{
+ &nbsp; &nbsp; &nbsp; &nbsp;string serviceName;
+ &nbsp; &nbsp; &nbsp; &nbsp;uint32 aesid;
+ &nbsp; &nbsp; &nbsp; &nbsp;msgin.serial (aesid);
+ &nbsp; &nbsp; &nbsp; &nbsp;msgin.serial (serviceName);
+
+ &nbsp; &nbsp; &nbsp; &nbsp;AESIT aesit = findAdminExecutorService (aesid, false);
+ &nbsp; &nbsp; &nbsp; &nbsp;if (aesit == AdminExecutorServices.end())
+ &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// don't find the aes, send an error message
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;errorMessage (&quot;couldn't start service, as didn't find the aes&quot;, from, netbase);
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;return;
+ &nbsp; &nbsp; &nbsp; &nbsp;}
+
+ &nbsp; &nbsp; &nbsp; &nbsp;// send the resquest to the AES
+
+ &nbsp; &nbsp; &nbsp; &nbsp;CMessage msgout (CNetManager::getSIDA((*aesit).ServerAlias), &quot;STARTS&quot;);
+ &nbsp; &nbsp; &nbsp; &nbsp;msgout.serial (serviceName);
+ &nbsp; &nbsp; &nbsp; &nbsp;CNetManager::send ((*aesit).ServerAlias, msgout);
+}
+
+static void cbStopService (CMessage&amp; msgin, TSockId from, CCallbackNetBase &amp;netbase)
+{
+ &nbsp; &nbsp; &nbsp; &nbsp;uint32 aesid, sid;
+ &nbsp; &nbsp; &nbsp; &nbsp;msgin.serial (aesid);
+ &nbsp; &nbsp; &nbsp; &nbsp;msgin.serial (sid);
+
+ &nbsp; &nbsp; &nbsp; &nbsp;AESIT aesit = findAdminExecutorService (aesid, false);
+ &nbsp; &nbsp; &nbsp; &nbsp;if (aesit == AdminExecutorServices.end())
+ &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;errorMessage (&quot;couldn't stop service, as didn't find the aes&quot;, from, netbase);
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// don't find the aes, send an error message
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;return;
+ &nbsp; &nbsp; &nbsp; &nbsp;}
+
+ &nbsp; &nbsp; &nbsp; &nbsp;SIT sit = (*aesit).findService (sid, false);
+ &nbsp; &nbsp; &nbsp; &nbsp;if (sit == (*aesit).Services.end())
+ &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// don't find the s, send an error message
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;errorMessage (&quot;couldn't stop service, as didn't find the service&quot;, from, netbase);
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;return;
+ &nbsp; &nbsp; &nbsp; &nbsp;}
+
+ &nbsp; &nbsp; &nbsp; &nbsp;// send the resquest to the AES
+
+ &nbsp; &nbsp; &nbsp; &nbsp;CMessage msgout (CNetManager::getSIDA((*aesit).ServerAlias), &quot;STOPS&quot;);
+ &nbsp; &nbsp; &nbsp; &nbsp;msgout.serial (sid);
+ &nbsp; &nbsp; &nbsp; &nbsp;CNetManager::send ((*aesit).ServerAlias, msgout);
+}
+
+static void cbExecCommand (CMessage&amp; msgin, TSockId from, CCallbackNetBase &amp;netbase)
+{
+ &nbsp; &nbsp; &nbsp; &nbsp;uint32 aesid, sid;
+ &nbsp; &nbsp; &nbsp; &nbsp;string command;
+ &nbsp; &nbsp; &nbsp; &nbsp;msgin.serial (aesid);
+ &nbsp; &nbsp; &nbsp; &nbsp;msgin.serial (sid);
+ &nbsp; &nbsp; &nbsp; &nbsp;msgin.serial (command);
+
+ &nbsp; &nbsp; &nbsp; &nbsp;AESIT aesit = findAdminExecutorService (aesid, false);
+ &nbsp; &nbsp; &nbsp; &nbsp;if (aesit == AdminExecutorServices.end())
+ &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;errorMessage (&quot;couldn't stop service, as didn't find the aes&quot;, from, netbase);
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// don't find the aes, send an error message
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;return;
+ &nbsp; &nbsp; &nbsp; &nbsp;}
+
+ &nbsp; &nbsp; &nbsp; &nbsp;SIT sit = (*aesit).findService (sid, false);
+ &nbsp; &nbsp; &nbsp; &nbsp;if (sit == (*aesit).Services.end())
+ &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// don't find the s, send an error message
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;errorMessage (&quot;couldn't stop service, as didn't find the service&quot;, from, netbase);
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;return;
+ &nbsp; &nbsp; &nbsp; &nbsp;}
+
+ &nbsp; &nbsp; &nbsp; &nbsp;// send the resquest to the AES
+
+ &nbsp; &nbsp; &nbsp; &nbsp;CMessage msgout (CNetManager::getSIDA((*aesit).ServerAlias), &quot;EXEC_COMMAND&quot;);
+ &nbsp; &nbsp; &nbsp; &nbsp;msgout.serial (sid);
+ &nbsp; &nbsp; &nbsp; &nbsp;msgout.serial (command);
+ &nbsp; &nbsp; &nbsp; &nbsp;CNetManager::send ((*aesit).ServerAlias, msgout);
+}
+
+
+TCallbackItem ClientCallbackArray[] =
+{
+ &nbsp; &nbsp; &nbsp; &nbsp;{ &quot;SYS&quot;, cbExecuteSystemCommand },
+ &nbsp; &nbsp; &nbsp; &nbsp;{ &quot;EXEC&quot;, cbExecuteScript },
+ &nbsp; &nbsp; &nbsp; &nbsp;{ &quot;STARTS&quot;, cbStartService },
+ &nbsp; &nbsp; &nbsp; &nbsp;{ &quot;STOPS&quot;, cbStopService },
+ &nbsp; &nbsp; &nbsp; &nbsp;{ &quot;EXEC_COMMAND&quot;, cbExecCommand },
+};
+
+////////////////////////////////////////////////////////////////////////////////////////////////////////
+////////////////////////////////////////////////////////////////////////////////////////////////////////
+////////////////// SERVICE IMPLEMENTATION //////////////////////////////////////////////////////////////
+////////////////////////////////////////////////////////////////////////////////////////////////////////
+////////////////////////////////////////////////////////////////////////////////////////////////////////
+
+class CAdminService : public IService
+{
+public:
+
+ &nbsp; &nbsp; &nbsp; &nbsp;/// Init the service, load the universal time.
+ &nbsp; &nbsp; &nbsp; &nbsp;void &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;init ()
+ &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;DebugLog-&gt;addNegativeFilter (&quot;L0:&quot;);
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;DebugLog-&gt;addNegativeFilter (&quot;L1:&quot;);
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;DebugLog-&gt;addNegativeFilter (&quot;L2:&quot;);
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;CNetManager::setConnectionCallback (&quot;AS&quot;, clientConnection, NULL);
+
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;//
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// Get the list of AESHosts, add in the structures and create connection to all AES
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;//
+
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;CConfigFile::CVar &amp;host = ConfigFile.getVar (&quot;AESHosts&quot;);
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;for (sint i = 0 ; i &lt; host.size (); i+=2)
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;string serverAlias = host.asString(i);
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;string serverAddr = host.asString(i+1);
+
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// add to the list
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;CAdminExecutorService aes;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;aes.ServerAlias = serverAlias;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;aes.ServerAddr = serverAddr;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;AdminExecutorServices.push_back (aes);
+
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// connect to the AES
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;CNetManager::setConnectionCallback (serverAlias, cbAESConnection, NULL);
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;CNetManager::setDisconnectionCallback (serverAlias, cbAESDisconnection, NULL);
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;CNetManager::addClient (serverAlias, serverAddr+&quot;:49996&quot;);
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;CNetManager::addCallbackArray (serverAlias, AESCallbackArray, sizeof (AESCallbackArray)/sizeof(AESCallbackArray[0]));
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}
+
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;//
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// Get the list of services in the shard
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;//
+
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;CConfigFile::CVar &amp;serv = ConfigFile.getVar (&quot;Services&quot;);
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;for (i = 0 ; i &lt; serv.size (); i+=2)
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;string serverAlias = serv.asString(i);
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;string serviceAlias = serv.asString(i+1);
+
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;AESIT aesit = findAdminExecutorService (serverAlias);
+
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// add new AES in the list
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;CService s;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;s.ServiceAlias = serviceAlias;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;s.InConfig = true;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;(*aesit).Services.push_back (s);
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}
+ &nbsp; &nbsp; &nbsp; &nbsp;}
+
+ &nbsp; &nbsp; &nbsp; &nbsp;bool &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;update ()
+ &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;return true;
+ &nbsp; &nbsp; &nbsp; &nbsp;}
+};
+
+
+// AS is a server connection to the admin client
+// AESAS is a client connection to the admin executor
+
+/// Naming Service
+NLNET_SERVICE_MAIN (CAdminService, &quot;AS&quot;, &quot;admin_service&quot;, 49995, ClientCallbackArray);
+</PRE> \ No newline at end of file
diff --git a/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cpp?rev=1.9&content-type=text/x-cvsweb-markup/index.html b/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cpp?rev=1.9&content-type=text/x-cvsweb-markup/index.html
new file mode 100644
index 00000000..57683381
--- /dev/null
+++ b/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cpp?rev=1.9&content-type=text/x-cvsweb-markup/index.html
@@ -0,0 +1,948 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"><HTML>
+<HEAD><style> A { color:black }</style>
+<!-- hennerik CVSweb $Revision: 1.93 $ -->
+<TITLE>code/nelns/admin_service/admin_service.cpp - view - 1.9</TITLE></HEAD>
+<BODY BGCOLOR="#eeeeee">
+<table width="100%" border=0 cellspacing=0 cellpadding=1 bgcolor="#aaaaaa"><tr valign=bottom><td><a href="admin_service.cpp"><IMG SRC="http://www.nevrax.org/inc/img/picto-up.gif" ALT="[BACK]" BORDER="0" WIDTH="14" HEIGHT="13"></a> <b>Return to <A HREF="admin_service.cpp">admin_service.cpp</A>
+ CVS log</b> <IMG SRC="http://www.nevrax.org/inc/img/picto-news.gif" ALT="[TXT]" BORDER="0" WIDTH="13" HEIGHT="15"></td><td align=right><IMG SRC="http://www.nevrax.org/inc/img/picto-dir.gif" ALT="[DIR]" BORDER="0" WIDTH="15" HEIGHT="13"> <b>Up to <a href="/cvs/cvsweb.cgi/">Nevrax</a> / <a href="/cvs/cvsweb.cgi/code/">code</a> / <a href="/cvs/cvsweb.cgi/code/nelns/">nelns</a> / <a href="/cvs/cvsweb.cgi/code/nelns/admin_service/">admin_service</a></b></td></tr></table><HR noshade><table width="100%"><tr><td bgcolor="#ffffff">File: <a href="/cvs/cvsweb.cgi/">Nevrax</a> / <a href="/cvs/cvsweb.cgi/code/">code</a> / <a href="/cvs/cvsweb.cgi/code/nelns/">nelns</a> / <a href="/cvs/cvsweb.cgi/code/nelns/admin_service/">admin_service</a> / <a href="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cpp">admin_service.cpp</a>&nbsp;(<A HREF="/cvs/cvsweb.cgi/~checkout~/code/nelns/admin_service/admin_service.cpp?rev=1.9" target="cvs_checkout" onClick="window.open('/cvs/cvsweb.cgi/~checkout~/code/nelns/admin_service/admin_service.cpp?rev=1.9','cvs_checkout','resizeable,scrollbars');"><b>download</b></A>)<BR>
+Revision <B>1.9</B>, <i>Wed Jun 27 08:34:23 2001 UTC</i> (12 months, 4 weeks ago) by <i>lecroart</i>
+<BR>Branch: <b>MAIN</b>
+<BR>Changes since <b>1.8: +14 -4
+ lines</b><PRE>
+ADDED: command redirection
+</PRE>
+</td></tr></table><HR noshade><PRE>/** \file admin_service.cpp
+ * Admin Service (AS)
+ *
+ * $Id: admin_service.cpp,v 1.9 2001/06/27 08:34:23 lecroart Exp $
+ *
+ */
+
+/* Copyright, 2000 Nevrax Ltd.
+ *
+ * This file is part of NEVRAX NeL Network Services.
+ * NEVRAX NeL Network Services is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2, or (at your option)
+ * any later version.
+ *
+ * NEVRAX NeL Network Services is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with NEVRAX NeL Network Services; see the file COPYING. If not, write to the
+ * Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston,
+ * MA 02111-1307, USA.
+ */
+
+#include &lt;string&gt;
+#include &lt;list&gt;
+
+#include &quot;nel/net/service.h&quot;
+#include &quot;nel/misc/debug.h&quot;
+#include &quot;nel/misc/config_file.h&quot;
+#include &quot;nel/misc/command.h&quot;
+
+#include &quot;nel/net/net_manager.h&quot;
+
+using namespace std;
+using namespace NLMISC;
+using namespace NLNET;
+
+////////////////////////
+
+
+struct CService
+{
+ &nbsp; &nbsp; &nbsp; &nbsp;CService () : Id(0xFFFFFFFF), Ready(false), Connected(false), InConfig(false) { }
+
+ &nbsp; &nbsp; &nbsp; &nbsp;uint32 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;Id; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;/// uint32 to identify the service
+ &nbsp; &nbsp; &nbsp; &nbsp;string &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;AliasName; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;/// alias of the service used in the AES and AS to find him (unique per AES)
+ &nbsp; &nbsp; &nbsp; &nbsp;string &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;ShortName; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;/// name of the service in short format (&quot;NS&quot; for example)
+ &nbsp; &nbsp; &nbsp; &nbsp;string &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;LongName; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;/// name of the service in long format (&quot;naming_service&quot;)
+ &nbsp; &nbsp; &nbsp; &nbsp;bool &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;Ready; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;/// true if the service is ready
+ &nbsp; &nbsp; &nbsp; &nbsp;bool &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;Connected; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;/// true if the service is connected to the AES
+ &nbsp; &nbsp; &nbsp; &nbsp;bool &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;InConfig; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;/// true if the service is in the configuration
+ &nbsp; &nbsp; &nbsp; &nbsp;std::vector&lt;NLMISC::CSerialCommand&gt; &nbsp; &nbsp; &nbsp; &nbsp;Commands;
+
+ &nbsp; &nbsp; &nbsp; &nbsp;void setValues (const CService &amp;t)
+ &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// copy all except gtk stuffs
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;Id = t.Id;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;AliasName = t.AliasName;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;ShortName = t.ShortName;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;LongName = t.LongName;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;Ready = t.Ready;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;Connected = t.Connected;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;//InConfig = t.InConfig; never change the inconfig value
+ &nbsp; &nbsp; &nbsp; &nbsp;}
+};
+
+typedef list&lt;CService&gt; TServices;
+typedef list&lt;CService&gt;::iterator SIT;
+
+struct CAdminExecutorService
+{
+ &nbsp; &nbsp; &nbsp; &nbsp;CAdminExecutorService () : Id(NextId++), SockId(NULL), Connected(false) { }
+
+ &nbsp; &nbsp; &nbsp; &nbsp;TSockId &nbsp; &nbsp; &nbsp; &nbsp;SockId; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;/// connection to the AES
+ &nbsp; &nbsp; &nbsp; &nbsp;uint32 &nbsp; &nbsp; &nbsp; &nbsp;Id; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;/// uint32 to identify the AES where the service is running
+
+ &nbsp; &nbsp; &nbsp; &nbsp;string &nbsp; &nbsp; &nbsp; &nbsp;ServerAlias; &nbsp; &nbsp; &nbsp; &nbsp;/// name of the layer4 connection, used to send message to this AES
+ &nbsp; &nbsp; &nbsp; &nbsp;string &nbsp; &nbsp; &nbsp; &nbsp;ServerAddr; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;/// address in a string format (only the ip)
+ &nbsp; &nbsp; &nbsp; &nbsp;bool &nbsp; &nbsp; &nbsp; &nbsp;Connected; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;/// true if the AES is connected
+
+ &nbsp; &nbsp; &nbsp; &nbsp;TServices Services;
+
+ &nbsp; &nbsp; &nbsp; &nbsp;vector&lt;string&gt; &nbsp; &nbsp; &nbsp; &nbsp;ServiceAliasList;
+
+ &nbsp; &nbsp; &nbsp; &nbsp;SIT findService (uint32 sid, bool asrt = true)
+ &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;SIT sit;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;for (sit = Services.begin(); sit != Services.end(); sit++)
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;if ((*sit).Id == sid)
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;break;
+
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;if (asrt)
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;nlassert (sit != Services.end());
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;return sit;
+ &nbsp; &nbsp; &nbsp; &nbsp;}
+
+ &nbsp; &nbsp; &nbsp; &nbsp;SIT findService (const string &amp;alias, bool asrt = true)
+ &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;SIT sit;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;for (sit = Services.begin(); sit != Services.end(); sit++)
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;if ((*sit).AliasName == alias)
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;break;
+
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;if (asrt)
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;nlassert (sit != Services.end());
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;return sit;
+ &nbsp; &nbsp; &nbsp; &nbsp;}
+
+private:
+ &nbsp; &nbsp; &nbsp; &nbsp;static uint32 NextId;
+};
+
+uint32 CAdminExecutorService::NextId = 1;
+
+typedef list&lt;CAdminExecutorService&gt; TAdminExecutorServices;
+typedef list&lt;CAdminExecutorService&gt;::iterator AESIT;
+
+TAdminExecutorServices AdminExecutorServices;
+
+/////////////////
+
+AESIT findAdminExecutorService (uint32 aesid, bool asrt = true)
+{
+ &nbsp; &nbsp; &nbsp; &nbsp;AESIT aesit;
+ &nbsp; &nbsp; &nbsp; &nbsp;for (aesit = AdminExecutorServices.begin(); aesit != AdminExecutorServices.end(); aesit++)
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;if ((*aesit).Id == aesid)
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;break;
+
+ &nbsp; &nbsp; &nbsp; &nbsp;if (asrt)
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;nlassert (aesit != AdminExecutorServices.end());
+ &nbsp; &nbsp; &nbsp; &nbsp;return aesit;
+}
+
+AESIT findAdminExecutorService (string ServerAlias, bool asrt = true)
+{
+ &nbsp; &nbsp; &nbsp; &nbsp;AESIT aesit;
+ &nbsp; &nbsp; &nbsp; &nbsp;for (aesit = AdminExecutorServices.begin(); aesit != AdminExecutorServices.end(); aesit++)
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;if ((*aesit).ServerAlias == ServerAlias)
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;break;
+
+ &nbsp; &nbsp; &nbsp; &nbsp;if (asrt)
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;nlassert (aesit != AdminExecutorServices.end());
+ &nbsp; &nbsp; &nbsp; &nbsp;return aesit;
+}
+
+void displayServices ()
+{
+ &nbsp; &nbsp; &nbsp; &nbsp;for (AESIT aesit = AdminExecutorServices.begin(); aesit != AdminExecutorServices.end(); aesit++)
+ &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;nlinfo (&quot;&gt; Admin&quot;);
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;for (SIT sit = (*aesit).Services.begin(); sit != (*aesit).Services.end(); sit++)
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;nlinfo (&quot; &nbsp;&gt; '%s' '%s' '%s' '%s' %d %d&quot;, (*aesit).SockId-&gt;asString().c_str(), (*sit).AliasName.c_str(), (*sit).ShortName.c_str(), (*sit).LongName.c_str(), (*aesit).Id, (*sit).Id);
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}
+ &nbsp; &nbsp; &nbsp; &nbsp;}
+}
+
+
+// send a message to a client. if ok is 0 it s an error or it s a normal
+void messageToClient (uint8 ok, string msg, TSockId from = NULL)
+{
+ &nbsp; &nbsp; &nbsp; &nbsp;CMessage msgout (CNetManager::getSIDA (&quot;AS&quot;), &quot;MESSAGE&quot;);
+ &nbsp; &nbsp; &nbsp; &nbsp;msgout.serial (ok, msg);
+ &nbsp; &nbsp; &nbsp; &nbsp;CNetManager::send (&quot;AS&quot;, msgout, from);
+}
+
+
+////////////////////////////////////////////////////////////////////////////////////////////////////////
+////////////////////////////////////////////////////////////////////////////////////////////////////////
+/////////////////// SCRIPT MANAGER /////////////////////////////////////////////////////////////////////
+////////////////////////////////////////////////////////////////////////////////////////////////////////
+////////////////////////////////////////////////////////////////////////////////////////////////////////
+
+bool StartAllServices = false;
+uint32 StartAllServicesPos;
+
+void doNextStartAllServicesStep ()
+{
+ &nbsp; &nbsp; &nbsp; &nbsp;nlassert (StartAllServices);
+
+ &nbsp; &nbsp; &nbsp; &nbsp;// get the script
+ &nbsp; &nbsp; &nbsp; &nbsp;try
+ &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;CConfigFile::CVar &amp;script = IService::ConfigFile.getVar(&quot;Services&quot;);
+
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// check the position
+
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;if (StartAllServicesPos*2 &gt;= (uint32)script.size())
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;StartAllServices = false;
+
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;nlinfo(&quot;end of the script&quot;);
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;messageToClient (1, &quot;Start All Service finnished correctly&quot;);
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;return;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}
+
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// get the script line
+
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;string serverAlias;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;string serviceAlias;
+
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;try
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;serverAlias = script.asString (StartAllServicesPos*2);
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;serviceAlias = script.asString (StartAllServicesPos*2+1);
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;catch(EBadSize &amp;)
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;messageToClient (1, &quot;'Services' variable does not contains a good number of entries (must be a multiple of 2)&quot;);
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;nlwarning (&quot;'Services' variable does not contains a good number of entries (must be a multiple of 2)&quot;);
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;StartAllServices = false;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;return;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}
+
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;AESIT aesit = findAdminExecutorService (serverAlias, false);
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;if (aesit == AdminExecutorServices.end())
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;messageToClient (1, &quot;don't find the server&quot;);
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;nlwarning(&quot;don't find the server&quot;);
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;StartAllServices = false;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;return;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}
+
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// check if the service is not currently running
+
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;StartAllServicesPos++;
+
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;SIT sit = (*aesit).findService (serviceAlias);
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;if ((*sit).Connected)
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// the service is already running, go to the next process
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;doNextStartAllServicesStep ();
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;else
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// send the resquest to the AES
+
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;CMessage msgout (CNetManager::getSIDA((*aesit).ServerAlias), &quot;STARTS&quot;);
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;msgout.serial (serviceAlias);
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;CNetManager::send ((*aesit).ServerAlias, msgout);
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}
+ &nbsp; &nbsp; &nbsp; &nbsp;}
+ &nbsp; &nbsp; &nbsp; &nbsp;catch(EUnknownVar&amp;)
+ &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;messageToClient (1, &quot;'Services' variable is not found&quot;);
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;nlwarning (&quot;'Services' variable is not found&quot;);
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;StartAllServices = false;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;return;
+ &nbsp; &nbsp; &nbsp; &nbsp;}
+}
+
+void initStartAllServices ()
+{
+ &nbsp; &nbsp; &nbsp; &nbsp;if (StartAllServices)
+ &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;messageToClient (1, &quot;already running a script, reset it&quot;);
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;nlwarning(&quot;already running a script, reset it&quot;);
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;StartAllServices = false;
+ &nbsp; &nbsp; &nbsp; &nbsp;}
+
+ &nbsp; &nbsp; &nbsp; &nbsp;try
+ &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;CConfigFile::CVar &amp;script = IService::ConfigFile.getVar(&quot;Services&quot;);
+
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;for (sint i = 0 ; i &lt; script.size (); i+=2)
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;string serverAlias = script.asString(i);
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;AESIT aesit = findAdminExecutorService (serverAlias, false);
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;if (aesit == AdminExecutorServices.end())
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;messageToClient (1, &quot;an aes is not running, can't run the script&quot;);
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;nlwarning(&quot;aes '%s' isn't running, can't run the script&quot;, serverAlias.c_str());
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;return;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}
+ &nbsp; &nbsp; &nbsp; &nbsp;}
+ &nbsp; &nbsp; &nbsp; &nbsp;catch(EConfigFile &amp;)
+ &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;messageToClient (1, &quot;bad config file&quot;);
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;nlwarning (&quot;bad config file&quot;);
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;return;
+ &nbsp; &nbsp; &nbsp; &nbsp;}
+
+ &nbsp; &nbsp; &nbsp; &nbsp;StartAllServicesPos = 0;
+ &nbsp; &nbsp; &nbsp; &nbsp;StartAllServices = true;
+
+ &nbsp; &nbsp; &nbsp; &nbsp;doNextStartAllServicesStep();
+}
+
+
+////////////////////////////////////////////////////////////////////////////////////////////////////////
+////////////////////////////////////////////////////////////////////////////////////////////////////////
+////////////////// CONNECTION TO THE AES ///////////////////////////////////////////////////////////////
+////////////////////////////////////////////////////////////////////////////////////////////////////////
+////////////////////////////////////////////////////////////////////////////////////////////////////////
+
+
+static void cbExecuteSystemCommandResult (CMessage&amp; msgin, TSockId from, CCallbackNetBase &amp;netbase)
+{
+ &nbsp; &nbsp; &nbsp; &nbsp;vector&lt;string&gt; result;
+ &nbsp; &nbsp; &nbsp; &nbsp;msgin.serialCont (result);
+
+ &nbsp; &nbsp; &nbsp; &nbsp;nlinfo(&quot;command result&quot;);
+ &nbsp; &nbsp; &nbsp; &nbsp;for (uint i = 0; i &lt; result.size(); i++)
+ &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;printf (&quot;%s&quot;, result[i].c_str());
+ &nbsp; &nbsp; &nbsp; &nbsp;}
+ &nbsp; &nbsp; &nbsp; &nbsp;nlinfo(&quot;end of command result&quot;);
+}
+
+// get the service list from the admin exec and send the list to all admin client
+static void cbServiceList (CMessage&amp; msgin, TSockId from, CCallbackNetBase &amp;netbase)
+{
+ &nbsp; &nbsp; &nbsp; &nbsp;CAdminExecutorService *aes = (CAdminExecutorService*) (uint) from-&gt;appId();
+
+ &nbsp; &nbsp; &nbsp; &nbsp;//
+ &nbsp; &nbsp; &nbsp; &nbsp;// Get the list of service from aes
+ &nbsp; &nbsp; &nbsp; &nbsp;//
+
+ &nbsp; &nbsp; &nbsp; &nbsp;uint32 nbs;
+ &nbsp; &nbsp; &nbsp; &nbsp;msgin.serial (nbs);
+
+ &nbsp; &nbsp; &nbsp; &nbsp;for (uint32 i = 0; i &lt; nbs; i++)
+ &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// find the service
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;CService s;
+
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;msgin.serial (s.Id, s.AliasName, s.ShortName, s.LongName, s.Ready);
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;msgin.serialCont (s.Commands);
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;s.Connected = true;
+
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;if (!s.AliasName.empty())
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;SIT sit = aes-&gt;findService (s.AliasName, false);
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;if (sit == aes-&gt;Services.end ())
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;aes-&gt;Services.push_back (s);
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;else
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;nlassert (&quot;the service already exists with alias, update it&quot;);
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;(*sit).setValues (s);
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;else
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;SIT sit = aes-&gt;findService (s.Id, false);
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;if (sit == aes-&gt;Services.end ())
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;aes-&gt;Services.push_back (s);
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;else
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;nlassert (&quot;the service already exists with id, update it&quot;);
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;(*sit).setValues (s);
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}
+ &nbsp; &nbsp; &nbsp; &nbsp;}
+ &nbsp; &nbsp; &nbsp; &nbsp;
+ &nbsp; &nbsp; &nbsp; &nbsp;displayServices ();
+
+ &nbsp; &nbsp; &nbsp; &nbsp;//
+ &nbsp; &nbsp; &nbsp; &nbsp;// Send the new list to all admin
+ &nbsp; &nbsp; &nbsp; &nbsp;//
+
+ &nbsp; &nbsp; &nbsp; &nbsp;CMessage msgout (CNetManager::getSIDA (&quot;AS&quot;), &quot;SERVICE_LIST&quot;);
+ &nbsp; &nbsp; &nbsp; &nbsp;uint32 nbaes = 1;
+ &nbsp; &nbsp; &nbsp; &nbsp;msgout.serial (nbaes);
+ &nbsp; &nbsp; &nbsp; &nbsp;msgout.serial (aes-&gt;Id);
+ &nbsp; &nbsp; &nbsp; &nbsp;uint32 ss = aes-&gt;Services.size();
+ &nbsp; &nbsp; &nbsp; &nbsp;msgout.serial (ss);
+
+ &nbsp; &nbsp; &nbsp; &nbsp;for (SIT sit = aes-&gt;Services.begin(); sit != aes-&gt;Services.end(); sit++)
+ &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;msgout.serial ((*sit).Id, (*sit).AliasName, (*sit).ShortName, (*sit).LongName);
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;msgout.serial ((*sit).Ready, (*sit).Connected, (*sit).InConfig);
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;msgout.serialCont ((*sit).Commands);
+ &nbsp; &nbsp; &nbsp; &nbsp;}
+ &nbsp; &nbsp; &nbsp; &nbsp;CNetManager::send (&quot;AS&quot;, msgout, 0);
+}
+
+static void cbServiceAliasList (CMessage&amp; msgin, TSockId from, CCallbackNetBase &amp;netbase)
+{
+ &nbsp; &nbsp; &nbsp; &nbsp;// get the service list from the admin exec and send the list to all admin client
+ &nbsp; &nbsp; &nbsp; &nbsp;CAdminExecutorService *aes = (CAdminExecutorService*) (uint) from-&gt;appId();
+
+ &nbsp; &nbsp; &nbsp; &nbsp;aes-&gt;ServiceAliasList.clear ();
+ &nbsp; &nbsp; &nbsp; &nbsp;msgin.serialCont (aes-&gt;ServiceAliasList);
+
+ &nbsp; &nbsp; &nbsp; &nbsp;nlinfo(&quot;send SAL to admin callback from aes&quot;);
+
+ &nbsp; &nbsp; &nbsp; &nbsp;CMessage msgout (CNetManager::getSIDA (&quot;AS&quot;), &quot;SAL&quot;);
+ &nbsp; &nbsp; &nbsp; &nbsp;msgout.serial (aes-&gt;Id);
+ &nbsp; &nbsp; &nbsp; &nbsp;msgout.serialCont (aes-&gt;ServiceAliasList);
+ &nbsp; &nbsp; &nbsp; &nbsp;CNetManager::send (&quot;AS&quot;, msgout, 0);
+ &nbsp; &nbsp; &nbsp; &nbsp;
+ &nbsp; &nbsp; &nbsp; &nbsp;nlinfo(&quot;new service alias list&quot;);
+}
+
+
+static void cbServiceIdentification (CMessage&amp; msgin, TSockId from, CCallbackNetBase &amp;netbase)
+{
+ &nbsp; &nbsp; &nbsp; &nbsp;CAdminExecutorService *aes = (CAdminExecutorService*) (uint) from-&gt;appId();
+
+ &nbsp; &nbsp; &nbsp; &nbsp;uint32 sid;
+ &nbsp; &nbsp; &nbsp; &nbsp;string alias;
+
+ &nbsp; &nbsp; &nbsp; &nbsp;msgin.serial (sid, alias);
+
+ &nbsp; &nbsp; &nbsp; &nbsp;SIT sit;
+ &nbsp; &nbsp; &nbsp; &nbsp;if (!alias.empty())
+ &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;sit = aes-&gt;findService (alias, false);
+
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;if (sit == aes-&gt;Services.end ())
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// the alias is not found
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;nlwarning (&quot;new service with alias (%s) but not in my list&quot;, alias.c_str());
+
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;aes-&gt;Services.push_back (CService ());
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;sit = aes-&gt;Services.end();
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;sit--;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;else
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// normal case
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}
+ &nbsp; &nbsp; &nbsp; &nbsp;}
+ &nbsp; &nbsp; &nbsp; &nbsp;else
+ &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;sit = aes-&gt;findService (sid, false);
+
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;if (sit == aes-&gt;Services.end ())
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// normal case for unknown services
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;nlwarning (&quot;new service without alias and not in my list, add it&quot;);
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;else
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;nlwarning (&quot;new service without alias is already in my list with id %d, add it&quot;, sid);
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;aes-&gt;Services.push_back (CService ());
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;sit = aes-&gt;Services.end();
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;sit--;
+ &nbsp; &nbsp; &nbsp; &nbsp;}
+
+ &nbsp; &nbsp; &nbsp; &nbsp;(*sit).Id = sid;
+ &nbsp; &nbsp; &nbsp; &nbsp;(*sit).AliasName = alias;
+ &nbsp; &nbsp; &nbsp; &nbsp;(*sit).Connected = true;
+ &nbsp; &nbsp; &nbsp; &nbsp;msgin.serial ((*sit).ShortName, (*sit).LongName);
+ &nbsp; &nbsp; &nbsp; &nbsp;msgin.serialCont ((*sit).Commands);
+
+ &nbsp; &nbsp; &nbsp; &nbsp;nlinfo (&quot;*:%d:%d is identified to be '%s' '%s' '%s'&quot;, aes-&gt;Id, sid, (*sit).AliasName.c_str(), (*sit).ShortName.c_str(), (*sit).LongName.c_str());
+
+ &nbsp; &nbsp; &nbsp; &nbsp;// broadcast the message to all admin client
+ &nbsp; &nbsp; &nbsp; &nbsp;CMessage msgout (CNetManager::getSIDA (&quot;AS&quot;), &quot;SID&quot;);
+ &nbsp; &nbsp; &nbsp; &nbsp;msgout.serial (aes-&gt;Id, sid, (*sit).AliasName, (*sit).ShortName, (*sit).LongName);
+ &nbsp; &nbsp; &nbsp; &nbsp;msgout.serialCont ((*sit).Commands);
+
+ &nbsp; &nbsp; &nbsp; &nbsp;CNetManager::send (&quot;AS&quot;, msgout, 0);
+}
+
+static void cbServiceReady (CMessage&amp; msgin, TSockId from, CCallbackNetBase &amp;netbase)
+{
+ &nbsp; &nbsp; &nbsp; &nbsp;CAdminExecutorService *aes = (CAdminExecutorService*) (uint) from-&gt;appId();
+
+ &nbsp; &nbsp; &nbsp; &nbsp;uint32 sid;
+ &nbsp; &nbsp; &nbsp; &nbsp;msgin.serial (sid);
+
+ &nbsp; &nbsp; &nbsp; &nbsp;SIT sit = aes-&gt;findService(sid);
+ &nbsp; &nbsp; &nbsp; &nbsp;(*sit).Ready = true;
+
+ &nbsp; &nbsp; &nbsp; &nbsp;nlinfo (&quot;*:%d:%d is ready&quot;, aes-&gt;Id, sid);
+
+ &nbsp; &nbsp; &nbsp; &nbsp;// broadcast the message to all admin client
+ &nbsp; &nbsp; &nbsp; &nbsp;CMessage msgout (CNetManager::getSIDA (&quot;AS&quot;), &quot;SR&quot;);
+ &nbsp; &nbsp; &nbsp; &nbsp;msgout.serial (aes-&gt;Id, sid);
+ &nbsp; &nbsp; &nbsp; &nbsp;CNetManager::send (&quot;AS&quot;, msgout, 0);
+
+ &nbsp; &nbsp; &nbsp; &nbsp;// if we are in a script execution, continue
+ &nbsp; &nbsp; &nbsp; &nbsp;if (StartAllServices)
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;doNextStartAllServicesStep();
+}
+
+static void cbServiceConnection (CMessage&amp; msgin, TSockId from, CCallbackNetBase &amp;netbase)
+{
+ &nbsp; &nbsp; &nbsp; &nbsp;CAdminExecutorService *aes = (CAdminExecutorService*) (uint) from-&gt;appId();
+
+ &nbsp; &nbsp; &nbsp; &nbsp;uint32 sid;
+ &nbsp; &nbsp; &nbsp; &nbsp;msgin.serial (sid);
+
+ &nbsp; &nbsp; &nbsp; &nbsp;nlinfo (&quot;*:%d:%d connected&quot;, aes-&gt;Id, sid);
+
+ &nbsp; &nbsp; &nbsp; &nbsp;// don't do anything. we have to wait identification to add it in out lists
+
+/*
+ &nbsp; &nbsp; &nbsp; &nbsp;aes-&gt;Services.push_back (CService(sid));
+*/
+ &nbsp; &nbsp; &nbsp; &nbsp;// broadcast the message to all admin client
+ &nbsp; &nbsp; &nbsp; &nbsp;CMessage msgout (CNetManager::getSIDA (&quot;AS&quot;), &quot;SC&quot;);
+ &nbsp; &nbsp; &nbsp; &nbsp;msgout.serial (aes-&gt;Id, sid);
+ &nbsp; &nbsp; &nbsp; &nbsp;CNetManager::send (&quot;AS&quot;, msgout, 0);
+}
+
+static void cbServiceDisconnection (CMessage&amp; msgin, TSockId from, CCallbackNetBase &amp;netbase)
+{
+ &nbsp; &nbsp; &nbsp; &nbsp;CAdminExecutorService *aes = (CAdminExecutorService*) (uint) from-&gt;appId();
+
+ &nbsp; &nbsp; &nbsp; &nbsp;uint32 sid;
+ &nbsp; &nbsp; &nbsp; &nbsp;msgin.serial (sid);
+
+ &nbsp; &nbsp; &nbsp; &nbsp;nlinfo (&quot;*:%d:%d disconnected&quot;, aes-&gt;Id, sid);
+
+ &nbsp; &nbsp; &nbsp; &nbsp;SIT sit = aes-&gt;findService(sid);
+
+ &nbsp; &nbsp; &nbsp; &nbsp;// broadcast the message to all admin client
+ &nbsp; &nbsp; &nbsp; &nbsp;CMessage msgout (CNetManager::getSIDA (&quot;AS&quot;), &quot;SD&quot;);
+ &nbsp; &nbsp; &nbsp; &nbsp;msgout.serial (aes-&gt;Id, (*sit).Id);
+ &nbsp; &nbsp; &nbsp; &nbsp;CNetManager::send (&quot;AS&quot;, msgout, 0);
+
+ &nbsp; &nbsp; &nbsp; &nbsp;if ((*sit).InConfig)
+ &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;(*sit).Ready = (*sit).Connected = false;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;(*sit).Id = 0xFFFFFFFF;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;(*sit).ShortName = (*sit).LongName = &quot;&quot;;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;(*sit).Commands.clear ();
+ &nbsp; &nbsp; &nbsp; &nbsp;}
+ &nbsp; &nbsp; &nbsp; &nbsp;else
+ &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// erase only if it's not a service in the config
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;aes-&gt;Services.erase (sit);
+ &nbsp; &nbsp; &nbsp; &nbsp;}
+
+ &nbsp; &nbsp; &nbsp; &nbsp;displayServices ();
+}
+
+// i'm connected to a new admin executor service
+void cbAESConnection (const string &amp;serviceName, TSockId from, void *arg)
+{
+ &nbsp; &nbsp; &nbsp; &nbsp;AESIT aesit = findAdminExecutorService (serviceName); &nbsp; &nbsp; &nbsp; &nbsp;
+ &nbsp; &nbsp; &nbsp; &nbsp;CAdminExecutorService *aes = &amp;(*aesit);
+ &nbsp; &nbsp; &nbsp; &nbsp;
+ &nbsp; &nbsp; &nbsp; &nbsp;// set the appid to find the aes in O(1)
+ &nbsp; &nbsp; &nbsp; &nbsp;from-&gt;setAppId ((uint64)(uint)aes);
+
+ &nbsp; &nbsp; &nbsp; &nbsp;aes-&gt;Connected = true;
+ &nbsp; &nbsp; &nbsp; &nbsp;nlinfo (&quot;*:%d:* connected&quot;, aes-&gt;Id);
+/*
+ &nbsp; &nbsp; &nbsp; &nbsp;// broadcast the message that an admin exec is connected to all admin client
+ &nbsp; &nbsp; &nbsp; &nbsp;CMessage msgout (CNetManager::getSIDA (&quot;AS&quot;), &quot;AESC&quot;);
+ &nbsp; &nbsp; &nbsp; &nbsp;msgout.serial (aes-&gt;Id);
+ &nbsp; &nbsp; &nbsp; &nbsp;CNetManager::send (&quot;AS&quot;, msgout, 0);
+*/
+
+ &nbsp; &nbsp; &nbsp; &nbsp;// broadcast the new state of this AES
+ &nbsp; &nbsp; &nbsp; &nbsp;CMessage msgout (CNetManager::getSIDA (&quot;AS&quot;), &quot;AES_LIST&quot;);
+ &nbsp; &nbsp; &nbsp; &nbsp;uint32 nbaes = 1;
+ &nbsp; &nbsp; &nbsp; &nbsp;msgout.serial (nbaes);
+ &nbsp; &nbsp; &nbsp; &nbsp;msgout.serial (aes-&gt;Id, aes-&gt;ServerAlias, aes-&gt;ServerAddr, aes-&gt;Connected);
+ &nbsp; &nbsp; &nbsp; &nbsp;CNetManager::send (&quot;AS&quot;, msgout, 0);
+}
+
+// i'm disconnected to an admin executor service
+void cbAESDisconnection (const string &amp;serviceName, TSockId from, void *arg)
+{
+ &nbsp; &nbsp; &nbsp; &nbsp;// get the aes with the appid
+ &nbsp; &nbsp; &nbsp; &nbsp;CAdminExecutorService *aes = (CAdminExecutorService*) (uint) from-&gt;appId();
+
+ &nbsp; &nbsp; &nbsp; &nbsp;aes-&gt;Connected = false;
+
+ &nbsp; &nbsp; &nbsp; &nbsp;SIT sit;
+ &nbsp; &nbsp; &nbsp; &nbsp;for (sit = aes-&gt;Services.begin(); sit != aes-&gt;Services.end();)
+ &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// keep only inconfig services
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;if ((*sit).InConfig)
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;(*sit).Id = 0xFFFFFFFF;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;(*sit).ShortName = (*sit).LongName = &quot;&quot;;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;(*sit).Ready = (*sit).Connected = false;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;sit++;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;else
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// erase only if it's not a service in the config
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;sit = aes-&gt;Services.erase (sit);
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}
+ &nbsp; &nbsp; &nbsp; &nbsp;}
+
+ &nbsp; &nbsp; &nbsp; &nbsp;nlinfo (&quot;*:%d:* disconnected&quot;, aes-&gt;Id);
+/* &nbsp; &nbsp; &nbsp;
+ &nbsp; &nbsp; &nbsp; &nbsp;// broadcast the message to all admin client that an admin exec is disconnected
+ &nbsp; &nbsp; &nbsp; &nbsp;CMessage msgout (CNetManager::getSIDA (&quot;AS&quot;), &quot;AESD&quot;);
+ &nbsp; &nbsp; &nbsp; &nbsp;msgout.serial (aes-&gt;Id);
+ &nbsp; &nbsp; &nbsp; &nbsp;CNetManager::send (&quot;AS&quot;, msgout, 0);
+*/
+
+ &nbsp; &nbsp; &nbsp; &nbsp;displayServices ();
+
+ &nbsp; &nbsp; &nbsp; &nbsp;// broadcast the new state of this AES
+ &nbsp; &nbsp; &nbsp; &nbsp;CMessage msgout (CNetManager::getSIDA (&quot;AS&quot;), &quot;AES_LIST&quot;);
+ &nbsp; &nbsp; &nbsp; &nbsp;uint32 nbaes = 1;
+ &nbsp; &nbsp; &nbsp; &nbsp;msgout.serial (nbaes);
+ &nbsp; &nbsp; &nbsp; &nbsp;msgout.serial (aes-&gt;Id, aes-&gt;ServerAlias, aes-&gt;ServerAddr, aes-&gt;Connected);
+ &nbsp; &nbsp; &nbsp; &nbsp;CNetManager::send (&quot;AS&quot;, msgout, 0);
+}
+
+static void cbLog (CMessage&amp; msgin, TSockId from, CCallbackNetBase &amp;netbase)
+{
+ &nbsp; &nbsp; &nbsp; &nbsp;// received an answer for a command, give it to all admin client
+
+ &nbsp; &nbsp; &nbsp; &nbsp;// get the aes with the appid
+ &nbsp; &nbsp; &nbsp; &nbsp;CAdminExecutorService *aes = (CAdminExecutorService*) (uint) from-&gt;appId();
+
+ &nbsp; &nbsp; &nbsp; &nbsp;// broadcast the message to the admin service
+ &nbsp; &nbsp; &nbsp; &nbsp;CMessage msgout (CNetManager::getSIDA (&quot;AS&quot;), &quot;XLOG&quot;);
+ &nbsp; &nbsp; &nbsp; &nbsp;string log;
+ &nbsp; &nbsp; &nbsp; &nbsp;uint32 sid;
+ &nbsp; &nbsp; &nbsp; &nbsp;msgin.serial (sid);
+ &nbsp; &nbsp; &nbsp; &nbsp;msgin.serial (log);
+
+ &nbsp; &nbsp; &nbsp; &nbsp;msgout.serial (aes-&gt;Id);
+ &nbsp; &nbsp; &nbsp; &nbsp;msgout.serial (sid);
+ &nbsp; &nbsp; &nbsp; &nbsp;msgout.serial (log);
+ &nbsp; &nbsp; &nbsp; &nbsp;CNetManager::send (&quot;AS&quot;, msgout, 0);
+}
+
+
+TCallbackItem AESCallbackArray[] =
+{
+ &nbsp; &nbsp; &nbsp; &nbsp;{ &quot;ESCR&quot;, cbExecuteSystemCommandResult },
+
+ &nbsp; &nbsp; &nbsp; &nbsp;{ &quot;SL&quot;, cbServiceList },
+ &nbsp; &nbsp; &nbsp; &nbsp;{ &quot;SID&quot;, cbServiceIdentification },
+ &nbsp; &nbsp; &nbsp; &nbsp;{ &quot;SR&quot;, cbServiceReady },
+ &nbsp; &nbsp; &nbsp; &nbsp;{ &quot;SC&quot;, cbServiceConnection },
+ &nbsp; &nbsp; &nbsp; &nbsp;{ &quot;SD&quot;, cbServiceDisconnection },
+
+ &nbsp; &nbsp; &nbsp; &nbsp;{ &quot;SAL&quot;, cbServiceAliasList },
+
+ &nbsp; &nbsp; &nbsp; &nbsp;{ &quot;XLOG&quot;, cbLog },
+};
+
+
+////////////////////////////////////////////////////////////////////////////////////////////////////////
+////////////////////////////////////////////////////////////////////////////////////////////////////////
+////////////////// CONNECTION TO THE CLIENT ////////////////////////////////////////////////////////////
+////////////////////////////////////////////////////////////////////////////////////////////////////////
+////////////////////////////////////////////////////////////////////////////////////////////////////////
+
+//
+// A new admin client is connected.
+//
+void clientConnection (const string &amp;serviceName, TSockId from, void *arg)
+{
+ &nbsp; &nbsp; &nbsp; &nbsp;// new client, send him all out info about services
+
+ &nbsp; &nbsp; &nbsp; &nbsp;nlinfo (&quot;client %s is connected&quot;, from-&gt;asString().c_str());
+
+ &nbsp; &nbsp; &nbsp; &nbsp;//
+ &nbsp; &nbsp; &nbsp; &nbsp;// send the list of all the aes
+ &nbsp; &nbsp; &nbsp; &nbsp;//
+
+ &nbsp; &nbsp; &nbsp; &nbsp;CMessage msgout2 (CNetManager::getSIDA (&quot;AS&quot;), &quot;AES_LIST&quot;);
+ &nbsp; &nbsp; &nbsp; &nbsp;AESIT aesit;
+ &nbsp; &nbsp; &nbsp; &nbsp;uint32 nbaes = (uint32)AdminExecutorServices.size();
+ &nbsp; &nbsp; &nbsp; &nbsp;msgout2.serial (nbaes);
+ &nbsp; &nbsp; &nbsp; &nbsp;for (aesit = AdminExecutorServices.begin(); aesit != AdminExecutorServices.end(); aesit++)
+ &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// send info about the AES
+
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;msgout2.serial ((*aesit).Id, (*aesit).ServerAlias, (*aesit).ServerAddr, (*aesit).Connected);
+ &nbsp; &nbsp; &nbsp; &nbsp;}
+ &nbsp; &nbsp; &nbsp; &nbsp;CNetManager::send (&quot;AS&quot;, msgout2, from);
+
+ &nbsp; &nbsp; &nbsp; &nbsp;//
+ &nbsp; &nbsp; &nbsp; &nbsp;// send the list of all services
+ &nbsp; &nbsp; &nbsp; &nbsp;//
+
+ &nbsp; &nbsp; &nbsp; &nbsp;CMessage msgout (CNetManager::getSIDA (&quot;AS&quot;), &quot;SERVICE_LIST&quot;);
+ &nbsp; &nbsp; &nbsp; &nbsp;nbaes = (uint32)AdminExecutorServices.size();
+ &nbsp; &nbsp; &nbsp; &nbsp;msgout.serial (nbaes);
+ &nbsp; &nbsp; &nbsp; &nbsp;for (aesit = AdminExecutorServices.begin(); aesit != AdminExecutorServices.end(); aesit++)
+ &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;msgout.serial ((*aesit).Id);
+
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;uint32 nbs = (uint32)(*aesit).Services.size();
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;msgout.serial (nbs);
+
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;for (SIT sit = (*aesit).Services.begin(); sit != (*aesit).Services.end(); sit++)
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// send info about services of the AES
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;msgout.serial ((*sit).Id, (*sit).AliasName, (*sit).ShortName, (*sit).LongName);
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;msgout.serial ((*sit).Ready, (*sit).Connected, (*sit).InConfig);
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;msgout.serialCont ((*sit).Commands);
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}
+ &nbsp; &nbsp; &nbsp; &nbsp;}
+ &nbsp; &nbsp; &nbsp; &nbsp;CNetManager::send (&quot;AS&quot;, msgout, from);
+
+ &nbsp; &nbsp; &nbsp; &nbsp;displayServices ();
+
+ &nbsp; &nbsp; &nbsp; &nbsp;//
+ &nbsp; &nbsp; &nbsp; &nbsp;// send service alias list
+ &nbsp; &nbsp; &nbsp; &nbsp;//
+
+ &nbsp; &nbsp; &nbsp; &nbsp;nlinfo(&quot;send SAL to admin startup&quot;);
+
+ &nbsp; &nbsp; &nbsp; &nbsp;for (aesit = AdminExecutorServices.begin(); aesit != AdminExecutorServices.end(); aesit++)
+ &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;CMessage msgout2 (CNetManager::getSIDA (&quot;AS&quot;), &quot;SAL&quot;);
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;msgout2.serial ((*aesit).Id);
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;msgout2.serialCont ((*aesit).ServiceAliasList);
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;CNetManager::send (&quot;AS&quot;, msgout2, from);
+ &nbsp; &nbsp; &nbsp; &nbsp;}
+}
+
+
+static void cbExecuteSystemCommand (CMessage&amp; msgin, TSockId from, CCallbackNetBase &amp;netbase)
+{
+ &nbsp; &nbsp; &nbsp; &nbsp;string command;
+ &nbsp; &nbsp; &nbsp; &nbsp;uint32 aesid;
+ &nbsp; &nbsp; &nbsp; &nbsp;msgin.serial (aesid);
+ &nbsp; &nbsp; &nbsp; &nbsp;msgin.serial (command);
+
+ &nbsp; &nbsp; &nbsp; &nbsp;AESIT aesit = findAdminExecutorService (aesid, false);
+ &nbsp; &nbsp; &nbsp; &nbsp;if (aesit == AdminExecutorServices.end())
+ &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// don't find the aes, send an error message
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;messageToClient (0, &quot;couldn't execute command, as didn't find the aes&quot;, from);
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;return;
+ &nbsp; &nbsp; &nbsp; &nbsp;}
+
+ &nbsp; &nbsp; &nbsp; &nbsp;// send the resquest to the AES
+
+ &nbsp; &nbsp; &nbsp; &nbsp;CMessage msgout (CNetManager::getSIDA((*aesit).ServerAlias), &quot;SYS&quot;);
+ &nbsp; &nbsp; &nbsp; &nbsp;msgout.serial (command);
+ &nbsp; &nbsp; &nbsp; &nbsp;CNetManager::send ((*aesit).ServerAlias, msgout);
+}
+
+
+static void cbStartService (CMessage&amp; msgin, TSockId from, CCallbackNetBase &amp;netbase)
+{
+ &nbsp; &nbsp; &nbsp; &nbsp;string serviceAlias;
+ &nbsp; &nbsp; &nbsp; &nbsp;uint32 aesid;
+ &nbsp; &nbsp; &nbsp; &nbsp;msgin.serial (aesid);
+ &nbsp; &nbsp; &nbsp; &nbsp;msgin.serial (serviceAlias);
+
+ &nbsp; &nbsp; &nbsp; &nbsp;AESIT aesit = findAdminExecutorService (aesid, false);
+ &nbsp; &nbsp; &nbsp; &nbsp;if (aesit == AdminExecutorServices.end())
+ &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// don't find the aes, send an error message
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;messageToClient (0, &quot;couldn't start service, as didn't find the aes&quot;, from);
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;return;
+ &nbsp; &nbsp; &nbsp; &nbsp;}
+
+ &nbsp; &nbsp; &nbsp; &nbsp;// send the resquest to the AES
+
+ &nbsp; &nbsp; &nbsp; &nbsp;CMessage msgout (CNetManager::getSIDA((*aesit).ServerAlias), &quot;STARTS&quot;);
+ &nbsp; &nbsp; &nbsp; &nbsp;msgout.serial (serviceAlias);
+ &nbsp; &nbsp; &nbsp; &nbsp;CNetManager::send ((*aesit).ServerAlias, msgout);
+}
+
+static void cbStopService (CMessage&amp; msgin, TSockId from, CCallbackNetBase &amp;netbase)
+{
+ &nbsp; &nbsp; &nbsp; &nbsp;uint32 aesid, sid;
+ &nbsp; &nbsp; &nbsp; &nbsp;msgin.serial (aesid);
+ &nbsp; &nbsp; &nbsp; &nbsp;msgin.serial (sid);
+
+ &nbsp; &nbsp; &nbsp; &nbsp;AESIT aesit = findAdminExecutorService (aesid, false);
+ &nbsp; &nbsp; &nbsp; &nbsp;if (aesit == AdminExecutorServices.end())
+ &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;messageToClient (0, &quot;couldn't stop service, as didn't find the aes&quot;, from);
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// don't find the aes, send an error message
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;return;
+ &nbsp; &nbsp; &nbsp; &nbsp;}
+
+ &nbsp; &nbsp; &nbsp; &nbsp;SIT sit = (*aesit).findService (sid, false);
+ &nbsp; &nbsp; &nbsp; &nbsp;if (sit == (*aesit).Services.end())
+ &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// don't find the s, send an error message
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;messageToClient (0, &quot;couldn't stop service, as didn't find the service&quot;, from);
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;return;
+ &nbsp; &nbsp; &nbsp; &nbsp;}
+
+ &nbsp; &nbsp; &nbsp; &nbsp;// send the resquest to the AES
+
+ &nbsp; &nbsp; &nbsp; &nbsp;CMessage msgout (CNetManager::getSIDA((*aesit).ServerAlias), &quot;STOPS&quot;);
+ &nbsp; &nbsp; &nbsp; &nbsp;msgout.serial (sid);
+ &nbsp; &nbsp; &nbsp; &nbsp;CNetManager::send ((*aesit).ServerAlias, msgout);
+}
+
+static void cbExecCommand (CMessage&amp; msgin, TSockId from, CCallbackNetBase &amp;netbase)
+{
+ &nbsp; &nbsp; &nbsp; &nbsp;uint32 aesid, sid;
+ &nbsp; &nbsp; &nbsp; &nbsp;string command;
+ &nbsp; &nbsp; &nbsp; &nbsp;msgin.serial (aesid);
+ &nbsp; &nbsp; &nbsp; &nbsp;msgin.serial (sid);
+ &nbsp; &nbsp; &nbsp; &nbsp;msgin.serial (command);
+
+ &nbsp; &nbsp; &nbsp; &nbsp;AESIT aesit = findAdminExecutorService (aesid, false);
+ &nbsp; &nbsp; &nbsp; &nbsp;if (aesit == AdminExecutorServices.end())
+ &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;messageToClient (0, &quot;couldn't stop service, as didn't find the aes&quot;, from);
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// don't find the aes, send an error message
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;return;
+ &nbsp; &nbsp; &nbsp; &nbsp;}
+
+ &nbsp; &nbsp; &nbsp; &nbsp;SIT sit = (*aesit).findService (sid, false);
+ &nbsp; &nbsp; &nbsp; &nbsp;if (sit == (*aesit).Services.end())
+ &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// don't find the s, send an error message
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;messageToClient (0, &quot;couldn't stop service, as didn't find the service&quot;, from);
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;return;
+ &nbsp; &nbsp; &nbsp; &nbsp;}
+
+ &nbsp; &nbsp; &nbsp; &nbsp;// send the resquest to the AES
+
+ &nbsp; &nbsp; &nbsp; &nbsp;CMessage msgout (CNetManager::getSIDA((*aesit).ServerAlias), &quot;EXEC_COMMAND&quot;);
+ &nbsp; &nbsp; &nbsp; &nbsp;msgout.serial (sid);
+ &nbsp; &nbsp; &nbsp; &nbsp;msgout.serial (command);
+ &nbsp; &nbsp; &nbsp; &nbsp;CNetManager::send ((*aesit).ServerAlias, msgout);
+}
+
+static void cbStartAllServices (CMessage&amp; msgin, TSockId from, CCallbackNetBase &amp;netbase)
+{
+ &nbsp; &nbsp; &nbsp; &nbsp;initStartAllServices ();
+}
+
+static void cbStopAllServices (CMessage&amp; msgin, TSockId from, CCallbackNetBase &amp;netbase)
+{
+ &nbsp; &nbsp; &nbsp; &nbsp;for (AESIT aesit = AdminExecutorServices.begin(); aesit != AdminExecutorServices.end(); aesit++)
+ &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;for (SIT sit = (*aesit).Services.begin(); sit != (*aesit).Services.end(); sit++)
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;if ((*sit).Connected)
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;CMessage msgout (CNetManager::getSIDA((*aesit).ServerAlias), &quot;STOPS&quot;);
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;msgout.serial ((*sit).Id);
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;CNetManager::send ((*aesit).ServerAlias, msgout);
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}
+ &nbsp; &nbsp; &nbsp; &nbsp;}
+}
+
+TCallbackItem ClientCallbackArray[] =
+{
+ &nbsp; &nbsp; &nbsp; &nbsp;{ &quot;SYS&quot;, cbExecuteSystemCommand },
+ &nbsp; &nbsp; &nbsp; &nbsp;{ &quot;STARTS&quot;, cbStartService },
+ &nbsp; &nbsp; &nbsp; &nbsp;{ &quot;STOPS&quot;, cbStopService },
+ &nbsp; &nbsp; &nbsp; &nbsp;{ &quot;EXEC_COMMAND&quot;, cbExecCommand },
+ &nbsp; &nbsp; &nbsp; &nbsp;{ &quot;START_ALL_SERVICES&quot;, cbStartAllServices },
+ &nbsp; &nbsp; &nbsp; &nbsp;{ &quot;STOP_ALL_SERVICES&quot;, cbStopAllServices },
+};
+
+////////////////////////////////////////////////////////////////////////////////////////////////////////
+////////////////////////////////////////////////////////////////////////////////////////////////////////
+////////////////// SERVICE IMPLEMENTATION //////////////////////////////////////////////////////////////
+////////////////////////////////////////////////////////////////////////////////////////////////////////
+////////////////////////////////////////////////////////////////////////////////////////////////////////
+
+class CAdminService : public IService
+{
+public:
+
+ &nbsp; &nbsp; &nbsp; &nbsp;/// Init the service, load the universal time.
+ &nbsp; &nbsp; &nbsp; &nbsp;void &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;init ()
+ &nbsp; &nbsp; &nbsp; &nbsp;{
+// &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;DebugLog-&gt;addNegativeFilter (&quot;L0:&quot;);
+// &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;DebugLog-&gt;addNegativeFilter (&quot;L1:&quot;);
+// &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;DebugLog-&gt;addNegativeFilter (&quot;L2:&quot;);
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;CNetManager::setConnectionCallback (&quot;AS&quot;, clientConnection, NULL);
+
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;//
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// Get the list of AESHosts, add in the structures and create connection to all AES
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;//
+
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;CConfigFile::CVar &amp;host = ConfigFile.getVar (&quot;AESHosts&quot;);
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;sint i;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;for (i = 0 ; i &lt; host.size (); i+=2)
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;string serverAlias = host.asString(i);
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;string serverAddr = host.asString(i+1);
+
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// add to the list
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;CAdminExecutorService aes;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;aes.ServerAlias = serverAlias;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;aes.ServerAddr = serverAddr;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;AdminExecutorServices.push_back (aes);
+
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// connect to the AES
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;CNetManager::setConnectionCallback (serverAlias, cbAESConnection, NULL);
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;CNetManager::setDisconnectionCallback (serverAlias, cbAESDisconnection, NULL);
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;CNetManager::addClient (serverAlias, serverAddr+&quot;:49996&quot;);
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;CNetManager::addCallbackArray (serverAlias, AESCallbackArray, sizeof (AESCallbackArray)/sizeof(AESCallbackArray[0]));
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}
+
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;//
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// Get the list of services in the shard
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;//
+
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;CConfigFile::CVar &amp;serv = ConfigFile.getVar (&quot;Services&quot;);
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;for (i = 0 ; i &lt; serv.size (); i+=2)
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;string serverAlias = serv.asString(i);
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;string serviceAlias = serv.asString(i+1);
+
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;AESIT aesit = findAdminExecutorService (serverAlias);
+
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// add new AES in the list
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;CService s;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;s.AliasName = serviceAlias;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;s.InConfig = true;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;(*aesit).Services.push_back (s);
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;displayServices ();
+ &nbsp; &nbsp; &nbsp; &nbsp;}
+
+ &nbsp; &nbsp; &nbsp; &nbsp;bool &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;update ()
+ &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;return true;
+ &nbsp; &nbsp; &nbsp; &nbsp;}
+};
+
+
+// AS is a server connection to the admin client
+// AESAS is a client connection to the admin executor
+
+/// Naming Service
+NLNET_SERVICE_MAIN (CAdminService, &quot;AS&quot;, &quot;admin_service&quot;, 49995, ClientCallbackArray);
+</PRE> \ No newline at end of file
diff --git a/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cpp?sortby=author b/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cpp?sortby=author
new file mode 100644
index 00000000..480da305
--- /dev/null
+++ b/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cpp?sortby=author
@@ -0,0 +1,277 @@
+<!doctype html public "-//W3C//DTD HTML 4.0 Transitional//EN" "http://www.w3.org/TR/REC-html40/loose.dtd">
+<HTML>
+<HEAD>
+ <TITLE>nevrax.org : cvs</TITLE>
+ <META name="keywords" content="freesoftware,nel,newt,snowballs,richard stallman,GNU,Multi-User Online World">
+
+ <LINK REL=stylesheet TYPE="text/css" HREF="http://www.nevrax.org/inc/css/nevrax.css">
+</HEAD>
+<BODY MARGINHEIGHT="0" MARGINWIDTH="0">
+
+<!-- uplinks -->
+<TABLE CELLSPACING=0 CELLPADDING=0 BORDER=0>
+ <TR>
+ <TD WIDTH=16><IMG SRC="http://www.nevrax.org/inc/img/pixel.gif" WIDTH="16" HEIGHT="16" BORDER=0 ALT=""></TD>
+ <TD WIDTH=140 BGCOLOR=#dddddd><IMG SRC="http://www.nevrax.org/inc/img/pixel.gif" WIDTH="140" HEIGHT="16" BORDER=0 ALT=""></TD>
+ <TD WIDTH=16><IMG SRC="http://www.nevrax.org/inc/img/pixel.gif" WIDTH="16" HEIGHT="16" BORDER=0 ALT=""></TD>
+ <TD><IMG width=6 height=14 SRC="http://www.nevrax.org/inc/img/reddots.gif" ALT="#" VSPACE=2 HSPACE=2 BORDER=0 ></TD><TD VALIGN=middle>&nbsp;<A CLASS=uplinks HREF=http://www.nevrax.org><b>Home</B></FONT></A>&nbsp;&nbsp;&nbsp;</TD>
+ <TD><IMG width=6 height=14 SRC="http://www.nevrax.org/inc/img/reddots.gif" ALT="#" VSPACE=2 HSPACE=2 BORDER=0 ></TD><TD VALIGN=middle>&nbsp;<A CLASS=uplinks HREF=http://www.nevrax.com><b>nevrax.com</B></FONT></A>&nbsp;&nbsp;&nbsp;</TD>
+ </TR>
+</TABLE>
+
+<!-- banner Nevrax -->
+<TABLE CELLSPACING=0 CELLPADDING=0 BORDER=0 WIDTH=100%>
+ <TR><TD BGCOLOR="#000000" BACKGROUND="http://www.nevrax.org/inc/img/black_banner.jpg"><A HREF="http://www.nevrax.org"><IMG SRC="http://www.nevrax.org/inc/img/nevrax.gif" WIDTH="170" HEIGHT="45" BORDER=0 ALT="Nevrax" ></A></TD></TR>
+</TABLE>
+
+<!-- main table -->
+<TABLE CELLSPACING=0 CELLPADDING=0 BORDER=0 height=100%>
+ <TR>
+ <TD WIDTH=16><IMG SRC="http://www.nevrax.org/inc/img/pixel.gif" WIDTH="16" HEIGHT="10" BORDER=0 ALT=""></TD>
+ <TD WIDTH=140 BGCOLOR=#dddddd VALIGN=TOP ALIGN=middle><IMG SRC="http://www.nevrax.org/inc/img/pixel.gif" WIDTH="140" HEIGHT="10" BORDER=0 ALT="">
+
+ <!------ Begin Box ------>
+ <TABLE BORDER=0 CELLSPACING=0 CELLPADDING=0 BGCOLOR=black><TR><TD><TABLE border=0 cellspacing=2 cellpadding=0 width=120><tr><TD ALIGN=middle bgcolor=black>
+ <FONT COLOR=white FACE="sans-serif"><B>Nevrax.org</B></FONT></TD></TR><tr><td colspan=2 bgcolor=#FFFFFF>
+ <TABLE cellspacing=0 cellpadding=1 border=0>
+ <tr><td ALIGN=middle><a class='linkbox' href="http://www.nevrax.org/news/" TITLE="Rubrique news"><img width=13 height=15 hspace=5 border=0 src=http://www.nevrax.org/inc/img/picto-news.gif ALT=#></A></td><td><a class='linkbox' href="http://www.nevrax.org/news/" TITLE="News">News</a></td></tr>
+ <tr><td ALIGN=middle><a class='linkbox' href="http://www.nevrax.org/mail/" TITLE="Rubrique mail"><img width=15 height=11 hspace=5 border=0 src=http://www.nevrax.org/inc/img/picto-mail.gif ALT=#></A></td><td><a class='linkbox' href="http://www.nevrax.org/mail/" TITLE="Mailing list archive">Mailing-list</a></td></tr>
+ <tr><td ALIGN=middle><a class='linkbox' href="http://www.nevrax.org/docs/" TITLE="Rubrique docs"><img width=14 height=16 hspace=5 border=0 src=http://www.nevrax.org/inc/img/picto-docs.gif ALT=#></A></td><td><a class='linkbox' href="http://www.nevrax.org/docs/" TITLE="Documentation">Documentation</a></td></tr>
+ <tr><td ALIGN=middle><a class='linkbox' href="http://www.nevrax.org/cvs/" TITLE="Rubrique cvs"><img width=13 height=17 hspace=5 border=0 src=http://www.nevrax.org/inc/img/picto-cvs.gif ALT=#></A></td><td><a class='linkbox' href="http://www.nevrax.org/cvs/" TITLE="CVS Web">CVS</a></td></tr>
+ <tr><td ALIGN=middle><a class='linkbox' href="http://www.nevrax.org/bugs/" TITLE="Rubrique bugs"><img width=20 height=16 hspace=5 border=0 src=http://www.nevrax.org/inc/img/picto-bugs.gif ALT=#></A></td><td><a class='linkbox' href="http://www.nevrax.org/bugs/" TITLE="Bugtracking">Bugs</a></td></tr>
+ <tr><td ALIGN=middle><a class='linkbox' href="http://www.nevrax.org/free/" TITLE="Rubrique license"><img width=18 height=12 hspace=5 border=0 src=http://www.nevrax.org/inc/img/picto-free.gif ALT=#></A></td><td><a class='linkbox' href="http://www.nevrax.org/free/" TITLE="Free Software">Free software</a></td></tr>
+ </TABLE>
+ </TD></TR></TABLE></TD></TR></TABLE>
+ <!------ End Box ------>
+
+ </TD>
+ <TD WIDTH=15><IMG SRC="http://www.nevrax.org/inc/img/pixel.gif" WIDTH="16" HEIGHT="16" BORDER=0 ALT=""></TD>
+ <TD ALIGN=left valign=top><IMG SRC="http://www.nevrax.org/inc/img/pixel.gif" WIDTH="140" HEIGHT="10" BORDER=0 ALT="">
+
+<!-- title -->
+<TABLE background="http://www.nevrax.org/inc/img/redline.gif" CELLSPACING=0 CELLPADDING=0 BORDER=0 width=100%><tr><td>
+<A HREF="http://www.nevrax.org/cvs/"><img src="http://www.nevrax.org/inc/img/t_cvs.gif" ALT="cvs" HEIGHT=20 BORDER=0></A>
+</td><td><IMG SRC="http://www.nevrax.org/inc/img/pixel.gif" WIDTH="1" HEIGHT="1" BORDER=0 ALT="">
+</td></tr></table>
+
+<!-- title -->
+<table width=100%><tr><td align=left><b> <a href="/cvs/cvsweb.cgi/?sortby=author">Nevrax</a> / <a href="/cvs/cvsweb.cgi/code/?sortby=author">code</a> / <a href="/cvs/cvsweb.cgi/code/nelns/?sortby=author">nelns</a> / <a href="/cvs/cvsweb.cgi/code/nelns/admin_service/?sortby=author">admin_service</a> / admin_service.cpp</b></td><td align=right><b></b></td></TR></TABLE>
+
+<!-- block -->
+<TABLE bgcolor="#dddddd" CELLSPACING=0 CELLPADDING=0 BORDER=0 width=100%><tr><td width=1% valign=middle><img width=6 height=14 hspace=2 vspace=2 src="http://www.nevrax.org/inc/img/reddots.gif"></TD>
+ <TD><B>admin_service.cpp</B></TD>
+ <TD ALIGN=RIGHT> </td>
+</tr></table>
+<P>
+<p>Default branch: MAIN<BR>
+<HR size=1 NOSHADE><P><a NAME="rev1.15"></a><a NAME="HEAD"></a><a NAME="MAIN"></a>
+ Revision <A HREF="admin_service.cpp?rev=1.15&amp;content-type=text/x-cvsweb-markup&amp;sortby=author"><b>1.15</b></A> / (<A HREF="/cvs/cvsweb.cgi/~checkout~/code/nelns/admin_service/admin_service.cpp?rev=1.15&amp;content-type=text/plain&amp;sortby=author" target="cvs_checkout" onClick="window.open('/cvs/cvsweb.cgi/~checkout~/code/nelns/admin_service/admin_service.cpp?rev=1.15&amp;content-type=text/plain','cvs_checkout','resizeable,scrollbars');"><b>download</b></A>) - <a href="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cpp?annotate=1.15&amp;sortby=author">annotate</a> - <A HREF="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cpp?r1=1.15&amp;sortby=author">[select for diffs]</A>
+, <i>Mon Mar 25 09:28:00 2002 UTC</i> (4 months ago) by <i>lecroart</i>
+<BR>Branch: <b><A HREF="admin_service.cpp?sortby=author&amp;only_with_tag=MAIN">MAIN</A>
+</b>
+<BR>CVS Tags: <b><A HREF="admin_service.cpp?sortby=author&amp;only_with_tag=HEAD">HEAD</A>
+</b><BR>Changes since <b>1.14: +8 -6
+ lines</b><BR>Diff to previous <A HREF="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cpp.diff?r1=1.14&amp;r2=1.15&amp;sortby=author">1.14</A>
+<PRE>
+CHANGED: use new service functions
+</PRE>
+<HR size=1 NOSHADE><P><a NAME="rev1.14"></a>
+ Revision <A HREF="admin_service.cpp?rev=1.14&amp;content-type=text/x-cvsweb-markup&amp;sortby=author"><b>1.14</b></A> / (<A HREF="/cvs/cvsweb.cgi/~checkout~/code/nelns/admin_service/admin_service.cpp?rev=1.14&amp;content-type=text/plain&amp;sortby=author" target="cvs_checkout" onClick="window.open('/cvs/cvsweb.cgi/~checkout~/code/nelns/admin_service/admin_service.cpp?rev=1.14&amp;content-type=text/plain','cvs_checkout','resizeable,scrollbars');"><b>download</b></A>) - <a href="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cpp?annotate=1.14&amp;sortby=author">annotate</a> - <A HREF="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cpp?r1=1.14&amp;sortby=author">[select for diffs]</A>
+, <i>Tue Mar 19 17:42:48 2002 UTC</i> (4 months ago) by <i>valignat</i>
+<BR>Branch: <b><A HREF="admin_service.cpp?sortby=author&amp;only_with_tag=MAIN">MAIN</A>
+</b>
+<BR>Changes since <b>1.13: +14 -2
+ lines</b><BR>Diff to previous <A HREF="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cpp.diff?r1=1.13&amp;r2=1.14&amp;sortby=author">1.13</A>
+<PRE>
+Applied patches which help to have a clen install on GNU/Linux and to make a Debian package (changes on the management of config and log files, bugfixes, etc ...)
+</PRE>
+<HR size=1 NOSHADE><P><a NAME="rev1.13"></a>
+ Revision <A HREF="admin_service.cpp?rev=1.13&amp;content-type=text/x-cvsweb-markup&amp;sortby=author"><b>1.13</b></A> / (<A HREF="/cvs/cvsweb.cgi/~checkout~/code/nelns/admin_service/admin_service.cpp?rev=1.13&amp;content-type=text/plain&amp;sortby=author" target="cvs_checkout" onClick="window.open('/cvs/cvsweb.cgi/~checkout~/code/nelns/admin_service/admin_service.cpp?rev=1.13&amp;content-type=text/plain','cvs_checkout','resizeable,scrollbars');"><b>download</b></A>) - <a href="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cpp?annotate=1.13&amp;sortby=author">annotate</a> - <A HREF="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cpp?r1=1.13&amp;sortby=author">[select for diffs]</A>
+, <i>Fri Mar 1 10:20:32 2002 UTC</i> (4 months, 3 weeks ago) by <i>lecroart</i>
+<BR>Branch: <b><A HREF="admin_service.cpp?sortby=author&amp;only_with_tag=MAIN">MAIN</A>
+</b>
+<BR>Changes since <b>1.12: +8 -16
+ lines</b><BR>Diff to previous <A HREF="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cpp.diff?r1=1.12&amp;r2=1.13&amp;sortby=author">1.12</A>
+<PRE>
+ADDED: password per shard auth
+</PRE>
+<HR size=1 NOSHADE><P><a NAME="rev1.12"></a>
+ Revision <A HREF="admin_service.cpp?rev=1.12&amp;content-type=text/x-cvsweb-markup&amp;sortby=author"><b>1.12</b></A> / (<A HREF="/cvs/cvsweb.cgi/~checkout~/code/nelns/admin_service/admin_service.cpp?rev=1.12&amp;content-type=text/plain&amp;sortby=author" target="cvs_checkout" onClick="window.open('/cvs/cvsweb.cgi/~checkout~/code/nelns/admin_service/admin_service.cpp?rev=1.12&amp;content-type=text/plain','cvs_checkout','resizeable,scrollbars');"><b>download</b></A>) - <a href="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cpp?annotate=1.12&amp;sortby=author">annotate</a> - <A HREF="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cpp?r1=1.12&amp;sortby=author">[select for diffs]</A>
+, <i>Fri Feb 15 17:07:43 2002 UTC</i> (5 months, 1 week ago) by <i>lecroart</i>
+<BR>Branch: <b><A HREF="admin_service.cpp?sortby=author&amp;only_with_tag=MAIN">MAIN</A>
+</b>
+<BR>Changes since <b>1.11: +50 -2
+ lines</b><BR>Diff to previous <A HREF="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cpp.diff?r1=1.11&amp;r2=1.12&amp;sortby=author">1.11</A>
+<PRE>
+ADDED: login password
+</PRE>
+<HR size=1 NOSHADE><P><a NAME="rev1.11"></a>
+ Revision <A HREF="admin_service.cpp?rev=1.11&amp;content-type=text/x-cvsweb-markup&amp;sortby=author"><b>1.11</b></A> / (<A HREF="/cvs/cvsweb.cgi/~checkout~/code/nelns/admin_service/admin_service.cpp?rev=1.11&amp;content-type=text/plain&amp;sortby=author" target="cvs_checkout" onClick="window.open('/cvs/cvsweb.cgi/~checkout~/code/nelns/admin_service/admin_service.cpp?rev=1.11&amp;content-type=text/plain','cvs_checkout','resizeable,scrollbars');"><b>download</b></A>) - <a href="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cpp?annotate=1.11&amp;sortby=author">annotate</a> - <A HREF="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cpp?r1=1.11&amp;sortby=author">[select for diffs]</A>
+, <i>Tue Jul 10 16:49:53 2001 UTC</i> (12 months, 2 weeks ago) by <i>lecroart</i>
+<BR>Branch: <b><A HREF="admin_service.cpp?sortby=author&amp;only_with_tag=MAIN">MAIN</A>
+</b>
+<BR>Changes since <b>1.10: +18 -14
+ lines</b><BR>Diff to previous <A HREF="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cpp.diff?r1=1.10&amp;r2=1.11&amp;sortby=author">1.10</A>
+<PRE>
+BUGFIX: when a service isn't ready and already disconnected, it doesn't crash anymore
+</PRE>
+<HR size=1 NOSHADE><P><a NAME="rev1.10"></a>
+ Revision <A HREF="admin_service.cpp?rev=1.10&amp;content-type=text/x-cvsweb-markup&amp;sortby=author"><b>1.10</b></A> / (<A HREF="/cvs/cvsweb.cgi/~checkout~/code/nelns/admin_service/admin_service.cpp?rev=1.10&amp;content-type=text/plain&amp;sortby=author" target="cvs_checkout" onClick="window.open('/cvs/cvsweb.cgi/~checkout~/code/nelns/admin_service/admin_service.cpp?rev=1.10&amp;content-type=text/plain','cvs_checkout','resizeable,scrollbars');"><b>download</b></A>) - <a href="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cpp?annotate=1.10&amp;sortby=author">annotate</a> - <A HREF="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cpp?r1=1.10&amp;sortby=author">[select for diffs]</A>
+, <i>Thu Jul 5 08:26:07 2001 UTC</i> (12 months, 2 weeks ago) by <i>lecroart</i>
+<BR>Branch: <b><A HREF="admin_service.cpp?sortby=author&amp;only_with_tag=MAIN">MAIN</A>
+</b>
+<BR>Changes since <b>1.9: +1 -6
+ lines</b><BR>Diff to previous <A HREF="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cpp.diff?r1=1.9&amp;r2=1.10&amp;sortby=author">1.9</A>
+<PRE>
+REMOVED: update()
+</PRE>
+<HR size=1 NOSHADE><P><a NAME="rev1.9"></a>
+ Revision <A HREF="admin_service.cpp?rev=1.9&amp;content-type=text/x-cvsweb-markup&amp;sortby=author"><b>1.9</b></A> / (<A HREF="/cvs/cvsweb.cgi/~checkout~/code/nelns/admin_service/admin_service.cpp?rev=1.9&amp;content-type=text/plain&amp;sortby=author" target="cvs_checkout" onClick="window.open('/cvs/cvsweb.cgi/~checkout~/code/nelns/admin_service/admin_service.cpp?rev=1.9&amp;content-type=text/plain','cvs_checkout','resizeable,scrollbars');"><b>download</b></A>) - <a href="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cpp?annotate=1.9&amp;sortby=author">annotate</a> - <A HREF="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cpp?r1=1.9&amp;sortby=author">[select for diffs]</A>
+, <i>Wed Jun 27 08:34:23 2001 UTC</i> (12 months, 4 weeks ago) by <i>lecroart</i>
+<BR>Branch: <b><A HREF="admin_service.cpp?sortby=author&amp;only_with_tag=MAIN">MAIN</A>
+</b>
+<BR>Changes since <b>1.8: +14 -4
+ lines</b><BR>Diff to previous <A HREF="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cpp.diff?r1=1.8&amp;r2=1.9&amp;sortby=author">1.8</A>
+<PRE>
+ADDED: command redirection
+</PRE>
+<HR size=1 NOSHADE><P><a NAME="rev1.8"></a>
+ Revision <A HREF="admin_service.cpp?rev=1.8&amp;content-type=text/x-cvsweb-markup&amp;sortby=author"><b>1.8</b></A> / (<A HREF="/cvs/cvsweb.cgi/~checkout~/code/nelns/admin_service/admin_service.cpp?rev=1.8&amp;content-type=text/plain&amp;sortby=author" target="cvs_checkout" onClick="window.open('/cvs/cvsweb.cgi/~checkout~/code/nelns/admin_service/admin_service.cpp?rev=1.8&amp;content-type=text/plain','cvs_checkout','resizeable,scrollbars');"><b>download</b></A>) - <a href="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cpp?annotate=1.8&amp;sortby=author">annotate</a> - <A HREF="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cpp?r1=1.8&amp;sortby=author">[select for diffs]</A>
+, <i>Mon Jun 18 14:54:06 2001 UTC</i> (13 months ago) by <i>lecroart</i>
+<BR>Branch: <b><A HREF="admin_service.cpp?sortby=author&amp;only_with_tag=MAIN">MAIN</A>
+</b>
+<BR>Changes since <b>1.7: +2 -2
+ lines</b><BR>Diff to previous <A HREF="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cpp.diff?r1=1.7&amp;r2=1.8&amp;sortby=author">1.7</A>
+<PRE>
+BUGFIX: linux compilation
+</PRE>
+<HR size=1 NOSHADE><P><a NAME="rev1.7"></a>
+ Revision <A HREF="admin_service.cpp?rev=1.7&amp;content-type=text/x-cvsweb-markup&amp;sortby=author"><b>1.7</b></A> / (<A HREF="/cvs/cvsweb.cgi/~checkout~/code/nelns/admin_service/admin_service.cpp?rev=1.7&amp;content-type=text/plain&amp;sortby=author" target="cvs_checkout" onClick="window.open('/cvs/cvsweb.cgi/~checkout~/code/nelns/admin_service/admin_service.cpp?rev=1.7&amp;content-type=text/plain','cvs_checkout','resizeable,scrollbars');"><b>download</b></A>) - <a href="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cpp?annotate=1.7&amp;sortby=author">annotate</a> - <A HREF="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cpp?r1=1.7&amp;sortby=author">[select for diffs]</A>
+, <i>Mon Jun 18 14:43:31 2001 UTC</i> (13 months ago) by <i>lecroart</i>
+<BR>Branch: <b><A HREF="admin_service.cpp?sortby=author&amp;only_with_tag=MAIN">MAIN</A>
+</b>
+<BR>Changes since <b>1.6: +10 -9
+ lines</b><BR>Diff to previous <A HREF="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cpp.diff?r1=1.6&amp;r2=1.7&amp;sortby=author">1.6</A>
+<PRE>
+BUGFIX: linux compilation
+</PRE>
+<HR size=1 NOSHADE><P><a NAME="rev1.6"></a>
+ Revision <A HREF="admin_service.cpp?rev=1.6&amp;content-type=text/x-cvsweb-markup&amp;sortby=author"><b>1.6</b></A> / (<A HREF="/cvs/cvsweb.cgi/~checkout~/code/nelns/admin_service/admin_service.cpp?rev=1.6&amp;content-type=text/plain&amp;sortby=author" target="cvs_checkout" onClick="window.open('/cvs/cvsweb.cgi/~checkout~/code/nelns/admin_service/admin_service.cpp?rev=1.6&amp;content-type=text/plain','cvs_checkout','resizeable,scrollbars');"><b>download</b></A>) - <a href="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cpp?annotate=1.6&amp;sortby=author">annotate</a> - <A HREF="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cpp?r1=1.6&amp;sortby=author">[select for diffs]</A>
+, <i>Thu Jun 7 16:19:05 2001 UTC</i> (13 months, 2 weeks ago) by <i>lecroart</i>
+<BR>Branch: <b><A HREF="admin_service.cpp?sortby=author&amp;only_with_tag=MAIN">MAIN</A>
+</b>
+<BR>Changes since <b>1.5: +134 -48
+ lines</b><BR>Diff to previous <A HREF="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cpp.diff?r1=1.5&amp;r2=1.6&amp;sortby=author">1.5</A>
+<PRE>
+ADDED: commands system
+</PRE>
+<HR size=1 NOSHADE><P><a NAME="rev1.5"></a>
+ Revision <A HREF="admin_service.cpp?rev=1.5&amp;content-type=text/x-cvsweb-markup&amp;sortby=author"><b>1.5</b></A> / (<A HREF="/cvs/cvsweb.cgi/~checkout~/code/nelns/admin_service/admin_service.cpp?rev=1.5&amp;content-type=text/plain&amp;sortby=author" target="cvs_checkout" onClick="window.open('/cvs/cvsweb.cgi/~checkout~/code/nelns/admin_service/admin_service.cpp?rev=1.5&amp;content-type=text/plain','cvs_checkout','resizeable,scrollbars');"><b>download</b></A>) - <a href="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cpp?annotate=1.5&amp;sortby=author">annotate</a> - <A HREF="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cpp?r1=1.5&amp;sortby=author">[select for diffs]</A>
+, <i>Thu May 31 16:44:54 2001 UTC</i> (13 months, 3 weeks ago) by <i>lecroart</i>
+<BR>Branch: <b><A HREF="admin_service.cpp?sortby=author&amp;only_with_tag=MAIN">MAIN</A>
+</b>
+<BR>Changes since <b>1.4: +156 -61
+ lines</b><BR>Diff to previous <A HREF="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cpp.diff?r1=1.4&amp;r2=1.5&amp;sortby=author">1.4</A>
+<PRE>
+ADDED: service alias naming
+</PRE>
+<HR size=1 NOSHADE><P><a NAME="rev1.4"></a>
+ Revision <A HREF="admin_service.cpp?rev=1.4&amp;content-type=text/x-cvsweb-markup&amp;sortby=author"><b>1.4</b></A> / (<A HREF="/cvs/cvsweb.cgi/~checkout~/code/nelns/admin_service/admin_service.cpp?rev=1.4&amp;content-type=text/plain&amp;sortby=author" target="cvs_checkout" onClick="window.open('/cvs/cvsweb.cgi/~checkout~/code/nelns/admin_service/admin_service.cpp?rev=1.4&amp;content-type=text/plain','cvs_checkout','resizeable,scrollbars');"><b>download</b></A>) - <a href="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cpp?annotate=1.4&amp;sortby=author">annotate</a> - <A HREF="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cpp?r1=1.4&amp;sortby=author">[select for diffs]</A>
+, <i>Fri May 18 16:51:33 2001 UTC</i> (14 months ago) by <i>lecroart</i>
+<BR>Branch: <b><A HREF="admin_service.cpp?sortby=author&amp;only_with_tag=MAIN">MAIN</A>
+</b>
+<BR>Changes since <b>1.3: +405 -101
+ lines</b><BR>Diff to previous <A HREF="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cpp.diff?r1=1.3&amp;r2=1.4&amp;sortby=author">1.3</A>
+<PRE>
+ADDED: work in progress. added gtk
+</PRE>
+<HR size=1 NOSHADE><P><a NAME="rev1.3"></a>
+ Revision <A HREF="admin_service.cpp?rev=1.3&amp;content-type=text/x-cvsweb-markup&amp;sortby=author"><b>1.3</b></A> / (<A HREF="/cvs/cvsweb.cgi/~checkout~/code/nelns/admin_service/admin_service.cpp?rev=1.3&amp;content-type=text/plain&amp;sortby=author" target="cvs_checkout" onClick="window.open('/cvs/cvsweb.cgi/~checkout~/code/nelns/admin_service/admin_service.cpp?rev=1.3&amp;content-type=text/plain','cvs_checkout','resizeable,scrollbars');"><b>download</b></A>) - <a href="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cpp?annotate=1.3&amp;sortby=author">annotate</a> - <A HREF="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cpp?r1=1.3&amp;sortby=author">[select for diffs]</A>
+, <i>Thu May 10 08:20:06 2001 UTC</i> (14 months, 2 weeks ago) by <i>lecroart</i>
+<BR>Branch: <b><A HREF="admin_service.cpp?sortby=author&amp;only_with_tag=MAIN">MAIN</A>
+</b>
+<BR>Changes since <b>1.2: +233 -34
+ lines</b><BR>Diff to previous <A HREF="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cpp.diff?r1=1.2&amp;r2=1.3&amp;sortby=author">1.2</A>
+<PRE>
+ADDED: changed the data structures
+</PRE>
+<HR size=1 NOSHADE><P><a NAME="rev1.2"></a>
+ Revision <A HREF="admin_service.cpp?rev=1.2&amp;content-type=text/x-cvsweb-markup&amp;sortby=author"><b>1.2</b></A> / (<A HREF="/cvs/cvsweb.cgi/~checkout~/code/nelns/admin_service/admin_service.cpp?rev=1.2&amp;content-type=text/plain&amp;sortby=author" target="cvs_checkout" onClick="window.open('/cvs/cvsweb.cgi/~checkout~/code/nelns/admin_service/admin_service.cpp?rev=1.2&amp;content-type=text/plain','cvs_checkout','resizeable,scrollbars');"><b>download</b></A>) - <a href="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cpp?annotate=1.2&amp;sortby=author">annotate</a> - <A HREF="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cpp?r1=1.2&amp;sortby=author">[select for diffs]</A>
+, <i>Thu May 3 13:19:13 2001 UTC</i> (14 months, 3 weeks ago) by <i>lecroart</i>
+<BR>Branch: <b><A HREF="admin_service.cpp?sortby=author&amp;only_with_tag=MAIN">MAIN</A>
+</b>
+<BR>Changes since <b>1.1: +2 -6
+ lines</b><BR>Diff to previous <A HREF="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cpp.diff?r1=1.1&amp;r2=1.2&amp;sortby=author">1.1</A>
+<PRE>
+BUGFIX: now compile on linux
+</PRE>
+<HR size=1 NOSHADE><P><a NAME="rev1.1"></a>
+ Revision <A HREF="admin_service.cpp?rev=1.1&amp;content-type=text/x-cvsweb-markup&amp;sortby=author"><b>1.1</b></A> / (<A HREF="/cvs/cvsweb.cgi/~checkout~/code/nelns/admin_service/admin_service.cpp?rev=1.1&amp;content-type=text/plain&amp;sortby=author" target="cvs_checkout" onClick="window.open('/cvs/cvsweb.cgi/~checkout~/code/nelns/admin_service/admin_service.cpp?rev=1.1&amp;content-type=text/plain','cvs_checkout','resizeable,scrollbars');"><b>download</b></A>) - <a href="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cpp?annotate=1.1&amp;sortby=author">annotate</a> - <A HREF="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cpp?r1=1.1&amp;sortby=author">[select for diffs]</A>
+, <i>Wed May 2 12:36:39 2001 UTC</i> (14 months, 3 weeks ago) by <i>lecroart</i>
+<BR>Branch: <b><A HREF="admin_service.cpp?sortby=author&amp;only_with_tag=MAIN">MAIN</A>
+</b>
+<BR>Diff<PRE>
+ADD: new version of the network system (in NeL and NeLns)
+</PRE>
+
+<!-- block -->
+<TABLE bgcolor="#dddddd" CELLSPACING=0 CELLPADDING=0 BORDER=0 width=100%><tr><td width=1% valign=middle><img width=6 height=14 hspace=2 vspace=2 src="http://www.nevrax.org/inc/img/reddots.gif"></TD>
+ <TD><B>Request Diffs</B></TD>
+ <TD ALIGN=RIGHT> </td>
+</tr></table>
+<P>
+<P>
+<FORM METHOD="GET" ACTION="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cpp.diff" NAME="diff_select">
+<INPUT TYPE=HIDDEN NAME="sortby" VALUE="author">
+Diffs between
+<SELECT NAME="r1">
+<OPTION VALUE="text" SELECTED>Use Text Field
+<OPTION VALUE="1:MAIN">MAIN
+<OPTION VALUE="1.15:HEAD">HEAD
+</SELECT>
+<INPUT TYPE="TEXT" SIZE="12" NAME="tr1" VALUE="1.1" onChange='document.diff_select.r1.selectedIndex=0'>
+ and
+<SELECT NAME="r2">
+<OPTION VALUE="text" SELECTED>Use Text Field
+<OPTION VALUE="1:MAIN">MAIN
+<OPTION VALUE="1.15:HEAD">HEAD
+</SELECT>
+<INPUT TYPE="TEXT" SIZE="12" NAME="tr2" VALUE="1.15" onChange='docuement.diff_select.r2.selectedIndex=0'>
+<BR>Type of Diff should be a&nbsp;<SELECT NAME="f">
+<OPTION VALUE=h SELECTED>Colored Diff<OPTION VALUE=H>Long Colored Diff<OPTION VALUE=u>Unidiff<OPTION VALUE=c>Context Diff<OPTION VALUE=s>Side by Side</SELECT><INPUT TYPE=SUBMIT VALUE=" Get Diffs ">
+</FORM>
+
+<!-- block -->
+<TABLE bgcolor="#dddddd" CELLSPACING=0 CELLPADDING=0 BORDER=0 width=100%><tr><td width=1% valign=middle><img width=6 height=14 hspace=2 vspace=2 src="http://www.nevrax.org/inc/img/reddots.gif"></TD>
+ <TD><B>Select branch</B></TD>
+ <TD ALIGN=RIGHT> </td>
+</tr></table>
+<P>
+<P>
+<A name=branch></A>
+<FORM METHOD="GET" ACTION="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cpp">
+<INPUT TYPE=HIDDEN NAME="sortby" VALUE="author">
+View only Branch:
+<SELECT NAME="only_with_tag" onchange="submit()">
+<OPTION VALUE="">Show all branches
+<OPTION>MAIN
+</SELECT>
+<INPUT TYPE=SUBMIT VALUE=" View Branch ">
+</FORM>
+<A name=logsort></A>
+<FORM METHOD="GET" ACTION="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cpp">
+<INPUT TYPE=HIDDEN NAME="sortby" VALUE="author">
+Sort log by:
+<SELECT NAME="logsort" onchange="submit()">
+<OPTION VALUE=cvs>Not sorted<OPTION VALUE=date SELECTED>Commit date<OPTION VALUE=rev>Revision</SELECT>
+<INPUT TYPE=SUBMIT VALUE=" Sort ">
+</FORM>
+
+<!-- footer -->
+<BR><FONT Size=+5>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </FONT>
+</TD>
+<TD WIDTH=15><IMG SRC=http://www.nevrax.org/inc/img/pixel.gif WIDTH=15 HEIGHT=15 BORDER=0 ALT=""></TD>
+</TR>
+</TABLE>
+</BODY>
+</HTML></BODY></HTML>
diff --git a/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cpp?sortby=date b/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cpp?sortby=date
new file mode 100644
index 00000000..a6646142
--- /dev/null
+++ b/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cpp?sortby=date
@@ -0,0 +1,277 @@
+<!doctype html public "-//W3C//DTD HTML 4.0 Transitional//EN" "http://www.w3.org/TR/REC-html40/loose.dtd">
+<HTML>
+<HEAD>
+ <TITLE>nevrax.org : cvs</TITLE>
+ <META name="keywords" content="freesoftware,nel,newt,snowballs,richard stallman,GNU,Multi-User Online World">
+
+ <LINK REL=stylesheet TYPE="text/css" HREF="http://www.nevrax.org/inc/css/nevrax.css">
+</HEAD>
+<BODY MARGINHEIGHT="0" MARGINWIDTH="0">
+
+<!-- uplinks -->
+<TABLE CELLSPACING=0 CELLPADDING=0 BORDER=0>
+ <TR>
+ <TD WIDTH=16><IMG SRC="http://www.nevrax.org/inc/img/pixel.gif" WIDTH="16" HEIGHT="16" BORDER=0 ALT=""></TD>
+ <TD WIDTH=140 BGCOLOR=#dddddd><IMG SRC="http://www.nevrax.org/inc/img/pixel.gif" WIDTH="140" HEIGHT="16" BORDER=0 ALT=""></TD>
+ <TD WIDTH=16><IMG SRC="http://www.nevrax.org/inc/img/pixel.gif" WIDTH="16" HEIGHT="16" BORDER=0 ALT=""></TD>
+ <TD><IMG width=6 height=14 SRC="http://www.nevrax.org/inc/img/reddots.gif" ALT="#" VSPACE=2 HSPACE=2 BORDER=0 ></TD><TD VALIGN=middle>&nbsp;<A CLASS=uplinks HREF=http://www.nevrax.org><b>Home</B></FONT></A>&nbsp;&nbsp;&nbsp;</TD>
+ <TD><IMG width=6 height=14 SRC="http://www.nevrax.org/inc/img/reddots.gif" ALT="#" VSPACE=2 HSPACE=2 BORDER=0 ></TD><TD VALIGN=middle>&nbsp;<A CLASS=uplinks HREF=http://www.nevrax.com><b>nevrax.com</B></FONT></A>&nbsp;&nbsp;&nbsp;</TD>
+ </TR>
+</TABLE>
+
+<!-- banner Nevrax -->
+<TABLE CELLSPACING=0 CELLPADDING=0 BORDER=0 WIDTH=100%>
+ <TR><TD BGCOLOR="#000000" BACKGROUND="http://www.nevrax.org/inc/img/black_banner.jpg"><A HREF="http://www.nevrax.org"><IMG SRC="http://www.nevrax.org/inc/img/nevrax.gif" WIDTH="170" HEIGHT="45" BORDER=0 ALT="Nevrax" ></A></TD></TR>
+</TABLE>
+
+<!-- main table -->
+<TABLE CELLSPACING=0 CELLPADDING=0 BORDER=0 height=100%>
+ <TR>
+ <TD WIDTH=16><IMG SRC="http://www.nevrax.org/inc/img/pixel.gif" WIDTH="16" HEIGHT="10" BORDER=0 ALT=""></TD>
+ <TD WIDTH=140 BGCOLOR=#dddddd VALIGN=TOP ALIGN=middle><IMG SRC="http://www.nevrax.org/inc/img/pixel.gif" WIDTH="140" HEIGHT="10" BORDER=0 ALT="">
+
+ <!------ Begin Box ------>
+ <TABLE BORDER=0 CELLSPACING=0 CELLPADDING=0 BGCOLOR=black><TR><TD><TABLE border=0 cellspacing=2 cellpadding=0 width=120><tr><TD ALIGN=middle bgcolor=black>
+ <FONT COLOR=white FACE="sans-serif"><B>Nevrax.org</B></FONT></TD></TR><tr><td colspan=2 bgcolor=#FFFFFF>
+ <TABLE cellspacing=0 cellpadding=1 border=0>
+ <tr><td ALIGN=middle><a class='linkbox' href="http://www.nevrax.org/news/" TITLE="Rubrique news"><img width=13 height=15 hspace=5 border=0 src=http://www.nevrax.org/inc/img/picto-news.gif ALT=#></A></td><td><a class='linkbox' href="http://www.nevrax.org/news/" TITLE="News">News</a></td></tr>
+ <tr><td ALIGN=middle><a class='linkbox' href="http://www.nevrax.org/mail/" TITLE="Rubrique mail"><img width=15 height=11 hspace=5 border=0 src=http://www.nevrax.org/inc/img/picto-mail.gif ALT=#></A></td><td><a class='linkbox' href="http://www.nevrax.org/mail/" TITLE="Mailing list archive">Mailing-list</a></td></tr>
+ <tr><td ALIGN=middle><a class='linkbox' href="http://www.nevrax.org/docs/" TITLE="Rubrique docs"><img width=14 height=16 hspace=5 border=0 src=http://www.nevrax.org/inc/img/picto-docs.gif ALT=#></A></td><td><a class='linkbox' href="http://www.nevrax.org/docs/" TITLE="Documentation">Documentation</a></td></tr>
+ <tr><td ALIGN=middle><a class='linkbox' href="http://www.nevrax.org/cvs/" TITLE="Rubrique cvs"><img width=13 height=17 hspace=5 border=0 src=http://www.nevrax.org/inc/img/picto-cvs.gif ALT=#></A></td><td><a class='linkbox' href="http://www.nevrax.org/cvs/" TITLE="CVS Web">CVS</a></td></tr>
+ <tr><td ALIGN=middle><a class='linkbox' href="http://www.nevrax.org/bugs/" TITLE="Rubrique bugs"><img width=20 height=16 hspace=5 border=0 src=http://www.nevrax.org/inc/img/picto-bugs.gif ALT=#></A></td><td><a class='linkbox' href="http://www.nevrax.org/bugs/" TITLE="Bugtracking">Bugs</a></td></tr>
+ <tr><td ALIGN=middle><a class='linkbox' href="http://www.nevrax.org/free/" TITLE="Rubrique license"><img width=18 height=12 hspace=5 border=0 src=http://www.nevrax.org/inc/img/picto-free.gif ALT=#></A></td><td><a class='linkbox' href="http://www.nevrax.org/free/" TITLE="Free Software">Free software</a></td></tr>
+ </TABLE>
+ </TD></TR></TABLE></TD></TR></TABLE>
+ <!------ End Box ------>
+
+ </TD>
+ <TD WIDTH=15><IMG SRC="http://www.nevrax.org/inc/img/pixel.gif" WIDTH="16" HEIGHT="16" BORDER=0 ALT=""></TD>
+ <TD ALIGN=left valign=top><IMG SRC="http://www.nevrax.org/inc/img/pixel.gif" WIDTH="140" HEIGHT="10" BORDER=0 ALT="">
+
+<!-- title -->
+<TABLE background="http://www.nevrax.org/inc/img/redline.gif" CELLSPACING=0 CELLPADDING=0 BORDER=0 width=100%><tr><td>
+<A HREF="http://www.nevrax.org/cvs/"><img src="http://www.nevrax.org/inc/img/t_cvs.gif" ALT="cvs" HEIGHT=20 BORDER=0></A>
+</td><td><IMG SRC="http://www.nevrax.org/inc/img/pixel.gif" WIDTH="1" HEIGHT="1" BORDER=0 ALT="">
+</td></tr></table>
+
+<!-- title -->
+<table width=100%><tr><td align=left><b> <a href="/cvs/cvsweb.cgi/?sortby=date">Nevrax</a> / <a href="/cvs/cvsweb.cgi/code/?sortby=date">code</a> / <a href="/cvs/cvsweb.cgi/code/nelns/?sortby=date">nelns</a> / <a href="/cvs/cvsweb.cgi/code/nelns/admin_service/?sortby=date">admin_service</a> / admin_service.cpp</b></td><td align=right><b></b></td></TR></TABLE>
+
+<!-- block -->
+<TABLE bgcolor="#dddddd" CELLSPACING=0 CELLPADDING=0 BORDER=0 width=100%><tr><td width=1% valign=middle><img width=6 height=14 hspace=2 vspace=2 src="http://www.nevrax.org/inc/img/reddots.gif"></TD>
+ <TD><B>admin_service.cpp</B></TD>
+ <TD ALIGN=RIGHT> </td>
+</tr></table>
+<P>
+<p>Default branch: MAIN<BR>
+<HR size=1 NOSHADE><P><a NAME="rev1.15"></a><a NAME="HEAD"></a><a NAME="MAIN"></a>
+ Revision <A HREF="admin_service.cpp?rev=1.15&amp;content-type=text/x-cvsweb-markup&amp;sortby=date"><b>1.15</b></A> / (<A HREF="/cvs/cvsweb.cgi/~checkout~/code/nelns/admin_service/admin_service.cpp?rev=1.15&amp;content-type=text/plain&amp;sortby=date" target="cvs_checkout" onClick="window.open('/cvs/cvsweb.cgi/~checkout~/code/nelns/admin_service/admin_service.cpp?rev=1.15&amp;content-type=text/plain','cvs_checkout','resizeable,scrollbars');"><b>download</b></A>) - <a href="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cpp?annotate=1.15&amp;sortby=date">annotate</a> - <A HREF="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cpp?r1=1.15&amp;sortby=date">[select for diffs]</A>
+, <i>Mon Mar 25 09:28:00 2002 UTC</i> (4 months ago) by <i>lecroart</i>
+<BR>Branch: <b><A HREF="admin_service.cpp?sortby=date&amp;only_with_tag=MAIN">MAIN</A>
+</b>
+<BR>CVS Tags: <b><A HREF="admin_service.cpp?sortby=date&amp;only_with_tag=HEAD">HEAD</A>
+</b><BR>Changes since <b>1.14: +8 -6
+ lines</b><BR>Diff to previous <A HREF="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cpp.diff?r1=1.14&amp;r2=1.15&amp;sortby=date">1.14</A>
+<PRE>
+CHANGED: use new service functions
+</PRE>
+<HR size=1 NOSHADE><P><a NAME="rev1.14"></a>
+ Revision <A HREF="admin_service.cpp?rev=1.14&amp;content-type=text/x-cvsweb-markup&amp;sortby=date"><b>1.14</b></A> / (<A HREF="/cvs/cvsweb.cgi/~checkout~/code/nelns/admin_service/admin_service.cpp?rev=1.14&amp;content-type=text/plain&amp;sortby=date" target="cvs_checkout" onClick="window.open('/cvs/cvsweb.cgi/~checkout~/code/nelns/admin_service/admin_service.cpp?rev=1.14&amp;content-type=text/plain','cvs_checkout','resizeable,scrollbars');"><b>download</b></A>) - <a href="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cpp?annotate=1.14&amp;sortby=date">annotate</a> - <A HREF="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cpp?r1=1.14&amp;sortby=date">[select for diffs]</A>
+, <i>Tue Mar 19 17:42:48 2002 UTC</i> (4 months ago) by <i>valignat</i>
+<BR>Branch: <b><A HREF="admin_service.cpp?sortby=date&amp;only_with_tag=MAIN">MAIN</A>
+</b>
+<BR>Changes since <b>1.13: +14 -2
+ lines</b><BR>Diff to previous <A HREF="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cpp.diff?r1=1.13&amp;r2=1.14&amp;sortby=date">1.13</A>
+<PRE>
+Applied patches which help to have a clen install on GNU/Linux and to make a Debian package (changes on the management of config and log files, bugfixes, etc ...)
+</PRE>
+<HR size=1 NOSHADE><P><a NAME="rev1.13"></a>
+ Revision <A HREF="admin_service.cpp?rev=1.13&amp;content-type=text/x-cvsweb-markup&amp;sortby=date"><b>1.13</b></A> / (<A HREF="/cvs/cvsweb.cgi/~checkout~/code/nelns/admin_service/admin_service.cpp?rev=1.13&amp;content-type=text/plain&amp;sortby=date" target="cvs_checkout" onClick="window.open('/cvs/cvsweb.cgi/~checkout~/code/nelns/admin_service/admin_service.cpp?rev=1.13&amp;content-type=text/plain','cvs_checkout','resizeable,scrollbars');"><b>download</b></A>) - <a href="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cpp?annotate=1.13&amp;sortby=date">annotate</a> - <A HREF="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cpp?r1=1.13&amp;sortby=date">[select for diffs]</A>
+, <i>Fri Mar 1 10:20:32 2002 UTC</i> (4 months, 3 weeks ago) by <i>lecroart</i>
+<BR>Branch: <b><A HREF="admin_service.cpp?sortby=date&amp;only_with_tag=MAIN">MAIN</A>
+</b>
+<BR>Changes since <b>1.12: +8 -16
+ lines</b><BR>Diff to previous <A HREF="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cpp.diff?r1=1.12&amp;r2=1.13&amp;sortby=date">1.12</A>
+<PRE>
+ADDED: password per shard auth
+</PRE>
+<HR size=1 NOSHADE><P><a NAME="rev1.12"></a>
+ Revision <A HREF="admin_service.cpp?rev=1.12&amp;content-type=text/x-cvsweb-markup&amp;sortby=date"><b>1.12</b></A> / (<A HREF="/cvs/cvsweb.cgi/~checkout~/code/nelns/admin_service/admin_service.cpp?rev=1.12&amp;content-type=text/plain&amp;sortby=date" target="cvs_checkout" onClick="window.open('/cvs/cvsweb.cgi/~checkout~/code/nelns/admin_service/admin_service.cpp?rev=1.12&amp;content-type=text/plain','cvs_checkout','resizeable,scrollbars');"><b>download</b></A>) - <a href="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cpp?annotate=1.12&amp;sortby=date">annotate</a> - <A HREF="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cpp?r1=1.12&amp;sortby=date">[select for diffs]</A>
+, <i>Fri Feb 15 17:07:43 2002 UTC</i> (5 months, 1 week ago) by <i>lecroart</i>
+<BR>Branch: <b><A HREF="admin_service.cpp?sortby=date&amp;only_with_tag=MAIN">MAIN</A>
+</b>
+<BR>Changes since <b>1.11: +50 -2
+ lines</b><BR>Diff to previous <A HREF="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cpp.diff?r1=1.11&amp;r2=1.12&amp;sortby=date">1.11</A>
+<PRE>
+ADDED: login password
+</PRE>
+<HR size=1 NOSHADE><P><a NAME="rev1.11"></a>
+ Revision <A HREF="admin_service.cpp?rev=1.11&amp;content-type=text/x-cvsweb-markup&amp;sortby=date"><b>1.11</b></A> / (<A HREF="/cvs/cvsweb.cgi/~checkout~/code/nelns/admin_service/admin_service.cpp?rev=1.11&amp;content-type=text/plain&amp;sortby=date" target="cvs_checkout" onClick="window.open('/cvs/cvsweb.cgi/~checkout~/code/nelns/admin_service/admin_service.cpp?rev=1.11&amp;content-type=text/plain','cvs_checkout','resizeable,scrollbars');"><b>download</b></A>) - <a href="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cpp?annotate=1.11&amp;sortby=date">annotate</a> - <A HREF="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cpp?r1=1.11&amp;sortby=date">[select for diffs]</A>
+, <i>Tue Jul 10 16:49:53 2001 UTC</i> (12 months, 2 weeks ago) by <i>lecroart</i>
+<BR>Branch: <b><A HREF="admin_service.cpp?sortby=date&amp;only_with_tag=MAIN">MAIN</A>
+</b>
+<BR>Changes since <b>1.10: +18 -14
+ lines</b><BR>Diff to previous <A HREF="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cpp.diff?r1=1.10&amp;r2=1.11&amp;sortby=date">1.10</A>
+<PRE>
+BUGFIX: when a service isn't ready and already disconnected, it doesn't crash anymore
+</PRE>
+<HR size=1 NOSHADE><P><a NAME="rev1.10"></a>
+ Revision <A HREF="admin_service.cpp?rev=1.10&amp;content-type=text/x-cvsweb-markup&amp;sortby=date"><b>1.10</b></A> / (<A HREF="/cvs/cvsweb.cgi/~checkout~/code/nelns/admin_service/admin_service.cpp?rev=1.10&amp;content-type=text/plain&amp;sortby=date" target="cvs_checkout" onClick="window.open('/cvs/cvsweb.cgi/~checkout~/code/nelns/admin_service/admin_service.cpp?rev=1.10&amp;content-type=text/plain','cvs_checkout','resizeable,scrollbars');"><b>download</b></A>) - <a href="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cpp?annotate=1.10&amp;sortby=date">annotate</a> - <A HREF="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cpp?r1=1.10&amp;sortby=date">[select for diffs]</A>
+, <i>Thu Jul 5 08:26:07 2001 UTC</i> (12 months, 2 weeks ago) by <i>lecroart</i>
+<BR>Branch: <b><A HREF="admin_service.cpp?sortby=date&amp;only_with_tag=MAIN">MAIN</A>
+</b>
+<BR>Changes since <b>1.9: +1 -6
+ lines</b><BR>Diff to previous <A HREF="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cpp.diff?r1=1.9&amp;r2=1.10&amp;sortby=date">1.9</A>
+<PRE>
+REMOVED: update()
+</PRE>
+<HR size=1 NOSHADE><P><a NAME="rev1.9"></a>
+ Revision <A HREF="admin_service.cpp?rev=1.9&amp;content-type=text/x-cvsweb-markup&amp;sortby=date"><b>1.9</b></A> / (<A HREF="/cvs/cvsweb.cgi/~checkout~/code/nelns/admin_service/admin_service.cpp?rev=1.9&amp;content-type=text/plain&amp;sortby=date" target="cvs_checkout" onClick="window.open('/cvs/cvsweb.cgi/~checkout~/code/nelns/admin_service/admin_service.cpp?rev=1.9&amp;content-type=text/plain','cvs_checkout','resizeable,scrollbars');"><b>download</b></A>) - <a href="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cpp?annotate=1.9&amp;sortby=date">annotate</a> - <A HREF="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cpp?r1=1.9&amp;sortby=date">[select for diffs]</A>
+, <i>Wed Jun 27 08:34:23 2001 UTC</i> (12 months, 4 weeks ago) by <i>lecroart</i>
+<BR>Branch: <b><A HREF="admin_service.cpp?sortby=date&amp;only_with_tag=MAIN">MAIN</A>
+</b>
+<BR>Changes since <b>1.8: +14 -4
+ lines</b><BR>Diff to previous <A HREF="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cpp.diff?r1=1.8&amp;r2=1.9&amp;sortby=date">1.8</A>
+<PRE>
+ADDED: command redirection
+</PRE>
+<HR size=1 NOSHADE><P><a NAME="rev1.8"></a>
+ Revision <A HREF="admin_service.cpp?rev=1.8&amp;content-type=text/x-cvsweb-markup&amp;sortby=date"><b>1.8</b></A> / (<A HREF="/cvs/cvsweb.cgi/~checkout~/code/nelns/admin_service/admin_service.cpp?rev=1.8&amp;content-type=text/plain&amp;sortby=date" target="cvs_checkout" onClick="window.open('/cvs/cvsweb.cgi/~checkout~/code/nelns/admin_service/admin_service.cpp?rev=1.8&amp;content-type=text/plain','cvs_checkout','resizeable,scrollbars');"><b>download</b></A>) - <a href="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cpp?annotate=1.8&amp;sortby=date">annotate</a> - <A HREF="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cpp?r1=1.8&amp;sortby=date">[select for diffs]</A>
+, <i>Mon Jun 18 14:54:06 2001 UTC</i> (13 months ago) by <i>lecroart</i>
+<BR>Branch: <b><A HREF="admin_service.cpp?sortby=date&amp;only_with_tag=MAIN">MAIN</A>
+</b>
+<BR>Changes since <b>1.7: +2 -2
+ lines</b><BR>Diff to previous <A HREF="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cpp.diff?r1=1.7&amp;r2=1.8&amp;sortby=date">1.7</A>
+<PRE>
+BUGFIX: linux compilation
+</PRE>
+<HR size=1 NOSHADE><P><a NAME="rev1.7"></a>
+ Revision <A HREF="admin_service.cpp?rev=1.7&amp;content-type=text/x-cvsweb-markup&amp;sortby=date"><b>1.7</b></A> / (<A HREF="/cvs/cvsweb.cgi/~checkout~/code/nelns/admin_service/admin_service.cpp?rev=1.7&amp;content-type=text/plain&amp;sortby=date" target="cvs_checkout" onClick="window.open('/cvs/cvsweb.cgi/~checkout~/code/nelns/admin_service/admin_service.cpp?rev=1.7&amp;content-type=text/plain','cvs_checkout','resizeable,scrollbars');"><b>download</b></A>) - <a href="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cpp?annotate=1.7&amp;sortby=date">annotate</a> - <A HREF="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cpp?r1=1.7&amp;sortby=date">[select for diffs]</A>
+, <i>Mon Jun 18 14:43:31 2001 UTC</i> (13 months ago) by <i>lecroart</i>
+<BR>Branch: <b><A HREF="admin_service.cpp?sortby=date&amp;only_with_tag=MAIN">MAIN</A>
+</b>
+<BR>Changes since <b>1.6: +10 -9
+ lines</b><BR>Diff to previous <A HREF="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cpp.diff?r1=1.6&amp;r2=1.7&amp;sortby=date">1.6</A>
+<PRE>
+BUGFIX: linux compilation
+</PRE>
+<HR size=1 NOSHADE><P><a NAME="rev1.6"></a>
+ Revision <A HREF="admin_service.cpp?rev=1.6&amp;content-type=text/x-cvsweb-markup&amp;sortby=date"><b>1.6</b></A> / (<A HREF="/cvs/cvsweb.cgi/~checkout~/code/nelns/admin_service/admin_service.cpp?rev=1.6&amp;content-type=text/plain&amp;sortby=date" target="cvs_checkout" onClick="window.open('/cvs/cvsweb.cgi/~checkout~/code/nelns/admin_service/admin_service.cpp?rev=1.6&amp;content-type=text/plain','cvs_checkout','resizeable,scrollbars');"><b>download</b></A>) - <a href="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cpp?annotate=1.6&amp;sortby=date">annotate</a> - <A HREF="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cpp?r1=1.6&amp;sortby=date">[select for diffs]</A>
+, <i>Thu Jun 7 16:19:05 2001 UTC</i> (13 months, 2 weeks ago) by <i>lecroart</i>
+<BR>Branch: <b><A HREF="admin_service.cpp?sortby=date&amp;only_with_tag=MAIN">MAIN</A>
+</b>
+<BR>Changes since <b>1.5: +134 -48
+ lines</b><BR>Diff to previous <A HREF="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cpp.diff?r1=1.5&amp;r2=1.6&amp;sortby=date">1.5</A>
+<PRE>
+ADDED: commands system
+</PRE>
+<HR size=1 NOSHADE><P><a NAME="rev1.5"></a>
+ Revision <A HREF="admin_service.cpp?rev=1.5&amp;content-type=text/x-cvsweb-markup&amp;sortby=date"><b>1.5</b></A> / (<A HREF="/cvs/cvsweb.cgi/~checkout~/code/nelns/admin_service/admin_service.cpp?rev=1.5&amp;content-type=text/plain&amp;sortby=date" target="cvs_checkout" onClick="window.open('/cvs/cvsweb.cgi/~checkout~/code/nelns/admin_service/admin_service.cpp?rev=1.5&amp;content-type=text/plain','cvs_checkout','resizeable,scrollbars');"><b>download</b></A>) - <a href="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cpp?annotate=1.5&amp;sortby=date">annotate</a> - <A HREF="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cpp?r1=1.5&amp;sortby=date">[select for diffs]</A>
+, <i>Thu May 31 16:44:54 2001 UTC</i> (13 months, 3 weeks ago) by <i>lecroart</i>
+<BR>Branch: <b><A HREF="admin_service.cpp?sortby=date&amp;only_with_tag=MAIN">MAIN</A>
+</b>
+<BR>Changes since <b>1.4: +156 -61
+ lines</b><BR>Diff to previous <A HREF="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cpp.diff?r1=1.4&amp;r2=1.5&amp;sortby=date">1.4</A>
+<PRE>
+ADDED: service alias naming
+</PRE>
+<HR size=1 NOSHADE><P><a NAME="rev1.4"></a>
+ Revision <A HREF="admin_service.cpp?rev=1.4&amp;content-type=text/x-cvsweb-markup&amp;sortby=date"><b>1.4</b></A> / (<A HREF="/cvs/cvsweb.cgi/~checkout~/code/nelns/admin_service/admin_service.cpp?rev=1.4&amp;content-type=text/plain&amp;sortby=date" target="cvs_checkout" onClick="window.open('/cvs/cvsweb.cgi/~checkout~/code/nelns/admin_service/admin_service.cpp?rev=1.4&amp;content-type=text/plain','cvs_checkout','resizeable,scrollbars');"><b>download</b></A>) - <a href="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cpp?annotate=1.4&amp;sortby=date">annotate</a> - <A HREF="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cpp?r1=1.4&amp;sortby=date">[select for diffs]</A>
+, <i>Fri May 18 16:51:33 2001 UTC</i> (14 months ago) by <i>lecroart</i>
+<BR>Branch: <b><A HREF="admin_service.cpp?sortby=date&amp;only_with_tag=MAIN">MAIN</A>
+</b>
+<BR>Changes since <b>1.3: +405 -101
+ lines</b><BR>Diff to previous <A HREF="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cpp.diff?r1=1.3&amp;r2=1.4&amp;sortby=date">1.3</A>
+<PRE>
+ADDED: work in progress. added gtk
+</PRE>
+<HR size=1 NOSHADE><P><a NAME="rev1.3"></a>
+ Revision <A HREF="admin_service.cpp?rev=1.3&amp;content-type=text/x-cvsweb-markup&amp;sortby=date"><b>1.3</b></A> / (<A HREF="/cvs/cvsweb.cgi/~checkout~/code/nelns/admin_service/admin_service.cpp?rev=1.3&amp;content-type=text/plain&amp;sortby=date" target="cvs_checkout" onClick="window.open('/cvs/cvsweb.cgi/~checkout~/code/nelns/admin_service/admin_service.cpp?rev=1.3&amp;content-type=text/plain','cvs_checkout','resizeable,scrollbars');"><b>download</b></A>) - <a href="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cpp?annotate=1.3&amp;sortby=date">annotate</a> - <A HREF="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cpp?r1=1.3&amp;sortby=date">[select for diffs]</A>
+, <i>Thu May 10 08:20:06 2001 UTC</i> (14 months, 2 weeks ago) by <i>lecroart</i>
+<BR>Branch: <b><A HREF="admin_service.cpp?sortby=date&amp;only_with_tag=MAIN">MAIN</A>
+</b>
+<BR>Changes since <b>1.2: +233 -34
+ lines</b><BR>Diff to previous <A HREF="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cpp.diff?r1=1.2&amp;r2=1.3&amp;sortby=date">1.2</A>
+<PRE>
+ADDED: changed the data structures
+</PRE>
+<HR size=1 NOSHADE><P><a NAME="rev1.2"></a>
+ Revision <A HREF="admin_service.cpp?rev=1.2&amp;content-type=text/x-cvsweb-markup&amp;sortby=date"><b>1.2</b></A> / (<A HREF="/cvs/cvsweb.cgi/~checkout~/code/nelns/admin_service/admin_service.cpp?rev=1.2&amp;content-type=text/plain&amp;sortby=date" target="cvs_checkout" onClick="window.open('/cvs/cvsweb.cgi/~checkout~/code/nelns/admin_service/admin_service.cpp?rev=1.2&amp;content-type=text/plain','cvs_checkout','resizeable,scrollbars');"><b>download</b></A>) - <a href="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cpp?annotate=1.2&amp;sortby=date">annotate</a> - <A HREF="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cpp?r1=1.2&amp;sortby=date">[select for diffs]</A>
+, <i>Thu May 3 13:19:13 2001 UTC</i> (14 months, 3 weeks ago) by <i>lecroart</i>
+<BR>Branch: <b><A HREF="admin_service.cpp?sortby=date&amp;only_with_tag=MAIN">MAIN</A>
+</b>
+<BR>Changes since <b>1.1: +2 -6
+ lines</b><BR>Diff to previous <A HREF="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cpp.diff?r1=1.1&amp;r2=1.2&amp;sortby=date">1.1</A>
+<PRE>
+BUGFIX: now compile on linux
+</PRE>
+<HR size=1 NOSHADE><P><a NAME="rev1.1"></a>
+ Revision <A HREF="admin_service.cpp?rev=1.1&amp;content-type=text/x-cvsweb-markup&amp;sortby=date"><b>1.1</b></A> / (<A HREF="/cvs/cvsweb.cgi/~checkout~/code/nelns/admin_service/admin_service.cpp?rev=1.1&amp;content-type=text/plain&amp;sortby=date" target="cvs_checkout" onClick="window.open('/cvs/cvsweb.cgi/~checkout~/code/nelns/admin_service/admin_service.cpp?rev=1.1&amp;content-type=text/plain','cvs_checkout','resizeable,scrollbars');"><b>download</b></A>) - <a href="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cpp?annotate=1.1&amp;sortby=date">annotate</a> - <A HREF="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cpp?r1=1.1&amp;sortby=date">[select for diffs]</A>
+, <i>Wed May 2 12:36:39 2001 UTC</i> (14 months, 3 weeks ago) by <i>lecroart</i>
+<BR>Branch: <b><A HREF="admin_service.cpp?sortby=date&amp;only_with_tag=MAIN">MAIN</A>
+</b>
+<BR>Diff<PRE>
+ADD: new version of the network system (in NeL and NeLns)
+</PRE>
+
+<!-- block -->
+<TABLE bgcolor="#dddddd" CELLSPACING=0 CELLPADDING=0 BORDER=0 width=100%><tr><td width=1% valign=middle><img width=6 height=14 hspace=2 vspace=2 src="http://www.nevrax.org/inc/img/reddots.gif"></TD>
+ <TD><B>Request Diffs</B></TD>
+ <TD ALIGN=RIGHT> </td>
+</tr></table>
+<P>
+<P>
+<FORM METHOD="GET" ACTION="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cpp.diff" NAME="diff_select">
+<INPUT TYPE=HIDDEN NAME="sortby" VALUE="date">
+Diffs between
+<SELECT NAME="r1">
+<OPTION VALUE="text" SELECTED>Use Text Field
+<OPTION VALUE="1:MAIN">MAIN
+<OPTION VALUE="1.15:HEAD">HEAD
+</SELECT>
+<INPUT TYPE="TEXT" SIZE="12" NAME="tr1" VALUE="1.1" onChange='document.diff_select.r1.selectedIndex=0'>
+ and
+<SELECT NAME="r2">
+<OPTION VALUE="text" SELECTED>Use Text Field
+<OPTION VALUE="1:MAIN">MAIN
+<OPTION VALUE="1.15:HEAD">HEAD
+</SELECT>
+<INPUT TYPE="TEXT" SIZE="12" NAME="tr2" VALUE="1.15" onChange='docuement.diff_select.r2.selectedIndex=0'>
+<BR>Type of Diff should be a&nbsp;<SELECT NAME="f">
+<OPTION VALUE=h SELECTED>Colored Diff<OPTION VALUE=H>Long Colored Diff<OPTION VALUE=u>Unidiff<OPTION VALUE=c>Context Diff<OPTION VALUE=s>Side by Side</SELECT><INPUT TYPE=SUBMIT VALUE=" Get Diffs ">
+</FORM>
+
+<!-- block -->
+<TABLE bgcolor="#dddddd" CELLSPACING=0 CELLPADDING=0 BORDER=0 width=100%><tr><td width=1% valign=middle><img width=6 height=14 hspace=2 vspace=2 src="http://www.nevrax.org/inc/img/reddots.gif"></TD>
+ <TD><B>Select branch</B></TD>
+ <TD ALIGN=RIGHT> </td>
+</tr></table>
+<P>
+<P>
+<A name=branch></A>
+<FORM METHOD="GET" ACTION="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cpp">
+<INPUT TYPE=HIDDEN NAME="sortby" VALUE="date">
+View only Branch:
+<SELECT NAME="only_with_tag" onchange="submit()">
+<OPTION VALUE="">Show all branches
+<OPTION>MAIN
+</SELECT>
+<INPUT TYPE=SUBMIT VALUE=" View Branch ">
+</FORM>
+<A name=logsort></A>
+<FORM METHOD="GET" ACTION="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cpp">
+<INPUT TYPE=HIDDEN NAME="sortby" VALUE="date">
+Sort log by:
+<SELECT NAME="logsort" onchange="submit()">
+<OPTION VALUE=cvs>Not sorted<OPTION VALUE=date SELECTED>Commit date<OPTION VALUE=rev>Revision</SELECT>
+<INPUT TYPE=SUBMIT VALUE=" Sort ">
+</FORM>
+
+<!-- footer -->
+<BR><FONT Size=+5>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </FONT>
+</TD>
+<TD WIDTH=15><IMG SRC=http://www.nevrax.org/inc/img/pixel.gif WIDTH=15 HEIGHT=15 BORDER=0 ALT=""></TD>
+</TR>
+</TABLE>
+</BODY>
+</HTML></BODY></HTML>
diff --git a/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cpp?sortby=log b/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cpp?sortby=log
new file mode 100644
index 00000000..3a7c30a8
--- /dev/null
+++ b/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cpp?sortby=log
@@ -0,0 +1,277 @@
+<!doctype html public "-//W3C//DTD HTML 4.0 Transitional//EN" "http://www.w3.org/TR/REC-html40/loose.dtd">
+<HTML>
+<HEAD>
+ <TITLE>nevrax.org : cvs</TITLE>
+ <META name="keywords" content="freesoftware,nel,newt,snowballs,richard stallman,GNU,Multi-User Online World">
+
+ <LINK REL=stylesheet TYPE="text/css" HREF="http://www.nevrax.org/inc/css/nevrax.css">
+</HEAD>
+<BODY MARGINHEIGHT="0" MARGINWIDTH="0">
+
+<!-- uplinks -->
+<TABLE CELLSPACING=0 CELLPADDING=0 BORDER=0>
+ <TR>
+ <TD WIDTH=16><IMG SRC="http://www.nevrax.org/inc/img/pixel.gif" WIDTH="16" HEIGHT="16" BORDER=0 ALT=""></TD>
+ <TD WIDTH=140 BGCOLOR=#dddddd><IMG SRC="http://www.nevrax.org/inc/img/pixel.gif" WIDTH="140" HEIGHT="16" BORDER=0 ALT=""></TD>
+ <TD WIDTH=16><IMG SRC="http://www.nevrax.org/inc/img/pixel.gif" WIDTH="16" HEIGHT="16" BORDER=0 ALT=""></TD>
+ <TD><IMG width=6 height=14 SRC="http://www.nevrax.org/inc/img/reddots.gif" ALT="#" VSPACE=2 HSPACE=2 BORDER=0 ></TD><TD VALIGN=middle>&nbsp;<A CLASS=uplinks HREF=http://www.nevrax.org><b>Home</B></FONT></A>&nbsp;&nbsp;&nbsp;</TD>
+ <TD><IMG width=6 height=14 SRC="http://www.nevrax.org/inc/img/reddots.gif" ALT="#" VSPACE=2 HSPACE=2 BORDER=0 ></TD><TD VALIGN=middle>&nbsp;<A CLASS=uplinks HREF=http://www.nevrax.com><b>nevrax.com</B></FONT></A>&nbsp;&nbsp;&nbsp;</TD>
+ </TR>
+</TABLE>
+
+<!-- banner Nevrax -->
+<TABLE CELLSPACING=0 CELLPADDING=0 BORDER=0 WIDTH=100%>
+ <TR><TD BGCOLOR="#000000" BACKGROUND="http://www.nevrax.org/inc/img/black_banner.jpg"><A HREF="http://www.nevrax.org"><IMG SRC="http://www.nevrax.org/inc/img/nevrax.gif" WIDTH="170" HEIGHT="45" BORDER=0 ALT="Nevrax" ></A></TD></TR>
+</TABLE>
+
+<!-- main table -->
+<TABLE CELLSPACING=0 CELLPADDING=0 BORDER=0 height=100%>
+ <TR>
+ <TD WIDTH=16><IMG SRC="http://www.nevrax.org/inc/img/pixel.gif" WIDTH="16" HEIGHT="10" BORDER=0 ALT=""></TD>
+ <TD WIDTH=140 BGCOLOR=#dddddd VALIGN=TOP ALIGN=middle><IMG SRC="http://www.nevrax.org/inc/img/pixel.gif" WIDTH="140" HEIGHT="10" BORDER=0 ALT="">
+
+ <!------ Begin Box ------>
+ <TABLE BORDER=0 CELLSPACING=0 CELLPADDING=0 BGCOLOR=black><TR><TD><TABLE border=0 cellspacing=2 cellpadding=0 width=120><tr><TD ALIGN=middle bgcolor=black>
+ <FONT COLOR=white FACE="sans-serif"><B>Nevrax.org</B></FONT></TD></TR><tr><td colspan=2 bgcolor=#FFFFFF>
+ <TABLE cellspacing=0 cellpadding=1 border=0>
+ <tr><td ALIGN=middle><a class='linkbox' href="http://www.nevrax.org/news/" TITLE="Rubrique news"><img width=13 height=15 hspace=5 border=0 src=http://www.nevrax.org/inc/img/picto-news.gif ALT=#></A></td><td><a class='linkbox' href="http://www.nevrax.org/news/" TITLE="News">News</a></td></tr>
+ <tr><td ALIGN=middle><a class='linkbox' href="http://www.nevrax.org/mail/" TITLE="Rubrique mail"><img width=15 height=11 hspace=5 border=0 src=http://www.nevrax.org/inc/img/picto-mail.gif ALT=#></A></td><td><a class='linkbox' href="http://www.nevrax.org/mail/" TITLE="Mailing list archive">Mailing-list</a></td></tr>
+ <tr><td ALIGN=middle><a class='linkbox' href="http://www.nevrax.org/docs/" TITLE="Rubrique docs"><img width=14 height=16 hspace=5 border=0 src=http://www.nevrax.org/inc/img/picto-docs.gif ALT=#></A></td><td><a class='linkbox' href="http://www.nevrax.org/docs/" TITLE="Documentation">Documentation</a></td></tr>
+ <tr><td ALIGN=middle><a class='linkbox' href="http://www.nevrax.org/cvs/" TITLE="Rubrique cvs"><img width=13 height=17 hspace=5 border=0 src=http://www.nevrax.org/inc/img/picto-cvs.gif ALT=#></A></td><td><a class='linkbox' href="http://www.nevrax.org/cvs/" TITLE="CVS Web">CVS</a></td></tr>
+ <tr><td ALIGN=middle><a class='linkbox' href="http://www.nevrax.org/bugs/" TITLE="Rubrique bugs"><img width=20 height=16 hspace=5 border=0 src=http://www.nevrax.org/inc/img/picto-bugs.gif ALT=#></A></td><td><a class='linkbox' href="http://www.nevrax.org/bugs/" TITLE="Bugtracking">Bugs</a></td></tr>
+ <tr><td ALIGN=middle><a class='linkbox' href="http://www.nevrax.org/free/" TITLE="Rubrique license"><img width=18 height=12 hspace=5 border=0 src=http://www.nevrax.org/inc/img/picto-free.gif ALT=#></A></td><td><a class='linkbox' href="http://www.nevrax.org/free/" TITLE="Free Software">Free software</a></td></tr>
+ </TABLE>
+ </TD></TR></TABLE></TD></TR></TABLE>
+ <!------ End Box ------>
+
+ </TD>
+ <TD WIDTH=15><IMG SRC="http://www.nevrax.org/inc/img/pixel.gif" WIDTH="16" HEIGHT="16" BORDER=0 ALT=""></TD>
+ <TD ALIGN=left valign=top><IMG SRC="http://www.nevrax.org/inc/img/pixel.gif" WIDTH="140" HEIGHT="10" BORDER=0 ALT="">
+
+<!-- title -->
+<TABLE background="http://www.nevrax.org/inc/img/redline.gif" CELLSPACING=0 CELLPADDING=0 BORDER=0 width=100%><tr><td>
+<A HREF="http://www.nevrax.org/cvs/"><img src="http://www.nevrax.org/inc/img/t_cvs.gif" ALT="cvs" HEIGHT=20 BORDER=0></A>
+</td><td><IMG SRC="http://www.nevrax.org/inc/img/pixel.gif" WIDTH="1" HEIGHT="1" BORDER=0 ALT="">
+</td></tr></table>
+
+<!-- title -->
+<table width=100%><tr><td align=left><b> <a href="/cvs/cvsweb.cgi/?sortby=log">Nevrax</a> / <a href="/cvs/cvsweb.cgi/code/?sortby=log">code</a> / <a href="/cvs/cvsweb.cgi/code/nelns/?sortby=log">nelns</a> / <a href="/cvs/cvsweb.cgi/code/nelns/admin_service/?sortby=log">admin_service</a> / admin_service.cpp</b></td><td align=right><b></b></td></TR></TABLE>
+
+<!-- block -->
+<TABLE bgcolor="#dddddd" CELLSPACING=0 CELLPADDING=0 BORDER=0 width=100%><tr><td width=1% valign=middle><img width=6 height=14 hspace=2 vspace=2 src="http://www.nevrax.org/inc/img/reddots.gif"></TD>
+ <TD><B>admin_service.cpp</B></TD>
+ <TD ALIGN=RIGHT> </td>
+</tr></table>
+<P>
+<p>Default branch: MAIN<BR>
+<HR size=1 NOSHADE><P><a NAME="rev1.15"></a><a NAME="HEAD"></a><a NAME="MAIN"></a>
+ Revision <A HREF="admin_service.cpp?rev=1.15&amp;content-type=text/x-cvsweb-markup&amp;sortby=log"><b>1.15</b></A> / (<A HREF="/cvs/cvsweb.cgi/~checkout~/code/nelns/admin_service/admin_service.cpp?rev=1.15&amp;content-type=text/plain&amp;sortby=log" target="cvs_checkout" onClick="window.open('/cvs/cvsweb.cgi/~checkout~/code/nelns/admin_service/admin_service.cpp?rev=1.15&amp;content-type=text/plain','cvs_checkout','resizeable,scrollbars');"><b>download</b></A>) - <a href="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cpp?annotate=1.15&amp;sortby=log">annotate</a> - <A HREF="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cpp?r1=1.15&amp;sortby=log">[select for diffs]</A>
+, <i>Mon Mar 25 09:28:00 2002 UTC</i> (4 months ago) by <i>lecroart</i>
+<BR>Branch: <b><A HREF="admin_service.cpp?sortby=log&amp;only_with_tag=MAIN">MAIN</A>
+</b>
+<BR>CVS Tags: <b><A HREF="admin_service.cpp?sortby=log&amp;only_with_tag=HEAD">HEAD</A>
+</b><BR>Changes since <b>1.14: +8 -6
+ lines</b><BR>Diff to previous <A HREF="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cpp.diff?r1=1.14&amp;r2=1.15&amp;sortby=log">1.14</A>
+<PRE>
+CHANGED: use new service functions
+</PRE>
+<HR size=1 NOSHADE><P><a NAME="rev1.14"></a>
+ Revision <A HREF="admin_service.cpp?rev=1.14&amp;content-type=text/x-cvsweb-markup&amp;sortby=log"><b>1.14</b></A> / (<A HREF="/cvs/cvsweb.cgi/~checkout~/code/nelns/admin_service/admin_service.cpp?rev=1.14&amp;content-type=text/plain&amp;sortby=log" target="cvs_checkout" onClick="window.open('/cvs/cvsweb.cgi/~checkout~/code/nelns/admin_service/admin_service.cpp?rev=1.14&amp;content-type=text/plain','cvs_checkout','resizeable,scrollbars');"><b>download</b></A>) - <a href="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cpp?annotate=1.14&amp;sortby=log">annotate</a> - <A HREF="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cpp?r1=1.14&amp;sortby=log">[select for diffs]</A>
+, <i>Tue Mar 19 17:42:48 2002 UTC</i> (4 months ago) by <i>valignat</i>
+<BR>Branch: <b><A HREF="admin_service.cpp?sortby=log&amp;only_with_tag=MAIN">MAIN</A>
+</b>
+<BR>Changes since <b>1.13: +14 -2
+ lines</b><BR>Diff to previous <A HREF="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cpp.diff?r1=1.13&amp;r2=1.14&amp;sortby=log">1.13</A>
+<PRE>
+Applied patches which help to have a clen install on GNU/Linux and to make a Debian package (changes on the management of config and log files, bugfixes, etc ...)
+</PRE>
+<HR size=1 NOSHADE><P><a NAME="rev1.13"></a>
+ Revision <A HREF="admin_service.cpp?rev=1.13&amp;content-type=text/x-cvsweb-markup&amp;sortby=log"><b>1.13</b></A> / (<A HREF="/cvs/cvsweb.cgi/~checkout~/code/nelns/admin_service/admin_service.cpp?rev=1.13&amp;content-type=text/plain&amp;sortby=log" target="cvs_checkout" onClick="window.open('/cvs/cvsweb.cgi/~checkout~/code/nelns/admin_service/admin_service.cpp?rev=1.13&amp;content-type=text/plain','cvs_checkout','resizeable,scrollbars');"><b>download</b></A>) - <a href="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cpp?annotate=1.13&amp;sortby=log">annotate</a> - <A HREF="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cpp?r1=1.13&amp;sortby=log">[select for diffs]</A>
+, <i>Fri Mar 1 10:20:32 2002 UTC</i> (4 months, 3 weeks ago) by <i>lecroart</i>
+<BR>Branch: <b><A HREF="admin_service.cpp?sortby=log&amp;only_with_tag=MAIN">MAIN</A>
+</b>
+<BR>Changes since <b>1.12: +8 -16
+ lines</b><BR>Diff to previous <A HREF="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cpp.diff?r1=1.12&amp;r2=1.13&amp;sortby=log">1.12</A>
+<PRE>
+ADDED: password per shard auth
+</PRE>
+<HR size=1 NOSHADE><P><a NAME="rev1.12"></a>
+ Revision <A HREF="admin_service.cpp?rev=1.12&amp;content-type=text/x-cvsweb-markup&amp;sortby=log"><b>1.12</b></A> / (<A HREF="/cvs/cvsweb.cgi/~checkout~/code/nelns/admin_service/admin_service.cpp?rev=1.12&amp;content-type=text/plain&amp;sortby=log" target="cvs_checkout" onClick="window.open('/cvs/cvsweb.cgi/~checkout~/code/nelns/admin_service/admin_service.cpp?rev=1.12&amp;content-type=text/plain','cvs_checkout','resizeable,scrollbars');"><b>download</b></A>) - <a href="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cpp?annotate=1.12&amp;sortby=log">annotate</a> - <A HREF="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cpp?r1=1.12&amp;sortby=log">[select for diffs]</A>
+, <i>Fri Feb 15 17:07:43 2002 UTC</i> (5 months, 1 week ago) by <i>lecroart</i>
+<BR>Branch: <b><A HREF="admin_service.cpp?sortby=log&amp;only_with_tag=MAIN">MAIN</A>
+</b>
+<BR>Changes since <b>1.11: +50 -2
+ lines</b><BR>Diff to previous <A HREF="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cpp.diff?r1=1.11&amp;r2=1.12&amp;sortby=log">1.11</A>
+<PRE>
+ADDED: login password
+</PRE>
+<HR size=1 NOSHADE><P><a NAME="rev1.11"></a>
+ Revision <A HREF="admin_service.cpp?rev=1.11&amp;content-type=text/x-cvsweb-markup&amp;sortby=log"><b>1.11</b></A> / (<A HREF="/cvs/cvsweb.cgi/~checkout~/code/nelns/admin_service/admin_service.cpp?rev=1.11&amp;content-type=text/plain&amp;sortby=log" target="cvs_checkout" onClick="window.open('/cvs/cvsweb.cgi/~checkout~/code/nelns/admin_service/admin_service.cpp?rev=1.11&amp;content-type=text/plain','cvs_checkout','resizeable,scrollbars');"><b>download</b></A>) - <a href="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cpp?annotate=1.11&amp;sortby=log">annotate</a> - <A HREF="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cpp?r1=1.11&amp;sortby=log">[select for diffs]</A>
+, <i>Tue Jul 10 16:49:53 2001 UTC</i> (12 months, 2 weeks ago) by <i>lecroart</i>
+<BR>Branch: <b><A HREF="admin_service.cpp?sortby=log&amp;only_with_tag=MAIN">MAIN</A>
+</b>
+<BR>Changes since <b>1.10: +18 -14
+ lines</b><BR>Diff to previous <A HREF="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cpp.diff?r1=1.10&amp;r2=1.11&amp;sortby=log">1.10</A>
+<PRE>
+BUGFIX: when a service isn't ready and already disconnected, it doesn't crash anymore
+</PRE>
+<HR size=1 NOSHADE><P><a NAME="rev1.10"></a>
+ Revision <A HREF="admin_service.cpp?rev=1.10&amp;content-type=text/x-cvsweb-markup&amp;sortby=log"><b>1.10</b></A> / (<A HREF="/cvs/cvsweb.cgi/~checkout~/code/nelns/admin_service/admin_service.cpp?rev=1.10&amp;content-type=text/plain&amp;sortby=log" target="cvs_checkout" onClick="window.open('/cvs/cvsweb.cgi/~checkout~/code/nelns/admin_service/admin_service.cpp?rev=1.10&amp;content-type=text/plain','cvs_checkout','resizeable,scrollbars');"><b>download</b></A>) - <a href="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cpp?annotate=1.10&amp;sortby=log">annotate</a> - <A HREF="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cpp?r1=1.10&amp;sortby=log">[select for diffs]</A>
+, <i>Thu Jul 5 08:26:07 2001 UTC</i> (12 months, 2 weeks ago) by <i>lecroart</i>
+<BR>Branch: <b><A HREF="admin_service.cpp?sortby=log&amp;only_with_tag=MAIN">MAIN</A>
+</b>
+<BR>Changes since <b>1.9: +1 -6
+ lines</b><BR>Diff to previous <A HREF="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cpp.diff?r1=1.9&amp;r2=1.10&amp;sortby=log">1.9</A>
+<PRE>
+REMOVED: update()
+</PRE>
+<HR size=1 NOSHADE><P><a NAME="rev1.9"></a>
+ Revision <A HREF="admin_service.cpp?rev=1.9&amp;content-type=text/x-cvsweb-markup&amp;sortby=log"><b>1.9</b></A> / (<A HREF="/cvs/cvsweb.cgi/~checkout~/code/nelns/admin_service/admin_service.cpp?rev=1.9&amp;content-type=text/plain&amp;sortby=log" target="cvs_checkout" onClick="window.open('/cvs/cvsweb.cgi/~checkout~/code/nelns/admin_service/admin_service.cpp?rev=1.9&amp;content-type=text/plain','cvs_checkout','resizeable,scrollbars');"><b>download</b></A>) - <a href="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cpp?annotate=1.9&amp;sortby=log">annotate</a> - <A HREF="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cpp?r1=1.9&amp;sortby=log">[select for diffs]</A>
+, <i>Wed Jun 27 08:34:23 2001 UTC</i> (12 months, 4 weeks ago) by <i>lecroart</i>
+<BR>Branch: <b><A HREF="admin_service.cpp?sortby=log&amp;only_with_tag=MAIN">MAIN</A>
+</b>
+<BR>Changes since <b>1.8: +14 -4
+ lines</b><BR>Diff to previous <A HREF="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cpp.diff?r1=1.8&amp;r2=1.9&amp;sortby=log">1.8</A>
+<PRE>
+ADDED: command redirection
+</PRE>
+<HR size=1 NOSHADE><P><a NAME="rev1.8"></a>
+ Revision <A HREF="admin_service.cpp?rev=1.8&amp;content-type=text/x-cvsweb-markup&amp;sortby=log"><b>1.8</b></A> / (<A HREF="/cvs/cvsweb.cgi/~checkout~/code/nelns/admin_service/admin_service.cpp?rev=1.8&amp;content-type=text/plain&amp;sortby=log" target="cvs_checkout" onClick="window.open('/cvs/cvsweb.cgi/~checkout~/code/nelns/admin_service/admin_service.cpp?rev=1.8&amp;content-type=text/plain','cvs_checkout','resizeable,scrollbars');"><b>download</b></A>) - <a href="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cpp?annotate=1.8&amp;sortby=log">annotate</a> - <A HREF="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cpp?r1=1.8&amp;sortby=log">[select for diffs]</A>
+, <i>Mon Jun 18 14:54:06 2001 UTC</i> (13 months ago) by <i>lecroart</i>
+<BR>Branch: <b><A HREF="admin_service.cpp?sortby=log&amp;only_with_tag=MAIN">MAIN</A>
+</b>
+<BR>Changes since <b>1.7: +2 -2
+ lines</b><BR>Diff to previous <A HREF="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cpp.diff?r1=1.7&amp;r2=1.8&amp;sortby=log">1.7</A>
+<PRE>
+BUGFIX: linux compilation
+</PRE>
+<HR size=1 NOSHADE><P><a NAME="rev1.7"></a>
+ Revision <A HREF="admin_service.cpp?rev=1.7&amp;content-type=text/x-cvsweb-markup&amp;sortby=log"><b>1.7</b></A> / (<A HREF="/cvs/cvsweb.cgi/~checkout~/code/nelns/admin_service/admin_service.cpp?rev=1.7&amp;content-type=text/plain&amp;sortby=log" target="cvs_checkout" onClick="window.open('/cvs/cvsweb.cgi/~checkout~/code/nelns/admin_service/admin_service.cpp?rev=1.7&amp;content-type=text/plain','cvs_checkout','resizeable,scrollbars');"><b>download</b></A>) - <a href="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cpp?annotate=1.7&amp;sortby=log">annotate</a> - <A HREF="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cpp?r1=1.7&amp;sortby=log">[select for diffs]</A>
+, <i>Mon Jun 18 14:43:31 2001 UTC</i> (13 months ago) by <i>lecroart</i>
+<BR>Branch: <b><A HREF="admin_service.cpp?sortby=log&amp;only_with_tag=MAIN">MAIN</A>
+</b>
+<BR>Changes since <b>1.6: +10 -9
+ lines</b><BR>Diff to previous <A HREF="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cpp.diff?r1=1.6&amp;r2=1.7&amp;sortby=log">1.6</A>
+<PRE>
+BUGFIX: linux compilation
+</PRE>
+<HR size=1 NOSHADE><P><a NAME="rev1.6"></a>
+ Revision <A HREF="admin_service.cpp?rev=1.6&amp;content-type=text/x-cvsweb-markup&amp;sortby=log"><b>1.6</b></A> / (<A HREF="/cvs/cvsweb.cgi/~checkout~/code/nelns/admin_service/admin_service.cpp?rev=1.6&amp;content-type=text/plain&amp;sortby=log" target="cvs_checkout" onClick="window.open('/cvs/cvsweb.cgi/~checkout~/code/nelns/admin_service/admin_service.cpp?rev=1.6&amp;content-type=text/plain','cvs_checkout','resizeable,scrollbars');"><b>download</b></A>) - <a href="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cpp?annotate=1.6&amp;sortby=log">annotate</a> - <A HREF="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cpp?r1=1.6&amp;sortby=log">[select for diffs]</A>
+, <i>Thu Jun 7 16:19:05 2001 UTC</i> (13 months, 2 weeks ago) by <i>lecroart</i>
+<BR>Branch: <b><A HREF="admin_service.cpp?sortby=log&amp;only_with_tag=MAIN">MAIN</A>
+</b>
+<BR>Changes since <b>1.5: +134 -48
+ lines</b><BR>Diff to previous <A HREF="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cpp.diff?r1=1.5&amp;r2=1.6&amp;sortby=log">1.5</A>
+<PRE>
+ADDED: commands system
+</PRE>
+<HR size=1 NOSHADE><P><a NAME="rev1.5"></a>
+ Revision <A HREF="admin_service.cpp?rev=1.5&amp;content-type=text/x-cvsweb-markup&amp;sortby=log"><b>1.5</b></A> / (<A HREF="/cvs/cvsweb.cgi/~checkout~/code/nelns/admin_service/admin_service.cpp?rev=1.5&amp;content-type=text/plain&amp;sortby=log" target="cvs_checkout" onClick="window.open('/cvs/cvsweb.cgi/~checkout~/code/nelns/admin_service/admin_service.cpp?rev=1.5&amp;content-type=text/plain','cvs_checkout','resizeable,scrollbars');"><b>download</b></A>) - <a href="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cpp?annotate=1.5&amp;sortby=log">annotate</a> - <A HREF="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cpp?r1=1.5&amp;sortby=log">[select for diffs]</A>
+, <i>Thu May 31 16:44:54 2001 UTC</i> (13 months, 3 weeks ago) by <i>lecroart</i>
+<BR>Branch: <b><A HREF="admin_service.cpp?sortby=log&amp;only_with_tag=MAIN">MAIN</A>
+</b>
+<BR>Changes since <b>1.4: +156 -61
+ lines</b><BR>Diff to previous <A HREF="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cpp.diff?r1=1.4&amp;r2=1.5&amp;sortby=log">1.4</A>
+<PRE>
+ADDED: service alias naming
+</PRE>
+<HR size=1 NOSHADE><P><a NAME="rev1.4"></a>
+ Revision <A HREF="admin_service.cpp?rev=1.4&amp;content-type=text/x-cvsweb-markup&amp;sortby=log"><b>1.4</b></A> / (<A HREF="/cvs/cvsweb.cgi/~checkout~/code/nelns/admin_service/admin_service.cpp?rev=1.4&amp;content-type=text/plain&amp;sortby=log" target="cvs_checkout" onClick="window.open('/cvs/cvsweb.cgi/~checkout~/code/nelns/admin_service/admin_service.cpp?rev=1.4&amp;content-type=text/plain','cvs_checkout','resizeable,scrollbars');"><b>download</b></A>) - <a href="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cpp?annotate=1.4&amp;sortby=log">annotate</a> - <A HREF="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cpp?r1=1.4&amp;sortby=log">[select for diffs]</A>
+, <i>Fri May 18 16:51:33 2001 UTC</i> (14 months ago) by <i>lecroart</i>
+<BR>Branch: <b><A HREF="admin_service.cpp?sortby=log&amp;only_with_tag=MAIN">MAIN</A>
+</b>
+<BR>Changes since <b>1.3: +405 -101
+ lines</b><BR>Diff to previous <A HREF="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cpp.diff?r1=1.3&amp;r2=1.4&amp;sortby=log">1.3</A>
+<PRE>
+ADDED: work in progress. added gtk
+</PRE>
+<HR size=1 NOSHADE><P><a NAME="rev1.3"></a>
+ Revision <A HREF="admin_service.cpp?rev=1.3&amp;content-type=text/x-cvsweb-markup&amp;sortby=log"><b>1.3</b></A> / (<A HREF="/cvs/cvsweb.cgi/~checkout~/code/nelns/admin_service/admin_service.cpp?rev=1.3&amp;content-type=text/plain&amp;sortby=log" target="cvs_checkout" onClick="window.open('/cvs/cvsweb.cgi/~checkout~/code/nelns/admin_service/admin_service.cpp?rev=1.3&amp;content-type=text/plain','cvs_checkout','resizeable,scrollbars');"><b>download</b></A>) - <a href="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cpp?annotate=1.3&amp;sortby=log">annotate</a> - <A HREF="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cpp?r1=1.3&amp;sortby=log">[select for diffs]</A>
+, <i>Thu May 10 08:20:06 2001 UTC</i> (14 months, 2 weeks ago) by <i>lecroart</i>
+<BR>Branch: <b><A HREF="admin_service.cpp?sortby=log&amp;only_with_tag=MAIN">MAIN</A>
+</b>
+<BR>Changes since <b>1.2: +233 -34
+ lines</b><BR>Diff to previous <A HREF="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cpp.diff?r1=1.2&amp;r2=1.3&amp;sortby=log">1.2</A>
+<PRE>
+ADDED: changed the data structures
+</PRE>
+<HR size=1 NOSHADE><P><a NAME="rev1.2"></a>
+ Revision <A HREF="admin_service.cpp?rev=1.2&amp;content-type=text/x-cvsweb-markup&amp;sortby=log"><b>1.2</b></A> / (<A HREF="/cvs/cvsweb.cgi/~checkout~/code/nelns/admin_service/admin_service.cpp?rev=1.2&amp;content-type=text/plain&amp;sortby=log" target="cvs_checkout" onClick="window.open('/cvs/cvsweb.cgi/~checkout~/code/nelns/admin_service/admin_service.cpp?rev=1.2&amp;content-type=text/plain','cvs_checkout','resizeable,scrollbars');"><b>download</b></A>) - <a href="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cpp?annotate=1.2&amp;sortby=log">annotate</a> - <A HREF="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cpp?r1=1.2&amp;sortby=log">[select for diffs]</A>
+, <i>Thu May 3 13:19:13 2001 UTC</i> (14 months, 3 weeks ago) by <i>lecroart</i>
+<BR>Branch: <b><A HREF="admin_service.cpp?sortby=log&amp;only_with_tag=MAIN">MAIN</A>
+</b>
+<BR>Changes since <b>1.1: +2 -6
+ lines</b><BR>Diff to previous <A HREF="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cpp.diff?r1=1.1&amp;r2=1.2&amp;sortby=log">1.1</A>
+<PRE>
+BUGFIX: now compile on linux
+</PRE>
+<HR size=1 NOSHADE><P><a NAME="rev1.1"></a>
+ Revision <A HREF="admin_service.cpp?rev=1.1&amp;content-type=text/x-cvsweb-markup&amp;sortby=log"><b>1.1</b></A> / (<A HREF="/cvs/cvsweb.cgi/~checkout~/code/nelns/admin_service/admin_service.cpp?rev=1.1&amp;content-type=text/plain&amp;sortby=log" target="cvs_checkout" onClick="window.open('/cvs/cvsweb.cgi/~checkout~/code/nelns/admin_service/admin_service.cpp?rev=1.1&amp;content-type=text/plain','cvs_checkout','resizeable,scrollbars');"><b>download</b></A>) - <a href="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cpp?annotate=1.1&amp;sortby=log">annotate</a> - <A HREF="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cpp?r1=1.1&amp;sortby=log">[select for diffs]</A>
+, <i>Wed May 2 12:36:39 2001 UTC</i> (14 months, 3 weeks ago) by <i>lecroart</i>
+<BR>Branch: <b><A HREF="admin_service.cpp?sortby=log&amp;only_with_tag=MAIN">MAIN</A>
+</b>
+<BR>Diff<PRE>
+ADD: new version of the network system (in NeL and NeLns)
+</PRE>
+
+<!-- block -->
+<TABLE bgcolor="#dddddd" CELLSPACING=0 CELLPADDING=0 BORDER=0 width=100%><tr><td width=1% valign=middle><img width=6 height=14 hspace=2 vspace=2 src="http://www.nevrax.org/inc/img/reddots.gif"></TD>
+ <TD><B>Request Diffs</B></TD>
+ <TD ALIGN=RIGHT> </td>
+</tr></table>
+<P>
+<P>
+<FORM METHOD="GET" ACTION="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cpp.diff" NAME="diff_select">
+<INPUT TYPE=HIDDEN NAME="sortby" VALUE="log">
+Diffs between
+<SELECT NAME="r1">
+<OPTION VALUE="text" SELECTED>Use Text Field
+<OPTION VALUE="1:MAIN">MAIN
+<OPTION VALUE="1.15:HEAD">HEAD
+</SELECT>
+<INPUT TYPE="TEXT" SIZE="12" NAME="tr1" VALUE="1.1" onChange='document.diff_select.r1.selectedIndex=0'>
+ and
+<SELECT NAME="r2">
+<OPTION VALUE="text" SELECTED>Use Text Field
+<OPTION VALUE="1:MAIN">MAIN
+<OPTION VALUE="1.15:HEAD">HEAD
+</SELECT>
+<INPUT TYPE="TEXT" SIZE="12" NAME="tr2" VALUE="1.15" onChange='docuement.diff_select.r2.selectedIndex=0'>
+<BR>Type of Diff should be a&nbsp;<SELECT NAME="f">
+<OPTION VALUE=h SELECTED>Colored Diff<OPTION VALUE=H>Long Colored Diff<OPTION VALUE=u>Unidiff<OPTION VALUE=c>Context Diff<OPTION VALUE=s>Side by Side</SELECT><INPUT TYPE=SUBMIT VALUE=" Get Diffs ">
+</FORM>
+
+<!-- block -->
+<TABLE bgcolor="#dddddd" CELLSPACING=0 CELLPADDING=0 BORDER=0 width=100%><tr><td width=1% valign=middle><img width=6 height=14 hspace=2 vspace=2 src="http://www.nevrax.org/inc/img/reddots.gif"></TD>
+ <TD><B>Select branch</B></TD>
+ <TD ALIGN=RIGHT> </td>
+</tr></table>
+<P>
+<P>
+<A name=branch></A>
+<FORM METHOD="GET" ACTION="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cpp">
+<INPUT TYPE=HIDDEN NAME="sortby" VALUE="log">
+View only Branch:
+<SELECT NAME="only_with_tag" onchange="submit()">
+<OPTION VALUE="">Show all branches
+<OPTION>MAIN
+</SELECT>
+<INPUT TYPE=SUBMIT VALUE=" View Branch ">
+</FORM>
+<A name=logsort></A>
+<FORM METHOD="GET" ACTION="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cpp">
+<INPUT TYPE=HIDDEN NAME="sortby" VALUE="log">
+Sort log by:
+<SELECT NAME="logsort" onchange="submit()">
+<OPTION VALUE=cvs>Not sorted<OPTION VALUE=date SELECTED>Commit date<OPTION VALUE=rev>Revision</SELECT>
+<INPUT TYPE=SUBMIT VALUE=" Sort ">
+</FORM>
+
+<!-- footer -->
+<BR><FONT Size=+5>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </FONT>
+</TD>
+<TD WIDTH=15><IMG SRC=http://www.nevrax.org/inc/img/pixel.gif WIDTH=15 HEIGHT=15 BORDER=0 ALT=""></TD>
+</TR>
+</TABLE>
+</BODY>
+</HTML></BODY></HTML>
diff --git a/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cpp?sortby=rev b/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cpp?sortby=rev
new file mode 100644
index 00000000..a745e7e0
--- /dev/null
+++ b/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cpp?sortby=rev
@@ -0,0 +1,277 @@
+<!doctype html public "-//W3C//DTD HTML 4.0 Transitional//EN" "http://www.w3.org/TR/REC-html40/loose.dtd">
+<HTML>
+<HEAD>
+ <TITLE>nevrax.org : cvs</TITLE>
+ <META name="keywords" content="freesoftware,nel,newt,snowballs,richard stallman,GNU,Multi-User Online World">
+
+ <LINK REL=stylesheet TYPE="text/css" HREF="http://www.nevrax.org/inc/css/nevrax.css">
+</HEAD>
+<BODY MARGINHEIGHT="0" MARGINWIDTH="0">
+
+<!-- uplinks -->
+<TABLE CELLSPACING=0 CELLPADDING=0 BORDER=0>
+ <TR>
+ <TD WIDTH=16><IMG SRC="http://www.nevrax.org/inc/img/pixel.gif" WIDTH="16" HEIGHT="16" BORDER=0 ALT=""></TD>
+ <TD WIDTH=140 BGCOLOR=#dddddd><IMG SRC="http://www.nevrax.org/inc/img/pixel.gif" WIDTH="140" HEIGHT="16" BORDER=0 ALT=""></TD>
+ <TD WIDTH=16><IMG SRC="http://www.nevrax.org/inc/img/pixel.gif" WIDTH="16" HEIGHT="16" BORDER=0 ALT=""></TD>
+ <TD><IMG width=6 height=14 SRC="http://www.nevrax.org/inc/img/reddots.gif" ALT="#" VSPACE=2 HSPACE=2 BORDER=0 ></TD><TD VALIGN=middle>&nbsp;<A CLASS=uplinks HREF=http://www.nevrax.org><b>Home</B></FONT></A>&nbsp;&nbsp;&nbsp;</TD>
+ <TD><IMG width=6 height=14 SRC="http://www.nevrax.org/inc/img/reddots.gif" ALT="#" VSPACE=2 HSPACE=2 BORDER=0 ></TD><TD VALIGN=middle>&nbsp;<A CLASS=uplinks HREF=http://www.nevrax.com><b>nevrax.com</B></FONT></A>&nbsp;&nbsp;&nbsp;</TD>
+ </TR>
+</TABLE>
+
+<!-- banner Nevrax -->
+<TABLE CELLSPACING=0 CELLPADDING=0 BORDER=0 WIDTH=100%>
+ <TR><TD BGCOLOR="#000000" BACKGROUND="http://www.nevrax.org/inc/img/black_banner.jpg"><A HREF="http://www.nevrax.org"><IMG SRC="http://www.nevrax.org/inc/img/nevrax.gif" WIDTH="170" HEIGHT="45" BORDER=0 ALT="Nevrax" ></A></TD></TR>
+</TABLE>
+
+<!-- main table -->
+<TABLE CELLSPACING=0 CELLPADDING=0 BORDER=0 height=100%>
+ <TR>
+ <TD WIDTH=16><IMG SRC="http://www.nevrax.org/inc/img/pixel.gif" WIDTH="16" HEIGHT="10" BORDER=0 ALT=""></TD>
+ <TD WIDTH=140 BGCOLOR=#dddddd VALIGN=TOP ALIGN=middle><IMG SRC="http://www.nevrax.org/inc/img/pixel.gif" WIDTH="140" HEIGHT="10" BORDER=0 ALT="">
+
+ <!------ Begin Box ------>
+ <TABLE BORDER=0 CELLSPACING=0 CELLPADDING=0 BGCOLOR=black><TR><TD><TABLE border=0 cellspacing=2 cellpadding=0 width=120><tr><TD ALIGN=middle bgcolor=black>
+ <FONT COLOR=white FACE="sans-serif"><B>Nevrax.org</B></FONT></TD></TR><tr><td colspan=2 bgcolor=#FFFFFF>
+ <TABLE cellspacing=0 cellpadding=1 border=0>
+ <tr><td ALIGN=middle><a class='linkbox' href="http://www.nevrax.org/news/" TITLE="Rubrique news"><img width=13 height=15 hspace=5 border=0 src=http://www.nevrax.org/inc/img/picto-news.gif ALT=#></A></td><td><a class='linkbox' href="http://www.nevrax.org/news/" TITLE="News">News</a></td></tr>
+ <tr><td ALIGN=middle><a class='linkbox' href="http://www.nevrax.org/mail/" TITLE="Rubrique mail"><img width=15 height=11 hspace=5 border=0 src=http://www.nevrax.org/inc/img/picto-mail.gif ALT=#></A></td><td><a class='linkbox' href="http://www.nevrax.org/mail/" TITLE="Mailing list archive">Mailing-list</a></td></tr>
+ <tr><td ALIGN=middle><a class='linkbox' href="http://www.nevrax.org/docs/" TITLE="Rubrique docs"><img width=14 height=16 hspace=5 border=0 src=http://www.nevrax.org/inc/img/picto-docs.gif ALT=#></A></td><td><a class='linkbox' href="http://www.nevrax.org/docs/" TITLE="Documentation">Documentation</a></td></tr>
+ <tr><td ALIGN=middle><a class='linkbox' href="http://www.nevrax.org/cvs/" TITLE="Rubrique cvs"><img width=13 height=17 hspace=5 border=0 src=http://www.nevrax.org/inc/img/picto-cvs.gif ALT=#></A></td><td><a class='linkbox' href="http://www.nevrax.org/cvs/" TITLE="CVS Web">CVS</a></td></tr>
+ <tr><td ALIGN=middle><a class='linkbox' href="http://www.nevrax.org/bugs/" TITLE="Rubrique bugs"><img width=20 height=16 hspace=5 border=0 src=http://www.nevrax.org/inc/img/picto-bugs.gif ALT=#></A></td><td><a class='linkbox' href="http://www.nevrax.org/bugs/" TITLE="Bugtracking">Bugs</a></td></tr>
+ <tr><td ALIGN=middle><a class='linkbox' href="http://www.nevrax.org/free/" TITLE="Rubrique license"><img width=18 height=12 hspace=5 border=0 src=http://www.nevrax.org/inc/img/picto-free.gif ALT=#></A></td><td><a class='linkbox' href="http://www.nevrax.org/free/" TITLE="Free Software">Free software</a></td></tr>
+ </TABLE>
+ </TD></TR></TABLE></TD></TR></TABLE>
+ <!------ End Box ------>
+
+ </TD>
+ <TD WIDTH=15><IMG SRC="http://www.nevrax.org/inc/img/pixel.gif" WIDTH="16" HEIGHT="16" BORDER=0 ALT=""></TD>
+ <TD ALIGN=left valign=top><IMG SRC="http://www.nevrax.org/inc/img/pixel.gif" WIDTH="140" HEIGHT="10" BORDER=0 ALT="">
+
+<!-- title -->
+<TABLE background="http://www.nevrax.org/inc/img/redline.gif" CELLSPACING=0 CELLPADDING=0 BORDER=0 width=100%><tr><td>
+<A HREF="http://www.nevrax.org/cvs/"><img src="http://www.nevrax.org/inc/img/t_cvs.gif" ALT="cvs" HEIGHT=20 BORDER=0></A>
+</td><td><IMG SRC="http://www.nevrax.org/inc/img/pixel.gif" WIDTH="1" HEIGHT="1" BORDER=0 ALT="">
+</td></tr></table>
+
+<!-- title -->
+<table width=100%><tr><td align=left><b> <a href="/cvs/cvsweb.cgi/?sortby=rev">Nevrax</a> / <a href="/cvs/cvsweb.cgi/code/?sortby=rev">code</a> / <a href="/cvs/cvsweb.cgi/code/nelns/?sortby=rev">nelns</a> / <a href="/cvs/cvsweb.cgi/code/nelns/admin_service/?sortby=rev">admin_service</a> / admin_service.cpp</b></td><td align=right><b></b></td></TR></TABLE>
+
+<!-- block -->
+<TABLE bgcolor="#dddddd" CELLSPACING=0 CELLPADDING=0 BORDER=0 width=100%><tr><td width=1% valign=middle><img width=6 height=14 hspace=2 vspace=2 src="http://www.nevrax.org/inc/img/reddots.gif"></TD>
+ <TD><B>admin_service.cpp</B></TD>
+ <TD ALIGN=RIGHT> </td>
+</tr></table>
+<P>
+<p>Default branch: MAIN<BR>
+<HR size=1 NOSHADE><P><a NAME="rev1.15"></a><a NAME="HEAD"></a><a NAME="MAIN"></a>
+ Revision <A HREF="admin_service.cpp?rev=1.15&amp;content-type=text/x-cvsweb-markup&amp;sortby=rev"><b>1.15</b></A> / (<A HREF="/cvs/cvsweb.cgi/~checkout~/code/nelns/admin_service/admin_service.cpp?rev=1.15&amp;content-type=text/plain&amp;sortby=rev" target="cvs_checkout" onClick="window.open('/cvs/cvsweb.cgi/~checkout~/code/nelns/admin_service/admin_service.cpp?rev=1.15&amp;content-type=text/plain','cvs_checkout','resizeable,scrollbars');"><b>download</b></A>) - <a href="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cpp?annotate=1.15&amp;sortby=rev">annotate</a> - <A HREF="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cpp?r1=1.15&amp;sortby=rev">[select for diffs]</A>
+, <i>Mon Mar 25 09:28:00 2002 UTC</i> (4 months ago) by <i>lecroart</i>
+<BR>Branch: <b><A HREF="admin_service.cpp?sortby=rev&amp;only_with_tag=MAIN">MAIN</A>
+</b>
+<BR>CVS Tags: <b><A HREF="admin_service.cpp?sortby=rev&amp;only_with_tag=HEAD">HEAD</A>
+</b><BR>Changes since <b>1.14: +8 -6
+ lines</b><BR>Diff to previous <A HREF="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cpp.diff?r1=1.14&amp;r2=1.15&amp;sortby=rev">1.14</A>
+<PRE>
+CHANGED: use new service functions
+</PRE>
+<HR size=1 NOSHADE><P><a NAME="rev1.14"></a>
+ Revision <A HREF="admin_service.cpp?rev=1.14&amp;content-type=text/x-cvsweb-markup&amp;sortby=rev"><b>1.14</b></A> / (<A HREF="/cvs/cvsweb.cgi/~checkout~/code/nelns/admin_service/admin_service.cpp?rev=1.14&amp;content-type=text/plain&amp;sortby=rev" target="cvs_checkout" onClick="window.open('/cvs/cvsweb.cgi/~checkout~/code/nelns/admin_service/admin_service.cpp?rev=1.14&amp;content-type=text/plain','cvs_checkout','resizeable,scrollbars');"><b>download</b></A>) - <a href="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cpp?annotate=1.14&amp;sortby=rev">annotate</a> - <A HREF="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cpp?r1=1.14&amp;sortby=rev">[select for diffs]</A>
+, <i>Tue Mar 19 17:42:48 2002 UTC</i> (4 months ago) by <i>valignat</i>
+<BR>Branch: <b><A HREF="admin_service.cpp?sortby=rev&amp;only_with_tag=MAIN">MAIN</A>
+</b>
+<BR>Changes since <b>1.13: +14 -2
+ lines</b><BR>Diff to previous <A HREF="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cpp.diff?r1=1.13&amp;r2=1.14&amp;sortby=rev">1.13</A>
+<PRE>
+Applied patches which help to have a clen install on GNU/Linux and to make a Debian package (changes on the management of config and log files, bugfixes, etc ...)
+</PRE>
+<HR size=1 NOSHADE><P><a NAME="rev1.13"></a>
+ Revision <A HREF="admin_service.cpp?rev=1.13&amp;content-type=text/x-cvsweb-markup&amp;sortby=rev"><b>1.13</b></A> / (<A HREF="/cvs/cvsweb.cgi/~checkout~/code/nelns/admin_service/admin_service.cpp?rev=1.13&amp;content-type=text/plain&amp;sortby=rev" target="cvs_checkout" onClick="window.open('/cvs/cvsweb.cgi/~checkout~/code/nelns/admin_service/admin_service.cpp?rev=1.13&amp;content-type=text/plain','cvs_checkout','resizeable,scrollbars');"><b>download</b></A>) - <a href="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cpp?annotate=1.13&amp;sortby=rev">annotate</a> - <A HREF="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cpp?r1=1.13&amp;sortby=rev">[select for diffs]</A>
+, <i>Fri Mar 1 10:20:32 2002 UTC</i> (4 months, 3 weeks ago) by <i>lecroart</i>
+<BR>Branch: <b><A HREF="admin_service.cpp?sortby=rev&amp;only_with_tag=MAIN">MAIN</A>
+</b>
+<BR>Changes since <b>1.12: +8 -16
+ lines</b><BR>Diff to previous <A HREF="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cpp.diff?r1=1.12&amp;r2=1.13&amp;sortby=rev">1.12</A>
+<PRE>
+ADDED: password per shard auth
+</PRE>
+<HR size=1 NOSHADE><P><a NAME="rev1.12"></a>
+ Revision <A HREF="admin_service.cpp?rev=1.12&amp;content-type=text/x-cvsweb-markup&amp;sortby=rev"><b>1.12</b></A> / (<A HREF="/cvs/cvsweb.cgi/~checkout~/code/nelns/admin_service/admin_service.cpp?rev=1.12&amp;content-type=text/plain&amp;sortby=rev" target="cvs_checkout" onClick="window.open('/cvs/cvsweb.cgi/~checkout~/code/nelns/admin_service/admin_service.cpp?rev=1.12&amp;content-type=text/plain','cvs_checkout','resizeable,scrollbars');"><b>download</b></A>) - <a href="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cpp?annotate=1.12&amp;sortby=rev">annotate</a> - <A HREF="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cpp?r1=1.12&amp;sortby=rev">[select for diffs]</A>
+, <i>Fri Feb 15 17:07:43 2002 UTC</i> (5 months, 1 week ago) by <i>lecroart</i>
+<BR>Branch: <b><A HREF="admin_service.cpp?sortby=rev&amp;only_with_tag=MAIN">MAIN</A>
+</b>
+<BR>Changes since <b>1.11: +50 -2
+ lines</b><BR>Diff to previous <A HREF="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cpp.diff?r1=1.11&amp;r2=1.12&amp;sortby=rev">1.11</A>
+<PRE>
+ADDED: login password
+</PRE>
+<HR size=1 NOSHADE><P><a NAME="rev1.11"></a>
+ Revision <A HREF="admin_service.cpp?rev=1.11&amp;content-type=text/x-cvsweb-markup&amp;sortby=rev"><b>1.11</b></A> / (<A HREF="/cvs/cvsweb.cgi/~checkout~/code/nelns/admin_service/admin_service.cpp?rev=1.11&amp;content-type=text/plain&amp;sortby=rev" target="cvs_checkout" onClick="window.open('/cvs/cvsweb.cgi/~checkout~/code/nelns/admin_service/admin_service.cpp?rev=1.11&amp;content-type=text/plain','cvs_checkout','resizeable,scrollbars');"><b>download</b></A>) - <a href="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cpp?annotate=1.11&amp;sortby=rev">annotate</a> - <A HREF="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cpp?r1=1.11&amp;sortby=rev">[select for diffs]</A>
+, <i>Tue Jul 10 16:49:53 2001 UTC</i> (12 months, 2 weeks ago) by <i>lecroart</i>
+<BR>Branch: <b><A HREF="admin_service.cpp?sortby=rev&amp;only_with_tag=MAIN">MAIN</A>
+</b>
+<BR>Changes since <b>1.10: +18 -14
+ lines</b><BR>Diff to previous <A HREF="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cpp.diff?r1=1.10&amp;r2=1.11&amp;sortby=rev">1.10</A>
+<PRE>
+BUGFIX: when a service isn't ready and already disconnected, it doesn't crash anymore
+</PRE>
+<HR size=1 NOSHADE><P><a NAME="rev1.10"></a>
+ Revision <A HREF="admin_service.cpp?rev=1.10&amp;content-type=text/x-cvsweb-markup&amp;sortby=rev"><b>1.10</b></A> / (<A HREF="/cvs/cvsweb.cgi/~checkout~/code/nelns/admin_service/admin_service.cpp?rev=1.10&amp;content-type=text/plain&amp;sortby=rev" target="cvs_checkout" onClick="window.open('/cvs/cvsweb.cgi/~checkout~/code/nelns/admin_service/admin_service.cpp?rev=1.10&amp;content-type=text/plain','cvs_checkout','resizeable,scrollbars');"><b>download</b></A>) - <a href="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cpp?annotate=1.10&amp;sortby=rev">annotate</a> - <A HREF="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cpp?r1=1.10&amp;sortby=rev">[select for diffs]</A>
+, <i>Thu Jul 5 08:26:07 2001 UTC</i> (12 months, 2 weeks ago) by <i>lecroart</i>
+<BR>Branch: <b><A HREF="admin_service.cpp?sortby=rev&amp;only_with_tag=MAIN">MAIN</A>
+</b>
+<BR>Changes since <b>1.9: +1 -6
+ lines</b><BR>Diff to previous <A HREF="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cpp.diff?r1=1.9&amp;r2=1.10&amp;sortby=rev">1.9</A>
+<PRE>
+REMOVED: update()
+</PRE>
+<HR size=1 NOSHADE><P><a NAME="rev1.9"></a>
+ Revision <A HREF="admin_service.cpp?rev=1.9&amp;content-type=text/x-cvsweb-markup&amp;sortby=rev"><b>1.9</b></A> / (<A HREF="/cvs/cvsweb.cgi/~checkout~/code/nelns/admin_service/admin_service.cpp?rev=1.9&amp;content-type=text/plain&amp;sortby=rev" target="cvs_checkout" onClick="window.open('/cvs/cvsweb.cgi/~checkout~/code/nelns/admin_service/admin_service.cpp?rev=1.9&amp;content-type=text/plain','cvs_checkout','resizeable,scrollbars');"><b>download</b></A>) - <a href="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cpp?annotate=1.9&amp;sortby=rev">annotate</a> - <A HREF="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cpp?r1=1.9&amp;sortby=rev">[select for diffs]</A>
+, <i>Wed Jun 27 08:34:23 2001 UTC</i> (12 months, 4 weeks ago) by <i>lecroart</i>
+<BR>Branch: <b><A HREF="admin_service.cpp?sortby=rev&amp;only_with_tag=MAIN">MAIN</A>
+</b>
+<BR>Changes since <b>1.8: +14 -4
+ lines</b><BR>Diff to previous <A HREF="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cpp.diff?r1=1.8&amp;r2=1.9&amp;sortby=rev">1.8</A>
+<PRE>
+ADDED: command redirection
+</PRE>
+<HR size=1 NOSHADE><P><a NAME="rev1.8"></a>
+ Revision <A HREF="admin_service.cpp?rev=1.8&amp;content-type=text/x-cvsweb-markup&amp;sortby=rev"><b>1.8</b></A> / (<A HREF="/cvs/cvsweb.cgi/~checkout~/code/nelns/admin_service/admin_service.cpp?rev=1.8&amp;content-type=text/plain&amp;sortby=rev" target="cvs_checkout" onClick="window.open('/cvs/cvsweb.cgi/~checkout~/code/nelns/admin_service/admin_service.cpp?rev=1.8&amp;content-type=text/plain','cvs_checkout','resizeable,scrollbars');"><b>download</b></A>) - <a href="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cpp?annotate=1.8&amp;sortby=rev">annotate</a> - <A HREF="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cpp?r1=1.8&amp;sortby=rev">[select for diffs]</A>
+, <i>Mon Jun 18 14:54:06 2001 UTC</i> (13 months ago) by <i>lecroart</i>
+<BR>Branch: <b><A HREF="admin_service.cpp?sortby=rev&amp;only_with_tag=MAIN">MAIN</A>
+</b>
+<BR>Changes since <b>1.7: +2 -2
+ lines</b><BR>Diff to previous <A HREF="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cpp.diff?r1=1.7&amp;r2=1.8&amp;sortby=rev">1.7</A>
+<PRE>
+BUGFIX: linux compilation
+</PRE>
+<HR size=1 NOSHADE><P><a NAME="rev1.7"></a>
+ Revision <A HREF="admin_service.cpp?rev=1.7&amp;content-type=text/x-cvsweb-markup&amp;sortby=rev"><b>1.7</b></A> / (<A HREF="/cvs/cvsweb.cgi/~checkout~/code/nelns/admin_service/admin_service.cpp?rev=1.7&amp;content-type=text/plain&amp;sortby=rev" target="cvs_checkout" onClick="window.open('/cvs/cvsweb.cgi/~checkout~/code/nelns/admin_service/admin_service.cpp?rev=1.7&amp;content-type=text/plain','cvs_checkout','resizeable,scrollbars');"><b>download</b></A>) - <a href="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cpp?annotate=1.7&amp;sortby=rev">annotate</a> - <A HREF="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cpp?r1=1.7&amp;sortby=rev">[select for diffs]</A>
+, <i>Mon Jun 18 14:43:31 2001 UTC</i> (13 months ago) by <i>lecroart</i>
+<BR>Branch: <b><A HREF="admin_service.cpp?sortby=rev&amp;only_with_tag=MAIN">MAIN</A>
+</b>
+<BR>Changes since <b>1.6: +10 -9
+ lines</b><BR>Diff to previous <A HREF="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cpp.diff?r1=1.6&amp;r2=1.7&amp;sortby=rev">1.6</A>
+<PRE>
+BUGFIX: linux compilation
+</PRE>
+<HR size=1 NOSHADE><P><a NAME="rev1.6"></a>
+ Revision <A HREF="admin_service.cpp?rev=1.6&amp;content-type=text/x-cvsweb-markup&amp;sortby=rev"><b>1.6</b></A> / (<A HREF="/cvs/cvsweb.cgi/~checkout~/code/nelns/admin_service/admin_service.cpp?rev=1.6&amp;content-type=text/plain&amp;sortby=rev" target="cvs_checkout" onClick="window.open('/cvs/cvsweb.cgi/~checkout~/code/nelns/admin_service/admin_service.cpp?rev=1.6&amp;content-type=text/plain','cvs_checkout','resizeable,scrollbars');"><b>download</b></A>) - <a href="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cpp?annotate=1.6&amp;sortby=rev">annotate</a> - <A HREF="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cpp?r1=1.6&amp;sortby=rev">[select for diffs]</A>
+, <i>Thu Jun 7 16:19:05 2001 UTC</i> (13 months, 2 weeks ago) by <i>lecroart</i>
+<BR>Branch: <b><A HREF="admin_service.cpp?sortby=rev&amp;only_with_tag=MAIN">MAIN</A>
+</b>
+<BR>Changes since <b>1.5: +134 -48
+ lines</b><BR>Diff to previous <A HREF="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cpp.diff?r1=1.5&amp;r2=1.6&amp;sortby=rev">1.5</A>
+<PRE>
+ADDED: commands system
+</PRE>
+<HR size=1 NOSHADE><P><a NAME="rev1.5"></a>
+ Revision <A HREF="admin_service.cpp?rev=1.5&amp;content-type=text/x-cvsweb-markup&amp;sortby=rev"><b>1.5</b></A> / (<A HREF="/cvs/cvsweb.cgi/~checkout~/code/nelns/admin_service/admin_service.cpp?rev=1.5&amp;content-type=text/plain&amp;sortby=rev" target="cvs_checkout" onClick="window.open('/cvs/cvsweb.cgi/~checkout~/code/nelns/admin_service/admin_service.cpp?rev=1.5&amp;content-type=text/plain','cvs_checkout','resizeable,scrollbars');"><b>download</b></A>) - <a href="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cpp?annotate=1.5&amp;sortby=rev">annotate</a> - <A HREF="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cpp?r1=1.5&amp;sortby=rev">[select for diffs]</A>
+, <i>Thu May 31 16:44:54 2001 UTC</i> (13 months, 3 weeks ago) by <i>lecroart</i>
+<BR>Branch: <b><A HREF="admin_service.cpp?sortby=rev&amp;only_with_tag=MAIN">MAIN</A>
+</b>
+<BR>Changes since <b>1.4: +156 -61
+ lines</b><BR>Diff to previous <A HREF="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cpp.diff?r1=1.4&amp;r2=1.5&amp;sortby=rev">1.4</A>
+<PRE>
+ADDED: service alias naming
+</PRE>
+<HR size=1 NOSHADE><P><a NAME="rev1.4"></a>
+ Revision <A HREF="admin_service.cpp?rev=1.4&amp;content-type=text/x-cvsweb-markup&amp;sortby=rev"><b>1.4</b></A> / (<A HREF="/cvs/cvsweb.cgi/~checkout~/code/nelns/admin_service/admin_service.cpp?rev=1.4&amp;content-type=text/plain&amp;sortby=rev" target="cvs_checkout" onClick="window.open('/cvs/cvsweb.cgi/~checkout~/code/nelns/admin_service/admin_service.cpp?rev=1.4&amp;content-type=text/plain','cvs_checkout','resizeable,scrollbars');"><b>download</b></A>) - <a href="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cpp?annotate=1.4&amp;sortby=rev">annotate</a> - <A HREF="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cpp?r1=1.4&amp;sortby=rev">[select for diffs]</A>
+, <i>Fri May 18 16:51:33 2001 UTC</i> (14 months ago) by <i>lecroart</i>
+<BR>Branch: <b><A HREF="admin_service.cpp?sortby=rev&amp;only_with_tag=MAIN">MAIN</A>
+</b>
+<BR>Changes since <b>1.3: +405 -101
+ lines</b><BR>Diff to previous <A HREF="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cpp.diff?r1=1.3&amp;r2=1.4&amp;sortby=rev">1.3</A>
+<PRE>
+ADDED: work in progress. added gtk
+</PRE>
+<HR size=1 NOSHADE><P><a NAME="rev1.3"></a>
+ Revision <A HREF="admin_service.cpp?rev=1.3&amp;content-type=text/x-cvsweb-markup&amp;sortby=rev"><b>1.3</b></A> / (<A HREF="/cvs/cvsweb.cgi/~checkout~/code/nelns/admin_service/admin_service.cpp?rev=1.3&amp;content-type=text/plain&amp;sortby=rev" target="cvs_checkout" onClick="window.open('/cvs/cvsweb.cgi/~checkout~/code/nelns/admin_service/admin_service.cpp?rev=1.3&amp;content-type=text/plain','cvs_checkout','resizeable,scrollbars');"><b>download</b></A>) - <a href="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cpp?annotate=1.3&amp;sortby=rev">annotate</a> - <A HREF="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cpp?r1=1.3&amp;sortby=rev">[select for diffs]</A>
+, <i>Thu May 10 08:20:06 2001 UTC</i> (14 months, 2 weeks ago) by <i>lecroart</i>
+<BR>Branch: <b><A HREF="admin_service.cpp?sortby=rev&amp;only_with_tag=MAIN">MAIN</A>
+</b>
+<BR>Changes since <b>1.2: +233 -34
+ lines</b><BR>Diff to previous <A HREF="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cpp.diff?r1=1.2&amp;r2=1.3&amp;sortby=rev">1.2</A>
+<PRE>
+ADDED: changed the data structures
+</PRE>
+<HR size=1 NOSHADE><P><a NAME="rev1.2"></a>
+ Revision <A HREF="admin_service.cpp?rev=1.2&amp;content-type=text/x-cvsweb-markup&amp;sortby=rev"><b>1.2</b></A> / (<A HREF="/cvs/cvsweb.cgi/~checkout~/code/nelns/admin_service/admin_service.cpp?rev=1.2&amp;content-type=text/plain&amp;sortby=rev" target="cvs_checkout" onClick="window.open('/cvs/cvsweb.cgi/~checkout~/code/nelns/admin_service/admin_service.cpp?rev=1.2&amp;content-type=text/plain','cvs_checkout','resizeable,scrollbars');"><b>download</b></A>) - <a href="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cpp?annotate=1.2&amp;sortby=rev">annotate</a> - <A HREF="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cpp?r1=1.2&amp;sortby=rev">[select for diffs]</A>
+, <i>Thu May 3 13:19:13 2001 UTC</i> (14 months, 3 weeks ago) by <i>lecroart</i>
+<BR>Branch: <b><A HREF="admin_service.cpp?sortby=rev&amp;only_with_tag=MAIN">MAIN</A>
+</b>
+<BR>Changes since <b>1.1: +2 -6
+ lines</b><BR>Diff to previous <A HREF="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cpp.diff?r1=1.1&amp;r2=1.2&amp;sortby=rev">1.1</A>
+<PRE>
+BUGFIX: now compile on linux
+</PRE>
+<HR size=1 NOSHADE><P><a NAME="rev1.1"></a>
+ Revision <A HREF="admin_service.cpp?rev=1.1&amp;content-type=text/x-cvsweb-markup&amp;sortby=rev"><b>1.1</b></A> / (<A HREF="/cvs/cvsweb.cgi/~checkout~/code/nelns/admin_service/admin_service.cpp?rev=1.1&amp;content-type=text/plain&amp;sortby=rev" target="cvs_checkout" onClick="window.open('/cvs/cvsweb.cgi/~checkout~/code/nelns/admin_service/admin_service.cpp?rev=1.1&amp;content-type=text/plain','cvs_checkout','resizeable,scrollbars');"><b>download</b></A>) - <a href="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cpp?annotate=1.1&amp;sortby=rev">annotate</a> - <A HREF="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cpp?r1=1.1&amp;sortby=rev">[select for diffs]</A>
+, <i>Wed May 2 12:36:39 2001 UTC</i> (14 months, 3 weeks ago) by <i>lecroart</i>
+<BR>Branch: <b><A HREF="admin_service.cpp?sortby=rev&amp;only_with_tag=MAIN">MAIN</A>
+</b>
+<BR>Diff<PRE>
+ADD: new version of the network system (in NeL and NeLns)
+</PRE>
+
+<!-- block -->
+<TABLE bgcolor="#dddddd" CELLSPACING=0 CELLPADDING=0 BORDER=0 width=100%><tr><td width=1% valign=middle><img width=6 height=14 hspace=2 vspace=2 src="http://www.nevrax.org/inc/img/reddots.gif"></TD>
+ <TD><B>Request Diffs</B></TD>
+ <TD ALIGN=RIGHT> </td>
+</tr></table>
+<P>
+<P>
+<FORM METHOD="GET" ACTION="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cpp.diff" NAME="diff_select">
+<INPUT TYPE=HIDDEN NAME="sortby" VALUE="rev">
+Diffs between
+<SELECT NAME="r1">
+<OPTION VALUE="text" SELECTED>Use Text Field
+<OPTION VALUE="1:MAIN">MAIN
+<OPTION VALUE="1.15:HEAD">HEAD
+</SELECT>
+<INPUT TYPE="TEXT" SIZE="12" NAME="tr1" VALUE="1.1" onChange='document.diff_select.r1.selectedIndex=0'>
+ and
+<SELECT NAME="r2">
+<OPTION VALUE="text" SELECTED>Use Text Field
+<OPTION VALUE="1:MAIN">MAIN
+<OPTION VALUE="1.15:HEAD">HEAD
+</SELECT>
+<INPUT TYPE="TEXT" SIZE="12" NAME="tr2" VALUE="1.15" onChange='docuement.diff_select.r2.selectedIndex=0'>
+<BR>Type of Diff should be a&nbsp;<SELECT NAME="f">
+<OPTION VALUE=h SELECTED>Colored Diff<OPTION VALUE=H>Long Colored Diff<OPTION VALUE=u>Unidiff<OPTION VALUE=c>Context Diff<OPTION VALUE=s>Side by Side</SELECT><INPUT TYPE=SUBMIT VALUE=" Get Diffs ">
+</FORM>
+
+<!-- block -->
+<TABLE bgcolor="#dddddd" CELLSPACING=0 CELLPADDING=0 BORDER=0 width=100%><tr><td width=1% valign=middle><img width=6 height=14 hspace=2 vspace=2 src="http://www.nevrax.org/inc/img/reddots.gif"></TD>
+ <TD><B>Select branch</B></TD>
+ <TD ALIGN=RIGHT> </td>
+</tr></table>
+<P>
+<P>
+<A name=branch></A>
+<FORM METHOD="GET" ACTION="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cpp">
+<INPUT TYPE=HIDDEN NAME="sortby" VALUE="rev">
+View only Branch:
+<SELECT NAME="only_with_tag" onchange="submit()">
+<OPTION VALUE="">Show all branches
+<OPTION>MAIN
+</SELECT>
+<INPUT TYPE=SUBMIT VALUE=" View Branch ">
+</FORM>
+<A name=logsort></A>
+<FORM METHOD="GET" ACTION="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.cpp">
+<INPUT TYPE=HIDDEN NAME="sortby" VALUE="rev">
+Sort log by:
+<SELECT NAME="logsort" onchange="submit()">
+<OPTION VALUE=cvs>Not sorted<OPTION VALUE=date SELECTED>Commit date<OPTION VALUE=rev>Revision</SELECT>
+<INPUT TYPE=SUBMIT VALUE=" Sort ">
+</FORM>
+
+<!-- footer -->
+<BR><FONT Size=+5>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </FONT>
+</TD>
+<TD WIDTH=15><IMG SRC=http://www.nevrax.org/inc/img/pixel.gif WIDTH=15 HEIGHT=15 BORDER=0 ALT=""></TD>
+</TR>
+</TABLE>
+</BODY>
+</HTML></BODY></HTML>
diff --git a/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.dsp b/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.dsp
new file mode 100644
index 00000000..59e4b429
--- /dev/null
+++ b/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.dsp
@@ -0,0 +1,174 @@
+<!doctype html public "-//W3C//DTD HTML 4.0 Transitional//EN" "http://www.w3.org/TR/REC-html40/loose.dtd">
+<HTML>
+<HEAD>
+ <TITLE>nevrax.org : cvs</TITLE>
+ <META name="keywords" content="freesoftware,nel,newt,snowballs,richard stallman,GNU,Multi-User Online World">
+
+ <LINK REL=stylesheet TYPE="text/css" HREF="http://www.nevrax.org/inc/css/nevrax.css">
+</HEAD>
+<BODY MARGINHEIGHT="0" MARGINWIDTH="0">
+
+<!-- uplinks -->
+<TABLE CELLSPACING=0 CELLPADDING=0 BORDER=0>
+ <TR>
+ <TD WIDTH=16><IMG SRC="http://www.nevrax.org/inc/img/pixel.gif" WIDTH="16" HEIGHT="16" BORDER=0 ALT=""></TD>
+ <TD WIDTH=140 BGCOLOR=#dddddd><IMG SRC="http://www.nevrax.org/inc/img/pixel.gif" WIDTH="140" HEIGHT="16" BORDER=0 ALT=""></TD>
+ <TD WIDTH=16><IMG SRC="http://www.nevrax.org/inc/img/pixel.gif" WIDTH="16" HEIGHT="16" BORDER=0 ALT=""></TD>
+ <TD><IMG width=6 height=14 SRC="http://www.nevrax.org/inc/img/reddots.gif" ALT="#" VSPACE=2 HSPACE=2 BORDER=0 ></TD><TD VALIGN=middle>&nbsp;<A CLASS=uplinks HREF=http://www.nevrax.org><b>Home</B></FONT></A>&nbsp;&nbsp;&nbsp;</TD>
+ <TD><IMG width=6 height=14 SRC="http://www.nevrax.org/inc/img/reddots.gif" ALT="#" VSPACE=2 HSPACE=2 BORDER=0 ></TD><TD VALIGN=middle>&nbsp;<A CLASS=uplinks HREF=http://www.nevrax.com><b>nevrax.com</B></FONT></A>&nbsp;&nbsp;&nbsp;</TD>
+ </TR>
+</TABLE>
+
+<!-- banner Nevrax -->
+<TABLE CELLSPACING=0 CELLPADDING=0 BORDER=0 WIDTH=100%>
+ <TR><TD BGCOLOR="#000000" BACKGROUND="http://www.nevrax.org/inc/img/black_banner.jpg"><A HREF="http://www.nevrax.org"><IMG SRC="http://www.nevrax.org/inc/img/nevrax.gif" WIDTH="170" HEIGHT="45" BORDER=0 ALT="Nevrax" ></A></TD></TR>
+</TABLE>
+
+<!-- main table -->
+<TABLE CELLSPACING=0 CELLPADDING=0 BORDER=0 height=100%>
+ <TR>
+ <TD WIDTH=16><IMG SRC="http://www.nevrax.org/inc/img/pixel.gif" WIDTH="16" HEIGHT="10" BORDER=0 ALT=""></TD>
+ <TD WIDTH=140 BGCOLOR=#dddddd VALIGN=TOP ALIGN=middle><IMG SRC="http://www.nevrax.org/inc/img/pixel.gif" WIDTH="140" HEIGHT="10" BORDER=0 ALT="">
+
+ <!------ Begin Box ------>
+ <TABLE BORDER=0 CELLSPACING=0 CELLPADDING=0 BGCOLOR=black><TR><TD><TABLE border=0 cellspacing=2 cellpadding=0 width=120><tr><TD ALIGN=middle bgcolor=black>
+ <FONT COLOR=white FACE="sans-serif"><B>Nevrax.org</B></FONT></TD></TR><tr><td colspan=2 bgcolor=#FFFFFF>
+ <TABLE cellspacing=0 cellpadding=1 border=0>
+ <tr><td ALIGN=middle><a class='linkbox' href="http://www.nevrax.org/news/" TITLE="Rubrique news"><img width=13 height=15 hspace=5 border=0 src=http://www.nevrax.org/inc/img/picto-news.gif ALT=#></A></td><td><a class='linkbox' href="http://www.nevrax.org/news/" TITLE="News">News</a></td></tr>
+ <tr><td ALIGN=middle><a class='linkbox' href="http://www.nevrax.org/mail/" TITLE="Rubrique mail"><img width=15 height=11 hspace=5 border=0 src=http://www.nevrax.org/inc/img/picto-mail.gif ALT=#></A></td><td><a class='linkbox' href="http://www.nevrax.org/mail/" TITLE="Mailing list archive">Mailing-list</a></td></tr>
+ <tr><td ALIGN=middle><a class='linkbox' href="http://www.nevrax.org/docs/" TITLE="Rubrique docs"><img width=14 height=16 hspace=5 border=0 src=http://www.nevrax.org/inc/img/picto-docs.gif ALT=#></A></td><td><a class='linkbox' href="http://www.nevrax.org/docs/" TITLE="Documentation">Documentation</a></td></tr>
+ <tr><td ALIGN=middle><a class='linkbox' href="http://www.nevrax.org/cvs/" TITLE="Rubrique cvs"><img width=13 height=17 hspace=5 border=0 src=http://www.nevrax.org/inc/img/picto-cvs.gif ALT=#></A></td><td><a class='linkbox' href="http://www.nevrax.org/cvs/" TITLE="CVS Web">CVS</a></td></tr>
+ <tr><td ALIGN=middle><a class='linkbox' href="http://www.nevrax.org/bugs/" TITLE="Rubrique bugs"><img width=20 height=16 hspace=5 border=0 src=http://www.nevrax.org/inc/img/picto-bugs.gif ALT=#></A></td><td><a class='linkbox' href="http://www.nevrax.org/bugs/" TITLE="Bugtracking">Bugs</a></td></tr>
+ <tr><td ALIGN=middle><a class='linkbox' href="http://www.nevrax.org/free/" TITLE="Rubrique license"><img width=18 height=12 hspace=5 border=0 src=http://www.nevrax.org/inc/img/picto-free.gif ALT=#></A></td><td><a class='linkbox' href="http://www.nevrax.org/free/" TITLE="Free Software">Free software</a></td></tr>
+ </TABLE>
+ </TD></TR></TABLE></TD></TR></TABLE>
+ <!------ End Box ------>
+
+ </TD>
+ <TD WIDTH=15><IMG SRC="http://www.nevrax.org/inc/img/pixel.gif" WIDTH="16" HEIGHT="16" BORDER=0 ALT=""></TD>
+ <TD ALIGN=left valign=top><IMG SRC="http://www.nevrax.org/inc/img/pixel.gif" WIDTH="140" HEIGHT="10" BORDER=0 ALT="">
+
+<!-- title -->
+<TABLE background="http://www.nevrax.org/inc/img/redline.gif" CELLSPACING=0 CELLPADDING=0 BORDER=0 width=100%><tr><td>
+<A HREF="http://www.nevrax.org/cvs/"><img src="http://www.nevrax.org/inc/img/t_cvs.gif" ALT="cvs" HEIGHT=20 BORDER=0></A>
+</td><td><IMG SRC="http://www.nevrax.org/inc/img/pixel.gif" WIDTH="1" HEIGHT="1" BORDER=0 ALT="">
+</td></tr></table>
+
+<!-- title -->
+<table width=100%><tr><td align=left><b> <a href="/cvs/cvsweb.cgi/">Nevrax</a> / <a href="/cvs/cvsweb.cgi/code/">code</a> / <a href="/cvs/cvsweb.cgi/code/nelns/">nelns</a> / <a href="/cvs/cvsweb.cgi/code/nelns/admin_service/">admin_service</a> / admin_service.dsp</b></td><td align=right><b></b></td></TR></TABLE>
+
+<!-- block -->
+<TABLE bgcolor="#dddddd" CELLSPACING=0 CELLPADDING=0 BORDER=0 width=100%><tr><td width=1% valign=middle><img width=6 height=14 hspace=2 vspace=2 src="http://www.nevrax.org/inc/img/reddots.gif"></TD>
+ <TD><B>admin_service.dsp</B></TD>
+ <TD ALIGN=RIGHT> </td>
+</tr></table>
+<P>
+<p>Default branch: MAIN<BR>
+<HR size=1 NOSHADE><P><a NAME="rev1.5"></a><a NAME="HEAD"></a><a NAME="MAIN"></a>
+ Revision <A HREF="admin_service.dsp?rev=1.5&amp;content-type=text/x-cvsweb-markup"><b>1.5</b></A> / (<A HREF="/cvs/cvsweb.cgi/~checkout~/code/nelns/admin_service/admin_service.dsp?rev=1.5&amp;content-type=text/plain" target="cvs_checkout" onClick="window.open('/cvs/cvsweb.cgi/~checkout~/code/nelns/admin_service/admin_service.dsp?rev=1.5&amp;content-type=text/plain','cvs_checkout','resizeable,scrollbars');"><b>download</b></A>) - <a href="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.dsp?annotate=1.5">annotate</a> - <A HREF="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.dsp?r1=1.5">[select for diffs]</A>
+, <i>Thu Aug 23 15:43:21 2001 UTC</i> (9 months, 4 weeks ago) by <i>lecroart</i>
+<BR>Branch: <b><A HREF="admin_service.dsp?only_with_tag=MAIN">MAIN</A>
+</b>
+<BR>CVS Tags: <b><A HREF="admin_service.dsp?only_with_tag=HEAD">HEAD</A>
+</b><BR>Changes since <b>1.4: +34 -3
+ lines</b><BR>Diff to previous <A HREF="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.dsp.diff?r1=1.4&amp;r2=1.5">1.4</A>
+<PRE>
+ADDED: DebugFast config
+</PRE>
+<HR size=1 NOSHADE><P><a NAME="rev1.4"></a>
+ Revision <A HREF="admin_service.dsp?rev=1.4&amp;content-type=text/x-cvsweb-markup"><b>1.4</b></A> / (<A HREF="/cvs/cvsweb.cgi/~checkout~/code/nelns/admin_service/admin_service.dsp?rev=1.4&amp;content-type=text/plain" target="cvs_checkout" onClick="window.open('/cvs/cvsweb.cgi/~checkout~/code/nelns/admin_service/admin_service.dsp?rev=1.4&amp;content-type=text/plain','cvs_checkout','resizeable,scrollbars');"><b>download</b></A>) - <a href="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.dsp?annotate=1.4">annotate</a> - <A HREF="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.dsp?r1=1.4">[select for diffs]</A>
+, <i>Fri Jun 15 09:58:49 2001 UTC</i> (12 months ago) by <i>lecroart</i>
+<BR>Branch: <b><A HREF="admin_service.dsp?only_with_tag=MAIN">MAIN</A>
+</b>
+<BR>Changes since <b>1.3: +9 -6
+ lines</b><BR>Diff to previous <A HREF="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.dsp.diff?r1=1.3&amp;r2=1.4">1.3</A>
+<PRE>
+CHANGED: use win32
+</PRE>
+<HR size=1 NOSHADE><P><a NAME="rev1.3"></a>
+ Revision <A HREF="admin_service.dsp?rev=1.3&amp;content-type=text/x-cvsweb-markup"><b>1.3</b></A> / (<A HREF="/cvs/cvsweb.cgi/~checkout~/code/nelns/admin_service/admin_service.dsp?rev=1.3&amp;content-type=text/plain" target="cvs_checkout" onClick="window.open('/cvs/cvsweb.cgi/~checkout~/code/nelns/admin_service/admin_service.dsp?rev=1.3&amp;content-type=text/plain','cvs_checkout','resizeable,scrollbars');"><b>download</b></A>) - <a href="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.dsp?annotate=1.3">annotate</a> - <A HREF="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.dsp?r1=1.3">[select for diffs]</A>
+, <i>Tue Jun 12 15:44:38 2001 UTC</i> (12 months, 1 week ago) by <i>lecroart</i>
+<BR>Branch: <b><A HREF="admin_service.dsp?only_with_tag=MAIN">MAIN</A>
+</b>
+<BR>Changes since <b>1.2: +6 -3
+ lines</b><BR>Diff to previous <A HREF="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.dsp.diff?r1=1.2&amp;r2=1.3">1.2</A>
+<PRE>
+#CHANGED: remove precompilated header
+</PRE>
+<HR size=1 NOSHADE><P><a NAME="rev1.2"></a>
+ Revision <A HREF="admin_service.dsp?rev=1.2&amp;content-type=text/x-cvsweb-markup"><b>1.2</b></A> / (<A HREF="/cvs/cvsweb.cgi/~checkout~/code/nelns/admin_service/admin_service.dsp?rev=1.2&amp;content-type=text/plain" target="cvs_checkout" onClick="window.open('/cvs/cvsweb.cgi/~checkout~/code/nelns/admin_service/admin_service.dsp?rev=1.2&amp;content-type=text/plain','cvs_checkout','resizeable,scrollbars');"><b>download</b></A>) - <a href="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.dsp?annotate=1.2">annotate</a> - <A HREF="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.dsp?r1=1.2">[select for diffs]</A>
+, <i>Thu Jun 7 16:19:05 2001 UTC</i> (12 months, 2 weeks ago) by <i>lecroart</i>
+<BR>Branch: <b><A HREF="admin_service.dsp?only_with_tag=MAIN">MAIN</A>
+</b>
+<BR>Changes since <b>1.1: +4 -0
+ lines</b><BR>Diff to previous <A HREF="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.dsp.diff?r1=1.1&amp;r2=1.2">1.1</A>
+<PRE>
+ADDED: commands system
+</PRE>
+<HR size=1 NOSHADE><P><a NAME="rev1.1"></a>
+ Revision <A HREF="admin_service.dsp?rev=1.1&amp;content-type=text/x-cvsweb-markup"><b>1.1</b></A> / (<A HREF="/cvs/cvsweb.cgi/~checkout~/code/nelns/admin_service/admin_service.dsp?rev=1.1&amp;content-type=text/plain" target="cvs_checkout" onClick="window.open('/cvs/cvsweb.cgi/~checkout~/code/nelns/admin_service/admin_service.dsp?rev=1.1&amp;content-type=text/plain','cvs_checkout','resizeable,scrollbars');"><b>download</b></A>) - <a href="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.dsp?annotate=1.1">annotate</a> - <A HREF="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.dsp?r1=1.1">[select for diffs]</A>
+, <i>Wed May 2 12:36:39 2001 UTC</i> (13 months, 2 weeks ago) by <i>lecroart</i>
+<BR>Branch: <b><A HREF="admin_service.dsp?only_with_tag=MAIN">MAIN</A>
+</b>
+<BR>Diff<PRE>
+ADD: new version of the network system (in NeL and NeLns)
+</PRE>
+
+<!-- block -->
+<TABLE bgcolor="#dddddd" CELLSPACING=0 CELLPADDING=0 BORDER=0 width=100%><tr><td width=1% valign=middle><img width=6 height=14 hspace=2 vspace=2 src="http://www.nevrax.org/inc/img/reddots.gif"></TD>
+ <TD><B>Request Diffs</B></TD>
+ <TD ALIGN=RIGHT> </td>
+</tr></table>
+<P>
+<P>
+<FORM METHOD="GET" ACTION="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.dsp.diff" NAME="diff_select">
+Diffs between
+<SELECT NAME="r1">
+<OPTION VALUE="text" SELECTED>Use Text Field
+<OPTION VALUE="1:MAIN">MAIN
+<OPTION VALUE="1.5:HEAD">HEAD
+</SELECT>
+<INPUT TYPE="TEXT" SIZE="12" NAME="tr1" VALUE="1.1" onChange='document.diff_select.r1.selectedIndex=0'>
+ and
+<SELECT NAME="r2">
+<OPTION VALUE="text" SELECTED>Use Text Field
+<OPTION VALUE="1:MAIN">MAIN
+<OPTION VALUE="1.5:HEAD">HEAD
+</SELECT>
+<INPUT TYPE="TEXT" SIZE="12" NAME="tr2" VALUE="1.5" onChange='docuement.diff_select.r2.selectedIndex=0'>
+<BR>Type of Diff should be a&nbsp;<SELECT NAME="f">
+<OPTION VALUE=h SELECTED>Colored Diff<OPTION VALUE=H>Long Colored Diff<OPTION VALUE=u>Unidiff<OPTION VALUE=c>Context Diff<OPTION VALUE=s>Side by Side</SELECT><INPUT TYPE=SUBMIT VALUE=" Get Diffs ">
+</FORM>
+
+<!-- block -->
+<TABLE bgcolor="#dddddd" CELLSPACING=0 CELLPADDING=0 BORDER=0 width=100%><tr><td width=1% valign=middle><img width=6 height=14 hspace=2 vspace=2 src="http://www.nevrax.org/inc/img/reddots.gif"></TD>
+ <TD><B>Select branch</B></TD>
+ <TD ALIGN=RIGHT> </td>
+</tr></table>
+<P>
+<P>
+<A name=branch></A>
+<FORM METHOD="GET" ACTION="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.dsp">
+View only Branch:
+<SELECT NAME="only_with_tag" onchange="submit()">
+<OPTION VALUE="">Show all branches
+<OPTION>MAIN
+</SELECT>
+<INPUT TYPE=SUBMIT VALUE=" View Branch ">
+</FORM>
+<A name=logsort></A>
+<FORM METHOD="GET" ACTION="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.dsp">
+Sort log by:
+<SELECT NAME="logsort" onchange="submit()">
+<OPTION VALUE=cvs>Not sorted<OPTION VALUE=date SELECTED>Commit date<OPTION VALUE=rev>Revision</SELECT>
+<INPUT TYPE=SUBMIT VALUE=" Sort ">
+</FORM>
+
+<!-- footer -->
+<BR><FONT Size=+5>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </FONT>
+</TD>
+<TD WIDTH=15><IMG SRC=http://www.nevrax.org/inc/img/pixel.gif WIDTH=15 HEIGHT=15 BORDER=0 ALT=""></TD>
+</TR>
+</TABLE>
+</BODY>
+</HTML></BODY></HTML>
diff --git a/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.dsp.diff?r1=1.1&r2=1.2 b/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.dsp.diff?r1=1.1&r2=1.2
new file mode 100644
index 00000000..79837f31
--- /dev/null
+++ b/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.dsp.diff?r1=1.1&r2=1.2
@@ -0,0 +1,32 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"><HTML>
+<HEAD><style> A { color:black }</style>
+<!-- hennerik CVSweb $Revision: 1.93 $ -->
+<TITLE>code/nelns/admin_service/admin_service.dsp - diff - 1.2</TITLE></HEAD>
+<BODY BGCOLOR="#eeeeee">
+<table width="100%" border=0 cellspacing=0 cellpadding=1 bgcolor="#aaaaaa"><tr valign=bottom><td><a href="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.dsp"><IMG SRC="http://www.nevrax.org/inc/img/picto-up.gif" ALT="[BACK]" BORDER="0" WIDTH="14" HEIGHT="13"></a> <b>Return to <A HREF="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.dsp">admin_service.dsp</A>
+ CVS log</b> <IMG SRC="http://www.nevrax.org/inc/img/picto-news.gif" ALT="[TXT]" BORDER="0" WIDTH="13" HEIGHT="15"></td><td align=right><IMG SRC="http://www.nevrax.org/inc/img/picto-dir.gif" ALT="[DIR]" BORDER="0" WIDTH="15" HEIGHT="13"> <b>Up to <a href="/cvs/cvsweb.cgi/">Nevrax</a> / <a href="/cvs/cvsweb.cgi/code/">code</a> / <a href="/cvs/cvsweb.cgi/code/nelns/">nelns</a> / <a href="/cvs/cvsweb.cgi/code/nelns/admin_service/">admin_service</a></b></td></tr></table><h3 align=center>Diff for /code/nelns/admin_service/admin_service.dsp between version 1.1 and 1.2</h3>
+<table border=0 cellspacing=0 cellpadding=0 width="100%">
+<tr bgcolor="#ffffff">
+<th width="50%" valign=TOP>version 1.1, 2001/05/02 12:36:39</th>
+<th width="50%" valign=TOP>version 1.2, 2001/06/07 16:19:05</th>
+<tr bgcolor="#dddddd"><td width="50%"><table width="100%" border=1 cellpadding=5><tr><td><b>Line 111</b>&nbsp;<font size=-1></font></td></tr></table></td><td width="50%"><table width="100%" border=1 cellpadding=5><tr><td><b>Line 111</b>&nbsp;<font size=-1></font></td></tr></table></td>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp;# Name &quot;admin_service - Win32 ReleaseDebug&quot;</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp;# Name &quot;admin_service - Win32 ReleaseDebug&quot;</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp;# Begin Source File</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp;# Begin Source File</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp;</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp;</font></td></tr>
+<tr><td bgcolor="#cccccc">&nbsp;</td><td bgcolor="#ccccff"><font face="Helvetica,Arial" size="-1">&nbsp;SOURCE=.\admin_service.cfg</font></td></tr>
+<tr><td bgcolor="#cccccc">&nbsp;</td><td bgcolor="#ccccff"><font face="Helvetica,Arial" size="-1">&nbsp;# End Source File</font></td></tr>
+<tr><td bgcolor="#cccccc">&nbsp;</td><td bgcolor="#ccccff"><font face="Helvetica,Arial" size="-1">&nbsp;# Begin Source File</font></td></tr>
+<tr><td bgcolor="#cccccc">&nbsp;</td><td bgcolor="#ccccff"><font face="Helvetica,Arial" size="-1">&nbsp;</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp;SOURCE=.\admin_service.cpp</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp;SOURCE=.\admin_service.cpp</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp;# End Source File</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp;# End Source File</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp;# End Target</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp;# End Target</font></td></tr>
+</table><br><hr noshade width="100%">
+<table border=0><tr><td><table border=1><tr><td>Legend:<br><table border=0 cellspacing=0 cellpadding=1>
+<tr><td align=center bgcolor="#ff9999">Removed from v.1.1</td><td bgcolor="#cccccc">&nbsp;</td></tr><tr bgcolor="#99ff99"><td align=center colspan=2>changed lines</td></tr><tr><td bgcolor="#cccccc">&nbsp;</td><td align=center bgcolor="#ccccff">Added in v.1.2</td></tr></table></td></tr></table>
+<td><FORM METHOD="GET" ACTION="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.dsp.diff">
+<INPUT TYPE=HIDDEN NAME="r1" VALUE="1.1">
+<INPUT TYPE=HIDDEN NAME="r2" VALUE="1.2">
+<SELECT NAME="f" onchange="submit()">
+<OPTION VALUE=h SELECTED>Colored Diff<OPTION VALUE=H>Long Colored Diff<OPTION VALUE=u>Unidiff<OPTION VALUE=c>Context Diff<OPTION VALUE=s>Side by Side</SELECT><INPUT TYPE=SUBMIT VALUE="Show">
+</FORM>
+</td></tr></table> \ No newline at end of file
diff --git a/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.dsp.diff?r1=1.2&r2=1.3 b/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.dsp.diff?r1=1.2&r2=1.3
new file mode 100644
index 00000000..37be214b
--- /dev/null
+++ b/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.dsp.diff?r1=1.2&r2=1.3
@@ -0,0 +1,48 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"><HTML>
+<HEAD><style> A { color:black }</style>
+<!-- hennerik CVSweb $Revision: 1.93 $ -->
+<TITLE>code/nelns/admin_service/admin_service.dsp - diff - 1.3</TITLE></HEAD>
+<BODY BGCOLOR="#eeeeee">
+<table width="100%" border=0 cellspacing=0 cellpadding=1 bgcolor="#aaaaaa"><tr valign=bottom><td><a href="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.dsp"><IMG SRC="http://www.nevrax.org/inc/img/picto-up.gif" ALT="[BACK]" BORDER="0" WIDTH="14" HEIGHT="13"></a> <b>Return to <A HREF="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.dsp">admin_service.dsp</A>
+ CVS log</b> <IMG SRC="http://www.nevrax.org/inc/img/picto-news.gif" ALT="[TXT]" BORDER="0" WIDTH="13" HEIGHT="15"></td><td align=right><IMG SRC="http://www.nevrax.org/inc/img/picto-dir.gif" ALT="[DIR]" BORDER="0" WIDTH="15" HEIGHT="13"> <b>Up to <a href="/cvs/cvsweb.cgi/">Nevrax</a> / <a href="/cvs/cvsweb.cgi/code/">code</a> / <a href="/cvs/cvsweb.cgi/code/nelns/">nelns</a> / <a href="/cvs/cvsweb.cgi/code/nelns/admin_service/">admin_service</a></b></td></tr></table><h3 align=center>Diff for /code/nelns/admin_service/admin_service.dsp between version 1.2 and 1.3</h3>
+<table border=0 cellspacing=0 cellpadding=0 width="100%">
+<tr bgcolor="#ffffff">
+<th width="50%" valign=TOP>version 1.2, 2001/06/07 16:19:05</th>
+<th width="50%" valign=TOP>version 1.3, 2001/06/12 15:44:38</th>
+<tr bgcolor="#dddddd"><td width="50%"><table width="100%" border=1 cellpadding=5><tr><td><b>Line 43</b>&nbsp;<font size=-1></font></td></tr></table></td><td width="50%"><table width="100%" border=1 cellpadding=5><tr><td><b>Line 43</b>&nbsp;<font size=-1></font></td></tr></table></td>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp;# PROP Ignore_Export_Lib 0</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp;# PROP Ignore_Export_Lib 0</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp;# PROP Target_Dir &quot;&quot;</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp;# PROP Target_Dir &quot;&quot;</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp;# ADD BASE CPP /nologo /W3 /GX /O2 /D &quot;WIN32&quot; /D &quot;NDEBUG&quot; /D &quot;_CONSOLE&quot; /D &quot;_MBCS&quot; /YX /FD /c</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp;# ADD BASE CPP /nologo /W3 /GX /O2 /D &quot;WIN32&quot; /D &quot;NDEBUG&quot; /D &quot;_CONSOLE&quot; /D &quot;_MBCS&quot; /YX /FD /c</font></td></tr>
+<tr><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp;# ADD CPP /nologo /MD /W3 /GR /GX /O2 /D &quot;WIN32&quot; /D &quot;NDEBUG&quot; /D &quot;_CONSOLE&quot; /D &quot;_MBCS&quot; /YX /FD /c</font></td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp;# ADD CPP /nologo /MD /W3 /GR /GX /O2 /D &quot;WIN32&quot; /D &quot;NDEBUG&quot; /D &quot;_CONSOLE&quot; /D &quot;_MBCS&quot; /FD /c</font></td></tr>
+<tr><td bgcolor="#99cc99">&nbsp;</td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp;# SUBTRACT CPP /YX</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp;# ADD BASE RSC /l 0x40c /d &quot;NDEBUG&quot;</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp;# ADD BASE RSC /l 0x40c /d &quot;NDEBUG&quot;</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp;# ADD RSC /l 0x40c /d &quot;NDEBUG&quot;</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp;# ADD RSC /l 0x40c /d &quot;NDEBUG&quot;</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp;BSC32=bscmake.exe</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp;BSC32=bscmake.exe</font></td></tr>
+<tr bgcolor="#dddddd"><td width="50%"><table width="100%" border=1 cellpadding=5><tr><td><b>Line 67</b>&nbsp;<font size=-1></font></td></tr></table></td><td width="50%"><table width="100%" border=1 cellpadding=5><tr><td><b>Line 68</b>&nbsp;<font size=-1></font></td></tr></table></td>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp;# PROP Ignore_Export_Lib 0</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp;# PROP Ignore_Export_Lib 0</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp;# PROP Target_Dir &quot;&quot;</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp;# PROP Target_Dir &quot;&quot;</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp;# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D &quot;WIN32&quot; /D &quot;_DEBUG&quot; /D &quot;_CONSOLE&quot; /D &quot;_MBCS&quot; /YX /FD /GZ /c</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp;# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D &quot;WIN32&quot; /D &quot;_DEBUG&quot; /D &quot;_CONSOLE&quot; /D &quot;_MBCS&quot; /YX /FD /GZ /c</font></td></tr>
+<tr><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp;# ADD CPP /nologo /MDd /W3 /Gm /GR /GX /ZI /Od /D &quot;WIN32&quot; /D &quot;_DEBUG&quot; /D &quot;_CONSOLE&quot; /D &quot;_MBCS&quot; /D &quot;__STL_DEBUG&quot; /FR /YX /FD /GZ /c</font></td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp;# ADD CPP /nologo /MDd /W3 /Gm /GR /GX /Zi /Od /D &quot;WIN32&quot; /D &quot;_DEBUG&quot; /D &quot;_CONSOLE&quot; /D &quot;_MBCS&quot; /D &quot;__STL_DEBUG&quot; /FR /FD /GZ /c</font></td></tr>
+<tr><td bgcolor="#99cc99">&nbsp;</td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp;# SUBTRACT CPP /YX</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp;# ADD BASE RSC /l 0x40c /d &quot;_DEBUG&quot;</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp;# ADD BASE RSC /l 0x40c /d &quot;_DEBUG&quot;</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp;# ADD RSC /l 0x40c /d &quot;_DEBUG&quot;</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp;# ADD RSC /l 0x40c /d &quot;_DEBUG&quot;</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp;BSC32=bscmake.exe</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp;BSC32=bscmake.exe</font></td></tr>
+<tr bgcolor="#dddddd"><td width="50%"><table width="100%" border=1 cellpadding=5><tr><td><b>Line 92</b>&nbsp;<font size=-1></font></td></tr></table></td><td width="50%"><table width="100%" border=1 cellpadding=5><tr><td><b>Line 94</b>&nbsp;<font size=-1></font></td></tr></table></td>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp;# PROP Ignore_Export_Lib 0</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp;# PROP Ignore_Export_Lib 0</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp;# PROP Target_Dir &quot;&quot;</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp;# PROP Target_Dir &quot;&quot;</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp;# ADD BASE CPP /nologo /MD /W3 /GR /GX /O2 /D &quot;WIN32&quot; /D &quot;NDEBUG&quot; /D &quot;_CONSOLE&quot; /D &quot;_MBCS&quot; /YX /FD /c</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp;# ADD BASE CPP /nologo /MD /W3 /GR /GX /O2 /D &quot;WIN32&quot; /D &quot;NDEBUG&quot; /D &quot;_CONSOLE&quot; /D &quot;_MBCS&quot; /YX /FD /c</font></td></tr>
+<tr><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp;# ADD CPP /nologo /MD /W3 /GR /GX /Zi /O2 /D &quot;WIN32&quot; /D &quot;NDEBUG&quot; /D &quot;_CONSOLE&quot; /D &quot;_MBCS&quot; /YX /FD /c</font></td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp;# ADD CPP /nologo /MD /W3 /GR /GX /Zi /O2 /D &quot;WIN32&quot; /D &quot;NDEBUG&quot; /D &quot;_CONSOLE&quot; /D &quot;_MBCS&quot; /FD /c</font></td></tr>
+<tr><td bgcolor="#99cc99">&nbsp;</td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp;# SUBTRACT CPP /YX</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp;# ADD BASE RSC /l 0x40c /d &quot;NDEBUG&quot;</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp;# ADD BASE RSC /l 0x40c /d &quot;NDEBUG&quot;</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp;# ADD RSC /l 0x40c /d &quot;NDEBUG&quot;</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp;# ADD RSC /l 0x40c /d &quot;NDEBUG&quot;</font></td></tr>
+<tr><td><font face="Helvetica,Arial" size="-1">&nbsp;BSC32=bscmake.exe</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp;BSC32=bscmake.exe</font></td></tr>
+</table><br><hr noshade width="100%">
+<table border=0><tr><td><table border=1><tr><td>Legend:<br><table border=0 cellspacing=0 cellpadding=1>
+<tr><td align=center bgcolor="#ff9999">Removed from v.1.2</td><td bgcolor="#cccccc">&nbsp;</td></tr><tr bgcolor="#99ff99"><td align=center colspan=2>changed lines</td></tr><tr><td bgcolor="#cccccc">&nbsp;</td><td align=center bgcolor="#ccccff">Added in v.1.3</td></tr></table></td></tr></table>
+<td><FORM METHOD="GET" ACTION="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.dsp.diff">
+<INPUT TYPE=HIDDEN NAME="r1" VALUE="1.2">
+<INPUT TYPE=HIDDEN NAME="r2" VALUE="1.3">
+<SELECT NAME="f" onchange="submit()">
+<OPTION VALUE=h SELECTED>Colored Diff<OPTION VALUE=H>Long Colored Diff<OPTION VALUE=u>Unidiff<OPTION VALUE=c>Context Diff<OPTION VALUE=s>Side by Side</SELECT><INPUT TYPE=SUBMIT VALUE="Show">
+</FORM>
+</td></tr></table> \ No newline at end of file
diff --git a/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.dsp?annotate=1.1 b/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.dsp?annotate=1.1
new file mode 100644
index 00000000..142f7307
--- /dev/null
+++ b/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.dsp?annotate=1.1
@@ -0,0 +1,76 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"><HTML>
+<HEAD><style> A { color:black }</style>
+<!-- hennerik CVSweb $Revision: 1.93 $ -->
+<TITLE>code/nelns/admin_service/admin_service.dsp - annotate - 1.1</TITLE></HEAD>
+<BODY BGCOLOR="#eeeeee">
+<table width="100%" border=0 cellspacing=0 cellpadding=1 bgcolor="#aaaaaa"><tr valign=bottom><td><a href="admin_service.dsp"><IMG SRC="http://www.nevrax.org/inc/img/picto-up.gif" ALT="[BACK]" BORDER="0" WIDTH="14" HEIGHT="13"></a> <b>Return to <A HREF="admin_service.dsp">admin_service.dsp</A>
+ CVS log</b> <IMG SRC="http://www.nevrax.org/inc/img/picto-news.gif" ALT="[TXT]" BORDER="0" WIDTH="13" HEIGHT="15"></td><td align=right><IMG SRC="http://www.nevrax.org/inc/img/picto-dir.gif" ALT="[DIR]" BORDER="0" WIDTH="15" HEIGHT="13"> <b>Up to <a href="/cvs/cvsweb.cgi/">Nevrax</a> / <a href="/cvs/cvsweb.cgi/code/">code</a> / <a href="/cvs/cvsweb.cgi/code/nelns/">nelns</a> / <a href="/cvs/cvsweb.cgi/code/nelns/admin_service/">admin_service</a></b></td></tr></table><h3 align=center>Annotation of code/nelns/admin_service/admin_service.dsp, Revision 1.1</h3>
+<pre>Status: 500 Internal Error
+Content-type: text/html
+
+<!doctype html public "-//W3C//DTD HTML 4.0 Transitional//EN" "http://www.w3.org/TR/REC-html40/loose.dtd">
+<HTML>
+<HEAD>
+ <TITLE>nevrax.org : cvs</TITLE>
+ <META name="keywords" content="freesoftware,nel,newt,snowballs,richard stallman,GNU,Multi-User Online World">
+
+ <LINK REL=stylesheet TYPE="text/css" HREF="http://www.nevrax.org/inc/css/nevrax.css">
+</HEAD>
+<BODY MARGINHEIGHT="0" MARGINWIDTH="0">
+
+<!-- uplinks -->
+<TABLE CELLSPACING=0 CELLPADDING=0 BORDER=0>
+ <TR>
+ <TD WIDTH=16><IMG SRC="http://www.nevrax.org/inc/img/pixel.gif" WIDTH="16" HEIGHT="16" BORDER=0 ALT=""></TD>
+ <TD WIDTH=140 BGCOLOR=#dddddd><IMG SRC="http://www.nevrax.org/inc/img/pixel.gif" WIDTH="140" HEIGHT="16" BORDER=0 ALT=""></TD>
+ <TD WIDTH=16><IMG SRC="http://www.nevrax.org/inc/img/pixel.gif" WIDTH="16" HEIGHT="16" BORDER=0 ALT=""></TD>
+ <TD><IMG width=6 height=14 SRC="http://www.nevrax.org/inc/img/reddots.gif" ALT="#" VSPACE=2 HSPACE=2 BORDER=0 ></TD><TD VALIGN=middle>&nbsp;<A CLASS=uplinks HREF=http://www.nevrax.org><b>Home</B></FONT></A>&nbsp;&nbsp;&nbsp;</TD>
+ <TD><IMG width=6 height=14 SRC="http://www.nevrax.org/inc/img/reddots.gif" ALT="#" VSPACE=2 HSPACE=2 BORDER=0 ></TD><TD VALIGN=middle>&nbsp;<A CLASS=uplinks HREF=http://www.nevrax.com><b>nevrax.com</B></FONT></A>&nbsp;&nbsp;&nbsp;</TD>
+ </TR>
+</TABLE>
+
+<!-- banner Nevrax -->
+<TABLE CELLSPACING=0 CELLPADDING=0 BORDER=0 WIDTH=100%>
+ <TR><TD BGCOLOR="#000000" BACKGROUND="http://www.nevrax.org/inc/img/black_banner.jpg"><A HREF="http://www.nevrax.org"><IMG SRC="http://www.nevrax.org/inc/img/nevrax.gif" WIDTH="170" HEIGHT="45" BORDER=0 ALT="Nevrax" ></A></TD></TR>
+</TABLE>
+
+<!-- main table -->
+<TABLE CELLSPACING=0 CELLPADDING=0 BORDER=0 height=100%>
+ <TR>
+ <TD WIDTH=16><IMG SRC="http://www.nevrax.org/inc/img/pixel.gif" WIDTH="16" HEIGHT="10" BORDER=0 ALT=""></TD>
+ <TD WIDTH=140 BGCOLOR=#dddddd VALIGN=TOP ALIGN=middle><IMG SRC="http://www.nevrax.org/inc/img/pixel.gif" WIDTH="140" HEIGHT="10" BORDER=0 ALT="">
+
+ <!------ Begin Box ------>
+ <TABLE BORDER=0 CELLSPACING=0 CELLPADDING=0 BGCOLOR=black><TR><TD><TABLE border=0 cellspacing=2 cellpadding=0 width=120><tr><TD ALIGN=middle bgcolor=black>
+ <FONT COLOR=white FACE="sans-serif"><B>Nevrax.org</B></FONT></TD></TR><tr><td colspan=2 bgcolor=#FFFFFF>
+ <TABLE cellspacing=0 cellpadding=1 border=0>
+ <tr><td ALIGN=middle><a class='linkbox' href="http://www.nevrax.org/news/" TITLE="Rubrique news"><img width=13 height=15 hspace=5 border=0 src=http://www.nevrax.org/inc/img/picto-news.gif ALT=#></A></td><td><a class='linkbox' href="http://www.nevrax.org/news/" TITLE="News">News</a></td></tr>
+ <tr><td ALIGN=middle><a class='linkbox' href="http://www.nevrax.org/mail/" TITLE="Rubrique mail"><img width=15 height=11 hspace=5 border=0 src=http://www.nevrax.org/inc/img/picto-mail.gif ALT=#></A></td><td><a class='linkbox' href="http://www.nevrax.org/mail/" TITLE="Mailing list archive">Mailing-list</a></td></tr>
+ <tr><td ALIGN=middle><a class='linkbox' href="http://www.nevrax.org/docs/" TITLE="Rubrique docs"><img width=14 height=16 hspace=5 border=0 src=http://www.nevrax.org/inc/img/picto-docs.gif ALT=#></A></td><td><a class='linkbox' href="http://www.nevrax.org/docs/" TITLE="Documentation">Documentation</a></td></tr>
+ <tr><td ALIGN=middle><a class='linkbox' href="http://www.nevrax.org/cvs/" TITLE="Rubrique cvs"><img width=13 height=17 hspace=5 border=0 src=http://www.nevrax.org/inc/img/picto-cvs.gif ALT=#></A></td><td><a class='linkbox' href="http://www.nevrax.org/cvs/" TITLE="CVS Web">CVS</a></td></tr>
+ <tr><td ALIGN=middle><a class='linkbox' href="http://www.nevrax.org/bugs/" TITLE="Rubrique bugs"><img width=20 height=16 hspace=5 border=0 src=http://www.nevrax.org/inc/img/picto-bugs.gif ALT=#></A></td><td><a class='linkbox' href="http://www.nevrax.org/bugs/" TITLE="Bugtracking">Bugs</a></td></tr>
+ <tr><td ALIGN=middle><a class='linkbox' href="http://www.nevrax.org/free/" TITLE="Rubrique license"><img width=18 height=12 hspace=5 border=0 src=http://www.nevrax.org/inc/img/picto-free.gif ALT=#></A></td><td><a class='linkbox' href="http://www.nevrax.org/free/" TITLE="Free Software">Free software</a></td></tr>
+ </TABLE>
+ </TD></TR></TABLE></TD></TR></TABLE>
+ <!------ End Box ------>
+
+ </TD>
+ <TD WIDTH=15><IMG SRC="http://www.nevrax.org/inc/img/pixel.gif" WIDTH="16" HEIGHT="16" BORDER=0 ALT=""></TD>
+ <TD ALIGN=left valign=top><IMG SRC="http://www.nevrax.org/inc/img/pixel.gif" WIDTH="140" HEIGHT="10" BORDER=0 ALT="">
+
+<!-- title -->
+<TABLE background="http://www.nevrax.org/inc/img/redline.gif" CELLSPACING=0 CELLPADDING=0 BORDER=0 width=100%><tr><td>
+<A HREF="http://www.nevrax.org/cvs/"><img src="http://www.nevrax.org/inc/img/t_cvs.gif" ALT="cvs" HEIGHT=20 BORDER=0></A>
+</td><td><IMG SRC="http://www.nevrax.org/inc/img/pixel.gif" WIDTH="1" HEIGHT="1" BORDER=0 ALT="">
+</td></tr></table>
+Error: Error occured during annotate: <b>error
+</b>
+
+<!-- footer -->
+<BR><FONT Size=+5>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </FONT>
+</TD>
+<TD WIDTH=15><IMG SRC=http://www.nevrax.org/inc/img/pixel.gif WIDTH=15 HEIGHT=15 BORDER=0 ALT=""></TD>
+</TR>
+</TABLE>
+</BODY>
+</HTML> \ No newline at end of file
diff --git a/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.dsp?annotate=1.3 b/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.dsp?annotate=1.3
new file mode 100644
index 00000000..1568ce69
--- /dev/null
+++ b/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.dsp?annotate=1.3
@@ -0,0 +1,76 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"><HTML>
+<HEAD><style> A { color:black }</style>
+<!-- hennerik CVSweb $Revision: 1.93 $ -->
+<TITLE>code/nelns/admin_service/admin_service.dsp - annotate - 1.3</TITLE></HEAD>
+<BODY BGCOLOR="#eeeeee">
+<table width="100%" border=0 cellspacing=0 cellpadding=1 bgcolor="#aaaaaa"><tr valign=bottom><td><a href="admin_service.dsp"><IMG SRC="http://www.nevrax.org/inc/img/picto-up.gif" ALT="[BACK]" BORDER="0" WIDTH="14" HEIGHT="13"></a> <b>Return to <A HREF="admin_service.dsp">admin_service.dsp</A>
+ CVS log</b> <IMG SRC="http://www.nevrax.org/inc/img/picto-news.gif" ALT="[TXT]" BORDER="0" WIDTH="13" HEIGHT="15"></td><td align=right><IMG SRC="http://www.nevrax.org/inc/img/picto-dir.gif" ALT="[DIR]" BORDER="0" WIDTH="15" HEIGHT="13"> <b>Up to <a href="/cvs/cvsweb.cgi/">Nevrax</a> / <a href="/cvs/cvsweb.cgi/code/">code</a> / <a href="/cvs/cvsweb.cgi/code/nelns/">nelns</a> / <a href="/cvs/cvsweb.cgi/code/nelns/admin_service/">admin_service</a></b></td></tr></table><h3 align=center>Annotation of code/nelns/admin_service/admin_service.dsp, Revision 1.3</h3>
+<pre>Status: 500 Internal Error
+Content-type: text/html
+
+<!doctype html public "-//W3C//DTD HTML 4.0 Transitional//EN" "http://www.w3.org/TR/REC-html40/loose.dtd">
+<HTML>
+<HEAD>
+ <TITLE>nevrax.org : cvs</TITLE>
+ <META name="keywords" content="freesoftware,nel,newt,snowballs,richard stallman,GNU,Multi-User Online World">
+
+ <LINK REL=stylesheet TYPE="text/css" HREF="http://www.nevrax.org/inc/css/nevrax.css">
+</HEAD>
+<BODY MARGINHEIGHT="0" MARGINWIDTH="0">
+
+<!-- uplinks -->
+<TABLE CELLSPACING=0 CELLPADDING=0 BORDER=0>
+ <TR>
+ <TD WIDTH=16><IMG SRC="http://www.nevrax.org/inc/img/pixel.gif" WIDTH="16" HEIGHT="16" BORDER=0 ALT=""></TD>
+ <TD WIDTH=140 BGCOLOR=#dddddd><IMG SRC="http://www.nevrax.org/inc/img/pixel.gif" WIDTH="140" HEIGHT="16" BORDER=0 ALT=""></TD>
+ <TD WIDTH=16><IMG SRC="http://www.nevrax.org/inc/img/pixel.gif" WIDTH="16" HEIGHT="16" BORDER=0 ALT=""></TD>
+ <TD><IMG width=6 height=14 SRC="http://www.nevrax.org/inc/img/reddots.gif" ALT="#" VSPACE=2 HSPACE=2 BORDER=0 ></TD><TD VALIGN=middle>&nbsp;<A CLASS=uplinks HREF=http://www.nevrax.org><b>Home</B></FONT></A>&nbsp;&nbsp;&nbsp;</TD>
+ <TD><IMG width=6 height=14 SRC="http://www.nevrax.org/inc/img/reddots.gif" ALT="#" VSPACE=2 HSPACE=2 BORDER=0 ></TD><TD VALIGN=middle>&nbsp;<A CLASS=uplinks HREF=http://www.nevrax.com><b>nevrax.com</B></FONT></A>&nbsp;&nbsp;&nbsp;</TD>
+ </TR>
+</TABLE>
+
+<!-- banner Nevrax -->
+<TABLE CELLSPACING=0 CELLPADDING=0 BORDER=0 WIDTH=100%>
+ <TR><TD BGCOLOR="#000000" BACKGROUND="http://www.nevrax.org/inc/img/black_banner.jpg"><A HREF="http://www.nevrax.org"><IMG SRC="http://www.nevrax.org/inc/img/nevrax.gif" WIDTH="170" HEIGHT="45" BORDER=0 ALT="Nevrax" ></A></TD></TR>
+</TABLE>
+
+<!-- main table -->
+<TABLE CELLSPACING=0 CELLPADDING=0 BORDER=0 height=100%>
+ <TR>
+ <TD WIDTH=16><IMG SRC="http://www.nevrax.org/inc/img/pixel.gif" WIDTH="16" HEIGHT="10" BORDER=0 ALT=""></TD>
+ <TD WIDTH=140 BGCOLOR=#dddddd VALIGN=TOP ALIGN=middle><IMG SRC="http://www.nevrax.org/inc/img/pixel.gif" WIDTH="140" HEIGHT="10" BORDER=0 ALT="">
+
+ <!------ Begin Box ------>
+ <TABLE BORDER=0 CELLSPACING=0 CELLPADDING=0 BGCOLOR=black><TR><TD><TABLE border=0 cellspacing=2 cellpadding=0 width=120><tr><TD ALIGN=middle bgcolor=black>
+ <FONT COLOR=white FACE="sans-serif"><B>Nevrax.org</B></FONT></TD></TR><tr><td colspan=2 bgcolor=#FFFFFF>
+ <TABLE cellspacing=0 cellpadding=1 border=0>
+ <tr><td ALIGN=middle><a class='linkbox' href="http://www.nevrax.org/news/" TITLE="Rubrique news"><img width=13 height=15 hspace=5 border=0 src=http://www.nevrax.org/inc/img/picto-news.gif ALT=#></A></td><td><a class='linkbox' href="http://www.nevrax.org/news/" TITLE="News">News</a></td></tr>
+ <tr><td ALIGN=middle><a class='linkbox' href="http://www.nevrax.org/mail/" TITLE="Rubrique mail"><img width=15 height=11 hspace=5 border=0 src=http://www.nevrax.org/inc/img/picto-mail.gif ALT=#></A></td><td><a class='linkbox' href="http://www.nevrax.org/mail/" TITLE="Mailing list archive">Mailing-list</a></td></tr>
+ <tr><td ALIGN=middle><a class='linkbox' href="http://www.nevrax.org/docs/" TITLE="Rubrique docs"><img width=14 height=16 hspace=5 border=0 src=http://www.nevrax.org/inc/img/picto-docs.gif ALT=#></A></td><td><a class='linkbox' href="http://www.nevrax.org/docs/" TITLE="Documentation">Documentation</a></td></tr>
+ <tr><td ALIGN=middle><a class='linkbox' href="http://www.nevrax.org/cvs/" TITLE="Rubrique cvs"><img width=13 height=17 hspace=5 border=0 src=http://www.nevrax.org/inc/img/picto-cvs.gif ALT=#></A></td><td><a class='linkbox' href="http://www.nevrax.org/cvs/" TITLE="CVS Web">CVS</a></td></tr>
+ <tr><td ALIGN=middle><a class='linkbox' href="http://www.nevrax.org/bugs/" TITLE="Rubrique bugs"><img width=20 height=16 hspace=5 border=0 src=http://www.nevrax.org/inc/img/picto-bugs.gif ALT=#></A></td><td><a class='linkbox' href="http://www.nevrax.org/bugs/" TITLE="Bugtracking">Bugs</a></td></tr>
+ <tr><td ALIGN=middle><a class='linkbox' href="http://www.nevrax.org/free/" TITLE="Rubrique license"><img width=18 height=12 hspace=5 border=0 src=http://www.nevrax.org/inc/img/picto-free.gif ALT=#></A></td><td><a class='linkbox' href="http://www.nevrax.org/free/" TITLE="Free Software">Free software</a></td></tr>
+ </TABLE>
+ </TD></TR></TABLE></TD></TR></TABLE>
+ <!------ End Box ------>
+
+ </TD>
+ <TD WIDTH=15><IMG SRC="http://www.nevrax.org/inc/img/pixel.gif" WIDTH="16" HEIGHT="16" BORDER=0 ALT=""></TD>
+ <TD ALIGN=left valign=top><IMG SRC="http://www.nevrax.org/inc/img/pixel.gif" WIDTH="140" HEIGHT="10" BORDER=0 ALT="">
+
+<!-- title -->
+<TABLE background="http://www.nevrax.org/inc/img/redline.gif" CELLSPACING=0 CELLPADDING=0 BORDER=0 width=100%><tr><td>
+<A HREF="http://www.nevrax.org/cvs/"><img src="http://www.nevrax.org/inc/img/t_cvs.gif" ALT="cvs" HEIGHT=20 BORDER=0></A>
+</td><td><IMG SRC="http://www.nevrax.org/inc/img/pixel.gif" WIDTH="1" HEIGHT="1" BORDER=0 ALT="">
+</td></tr></table>
+Error: Error occured during annotate: <b>error
+</b>
+
+<!-- footer -->
+<BR><FONT Size=+5>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </FONT>
+</TD>
+<TD WIDTH=15><IMG SRC=http://www.nevrax.org/inc/img/pixel.gif WIDTH=15 HEIGHT=15 BORDER=0 ALT=""></TD>
+</TR>
+</TABLE>
+</BODY>
+</HTML> \ No newline at end of file
diff --git a/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.dsp?annotate=1.4 b/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.dsp?annotate=1.4
new file mode 100644
index 00000000..b37534e0
--- /dev/null
+++ b/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.dsp?annotate=1.4
@@ -0,0 +1,76 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"><HTML>
+<HEAD><style> A { color:black }</style>
+<!-- hennerik CVSweb $Revision: 1.93 $ -->
+<TITLE>code/nelns/admin_service/admin_service.dsp - annotate - 1.4</TITLE></HEAD>
+<BODY BGCOLOR="#eeeeee">
+<table width="100%" border=0 cellspacing=0 cellpadding=1 bgcolor="#aaaaaa"><tr valign=bottom><td><a href="admin_service.dsp"><IMG SRC="http://www.nevrax.org/inc/img/picto-up.gif" ALT="[BACK]" BORDER="0" WIDTH="14" HEIGHT="13"></a> <b>Return to <A HREF="admin_service.dsp">admin_service.dsp</A>
+ CVS log</b> <IMG SRC="http://www.nevrax.org/inc/img/picto-news.gif" ALT="[TXT]" BORDER="0" WIDTH="13" HEIGHT="15"></td><td align=right><IMG SRC="http://www.nevrax.org/inc/img/picto-dir.gif" ALT="[DIR]" BORDER="0" WIDTH="15" HEIGHT="13"> <b>Up to <a href="/cvs/cvsweb.cgi/">Nevrax</a> / <a href="/cvs/cvsweb.cgi/code/">code</a> / <a href="/cvs/cvsweb.cgi/code/nelns/">nelns</a> / <a href="/cvs/cvsweb.cgi/code/nelns/admin_service/">admin_service</a></b></td></tr></table><h3 align=center>Annotation of code/nelns/admin_service/admin_service.dsp, Revision 1.4</h3>
+<pre>Status: 500 Internal Error
+Content-type: text/html
+
+<!doctype html public "-//W3C//DTD HTML 4.0 Transitional//EN" "http://www.w3.org/TR/REC-html40/loose.dtd">
+<HTML>
+<HEAD>
+ <TITLE>nevrax.org : cvs</TITLE>
+ <META name="keywords" content="freesoftware,nel,newt,snowballs,richard stallman,GNU,Multi-User Online World">
+
+ <LINK REL=stylesheet TYPE="text/css" HREF="http://www.nevrax.org/inc/css/nevrax.css">
+</HEAD>
+<BODY MARGINHEIGHT="0" MARGINWIDTH="0">
+
+<!-- uplinks -->
+<TABLE CELLSPACING=0 CELLPADDING=0 BORDER=0>
+ <TR>
+ <TD WIDTH=16><IMG SRC="http://www.nevrax.org/inc/img/pixel.gif" WIDTH="16" HEIGHT="16" BORDER=0 ALT=""></TD>
+ <TD WIDTH=140 BGCOLOR=#dddddd><IMG SRC="http://www.nevrax.org/inc/img/pixel.gif" WIDTH="140" HEIGHT="16" BORDER=0 ALT=""></TD>
+ <TD WIDTH=16><IMG SRC="http://www.nevrax.org/inc/img/pixel.gif" WIDTH="16" HEIGHT="16" BORDER=0 ALT=""></TD>
+ <TD><IMG width=6 height=14 SRC="http://www.nevrax.org/inc/img/reddots.gif" ALT="#" VSPACE=2 HSPACE=2 BORDER=0 ></TD><TD VALIGN=middle>&nbsp;<A CLASS=uplinks HREF=http://www.nevrax.org><b>Home</B></FONT></A>&nbsp;&nbsp;&nbsp;</TD>
+ <TD><IMG width=6 height=14 SRC="http://www.nevrax.org/inc/img/reddots.gif" ALT="#" VSPACE=2 HSPACE=2 BORDER=0 ></TD><TD VALIGN=middle>&nbsp;<A CLASS=uplinks HREF=http://www.nevrax.com><b>nevrax.com</B></FONT></A>&nbsp;&nbsp;&nbsp;</TD>
+ </TR>
+</TABLE>
+
+<!-- banner Nevrax -->
+<TABLE CELLSPACING=0 CELLPADDING=0 BORDER=0 WIDTH=100%>
+ <TR><TD BGCOLOR="#000000" BACKGROUND="http://www.nevrax.org/inc/img/black_banner.jpg"><A HREF="http://www.nevrax.org"><IMG SRC="http://www.nevrax.org/inc/img/nevrax.gif" WIDTH="170" HEIGHT="45" BORDER=0 ALT="Nevrax" ></A></TD></TR>
+</TABLE>
+
+<!-- main table -->
+<TABLE CELLSPACING=0 CELLPADDING=0 BORDER=0 height=100%>
+ <TR>
+ <TD WIDTH=16><IMG SRC="http://www.nevrax.org/inc/img/pixel.gif" WIDTH="16" HEIGHT="10" BORDER=0 ALT=""></TD>
+ <TD WIDTH=140 BGCOLOR=#dddddd VALIGN=TOP ALIGN=middle><IMG SRC="http://www.nevrax.org/inc/img/pixel.gif" WIDTH="140" HEIGHT="10" BORDER=0 ALT="">
+
+ <!------ Begin Box ------>
+ <TABLE BORDER=0 CELLSPACING=0 CELLPADDING=0 BGCOLOR=black><TR><TD><TABLE border=0 cellspacing=2 cellpadding=0 width=120><tr><TD ALIGN=middle bgcolor=black>
+ <FONT COLOR=white FACE="sans-serif"><B>Nevrax.org</B></FONT></TD></TR><tr><td colspan=2 bgcolor=#FFFFFF>
+ <TABLE cellspacing=0 cellpadding=1 border=0>
+ <tr><td ALIGN=middle><a class='linkbox' href="http://www.nevrax.org/news/" TITLE="Rubrique news"><img width=13 height=15 hspace=5 border=0 src=http://www.nevrax.org/inc/img/picto-news.gif ALT=#></A></td><td><a class='linkbox' href="http://www.nevrax.org/news/" TITLE="News">News</a></td></tr>
+ <tr><td ALIGN=middle><a class='linkbox' href="http://www.nevrax.org/mail/" TITLE="Rubrique mail"><img width=15 height=11 hspace=5 border=0 src=http://www.nevrax.org/inc/img/picto-mail.gif ALT=#></A></td><td><a class='linkbox' href="http://www.nevrax.org/mail/" TITLE="Mailing list archive">Mailing-list</a></td></tr>
+ <tr><td ALIGN=middle><a class='linkbox' href="http://www.nevrax.org/docs/" TITLE="Rubrique docs"><img width=14 height=16 hspace=5 border=0 src=http://www.nevrax.org/inc/img/picto-docs.gif ALT=#></A></td><td><a class='linkbox' href="http://www.nevrax.org/docs/" TITLE="Documentation">Documentation</a></td></tr>
+ <tr><td ALIGN=middle><a class='linkbox' href="http://www.nevrax.org/cvs/" TITLE="Rubrique cvs"><img width=13 height=17 hspace=5 border=0 src=http://www.nevrax.org/inc/img/picto-cvs.gif ALT=#></A></td><td><a class='linkbox' href="http://www.nevrax.org/cvs/" TITLE="CVS Web">CVS</a></td></tr>
+ <tr><td ALIGN=middle><a class='linkbox' href="http://www.nevrax.org/bugs/" TITLE="Rubrique bugs"><img width=20 height=16 hspace=5 border=0 src=http://www.nevrax.org/inc/img/picto-bugs.gif ALT=#></A></td><td><a class='linkbox' href="http://www.nevrax.org/bugs/" TITLE="Bugtracking">Bugs</a></td></tr>
+ <tr><td ALIGN=middle><a class='linkbox' href="http://www.nevrax.org/free/" TITLE="Rubrique license"><img width=18 height=12 hspace=5 border=0 src=http://www.nevrax.org/inc/img/picto-free.gif ALT=#></A></td><td><a class='linkbox' href="http://www.nevrax.org/free/" TITLE="Free Software">Free software</a></td></tr>
+ </TABLE>
+ </TD></TR></TABLE></TD></TR></TABLE>
+ <!------ End Box ------>
+
+ </TD>
+ <TD WIDTH=15><IMG SRC="http://www.nevrax.org/inc/img/pixel.gif" WIDTH="16" HEIGHT="16" BORDER=0 ALT=""></TD>
+ <TD ALIGN=left valign=top><IMG SRC="http://www.nevrax.org/inc/img/pixel.gif" WIDTH="140" HEIGHT="10" BORDER=0 ALT="">
+
+<!-- title -->
+<TABLE background="http://www.nevrax.org/inc/img/redline.gif" CELLSPACING=0 CELLPADDING=0 BORDER=0 width=100%><tr><td>
+<A HREF="http://www.nevrax.org/cvs/"><img src="http://www.nevrax.org/inc/img/t_cvs.gif" ALT="cvs" HEIGHT=20 BORDER=0></A>
+</td><td><IMG SRC="http://www.nevrax.org/inc/img/pixel.gif" WIDTH="1" HEIGHT="1" BORDER=0 ALT="">
+</td></tr></table>
+Error: Error occured during annotate: <b>error
+</b>
+
+<!-- footer -->
+<BR><FONT Size=+5>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </FONT>
+</TD>
+<TD WIDTH=15><IMG SRC=http://www.nevrax.org/inc/img/pixel.gif WIDTH=15 HEIGHT=15 BORDER=0 ALT=""></TD>
+</TR>
+</TABLE>
+</BODY>
+</HTML> \ No newline at end of file
diff --git a/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.dsp?r1=1.3 b/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.dsp?r1=1.3
new file mode 100644
index 00000000..04daf9e9
--- /dev/null
+++ b/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.dsp?r1=1.3
@@ -0,0 +1,176 @@
+<!doctype html public "-//W3C//DTD HTML 4.0 Transitional//EN" "http://www.w3.org/TR/REC-html40/loose.dtd">
+<HTML>
+<HEAD>
+ <TITLE>nevrax.org : cvs</TITLE>
+ <META name="keywords" content="freesoftware,nel,newt,snowballs,richard stallman,GNU,Multi-User Online World">
+
+ <LINK REL=stylesheet TYPE="text/css" HREF="http://www.nevrax.org/inc/css/nevrax.css">
+</HEAD>
+<BODY MARGINHEIGHT="0" MARGINWIDTH="0">
+
+<!-- uplinks -->
+<TABLE CELLSPACING=0 CELLPADDING=0 BORDER=0>
+ <TR>
+ <TD WIDTH=16><IMG SRC="http://www.nevrax.org/inc/img/pixel.gif" WIDTH="16" HEIGHT="16" BORDER=0 ALT=""></TD>
+ <TD WIDTH=140 BGCOLOR=#dddddd><IMG SRC="http://www.nevrax.org/inc/img/pixel.gif" WIDTH="140" HEIGHT="16" BORDER=0 ALT=""></TD>
+ <TD WIDTH=16><IMG SRC="http://www.nevrax.org/inc/img/pixel.gif" WIDTH="16" HEIGHT="16" BORDER=0 ALT=""></TD>
+ <TD><IMG width=6 height=14 SRC="http://www.nevrax.org/inc/img/reddots.gif" ALT="#" VSPACE=2 HSPACE=2 BORDER=0 ></TD><TD VALIGN=middle>&nbsp;<A CLASS=uplinks HREF=http://www.nevrax.org><b>Home</B></FONT></A>&nbsp;&nbsp;&nbsp;</TD>
+ <TD><IMG width=6 height=14 SRC="http://www.nevrax.org/inc/img/reddots.gif" ALT="#" VSPACE=2 HSPACE=2 BORDER=0 ></TD><TD VALIGN=middle>&nbsp;<A CLASS=uplinks HREF=http://www.nevrax.com><b>nevrax.com</B></FONT></A>&nbsp;&nbsp;&nbsp;</TD>
+ </TR>
+</TABLE>
+
+<!-- banner Nevrax -->
+<TABLE CELLSPACING=0 CELLPADDING=0 BORDER=0 WIDTH=100%>
+ <TR><TD BGCOLOR="#000000" BACKGROUND="http://www.nevrax.org/inc/img/black_banner.jpg"><A HREF="http://www.nevrax.org"><IMG SRC="http://www.nevrax.org/inc/img/nevrax.gif" WIDTH="170" HEIGHT="45" BORDER=0 ALT="Nevrax" ></A></TD></TR>
+</TABLE>
+
+<!-- main table -->
+<TABLE CELLSPACING=0 CELLPADDING=0 BORDER=0 height=100%>
+ <TR>
+ <TD WIDTH=16><IMG SRC="http://www.nevrax.org/inc/img/pixel.gif" WIDTH="16" HEIGHT="10" BORDER=0 ALT=""></TD>
+ <TD WIDTH=140 BGCOLOR=#dddddd VALIGN=TOP ALIGN=middle><IMG SRC="http://www.nevrax.org/inc/img/pixel.gif" WIDTH="140" HEIGHT="10" BORDER=0 ALT="">
+
+ <!------ Begin Box ------>
+ <TABLE BORDER=0 CELLSPACING=0 CELLPADDING=0 BGCOLOR=black><TR><TD><TABLE border=0 cellspacing=2 cellpadding=0 width=120><tr><TD ALIGN=middle bgcolor=black>
+ <FONT COLOR=white FACE="sans-serif"><B>Nevrax.org</B></FONT></TD></TR><tr><td colspan=2 bgcolor=#FFFFFF>
+ <TABLE cellspacing=0 cellpadding=1 border=0>
+ <tr><td ALIGN=middle><a class='linkbox' href="http://www.nevrax.org/news/" TITLE="Rubrique news"><img width=13 height=15 hspace=5 border=0 src=http://www.nevrax.org/inc/img/picto-news.gif ALT=#></A></td><td><a class='linkbox' href="http://www.nevrax.org/news/" TITLE="News">News</a></td></tr>
+ <tr><td ALIGN=middle><a class='linkbox' href="http://www.nevrax.org/mail/" TITLE="Rubrique mail"><img width=15 height=11 hspace=5 border=0 src=http://www.nevrax.org/inc/img/picto-mail.gif ALT=#></A></td><td><a class='linkbox' href="http://www.nevrax.org/mail/" TITLE="Mailing list archive">Mailing-list</a></td></tr>
+ <tr><td ALIGN=middle><a class='linkbox' href="http://www.nevrax.org/docs/" TITLE="Rubrique docs"><img width=14 height=16 hspace=5 border=0 src=http://www.nevrax.org/inc/img/picto-docs.gif ALT=#></A></td><td><a class='linkbox' href="http://www.nevrax.org/docs/" TITLE="Documentation">Documentation</a></td></tr>
+ <tr><td ALIGN=middle><a class='linkbox' href="http://www.nevrax.org/cvs/" TITLE="Rubrique cvs"><img width=13 height=17 hspace=5 border=0 src=http://www.nevrax.org/inc/img/picto-cvs.gif ALT=#></A></td><td><a class='linkbox' href="http://www.nevrax.org/cvs/" TITLE="CVS Web">CVS</a></td></tr>
+ <tr><td ALIGN=middle><a class='linkbox' href="http://www.nevrax.org/bugs/" TITLE="Rubrique bugs"><img width=20 height=16 hspace=5 border=0 src=http://www.nevrax.org/inc/img/picto-bugs.gif ALT=#></A></td><td><a class='linkbox' href="http://www.nevrax.org/bugs/" TITLE="Bugtracking">Bugs</a></td></tr>
+ <tr><td ALIGN=middle><a class='linkbox' href="http://www.nevrax.org/free/" TITLE="Rubrique license"><img width=18 height=12 hspace=5 border=0 src=http://www.nevrax.org/inc/img/picto-free.gif ALT=#></A></td><td><a class='linkbox' href="http://www.nevrax.org/free/" TITLE="Free Software">Free software</a></td></tr>
+ </TABLE>
+ </TD></TR></TABLE></TD></TR></TABLE>
+ <!------ End Box ------>
+
+ </TD>
+ <TD WIDTH=15><IMG SRC="http://www.nevrax.org/inc/img/pixel.gif" WIDTH="16" HEIGHT="16" BORDER=0 ALT=""></TD>
+ <TD ALIGN=left valign=top><IMG SRC="http://www.nevrax.org/inc/img/pixel.gif" WIDTH="140" HEIGHT="10" BORDER=0 ALT="">
+
+<!-- title -->
+<TABLE background="http://www.nevrax.org/inc/img/redline.gif" CELLSPACING=0 CELLPADDING=0 BORDER=0 width=100%><tr><td>
+<A HREF="http://www.nevrax.org/cvs/"><img src="http://www.nevrax.org/inc/img/t_cvs.gif" ALT="cvs" HEIGHT=20 BORDER=0></A>
+</td><td><IMG SRC="http://www.nevrax.org/inc/img/pixel.gif" WIDTH="1" HEIGHT="1" BORDER=0 ALT="">
+</td></tr></table>
+
+<!-- title -->
+<table width=100%><tr><td align=left><b> <a href="/cvs/cvsweb.cgi/">Nevrax</a> / <a href="/cvs/cvsweb.cgi/code/">code</a> / <a href="/cvs/cvsweb.cgi/code/nelns/">nelns</a> / <a href="/cvs/cvsweb.cgi/code/nelns/admin_service/">admin_service</a> / admin_service.dsp</b></td><td align=right><b></b></td></TR></TABLE>
+
+<!-- block -->
+<TABLE bgcolor="#dddddd" CELLSPACING=0 CELLPADDING=0 BORDER=0 width=100%><tr><td width=1% valign=middle><img width=6 height=14 hspace=2 vspace=2 src="http://www.nevrax.org/inc/img/reddots.gif"></TD>
+ <TD><B>admin_service.dsp</B></TD>
+ <TD ALIGN=RIGHT> </td>
+</tr></table>
+<P>
+<p>Default branch: MAIN<BR>
+<HR size=1 NOSHADE><P><a NAME="rev1.5"></a><a NAME="HEAD"></a><a NAME="MAIN"></a>
+ Revision <A HREF="admin_service.dsp?rev=1.5&amp;content-type=text/x-cvsweb-markup"><b>1.5</b></A> / (<A HREF="/cvs/cvsweb.cgi/~checkout~/code/nelns/admin_service/admin_service.dsp?rev=1.5&amp;content-type=text/plain" target="cvs_checkout" onClick="window.open('/cvs/cvsweb.cgi/~checkout~/code/nelns/admin_service/admin_service.dsp?rev=1.5&amp;content-type=text/plain','cvs_checkout','resizeable,scrollbars');"><b>download</b></A>) - <a href="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.dsp?annotate=1.5">annotate</a> - <A HREF="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.dsp?r1=1.5">[select for diffs]</A>
+, <i>Thu Aug 23 15:43:21 2001 UTC</i> (11 months ago) by <i>lecroart</i>
+<BR>Branch: <b><A HREF="admin_service.dsp?only_with_tag=MAIN">MAIN</A>
+</b>
+<BR>CVS Tags: <b><A HREF="admin_service.dsp?only_with_tag=HEAD">HEAD</A>
+</b><BR>Changes since <b>1.4: +34 -3
+ lines</b><BR>Diff to previous <A HREF="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.dsp.diff?r1=1.4&amp;r2=1.5">1.4</A>
+ to selected <A HREF="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.dsp.diff?r1=1.3&amp;r2=1.5">1.3</A>
+<PRE>
+ADDED: DebugFast config
+</PRE>
+<HR size=1 NOSHADE><P><a NAME="rev1.4"></a>
+ Revision <A HREF="admin_service.dsp?rev=1.4&amp;content-type=text/x-cvsweb-markup"><b>1.4</b></A> / (<A HREF="/cvs/cvsweb.cgi/~checkout~/code/nelns/admin_service/admin_service.dsp?rev=1.4&amp;content-type=text/plain" target="cvs_checkout" onClick="window.open('/cvs/cvsweb.cgi/~checkout~/code/nelns/admin_service/admin_service.dsp?rev=1.4&amp;content-type=text/plain','cvs_checkout','resizeable,scrollbars');"><b>download</b></A>) - <a href="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.dsp?annotate=1.4">annotate</a> - <A HREF="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.dsp?r1=1.4">[select for diffs]</A>
+, <i>Fri Jun 15 09:58:49 2001 UTC</i> (13 months, 1 week ago) by <i>lecroart</i>
+<BR>Branch: <b><A HREF="admin_service.dsp?only_with_tag=MAIN">MAIN</A>
+</b>
+<BR>Changes since <b>1.3: +9 -6
+ lines</b><BR>Diff to previous <A HREF="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.dsp.diff?r1=1.3&amp;r2=1.4">1.3</A>
+<PRE>
+CHANGED: use win32
+</PRE>
+<HR size=1 NOSHADE><P><a NAME="rev1.3"></a>
+ Revision <A HREF="admin_service.dsp?rev=1.3&amp;content-type=text/x-cvsweb-markup"><b>1.3</b></A> / (<A HREF="/cvs/cvsweb.cgi/~checkout~/code/nelns/admin_service/admin_service.dsp?rev=1.3&amp;content-type=text/plain" target="cvs_checkout" onClick="window.open('/cvs/cvsweb.cgi/~checkout~/code/nelns/admin_service/admin_service.dsp?rev=1.3&amp;content-type=text/plain','cvs_checkout','resizeable,scrollbars');"><b>download</b></A>) - <a href="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.dsp?annotate=1.3">annotate</a> - <b>[selected]</b>, <i>Tue Jun 12 15:44:38 2001 UTC</i> (13 months, 1 week ago) by <i>lecroart</i>
+<BR>Branch: <b><A HREF="admin_service.dsp?only_with_tag=MAIN">MAIN</A>
+</b>
+<BR>Changes since <b>1.2: +6 -3
+ lines</b><BR>Diff to previous <A HREF="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.dsp.diff?r1=1.2&amp;r2=1.3">1.2</A>
+<PRE>
+#CHANGED: remove precompilated header
+</PRE>
+<HR size=1 NOSHADE><P><a NAME="rev1.2"></a>
+ Revision <A HREF="admin_service.dsp?rev=1.2&amp;content-type=text/x-cvsweb-markup"><b>1.2</b></A> / (<A HREF="/cvs/cvsweb.cgi/~checkout~/code/nelns/admin_service/admin_service.dsp?rev=1.2&amp;content-type=text/plain" target="cvs_checkout" onClick="window.open('/cvs/cvsweb.cgi/~checkout~/code/nelns/admin_service/admin_service.dsp?rev=1.2&amp;content-type=text/plain','cvs_checkout','resizeable,scrollbars');"><b>download</b></A>) - <a href="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.dsp?annotate=1.2">annotate</a> - <A HREF="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.dsp?r1=1.2">[select for diffs]</A>
+, <i>Thu Jun 7 16:19:05 2001 UTC</i> (13 months, 2 weeks ago) by <i>lecroart</i>
+<BR>Branch: <b><A HREF="admin_service.dsp?only_with_tag=MAIN">MAIN</A>
+</b>
+<BR>Changes since <b>1.1: +4 -0
+ lines</b><BR>Diff to previous <A HREF="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.dsp.diff?r1=1.1&amp;r2=1.2">1.1</A>
+ to selected <A HREF="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.dsp.diff?r1=1.3&amp;r2=1.2">1.3</A>
+<PRE>
+ADDED: commands system
+</PRE>
+<HR size=1 NOSHADE><P><a NAME="rev1.1"></a>
+ Revision <A HREF="admin_service.dsp?rev=1.1&amp;content-type=text/x-cvsweb-markup"><b>1.1</b></A> / (<A HREF="/cvs/cvsweb.cgi/~checkout~/code/nelns/admin_service/admin_service.dsp?rev=1.1&amp;content-type=text/plain" target="cvs_checkout" onClick="window.open('/cvs/cvsweb.cgi/~checkout~/code/nelns/admin_service/admin_service.dsp?rev=1.1&amp;content-type=text/plain','cvs_checkout','resizeable,scrollbars');"><b>download</b></A>) - <a href="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.dsp?annotate=1.1">annotate</a> - <A HREF="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.dsp?r1=1.1">[select for diffs]</A>
+, <i>Wed May 2 12:36:39 2001 UTC</i> (14 months, 3 weeks ago) by <i>lecroart</i>
+<BR>Branch: <b><A HREF="admin_service.dsp?only_with_tag=MAIN">MAIN</A>
+</b>
+<BR>Diff to selected <A HREF="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.dsp.diff?r1=1.3&amp;r2=1.1">1.3</A>
+<PRE>
+ADD: new version of the network system (in NeL and NeLns)
+</PRE>
+
+<!-- block -->
+<TABLE bgcolor="#dddddd" CELLSPACING=0 CELLPADDING=0 BORDER=0 width=100%><tr><td width=1% valign=middle><img width=6 height=14 hspace=2 vspace=2 src="http://www.nevrax.org/inc/img/reddots.gif"></TD>
+ <TD><B>Request Diffs</B></TD>
+ <TD ALIGN=RIGHT> </td>
+</tr></table>
+<P>
+<P>
+<FORM METHOD="GET" ACTION="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.dsp.diff" NAME="diff_select">
+Diffs between
+<SELECT NAME="r1">
+<OPTION VALUE="text" SELECTED>Use Text Field
+<OPTION VALUE="1:MAIN">MAIN
+<OPTION VALUE="1.5:HEAD">HEAD
+</SELECT>
+<INPUT TYPE="TEXT" SIZE="12" NAME="tr1" VALUE="1.3" onChange='document.diff_select.r1.selectedIndex=0'>
+ and
+<SELECT NAME="r2">
+<OPTION VALUE="text" SELECTED>Use Text Field
+<OPTION VALUE="1:MAIN">MAIN
+<OPTION VALUE="1.5:HEAD">HEAD
+</SELECT>
+<INPUT TYPE="TEXT" SIZE="12" NAME="tr2" VALUE="1.5" onChange='docuement.diff_select.r2.selectedIndex=0'>
+<BR>Type of Diff should be a&nbsp;<SELECT NAME="f">
+<OPTION VALUE=h SELECTED>Colored Diff<OPTION VALUE=H>Long Colored Diff<OPTION VALUE=u>Unidiff<OPTION VALUE=c>Context Diff<OPTION VALUE=s>Side by Side</SELECT><INPUT TYPE=SUBMIT VALUE=" Get Diffs ">
+</FORM>
+
+<!-- block -->
+<TABLE bgcolor="#dddddd" CELLSPACING=0 CELLPADDING=0 BORDER=0 width=100%><tr><td width=1% valign=middle><img width=6 height=14 hspace=2 vspace=2 src="http://www.nevrax.org/inc/img/reddots.gif"></TD>
+ <TD><B>Select branch</B></TD>
+ <TD ALIGN=RIGHT> </td>
+</tr></table>
+<P>
+<P>
+<A name=branch></A>
+<FORM METHOD="GET" ACTION="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.dsp">
+View only Branch:
+<SELECT NAME="only_with_tag" onchange="submit()">
+<OPTION VALUE="">Show all branches
+<OPTION>MAIN
+</SELECT>
+<INPUT TYPE=SUBMIT VALUE=" View Branch ">
+</FORM>
+<A name=logsort></A>
+<FORM METHOD="GET" ACTION="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.dsp">
+Sort log by:
+<SELECT NAME="logsort" onchange="submit()">
+<OPTION VALUE=cvs>Not sorted<OPTION VALUE=date SELECTED>Commit date<OPTION VALUE=rev>Revision</SELECT>
+<INPUT TYPE=SUBMIT VALUE=" Sort ">
+</FORM>
+
+<!-- footer -->
+<BR><FONT Size=+5>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </FONT>
+</TD>
+<TD WIDTH=15><IMG SRC=http://www.nevrax.org/inc/img/pixel.gif WIDTH=15 HEIGHT=15 BORDER=0 ALT=""></TD>
+</TR>
+</TABLE>
+</BODY>
+</HTML></BODY></HTML>
diff --git a/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.dsp?r1=1.4 b/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.dsp?r1=1.4
new file mode 100644
index 00000000..70ef58a6
--- /dev/null
+++ b/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.dsp?r1=1.4
@@ -0,0 +1,176 @@
+<!doctype html public "-//W3C//DTD HTML 4.0 Transitional//EN" "http://www.w3.org/TR/REC-html40/loose.dtd">
+<HTML>
+<HEAD>
+ <TITLE>nevrax.org : cvs</TITLE>
+ <META name="keywords" content="freesoftware,nel,newt,snowballs,richard stallman,GNU,Multi-User Online World">
+
+ <LINK REL=stylesheet TYPE="text/css" HREF="http://www.nevrax.org/inc/css/nevrax.css">
+</HEAD>
+<BODY MARGINHEIGHT="0" MARGINWIDTH="0">
+
+<!-- uplinks -->
+<TABLE CELLSPACING=0 CELLPADDING=0 BORDER=0>
+ <TR>
+ <TD WIDTH=16><IMG SRC="http://www.nevrax.org/inc/img/pixel.gif" WIDTH="16" HEIGHT="16" BORDER=0 ALT=""></TD>
+ <TD WIDTH=140 BGCOLOR=#dddddd><IMG SRC="http://www.nevrax.org/inc/img/pixel.gif" WIDTH="140" HEIGHT="16" BORDER=0 ALT=""></TD>
+ <TD WIDTH=16><IMG SRC="http://www.nevrax.org/inc/img/pixel.gif" WIDTH="16" HEIGHT="16" BORDER=0 ALT=""></TD>
+ <TD><IMG width=6 height=14 SRC="http://www.nevrax.org/inc/img/reddots.gif" ALT="#" VSPACE=2 HSPACE=2 BORDER=0 ></TD><TD VALIGN=middle>&nbsp;<A CLASS=uplinks HREF=http://www.nevrax.org><b>Home</B></FONT></A>&nbsp;&nbsp;&nbsp;</TD>
+ <TD><IMG width=6 height=14 SRC="http://www.nevrax.org/inc/img/reddots.gif" ALT="#" VSPACE=2 HSPACE=2 BORDER=0 ></TD><TD VALIGN=middle>&nbsp;<A CLASS=uplinks HREF=http://www.nevrax.com><b>nevrax.com</B></FONT></A>&nbsp;&nbsp;&nbsp;</TD>
+ </TR>
+</TABLE>
+
+<!-- banner Nevrax -->
+<TABLE CELLSPACING=0 CELLPADDING=0 BORDER=0 WIDTH=100%>
+ <TR><TD BGCOLOR="#000000" BACKGROUND="http://www.nevrax.org/inc/img/black_banner.jpg"><A HREF="http://www.nevrax.org"><IMG SRC="http://www.nevrax.org/inc/img/nevrax.gif" WIDTH="170" HEIGHT="45" BORDER=0 ALT="Nevrax" ></A></TD></TR>
+</TABLE>
+
+<!-- main table -->
+<TABLE CELLSPACING=0 CELLPADDING=0 BORDER=0 height=100%>
+ <TR>
+ <TD WIDTH=16><IMG SRC="http://www.nevrax.org/inc/img/pixel.gif" WIDTH="16" HEIGHT="10" BORDER=0 ALT=""></TD>
+ <TD WIDTH=140 BGCOLOR=#dddddd VALIGN=TOP ALIGN=middle><IMG SRC="http://www.nevrax.org/inc/img/pixel.gif" WIDTH="140" HEIGHT="10" BORDER=0 ALT="">
+
+ <!------ Begin Box ------>
+ <TABLE BORDER=0 CELLSPACING=0 CELLPADDING=0 BGCOLOR=black><TR><TD><TABLE border=0 cellspacing=2 cellpadding=0 width=120><tr><TD ALIGN=middle bgcolor=black>
+ <FONT COLOR=white FACE="sans-serif"><B>Nevrax.org</B></FONT></TD></TR><tr><td colspan=2 bgcolor=#FFFFFF>
+ <TABLE cellspacing=0 cellpadding=1 border=0>
+ <tr><td ALIGN=middle><a class='linkbox' href="http://www.nevrax.org/news/" TITLE="Rubrique news"><img width=13 height=15 hspace=5 border=0 src=http://www.nevrax.org/inc/img/picto-news.gif ALT=#></A></td><td><a class='linkbox' href="http://www.nevrax.org/news/" TITLE="News">News</a></td></tr>
+ <tr><td ALIGN=middle><a class='linkbox' href="http://www.nevrax.org/mail/" TITLE="Rubrique mail"><img width=15 height=11 hspace=5 border=0 src=http://www.nevrax.org/inc/img/picto-mail.gif ALT=#></A></td><td><a class='linkbox' href="http://www.nevrax.org/mail/" TITLE="Mailing list archive">Mailing-list</a></td></tr>
+ <tr><td ALIGN=middle><a class='linkbox' href="http://www.nevrax.org/docs/" TITLE="Rubrique docs"><img width=14 height=16 hspace=5 border=0 src=http://www.nevrax.org/inc/img/picto-docs.gif ALT=#></A></td><td><a class='linkbox' href="http://www.nevrax.org/docs/" TITLE="Documentation">Documentation</a></td></tr>
+ <tr><td ALIGN=middle><a class='linkbox' href="http://www.nevrax.org/cvs/" TITLE="Rubrique cvs"><img width=13 height=17 hspace=5 border=0 src=http://www.nevrax.org/inc/img/picto-cvs.gif ALT=#></A></td><td><a class='linkbox' href="http://www.nevrax.org/cvs/" TITLE="CVS Web">CVS</a></td></tr>
+ <tr><td ALIGN=middle><a class='linkbox' href="http://www.nevrax.org/bugs/" TITLE="Rubrique bugs"><img width=20 height=16 hspace=5 border=0 src=http://www.nevrax.org/inc/img/picto-bugs.gif ALT=#></A></td><td><a class='linkbox' href="http://www.nevrax.org/bugs/" TITLE="Bugtracking">Bugs</a></td></tr>
+ <tr><td ALIGN=middle><a class='linkbox' href="http://www.nevrax.org/free/" TITLE="Rubrique license"><img width=18 height=12 hspace=5 border=0 src=http://www.nevrax.org/inc/img/picto-free.gif ALT=#></A></td><td><a class='linkbox' href="http://www.nevrax.org/free/" TITLE="Free Software">Free software</a></td></tr>
+ </TABLE>
+ </TD></TR></TABLE></TD></TR></TABLE>
+ <!------ End Box ------>
+
+ </TD>
+ <TD WIDTH=15><IMG SRC="http://www.nevrax.org/inc/img/pixel.gif" WIDTH="16" HEIGHT="16" BORDER=0 ALT=""></TD>
+ <TD ALIGN=left valign=top><IMG SRC="http://www.nevrax.org/inc/img/pixel.gif" WIDTH="140" HEIGHT="10" BORDER=0 ALT="">
+
+<!-- title -->
+<TABLE background="http://www.nevrax.org/inc/img/redline.gif" CELLSPACING=0 CELLPADDING=0 BORDER=0 width=100%><tr><td>
+<A HREF="http://www.nevrax.org/cvs/"><img src="http://www.nevrax.org/inc/img/t_cvs.gif" ALT="cvs" HEIGHT=20 BORDER=0></A>
+</td><td><IMG SRC="http://www.nevrax.org/inc/img/pixel.gif" WIDTH="1" HEIGHT="1" BORDER=0 ALT="">
+</td></tr></table>
+
+<!-- title -->
+<table width=100%><tr><td align=left><b> <a href="/cvs/cvsweb.cgi/">Nevrax</a> / <a href="/cvs/cvsweb.cgi/code/">code</a> / <a href="/cvs/cvsweb.cgi/code/nelns/">nelns</a> / <a href="/cvs/cvsweb.cgi/code/nelns/admin_service/">admin_service</a> / admin_service.dsp</b></td><td align=right><b></b></td></TR></TABLE>
+
+<!-- block -->
+<TABLE bgcolor="#dddddd" CELLSPACING=0 CELLPADDING=0 BORDER=0 width=100%><tr><td width=1% valign=middle><img width=6 height=14 hspace=2 vspace=2 src="http://www.nevrax.org/inc/img/reddots.gif"></TD>
+ <TD><B>admin_service.dsp</B></TD>
+ <TD ALIGN=RIGHT> </td>
+</tr></table>
+<P>
+<p>Default branch: MAIN<BR>
+<HR size=1 NOSHADE><P><a NAME="rev1.5"></a><a NAME="HEAD"></a><a NAME="MAIN"></a>
+ Revision <A HREF="admin_service.dsp?rev=1.5&amp;content-type=text/x-cvsweb-markup"><b>1.5</b></A> / (<A HREF="/cvs/cvsweb.cgi/~checkout~/code/nelns/admin_service/admin_service.dsp?rev=1.5&amp;content-type=text/plain" target="cvs_checkout" onClick="window.open('/cvs/cvsweb.cgi/~checkout~/code/nelns/admin_service/admin_service.dsp?rev=1.5&amp;content-type=text/plain','cvs_checkout','resizeable,scrollbars');"><b>download</b></A>) - <a href="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.dsp?annotate=1.5">annotate</a> - <A HREF="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.dsp?r1=1.5">[select for diffs]</A>
+, <i>Thu Aug 23 15:43:21 2001 UTC</i> (11 months ago) by <i>lecroart</i>
+<BR>Branch: <b><A HREF="admin_service.dsp?only_with_tag=MAIN">MAIN</A>
+</b>
+<BR>CVS Tags: <b><A HREF="admin_service.dsp?only_with_tag=HEAD">HEAD</A>
+</b><BR>Changes since <b>1.4: +34 -3
+ lines</b><BR>Diff to previous <A HREF="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.dsp.diff?r1=1.4&amp;r2=1.5">1.4</A>
+<PRE>
+ADDED: DebugFast config
+</PRE>
+<HR size=1 NOSHADE><P><a NAME="rev1.4"></a>
+ Revision <A HREF="admin_service.dsp?rev=1.4&amp;content-type=text/x-cvsweb-markup"><b>1.4</b></A> / (<A HREF="/cvs/cvsweb.cgi/~checkout~/code/nelns/admin_service/admin_service.dsp?rev=1.4&amp;content-type=text/plain" target="cvs_checkout" onClick="window.open('/cvs/cvsweb.cgi/~checkout~/code/nelns/admin_service/admin_service.dsp?rev=1.4&amp;content-type=text/plain','cvs_checkout','resizeable,scrollbars');"><b>download</b></A>) - <a href="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.dsp?annotate=1.4">annotate</a> - <b>[selected]</b>, <i>Fri Jun 15 09:58:49 2001 UTC</i> (13 months, 1 week ago) by <i>lecroart</i>
+<BR>Branch: <b><A HREF="admin_service.dsp?only_with_tag=MAIN">MAIN</A>
+</b>
+<BR>Changes since <b>1.3: +9 -6
+ lines</b><BR>Diff to previous <A HREF="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.dsp.diff?r1=1.3&amp;r2=1.4">1.3</A>
+<PRE>
+CHANGED: use win32
+</PRE>
+<HR size=1 NOSHADE><P><a NAME="rev1.3"></a>
+ Revision <A HREF="admin_service.dsp?rev=1.3&amp;content-type=text/x-cvsweb-markup"><b>1.3</b></A> / (<A HREF="/cvs/cvsweb.cgi/~checkout~/code/nelns/admin_service/admin_service.dsp?rev=1.3&amp;content-type=text/plain" target="cvs_checkout" onClick="window.open('/cvs/cvsweb.cgi/~checkout~/code/nelns/admin_service/admin_service.dsp?rev=1.3&amp;content-type=text/plain','cvs_checkout','resizeable,scrollbars');"><b>download</b></A>) - <a href="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.dsp?annotate=1.3">annotate</a> - <A HREF="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.dsp?r1=1.3">[select for diffs]</A>
+, <i>Tue Jun 12 15:44:38 2001 UTC</i> (13 months, 1 week ago) by <i>lecroart</i>
+<BR>Branch: <b><A HREF="admin_service.dsp?only_with_tag=MAIN">MAIN</A>
+</b>
+<BR>Changes since <b>1.2: +6 -3
+ lines</b><BR>Diff to previous <A HREF="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.dsp.diff?r1=1.2&amp;r2=1.3">1.2</A>
+ to selected <A HREF="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.dsp.diff?r1=1.4&amp;r2=1.3">1.4</A>
+<PRE>
+#CHANGED: remove precompilated header
+</PRE>
+<HR size=1 NOSHADE><P><a NAME="rev1.2"></a>
+ Revision <A HREF="admin_service.dsp?rev=1.2&amp;content-type=text/x-cvsweb-markup"><b>1.2</b></A> / (<A HREF="/cvs/cvsweb.cgi/~checkout~/code/nelns/admin_service/admin_service.dsp?rev=1.2&amp;content-type=text/plain" target="cvs_checkout" onClick="window.open('/cvs/cvsweb.cgi/~checkout~/code/nelns/admin_service/admin_service.dsp?rev=1.2&amp;content-type=text/plain','cvs_checkout','resizeable,scrollbars');"><b>download</b></A>) - <a href="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.dsp?annotate=1.2">annotate</a> - <A HREF="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.dsp?r1=1.2">[select for diffs]</A>
+, <i>Thu Jun 7 16:19:05 2001 UTC</i> (13 months, 2 weeks ago) by <i>lecroart</i>
+<BR>Branch: <b><A HREF="admin_service.dsp?only_with_tag=MAIN">MAIN</A>
+</b>
+<BR>Changes since <b>1.1: +4 -0
+ lines</b><BR>Diff to previous <A HREF="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.dsp.diff?r1=1.1&amp;r2=1.2">1.1</A>
+ to selected <A HREF="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.dsp.diff?r1=1.4&amp;r2=1.2">1.4</A>
+<PRE>
+ADDED: commands system
+</PRE>
+<HR size=1 NOSHADE><P><a NAME="rev1.1"></a>
+ Revision <A HREF="admin_service.dsp?rev=1.1&amp;content-type=text/x-cvsweb-markup"><b>1.1</b></A> / (<A HREF="/cvs/cvsweb.cgi/~checkout~/code/nelns/admin_service/admin_service.dsp?rev=1.1&amp;content-type=text/plain" target="cvs_checkout" onClick="window.open('/cvs/cvsweb.cgi/~checkout~/code/nelns/admin_service/admin_service.dsp?rev=1.1&amp;content-type=text/plain','cvs_checkout','resizeable,scrollbars');"><b>download</b></A>) - <a href="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.dsp?annotate=1.1">annotate</a> - <A HREF="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.dsp?r1=1.1">[select for diffs]</A>
+, <i>Wed May 2 12:36:39 2001 UTC</i> (14 months, 3 weeks ago) by <i>lecroart</i>
+<BR>Branch: <b><A HREF="admin_service.dsp?only_with_tag=MAIN">MAIN</A>
+</b>
+<BR>Diff to selected <A HREF="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.dsp.diff?r1=1.4&amp;r2=1.1">1.4</A>
+<PRE>
+ADD: new version of the network system (in NeL and NeLns)
+</PRE>
+
+<!-- block -->
+<TABLE bgcolor="#dddddd" CELLSPACING=0 CELLPADDING=0 BORDER=0 width=100%><tr><td width=1% valign=middle><img width=6 height=14 hspace=2 vspace=2 src="http://www.nevrax.org/inc/img/reddots.gif"></TD>
+ <TD><B>Request Diffs</B></TD>
+ <TD ALIGN=RIGHT> </td>
+</tr></table>
+<P>
+<P>
+<FORM METHOD="GET" ACTION="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.dsp.diff" NAME="diff_select">
+Diffs between
+<SELECT NAME="r1">
+<OPTION VALUE="text" SELECTED>Use Text Field
+<OPTION VALUE="1:MAIN">MAIN
+<OPTION VALUE="1.5:HEAD">HEAD
+</SELECT>
+<INPUT TYPE="TEXT" SIZE="12" NAME="tr1" VALUE="1.4" onChange='document.diff_select.r1.selectedIndex=0'>
+ and
+<SELECT NAME="r2">
+<OPTION VALUE="text" SELECTED>Use Text Field
+<OPTION VALUE="1:MAIN">MAIN
+<OPTION VALUE="1.5:HEAD">HEAD
+</SELECT>
+<INPUT TYPE="TEXT" SIZE="12" NAME="tr2" VALUE="1.5" onChange='docuement.diff_select.r2.selectedIndex=0'>
+<BR>Type of Diff should be a&nbsp;<SELECT NAME="f">
+<OPTION VALUE=h SELECTED>Colored Diff<OPTION VALUE=H>Long Colored Diff<OPTION VALUE=u>Unidiff<OPTION VALUE=c>Context Diff<OPTION VALUE=s>Side by Side</SELECT><INPUT TYPE=SUBMIT VALUE=" Get Diffs ">
+</FORM>
+
+<!-- block -->
+<TABLE bgcolor="#dddddd" CELLSPACING=0 CELLPADDING=0 BORDER=0 width=100%><tr><td width=1% valign=middle><img width=6 height=14 hspace=2 vspace=2 src="http://www.nevrax.org/inc/img/reddots.gif"></TD>
+ <TD><B>Select branch</B></TD>
+ <TD ALIGN=RIGHT> </td>
+</tr></table>
+<P>
+<P>
+<A name=branch></A>
+<FORM METHOD="GET" ACTION="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.dsp">
+View only Branch:
+<SELECT NAME="only_with_tag" onchange="submit()">
+<OPTION VALUE="">Show all branches
+<OPTION>MAIN
+</SELECT>
+<INPUT TYPE=SUBMIT VALUE=" View Branch ">
+</FORM>
+<A name=logsort></A>
+<FORM METHOD="GET" ACTION="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.dsp">
+Sort log by:
+<SELECT NAME="logsort" onchange="submit()">
+<OPTION VALUE=cvs>Not sorted<OPTION VALUE=date SELECTED>Commit date<OPTION VALUE=rev>Revision</SELECT>
+<INPUT TYPE=SUBMIT VALUE=" Sort ">
+</FORM>
+
+<!-- footer -->
+<BR><FONT Size=+5>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </FONT>
+</TD>
+<TD WIDTH=15><IMG SRC=http://www.nevrax.org/inc/img/pixel.gif WIDTH=15 HEIGHT=15 BORDER=0 ALT=""></TD>
+</TR>
+</TABLE>
+</BODY>
+</HTML></BODY></HTML>
diff --git a/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.dsp?r1=1.5 b/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.dsp?r1=1.5
new file mode 100644
index 00000000..fa1db976
--- /dev/null
+++ b/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.dsp?r1=1.5
@@ -0,0 +1,177 @@
+<!doctype html public "-//W3C//DTD HTML 4.0 Transitional//EN" "http://www.w3.org/TR/REC-html40/loose.dtd">
+<HTML>
+<HEAD>
+ <TITLE>nevrax.org : cvs</TITLE>
+ <META name="keywords" content="freesoftware,nel,newt,snowballs,richard stallman,GNU,Multi-User Online World">
+
+ <LINK REL=stylesheet TYPE="text/css" HREF="http://www.nevrax.org/inc/css/nevrax.css">
+</HEAD>
+<BODY MARGINHEIGHT="0" MARGINWIDTH="0">
+
+<!-- uplinks -->
+<TABLE CELLSPACING=0 CELLPADDING=0 BORDER=0>
+ <TR>
+ <TD WIDTH=16><IMG SRC="http://www.nevrax.org/inc/img/pixel.gif" WIDTH="16" HEIGHT="16" BORDER=0 ALT=""></TD>
+ <TD WIDTH=140 BGCOLOR=#dddddd><IMG SRC="http://www.nevrax.org/inc/img/pixel.gif" WIDTH="140" HEIGHT="16" BORDER=0 ALT=""></TD>
+ <TD WIDTH=16><IMG SRC="http://www.nevrax.org/inc/img/pixel.gif" WIDTH="16" HEIGHT="16" BORDER=0 ALT=""></TD>
+ <TD><IMG width=6 height=14 SRC="http://www.nevrax.org/inc/img/reddots.gif" ALT="#" VSPACE=2 HSPACE=2 BORDER=0 ></TD><TD VALIGN=middle>&nbsp;<A CLASS=uplinks HREF=http://www.nevrax.org><b>Home</B></FONT></A>&nbsp;&nbsp;&nbsp;</TD>
+ <TD><IMG width=6 height=14 SRC="http://www.nevrax.org/inc/img/reddots.gif" ALT="#" VSPACE=2 HSPACE=2 BORDER=0 ></TD><TD VALIGN=middle>&nbsp;<A CLASS=uplinks HREF=http://www.nevrax.com><b>nevrax.com</B></FONT></A>&nbsp;&nbsp;&nbsp;</TD>
+ </TR>
+</TABLE>
+
+<!-- banner Nevrax -->
+<TABLE CELLSPACING=0 CELLPADDING=0 BORDER=0 WIDTH=100%>
+ <TR><TD BGCOLOR="#000000" BACKGROUND="http://www.nevrax.org/inc/img/black_banner.jpg"><A HREF="http://www.nevrax.org"><IMG SRC="http://www.nevrax.org/inc/img/nevrax.gif" WIDTH="170" HEIGHT="45" BORDER=0 ALT="Nevrax" ></A></TD></TR>
+</TABLE>
+
+<!-- main table -->
+<TABLE CELLSPACING=0 CELLPADDING=0 BORDER=0 height=100%>
+ <TR>
+ <TD WIDTH=16><IMG SRC="http://www.nevrax.org/inc/img/pixel.gif" WIDTH="16" HEIGHT="10" BORDER=0 ALT=""></TD>
+ <TD WIDTH=140 BGCOLOR=#dddddd VALIGN=TOP ALIGN=middle><IMG SRC="http://www.nevrax.org/inc/img/pixel.gif" WIDTH="140" HEIGHT="10" BORDER=0 ALT="">
+
+ <!------ Begin Box ------>
+ <TABLE BORDER=0 CELLSPACING=0 CELLPADDING=0 BGCOLOR=black><TR><TD><TABLE border=0 cellspacing=2 cellpadding=0 width=120><tr><TD ALIGN=middle bgcolor=black>
+ <FONT COLOR=white FACE="sans-serif"><B>Nevrax.org</B></FONT></TD></TR><tr><td colspan=2 bgcolor=#FFFFFF>
+ <TABLE cellspacing=0 cellpadding=1 border=0>
+ <tr><td ALIGN=middle><a class='linkbox' href="http://www.nevrax.org/news/" TITLE="Rubrique news"><img width=13 height=15 hspace=5 border=0 src=http://www.nevrax.org/inc/img/picto-news.gif ALT=#></A></td><td><a class='linkbox' href="http://www.nevrax.org/news/" TITLE="News">News</a></td></tr>
+ <tr><td ALIGN=middle><a class='linkbox' href="http://www.nevrax.org/mail/" TITLE="Rubrique mail"><img width=15 height=11 hspace=5 border=0 src=http://www.nevrax.org/inc/img/picto-mail.gif ALT=#></A></td><td><a class='linkbox' href="http://www.nevrax.org/mail/" TITLE="Mailing list archive">Mailing-list</a></td></tr>
+ <tr><td ALIGN=middle><a class='linkbox' href="http://www.nevrax.org/docs/" TITLE="Rubrique docs"><img width=14 height=16 hspace=5 border=0 src=http://www.nevrax.org/inc/img/picto-docs.gif ALT=#></A></td><td><a class='linkbox' href="http://www.nevrax.org/docs/" TITLE="Documentation">Documentation</a></td></tr>
+ <tr><td ALIGN=middle><a class='linkbox' href="http://www.nevrax.org/cvs/" TITLE="Rubrique cvs"><img width=13 height=17 hspace=5 border=0 src=http://www.nevrax.org/inc/img/picto-cvs.gif ALT=#></A></td><td><a class='linkbox' href="http://www.nevrax.org/cvs/" TITLE="CVS Web">CVS</a></td></tr>
+ <tr><td ALIGN=middle><a class='linkbox' href="http://www.nevrax.org/bugs/" TITLE="Rubrique bugs"><img width=20 height=16 hspace=5 border=0 src=http://www.nevrax.org/inc/img/picto-bugs.gif ALT=#></A></td><td><a class='linkbox' href="http://www.nevrax.org/bugs/" TITLE="Bugtracking">Bugs</a></td></tr>
+ <tr><td ALIGN=middle><a class='linkbox' href="http://www.nevrax.org/free/" TITLE="Rubrique license"><img width=18 height=12 hspace=5 border=0 src=http://www.nevrax.org/inc/img/picto-free.gif ALT=#></A></td><td><a class='linkbox' href="http://www.nevrax.org/free/" TITLE="Free Software">Free software</a></td></tr>
+ </TABLE>
+ </TD></TR></TABLE></TD></TR></TABLE>
+ <!------ End Box ------>
+
+ </TD>
+ <TD WIDTH=15><IMG SRC="http://www.nevrax.org/inc/img/pixel.gif" WIDTH="16" HEIGHT="16" BORDER=0 ALT=""></TD>
+ <TD ALIGN=left valign=top><IMG SRC="http://www.nevrax.org/inc/img/pixel.gif" WIDTH="140" HEIGHT="10" BORDER=0 ALT="">
+
+<!-- title -->
+<TABLE background="http://www.nevrax.org/inc/img/redline.gif" CELLSPACING=0 CELLPADDING=0 BORDER=0 width=100%><tr><td>
+<A HREF="http://www.nevrax.org/cvs/"><img src="http://www.nevrax.org/inc/img/t_cvs.gif" ALT="cvs" HEIGHT=20 BORDER=0></A>
+</td><td><IMG SRC="http://www.nevrax.org/inc/img/pixel.gif" WIDTH="1" HEIGHT="1" BORDER=0 ALT="">
+</td></tr></table>
+
+<!-- title -->
+<table width=100%><tr><td align=left><b> <a href="/cvs/cvsweb.cgi/">Nevrax</a> / <a href="/cvs/cvsweb.cgi/code/">code</a> / <a href="/cvs/cvsweb.cgi/code/nelns/">nelns</a> / <a href="/cvs/cvsweb.cgi/code/nelns/admin_service/">admin_service</a> / admin_service.dsp</b></td><td align=right><b></b></td></TR></TABLE>
+
+<!-- block -->
+<TABLE bgcolor="#dddddd" CELLSPACING=0 CELLPADDING=0 BORDER=0 width=100%><tr><td width=1% valign=middle><img width=6 height=14 hspace=2 vspace=2 src="http://www.nevrax.org/inc/img/reddots.gif"></TD>
+ <TD><B>admin_service.dsp</B></TD>
+ <TD ALIGN=RIGHT> </td>
+</tr></table>
+<P>
+<p>Default branch: MAIN<BR>
+<HR size=1 NOSHADE><P><a NAME="rev1.5"></a><a NAME="HEAD"></a><a NAME="MAIN"></a>
+ Revision <A HREF="admin_service.dsp?rev=1.5&amp;content-type=text/x-cvsweb-markup"><b>1.5</b></A> / (<A HREF="/cvs/cvsweb.cgi/~checkout~/code/nelns/admin_service/admin_service.dsp?rev=1.5&amp;content-type=text/plain" target="cvs_checkout" onClick="window.open('/cvs/cvsweb.cgi/~checkout~/code/nelns/admin_service/admin_service.dsp?rev=1.5&amp;content-type=text/plain','cvs_checkout','resizeable,scrollbars');"><b>download</b></A>) - <a href="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.dsp?annotate=1.5">annotate</a> - <b>[selected]</b>, <i>Thu Aug 23 15:43:21 2001 UTC</i> (11 months ago) by <i>lecroart</i>
+<BR>Branch: <b><A HREF="admin_service.dsp?only_with_tag=MAIN">MAIN</A>
+</b>
+<BR>CVS Tags: <b><A HREF="admin_service.dsp?only_with_tag=HEAD">HEAD</A>
+</b><BR>Changes since <b>1.4: +34 -3
+ lines</b><BR>Diff to previous <A HREF="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.dsp.diff?r1=1.4&amp;r2=1.5">1.4</A>
+<PRE>
+ADDED: DebugFast config
+</PRE>
+<HR size=1 NOSHADE><P><a NAME="rev1.4"></a>
+ Revision <A HREF="admin_service.dsp?rev=1.4&amp;content-type=text/x-cvsweb-markup"><b>1.4</b></A> / (<A HREF="/cvs/cvsweb.cgi/~checkout~/code/nelns/admin_service/admin_service.dsp?rev=1.4&amp;content-type=text/plain" target="cvs_checkout" onClick="window.open('/cvs/cvsweb.cgi/~checkout~/code/nelns/admin_service/admin_service.dsp?rev=1.4&amp;content-type=text/plain','cvs_checkout','resizeable,scrollbars');"><b>download</b></A>) - <a href="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.dsp?annotate=1.4">annotate</a> - <A HREF="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.dsp?r1=1.4">[select for diffs]</A>
+, <i>Fri Jun 15 09:58:49 2001 UTC</i> (13 months, 1 week ago) by <i>lecroart</i>
+<BR>Branch: <b><A HREF="admin_service.dsp?only_with_tag=MAIN">MAIN</A>
+</b>
+<BR>Changes since <b>1.3: +9 -6
+ lines</b><BR>Diff to previous <A HREF="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.dsp.diff?r1=1.3&amp;r2=1.4">1.3</A>
+ to selected <A HREF="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.dsp.diff?r1=1.5&amp;r2=1.4">1.5</A>
+<PRE>
+CHANGED: use win32
+</PRE>
+<HR size=1 NOSHADE><P><a NAME="rev1.3"></a>
+ Revision <A HREF="admin_service.dsp?rev=1.3&amp;content-type=text/x-cvsweb-markup"><b>1.3</b></A> / (<A HREF="/cvs/cvsweb.cgi/~checkout~/code/nelns/admin_service/admin_service.dsp?rev=1.3&amp;content-type=text/plain" target="cvs_checkout" onClick="window.open('/cvs/cvsweb.cgi/~checkout~/code/nelns/admin_service/admin_service.dsp?rev=1.3&amp;content-type=text/plain','cvs_checkout','resizeable,scrollbars');"><b>download</b></A>) - <a href="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.dsp?annotate=1.3">annotate</a> - <A HREF="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.dsp?r1=1.3">[select for diffs]</A>
+, <i>Tue Jun 12 15:44:38 2001 UTC</i> (13 months, 1 week ago) by <i>lecroart</i>
+<BR>Branch: <b><A HREF="admin_service.dsp?only_with_tag=MAIN">MAIN</A>
+</b>
+<BR>Changes since <b>1.2: +6 -3
+ lines</b><BR>Diff to previous <A HREF="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.dsp.diff?r1=1.2&amp;r2=1.3">1.2</A>
+ to selected <A HREF="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.dsp.diff?r1=1.5&amp;r2=1.3">1.5</A>
+<PRE>
+#CHANGED: remove precompilated header
+</PRE>
+<HR size=1 NOSHADE><P><a NAME="rev1.2"></a>
+ Revision <A HREF="admin_service.dsp?rev=1.2&amp;content-type=text/x-cvsweb-markup"><b>1.2</b></A> / (<A HREF="/cvs/cvsweb.cgi/~checkout~/code/nelns/admin_service/admin_service.dsp?rev=1.2&amp;content-type=text/plain" target="cvs_checkout" onClick="window.open('/cvs/cvsweb.cgi/~checkout~/code/nelns/admin_service/admin_service.dsp?rev=1.2&amp;content-type=text/plain','cvs_checkout','resizeable,scrollbars');"><b>download</b></A>) - <a href="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.dsp?annotate=1.2">annotate</a> - <A HREF="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.dsp?r1=1.2">[select for diffs]</A>
+, <i>Thu Jun 7 16:19:05 2001 UTC</i> (13 months, 2 weeks ago) by <i>lecroart</i>
+<BR>Branch: <b><A HREF="admin_service.dsp?only_with_tag=MAIN">MAIN</A>
+</b>
+<BR>Changes since <b>1.1: +4 -0
+ lines</b><BR>Diff to previous <A HREF="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.dsp.diff?r1=1.1&amp;r2=1.2">1.1</A>
+ to selected <A HREF="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.dsp.diff?r1=1.5&amp;r2=1.2">1.5</A>
+<PRE>
+ADDED: commands system
+</PRE>
+<HR size=1 NOSHADE><P><a NAME="rev1.1"></a>
+ Revision <A HREF="admin_service.dsp?rev=1.1&amp;content-type=text/x-cvsweb-markup"><b>1.1</b></A> / (<A HREF="/cvs/cvsweb.cgi/~checkout~/code/nelns/admin_service/admin_service.dsp?rev=1.1&amp;content-type=text/plain" target="cvs_checkout" onClick="window.open('/cvs/cvsweb.cgi/~checkout~/code/nelns/admin_service/admin_service.dsp?rev=1.1&amp;content-type=text/plain','cvs_checkout','resizeable,scrollbars');"><b>download</b></A>) - <a href="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.dsp?annotate=1.1">annotate</a> - <A HREF="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.dsp?r1=1.1">[select for diffs]</A>
+, <i>Wed May 2 12:36:39 2001 UTC</i> (14 months, 3 weeks ago) by <i>lecroart</i>
+<BR>Branch: <b><A HREF="admin_service.dsp?only_with_tag=MAIN">MAIN</A>
+</b>
+<BR>Diff to selected <A HREF="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.dsp.diff?r1=1.5&amp;r2=1.1">1.5</A>
+<PRE>
+ADD: new version of the network system (in NeL and NeLns)
+</PRE>
+
+<!-- block -->
+<TABLE bgcolor="#dddddd" CELLSPACING=0 CELLPADDING=0 BORDER=0 width=100%><tr><td width=1% valign=middle><img width=6 height=14 hspace=2 vspace=2 src="http://www.nevrax.org/inc/img/reddots.gif"></TD>
+ <TD><B>Request Diffs</B></TD>
+ <TD ALIGN=RIGHT> </td>
+</tr></table>
+<P>
+<P>
+<FORM METHOD="GET" ACTION="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.dsp.diff" NAME="diff_select">
+Diffs between
+<SELECT NAME="r1">
+<OPTION VALUE="text" SELECTED>Use Text Field
+<OPTION VALUE="1:MAIN">MAIN
+<OPTION VALUE="1.5:HEAD">HEAD
+</SELECT>
+<INPUT TYPE="TEXT" SIZE="12" NAME="tr1" VALUE="1.5" onChange='document.diff_select.r1.selectedIndex=0'>
+ and
+<SELECT NAME="r2">
+<OPTION VALUE="text" SELECTED>Use Text Field
+<OPTION VALUE="1:MAIN">MAIN
+<OPTION VALUE="1.5:HEAD">HEAD
+</SELECT>
+<INPUT TYPE="TEXT" SIZE="12" NAME="tr2" VALUE="1.5" onChange='docuement.diff_select.r2.selectedIndex=0'>
+<BR>Type of Diff should be a&nbsp;<SELECT NAME="f">
+<OPTION VALUE=h SELECTED>Colored Diff<OPTION VALUE=H>Long Colored Diff<OPTION VALUE=u>Unidiff<OPTION VALUE=c>Context Diff<OPTION VALUE=s>Side by Side</SELECT><INPUT TYPE=SUBMIT VALUE=" Get Diffs ">
+</FORM>
+
+<!-- block -->
+<TABLE bgcolor="#dddddd" CELLSPACING=0 CELLPADDING=0 BORDER=0 width=100%><tr><td width=1% valign=middle><img width=6 height=14 hspace=2 vspace=2 src="http://www.nevrax.org/inc/img/reddots.gif"></TD>
+ <TD><B>Select branch</B></TD>
+ <TD ALIGN=RIGHT> </td>
+</tr></table>
+<P>
+<P>
+<A name=branch></A>
+<FORM METHOD="GET" ACTION="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.dsp">
+View only Branch:
+<SELECT NAME="only_with_tag" onchange="submit()">
+<OPTION VALUE="">Show all branches
+<OPTION>MAIN
+</SELECT>
+<INPUT TYPE=SUBMIT VALUE=" View Branch ">
+</FORM>
+<A name=logsort></A>
+<FORM METHOD="GET" ACTION="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.dsp">
+Sort log by:
+<SELECT NAME="logsort" onchange="submit()">
+<OPTION VALUE=cvs>Not sorted<OPTION VALUE=date SELECTED>Commit date<OPTION VALUE=rev>Revision</SELECT>
+<INPUT TYPE=SUBMIT VALUE=" Sort ">
+</FORM>
+
+<!-- footer -->
+<BR><FONT Size=+5>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </FONT>
+</TD>
+<TD WIDTH=15><IMG SRC=http://www.nevrax.org/inc/img/pixel.gif WIDTH=15 HEIGHT=15 BORDER=0 ALT=""></TD>
+</TR>
+</TABLE>
+</BODY>
+</HTML></BODY></HTML>
diff --git a/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.dsp?r1=1.5&only_with_tag=HEAD b/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.dsp?r1=1.5&only_with_tag=HEAD
new file mode 100644
index 00000000..7d8fb83a
--- /dev/null
+++ b/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.dsp?r1=1.5&only_with_tag=HEAD
@@ -0,0 +1,137 @@
+<!doctype html public "-//W3C//DTD HTML 4.0 Transitional//EN" "http://www.w3.org/TR/REC-html40/loose.dtd">
+<HTML>
+<HEAD>
+ <TITLE>nevrax.org : cvs</TITLE>
+ <META name="keywords" content="freesoftware,nel,newt,snowballs,richard stallman,GNU,Multi-User Online World">
+
+ <LINK REL=stylesheet TYPE="text/css" HREF="http://www.nevrax.org/inc/css/nevrax.css">
+</HEAD>
+<BODY MARGINHEIGHT="0" MARGINWIDTH="0">
+
+<!-- uplinks -->
+<TABLE CELLSPACING=0 CELLPADDING=0 BORDER=0>
+ <TR>
+ <TD WIDTH=16><IMG SRC="http://www.nevrax.org/inc/img/pixel.gif" WIDTH="16" HEIGHT="16" BORDER=0 ALT=""></TD>
+ <TD WIDTH=140 BGCOLOR=#dddddd><IMG SRC="http://www.nevrax.org/inc/img/pixel.gif" WIDTH="140" HEIGHT="16" BORDER=0 ALT=""></TD>
+ <TD WIDTH=16><IMG SRC="http://www.nevrax.org/inc/img/pixel.gif" WIDTH="16" HEIGHT="16" BORDER=0 ALT=""></TD>
+ <TD><IMG width=6 height=14 SRC="http://www.nevrax.org/inc/img/reddots.gif" ALT="#" VSPACE=2 HSPACE=2 BORDER=0 ></TD><TD VALIGN=middle>&nbsp;<A CLASS=uplinks HREF=http://www.nevrax.org><b>Home</B></FONT></A>&nbsp;&nbsp;&nbsp;</TD>
+ <TD><IMG width=6 height=14 SRC="http://www.nevrax.org/inc/img/reddots.gif" ALT="#" VSPACE=2 HSPACE=2 BORDER=0 ></TD><TD VALIGN=middle>&nbsp;<A CLASS=uplinks HREF=http://www.nevrax.com><b>nevrax.com</B></FONT></A>&nbsp;&nbsp;&nbsp;</TD>
+ </TR>
+</TABLE>
+
+<!-- banner Nevrax -->
+<TABLE CELLSPACING=0 CELLPADDING=0 BORDER=0 WIDTH=100%>
+ <TR><TD BGCOLOR="#000000" BACKGROUND="http://www.nevrax.org/inc/img/black_banner.jpg"><A HREF="http://www.nevrax.org"><IMG SRC="http://www.nevrax.org/inc/img/nevrax.gif" WIDTH="170" HEIGHT="45" BORDER=0 ALT="Nevrax" ></A></TD></TR>
+</TABLE>
+
+<!-- main table -->
+<TABLE CELLSPACING=0 CELLPADDING=0 BORDER=0 height=100%>
+ <TR>
+ <TD WIDTH=16><IMG SRC="http://www.nevrax.org/inc/img/pixel.gif" WIDTH="16" HEIGHT="10" BORDER=0 ALT=""></TD>
+ <TD WIDTH=140 BGCOLOR=#dddddd VALIGN=TOP ALIGN=middle><IMG SRC="http://www.nevrax.org/inc/img/pixel.gif" WIDTH="140" HEIGHT="10" BORDER=0 ALT="">
+
+ <!------ Begin Box ------>
+ <TABLE BORDER=0 CELLSPACING=0 CELLPADDING=0 BGCOLOR=black><TR><TD><TABLE border=0 cellspacing=2 cellpadding=0 width=120><tr><TD ALIGN=middle bgcolor=black>
+ <FONT COLOR=white FACE="sans-serif"><B>Nevrax.org</B></FONT></TD></TR><tr><td colspan=2 bgcolor=#FFFFFF>
+ <TABLE cellspacing=0 cellpadding=1 border=0>
+ <tr><td ALIGN=middle><a class='linkbox' href="http://www.nevrax.org/news/" TITLE="Rubrique news"><img width=13 height=15 hspace=5 border=0 src=http://www.nevrax.org/inc/img/picto-news.gif ALT=#></A></td><td><a class='linkbox' href="http://www.nevrax.org/news/" TITLE="News">News</a></td></tr>
+ <tr><td ALIGN=middle><a class='linkbox' href="http://www.nevrax.org/mail/" TITLE="Rubrique mail"><img width=15 height=11 hspace=5 border=0 src=http://www.nevrax.org/inc/img/picto-mail.gif ALT=#></A></td><td><a class='linkbox' href="http://www.nevrax.org/mail/" TITLE="Mailing list archive">Mailing-list</a></td></tr>
+ <tr><td ALIGN=middle><a class='linkbox' href="http://www.nevrax.org/docs/" TITLE="Rubrique docs"><img width=14 height=16 hspace=5 border=0 src=http://www.nevrax.org/inc/img/picto-docs.gif ALT=#></A></td><td><a class='linkbox' href="http://www.nevrax.org/docs/" TITLE="Documentation">Documentation</a></td></tr>
+ <tr><td ALIGN=middle><a class='linkbox' href="http://www.nevrax.org/cvs/" TITLE="Rubrique cvs"><img width=13 height=17 hspace=5 border=0 src=http://www.nevrax.org/inc/img/picto-cvs.gif ALT=#></A></td><td><a class='linkbox' href="http://www.nevrax.org/cvs/" TITLE="CVS Web">CVS</a></td></tr>
+ <tr><td ALIGN=middle><a class='linkbox' href="http://www.nevrax.org/bugs/" TITLE="Rubrique bugs"><img width=20 height=16 hspace=5 border=0 src=http://www.nevrax.org/inc/img/picto-bugs.gif ALT=#></A></td><td><a class='linkbox' href="http://www.nevrax.org/bugs/" TITLE="Bugtracking">Bugs</a></td></tr>
+ <tr><td ALIGN=middle><a class='linkbox' href="http://www.nevrax.org/free/" TITLE="Rubrique license"><img width=18 height=12 hspace=5 border=0 src=http://www.nevrax.org/inc/img/picto-free.gif ALT=#></A></td><td><a class='linkbox' href="http://www.nevrax.org/free/" TITLE="Free Software">Free software</a></td></tr>
+ </TABLE>
+ </TD></TR></TABLE></TD></TR></TABLE>
+ <!------ End Box ------>
+
+ </TD>
+ <TD WIDTH=15><IMG SRC="http://www.nevrax.org/inc/img/pixel.gif" WIDTH="16" HEIGHT="16" BORDER=0 ALT=""></TD>
+ <TD ALIGN=left valign=top><IMG SRC="http://www.nevrax.org/inc/img/pixel.gif" WIDTH="140" HEIGHT="10" BORDER=0 ALT="">
+
+<!-- title -->
+<TABLE background="http://www.nevrax.org/inc/img/redline.gif" CELLSPACING=0 CELLPADDING=0 BORDER=0 width=100%><tr><td>
+<A HREF="http://www.nevrax.org/cvs/"><img src="http://www.nevrax.org/inc/img/t_cvs.gif" ALT="cvs" HEIGHT=20 BORDER=0></A>
+</td><td><IMG SRC="http://www.nevrax.org/inc/img/pixel.gif" WIDTH="1" HEIGHT="1" BORDER=0 ALT="">
+</td></tr></table>
+
+<!-- title -->
+<table width=100%><tr><td align=left><b> <a href="/cvs/cvsweb.cgi/?only_with_tag=HEAD">Nevrax</a> / <a href="/cvs/cvsweb.cgi/code/?only_with_tag=HEAD">code</a> / <a href="/cvs/cvsweb.cgi/code/nelns/?only_with_tag=HEAD">nelns</a> / <a href="/cvs/cvsweb.cgi/code/nelns/admin_service/?only_with_tag=HEAD">admin_service</a> / admin_service.dsp</b></td><td align=right><b></b></td></TR></TABLE>
+
+<!-- block -->
+<TABLE bgcolor="#dddddd" CELLSPACING=0 CELLPADDING=0 BORDER=0 width=100%><tr><td width=1% valign=middle><img width=6 height=14 hspace=2 vspace=2 src="http://www.nevrax.org/inc/img/reddots.gif"></TD>
+ <TD><B>admin_service.dsp</B></TD>
+ <TD ALIGN=RIGHT> </td>
+</tr></table>
+<P>
+<p>Default branch: MAIN<BR>
+Current tag: HEAD<BR>
+<HR size=1 NOSHADE><P><a NAME="rev1.5"></a><a NAME="HEAD"></a><a NAME="MAIN"></a>
+ Revision <A HREF="admin_service.dsp?rev=1.5&amp;content-type=text/x-cvsweb-markup&amp;only_with_tag=HEAD"><b>1.5</b></A> / (<A HREF="/cvs/cvsweb.cgi/~checkout~/code/nelns/admin_service/admin_service.dsp?rev=1.5&amp;content-type=text/plain&amp;only_with_tag=HEAD" target="cvs_checkout" onClick="window.open('/cvs/cvsweb.cgi/~checkout~/code/nelns/admin_service/admin_service.dsp?rev=1.5&amp;content-type=text/plain','cvs_checkout','resizeable,scrollbars');"><b>download</b></A>) - <a href="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.dsp?annotate=1.5&amp;only_with_tag=HEAD">annotate</a> - <b>[selected]</b>, <i>Thu Aug 23 15:43:21 2001 UTC</i> (11 months ago) by <i>lecroart</i>
+<BR>Branch: <b><A HREF="admin_service.dsp?only_with_tag=MAIN">MAIN</A>
+</b>
+<BR>CVS Tags: <b><A HREF="admin_service.dsp?only_with_tag=HEAD">HEAD</A>
+</b><BR>Changes since <b>1.4: +34 -3
+ lines</b><BR>Diff to previous <A HREF="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.dsp.diff?r1=1.4&amp;r2=1.5&amp;only_with_tag=HEAD">1.4</A>
+<PRE>
+ADDED: DebugFast config
+</PRE>
+
+<!-- block -->
+<TABLE bgcolor="#dddddd" CELLSPACING=0 CELLPADDING=0 BORDER=0 width=100%><tr><td width=1% valign=middle><img width=6 height=14 hspace=2 vspace=2 src="http://www.nevrax.org/inc/img/reddots.gif"></TD>
+ <TD><B>Request Diffs</B></TD>
+ <TD ALIGN=RIGHT> </td>
+</tr></table>
+<P>
+<P>
+<FORM METHOD="GET" ACTION="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.dsp.diff" NAME="diff_select">
+<INPUT TYPE=HIDDEN NAME="only_with_tag" VALUE="HEAD">
+Diffs between
+<SELECT NAME="r1">
+<OPTION VALUE="text" SELECTED>Use Text Field
+<OPTION VALUE="1:MAIN">MAIN
+<OPTION VALUE="1.5:HEAD">HEAD
+</SELECT>
+<INPUT TYPE="TEXT" SIZE="12" NAME="tr1" VALUE="1.5" onChange='document.diff_select.r1.selectedIndex=0'>
+ and
+<SELECT NAME="r2">
+<OPTION VALUE="text" SELECTED>Use Text Field
+<OPTION VALUE="1:MAIN">MAIN
+<OPTION VALUE="1.5:HEAD">HEAD
+</SELECT>
+<INPUT TYPE="TEXT" SIZE="12" NAME="tr2" VALUE="1.5" onChange='docuement.diff_select.r2.selectedIndex=0'>
+<BR>Type of Diff should be a&nbsp;<SELECT NAME="f">
+<OPTION VALUE=h SELECTED>Colored Diff<OPTION VALUE=H>Long Colored Diff<OPTION VALUE=u>Unidiff<OPTION VALUE=c>Context Diff<OPTION VALUE=s>Side by Side</SELECT><INPUT TYPE=SUBMIT VALUE=" Get Diffs ">
+</FORM>
+
+<!-- block -->
+<TABLE bgcolor="#dddddd" CELLSPACING=0 CELLPADDING=0 BORDER=0 width=100%><tr><td width=1% valign=middle><img width=6 height=14 hspace=2 vspace=2 src="http://www.nevrax.org/inc/img/reddots.gif"></TD>
+ <TD><B>Select branch</B></TD>
+ <TD ALIGN=RIGHT> </td>
+</tr></table>
+<P>
+<P>
+<A name=branch></A>
+<FORM METHOD="GET" ACTION="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.dsp">
+View only Branch:
+<SELECT NAME="only_with_tag" onchange="submit()">
+<OPTION VALUE="">Show all branches
+<OPTION>MAIN
+</SELECT>
+<INPUT TYPE=SUBMIT VALUE=" View Branch ">
+</FORM>
+<A name=logsort></A>
+<FORM METHOD="GET" ACTION="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.dsp">
+Sort log by:
+<SELECT NAME="logsort" onchange="submit()">
+<OPTION VALUE=cvs>Not sorted<OPTION VALUE=date SELECTED>Commit date<OPTION VALUE=rev>Revision</SELECT>
+<INPUT TYPE=SUBMIT VALUE=" Sort ">
+</FORM>
+
+<!-- footer -->
+<BR><FONT Size=+5>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </FONT>
+</TD>
+<TD WIDTH=15><IMG SRC=http://www.nevrax.org/inc/img/pixel.gif WIDTH=15 HEIGHT=15 BORDER=0 ALT=""></TD>
+</TR>
+</TABLE>
+</BODY>
+</HTML></BODY></HTML>
diff --git a/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.dsp?rev=1.2&content-type=text/x-cvsweb-markup/index.html b/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.dsp?rev=1.2&content-type=text/x-cvsweb-markup/index.html
new file mode 100644
index 00000000..68bb8627
--- /dev/null
+++ b/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.dsp?rev=1.2&content-type=text/x-cvsweb-markup/index.html
@@ -0,0 +1,135 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"><HTML>
+<HEAD><style> A { color:black }</style>
+<!-- hennerik CVSweb $Revision: 1.93 $ -->
+<TITLE>code/nelns/admin_service/admin_service.dsp - view - 1.2</TITLE></HEAD>
+<BODY BGCOLOR="#eeeeee">
+<table width="100%" border=0 cellspacing=0 cellpadding=1 bgcolor="#aaaaaa"><tr valign=bottom><td><a href="admin_service.dsp"><IMG SRC="http://www.nevrax.org/inc/img/picto-up.gif" ALT="[BACK]" BORDER="0" WIDTH="14" HEIGHT="13"></a> <b>Return to <A HREF="admin_service.dsp">admin_service.dsp</A>
+ CVS log</b> <IMG SRC="http://www.nevrax.org/inc/img/picto-news.gif" ALT="[TXT]" BORDER="0" WIDTH="13" HEIGHT="15"></td><td align=right><IMG SRC="http://www.nevrax.org/inc/img/picto-dir.gif" ALT="[DIR]" BORDER="0" WIDTH="15" HEIGHT="13"> <b>Up to <a href="/cvs/cvsweb.cgi/">Nevrax</a> / <a href="/cvs/cvsweb.cgi/code/">code</a> / <a href="/cvs/cvsweb.cgi/code/nelns/">nelns</a> / <a href="/cvs/cvsweb.cgi/code/nelns/admin_service/">admin_service</a></b></td></tr></table><HR noshade><table width="100%"><tr><td bgcolor="#ffffff">File: <a href="/cvs/cvsweb.cgi/">Nevrax</a> / <a href="/cvs/cvsweb.cgi/code/">code</a> / <a href="/cvs/cvsweb.cgi/code/nelns/">nelns</a> / <a href="/cvs/cvsweb.cgi/code/nelns/admin_service/">admin_service</a> / <a href="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.dsp">admin_service.dsp</a>&nbsp;(<A HREF="/cvs/cvsweb.cgi/~checkout~/code/nelns/admin_service/admin_service.dsp?rev=1.2" target="cvs_checkout" onClick="window.open('/cvs/cvsweb.cgi/~checkout~/code/nelns/admin_service/admin_service.dsp?rev=1.2','cvs_checkout','resizeable,scrollbars');"><b>download</b></A>)<BR>
+Revision <B>1.2</B>, <i>Thu Jun 7 16:19:05 2001 UTC</i> (13 months, 2 weeks ago) by <i>lecroart</i>
+<BR>Branch: <b>MAIN</b>
+<BR>Changes since <b>1.1: +4 -0
+ lines</b><PRE>
+ADDED: commands system
+</PRE>
+</td></tr></table><HR noshade><PRE># Microsoft Developer Studio Project File - Name=&quot;admin_service&quot; - Package Owner=&lt;4&gt;
+# Microsoft Developer Studio Generated Build File, Format Version 6.00
+# ** DO NOT EDIT **
+
+# TARGTYPE &quot;Win32 (x86) Console Application&quot; 0x0103
+
+CFG=admin_service - Win32 Debug
+!MESSAGE This is not a valid makefile. To build this project using NMAKE,
+!MESSAGE use the Export Makefile command and run
+!MESSAGE
+!MESSAGE NMAKE /f &quot;admin_service.mak&quot;.
+!MESSAGE
+!MESSAGE You can specify a configuration when running NMAKE
+!MESSAGE by defining the macro CFG on the command line. For example:
+!MESSAGE
+!MESSAGE NMAKE /f &quot;admin_service.mak&quot; CFG=&quot;admin_service - Win32 Debug&quot;
+!MESSAGE
+!MESSAGE Possible choices for configuration are:
+!MESSAGE
+!MESSAGE &quot;admin_service - Win32 Release&quot; (based on &quot;Win32 (x86) Console Application&quot;)
+!MESSAGE &quot;admin_service - Win32 Debug&quot; (based on &quot;Win32 (x86) Console Application&quot;)
+!MESSAGE &quot;admin_service - Win32 ReleaseDebug&quot; (based on &quot;Win32 (x86) Console Application&quot;)
+!MESSAGE
+
+# Begin Project
+# PROP AllowPerConfigDependencies 0
+# PROP Scc_ProjName &quot;&quot;
+# PROP Scc_LocalPath &quot;&quot;
+CPP=cl.exe
+RSC=rc.exe
+
+!IF &nbsp;&quot;$(CFG)&quot; == &quot;admin_service - Win32 Release&quot;
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 0
+# PROP BASE Output_Dir &quot;Release&quot;
+# PROP BASE Intermediate_Dir &quot;Release&quot;
+# PROP BASE Target_Dir &quot;&quot;
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 0
+# PROP Output_Dir &quot;Release&quot;
+# PROP Intermediate_Dir &quot;Release&quot;
+# PROP Ignore_Export_Lib 0
+# PROP Target_Dir &quot;&quot;
+# ADD BASE CPP /nologo /W3 /GX /O2 /D &quot;WIN32&quot; /D &quot;NDEBUG&quot; /D &quot;_CONSOLE&quot; /D &quot;_MBCS&quot; /YX /FD /c
+# ADD CPP /nologo /MD /W3 /GR /GX /O2 /D &quot;WIN32&quot; /D &quot;NDEBUG&quot; /D &quot;_CONSOLE&quot; /D &quot;_MBCS&quot; /YX /FD /c
+# ADD BASE RSC /l 0x40c /d &quot;NDEBUG&quot;
+# ADD RSC /l 0x40c /d &quot;NDEBUG&quot;
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LINK32=link.exe
+# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386
+# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386
+
+!ELSEIF &nbsp;&quot;$(CFG)&quot; == &quot;admin_service - Win32 Debug&quot;
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 1
+# PROP BASE Output_Dir &quot;Debug&quot;
+# PROP BASE Intermediate_Dir &quot;Debug&quot;
+# PROP BASE Target_Dir &quot;&quot;
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 1
+# PROP Output_Dir &quot;Debug&quot;
+# PROP Intermediate_Dir &quot;Debug&quot;
+# PROP Ignore_Export_Lib 0
+# PROP Target_Dir &quot;&quot;
+# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D &quot;WIN32&quot; /D &quot;_DEBUG&quot; /D &quot;_CONSOLE&quot; /D &quot;_MBCS&quot; /YX /FD /GZ /c
+# ADD CPP /nologo /MDd /W3 /Gm /GR /GX /ZI /Od /D &quot;WIN32&quot; /D &quot;_DEBUG&quot; /D &quot;_CONSOLE&quot; /D &quot;_MBCS&quot; /D &quot;__STL_DEBUG&quot; /FR /YX /FD /GZ /c
+# ADD BASE RSC /l 0x40c /d &quot;_DEBUG&quot;
+# ADD RSC /l 0x40c /d &quot;_DEBUG&quot;
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LINK32=link.exe
+# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept
+# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /nodefaultlib:&quot;libcmtd.lib&quot; /nodefaultlib:&quot;libcd.lib&quot; /pdbtype:sept
+
+!ELSEIF &nbsp;&quot;$(CFG)&quot; == &quot;admin_service - Win32 ReleaseDebug&quot;
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 0
+# PROP BASE Output_Dir &quot;ReleaseDebug&quot;
+# PROP BASE Intermediate_Dir &quot;ReleaseDebug&quot;
+# PROP BASE Ignore_Export_Lib 0
+# PROP BASE Target_Dir &quot;&quot;
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 0
+# PROP Output_Dir &quot;ReleaseDebug&quot;
+# PROP Intermediate_Dir &quot;ReleaseDebug&quot;
+# PROP Ignore_Export_Lib 0
+# PROP Target_Dir &quot;&quot;
+# ADD BASE CPP /nologo /MD /W3 /GR /GX /O2 /D &quot;WIN32&quot; /D &quot;NDEBUG&quot; /D &quot;_CONSOLE&quot; /D &quot;_MBCS&quot; /YX /FD /c
+# ADD CPP /nologo /MD /W3 /GR /GX /Zi /O2 /D &quot;WIN32&quot; /D &quot;NDEBUG&quot; /D &quot;_CONSOLE&quot; /D &quot;_MBCS&quot; /YX /FD /c
+# ADD BASE RSC /l 0x40c /d &quot;NDEBUG&quot;
+# ADD RSC /l 0x40c /d &quot;NDEBUG&quot;
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LINK32=link.exe
+# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386
+# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386
+
+!ENDIF
+
+# Begin Target
+
+# Name &quot;admin_service - Win32 Release&quot;
+# Name &quot;admin_service - Win32 Debug&quot;
+# Name &quot;admin_service - Win32 ReleaseDebug&quot;
+# Begin Source File
+
+SOURCE=.\admin_service.cfg
+# End Source File
+# Begin Source File
+
+SOURCE=.\admin_service.cpp
+# End Source File
+# End Target
+# End Project
+</PRE> \ No newline at end of file
diff --git a/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.dsp?rev=1.5&content-type=text/x-cvsweb-markup/index.html b/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.dsp?rev=1.5&content-type=text/x-cvsweb-markup/index.html
new file mode 100644
index 00000000..74b134ad
--- /dev/null
+++ b/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.dsp?rev=1.5&content-type=text/x-cvsweb-markup/index.html
@@ -0,0 +1,172 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"><HTML>
+<HEAD><style> A { color:black }</style>
+<!-- hennerik CVSweb $Revision: 1.93 $ -->
+<TITLE>code/nelns/admin_service/admin_service.dsp - view - 1.5</TITLE></HEAD>
+<BODY BGCOLOR="#eeeeee">
+<table width="100%" border=0 cellspacing=0 cellpadding=1 bgcolor="#aaaaaa"><tr valign=bottom><td><a href="admin_service.dsp"><IMG SRC="http://www.nevrax.org/inc/img/picto-up.gif" ALT="[BACK]" BORDER="0" WIDTH="14" HEIGHT="13"></a> <b>Return to <A HREF="admin_service.dsp">admin_service.dsp</A>
+ CVS log</b> <IMG SRC="http://www.nevrax.org/inc/img/picto-news.gif" ALT="[TXT]" BORDER="0" WIDTH="13" HEIGHT="15"></td><td align=right><IMG SRC="http://www.nevrax.org/inc/img/picto-dir.gif" ALT="[DIR]" BORDER="0" WIDTH="15" HEIGHT="13"> <b>Up to <a href="/cvs/cvsweb.cgi/">Nevrax</a> / <a href="/cvs/cvsweb.cgi/code/">code</a> / <a href="/cvs/cvsweb.cgi/code/nelns/">nelns</a> / <a href="/cvs/cvsweb.cgi/code/nelns/admin_service/">admin_service</a></b></td></tr></table><HR noshade><table width="100%"><tr><td bgcolor="#ffffff">File: <a href="/cvs/cvsweb.cgi/">Nevrax</a> / <a href="/cvs/cvsweb.cgi/code/">code</a> / <a href="/cvs/cvsweb.cgi/code/nelns/">nelns</a> / <a href="/cvs/cvsweb.cgi/code/nelns/admin_service/">admin_service</a> / <a href="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.dsp">admin_service.dsp</a>&nbsp;(<A HREF="/cvs/cvsweb.cgi/~checkout~/code/nelns/admin_service/admin_service.dsp?rev=1.5" target="cvs_checkout" onClick="window.open('/cvs/cvsweb.cgi/~checkout~/code/nelns/admin_service/admin_service.dsp?rev=1.5','cvs_checkout','resizeable,scrollbars');"><b>download</b></A>)<BR>
+Revision <B>1.5</B>, <i>Thu Aug 23 15:43:21 2001 UTC</i> (9 months, 4 weeks ago) by <i>lecroart</i>
+<BR>Branch: <b>MAIN</b>
+<BR>CVS Tags: <b>HEAD</b><BR>Changes since <b>1.4: +34 -3
+ lines</b><PRE>
+ADDED: DebugFast config
+</PRE>
+</td></tr></table><HR noshade><PRE># Microsoft Developer Studio Project File - Name=&quot;admin_service&quot; - Package Owner=&lt;4&gt;
+# Microsoft Developer Studio Generated Build File, Format Version 6.00
+# ** DO NOT EDIT **
+
+# TARGTYPE &quot;Win32 (x86) Console Application&quot; 0x0103
+
+CFG=admin_service - Win32 DebugFast
+!MESSAGE This is not a valid makefile. To build this project using NMAKE,
+!MESSAGE use the Export Makefile command and run
+!MESSAGE
+!MESSAGE NMAKE /f &quot;admin_service.mak&quot;.
+!MESSAGE
+!MESSAGE You can specify a configuration when running NMAKE
+!MESSAGE by defining the macro CFG on the command line. For example:
+!MESSAGE
+!MESSAGE NMAKE /f &quot;admin_service.mak&quot; CFG=&quot;admin_service - Win32 DebugFast&quot;
+!MESSAGE
+!MESSAGE Possible choices for configuration are:
+!MESSAGE
+!MESSAGE &quot;admin_service - Win32 Release&quot; (based on &quot;Win32 (x86) Console Application&quot;)
+!MESSAGE &quot;admin_service - Win32 Debug&quot; (based on &quot;Win32 (x86) Console Application&quot;)
+!MESSAGE &quot;admin_service - Win32 ReleaseDebug&quot; (based on &quot;Win32 (x86) Console Application&quot;)
+!MESSAGE &quot;admin_service - Win32 DebugFast&quot; (based on &quot;Win32 (x86) Console Application&quot;)
+!MESSAGE
+
+# Begin Project
+# PROP AllowPerConfigDependencies 0
+# PROP Scc_ProjName &quot;&quot;
+# PROP Scc_LocalPath &quot;&quot;
+CPP=cl.exe
+RSC=rc.exe
+
+!IF &nbsp;&quot;$(CFG)&quot; == &quot;admin_service - Win32 Release&quot;
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 0
+# PROP BASE Output_Dir &quot;Release&quot;
+# PROP BASE Intermediate_Dir &quot;Release&quot;
+# PROP BASE Target_Dir &quot;&quot;
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 0
+# PROP Output_Dir &quot;Release&quot;
+# PROP Intermediate_Dir &quot;Release&quot;
+# PROP Ignore_Export_Lib 0
+# PROP Target_Dir &quot;&quot;
+# ADD BASE CPP /nologo /W3 /GX /O2 /D &quot;WIN32&quot; /D &quot;NDEBUG&quot; /D &quot;_CONSOLE&quot; /D &quot;_MBCS&quot; /YX /FD /c
+# ADD CPP /nologo /MD /W3 /GR /GX /O2 /D &quot;NDEBUG&quot; /D &quot;WIN32&quot; /D &quot;_WINDOWS&quot; /D &quot;_MBCS&quot; /FD /c
+# SUBTRACT CPP /YX
+# ADD BASE RSC /l 0x40c /d &quot;NDEBUG&quot;
+# ADD RSC /l 0x40c /d &quot;NDEBUG&quot;
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LINK32=link.exe
+# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386
+# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:windows /machine:I386
+# SUBTRACT LINK32 /pdb:none
+
+!ELSEIF &nbsp;&quot;$(CFG)&quot; == &quot;admin_service - Win32 Debug&quot;
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 1
+# PROP BASE Output_Dir &quot;Debug&quot;
+# PROP BASE Intermediate_Dir &quot;Debug&quot;
+# PROP BASE Target_Dir &quot;&quot;
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 1
+# PROP Output_Dir &quot;Debug&quot;
+# PROP Intermediate_Dir &quot;Debug&quot;
+# PROP Ignore_Export_Lib 0
+# PROP Target_Dir &quot;&quot;
+# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D &quot;WIN32&quot; /D &quot;_DEBUG&quot; /D &quot;_CONSOLE&quot; /D &quot;_MBCS&quot; /YX /FD /GZ /c
+# ADD CPP /nologo /MDd /W3 /Gm /Gi /GR /GX /Zi /Od /Gf /D &quot;_DEBUG&quot; /D &quot;__STL_DEBUG&quot; /D &quot;WIN32&quot; /D &quot;_WINDOWS&quot; /D &quot;_MBCS&quot; /FR /FD /GZ /c
+# SUBTRACT CPP /YX
+# ADD BASE RSC /l 0x40c /d &quot;_DEBUG&quot;
+# ADD RSC /l 0x40c /d &quot;_DEBUG&quot;
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LINK32=link.exe
+# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept
+# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:windows /debug /machine:I386 /nodefaultlib:&quot;libcmtd.lib&quot; /nodefaultlib:&quot;libcd.lib&quot; /pdbtype:sept
+# SUBTRACT LINK32 /pdb:none
+
+!ELSEIF &nbsp;&quot;$(CFG)&quot; == &quot;admin_service - Win32 ReleaseDebug&quot;
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 0
+# PROP BASE Output_Dir &quot;ReleaseDebug&quot;
+# PROP BASE Intermediate_Dir &quot;ReleaseDebug&quot;
+# PROP BASE Ignore_Export_Lib 0
+# PROP BASE Target_Dir &quot;&quot;
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 0
+# PROP Output_Dir &quot;ReleaseDebug&quot;
+# PROP Intermediate_Dir &quot;ReleaseDebug&quot;
+# PROP Ignore_Export_Lib 0
+# PROP Target_Dir &quot;&quot;
+# ADD BASE CPP /nologo /MD /W3 /GR /GX /O2 /D &quot;WIN32&quot; /D &quot;NDEBUG&quot; /D &quot;_CONSOLE&quot; /D &quot;_MBCS&quot; /YX /FD /c
+# ADD CPP /nologo /MD /W3 /GR /GX /Zi /O2 /D &quot;NDEBUG&quot; /D &quot;WIN32&quot; /D &quot;_WINDOWS&quot; /D &quot;_MBCS&quot; /FD /c
+# SUBTRACT CPP /YX
+# ADD BASE RSC /l 0x40c /d &quot;NDEBUG&quot;
+# ADD RSC /l 0x40c /d &quot;NDEBUG&quot;
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LINK32=link.exe
+# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386
+# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:windows /debug /machine:I386
+# SUBTRACT LINK32 /pdb:none
+
+!ELSEIF &nbsp;&quot;$(CFG)&quot; == &quot;admin_service - Win32 DebugFast&quot;
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 1
+# PROP BASE Output_Dir &quot;admin_service___Win32_DebugFast&quot;
+# PROP BASE Intermediate_Dir &quot;admin_service___Win32_DebugFast&quot;
+# PROP BASE Ignore_Export_Lib 0
+# PROP BASE Target_Dir &quot;&quot;
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 1
+# PROP Output_Dir &quot;DebugFast&quot;
+# PROP Intermediate_Dir &quot;DebugFast&quot;
+# PROP Ignore_Export_Lib 0
+# PROP Target_Dir &quot;&quot;
+# ADD BASE CPP /nologo /MDd /W3 /Gm /Gi /GR /GX /Zi /Od /Gf /D &quot;_DEBUG&quot; /D &quot;__STL_DEBUG&quot; /D &quot;WIN32&quot; /D &quot;_WINDOWS&quot; /D &quot;_MBCS&quot; /FR /FD /GZ /c
+# SUBTRACT BASE CPP /YX
+# ADD CPP /nologo /MDd /W3 /Gm /Gi /GR /GX /Zi /Od /Ob1 /Gf /D &quot;_WINDOWS&quot; /D &quot;_DEBUG&quot; /D &quot;WIN32&quot; /D &quot;_MBCS&quot; /FR /FD /GZ /c
+# SUBTRACT CPP /YX
+# ADD BASE RSC /l 0x40c /d &quot;_DEBUG&quot;
+# ADD RSC /l 0x40c /d &quot;_DEBUG&quot;
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LINK32=link.exe
+# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:windows /debug /machine:I386 /nodefaultlib:&quot;libcmtd.lib&quot; /nodefaultlib:&quot;libcd.lib&quot; /pdbtype:sept
+# SUBTRACT BASE LINK32 /pdb:none
+# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:windows /debug /machine:I386 /nodefaultlib:&quot;libcmtd.lib&quot; /nodefaultlib:&quot;libcd.lib&quot; /pdbtype:sept
+# SUBTRACT LINK32 /pdb:none
+
+!ENDIF
+
+# Begin Target
+
+# Name &quot;admin_service - Win32 Release&quot;
+# Name &quot;admin_service - Win32 Debug&quot;
+# Name &quot;admin_service - Win32 ReleaseDebug&quot;
+# Name &quot;admin_service - Win32 DebugFast&quot;
+# Begin Source File
+
+SOURCE=.\admin_service.cfg
+# End Source File
+# Begin Source File
+
+SOURCE=.\admin_service.cpp
+# End Source File
+# End Target
+# End Project
+</PRE> \ No newline at end of file
diff --git a/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.dsp?sortby=date b/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.dsp?sortby=date
new file mode 100644
index 00000000..f3c439d2
--- /dev/null
+++ b/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.dsp?sortby=date
@@ -0,0 +1,177 @@
+<!doctype html public "-//W3C//DTD HTML 4.0 Transitional//EN" "http://www.w3.org/TR/REC-html40/loose.dtd">
+<HTML>
+<HEAD>
+ <TITLE>nevrax.org : cvs</TITLE>
+ <META name="keywords" content="freesoftware,nel,newt,snowballs,richard stallman,GNU,Multi-User Online World">
+
+ <LINK REL=stylesheet TYPE="text/css" HREF="http://www.nevrax.org/inc/css/nevrax.css">
+</HEAD>
+<BODY MARGINHEIGHT="0" MARGINWIDTH="0">
+
+<!-- uplinks -->
+<TABLE CELLSPACING=0 CELLPADDING=0 BORDER=0>
+ <TR>
+ <TD WIDTH=16><IMG SRC="http://www.nevrax.org/inc/img/pixel.gif" WIDTH="16" HEIGHT="16" BORDER=0 ALT=""></TD>
+ <TD WIDTH=140 BGCOLOR=#dddddd><IMG SRC="http://www.nevrax.org/inc/img/pixel.gif" WIDTH="140" HEIGHT="16" BORDER=0 ALT=""></TD>
+ <TD WIDTH=16><IMG SRC="http://www.nevrax.org/inc/img/pixel.gif" WIDTH="16" HEIGHT="16" BORDER=0 ALT=""></TD>
+ <TD><IMG width=6 height=14 SRC="http://www.nevrax.org/inc/img/reddots.gif" ALT="#" VSPACE=2 HSPACE=2 BORDER=0 ></TD><TD VALIGN=middle>&nbsp;<A CLASS=uplinks HREF=http://www.nevrax.org><b>Home</B></FONT></A>&nbsp;&nbsp;&nbsp;</TD>
+ <TD><IMG width=6 height=14 SRC="http://www.nevrax.org/inc/img/reddots.gif" ALT="#" VSPACE=2 HSPACE=2 BORDER=0 ></TD><TD VALIGN=middle>&nbsp;<A CLASS=uplinks HREF=http://www.nevrax.com><b>nevrax.com</B></FONT></A>&nbsp;&nbsp;&nbsp;</TD>
+ </TR>
+</TABLE>
+
+<!-- banner Nevrax -->
+<TABLE CELLSPACING=0 CELLPADDING=0 BORDER=0 WIDTH=100%>
+ <TR><TD BGCOLOR="#000000" BACKGROUND="http://www.nevrax.org/inc/img/black_banner.jpg"><A HREF="http://www.nevrax.org"><IMG SRC="http://www.nevrax.org/inc/img/nevrax.gif" WIDTH="170" HEIGHT="45" BORDER=0 ALT="Nevrax" ></A></TD></TR>
+</TABLE>
+
+<!-- main table -->
+<TABLE CELLSPACING=0 CELLPADDING=0 BORDER=0 height=100%>
+ <TR>
+ <TD WIDTH=16><IMG SRC="http://www.nevrax.org/inc/img/pixel.gif" WIDTH="16" HEIGHT="10" BORDER=0 ALT=""></TD>
+ <TD WIDTH=140 BGCOLOR=#dddddd VALIGN=TOP ALIGN=middle><IMG SRC="http://www.nevrax.org/inc/img/pixel.gif" WIDTH="140" HEIGHT="10" BORDER=0 ALT="">
+
+ <!------ Begin Box ------>
+ <TABLE BORDER=0 CELLSPACING=0 CELLPADDING=0 BGCOLOR=black><TR><TD><TABLE border=0 cellspacing=2 cellpadding=0 width=120><tr><TD ALIGN=middle bgcolor=black>
+ <FONT COLOR=white FACE="sans-serif"><B>Nevrax.org</B></FONT></TD></TR><tr><td colspan=2 bgcolor=#FFFFFF>
+ <TABLE cellspacing=0 cellpadding=1 border=0>
+ <tr><td ALIGN=middle><a class='linkbox' href="http://www.nevrax.org/news/" TITLE="Rubrique news"><img width=13 height=15 hspace=5 border=0 src=http://www.nevrax.org/inc/img/picto-news.gif ALT=#></A></td><td><a class='linkbox' href="http://www.nevrax.org/news/" TITLE="News">News</a></td></tr>
+ <tr><td ALIGN=middle><a class='linkbox' href="http://www.nevrax.org/mail/" TITLE="Rubrique mail"><img width=15 height=11 hspace=5 border=0 src=http://www.nevrax.org/inc/img/picto-mail.gif ALT=#></A></td><td><a class='linkbox' href="http://www.nevrax.org/mail/" TITLE="Mailing list archive">Mailing-list</a></td></tr>
+ <tr><td ALIGN=middle><a class='linkbox' href="http://www.nevrax.org/docs/" TITLE="Rubrique docs"><img width=14 height=16 hspace=5 border=0 src=http://www.nevrax.org/inc/img/picto-docs.gif ALT=#></A></td><td><a class='linkbox' href="http://www.nevrax.org/docs/" TITLE="Documentation">Documentation</a></td></tr>
+ <tr><td ALIGN=middle><a class='linkbox' href="http://www.nevrax.org/cvs/" TITLE="Rubrique cvs"><img width=13 height=17 hspace=5 border=0 src=http://www.nevrax.org/inc/img/picto-cvs.gif ALT=#></A></td><td><a class='linkbox' href="http://www.nevrax.org/cvs/" TITLE="CVS Web">CVS</a></td></tr>
+ <tr><td ALIGN=middle><a class='linkbox' href="http://www.nevrax.org/bugs/" TITLE="Rubrique bugs"><img width=20 height=16 hspace=5 border=0 src=http://www.nevrax.org/inc/img/picto-bugs.gif ALT=#></A></td><td><a class='linkbox' href="http://www.nevrax.org/bugs/" TITLE="Bugtracking">Bugs</a></td></tr>
+ <tr><td ALIGN=middle><a class='linkbox' href="http://www.nevrax.org/free/" TITLE="Rubrique license"><img width=18 height=12 hspace=5 border=0 src=http://www.nevrax.org/inc/img/picto-free.gif ALT=#></A></td><td><a class='linkbox' href="http://www.nevrax.org/free/" TITLE="Free Software">Free software</a></td></tr>
+ </TABLE>
+ </TD></TR></TABLE></TD></TR></TABLE>
+ <!------ End Box ------>
+
+ </TD>
+ <TD WIDTH=15><IMG SRC="http://www.nevrax.org/inc/img/pixel.gif" WIDTH="16" HEIGHT="16" BORDER=0 ALT=""></TD>
+ <TD ALIGN=left valign=top><IMG SRC="http://www.nevrax.org/inc/img/pixel.gif" WIDTH="140" HEIGHT="10" BORDER=0 ALT="">
+
+<!-- title -->
+<TABLE background="http://www.nevrax.org/inc/img/redline.gif" CELLSPACING=0 CELLPADDING=0 BORDER=0 width=100%><tr><td>
+<A HREF="http://www.nevrax.org/cvs/"><img src="http://www.nevrax.org/inc/img/t_cvs.gif" ALT="cvs" HEIGHT=20 BORDER=0></A>
+</td><td><IMG SRC="http://www.nevrax.org/inc/img/pixel.gif" WIDTH="1" HEIGHT="1" BORDER=0 ALT="">
+</td></tr></table>
+
+<!-- title -->
+<table width=100%><tr><td align=left><b> <a href="/cvs/cvsweb.cgi/?sortby=date">Nevrax</a> / <a href="/cvs/cvsweb.cgi/code/?sortby=date">code</a> / <a href="/cvs/cvsweb.cgi/code/nelns/?sortby=date">nelns</a> / <a href="/cvs/cvsweb.cgi/code/nelns/admin_service/?sortby=date">admin_service</a> / admin_service.dsp</b></td><td align=right><b></b></td></TR></TABLE>
+
+<!-- block -->
+<TABLE bgcolor="#dddddd" CELLSPACING=0 CELLPADDING=0 BORDER=0 width=100%><tr><td width=1% valign=middle><img width=6 height=14 hspace=2 vspace=2 src="http://www.nevrax.org/inc/img/reddots.gif"></TD>
+ <TD><B>admin_service.dsp</B></TD>
+ <TD ALIGN=RIGHT> </td>
+</tr></table>
+<P>
+<p>Default branch: MAIN<BR>
+<HR size=1 NOSHADE><P><a NAME="rev1.5"></a><a NAME="HEAD"></a><a NAME="MAIN"></a>
+ Revision <A HREF="admin_service.dsp?rev=1.5&amp;content-type=text/x-cvsweb-markup&amp;sortby=date"><b>1.5</b></A> / (<A HREF="/cvs/cvsweb.cgi/~checkout~/code/nelns/admin_service/admin_service.dsp?rev=1.5&amp;content-type=text/plain&amp;sortby=date" target="cvs_checkout" onClick="window.open('/cvs/cvsweb.cgi/~checkout~/code/nelns/admin_service/admin_service.dsp?rev=1.5&amp;content-type=text/plain','cvs_checkout','resizeable,scrollbars');"><b>download</b></A>) - <a href="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.dsp?annotate=1.5&amp;sortby=date">annotate</a> - <A HREF="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.dsp?r1=1.5&amp;sortby=date">[select for diffs]</A>
+, <i>Thu Aug 23 15:43:21 2001 UTC</i> (11 months ago) by <i>lecroart</i>
+<BR>Branch: <b><A HREF="admin_service.dsp?sortby=date&amp;only_with_tag=MAIN">MAIN</A>
+</b>
+<BR>CVS Tags: <b><A HREF="admin_service.dsp?sortby=date&amp;only_with_tag=HEAD">HEAD</A>
+</b><BR>Changes since <b>1.4: +34 -3
+ lines</b><BR>Diff to previous <A HREF="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.dsp.diff?r1=1.4&amp;r2=1.5&amp;sortby=date">1.4</A>
+<PRE>
+ADDED: DebugFast config
+</PRE>
+<HR size=1 NOSHADE><P><a NAME="rev1.4"></a>
+ Revision <A HREF="admin_service.dsp?rev=1.4&amp;content-type=text/x-cvsweb-markup&amp;sortby=date"><b>1.4</b></A> / (<A HREF="/cvs/cvsweb.cgi/~checkout~/code/nelns/admin_service/admin_service.dsp?rev=1.4&amp;content-type=text/plain&amp;sortby=date" target="cvs_checkout" onClick="window.open('/cvs/cvsweb.cgi/~checkout~/code/nelns/admin_service/admin_service.dsp?rev=1.4&amp;content-type=text/plain','cvs_checkout','resizeable,scrollbars');"><b>download</b></A>) - <a href="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.dsp?annotate=1.4&amp;sortby=date">annotate</a> - <A HREF="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.dsp?r1=1.4&amp;sortby=date">[select for diffs]</A>
+, <i>Fri Jun 15 09:58:49 2001 UTC</i> (13 months, 1 week ago) by <i>lecroart</i>
+<BR>Branch: <b><A HREF="admin_service.dsp?sortby=date&amp;only_with_tag=MAIN">MAIN</A>
+</b>
+<BR>Changes since <b>1.3: +9 -6
+ lines</b><BR>Diff to previous <A HREF="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.dsp.diff?r1=1.3&amp;r2=1.4&amp;sortby=date">1.3</A>
+<PRE>
+CHANGED: use win32
+</PRE>
+<HR size=1 NOSHADE><P><a NAME="rev1.3"></a>
+ Revision <A HREF="admin_service.dsp?rev=1.3&amp;content-type=text/x-cvsweb-markup&amp;sortby=date"><b>1.3</b></A> / (<A HREF="/cvs/cvsweb.cgi/~checkout~/code/nelns/admin_service/admin_service.dsp?rev=1.3&amp;content-type=text/plain&amp;sortby=date" target="cvs_checkout" onClick="window.open('/cvs/cvsweb.cgi/~checkout~/code/nelns/admin_service/admin_service.dsp?rev=1.3&amp;content-type=text/plain','cvs_checkout','resizeable,scrollbars');"><b>download</b></A>) - <a href="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.dsp?annotate=1.3&amp;sortby=date">annotate</a> - <A HREF="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.dsp?r1=1.3&amp;sortby=date">[select for diffs]</A>
+, <i>Tue Jun 12 15:44:38 2001 UTC</i> (13 months, 1 week ago) by <i>lecroart</i>
+<BR>Branch: <b><A HREF="admin_service.dsp?sortby=date&amp;only_with_tag=MAIN">MAIN</A>
+</b>
+<BR>Changes since <b>1.2: +6 -3
+ lines</b><BR>Diff to previous <A HREF="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.dsp.diff?r1=1.2&amp;r2=1.3&amp;sortby=date">1.2</A>
+<PRE>
+#CHANGED: remove precompilated header
+</PRE>
+<HR size=1 NOSHADE><P><a NAME="rev1.2"></a>
+ Revision <A HREF="admin_service.dsp?rev=1.2&amp;content-type=text/x-cvsweb-markup&amp;sortby=date"><b>1.2</b></A> / (<A HREF="/cvs/cvsweb.cgi/~checkout~/code/nelns/admin_service/admin_service.dsp?rev=1.2&amp;content-type=text/plain&amp;sortby=date" target="cvs_checkout" onClick="window.open('/cvs/cvsweb.cgi/~checkout~/code/nelns/admin_service/admin_service.dsp?rev=1.2&amp;content-type=text/plain','cvs_checkout','resizeable,scrollbars');"><b>download</b></A>) - <a href="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.dsp?annotate=1.2&amp;sortby=date">annotate</a> - <A HREF="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.dsp?r1=1.2&amp;sortby=date">[select for diffs]</A>
+, <i>Thu Jun 7 16:19:05 2001 UTC</i> (13 months, 2 weeks ago) by <i>lecroart</i>
+<BR>Branch: <b><A HREF="admin_service.dsp?sortby=date&amp;only_with_tag=MAIN">MAIN</A>
+</b>
+<BR>Changes since <b>1.1: +4 -0
+ lines</b><BR>Diff to previous <A HREF="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.dsp.diff?r1=1.1&amp;r2=1.2&amp;sortby=date">1.1</A>
+<PRE>
+ADDED: commands system
+</PRE>
+<HR size=1 NOSHADE><P><a NAME="rev1.1"></a>
+ Revision <A HREF="admin_service.dsp?rev=1.1&amp;content-type=text/x-cvsweb-markup&amp;sortby=date"><b>1.1</b></A> / (<A HREF="/cvs/cvsweb.cgi/~checkout~/code/nelns/admin_service/admin_service.dsp?rev=1.1&amp;content-type=text/plain&amp;sortby=date" target="cvs_checkout" onClick="window.open('/cvs/cvsweb.cgi/~checkout~/code/nelns/admin_service/admin_service.dsp?rev=1.1&amp;content-type=text/plain','cvs_checkout','resizeable,scrollbars');"><b>download</b></A>) - <a href="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.dsp?annotate=1.1&amp;sortby=date">annotate</a> - <A HREF="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.dsp?r1=1.1&amp;sortby=date">[select for diffs]</A>
+, <i>Wed May 2 12:36:39 2001 UTC</i> (14 months, 3 weeks ago) by <i>lecroart</i>
+<BR>Branch: <b><A HREF="admin_service.dsp?sortby=date&amp;only_with_tag=MAIN">MAIN</A>
+</b>
+<BR>Diff<PRE>
+ADD: new version of the network system (in NeL and NeLns)
+</PRE>
+
+<!-- block -->
+<TABLE bgcolor="#dddddd" CELLSPACING=0 CELLPADDING=0 BORDER=0 width=100%><tr><td width=1% valign=middle><img width=6 height=14 hspace=2 vspace=2 src="http://www.nevrax.org/inc/img/reddots.gif"></TD>
+ <TD><B>Request Diffs</B></TD>
+ <TD ALIGN=RIGHT> </td>
+</tr></table>
+<P>
+<P>
+<FORM METHOD="GET" ACTION="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.dsp.diff" NAME="diff_select">
+<INPUT TYPE=HIDDEN NAME="sortby" VALUE="date">
+Diffs between
+<SELECT NAME="r1">
+<OPTION VALUE="text" SELECTED>Use Text Field
+<OPTION VALUE="1:MAIN">MAIN
+<OPTION VALUE="1.5:HEAD">HEAD
+</SELECT>
+<INPUT TYPE="TEXT" SIZE="12" NAME="tr1" VALUE="1.1" onChange='document.diff_select.r1.selectedIndex=0'>
+ and
+<SELECT NAME="r2">
+<OPTION VALUE="text" SELECTED>Use Text Field
+<OPTION VALUE="1:MAIN">MAIN
+<OPTION VALUE="1.5:HEAD">HEAD
+</SELECT>
+<INPUT TYPE="TEXT" SIZE="12" NAME="tr2" VALUE="1.5" onChange='docuement.diff_select.r2.selectedIndex=0'>
+<BR>Type of Diff should be a&nbsp;<SELECT NAME="f">
+<OPTION VALUE=h SELECTED>Colored Diff<OPTION VALUE=H>Long Colored Diff<OPTION VALUE=u>Unidiff<OPTION VALUE=c>Context Diff<OPTION VALUE=s>Side by Side</SELECT><INPUT TYPE=SUBMIT VALUE=" Get Diffs ">
+</FORM>
+
+<!-- block -->
+<TABLE bgcolor="#dddddd" CELLSPACING=0 CELLPADDING=0 BORDER=0 width=100%><tr><td width=1% valign=middle><img width=6 height=14 hspace=2 vspace=2 src="http://www.nevrax.org/inc/img/reddots.gif"></TD>
+ <TD><B>Select branch</B></TD>
+ <TD ALIGN=RIGHT> </td>
+</tr></table>
+<P>
+<P>
+<A name=branch></A>
+<FORM METHOD="GET" ACTION="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.dsp">
+<INPUT TYPE=HIDDEN NAME="sortby" VALUE="date">
+View only Branch:
+<SELECT NAME="only_with_tag" onchange="submit()">
+<OPTION VALUE="">Show all branches
+<OPTION>MAIN
+</SELECT>
+<INPUT TYPE=SUBMIT VALUE=" View Branch ">
+</FORM>
+<A name=logsort></A>
+<FORM METHOD="GET" ACTION="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.dsp">
+<INPUT TYPE=HIDDEN NAME="sortby" VALUE="date">
+Sort log by:
+<SELECT NAME="logsort" onchange="submit()">
+<OPTION VALUE=cvs>Not sorted<OPTION VALUE=date SELECTED>Commit date<OPTION VALUE=rev>Revision</SELECT>
+<INPUT TYPE=SUBMIT VALUE=" Sort ">
+</FORM>
+
+<!-- footer -->
+<BR><FONT Size=+5>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </FONT>
+</TD>
+<TD WIDTH=15><IMG SRC=http://www.nevrax.org/inc/img/pixel.gif WIDTH=15 HEIGHT=15 BORDER=0 ALT=""></TD>
+</TR>
+</TABLE>
+</BODY>
+</HTML></BODY></HTML>
diff --git a/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.dsp?sortby=log b/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.dsp?sortby=log
new file mode 100644
index 00000000..57852a9c
--- /dev/null
+++ b/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.dsp?sortby=log
@@ -0,0 +1,177 @@
+<!doctype html public "-//W3C//DTD HTML 4.0 Transitional//EN" "http://www.w3.org/TR/REC-html40/loose.dtd">
+<HTML>
+<HEAD>
+ <TITLE>nevrax.org : cvs</TITLE>
+ <META name="keywords" content="freesoftware,nel,newt,snowballs,richard stallman,GNU,Multi-User Online World">
+
+ <LINK REL=stylesheet TYPE="text/css" HREF="http://www.nevrax.org/inc/css/nevrax.css">
+</HEAD>
+<BODY MARGINHEIGHT="0" MARGINWIDTH="0">
+
+<!-- uplinks -->
+<TABLE CELLSPACING=0 CELLPADDING=0 BORDER=0>
+ <TR>
+ <TD WIDTH=16><IMG SRC="http://www.nevrax.org/inc/img/pixel.gif" WIDTH="16" HEIGHT="16" BORDER=0 ALT=""></TD>
+ <TD WIDTH=140 BGCOLOR=#dddddd><IMG SRC="http://www.nevrax.org/inc/img/pixel.gif" WIDTH="140" HEIGHT="16" BORDER=0 ALT=""></TD>
+ <TD WIDTH=16><IMG SRC="http://www.nevrax.org/inc/img/pixel.gif" WIDTH="16" HEIGHT="16" BORDER=0 ALT=""></TD>
+ <TD><IMG width=6 height=14 SRC="http://www.nevrax.org/inc/img/reddots.gif" ALT="#" VSPACE=2 HSPACE=2 BORDER=0 ></TD><TD VALIGN=middle>&nbsp;<A CLASS=uplinks HREF=http://www.nevrax.org><b>Home</B></FONT></A>&nbsp;&nbsp;&nbsp;</TD>
+ <TD><IMG width=6 height=14 SRC="http://www.nevrax.org/inc/img/reddots.gif" ALT="#" VSPACE=2 HSPACE=2 BORDER=0 ></TD><TD VALIGN=middle>&nbsp;<A CLASS=uplinks HREF=http://www.nevrax.com><b>nevrax.com</B></FONT></A>&nbsp;&nbsp;&nbsp;</TD>
+ </TR>
+</TABLE>
+
+<!-- banner Nevrax -->
+<TABLE CELLSPACING=0 CELLPADDING=0 BORDER=0 WIDTH=100%>
+ <TR><TD BGCOLOR="#000000" BACKGROUND="http://www.nevrax.org/inc/img/black_banner.jpg"><A HREF="http://www.nevrax.org"><IMG SRC="http://www.nevrax.org/inc/img/nevrax.gif" WIDTH="170" HEIGHT="45" BORDER=0 ALT="Nevrax" ></A></TD></TR>
+</TABLE>
+
+<!-- main table -->
+<TABLE CELLSPACING=0 CELLPADDING=0 BORDER=0 height=100%>
+ <TR>
+ <TD WIDTH=16><IMG SRC="http://www.nevrax.org/inc/img/pixel.gif" WIDTH="16" HEIGHT="10" BORDER=0 ALT=""></TD>
+ <TD WIDTH=140 BGCOLOR=#dddddd VALIGN=TOP ALIGN=middle><IMG SRC="http://www.nevrax.org/inc/img/pixel.gif" WIDTH="140" HEIGHT="10" BORDER=0 ALT="">
+
+ <!------ Begin Box ------>
+ <TABLE BORDER=0 CELLSPACING=0 CELLPADDING=0 BGCOLOR=black><TR><TD><TABLE border=0 cellspacing=2 cellpadding=0 width=120><tr><TD ALIGN=middle bgcolor=black>
+ <FONT COLOR=white FACE="sans-serif"><B>Nevrax.org</B></FONT></TD></TR><tr><td colspan=2 bgcolor=#FFFFFF>
+ <TABLE cellspacing=0 cellpadding=1 border=0>
+ <tr><td ALIGN=middle><a class='linkbox' href="http://www.nevrax.org/news/" TITLE="Rubrique news"><img width=13 height=15 hspace=5 border=0 src=http://www.nevrax.org/inc/img/picto-news.gif ALT=#></A></td><td><a class='linkbox' href="http://www.nevrax.org/news/" TITLE="News">News</a></td></tr>
+ <tr><td ALIGN=middle><a class='linkbox' href="http://www.nevrax.org/mail/" TITLE="Rubrique mail"><img width=15 height=11 hspace=5 border=0 src=http://www.nevrax.org/inc/img/picto-mail.gif ALT=#></A></td><td><a class='linkbox' href="http://www.nevrax.org/mail/" TITLE="Mailing list archive">Mailing-list</a></td></tr>
+ <tr><td ALIGN=middle><a class='linkbox' href="http://www.nevrax.org/docs/" TITLE="Rubrique docs"><img width=14 height=16 hspace=5 border=0 src=http://www.nevrax.org/inc/img/picto-docs.gif ALT=#></A></td><td><a class='linkbox' href="http://www.nevrax.org/docs/" TITLE="Documentation">Documentation</a></td></tr>
+ <tr><td ALIGN=middle><a class='linkbox' href="http://www.nevrax.org/cvs/" TITLE="Rubrique cvs"><img width=13 height=17 hspace=5 border=0 src=http://www.nevrax.org/inc/img/picto-cvs.gif ALT=#></A></td><td><a class='linkbox' href="http://www.nevrax.org/cvs/" TITLE="CVS Web">CVS</a></td></tr>
+ <tr><td ALIGN=middle><a class='linkbox' href="http://www.nevrax.org/bugs/" TITLE="Rubrique bugs"><img width=20 height=16 hspace=5 border=0 src=http://www.nevrax.org/inc/img/picto-bugs.gif ALT=#></A></td><td><a class='linkbox' href="http://www.nevrax.org/bugs/" TITLE="Bugtracking">Bugs</a></td></tr>
+ <tr><td ALIGN=middle><a class='linkbox' href="http://www.nevrax.org/free/" TITLE="Rubrique license"><img width=18 height=12 hspace=5 border=0 src=http://www.nevrax.org/inc/img/picto-free.gif ALT=#></A></td><td><a class='linkbox' href="http://www.nevrax.org/free/" TITLE="Free Software">Free software</a></td></tr>
+ </TABLE>
+ </TD></TR></TABLE></TD></TR></TABLE>
+ <!------ End Box ------>
+
+ </TD>
+ <TD WIDTH=15><IMG SRC="http://www.nevrax.org/inc/img/pixel.gif" WIDTH="16" HEIGHT="16" BORDER=0 ALT=""></TD>
+ <TD ALIGN=left valign=top><IMG SRC="http://www.nevrax.org/inc/img/pixel.gif" WIDTH="140" HEIGHT="10" BORDER=0 ALT="">
+
+<!-- title -->
+<TABLE background="http://www.nevrax.org/inc/img/redline.gif" CELLSPACING=0 CELLPADDING=0 BORDER=0 width=100%><tr><td>
+<A HREF="http://www.nevrax.org/cvs/"><img src="http://www.nevrax.org/inc/img/t_cvs.gif" ALT="cvs" HEIGHT=20 BORDER=0></A>
+</td><td><IMG SRC="http://www.nevrax.org/inc/img/pixel.gif" WIDTH="1" HEIGHT="1" BORDER=0 ALT="">
+</td></tr></table>
+
+<!-- title -->
+<table width=100%><tr><td align=left><b> <a href="/cvs/cvsweb.cgi/?sortby=log">Nevrax</a> / <a href="/cvs/cvsweb.cgi/code/?sortby=log">code</a> / <a href="/cvs/cvsweb.cgi/code/nelns/?sortby=log">nelns</a> / <a href="/cvs/cvsweb.cgi/code/nelns/admin_service/?sortby=log">admin_service</a> / admin_service.dsp</b></td><td align=right><b></b></td></TR></TABLE>
+
+<!-- block -->
+<TABLE bgcolor="#dddddd" CELLSPACING=0 CELLPADDING=0 BORDER=0 width=100%><tr><td width=1% valign=middle><img width=6 height=14 hspace=2 vspace=2 src="http://www.nevrax.org/inc/img/reddots.gif"></TD>
+ <TD><B>admin_service.dsp</B></TD>
+ <TD ALIGN=RIGHT> </td>
+</tr></table>
+<P>
+<p>Default branch: MAIN<BR>
+<HR size=1 NOSHADE><P><a NAME="rev1.5"></a><a NAME="HEAD"></a><a NAME="MAIN"></a>
+ Revision <A HREF="admin_service.dsp?rev=1.5&amp;content-type=text/x-cvsweb-markup&amp;sortby=log"><b>1.5</b></A> / (<A HREF="/cvs/cvsweb.cgi/~checkout~/code/nelns/admin_service/admin_service.dsp?rev=1.5&amp;content-type=text/plain&amp;sortby=log" target="cvs_checkout" onClick="window.open('/cvs/cvsweb.cgi/~checkout~/code/nelns/admin_service/admin_service.dsp?rev=1.5&amp;content-type=text/plain','cvs_checkout','resizeable,scrollbars');"><b>download</b></A>) - <a href="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.dsp?annotate=1.5&amp;sortby=log">annotate</a> - <A HREF="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.dsp?r1=1.5&amp;sortby=log">[select for diffs]</A>
+, <i>Thu Aug 23 15:43:21 2001 UTC</i> (11 months ago) by <i>lecroart</i>
+<BR>Branch: <b><A HREF="admin_service.dsp?sortby=log&amp;only_with_tag=MAIN">MAIN</A>
+</b>
+<BR>CVS Tags: <b><A HREF="admin_service.dsp?sortby=log&amp;only_with_tag=HEAD">HEAD</A>
+</b><BR>Changes since <b>1.4: +34 -3
+ lines</b><BR>Diff to previous <A HREF="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.dsp.diff?r1=1.4&amp;r2=1.5&amp;sortby=log">1.4</A>
+<PRE>
+ADDED: DebugFast config
+</PRE>
+<HR size=1 NOSHADE><P><a NAME="rev1.4"></a>
+ Revision <A HREF="admin_service.dsp?rev=1.4&amp;content-type=text/x-cvsweb-markup&amp;sortby=log"><b>1.4</b></A> / (<A HREF="/cvs/cvsweb.cgi/~checkout~/code/nelns/admin_service/admin_service.dsp?rev=1.4&amp;content-type=text/plain&amp;sortby=log" target="cvs_checkout" onClick="window.open('/cvs/cvsweb.cgi/~checkout~/code/nelns/admin_service/admin_service.dsp?rev=1.4&amp;content-type=text/plain','cvs_checkout','resizeable,scrollbars');"><b>download</b></A>) - <a href="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.dsp?annotate=1.4&amp;sortby=log">annotate</a> - <A HREF="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.dsp?r1=1.4&amp;sortby=log">[select for diffs]</A>
+, <i>Fri Jun 15 09:58:49 2001 UTC</i> (13 months, 1 week ago) by <i>lecroart</i>
+<BR>Branch: <b><A HREF="admin_service.dsp?sortby=log&amp;only_with_tag=MAIN">MAIN</A>
+</b>
+<BR>Changes since <b>1.3: +9 -6
+ lines</b><BR>Diff to previous <A HREF="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.dsp.diff?r1=1.3&amp;r2=1.4&amp;sortby=log">1.3</A>
+<PRE>
+CHANGED: use win32
+</PRE>
+<HR size=1 NOSHADE><P><a NAME="rev1.3"></a>
+ Revision <A HREF="admin_service.dsp?rev=1.3&amp;content-type=text/x-cvsweb-markup&amp;sortby=log"><b>1.3</b></A> / (<A HREF="/cvs/cvsweb.cgi/~checkout~/code/nelns/admin_service/admin_service.dsp?rev=1.3&amp;content-type=text/plain&amp;sortby=log" target="cvs_checkout" onClick="window.open('/cvs/cvsweb.cgi/~checkout~/code/nelns/admin_service/admin_service.dsp?rev=1.3&amp;content-type=text/plain','cvs_checkout','resizeable,scrollbars');"><b>download</b></A>) - <a href="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.dsp?annotate=1.3&amp;sortby=log">annotate</a> - <A HREF="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.dsp?r1=1.3&amp;sortby=log">[select for diffs]</A>
+, <i>Tue Jun 12 15:44:38 2001 UTC</i> (13 months, 1 week ago) by <i>lecroart</i>
+<BR>Branch: <b><A HREF="admin_service.dsp?sortby=log&amp;only_with_tag=MAIN">MAIN</A>
+</b>
+<BR>Changes since <b>1.2: +6 -3
+ lines</b><BR>Diff to previous <A HREF="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.dsp.diff?r1=1.2&amp;r2=1.3&amp;sortby=log">1.2</A>
+<PRE>
+#CHANGED: remove precompilated header
+</PRE>
+<HR size=1 NOSHADE><P><a NAME="rev1.2"></a>
+ Revision <A HREF="admin_service.dsp?rev=1.2&amp;content-type=text/x-cvsweb-markup&amp;sortby=log"><b>1.2</b></A> / (<A HREF="/cvs/cvsweb.cgi/~checkout~/code/nelns/admin_service/admin_service.dsp?rev=1.2&amp;content-type=text/plain&amp;sortby=log" target="cvs_checkout" onClick="window.open('/cvs/cvsweb.cgi/~checkout~/code/nelns/admin_service/admin_service.dsp?rev=1.2&amp;content-type=text/plain','cvs_checkout','resizeable,scrollbars');"><b>download</b></A>) - <a href="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.dsp?annotate=1.2&amp;sortby=log">annotate</a> - <A HREF="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.dsp?r1=1.2&amp;sortby=log">[select for diffs]</A>
+, <i>Thu Jun 7 16:19:05 2001 UTC</i> (13 months, 2 weeks ago) by <i>lecroart</i>
+<BR>Branch: <b><A HREF="admin_service.dsp?sortby=log&amp;only_with_tag=MAIN">MAIN</A>
+</b>
+<BR>Changes since <b>1.1: +4 -0
+ lines</b><BR>Diff to previous <A HREF="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.dsp.diff?r1=1.1&amp;r2=1.2&amp;sortby=log">1.1</A>
+<PRE>
+ADDED: commands system
+</PRE>
+<HR size=1 NOSHADE><P><a NAME="rev1.1"></a>
+ Revision <A HREF="admin_service.dsp?rev=1.1&amp;content-type=text/x-cvsweb-markup&amp;sortby=log"><b>1.1</b></A> / (<A HREF="/cvs/cvsweb.cgi/~checkout~/code/nelns/admin_service/admin_service.dsp?rev=1.1&amp;content-type=text/plain&amp;sortby=log" target="cvs_checkout" onClick="window.open('/cvs/cvsweb.cgi/~checkout~/code/nelns/admin_service/admin_service.dsp?rev=1.1&amp;content-type=text/plain','cvs_checkout','resizeable,scrollbars');"><b>download</b></A>) - <a href="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.dsp?annotate=1.1&amp;sortby=log">annotate</a> - <A HREF="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.dsp?r1=1.1&amp;sortby=log">[select for diffs]</A>
+, <i>Wed May 2 12:36:39 2001 UTC</i> (14 months, 3 weeks ago) by <i>lecroart</i>
+<BR>Branch: <b><A HREF="admin_service.dsp?sortby=log&amp;only_with_tag=MAIN">MAIN</A>
+</b>
+<BR>Diff<PRE>
+ADD: new version of the network system (in NeL and NeLns)
+</PRE>
+
+<!-- block -->
+<TABLE bgcolor="#dddddd" CELLSPACING=0 CELLPADDING=0 BORDER=0 width=100%><tr><td width=1% valign=middle><img width=6 height=14 hspace=2 vspace=2 src="http://www.nevrax.org/inc/img/reddots.gif"></TD>
+ <TD><B>Request Diffs</B></TD>
+ <TD ALIGN=RIGHT> </td>
+</tr></table>
+<P>
+<P>
+<FORM METHOD="GET" ACTION="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.dsp.diff" NAME="diff_select">
+<INPUT TYPE=HIDDEN NAME="sortby" VALUE="log">
+Diffs between
+<SELECT NAME="r1">
+<OPTION VALUE="text" SELECTED>Use Text Field
+<OPTION VALUE="1:MAIN">MAIN
+<OPTION VALUE="1.5:HEAD">HEAD
+</SELECT>
+<INPUT TYPE="TEXT" SIZE="12" NAME="tr1" VALUE="1.1" onChange='document.diff_select.r1.selectedIndex=0'>
+ and
+<SELECT NAME="r2">
+<OPTION VALUE="text" SELECTED>Use Text Field
+<OPTION VALUE="1:MAIN">MAIN
+<OPTION VALUE="1.5:HEAD">HEAD
+</SELECT>
+<INPUT TYPE="TEXT" SIZE="12" NAME="tr2" VALUE="1.5" onChange='docuement.diff_select.r2.selectedIndex=0'>
+<BR>Type of Diff should be a&nbsp;<SELECT NAME="f">
+<OPTION VALUE=h SELECTED>Colored Diff<OPTION VALUE=H>Long Colored Diff<OPTION VALUE=u>Unidiff<OPTION VALUE=c>Context Diff<OPTION VALUE=s>Side by Side</SELECT><INPUT TYPE=SUBMIT VALUE=" Get Diffs ">
+</FORM>
+
+<!-- block -->
+<TABLE bgcolor="#dddddd" CELLSPACING=0 CELLPADDING=0 BORDER=0 width=100%><tr><td width=1% valign=middle><img width=6 height=14 hspace=2 vspace=2 src="http://www.nevrax.org/inc/img/reddots.gif"></TD>
+ <TD><B>Select branch</B></TD>
+ <TD ALIGN=RIGHT> </td>
+</tr></table>
+<P>
+<P>
+<A name=branch></A>
+<FORM METHOD="GET" ACTION="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.dsp">
+<INPUT TYPE=HIDDEN NAME="sortby" VALUE="log">
+View only Branch:
+<SELECT NAME="only_with_tag" onchange="submit()">
+<OPTION VALUE="">Show all branches
+<OPTION>MAIN
+</SELECT>
+<INPUT TYPE=SUBMIT VALUE=" View Branch ">
+</FORM>
+<A name=logsort></A>
+<FORM METHOD="GET" ACTION="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.dsp">
+<INPUT TYPE=HIDDEN NAME="sortby" VALUE="log">
+Sort log by:
+<SELECT NAME="logsort" onchange="submit()">
+<OPTION VALUE=cvs>Not sorted<OPTION VALUE=date SELECTED>Commit date<OPTION VALUE=rev>Revision</SELECT>
+<INPUT TYPE=SUBMIT VALUE=" Sort ">
+</FORM>
+
+<!-- footer -->
+<BR><FONT Size=+5>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </FONT>
+</TD>
+<TD WIDTH=15><IMG SRC=http://www.nevrax.org/inc/img/pixel.gif WIDTH=15 HEIGHT=15 BORDER=0 ALT=""></TD>
+</TR>
+</TABLE>
+</BODY>
+</HTML></BODY></HTML>
diff --git a/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.dsp?sortby=rev b/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.dsp?sortby=rev
new file mode 100644
index 00000000..fb67a76d
--- /dev/null
+++ b/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.dsp?sortby=rev
@@ -0,0 +1,177 @@
+<!doctype html public "-//W3C//DTD HTML 4.0 Transitional//EN" "http://www.w3.org/TR/REC-html40/loose.dtd">
+<HTML>
+<HEAD>
+ <TITLE>nevrax.org : cvs</TITLE>
+ <META name="keywords" content="freesoftware,nel,newt,snowballs,richard stallman,GNU,Multi-User Online World">
+
+ <LINK REL=stylesheet TYPE="text/css" HREF="http://www.nevrax.org/inc/css/nevrax.css">
+</HEAD>
+<BODY MARGINHEIGHT="0" MARGINWIDTH="0">
+
+<!-- uplinks -->
+<TABLE CELLSPACING=0 CELLPADDING=0 BORDER=0>
+ <TR>
+ <TD WIDTH=16><IMG SRC="http://www.nevrax.org/inc/img/pixel.gif" WIDTH="16" HEIGHT="16" BORDER=0 ALT=""></TD>
+ <TD WIDTH=140 BGCOLOR=#dddddd><IMG SRC="http://www.nevrax.org/inc/img/pixel.gif" WIDTH="140" HEIGHT="16" BORDER=0 ALT=""></TD>
+ <TD WIDTH=16><IMG SRC="http://www.nevrax.org/inc/img/pixel.gif" WIDTH="16" HEIGHT="16" BORDER=0 ALT=""></TD>
+ <TD><IMG width=6 height=14 SRC="http://www.nevrax.org/inc/img/reddots.gif" ALT="#" VSPACE=2 HSPACE=2 BORDER=0 ></TD><TD VALIGN=middle>&nbsp;<A CLASS=uplinks HREF=http://www.nevrax.org><b>Home</B></FONT></A>&nbsp;&nbsp;&nbsp;</TD>
+ <TD><IMG width=6 height=14 SRC="http://www.nevrax.org/inc/img/reddots.gif" ALT="#" VSPACE=2 HSPACE=2 BORDER=0 ></TD><TD VALIGN=middle>&nbsp;<A CLASS=uplinks HREF=http://www.nevrax.com><b>nevrax.com</B></FONT></A>&nbsp;&nbsp;&nbsp;</TD>
+ </TR>
+</TABLE>
+
+<!-- banner Nevrax -->
+<TABLE CELLSPACING=0 CELLPADDING=0 BORDER=0 WIDTH=100%>
+ <TR><TD BGCOLOR="#000000" BACKGROUND="http://www.nevrax.org/inc/img/black_banner.jpg"><A HREF="http://www.nevrax.org"><IMG SRC="http://www.nevrax.org/inc/img/nevrax.gif" WIDTH="170" HEIGHT="45" BORDER=0 ALT="Nevrax" ></A></TD></TR>
+</TABLE>
+
+<!-- main table -->
+<TABLE CELLSPACING=0 CELLPADDING=0 BORDER=0 height=100%>
+ <TR>
+ <TD WIDTH=16><IMG SRC="http://www.nevrax.org/inc/img/pixel.gif" WIDTH="16" HEIGHT="10" BORDER=0 ALT=""></TD>
+ <TD WIDTH=140 BGCOLOR=#dddddd VALIGN=TOP ALIGN=middle><IMG SRC="http://www.nevrax.org/inc/img/pixel.gif" WIDTH="140" HEIGHT="10" BORDER=0 ALT="">
+
+ <!------ Begin Box ------>
+ <TABLE BORDER=0 CELLSPACING=0 CELLPADDING=0 BGCOLOR=black><TR><TD><TABLE border=0 cellspacing=2 cellpadding=0 width=120><tr><TD ALIGN=middle bgcolor=black>
+ <FONT COLOR=white FACE="sans-serif"><B>Nevrax.org</B></FONT></TD></TR><tr><td colspan=2 bgcolor=#FFFFFF>
+ <TABLE cellspacing=0 cellpadding=1 border=0>
+ <tr><td ALIGN=middle><a class='linkbox' href="http://www.nevrax.org/news/" TITLE="Rubrique news"><img width=13 height=15 hspace=5 border=0 src=http://www.nevrax.org/inc/img/picto-news.gif ALT=#></A></td><td><a class='linkbox' href="http://www.nevrax.org/news/" TITLE="News">News</a></td></tr>
+ <tr><td ALIGN=middle><a class='linkbox' href="http://www.nevrax.org/mail/" TITLE="Rubrique mail"><img width=15 height=11 hspace=5 border=0 src=http://www.nevrax.org/inc/img/picto-mail.gif ALT=#></A></td><td><a class='linkbox' href="http://www.nevrax.org/mail/" TITLE="Mailing list archive">Mailing-list</a></td></tr>
+ <tr><td ALIGN=middle><a class='linkbox' href="http://www.nevrax.org/docs/" TITLE="Rubrique docs"><img width=14 height=16 hspace=5 border=0 src=http://www.nevrax.org/inc/img/picto-docs.gif ALT=#></A></td><td><a class='linkbox' href="http://www.nevrax.org/docs/" TITLE="Documentation">Documentation</a></td></tr>
+ <tr><td ALIGN=middle><a class='linkbox' href="http://www.nevrax.org/cvs/" TITLE="Rubrique cvs"><img width=13 height=17 hspace=5 border=0 src=http://www.nevrax.org/inc/img/picto-cvs.gif ALT=#></A></td><td><a class='linkbox' href="http://www.nevrax.org/cvs/" TITLE="CVS Web">CVS</a></td></tr>
+ <tr><td ALIGN=middle><a class='linkbox' href="http://www.nevrax.org/bugs/" TITLE="Rubrique bugs"><img width=20 height=16 hspace=5 border=0 src=http://www.nevrax.org/inc/img/picto-bugs.gif ALT=#></A></td><td><a class='linkbox' href="http://www.nevrax.org/bugs/" TITLE="Bugtracking">Bugs</a></td></tr>
+ <tr><td ALIGN=middle><a class='linkbox' href="http://www.nevrax.org/free/" TITLE="Rubrique license"><img width=18 height=12 hspace=5 border=0 src=http://www.nevrax.org/inc/img/picto-free.gif ALT=#></A></td><td><a class='linkbox' href="http://www.nevrax.org/free/" TITLE="Free Software">Free software</a></td></tr>
+ </TABLE>
+ </TD></TR></TABLE></TD></TR></TABLE>
+ <!------ End Box ------>
+
+ </TD>
+ <TD WIDTH=15><IMG SRC="http://www.nevrax.org/inc/img/pixel.gif" WIDTH="16" HEIGHT="16" BORDER=0 ALT=""></TD>
+ <TD ALIGN=left valign=top><IMG SRC="http://www.nevrax.org/inc/img/pixel.gif" WIDTH="140" HEIGHT="10" BORDER=0 ALT="">
+
+<!-- title -->
+<TABLE background="http://www.nevrax.org/inc/img/redline.gif" CELLSPACING=0 CELLPADDING=0 BORDER=0 width=100%><tr><td>
+<A HREF="http://www.nevrax.org/cvs/"><img src="http://www.nevrax.org/inc/img/t_cvs.gif" ALT="cvs" HEIGHT=20 BORDER=0></A>
+</td><td><IMG SRC="http://www.nevrax.org/inc/img/pixel.gif" WIDTH="1" HEIGHT="1" BORDER=0 ALT="">
+</td></tr></table>
+
+<!-- title -->
+<table width=100%><tr><td align=left><b> <a href="/cvs/cvsweb.cgi/?sortby=rev">Nevrax</a> / <a href="/cvs/cvsweb.cgi/code/?sortby=rev">code</a> / <a href="/cvs/cvsweb.cgi/code/nelns/?sortby=rev">nelns</a> / <a href="/cvs/cvsweb.cgi/code/nelns/admin_service/?sortby=rev">admin_service</a> / admin_service.dsp</b></td><td align=right><b></b></td></TR></TABLE>
+
+<!-- block -->
+<TABLE bgcolor="#dddddd" CELLSPACING=0 CELLPADDING=0 BORDER=0 width=100%><tr><td width=1% valign=middle><img width=6 height=14 hspace=2 vspace=2 src="http://www.nevrax.org/inc/img/reddots.gif"></TD>
+ <TD><B>admin_service.dsp</B></TD>
+ <TD ALIGN=RIGHT> </td>
+</tr></table>
+<P>
+<p>Default branch: MAIN<BR>
+<HR size=1 NOSHADE><P><a NAME="rev1.5"></a><a NAME="HEAD"></a><a NAME="MAIN"></a>
+ Revision <A HREF="admin_service.dsp?rev=1.5&amp;content-type=text/x-cvsweb-markup&amp;sortby=rev"><b>1.5</b></A> / (<A HREF="/cvs/cvsweb.cgi/~checkout~/code/nelns/admin_service/admin_service.dsp?rev=1.5&amp;content-type=text/plain&amp;sortby=rev" target="cvs_checkout" onClick="window.open('/cvs/cvsweb.cgi/~checkout~/code/nelns/admin_service/admin_service.dsp?rev=1.5&amp;content-type=text/plain','cvs_checkout','resizeable,scrollbars');"><b>download</b></A>) - <a href="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.dsp?annotate=1.5&amp;sortby=rev">annotate</a> - <A HREF="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.dsp?r1=1.5&amp;sortby=rev">[select for diffs]</A>
+, <i>Thu Aug 23 15:43:21 2001 UTC</i> (11 months ago) by <i>lecroart</i>
+<BR>Branch: <b><A HREF="admin_service.dsp?sortby=rev&amp;only_with_tag=MAIN">MAIN</A>
+</b>
+<BR>CVS Tags: <b><A HREF="admin_service.dsp?sortby=rev&amp;only_with_tag=HEAD">HEAD</A>
+</b><BR>Changes since <b>1.4: +34 -3
+ lines</b><BR>Diff to previous <A HREF="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.dsp.diff?r1=1.4&amp;r2=1.5&amp;sortby=rev">1.4</A>
+<PRE>
+ADDED: DebugFast config
+</PRE>
+<HR size=1 NOSHADE><P><a NAME="rev1.4"></a>
+ Revision <A HREF="admin_service.dsp?rev=1.4&amp;content-type=text/x-cvsweb-markup&amp;sortby=rev"><b>1.4</b></A> / (<A HREF="/cvs/cvsweb.cgi/~checkout~/code/nelns/admin_service/admin_service.dsp?rev=1.4&amp;content-type=text/plain&amp;sortby=rev" target="cvs_checkout" onClick="window.open('/cvs/cvsweb.cgi/~checkout~/code/nelns/admin_service/admin_service.dsp?rev=1.4&amp;content-type=text/plain','cvs_checkout','resizeable,scrollbars');"><b>download</b></A>) - <a href="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.dsp?annotate=1.4&amp;sortby=rev">annotate</a> - <A HREF="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.dsp?r1=1.4&amp;sortby=rev">[select for diffs]</A>
+, <i>Fri Jun 15 09:58:49 2001 UTC</i> (13 months, 1 week ago) by <i>lecroart</i>
+<BR>Branch: <b><A HREF="admin_service.dsp?sortby=rev&amp;only_with_tag=MAIN">MAIN</A>
+</b>
+<BR>Changes since <b>1.3: +9 -6
+ lines</b><BR>Diff to previous <A HREF="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.dsp.diff?r1=1.3&amp;r2=1.4&amp;sortby=rev">1.3</A>
+<PRE>
+CHANGED: use win32
+</PRE>
+<HR size=1 NOSHADE><P><a NAME="rev1.3"></a>
+ Revision <A HREF="admin_service.dsp?rev=1.3&amp;content-type=text/x-cvsweb-markup&amp;sortby=rev"><b>1.3</b></A> / (<A HREF="/cvs/cvsweb.cgi/~checkout~/code/nelns/admin_service/admin_service.dsp?rev=1.3&amp;content-type=text/plain&amp;sortby=rev" target="cvs_checkout" onClick="window.open('/cvs/cvsweb.cgi/~checkout~/code/nelns/admin_service/admin_service.dsp?rev=1.3&amp;content-type=text/plain','cvs_checkout','resizeable,scrollbars');"><b>download</b></A>) - <a href="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.dsp?annotate=1.3&amp;sortby=rev">annotate</a> - <A HREF="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.dsp?r1=1.3&amp;sortby=rev">[select for diffs]</A>
+, <i>Tue Jun 12 15:44:38 2001 UTC</i> (13 months, 1 week ago) by <i>lecroart</i>
+<BR>Branch: <b><A HREF="admin_service.dsp?sortby=rev&amp;only_with_tag=MAIN">MAIN</A>
+</b>
+<BR>Changes since <b>1.2: +6 -3
+ lines</b><BR>Diff to previous <A HREF="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.dsp.diff?r1=1.2&amp;r2=1.3&amp;sortby=rev">1.2</A>
+<PRE>
+#CHANGED: remove precompilated header
+</PRE>
+<HR size=1 NOSHADE><P><a NAME="rev1.2"></a>
+ Revision <A HREF="admin_service.dsp?rev=1.2&amp;content-type=text/x-cvsweb-markup&amp;sortby=rev"><b>1.2</b></A> / (<A HREF="/cvs/cvsweb.cgi/~checkout~/code/nelns/admin_service/admin_service.dsp?rev=1.2&amp;content-type=text/plain&amp;sortby=rev" target="cvs_checkout" onClick="window.open('/cvs/cvsweb.cgi/~checkout~/code/nelns/admin_service/admin_service.dsp?rev=1.2&amp;content-type=text/plain','cvs_checkout','resizeable,scrollbars');"><b>download</b></A>) - <a href="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.dsp?annotate=1.2&amp;sortby=rev">annotate</a> - <A HREF="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.dsp?r1=1.2&amp;sortby=rev">[select for diffs]</A>
+, <i>Thu Jun 7 16:19:05 2001 UTC</i> (13 months, 2 weeks ago) by <i>lecroart</i>
+<BR>Branch: <b><A HREF="admin_service.dsp?sortby=rev&amp;only_with_tag=MAIN">MAIN</A>
+</b>
+<BR>Changes since <b>1.1: +4 -0
+ lines</b><BR>Diff to previous <A HREF="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.dsp.diff?r1=1.1&amp;r2=1.2&amp;sortby=rev">1.1</A>
+<PRE>
+ADDED: commands system
+</PRE>
+<HR size=1 NOSHADE><P><a NAME="rev1.1"></a>
+ Revision <A HREF="admin_service.dsp?rev=1.1&amp;content-type=text/x-cvsweb-markup&amp;sortby=rev"><b>1.1</b></A> / (<A HREF="/cvs/cvsweb.cgi/~checkout~/code/nelns/admin_service/admin_service.dsp?rev=1.1&amp;content-type=text/plain&amp;sortby=rev" target="cvs_checkout" onClick="window.open('/cvs/cvsweb.cgi/~checkout~/code/nelns/admin_service/admin_service.dsp?rev=1.1&amp;content-type=text/plain','cvs_checkout','resizeable,scrollbars');"><b>download</b></A>) - <a href="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.dsp?annotate=1.1&amp;sortby=rev">annotate</a> - <A HREF="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.dsp?r1=1.1&amp;sortby=rev">[select for diffs]</A>
+, <i>Wed May 2 12:36:39 2001 UTC</i> (14 months, 3 weeks ago) by <i>lecroart</i>
+<BR>Branch: <b><A HREF="admin_service.dsp?sortby=rev&amp;only_with_tag=MAIN">MAIN</A>
+</b>
+<BR>Diff<PRE>
+ADD: new version of the network system (in NeL and NeLns)
+</PRE>
+
+<!-- block -->
+<TABLE bgcolor="#dddddd" CELLSPACING=0 CELLPADDING=0 BORDER=0 width=100%><tr><td width=1% valign=middle><img width=6 height=14 hspace=2 vspace=2 src="http://www.nevrax.org/inc/img/reddots.gif"></TD>
+ <TD><B>Request Diffs</B></TD>
+ <TD ALIGN=RIGHT> </td>
+</tr></table>
+<P>
+<P>
+<FORM METHOD="GET" ACTION="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.dsp.diff" NAME="diff_select">
+<INPUT TYPE=HIDDEN NAME="sortby" VALUE="rev">
+Diffs between
+<SELECT NAME="r1">
+<OPTION VALUE="text" SELECTED>Use Text Field
+<OPTION VALUE="1:MAIN">MAIN
+<OPTION VALUE="1.5:HEAD">HEAD
+</SELECT>
+<INPUT TYPE="TEXT" SIZE="12" NAME="tr1" VALUE="1.1" onChange='document.diff_select.r1.selectedIndex=0'>
+ and
+<SELECT NAME="r2">
+<OPTION VALUE="text" SELECTED>Use Text Field
+<OPTION VALUE="1:MAIN">MAIN
+<OPTION VALUE="1.5:HEAD">HEAD
+</SELECT>
+<INPUT TYPE="TEXT" SIZE="12" NAME="tr2" VALUE="1.5" onChange='docuement.diff_select.r2.selectedIndex=0'>
+<BR>Type of Diff should be a&nbsp;<SELECT NAME="f">
+<OPTION VALUE=h SELECTED>Colored Diff<OPTION VALUE=H>Long Colored Diff<OPTION VALUE=u>Unidiff<OPTION VALUE=c>Context Diff<OPTION VALUE=s>Side by Side</SELECT><INPUT TYPE=SUBMIT VALUE=" Get Diffs ">
+</FORM>
+
+<!-- block -->
+<TABLE bgcolor="#dddddd" CELLSPACING=0 CELLPADDING=0 BORDER=0 width=100%><tr><td width=1% valign=middle><img width=6 height=14 hspace=2 vspace=2 src="http://www.nevrax.org/inc/img/reddots.gif"></TD>
+ <TD><B>Select branch</B></TD>
+ <TD ALIGN=RIGHT> </td>
+</tr></table>
+<P>
+<P>
+<A name=branch></A>
+<FORM METHOD="GET" ACTION="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.dsp">
+<INPUT TYPE=HIDDEN NAME="sortby" VALUE="rev">
+View only Branch:
+<SELECT NAME="only_with_tag" onchange="submit()">
+<OPTION VALUE="">Show all branches
+<OPTION>MAIN
+</SELECT>
+<INPUT TYPE=SUBMIT VALUE=" View Branch ">
+</FORM>
+<A name=logsort></A>
+<FORM METHOD="GET" ACTION="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.dsp">
+<INPUT TYPE=HIDDEN NAME="sortby" VALUE="rev">
+Sort log by:
+<SELECT NAME="logsort" onchange="submit()">
+<OPTION VALUE=cvs>Not sorted<OPTION VALUE=date SELECTED>Commit date<OPTION VALUE=rev>Revision</SELECT>
+<INPUT TYPE=SUBMIT VALUE=" Sort ">
+</FORM>
+
+<!-- footer -->
+<BR><FONT Size=+5>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </FONT>
+</TD>
+<TD WIDTH=15><IMG SRC=http://www.nevrax.org/inc/img/pixel.gif WIDTH=15 HEIGHT=15 BORDER=0 ALT=""></TD>
+</TR>
+</TABLE>
+</BODY>
+</HTML></BODY></HTML>
diff --git a/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.vcproj b/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.vcproj
new file mode 100644
index 00000000..cdc79f05
--- /dev/null
+++ b/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.vcproj
@@ -0,0 +1,134 @@
+<!doctype html public "-//W3C//DTD HTML 4.0 Transitional//EN" "http://www.w3.org/TR/REC-html40/loose.dtd">
+<HTML>
+<HEAD>
+ <TITLE>nevrax.org : cvs</TITLE>
+ <META name="keywords" content="freesoftware,nel,newt,snowballs,richard stallman,GNU,Multi-User Online World">
+
+ <LINK REL=stylesheet TYPE="text/css" HREF="http://www.nevrax.org/inc/css/nevrax.css">
+</HEAD>
+<BODY MARGINHEIGHT="0" MARGINWIDTH="0">
+
+<!-- uplinks -->
+<TABLE CELLSPACING=0 CELLPADDING=0 BORDER=0>
+ <TR>
+ <TD WIDTH=16><IMG SRC="http://www.nevrax.org/inc/img/pixel.gif" WIDTH="16" HEIGHT="16" BORDER=0 ALT=""></TD>
+ <TD WIDTH=140 BGCOLOR=#dddddd><IMG SRC="http://www.nevrax.org/inc/img/pixel.gif" WIDTH="140" HEIGHT="16" BORDER=0 ALT=""></TD>
+ <TD WIDTH=16><IMG SRC="http://www.nevrax.org/inc/img/pixel.gif" WIDTH="16" HEIGHT="16" BORDER=0 ALT=""></TD>
+ <TD><IMG width=6 height=14 SRC="http://www.nevrax.org/inc/img/reddots.gif" ALT="#" VSPACE=2 HSPACE=2 BORDER=0 ></TD><TD VALIGN=middle>&nbsp;<A CLASS=uplinks HREF=http://www.nevrax.org><b>Home</B></FONT></A>&nbsp;&nbsp;&nbsp;</TD>
+ <TD><IMG width=6 height=14 SRC="http://www.nevrax.org/inc/img/reddots.gif" ALT="#" VSPACE=2 HSPACE=2 BORDER=0 ></TD><TD VALIGN=middle>&nbsp;<A CLASS=uplinks HREF=http://www.nevrax.com><b>nevrax.com</B></FONT></A>&nbsp;&nbsp;&nbsp;</TD>
+ </TR>
+</TABLE>
+
+<!-- banner Nevrax -->
+<TABLE CELLSPACING=0 CELLPADDING=0 BORDER=0 WIDTH=100%>
+ <TR><TD BGCOLOR="#000000" BACKGROUND="http://www.nevrax.org/inc/img/black_banner.jpg"><A HREF="http://www.nevrax.org"><IMG SRC="http://www.nevrax.org/inc/img/nevrax.gif" WIDTH="170" HEIGHT="45" BORDER=0 ALT="Nevrax" ></A></TD></TR>
+</TABLE>
+
+<!-- main table -->
+<TABLE CELLSPACING=0 CELLPADDING=0 BORDER=0 height=100%>
+ <TR>
+ <TD WIDTH=16><IMG SRC="http://www.nevrax.org/inc/img/pixel.gif" WIDTH="16" HEIGHT="10" BORDER=0 ALT=""></TD>
+ <TD WIDTH=140 BGCOLOR=#dddddd VALIGN=TOP ALIGN=middle><IMG SRC="http://www.nevrax.org/inc/img/pixel.gif" WIDTH="140" HEIGHT="10" BORDER=0 ALT="">
+
+ <!------ Begin Box ------>
+ <TABLE BORDER=0 CELLSPACING=0 CELLPADDING=0 BGCOLOR=black><TR><TD><TABLE border=0 cellspacing=2 cellpadding=0 width=120><tr><TD ALIGN=middle bgcolor=black>
+ <FONT COLOR=white FACE="sans-serif"><B>Nevrax.org</B></FONT></TD></TR><tr><td colspan=2 bgcolor=#FFFFFF>
+ <TABLE cellspacing=0 cellpadding=1 border=0>
+ <tr><td ALIGN=middle><a class='linkbox' href="http://www.nevrax.org/news/" TITLE="Rubrique news"><img width=13 height=15 hspace=5 border=0 src=http://www.nevrax.org/inc/img/picto-news.gif ALT=#></A></td><td><a class='linkbox' href="http://www.nevrax.org/news/" TITLE="News">News</a></td></tr>
+ <tr><td ALIGN=middle><a class='linkbox' href="http://www.nevrax.org/mail/" TITLE="Rubrique mail"><img width=15 height=11 hspace=5 border=0 src=http://www.nevrax.org/inc/img/picto-mail.gif ALT=#></A></td><td><a class='linkbox' href="http://www.nevrax.org/mail/" TITLE="Mailing list archive">Mailing-list</a></td></tr>
+ <tr><td ALIGN=middle><a class='linkbox' href="http://www.nevrax.org/docs/" TITLE="Rubrique docs"><img width=14 height=16 hspace=5 border=0 src=http://www.nevrax.org/inc/img/picto-docs.gif ALT=#></A></td><td><a class='linkbox' href="http://www.nevrax.org/docs/" TITLE="Documentation">Documentation</a></td></tr>
+ <tr><td ALIGN=middle><a class='linkbox' href="http://www.nevrax.org/cvs/" TITLE="Rubrique cvs"><img width=13 height=17 hspace=5 border=0 src=http://www.nevrax.org/inc/img/picto-cvs.gif ALT=#></A></td><td><a class='linkbox' href="http://www.nevrax.org/cvs/" TITLE="CVS Web">CVS</a></td></tr>
+ <tr><td ALIGN=middle><a class='linkbox' href="http://www.nevrax.org/bugs/" TITLE="Rubrique bugs"><img width=20 height=16 hspace=5 border=0 src=http://www.nevrax.org/inc/img/picto-bugs.gif ALT=#></A></td><td><a class='linkbox' href="http://www.nevrax.org/bugs/" TITLE="Bugtracking">Bugs</a></td></tr>
+ <tr><td ALIGN=middle><a class='linkbox' href="http://www.nevrax.org/free/" TITLE="Rubrique license"><img width=18 height=12 hspace=5 border=0 src=http://www.nevrax.org/inc/img/picto-free.gif ALT=#></A></td><td><a class='linkbox' href="http://www.nevrax.org/free/" TITLE="Free Software">Free software</a></td></tr>
+ </TABLE>
+ </TD></TR></TABLE></TD></TR></TABLE>
+ <!------ End Box ------>
+
+ </TD>
+ <TD WIDTH=15><IMG SRC="http://www.nevrax.org/inc/img/pixel.gif" WIDTH="16" HEIGHT="16" BORDER=0 ALT=""></TD>
+ <TD ALIGN=left valign=top><IMG SRC="http://www.nevrax.org/inc/img/pixel.gif" WIDTH="140" HEIGHT="10" BORDER=0 ALT="">
+
+<!-- title -->
+<TABLE background="http://www.nevrax.org/inc/img/redline.gif" CELLSPACING=0 CELLPADDING=0 BORDER=0 width=100%><tr><td>
+<A HREF="http://www.nevrax.org/cvs/"><img src="http://www.nevrax.org/inc/img/t_cvs.gif" ALT="cvs" HEIGHT=20 BORDER=0></A>
+</td><td><IMG SRC="http://www.nevrax.org/inc/img/pixel.gif" WIDTH="1" HEIGHT="1" BORDER=0 ALT="">
+</td></tr></table>
+
+<!-- title -->
+<table width=100%><tr><td align=left><b> <a href="/cvs/cvsweb.cgi/">Nevrax</a> / <a href="/cvs/cvsweb.cgi/code/">code</a> / <a href="/cvs/cvsweb.cgi/code/nelns/">nelns</a> / <a href="/cvs/cvsweb.cgi/code/nelns/admin_service/">admin_service</a> / admin_service.vcproj</b></td><td align=right><b></b></td></TR></TABLE>
+
+<!-- block -->
+<TABLE bgcolor="#dddddd" CELLSPACING=0 CELLPADDING=0 BORDER=0 width=100%><tr><td width=1% valign=middle><img width=6 height=14 hspace=2 vspace=2 src="http://www.nevrax.org/inc/img/reddots.gif"></TD>
+ <TD><B>admin_service.vcproj</B></TD>
+ <TD ALIGN=RIGHT> </td>
+</tr></table>
+<P>
+<p>Default branch: MAIN<BR>
+<HR size=1 NOSHADE><P><a NAME="rev1.1"></a><a NAME="HEAD"></a><a NAME="MAIN"></a>
+ Revision <A HREF="admin_service.vcproj?rev=1.1&amp;content-type=text/x-cvsweb-markup"><b>1.1</b></A> / (<A HREF="/cvs/cvsweb.cgi/~checkout~/code/nelns/admin_service/admin_service.vcproj?rev=1.1&amp;content-type=text/plain" target="cvs_checkout" onClick="window.open('/cvs/cvsweb.cgi/~checkout~/code/nelns/admin_service/admin_service.vcproj?rev=1.1&amp;content-type=text/plain','cvs_checkout','resizeable,scrollbars');"><b>download</b></A>) - <a href="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.vcproj?annotate=1.1">annotate</a> - <A HREF="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.vcproj?r1=1.1">[select for diffs]</A>
+, <i>Tue Apr 16 12:51:31 2002 UTC</i> (2 months ago) by <i>lecroart</i>
+<BR>Branch: <b><A HREF="admin_service.vcproj?only_with_tag=MAIN">MAIN</A>
+</b>
+<BR>CVS Tags: <b><A HREF="admin_service.vcproj?only_with_tag=HEAD">HEAD</A>
+</b><BR>Diff<PRE>
+ADDED: visual .net project
+</PRE>
+
+<!-- block -->
+<TABLE bgcolor="#dddddd" CELLSPACING=0 CELLPADDING=0 BORDER=0 width=100%><tr><td width=1% valign=middle><img width=6 height=14 hspace=2 vspace=2 src="http://www.nevrax.org/inc/img/reddots.gif"></TD>
+ <TD><B>Request Diffs</B></TD>
+ <TD ALIGN=RIGHT> </td>
+</tr></table>
+<P>
+<P>
+<FORM METHOD="GET" ACTION="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.vcproj.diff" NAME="diff_select">
+Diffs between
+<SELECT NAME="r1">
+<OPTION VALUE="text" SELECTED>Use Text Field
+<OPTION VALUE="1:MAIN">MAIN
+<OPTION VALUE="1.1:HEAD">HEAD
+</SELECT>
+<INPUT TYPE="TEXT" SIZE="12" NAME="tr1" VALUE="1.1" onChange='document.diff_select.r1.selectedIndex=0'>
+ and
+<SELECT NAME="r2">
+<OPTION VALUE="text" SELECTED>Use Text Field
+<OPTION VALUE="1:MAIN">MAIN
+<OPTION VALUE="1.1:HEAD">HEAD
+</SELECT>
+<INPUT TYPE="TEXT" SIZE="12" NAME="tr2" VALUE="1.1" onChange='docuement.diff_select.r2.selectedIndex=0'>
+<BR>Type of Diff should be a&nbsp;<SELECT NAME="f">
+<OPTION VALUE=h SELECTED>Colored Diff<OPTION VALUE=H>Long Colored Diff<OPTION VALUE=u>Unidiff<OPTION VALUE=c>Context Diff<OPTION VALUE=s>Side by Side</SELECT><INPUT TYPE=SUBMIT VALUE=" Get Diffs ">
+</FORM>
+
+<!-- block -->
+<TABLE bgcolor="#dddddd" CELLSPACING=0 CELLPADDING=0 BORDER=0 width=100%><tr><td width=1% valign=middle><img width=6 height=14 hspace=2 vspace=2 src="http://www.nevrax.org/inc/img/reddots.gif"></TD>
+ <TD><B>Select branch</B></TD>
+ <TD ALIGN=RIGHT> </td>
+</tr></table>
+<P>
+<P>
+<A name=branch></A>
+<FORM METHOD="GET" ACTION="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.vcproj">
+View only Branch:
+<SELECT NAME="only_with_tag" onchange="submit()">
+<OPTION VALUE="">Show all branches
+<OPTION>MAIN
+</SELECT>
+<INPUT TYPE=SUBMIT VALUE=" View Branch ">
+</FORM>
+<A name=logsort></A>
+<FORM METHOD="GET" ACTION="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.vcproj">
+Sort log by:
+<SELECT NAME="logsort" onchange="submit()">
+<OPTION VALUE=cvs>Not sorted<OPTION VALUE=date SELECTED>Commit date<OPTION VALUE=rev>Revision</SELECT>
+<INPUT TYPE=SUBMIT VALUE=" Sort ">
+</FORM>
+
+<!-- footer -->
+<BR><FONT Size=+5>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </FONT>
+</TD>
+<TD WIDTH=15><IMG SRC=http://www.nevrax.org/inc/img/pixel.gif WIDTH=15 HEIGHT=15 BORDER=0 ALT=""></TD>
+</TR>
+</TABLE>
+</BODY>
+</HTML></BODY></HTML>
diff --git a/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.vcproj?rev=1.1&content-type=text/x-cvsweb-markup&sortby=date/index.html b/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.vcproj?rev=1.1&content-type=text/x-cvsweb-markup&sortby=date/index.html
new file mode 100644
index 00000000..af2606e2
--- /dev/null
+++ b/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.vcproj?rev=1.1&content-type=text/x-cvsweb-markup&sortby=date/index.html
@@ -0,0 +1,269 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"><HTML>
+<HEAD><style> A { color:black }</style>
+<!-- hennerik CVSweb $Revision: 1.93 $ -->
+<TITLE>code/nelns/admin_service/admin_service.vcproj - view - 1.1</TITLE></HEAD>
+<BODY BGCOLOR="#eeeeee">
+<table width="100%" border=0 cellspacing=0 cellpadding=1 bgcolor="#aaaaaa"><tr valign=bottom><td><a href="admin_service.vcproj?sortby=date"><IMG SRC="http://www.nevrax.org/inc/img/picto-up.gif" ALT="[BACK]" BORDER="0" WIDTH="14" HEIGHT="13"></a> <b>Return to <A HREF="admin_service.vcproj?sortby=date">admin_service.vcproj</A>
+ CVS log</b> <IMG SRC="http://www.nevrax.org/inc/img/picto-news.gif" ALT="[TXT]" BORDER="0" WIDTH="13" HEIGHT="15"></td><td align=right><IMG SRC="http://www.nevrax.org/inc/img/picto-dir.gif" ALT="[DIR]" BORDER="0" WIDTH="15" HEIGHT="13"> <b>Up to <a href="/cvs/cvsweb.cgi/?sortby=date">Nevrax</a> / <a href="/cvs/cvsweb.cgi/code/?sortby=date">code</a> / <a href="/cvs/cvsweb.cgi/code/nelns/?sortby=date">nelns</a> / <a href="/cvs/cvsweb.cgi/code/nelns/admin_service/?sortby=date">admin_service</a></b></td></tr></table><HR noshade><table width="100%"><tr><td bgcolor="#ffffff">File: <a href="/cvs/cvsweb.cgi/?sortby=date">Nevrax</a> / <a href="/cvs/cvsweb.cgi/code/?sortby=date">code</a> / <a href="/cvs/cvsweb.cgi/code/nelns/?sortby=date">nelns</a> / <a href="/cvs/cvsweb.cgi/code/nelns/admin_service/?sortby=date">admin_service</a> / <a href="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.vcproj?sortby=date">admin_service.vcproj</a>&nbsp;(<A HREF="/cvs/cvsweb.cgi/~checkout~/code/nelns/admin_service/admin_service.vcproj?rev=1.1&amp;sortby=date" target="cvs_checkout" onClick="window.open('/cvs/cvsweb.cgi/~checkout~/code/nelns/admin_service/admin_service.vcproj?rev=1.1','cvs_checkout','resizeable,scrollbars');"><b>download</b></A>)<BR>
+Revision <B>1.1</B>, <i>Tue Apr 16 12:51:31 2002 UTC</i> (3 months, 1 week ago) by <i>lecroart</i>
+<BR>Branch: <b>MAIN</b>
+<BR>CVS Tags: <b>HEAD</b><PRE>
+ADDED: visual .net project
+</PRE>
+</td></tr></table><HR noshade><PRE>&lt;?xml version=&quot;1.0&quot; encoding = &quot;Windows-1252&quot;?&gt;
+&lt;VisualStudioProject
+ &nbsp; &nbsp; &nbsp; &nbsp;ProjectType=&quot;Visual C++&quot;
+ &nbsp; &nbsp; &nbsp; &nbsp;Version=&quot;7.00&quot;
+ &nbsp; &nbsp; &nbsp; &nbsp;Name=&quot;admin_service&quot;
+ &nbsp; &nbsp; &nbsp; &nbsp;SccProjectName=&quot;&quot;
+ &nbsp; &nbsp; &nbsp; &nbsp;SccLocalPath=&quot;&quot;&gt;
+ &nbsp; &nbsp; &nbsp; &nbsp;&lt;Platforms&gt;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&lt;Platform
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;Name=&quot;Win32&quot;/&gt;
+ &nbsp; &nbsp; &nbsp; &nbsp;&lt;/Platforms&gt;
+ &nbsp; &nbsp; &nbsp; &nbsp;&lt;Configurations&gt;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&lt;Configuration
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;Name=&quot;DebugFast|Win32&quot;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;OutputDirectory=&quot;$(ConfigurationName)7\&quot;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;IntermediateDirectory=&quot;$(ConfigurationName)7\&quot;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;ConfigurationType=&quot;1&quot;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;UseOfMFC=&quot;0&quot;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;ATLMinimizesCRunTimeLibraryUsage=&quot;FALSE&quot;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;CharacterSet=&quot;2&quot;&gt;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&lt;Tool
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;Name=&quot;VCCLCompilerTool&quot;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;Optimization=&quot;0&quot;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;InlineFunctionExpansion=&quot;1&quot;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;PreprocessorDefinitions=&quot;_WINDOWS,_DEBUG,WIN32&quot;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;StringPooling=&quot;TRUE&quot;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;MinimalRebuild=&quot;TRUE&quot;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;BasicRuntimeChecks=&quot;3&quot;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;SmallerTypeCheck=&quot;TRUE&quot;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;RuntimeLibrary=&quot;3&quot;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;RuntimeTypeInfo=&quot;TRUE&quot;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;UsePrecompiledHeader=&quot;2&quot;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;PrecompiledHeaderFile=&quot;$(IntDir)$(TargetName).pch&quot;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;AssemblerListingLocation=&quot;$(IntDir)&quot;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;ObjectFile=&quot;$(IntDir)&quot;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;ProgramDataBaseFileName=&quot;$(IntDir)&quot;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;BrowseInformation=&quot;0&quot;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;BrowseInformationFile=&quot;$(IntDir)&quot;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;WarningLevel=&quot;3&quot;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;SuppressStartupBanner=&quot;TRUE&quot;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;DebugInformationFormat=&quot;3&quot;/&gt;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&lt;Tool
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;Name=&quot;VCCustomBuildTool&quot;/&gt;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&lt;Tool
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;Name=&quot;VCLinkerTool&quot;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;AdditionalOptions=&quot;/MACHINE:I386&quot;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;AdditionalDependencies=&quot;odbc32.lib odbccp32.lib&quot;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;OutputFile=&quot;$(OutDir)$(InputName).exe&quot;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;LinkIncremental=&quot;2&quot;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;SuppressStartupBanner=&quot;TRUE&quot;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;IgnoreDefaultLibraryNames=&quot;libcmtd.lib,libcd.lib&quot;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;GenerateDebugInformation=&quot;TRUE&quot;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;ProgramDatabaseFile=&quot;$(IntDir)$(TargetName).pdb&quot;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;SubSystem=&quot;2&quot;/&gt;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&lt;Tool
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;Name=&quot;VCMIDLTool&quot;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;TypeLibraryName=&quot;$(IntDir)$(TargetName).tlb&quot;/&gt;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&lt;Tool
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;Name=&quot;VCPostBuildEventTool&quot;/&gt;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&lt;Tool
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;Name=&quot;VCPreBuildEventTool&quot;/&gt;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&lt;Tool
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;Name=&quot;VCPreLinkEventTool&quot;/&gt;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&lt;Tool
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;Name=&quot;VCResourceCompilerTool&quot;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;PreprocessorDefinitions=&quot;_DEBUG&quot;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;Culture=&quot;1036&quot;/&gt;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&lt;Tool
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;Name=&quot;VCWebServiceProxyGeneratorTool&quot;/&gt;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&lt;Tool
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;Name=&quot;VCWebDeploymentTool&quot;/&gt;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&lt;/Configuration&gt;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&lt;Configuration
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;Name=&quot;Debug|Win32&quot;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;OutputDirectory=&quot;$(ConfigurationName)7\&quot;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;IntermediateDirectory=&quot;$(ConfigurationName)7\&quot;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;ConfigurationType=&quot;1&quot;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;UseOfMFC=&quot;0&quot;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;ATLMinimizesCRunTimeLibraryUsage=&quot;FALSE&quot;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;CharacterSet=&quot;2&quot;&gt;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&lt;Tool
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;Name=&quot;VCCLCompilerTool&quot;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;Optimization=&quot;0&quot;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;PreprocessorDefinitions=&quot;_DEBUG,__STL_DEBUG,WIN32,_WINDOWS&quot;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;StringPooling=&quot;TRUE&quot;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;MinimalRebuild=&quot;TRUE&quot;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;BasicRuntimeChecks=&quot;3&quot;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;SmallerTypeCheck=&quot;TRUE&quot;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;RuntimeLibrary=&quot;3&quot;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;RuntimeTypeInfo=&quot;TRUE&quot;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;UsePrecompiledHeader=&quot;2&quot;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;PrecompiledHeaderFile=&quot;$(IntDir)$(TargetName).pch&quot;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;AssemblerListingLocation=&quot;$(IntDir)&quot;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;ObjectFile=&quot;$(IntDir)&quot;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;ProgramDataBaseFileName=&quot;$(IntDir)&quot;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;BrowseInformation=&quot;0&quot;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;BrowseInformationFile=&quot;$(IntDir)&quot;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;WarningLevel=&quot;3&quot;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;SuppressStartupBanner=&quot;TRUE&quot;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;DebugInformationFormat=&quot;3&quot;/&gt;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&lt;Tool
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;Name=&quot;VCCustomBuildTool&quot;/&gt;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&lt;Tool
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;Name=&quot;VCLinkerTool&quot;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;AdditionalOptions=&quot;/MACHINE:I386&quot;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;AdditionalDependencies=&quot;odbc32.lib odbccp32.lib&quot;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;OutputFile=&quot;$(OutDir)$(InputName).exe&quot;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;LinkIncremental=&quot;2&quot;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;SuppressStartupBanner=&quot;TRUE&quot;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;IgnoreDefaultLibraryNames=&quot;libcmtd.lib,libcd.lib&quot;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;GenerateDebugInformation=&quot;TRUE&quot;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;ProgramDatabaseFile=&quot;$(IntDir)$(TargetName).pdb&quot;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;SubSystem=&quot;2&quot;/&gt;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&lt;Tool
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;Name=&quot;VCMIDLTool&quot;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;TypeLibraryName=&quot;$(IntDir)$(TargetName).tlb&quot;/&gt;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&lt;Tool
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;Name=&quot;VCPostBuildEventTool&quot;/&gt;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&lt;Tool
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;Name=&quot;VCPreBuildEventTool&quot;/&gt;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&lt;Tool
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;Name=&quot;VCPreLinkEventTool&quot;/&gt;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&lt;Tool
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;Name=&quot;VCResourceCompilerTool&quot;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;PreprocessorDefinitions=&quot;_DEBUG&quot;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;Culture=&quot;1036&quot;/&gt;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&lt;Tool
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;Name=&quot;VCWebServiceProxyGeneratorTool&quot;/&gt;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&lt;Tool
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;Name=&quot;VCWebDeploymentTool&quot;/&gt;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&lt;/Configuration&gt;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&lt;Configuration
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;Name=&quot;Release|Win32&quot;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;OutputDirectory=&quot;$(ConfigurationName)7\&quot;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;IntermediateDirectory=&quot;$(ConfigurationName)7\&quot;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;ConfigurationType=&quot;1&quot;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;UseOfMFC=&quot;0&quot;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;ATLMinimizesCRunTimeLibraryUsage=&quot;FALSE&quot;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;CharacterSet=&quot;2&quot;&gt;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&lt;Tool
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;Name=&quot;VCCLCompilerTool&quot;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;InlineFunctionExpansion=&quot;1&quot;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;PreprocessorDefinitions=&quot;NDEBUG,WIN32,_WINDOWS&quot;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;StringPooling=&quot;TRUE&quot;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;MinimalRebuild=&quot;TRUE&quot;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;SmallerTypeCheck=&quot;FALSE&quot;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;RuntimeLibrary=&quot;2&quot;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;EnableFunctionLevelLinking=&quot;TRUE&quot;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;RuntimeTypeInfo=&quot;TRUE&quot;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;UsePrecompiledHeader=&quot;2&quot;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;PrecompiledHeaderFile=&quot;$(IntDir)$(TargetName).pch&quot;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;AssemblerListingLocation=&quot;$(IntDir)&quot;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;ObjectFile=&quot;$(IntDir)&quot;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;ProgramDataBaseFileName=&quot;$(IntDir)&quot;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;BrowseInformation=&quot;0&quot;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;WarningLevel=&quot;3&quot;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;SuppressStartupBanner=&quot;TRUE&quot;/&gt;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&lt;Tool
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;Name=&quot;VCCustomBuildTool&quot;/&gt;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&lt;Tool
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;Name=&quot;VCLinkerTool&quot;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;AdditionalOptions=&quot;/MACHINE:I386&quot;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;AdditionalDependencies=&quot;odbc32.lib odbccp32.lib&quot;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;OutputFile=&quot;$(OutDir)$(InputName).exe&quot;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;LinkIncremental=&quot;2&quot;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;SuppressStartupBanner=&quot;TRUE&quot;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;ProgramDatabaseFile=&quot;$(IntDir)$(TargetName).pdb&quot;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;SubSystem=&quot;2&quot;/&gt;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&lt;Tool
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;Name=&quot;VCMIDLTool&quot;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;TypeLibraryName=&quot;$(IntDir)$(TargetName).tlb&quot;/&gt;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&lt;Tool
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;Name=&quot;VCPostBuildEventTool&quot;/&gt;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&lt;Tool
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;Name=&quot;VCPreBuildEventTool&quot;/&gt;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&lt;Tool
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;Name=&quot;VCPreLinkEventTool&quot;/&gt;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&lt;Tool
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;Name=&quot;VCResourceCompilerTool&quot;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;PreprocessorDefinitions=&quot;NDEBUG&quot;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;Culture=&quot;1036&quot;/&gt;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&lt;Tool
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;Name=&quot;VCWebServiceProxyGeneratorTool&quot;/&gt;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&lt;Tool
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;Name=&quot;VCWebDeploymentTool&quot;/&gt;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&lt;/Configuration&gt;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&lt;Configuration
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;Name=&quot;ReleaseDebug|Win32&quot;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;OutputDirectory=&quot;$(ConfigurationName)7\&quot;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;IntermediateDirectory=&quot;$(ConfigurationName)7\&quot;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;ConfigurationType=&quot;1&quot;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;UseOfMFC=&quot;0&quot;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;ATLMinimizesCRunTimeLibraryUsage=&quot;FALSE&quot;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;CharacterSet=&quot;2&quot;&gt;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&lt;Tool
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;Name=&quot;VCCLCompilerTool&quot;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;InlineFunctionExpansion=&quot;1&quot;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;PreprocessorDefinitions=&quot;NDEBUG,WIN32,_WINDOWS&quot;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;StringPooling=&quot;TRUE&quot;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;MinimalRebuild=&quot;TRUE&quot;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;BasicRuntimeChecks=&quot;3&quot;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;SmallerTypeCheck=&quot;TRUE&quot;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;RuntimeLibrary=&quot;2&quot;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;EnableFunctionLevelLinking=&quot;TRUE&quot;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;RuntimeTypeInfo=&quot;TRUE&quot;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;UsePrecompiledHeader=&quot;2&quot;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;PrecompiledHeaderFile=&quot;$(IntDir)$(TargetName).pch&quot;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;AssemblerListingLocation=&quot;$(IntDir)&quot;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;ObjectFile=&quot;$(IntDir)&quot;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;ProgramDataBaseFileName=&quot;$(IntDir)&quot;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;BrowseInformation=&quot;0&quot;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;WarningLevel=&quot;3&quot;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;SuppressStartupBanner=&quot;TRUE&quot;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;DebugInformationFormat=&quot;3&quot;/&gt;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&lt;Tool
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;Name=&quot;VCCustomBuildTool&quot;/&gt;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&lt;Tool
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;Name=&quot;VCLinkerTool&quot;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;AdditionalOptions=&quot;/MACHINE:I386&quot;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;AdditionalDependencies=&quot;odbc32.lib odbccp32.lib&quot;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;OutputFile=&quot;$(OutDir)$(InputName).exe&quot;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;LinkIncremental=&quot;2&quot;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;SuppressStartupBanner=&quot;TRUE&quot;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;GenerateDebugInformation=&quot;TRUE&quot;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;ProgramDatabaseFile=&quot;$(IntDir)$(TargetName).pdb&quot;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;SubSystem=&quot;2&quot;/&gt;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&lt;Tool
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;Name=&quot;VCMIDLTool&quot;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;TypeLibraryName=&quot;$(IntDir)$(TargetName).tlb&quot;/&gt;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&lt;Tool
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;Name=&quot;VCPostBuildEventTool&quot;/&gt;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&lt;Tool
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;Name=&quot;VCPreBuildEventTool&quot;/&gt;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&lt;Tool
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;Name=&quot;VCPreLinkEventTool&quot;/&gt;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&lt;Tool
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;Name=&quot;VCResourceCompilerTool&quot;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;PreprocessorDefinitions=&quot;NDEBUG&quot;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;Culture=&quot;1036&quot;/&gt;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&lt;Tool
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;Name=&quot;VCWebServiceProxyGeneratorTool&quot;/&gt;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&lt;Tool
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;Name=&quot;VCWebDeploymentTool&quot;/&gt;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&lt;/Configuration&gt;
+ &nbsp; &nbsp; &nbsp; &nbsp;&lt;/Configurations&gt;
+ &nbsp; &nbsp; &nbsp; &nbsp;&lt;Files&gt;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&lt;File
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;RelativePath=&quot;.\admin_service.cfg&quot;&gt;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&lt;/File&gt;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&lt;File
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;RelativePath=&quot;.\admin_service.cpp&quot;&gt;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&lt;/File&gt;
+ &nbsp; &nbsp; &nbsp; &nbsp;&lt;/Files&gt;
+ &nbsp; &nbsp; &nbsp; &nbsp;&lt;Globals&gt;
+ &nbsp; &nbsp; &nbsp; &nbsp;&lt;/Globals&gt;
+&lt;/VisualStudioProject&gt;
+</PRE> \ No newline at end of file
diff --git a/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.vcproj?rev=1.1&content-type=text/x-cvsweb-markup/index.html b/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.vcproj?rev=1.1&content-type=text/x-cvsweb-markup/index.html
new file mode 100644
index 00000000..e3868fbe
--- /dev/null
+++ b/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.vcproj?rev=1.1&content-type=text/x-cvsweb-markup/index.html
@@ -0,0 +1,269 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"><HTML>
+<HEAD><style> A { color:black }</style>
+<!-- hennerik CVSweb $Revision: 1.93 $ -->
+<TITLE>code/nelns/admin_service/admin_service.vcproj - view - 1.1</TITLE></HEAD>
+<BODY BGCOLOR="#eeeeee">
+<table width="100%" border=0 cellspacing=0 cellpadding=1 bgcolor="#aaaaaa"><tr valign=bottom><td><a href="admin_service.vcproj"><IMG SRC="http://www.nevrax.org/inc/img/picto-up.gif" ALT="[BACK]" BORDER="0" WIDTH="14" HEIGHT="13"></a> <b>Return to <A HREF="admin_service.vcproj">admin_service.vcproj</A>
+ CVS log</b> <IMG SRC="http://www.nevrax.org/inc/img/picto-news.gif" ALT="[TXT]" BORDER="0" WIDTH="13" HEIGHT="15"></td><td align=right><IMG SRC="http://www.nevrax.org/inc/img/picto-dir.gif" ALT="[DIR]" BORDER="0" WIDTH="15" HEIGHT="13"> <b>Up to <a href="/cvs/cvsweb.cgi/">Nevrax</a> / <a href="/cvs/cvsweb.cgi/code/">code</a> / <a href="/cvs/cvsweb.cgi/code/nelns/">nelns</a> / <a href="/cvs/cvsweb.cgi/code/nelns/admin_service/">admin_service</a></b></td></tr></table><HR noshade><table width="100%"><tr><td bgcolor="#ffffff">File: <a href="/cvs/cvsweb.cgi/">Nevrax</a> / <a href="/cvs/cvsweb.cgi/code/">code</a> / <a href="/cvs/cvsweb.cgi/code/nelns/">nelns</a> / <a href="/cvs/cvsweb.cgi/code/nelns/admin_service/">admin_service</a> / <a href="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.vcproj">admin_service.vcproj</a>&nbsp;(<A HREF="/cvs/cvsweb.cgi/~checkout~/code/nelns/admin_service/admin_service.vcproj?rev=1.1" target="cvs_checkout" onClick="window.open('/cvs/cvsweb.cgi/~checkout~/code/nelns/admin_service/admin_service.vcproj?rev=1.1','cvs_checkout','resizeable,scrollbars');"><b>download</b></A>)<BR>
+Revision <B>1.1</B>, <i>Tue Apr 16 12:51:31 2002 UTC</i> (2 months ago) by <i>lecroart</i>
+<BR>Branch: <b>MAIN</b>
+<BR>CVS Tags: <b>HEAD</b><PRE>
+ADDED: visual .net project
+</PRE>
+</td></tr></table><HR noshade><PRE>&lt;?xml version=&quot;1.0&quot; encoding = &quot;Windows-1252&quot;?&gt;
+&lt;VisualStudioProject
+ &nbsp; &nbsp; &nbsp; &nbsp;ProjectType=&quot;Visual C++&quot;
+ &nbsp; &nbsp; &nbsp; &nbsp;Version=&quot;7.00&quot;
+ &nbsp; &nbsp; &nbsp; &nbsp;Name=&quot;admin_service&quot;
+ &nbsp; &nbsp; &nbsp; &nbsp;SccProjectName=&quot;&quot;
+ &nbsp; &nbsp; &nbsp; &nbsp;SccLocalPath=&quot;&quot;&gt;
+ &nbsp; &nbsp; &nbsp; &nbsp;&lt;Platforms&gt;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&lt;Platform
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;Name=&quot;Win32&quot;/&gt;
+ &nbsp; &nbsp; &nbsp; &nbsp;&lt;/Platforms&gt;
+ &nbsp; &nbsp; &nbsp; &nbsp;&lt;Configurations&gt;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&lt;Configuration
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;Name=&quot;DebugFast|Win32&quot;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;OutputDirectory=&quot;$(ConfigurationName)7\&quot;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;IntermediateDirectory=&quot;$(ConfigurationName)7\&quot;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;ConfigurationType=&quot;1&quot;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;UseOfMFC=&quot;0&quot;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;ATLMinimizesCRunTimeLibraryUsage=&quot;FALSE&quot;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;CharacterSet=&quot;2&quot;&gt;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&lt;Tool
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;Name=&quot;VCCLCompilerTool&quot;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;Optimization=&quot;0&quot;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;InlineFunctionExpansion=&quot;1&quot;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;PreprocessorDefinitions=&quot;_WINDOWS,_DEBUG,WIN32&quot;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;StringPooling=&quot;TRUE&quot;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;MinimalRebuild=&quot;TRUE&quot;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;BasicRuntimeChecks=&quot;3&quot;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;SmallerTypeCheck=&quot;TRUE&quot;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;RuntimeLibrary=&quot;3&quot;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;RuntimeTypeInfo=&quot;TRUE&quot;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;UsePrecompiledHeader=&quot;2&quot;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;PrecompiledHeaderFile=&quot;$(IntDir)$(TargetName).pch&quot;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;AssemblerListingLocation=&quot;$(IntDir)&quot;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;ObjectFile=&quot;$(IntDir)&quot;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;ProgramDataBaseFileName=&quot;$(IntDir)&quot;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;BrowseInformation=&quot;0&quot;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;BrowseInformationFile=&quot;$(IntDir)&quot;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;WarningLevel=&quot;3&quot;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;SuppressStartupBanner=&quot;TRUE&quot;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;DebugInformationFormat=&quot;3&quot;/&gt;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&lt;Tool
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;Name=&quot;VCCustomBuildTool&quot;/&gt;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&lt;Tool
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;Name=&quot;VCLinkerTool&quot;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;AdditionalOptions=&quot;/MACHINE:I386&quot;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;AdditionalDependencies=&quot;odbc32.lib odbccp32.lib&quot;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;OutputFile=&quot;$(OutDir)$(InputName).exe&quot;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;LinkIncremental=&quot;2&quot;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;SuppressStartupBanner=&quot;TRUE&quot;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;IgnoreDefaultLibraryNames=&quot;libcmtd.lib,libcd.lib&quot;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;GenerateDebugInformation=&quot;TRUE&quot;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;ProgramDatabaseFile=&quot;$(IntDir)$(TargetName).pdb&quot;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;SubSystem=&quot;2&quot;/&gt;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&lt;Tool
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;Name=&quot;VCMIDLTool&quot;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;TypeLibraryName=&quot;$(IntDir)$(TargetName).tlb&quot;/&gt;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&lt;Tool
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;Name=&quot;VCPostBuildEventTool&quot;/&gt;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&lt;Tool
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;Name=&quot;VCPreBuildEventTool&quot;/&gt;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&lt;Tool
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;Name=&quot;VCPreLinkEventTool&quot;/&gt;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&lt;Tool
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;Name=&quot;VCResourceCompilerTool&quot;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;PreprocessorDefinitions=&quot;_DEBUG&quot;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;Culture=&quot;1036&quot;/&gt;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&lt;Tool
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;Name=&quot;VCWebServiceProxyGeneratorTool&quot;/&gt;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&lt;Tool
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;Name=&quot;VCWebDeploymentTool&quot;/&gt;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&lt;/Configuration&gt;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&lt;Configuration
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;Name=&quot;Debug|Win32&quot;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;OutputDirectory=&quot;$(ConfigurationName)7\&quot;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;IntermediateDirectory=&quot;$(ConfigurationName)7\&quot;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;ConfigurationType=&quot;1&quot;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;UseOfMFC=&quot;0&quot;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;ATLMinimizesCRunTimeLibraryUsage=&quot;FALSE&quot;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;CharacterSet=&quot;2&quot;&gt;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&lt;Tool
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;Name=&quot;VCCLCompilerTool&quot;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;Optimization=&quot;0&quot;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;PreprocessorDefinitions=&quot;_DEBUG,__STL_DEBUG,WIN32,_WINDOWS&quot;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;StringPooling=&quot;TRUE&quot;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;MinimalRebuild=&quot;TRUE&quot;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;BasicRuntimeChecks=&quot;3&quot;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;SmallerTypeCheck=&quot;TRUE&quot;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;RuntimeLibrary=&quot;3&quot;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;RuntimeTypeInfo=&quot;TRUE&quot;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;UsePrecompiledHeader=&quot;2&quot;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;PrecompiledHeaderFile=&quot;$(IntDir)$(TargetName).pch&quot;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;AssemblerListingLocation=&quot;$(IntDir)&quot;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;ObjectFile=&quot;$(IntDir)&quot;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;ProgramDataBaseFileName=&quot;$(IntDir)&quot;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;BrowseInformation=&quot;0&quot;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;BrowseInformationFile=&quot;$(IntDir)&quot;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;WarningLevel=&quot;3&quot;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;SuppressStartupBanner=&quot;TRUE&quot;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;DebugInformationFormat=&quot;3&quot;/&gt;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&lt;Tool
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;Name=&quot;VCCustomBuildTool&quot;/&gt;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&lt;Tool
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;Name=&quot;VCLinkerTool&quot;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;AdditionalOptions=&quot;/MACHINE:I386&quot;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;AdditionalDependencies=&quot;odbc32.lib odbccp32.lib&quot;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;OutputFile=&quot;$(OutDir)$(InputName).exe&quot;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;LinkIncremental=&quot;2&quot;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;SuppressStartupBanner=&quot;TRUE&quot;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;IgnoreDefaultLibraryNames=&quot;libcmtd.lib,libcd.lib&quot;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;GenerateDebugInformation=&quot;TRUE&quot;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;ProgramDatabaseFile=&quot;$(IntDir)$(TargetName).pdb&quot;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;SubSystem=&quot;2&quot;/&gt;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&lt;Tool
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;Name=&quot;VCMIDLTool&quot;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;TypeLibraryName=&quot;$(IntDir)$(TargetName).tlb&quot;/&gt;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&lt;Tool
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;Name=&quot;VCPostBuildEventTool&quot;/&gt;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&lt;Tool
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;Name=&quot;VCPreBuildEventTool&quot;/&gt;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&lt;Tool
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;Name=&quot;VCPreLinkEventTool&quot;/&gt;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&lt;Tool
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;Name=&quot;VCResourceCompilerTool&quot;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;PreprocessorDefinitions=&quot;_DEBUG&quot;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;Culture=&quot;1036&quot;/&gt;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&lt;Tool
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;Name=&quot;VCWebServiceProxyGeneratorTool&quot;/&gt;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&lt;Tool
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;Name=&quot;VCWebDeploymentTool&quot;/&gt;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&lt;/Configuration&gt;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&lt;Configuration
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;Name=&quot;Release|Win32&quot;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;OutputDirectory=&quot;$(ConfigurationName)7\&quot;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;IntermediateDirectory=&quot;$(ConfigurationName)7\&quot;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;ConfigurationType=&quot;1&quot;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;UseOfMFC=&quot;0&quot;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;ATLMinimizesCRunTimeLibraryUsage=&quot;FALSE&quot;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;CharacterSet=&quot;2&quot;&gt;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&lt;Tool
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;Name=&quot;VCCLCompilerTool&quot;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;InlineFunctionExpansion=&quot;1&quot;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;PreprocessorDefinitions=&quot;NDEBUG,WIN32,_WINDOWS&quot;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;StringPooling=&quot;TRUE&quot;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;MinimalRebuild=&quot;TRUE&quot;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;SmallerTypeCheck=&quot;FALSE&quot;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;RuntimeLibrary=&quot;2&quot;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;EnableFunctionLevelLinking=&quot;TRUE&quot;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;RuntimeTypeInfo=&quot;TRUE&quot;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;UsePrecompiledHeader=&quot;2&quot;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;PrecompiledHeaderFile=&quot;$(IntDir)$(TargetName).pch&quot;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;AssemblerListingLocation=&quot;$(IntDir)&quot;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;ObjectFile=&quot;$(IntDir)&quot;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;ProgramDataBaseFileName=&quot;$(IntDir)&quot;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;BrowseInformation=&quot;0&quot;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;WarningLevel=&quot;3&quot;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;SuppressStartupBanner=&quot;TRUE&quot;/&gt;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&lt;Tool
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;Name=&quot;VCCustomBuildTool&quot;/&gt;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&lt;Tool
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;Name=&quot;VCLinkerTool&quot;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;AdditionalOptions=&quot;/MACHINE:I386&quot;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;AdditionalDependencies=&quot;odbc32.lib odbccp32.lib&quot;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;OutputFile=&quot;$(OutDir)$(InputName).exe&quot;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;LinkIncremental=&quot;2&quot;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;SuppressStartupBanner=&quot;TRUE&quot;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;ProgramDatabaseFile=&quot;$(IntDir)$(TargetName).pdb&quot;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;SubSystem=&quot;2&quot;/&gt;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&lt;Tool
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;Name=&quot;VCMIDLTool&quot;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;TypeLibraryName=&quot;$(IntDir)$(TargetName).tlb&quot;/&gt;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&lt;Tool
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;Name=&quot;VCPostBuildEventTool&quot;/&gt;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&lt;Tool
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;Name=&quot;VCPreBuildEventTool&quot;/&gt;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&lt;Tool
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;Name=&quot;VCPreLinkEventTool&quot;/&gt;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&lt;Tool
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;Name=&quot;VCResourceCompilerTool&quot;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;PreprocessorDefinitions=&quot;NDEBUG&quot;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;Culture=&quot;1036&quot;/&gt;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&lt;Tool
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;Name=&quot;VCWebServiceProxyGeneratorTool&quot;/&gt;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&lt;Tool
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;Name=&quot;VCWebDeploymentTool&quot;/&gt;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&lt;/Configuration&gt;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&lt;Configuration
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;Name=&quot;ReleaseDebug|Win32&quot;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;OutputDirectory=&quot;$(ConfigurationName)7\&quot;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;IntermediateDirectory=&quot;$(ConfigurationName)7\&quot;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;ConfigurationType=&quot;1&quot;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;UseOfMFC=&quot;0&quot;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;ATLMinimizesCRunTimeLibraryUsage=&quot;FALSE&quot;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;CharacterSet=&quot;2&quot;&gt;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&lt;Tool
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;Name=&quot;VCCLCompilerTool&quot;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;InlineFunctionExpansion=&quot;1&quot;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;PreprocessorDefinitions=&quot;NDEBUG,WIN32,_WINDOWS&quot;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;StringPooling=&quot;TRUE&quot;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;MinimalRebuild=&quot;TRUE&quot;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;BasicRuntimeChecks=&quot;3&quot;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;SmallerTypeCheck=&quot;TRUE&quot;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;RuntimeLibrary=&quot;2&quot;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;EnableFunctionLevelLinking=&quot;TRUE&quot;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;RuntimeTypeInfo=&quot;TRUE&quot;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;UsePrecompiledHeader=&quot;2&quot;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;PrecompiledHeaderFile=&quot;$(IntDir)$(TargetName).pch&quot;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;AssemblerListingLocation=&quot;$(IntDir)&quot;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;ObjectFile=&quot;$(IntDir)&quot;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;ProgramDataBaseFileName=&quot;$(IntDir)&quot;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;BrowseInformation=&quot;0&quot;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;WarningLevel=&quot;3&quot;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;SuppressStartupBanner=&quot;TRUE&quot;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;DebugInformationFormat=&quot;3&quot;/&gt;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&lt;Tool
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;Name=&quot;VCCustomBuildTool&quot;/&gt;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&lt;Tool
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;Name=&quot;VCLinkerTool&quot;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;AdditionalOptions=&quot;/MACHINE:I386&quot;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;AdditionalDependencies=&quot;odbc32.lib odbccp32.lib&quot;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;OutputFile=&quot;$(OutDir)$(InputName).exe&quot;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;LinkIncremental=&quot;2&quot;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;SuppressStartupBanner=&quot;TRUE&quot;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;GenerateDebugInformation=&quot;TRUE&quot;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;ProgramDatabaseFile=&quot;$(IntDir)$(TargetName).pdb&quot;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;SubSystem=&quot;2&quot;/&gt;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&lt;Tool
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;Name=&quot;VCMIDLTool&quot;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;TypeLibraryName=&quot;$(IntDir)$(TargetName).tlb&quot;/&gt;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&lt;Tool
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;Name=&quot;VCPostBuildEventTool&quot;/&gt;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&lt;Tool
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;Name=&quot;VCPreBuildEventTool&quot;/&gt;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&lt;Tool
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;Name=&quot;VCPreLinkEventTool&quot;/&gt;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&lt;Tool
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;Name=&quot;VCResourceCompilerTool&quot;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;PreprocessorDefinitions=&quot;NDEBUG&quot;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;Culture=&quot;1036&quot;/&gt;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&lt;Tool
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;Name=&quot;VCWebServiceProxyGeneratorTool&quot;/&gt;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&lt;Tool
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;Name=&quot;VCWebDeploymentTool&quot;/&gt;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&lt;/Configuration&gt;
+ &nbsp; &nbsp; &nbsp; &nbsp;&lt;/Configurations&gt;
+ &nbsp; &nbsp; &nbsp; &nbsp;&lt;Files&gt;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&lt;File
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;RelativePath=&quot;.\admin_service.cfg&quot;&gt;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&lt;/File&gt;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&lt;File
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;RelativePath=&quot;.\admin_service.cpp&quot;&gt;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&lt;/File&gt;
+ &nbsp; &nbsp; &nbsp; &nbsp;&lt;/Files&gt;
+ &nbsp; &nbsp; &nbsp; &nbsp;&lt;Globals&gt;
+ &nbsp; &nbsp; &nbsp; &nbsp;&lt;/Globals&gt;
+&lt;/VisualStudioProject&gt;
+</PRE> \ No newline at end of file
diff --git a/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.vcproj?sortby=author b/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.vcproj?sortby=author
new file mode 100644
index 00000000..1fe523cd
--- /dev/null
+++ b/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.vcproj?sortby=author
@@ -0,0 +1,137 @@
+<!doctype html public "-//W3C//DTD HTML 4.0 Transitional//EN" "http://www.w3.org/TR/REC-html40/loose.dtd">
+<HTML>
+<HEAD>
+ <TITLE>nevrax.org : cvs</TITLE>
+ <META name="keywords" content="freesoftware,nel,newt,snowballs,richard stallman,GNU,Multi-User Online World">
+
+ <LINK REL=stylesheet TYPE="text/css" HREF="http://www.nevrax.org/inc/css/nevrax.css">
+</HEAD>
+<BODY MARGINHEIGHT="0" MARGINWIDTH="0">
+
+<!-- uplinks -->
+<TABLE CELLSPACING=0 CELLPADDING=0 BORDER=0>
+ <TR>
+ <TD WIDTH=16><IMG SRC="http://www.nevrax.org/inc/img/pixel.gif" WIDTH="16" HEIGHT="16" BORDER=0 ALT=""></TD>
+ <TD WIDTH=140 BGCOLOR=#dddddd><IMG SRC="http://www.nevrax.org/inc/img/pixel.gif" WIDTH="140" HEIGHT="16" BORDER=0 ALT=""></TD>
+ <TD WIDTH=16><IMG SRC="http://www.nevrax.org/inc/img/pixel.gif" WIDTH="16" HEIGHT="16" BORDER=0 ALT=""></TD>
+ <TD><IMG width=6 height=14 SRC="http://www.nevrax.org/inc/img/reddots.gif" ALT="#" VSPACE=2 HSPACE=2 BORDER=0 ></TD><TD VALIGN=middle>&nbsp;<A CLASS=uplinks HREF=http://www.nevrax.org><b>Home</B></FONT></A>&nbsp;&nbsp;&nbsp;</TD>
+ <TD><IMG width=6 height=14 SRC="http://www.nevrax.org/inc/img/reddots.gif" ALT="#" VSPACE=2 HSPACE=2 BORDER=0 ></TD><TD VALIGN=middle>&nbsp;<A CLASS=uplinks HREF=http://www.nevrax.com><b>nevrax.com</B></FONT></A>&nbsp;&nbsp;&nbsp;</TD>
+ </TR>
+</TABLE>
+
+<!-- banner Nevrax -->
+<TABLE CELLSPACING=0 CELLPADDING=0 BORDER=0 WIDTH=100%>
+ <TR><TD BGCOLOR="#000000" BACKGROUND="http://www.nevrax.org/inc/img/black_banner.jpg"><A HREF="http://www.nevrax.org"><IMG SRC="http://www.nevrax.org/inc/img/nevrax.gif" WIDTH="170" HEIGHT="45" BORDER=0 ALT="Nevrax" ></A></TD></TR>
+</TABLE>
+
+<!-- main table -->
+<TABLE CELLSPACING=0 CELLPADDING=0 BORDER=0 height=100%>
+ <TR>
+ <TD WIDTH=16><IMG SRC="http://www.nevrax.org/inc/img/pixel.gif" WIDTH="16" HEIGHT="10" BORDER=0 ALT=""></TD>
+ <TD WIDTH=140 BGCOLOR=#dddddd VALIGN=TOP ALIGN=middle><IMG SRC="http://www.nevrax.org/inc/img/pixel.gif" WIDTH="140" HEIGHT="10" BORDER=0 ALT="">
+
+ <!------ Begin Box ------>
+ <TABLE BORDER=0 CELLSPACING=0 CELLPADDING=0 BGCOLOR=black><TR><TD><TABLE border=0 cellspacing=2 cellpadding=0 width=120><tr><TD ALIGN=middle bgcolor=black>
+ <FONT COLOR=white FACE="sans-serif"><B>Nevrax.org</B></FONT></TD></TR><tr><td colspan=2 bgcolor=#FFFFFF>
+ <TABLE cellspacing=0 cellpadding=1 border=0>
+ <tr><td ALIGN=middle><a class='linkbox' href="http://www.nevrax.org/news/" TITLE="Rubrique news"><img width=13 height=15 hspace=5 border=0 src=http://www.nevrax.org/inc/img/picto-news.gif ALT=#></A></td><td><a class='linkbox' href="http://www.nevrax.org/news/" TITLE="News">News</a></td></tr>
+ <tr><td ALIGN=middle><a class='linkbox' href="http://www.nevrax.org/mail/" TITLE="Rubrique mail"><img width=15 height=11 hspace=5 border=0 src=http://www.nevrax.org/inc/img/picto-mail.gif ALT=#></A></td><td><a class='linkbox' href="http://www.nevrax.org/mail/" TITLE="Mailing list archive">Mailing-list</a></td></tr>
+ <tr><td ALIGN=middle><a class='linkbox' href="http://www.nevrax.org/docs/" TITLE="Rubrique docs"><img width=14 height=16 hspace=5 border=0 src=http://www.nevrax.org/inc/img/picto-docs.gif ALT=#></A></td><td><a class='linkbox' href="http://www.nevrax.org/docs/" TITLE="Documentation">Documentation</a></td></tr>
+ <tr><td ALIGN=middle><a class='linkbox' href="http://www.nevrax.org/cvs/" TITLE="Rubrique cvs"><img width=13 height=17 hspace=5 border=0 src=http://www.nevrax.org/inc/img/picto-cvs.gif ALT=#></A></td><td><a class='linkbox' href="http://www.nevrax.org/cvs/" TITLE="CVS Web">CVS</a></td></tr>
+ <tr><td ALIGN=middle><a class='linkbox' href="http://www.nevrax.org/bugs/" TITLE="Rubrique bugs"><img width=20 height=16 hspace=5 border=0 src=http://www.nevrax.org/inc/img/picto-bugs.gif ALT=#></A></td><td><a class='linkbox' href="http://www.nevrax.org/bugs/" TITLE="Bugtracking">Bugs</a></td></tr>
+ <tr><td ALIGN=middle><a class='linkbox' href="http://www.nevrax.org/free/" TITLE="Rubrique license"><img width=18 height=12 hspace=5 border=0 src=http://www.nevrax.org/inc/img/picto-free.gif ALT=#></A></td><td><a class='linkbox' href="http://www.nevrax.org/free/" TITLE="Free Software">Free software</a></td></tr>
+ </TABLE>
+ </TD></TR></TABLE></TD></TR></TABLE>
+ <!------ End Box ------>
+
+ </TD>
+ <TD WIDTH=15><IMG SRC="http://www.nevrax.org/inc/img/pixel.gif" WIDTH="16" HEIGHT="16" BORDER=0 ALT=""></TD>
+ <TD ALIGN=left valign=top><IMG SRC="http://www.nevrax.org/inc/img/pixel.gif" WIDTH="140" HEIGHT="10" BORDER=0 ALT="">
+
+<!-- title -->
+<TABLE background="http://www.nevrax.org/inc/img/redline.gif" CELLSPACING=0 CELLPADDING=0 BORDER=0 width=100%><tr><td>
+<A HREF="http://www.nevrax.org/cvs/"><img src="http://www.nevrax.org/inc/img/t_cvs.gif" ALT="cvs" HEIGHT=20 BORDER=0></A>
+</td><td><IMG SRC="http://www.nevrax.org/inc/img/pixel.gif" WIDTH="1" HEIGHT="1" BORDER=0 ALT="">
+</td></tr></table>
+
+<!-- title -->
+<table width=100%><tr><td align=left><b> <a href="/cvs/cvsweb.cgi/?sortby=author">Nevrax</a> / <a href="/cvs/cvsweb.cgi/code/?sortby=author">code</a> / <a href="/cvs/cvsweb.cgi/code/nelns/?sortby=author">nelns</a> / <a href="/cvs/cvsweb.cgi/code/nelns/admin_service/?sortby=author">admin_service</a> / admin_service.vcproj</b></td><td align=right><b></b></td></TR></TABLE>
+
+<!-- block -->
+<TABLE bgcolor="#dddddd" CELLSPACING=0 CELLPADDING=0 BORDER=0 width=100%><tr><td width=1% valign=middle><img width=6 height=14 hspace=2 vspace=2 src="http://www.nevrax.org/inc/img/reddots.gif"></TD>
+ <TD><B>admin_service.vcproj</B></TD>
+ <TD ALIGN=RIGHT> </td>
+</tr></table>
+<P>
+<p>Default branch: MAIN<BR>
+<HR size=1 NOSHADE><P><a NAME="rev1.1"></a><a NAME="HEAD"></a><a NAME="MAIN"></a>
+ Revision <A HREF="admin_service.vcproj?rev=1.1&amp;content-type=text/x-cvsweb-markup&amp;sortby=author"><b>1.1</b></A> / (<A HREF="/cvs/cvsweb.cgi/~checkout~/code/nelns/admin_service/admin_service.vcproj?rev=1.1&amp;content-type=text/plain&amp;sortby=author" target="cvs_checkout" onClick="window.open('/cvs/cvsweb.cgi/~checkout~/code/nelns/admin_service/admin_service.vcproj?rev=1.1&amp;content-type=text/plain','cvs_checkout','resizeable,scrollbars');"><b>download</b></A>) - <a href="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.vcproj?annotate=1.1&amp;sortby=author">annotate</a> - <A HREF="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.vcproj?r1=1.1&amp;sortby=author">[select for diffs]</A>
+, <i>Tue Apr 16 12:51:31 2002 UTC</i> (3 months, 1 week ago) by <i>lecroart</i>
+<BR>Branch: <b><A HREF="admin_service.vcproj?sortby=author&amp;only_with_tag=MAIN">MAIN</A>
+</b>
+<BR>CVS Tags: <b><A HREF="admin_service.vcproj?sortby=author&amp;only_with_tag=HEAD">HEAD</A>
+</b><BR>Diff<PRE>
+ADDED: visual .net project
+</PRE>
+
+<!-- block -->
+<TABLE bgcolor="#dddddd" CELLSPACING=0 CELLPADDING=0 BORDER=0 width=100%><tr><td width=1% valign=middle><img width=6 height=14 hspace=2 vspace=2 src="http://www.nevrax.org/inc/img/reddots.gif"></TD>
+ <TD><B>Request Diffs</B></TD>
+ <TD ALIGN=RIGHT> </td>
+</tr></table>
+<P>
+<P>
+<FORM METHOD="GET" ACTION="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.vcproj.diff" NAME="diff_select">
+<INPUT TYPE=HIDDEN NAME="sortby" VALUE="author">
+Diffs between
+<SELECT NAME="r1">
+<OPTION VALUE="text" SELECTED>Use Text Field
+<OPTION VALUE="1:MAIN">MAIN
+<OPTION VALUE="1.1:HEAD">HEAD
+</SELECT>
+<INPUT TYPE="TEXT" SIZE="12" NAME="tr1" VALUE="1.1" onChange='document.diff_select.r1.selectedIndex=0'>
+ and
+<SELECT NAME="r2">
+<OPTION VALUE="text" SELECTED>Use Text Field
+<OPTION VALUE="1:MAIN">MAIN
+<OPTION VALUE="1.1:HEAD">HEAD
+</SELECT>
+<INPUT TYPE="TEXT" SIZE="12" NAME="tr2" VALUE="1.1" onChange='docuement.diff_select.r2.selectedIndex=0'>
+<BR>Type of Diff should be a&nbsp;<SELECT NAME="f">
+<OPTION VALUE=h SELECTED>Colored Diff<OPTION VALUE=H>Long Colored Diff<OPTION VALUE=u>Unidiff<OPTION VALUE=c>Context Diff<OPTION VALUE=s>Side by Side</SELECT><INPUT TYPE=SUBMIT VALUE=" Get Diffs ">
+</FORM>
+
+<!-- block -->
+<TABLE bgcolor="#dddddd" CELLSPACING=0 CELLPADDING=0 BORDER=0 width=100%><tr><td width=1% valign=middle><img width=6 height=14 hspace=2 vspace=2 src="http://www.nevrax.org/inc/img/reddots.gif"></TD>
+ <TD><B>Select branch</B></TD>
+ <TD ALIGN=RIGHT> </td>
+</tr></table>
+<P>
+<P>
+<A name=branch></A>
+<FORM METHOD="GET" ACTION="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.vcproj">
+<INPUT TYPE=HIDDEN NAME="sortby" VALUE="author">
+View only Branch:
+<SELECT NAME="only_with_tag" onchange="submit()">
+<OPTION VALUE="">Show all branches
+<OPTION>MAIN
+</SELECT>
+<INPUT TYPE=SUBMIT VALUE=" View Branch ">
+</FORM>
+<A name=logsort></A>
+<FORM METHOD="GET" ACTION="/cvs/cvsweb.cgi/code/nelns/admin_service/admin_service.vcproj">
+<INPUT TYPE=HIDDEN NAME="sortby" VALUE="author">
+Sort log by:
+<SELECT NAME="logsort" onchange="submit()">
+<OPTION VALUE=cvs>Not sorted<OPTION VALUE=date SELECTED>Commit date<OPTION VALUE=rev>Revision</SELECT>
+<INPUT TYPE=SUBMIT VALUE=" Sort ">
+</FORM>
+
+<!-- footer -->
+<BR><FONT Size=+5>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </FONT>
+</TD>
+<TD WIDTH=15><IMG SRC=http://www.nevrax.org/inc/img/pixel.gif WIDTH=15 HEIGHT=15 BORDER=0 ALT=""></TD>
+</TR>
+</TABLE>
+</BODY>
+</HTML></BODY></HTML>
diff --git a/cvs/cvsweb.cgi/code/nelns/admin_service/common.cfg b/cvs/cvsweb.cgi/code/nelns/admin_service/common.cfg
new file mode 100644
index 00000000..bee18af0
--- /dev/null
+++ b/cvs/cvsweb.cgi/code/nelns/admin_service/common.cfg
@@ -0,0 +1,134 @@
+<!doctype html public "-//W3C//DTD HTML 4.0 Transitional//EN" "http://www.w3.org/TR/REC-html40/loose.dtd">
+<HTML>
+<HEAD>
+ <TITLE>nevrax.org : cvs</TITLE>
+ <META name="keywords" content="freesoftware,nel,newt,snowballs,richard stallman,GNU,Multi-User Online World">
+
+ <LINK REL=stylesheet TYPE="text/css" HREF="http://www.nevrax.org/inc/css/nevrax.css">
+</HEAD>
+<BODY MARGINHEIGHT="0" MARGINWIDTH="0">
+
+<!-- uplinks -->
+<TABLE CELLSPACING=0 CELLPADDING=0 BORDER=0>
+ <TR>
+ <TD WIDTH=16><IMG SRC="http://www.nevrax.org/inc/img/pixel.gif" WIDTH="16" HEIGHT="16" BORDER=0 ALT=""></TD>
+ <TD WIDTH=140 BGCOLOR=#dddddd><IMG SRC="http://www.nevrax.org/inc/img/pixel.gif" WIDTH="140" HEIGHT="16" BORDER=0 ALT=""></TD>
+ <TD WIDTH=16><IMG SRC="http://www.nevrax.org/inc/img/pixel.gif" WIDTH="16" HEIGHT="16" BORDER=0 ALT=""></TD>
+ <TD><IMG width=6 height=14 SRC="http://www.nevrax.org/inc/img/reddots.gif" ALT="#" VSPACE=2 HSPACE=2 BORDER=0 ></TD><TD VALIGN=middle>&nbsp;<A CLASS=uplinks HREF=http://www.nevrax.org><b>Home</B></FONT></A>&nbsp;&nbsp;&nbsp;</TD>
+ <TD><IMG width=6 height=14 SRC="http://www.nevrax.org/inc/img/reddots.gif" ALT="#" VSPACE=2 HSPACE=2 BORDER=0 ></TD><TD VALIGN=middle>&nbsp;<A CLASS=uplinks HREF=http://www.nevrax.com><b>nevrax.com</B></FONT></A>&nbsp;&nbsp;&nbsp;</TD>
+ </TR>
+</TABLE>
+
+<!-- banner Nevrax -->
+<TABLE CELLSPACING=0 CELLPADDING=0 BORDER=0 WIDTH=100%>
+ <TR><TD BGCOLOR="#000000" BACKGROUND="http://www.nevrax.org/inc/img/black_banner.jpg"><A HREF="http://www.nevrax.org"><IMG SRC="http://www.nevrax.org/inc/img/nevrax.gif" WIDTH="170" HEIGHT="45" BORDER=0 ALT="Nevrax" ></A></TD></TR>
+</TABLE>
+
+<!-- main table -->
+<TABLE CELLSPACING=0 CELLPADDING=0 BORDER=0 height=100%>
+ <TR>
+ <TD WIDTH=16><IMG SRC="http://www.nevrax.org/inc/img/pixel.gif" WIDTH="16" HEIGHT="10" BORDER=0 ALT=""></TD>
+ <TD WIDTH=140 BGCOLOR=#dddddd VALIGN=TOP ALIGN=middle><IMG SRC="http://www.nevrax.org/inc/img/pixel.gif" WIDTH="140" HEIGHT="10" BORDER=0 ALT="">
+
+ <!------ Begin Box ------>
+ <TABLE BORDER=0 CELLSPACING=0 CELLPADDING=0 BGCOLOR=black><TR><TD><TABLE border=0 cellspacing=2 cellpadding=0 width=120><tr><TD ALIGN=middle bgcolor=black>
+ <FONT COLOR=white FACE="sans-serif"><B>Nevrax.org</B></FONT></TD></TR><tr><td colspan=2 bgcolor=#FFFFFF>
+ <TABLE cellspacing=0 cellpadding=1 border=0>
+ <tr><td ALIGN=middle><a class='linkbox' href="http://www.nevrax.org/news/" TITLE="Rubrique news"><img width=13 height=15 hspace=5 border=0 src=http://www.nevrax.org/inc/img/picto-news.gif ALT=#></A></td><td><a class='linkbox' href="http://www.nevrax.org/news/" TITLE="News">News</a></td></tr>
+ <tr><td ALIGN=middle><a class='linkbox' href="http://www.nevrax.org/mail/" TITLE="Rubrique mail"><img width=15 height=11 hspace=5 border=0 src=http://www.nevrax.org/inc/img/picto-mail.gif ALT=#></A></td><td><a class='linkbox' href="http://www.nevrax.org/mail/" TITLE="Mailing list archive">Mailing-list</a></td></tr>
+ <tr><td ALIGN=middle><a class='linkbox' href="http://www.nevrax.org/docs/" TITLE="Rubrique docs"><img width=14 height=16 hspace=5 border=0 src=http://www.nevrax.org/inc/img/picto-docs.gif ALT=#></A></td><td><a class='linkbox' href="http://www.nevrax.org/docs/" TITLE="Documentation">Documentation</a></td></tr>
+ <tr><td ALIGN=middle><a class='linkbox' href="http://www.nevrax.org/cvs/" TITLE="Rubrique cvs"><img width=13 height=17 hspace=5 border=0 src=http://www.nevrax.org/inc/img/picto-cvs.gif ALT=#></A></td><td><a class='linkbox' href="http://www.nevrax.org/cvs/" TITLE="CVS Web">CVS</a></td></tr>
+ <tr><td ALIGN=middle><a class='linkbox' href="http://www.nevrax.org/bugs/" TITLE="Rubrique bugs"><img width=20 height=16 hspace=5 border=0 src=http://www.nevrax.org/inc/img/picto-bugs.gif ALT=#></A></td><td><a class='linkbox' href="http://www.nevrax.org/bugs/" TITLE="Bugtracking">Bugs</a></td></tr>
+ <tr><td ALIGN=middle><a class='linkbox' href="http://www.nevrax.org/free/" TITLE="Rubrique license"><img width=18 height=12 hspace=5 border=0 src=http://www.nevrax.org/inc/img/picto-free.gif ALT=#></A></td><td><a class='linkbox' href="http://www.nevrax.org/free/" TITLE="Free Software">Free software</a></td></tr>
+ </TABLE>
+ </TD></TR></TABLE></TD></TR></TABLE>
+ <!------ End Box ------>
+
+ </TD>
+ <TD WIDTH=15><IMG SRC="http://www.nevrax.org/inc/img/pixel.gif" WIDTH="16" HEIGHT="16" BORDER=0 ALT=""></TD>
+ <TD ALIGN=left valign=top><IMG SRC="http://www.nevrax.org/inc/img/pixel.gif" WIDTH="140" HEIGHT="10" BORDER=0 ALT="">
+
+<!-- title -->
+<TABLE background="http://www.nevrax.org/inc/img/redline.gif" CELLSPACING=0 CELLPADDING=0 BORDER=0 width=100%><tr><td>
+<A HREF="http://www.nevrax.org/cvs/"><img src="http://www.nevrax.org/inc/img/t_cvs.gif" ALT="cvs" HEIGHT=20 BORDER=0></A>
+</td><td><IMG SRC="http://www.nevrax.org/inc/img/pixel.gif" WIDTH="1" HEIGHT="1" BORDER=0 ALT="">
+</td></tr></table>
+
+<!-- title -->
+<table width=100%><tr><td align=left><b> <a href="/cvs/cvsweb.cgi/">Nevrax</a> / <a href="/cvs/cvsweb.cgi/code/">code</a> / <a href="/cvs/cvsweb.cgi/code/nelns/">nelns</a> / <a href="/cvs/cvsweb.cgi/code/nelns/admin_service/">admin_service</a> / common.cfg</b></td><td align=right><b></b></td></TR></TABLE>
+
+<!-- block -->
+<TABLE bgcolor="#dddddd" CELLSPACING=0 CELLPADDING=0 BORDER=0 width=100%><tr><td width=1% valign=middle><img width=6 height=14 hspace=2 vspace=2 src="http://www.nevrax.org/inc/img/reddots.gif"></TD>
+ <TD><B>common.cfg</B></TD>
+ <TD ALIGN=RIGHT> </td>
+</tr></table>
+<P>
+<p>Default branch: MAIN<BR>
+<HR size=1 NOSHADE><P><a NAME="rev1.1"></a><a NAME="HEAD"></a><a NAME="MAIN"></a>
+ Revision <A HREF="common.cfg?rev=1.1&amp;content-type=text/x-cvsweb-markup"><b>1.1</b></A> / (<A HREF="/cvs/cvsweb.cgi/~checkout~/code/nelns/admin_service/common.cfg?rev=1.1&amp;content-type=text/plain" target="cvs_checkout" onClick="window.open('/cvs/cvsweb.cgi/~checkout~/code/nelns/admin_service/common.cfg?rev=1.1&amp;content-type=text/plain','cvs_checkout','resizeable,scrollbars');"><b>download</b></A>) - <a href="/cvs/cvsweb.cgi/code/nelns/admin_service/common.cfg?annotate=1.1">annotate</a> - <A HREF="/cvs/cvsweb.cgi/code/nelns/admin_service/common.cfg?r1=1.1">[select for diffs]</A>
+, <i>Tue Apr 23 15:54:07 2002 UTC</i> (8 weeks, 3 days ago) by <i>lecroart</i>
+<BR>Branch: <b><A HREF="common.cfg?only_with_tag=MAIN">MAIN</A>
+</b>
+<BR>CVS Tags: <b><A HREF="common.cfg?only_with_tag=HEAD">HEAD</A>
+</b><BR>Diff<PRE>
+ADDED: common.cfg
+</PRE>
+
+<!-- block -->
+<TABLE bgcolor="#dddddd" CELLSPACING=0 CELLPADDING=0 BORDER=0 width=100%><tr><td width=1% valign=middle><img width=6 height=14 hspace=2 vspace=2 src="http://www.nevrax.org/inc/img/reddots.gif"></TD>
+ <TD><B>Request Diffs</B></TD>
+ <TD ALIGN=RIGHT> </td>
+</tr></table>
+<P>
+<P>
+<FORM METHOD="GET" ACTION="/cvs/cvsweb.cgi/code/nelns/admin_service/common.cfg.diff" NAME="diff_select">
+Diffs between
+<SELECT NAME="r1">
+<OPTION VALUE="text" SELECTED>Use Text Field
+<OPTION VALUE="1:MAIN">MAIN
+<OPTION VALUE="1.1:HEAD">HEAD
+</SELECT>
+<INPUT TYPE="TEXT" SIZE="12" NAME="tr1" VALUE="1.1" onChange='document.diff_select.r1.selectedIndex=0'>
+ and
+<SELECT NAME="r2">
+<OPTION VALUE="text" SELECTED>Use Text Field
+<OPTION VALUE="1:MAIN">MAIN
+<OPTION VALUE="1.1:HEAD">HEAD
+</SELECT>
+<INPUT TYPE="TEXT" SIZE="12" NAME="tr2" VALUE="1.1" onChange='docuement.diff_select.r2.selectedIndex=0'>
+<BR>Type of Diff should be a&nbsp;<SELECT NAME="f">
+<OPTION VALUE=h SELECTED>Colored Diff<OPTION VALUE=H>Long Colored Diff<OPTION VALUE=u>Unidiff<OPTION VALUE=c>Context Diff<OPTION VALUE=s>Side by Side</SELECT><INPUT TYPE=SUBMIT VALUE=" Get Diffs ">
+</FORM>
+
+<!-- block -->
+<TABLE bgcolor="#dddddd" CELLSPACING=0 CELLPADDING=0 BORDER=0 width=100%><tr><td width=1% valign=middle><img width=6 height=14 hspace=2 vspace=2 src="http://www.nevrax.org/inc/img/reddots.gif"></TD>
+ <TD><B>Select branch</B></TD>
+ <TD ALIGN=RIGHT> </td>
+</tr></table>
+<P>
+<P>
+<A name=branch></A>
+<FORM METHOD="GET" ACTION="/cvs/cvsweb.cgi/code/nelns/admin_service/common.cfg">
+View only Branch:
+<SELECT NAME="only_with_tag" onchange="submit()">
+<OPTION VALUE="">Show all branches
+<OPTION>MAIN
+</SELECT>
+<INPUT TYPE=SUBMIT VALUE=" View Branch ">
+</FORM>
+<A name=logsort></A>
+<FORM METHOD="GET" ACTION="/cvs/cvsweb.cgi/code/nelns/admin_service/common.cfg">
+Sort log by:
+<SELECT NAME="logsort" onchange="submit()">
+<OPTION VALUE=cvs>Not sorted<OPTION VALUE=date SELECTED>Commit date<OPTION VALUE=rev>Revision</SELECT>
+<INPUT TYPE=SUBMIT VALUE=" Sort ">
+</FORM>
+
+<!-- footer -->
+<BR><FONT Size=+5>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </FONT>
+</TD>
+<TD WIDTH=15><IMG SRC=http://www.nevrax.org/inc/img/pixel.gif WIDTH=15 HEIGHT=15 BORDER=0 ALT=""></TD>
+</TR>
+</TABLE>
+</BODY>
+</HTML></BODY></HTML>
diff --git a/cvs/cvsweb.cgi/code/nelns/admin_service/common.cfg?annotate=1.1 b/cvs/cvsweb.cgi/code/nelns/admin_service/common.cfg?annotate=1.1
new file mode 100644
index 00000000..55684a06
--- /dev/null
+++ b/cvs/cvsweb.cgi/code/nelns/admin_service/common.cfg?annotate=1.1
@@ -0,0 +1,76 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"><HTML>
+<HEAD><style> A { color:black }</style>
+<!-- hennerik CVSweb $Revision: 1.93 $ -->
+<TITLE>code/nelns/admin_service/common.cfg - annotate - 1.1</TITLE></HEAD>
+<BODY BGCOLOR="#eeeeee">
+<table width="100%" border=0 cellspacing=0 cellpadding=1 bgcolor="#aaaaaa"><tr valign=bottom><td><a href="common.cfg"><IMG SRC="http://www.nevrax.org/inc/img/picto-up.gif" ALT="[BACK]" BORDER="0" WIDTH="14" HEIGHT="13"></a> <b>Return to <A HREF="common.cfg">common.cfg</A>
+ CVS log</b> <IMG SRC="http://www.nevrax.org/inc/img/picto-news.gif" ALT="[TXT]" BORDER="0" WIDTH="13" HEIGHT="15"></td><td align=right><IMG SRC="http://www.nevrax.org/inc/img/picto-dir.gif" ALT="[DIR]" BORDER="0" WIDTH="15" HEIGHT="13"> <b>Up to <a href="/cvs/cvsweb.cgi/">Nevrax</a> / <a href="/cvs/cvsweb.cgi/code/">code</a> / <a href="/cvs/cvsweb.cgi/code/nelns/">nelns</a> / <a href="/cvs/cvsweb.cgi/code/nelns/admin_service/">admin_service</a></b></td></tr></table><h3 align=center>Annotation of code/nelns/admin_service/common.cfg, Revision 1.1</h3>
+<pre>Status: 500 Internal Error
+Content-type: text/html
+
+<!doctype html public "-//W3C//DTD HTML 4.0 Transitional//EN" "http://www.w3.org/TR/REC-html40/loose.dtd">
+<HTML>
+<HEAD>
+ <TITLE>nevrax.org : cvs</TITLE>
+ <META name="keywords" content="freesoftware,nel,newt,snowballs,richard stallman,GNU,Multi-User Online World">
+
+ <LINK REL=stylesheet TYPE="text/css" HREF="http://www.nevrax.org/inc/css/nevrax.css">
+</HEAD>
+<BODY MARGINHEIGHT="0" MARGINWIDTH="0">
+
+<!-- uplinks -->
+<TABLE CELLSPACING=0 CELLPADDING=0 BORDER=0>
+ <TR>
+ <TD WIDTH=16><IMG SRC="http://www.nevrax.org/inc/img/pixel.gif" WIDTH="16" HEIGHT="16" BORDER=0 ALT=""></TD>
+ <TD WIDTH=140 BGCOLOR=#dddddd><IMG SRC="http://www.nevrax.org/inc/img/pixel.gif" WIDTH="140" HEIGHT="16" BORDER=0 ALT=""></TD>
+ <TD WIDTH=16><IMG SRC="http://www.nevrax.org/inc/img/pixel.gif" WIDTH="16" HEIGHT="16" BORDER=0 ALT=""></TD>
+ <TD><IMG width=6 height=14 SRC="http://www.nevrax.org/inc/img/reddots.gif" ALT="#" VSPACE=2 HSPACE=2 BORDER=0 ></TD><TD VALIGN=middle>&nbsp;<A CLASS=uplinks HREF=http://www.nevrax.org><b>Home</B></FONT></A>&nbsp;&nbsp;&nbsp;</TD>
+ <TD><IMG width=6 height=14 SRC="http://www.nevrax.org/inc/img/reddots.gif" ALT="#" VSPACE=2 HSPACE=2 BORDER=0 ></TD><TD VALIGN=middle>&nbsp;<A CLASS=uplinks HREF=http://www.nevrax.com><b>nevrax.com</B></FONT></A>&nbsp;&nbsp;&nbsp;</TD>
+ </TR>
+</TABLE>
+
+<!-- banner Nevrax -->
+<TABLE CELLSPACING=0 CELLPADDING=0 BORDER=0 WIDTH=100%>
+ <TR><TD BGCOLOR="#000000" BACKGROUND="http://www.nevrax.org/inc/img/black_banner.jpg"><A HREF="http://www.nevrax.org"><IMG SRC="http://www.nevrax.org/inc/img/nevrax.gif" WIDTH="170" HEIGHT="45" BORDER=0 ALT="Nevrax" ></A></TD></TR>
+</TABLE>
+
+<!-- main table -->
+<TABLE CELLSPACING=0 CELLPADDING=0 BORDER=0 height=100%>
+ <TR>
+ <TD WIDTH=16><IMG SRC="http://www.nevrax.org/inc/img/pixel.gif" WIDTH="16" HEIGHT="10" BORDER=0 ALT=""></TD>
+ <TD WIDTH=140 BGCOLOR=#dddddd VALIGN=TOP ALIGN=middle><IMG SRC="http://www.nevrax.org/inc/img/pixel.gif" WIDTH="140" HEIGHT="10" BORDER=0 ALT="">
+
+ <!------ Begin Box ------>
+ <TABLE BORDER=0 CELLSPACING=0 CELLPADDING=0 BGCOLOR=black><TR><TD><TABLE border=0 cellspacing=2 cellpadding=0 width=120><tr><TD ALIGN=middle bgcolor=black>
+ <FONT COLOR=white FACE="sans-serif"><B>Nevrax.org</B></FONT></TD></TR><tr><td colspan=2 bgcolor=#FFFFFF>
+ <TABLE cellspacing=0 cellpadding=1 border=0>
+ <tr><td ALIGN=middle><a class='linkbox' href="http://www.nevrax.org/news/" TITLE="Rubrique news"><img width=13 height=15 hspace=5 border=0 src=http://www.nevrax.org/inc/img/picto-news.gif ALT=#></A></td><td><a class='linkbox' href="http://www.nevrax.org/news/" TITLE="News">News</a></td></tr>
+ <tr><td ALIGN=middle><a class='linkbox' href="http://www.nevrax.org/mail/" TITLE="Rubrique mail"><img width=15 height=11 hspace=5 border=0 src=http://www.nevrax.org/inc/img/picto-mail.gif ALT=#></A></td><td><a class='linkbox' href="http://www.nevrax.org/mail/" TITLE="Mailing list archive">Mailing-list</a></td></tr>
+ <tr><td ALIGN=middle><a class='linkbox' href="http://www.nevrax.org/docs/" TITLE="Rubrique docs"><img width=14 height=16 hspace=5 border=0 src=http://www.nevrax.org/inc/img/picto-docs.gif ALT=#></A></td><td><a class='linkbox' href="http://www.nevrax.org/docs/" TITLE="Documentation">Documentation</a></td></tr>
+ <tr><td ALIGN=middle><a class='linkbox' href="http://www.nevrax.org/cvs/" TITLE="Rubrique cvs"><img width=13 height=17 hspace=5 border=0 src=http://www.nevrax.org/inc/img/picto-cvs.gif ALT=#></A></td><td><a class='linkbox' href="http://www.nevrax.org/cvs/" TITLE="CVS Web">CVS</a></td></tr>
+ <tr><td ALIGN=middle><a class='linkbox' href="http://www.nevrax.org/bugs/" TITLE="Rubrique bugs"><img width=20 height=16 hspace=5 border=0 src=http://www.nevrax.org/inc/img/picto-bugs.gif ALT=#></A></td><td><a class='linkbox' href="http://www.nevrax.org/bugs/" TITLE="Bugtracking">Bugs</a></td></tr>
+ <tr><td ALIGN=middle><a class='linkbox' href="http://www.nevrax.org/free/" TITLE="Rubrique license"><img width=18 height=12 hspace=5 border=0 src=http://www.nevrax.org/inc/img/picto-free.gif ALT=#></A></td><td><a class='linkbox' href="http://www.nevrax.org/free/" TITLE="Free Software">Free software</a></td></tr>
+ </TABLE>
+ </TD></TR></TABLE></TD></TR></TABLE>
+ <!------ End Box ------>
+
+ </TD>
+ <TD WIDTH=15><IMG SRC="http://www.nevrax.org/inc/img/pixel.gif" WIDTH="16" HEIGHT="16" BORDER=0 ALT=""></TD>
+ <TD ALIGN=left valign=top><IMG SRC="http://www.nevrax.org/inc/img/pixel.gif" WIDTH="140" HEIGHT="10" BORDER=0 ALT="">
+
+<!-- title -->
+<TABLE background="http://www.nevrax.org/inc/img/redline.gif" CELLSPACING=0 CELLPADDING=0 BORDER=0 width=100%><tr><td>
+<A HREF="http://www.nevrax.org/cvs/"><img src="http://www.nevrax.org/inc/img/t_cvs.gif" ALT="cvs" HEIGHT=20 BORDER=0></A>
+</td><td><IMG SRC="http://www.nevrax.org/inc/img/pixel.gif" WIDTH="1" HEIGHT="1" BORDER=0 ALT="">
+</td></tr></table>
+Error: Error occured during annotate: <b>error
+</b>
+
+<!-- footer -->
+<BR><FONT Size=+5>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </FONT>
+</TD>
+<TD WIDTH=15><IMG SRC=http://www.nevrax.org/inc/img/pixel.gif WIDTH=15 HEIGHT=15 BORDER=0 ALT=""></TD>
+</TR>
+</TABLE>
+</BODY>
+</HTML> \ No newline at end of file
diff --git a/cvs/cvsweb.cgi/code/nelns/admin_service/common.cfg?content-type=text/x-cvsweb-markup&rev=1.1 b/cvs/cvsweb.cgi/code/nelns/admin_service/common.cfg?content-type=text/x-cvsweb-markup&rev=1.1
new file mode 100644
index 00000000..b36070fa
--- /dev/null
+++ b/cvs/cvsweb.cgi/code/nelns/admin_service/common.cfg?content-type=text/x-cvsweb-markup&rev=1.1
@@ -0,0 +1,19 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"><HTML>
+<HEAD><style> A { color:black }</style>
+<!-- hennerik CVSweb $Revision: 1.93 $ -->
+<TITLE>code/nelns/admin_service/common.cfg - view - 1.1</TITLE></HEAD>
+<BODY BGCOLOR="#eeeeee">
+<table width="100%" border=0 cellspacing=0 cellpadding=1 bgcolor="#aaaaaa"><tr valign=bottom><td><a href="common.cfg"><IMG SRC="http://www.nevrax.org/inc/img/picto-up.gif" ALT="[BACK]" BORDER="0" WIDTH="14" HEIGHT="13"></a> <b>Return to <A HREF="common.cfg">common.cfg</A>
+ CVS log</b> <IMG SRC="http://www.nevrax.org/inc/img/picto-news.gif" ALT="[TXT]" BORDER="0" WIDTH="13" HEIGHT="15"></td><td align=right><IMG SRC="http://www.nevrax.org/inc/img/picto-dir.gif" ALT="[DIR]" BORDER="0" WIDTH="15" HEIGHT="13"> <b>Up to <a href="/cvs/cvsweb.cgi/">Nevrax</a> / <a href="/cvs/cvsweb.cgi/code/">code</a> / <a href="/cvs/cvsweb.cgi/code/nelns/">nelns</a> / <a href="/cvs/cvsweb.cgi/code/nelns/admin_service/">admin_service</a></b></td></tr></table><HR noshade><table width="100%"><tr><td bgcolor="#ffffff">File: <a href="/cvs/cvsweb.cgi/">Nevrax</a> / <a href="/cvs/cvsweb.cgi/code/">code</a> / <a href="/cvs/cvsweb.cgi/code/nelns/">nelns</a> / <a href="/cvs/cvsweb.cgi/code/nelns/admin_service/">admin_service</a> / <a href="/cvs/cvsweb.cgi/code/nelns/admin_service/common.cfg">common.cfg</a>&nbsp;(<A HREF="/cvs/cvsweb.cgi/~checkout~/code/nelns/admin_service/common.cfg?rev=1.1" target="cvs_checkout" onClick="window.open('/cvs/cvsweb.cgi/~checkout~/code/nelns/admin_service/common.cfg?rev=1.1','cvs_checkout','resizeable,scrollbars');"><b>download</b></A>)<BR>
+Revision <B>1.1</B>, <i>Tue Apr 23 15:54:07 2002 UTC</i> (8 weeks, 3 days ago) by <i>lecroart</i>
+<BR>Branch: <b>MAIN</b>
+<BR>CVS Tags: <b>HEAD</b><PRE>
+ADDED: common.cfg
+</PRE>
+</td></tr></table><HR noshade><PRE>
+// by default, use WIN displayer
+WindowStyle = &quot;WIN&quot;;
+
+// by default, use localhost to find the naming service
+NSHost = &quot;localhost&quot;;
+</PRE> \ No newline at end of file
diff --git a/cvs/cvsweb.cgi/code/nelns/admin_service/common.cfg?rev=1.1&content-type=text/x-cvsweb-markup&sortby=author/index.html b/cvs/cvsweb.cgi/code/nelns/admin_service/common.cfg?rev=1.1&content-type=text/x-cvsweb-markup&sortby=author/index.html
new file mode 100644
index 00000000..77a3314d
--- /dev/null
+++ b/cvs/cvsweb.cgi/code/nelns/admin_service/common.cfg?rev=1.1&content-type=text/x-cvsweb-markup&sortby=author/index.html
@@ -0,0 +1,19 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"><HTML>
+<HEAD><style> A { color:black }</style>
+<!-- hennerik CVSweb $Revision: 1.93 $ -->
+<TITLE>code/nelns/admin_service/common.cfg - view - 1.1</TITLE></HEAD>
+<BODY BGCOLOR="#eeeeee">
+<table width="100%" border=0 cellspacing=0 cellpadding=1 bgcolor="#aaaaaa"><tr valign=bottom><td><a href="common.cfg?sortby=author"><IMG SRC="http://www.nevrax.org/inc/img/picto-up.gif" ALT="[BACK]" BORDER="0" WIDTH="14" HEIGHT="13"></a> <b>Return to <A HREF="common.cfg?sortby=author">common.cfg</A>
+ CVS log</b> <IMG SRC="http://www.nevrax.org/inc/img/picto-news.gif" ALT="[TXT]" BORDER="0" WIDTH="13" HEIGHT="15"></td><td align=right><IMG SRC="http://www.nevrax.org/inc/img/picto-dir.gif" ALT="[DIR]" BORDER="0" WIDTH="15" HEIGHT="13"> <b>Up to <a href="/cvs/cvsweb.cgi/?sortby=author">Nevrax</a> / <a href="/cvs/cvsweb.cgi/code/?sortby=author">code</a> / <a href="/cvs/cvsweb.cgi/code/nelns/?sortby=author">nelns</a> / <a href="/cvs/cvsweb.cgi/code/nelns/admin_service/?sortby=author">admin_service</a></b></td></tr></table><HR noshade><table width="100%"><tr><td bgcolor="#ffffff">File: <a href="/cvs/cvsweb.cgi/?sortby=author">Nevrax</a> / <a href="/cvs/cvsweb.cgi/code/?sortby=author">code</a> / <a href="/cvs/cvsweb.cgi/code/nelns/?sortby=author">nelns</a> / <a href="/cvs/cvsweb.cgi/code/nelns/admin_service/?sortby=author">admin_service</a> / <a href="/cvs/cvsweb.cgi/code/nelns/admin_service/common.cfg?sortby=author">common.cfg</a>&nbsp;(<A HREF="/cvs/cvsweb.cgi/~checkout~/code/nelns/admin_service/common.cfg?rev=1.1&amp;sortby=author" target="cvs_checkout" onClick="window.open('/cvs/cvsweb.cgi/~checkout~/code/nelns/admin_service/common.cfg?rev=1.1','cvs_checkout','resizeable,scrollbars');"><b>download</b></A>)<BR>
+Revision <B>1.1</B>, <i>Tue Apr 23 15:54:07 2002 UTC</i> (3 months ago) by <i>lecroart</i>
+<BR>Branch: <b>MAIN</b>
+<BR>CVS Tags: <b>HEAD</b><PRE>
+ADDED: common.cfg
+</PRE>
+</td></tr></table><HR noshade><PRE>
+// by default, use WIN displayer
+WindowStyle = &quot;WIN&quot;;
+
+// by default, use localhost to find the naming service
+NSHost = &quot;localhost&quot;;
+</PRE> \ No newline at end of file
diff --git a/cvs/cvsweb.cgi/code/nelns/admin_service/common.cfg?rev=1.1&content-type=text/x-cvsweb-markup&sortby=date/index.html b/cvs/cvsweb.cgi/code/nelns/admin_service/common.cfg?rev=1.1&content-type=text/x-cvsweb-markup&sortby=date/index.html
new file mode 100644
index 00000000..b012e78a
--- /dev/null
+++ b/cvs/cvsweb.cgi/code/nelns/admin_service/common.cfg?rev=1.1&content-type=text/x-cvsweb-markup&sortby=date/index.html
@@ -0,0 +1,19 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"><HTML>
+<HEAD><style> A { color:black }</style>
+<!-- hennerik CVSweb $Revision: 1.93 $ -->
+<TITLE>code/nelns/admin_service/common.cfg - view - 1.1</TITLE></HEAD>
+<BODY BGCOLOR="#eeeeee">
+<table width="100%" border=0 cellspacing=0 cellpadding=1 bgcolor="#aaaaaa"><tr valign=bottom><td><a href="common.cfg?sortby=date"><IMG SRC="http://www.nevrax.org/inc/img/picto-up.gif" ALT="[BACK]" BORDER="0" WIDTH="14" HEIGHT="13"></a> <b>Return to <A HREF="common.cfg?sortby=date">common.cfg</A>
+ CVS log</b> <IMG SRC="http://www.nevrax.org/inc/img/picto-news.gif" ALT="[TXT]" BORDER="0" WIDTH="13" HEIGHT="15"></td><td align=right><IMG SRC="http://www.nevrax.org/inc/img/picto-dir.gif" ALT="[DIR]" BORDER="0" WIDTH="15" HEIGHT="13"> <b>Up to <a href="/cvs/cvsweb.cgi/?sortby=date">Nevrax</a> / <a href="/cvs/cvsweb.cgi/code/?sortby=date">code</a> / <a href="/cvs/cvsweb.cgi/code/nelns/?sortby=date">nelns</a> / <a href="/cvs/cvsweb.cgi/code/nelns/admin_service/?sortby=date">admin_service</a></b></td></tr></table><HR noshade><table width="100%"><tr><td bgcolor="#ffffff">File: <a href="/cvs/cvsweb.cgi/?sortby=date">Nevrax</a> / <a href="/cvs/cvsweb.cgi/code/?sortby=date">code</a> / <a href="/cvs/cvsweb.cgi/code/nelns/?sortby=date">nelns</a> / <a href="/cvs/cvsweb.cgi/code/nelns/admin_service/?sortby=date">admin_service</a> / <a href="/cvs/cvsweb.cgi/code/nelns/admin_service/common.cfg?sortby=date">common.cfg</a>&nbsp;(<A HREF="/cvs/cvsweb.cgi/~checkout~/code/nelns/admin_service/common.cfg?rev=1.1&amp;sortby=date" target="cvs_checkout" onClick="window.open('/cvs/cvsweb.cgi/~checkout~/code/nelns/admin_service/common.cfg?rev=1.1','cvs_checkout','resizeable,scrollbars');"><b>download</b></A>)<BR>
+Revision <B>1.1</B>, <i>Tue Apr 23 15:54:07 2002 UTC</i> (3 months ago) by <i>lecroart</i>
+<BR>Branch: <b>MAIN</b>
+<BR>CVS Tags: <b>HEAD</b><PRE>
+ADDED: common.cfg
+</PRE>
+</td></tr></table><HR noshade><PRE>
+// by default, use WIN displayer
+WindowStyle = &quot;WIN&quot;;
+
+// by default, use localhost to find the naming service
+NSHost = &quot;localhost&quot;;
+</PRE> \ No newline at end of file
diff --git a/cvs/cvsweb.cgi/code/nelns/admin_service/common.cfg?rev=1.1&content-type=text/x-cvsweb-markup&sortby=log/index.html b/cvs/cvsweb.cgi/code/nelns/admin_service/common.cfg?rev=1.1&content-type=text/x-cvsweb-markup&sortby=log/index.html
new file mode 100644
index 00000000..7fd02592
--- /dev/null
+++ b/cvs/cvsweb.cgi/code/nelns/admin_service/common.cfg?rev=1.1&content-type=text/x-cvsweb-markup&sortby=log/index.html
@@ -0,0 +1,19 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"><HTML>
+<HEAD><style> A { color:black }</style>
+<!-- hennerik CVSweb $Revision: 1.93 $ -->
+<TITLE>code/nelns/admin_service/common.cfg - view - 1.1</TITLE></HEAD>
+<BODY BGCOLOR="#eeeeee">
+<table width="100%" border=0 cellspacing=0 cellpadding=1 bgcolor="#aaaaaa"><tr valign=bottom><td><a href="common.cfg?sortby=log"><IMG SRC="http://www.nevrax.org/inc/img/picto-up.gif" ALT="[BACK]" BORDER="0" WIDTH="14" HEIGHT="13"></a> <b>Return to <A HREF="common.cfg?sortby=log">common.cfg</A>
+ CVS log</b> <IMG SRC="http://www.nevrax.org/inc/img/picto-news.gif" ALT="[TXT]" BORDER="0" WIDTH="13" HEIGHT="15"></td><td align=right><IMG SRC="http://www.nevrax.org/inc/img/picto-dir.gif" ALT="[DIR]" BORDER="0" WIDTH="15" HEIGHT="13"> <b>Up to <a href="/cvs/cvsweb.cgi/?sortby=log">Nevrax</a> / <a href="/cvs/cvsweb.cgi/code/?sortby=log">code</a> / <a href="/cvs/cvsweb.cgi/code/nelns/?sortby=log">nelns</a> / <a href="/cvs/cvsweb.cgi/code/nelns/admin_service/?sortby=log">admin_service</a></b></td></tr></table><HR noshade><table width="100%"><tr><td bgcolor="#ffffff">File: <a href="/cvs/cvsweb.cgi/?sortby=log">Nevrax</a> / <a href="/cvs/cvsweb.cgi/code/?sortby=log">code</a> / <a href="/cvs/cvsweb.cgi/code/nelns/?sortby=log">nelns</a> / <a href="/cvs/cvsweb.cgi/code/nelns/admin_service/?sortby=log">admin_service</a> / <a href="/cvs/cvsweb.cgi/code/nelns/admin_service/common.cfg?sortby=log">common.cfg</a>&nbsp;(<A HREF="/cvs/cvsweb.cgi/~checkout~/code/nelns/admin_service/common.cfg?rev=1.1&amp;sortby=log" target="cvs_checkout" onClick="window.open('/cvs/cvsweb.cgi/~checkout~/code/nelns/admin_service/common.cfg?rev=1.1','cvs_checkout','resizeable,scrollbars');"><b>download</b></A>)<BR>
+Revision <B>1.1</B>, <i>Tue Apr 23 15:54:07 2002 UTC</i> (3 months ago) by <i>lecroart</i>
+<BR>Branch: <b>MAIN</b>
+<BR>CVS Tags: <b>HEAD</b><PRE>
+ADDED: common.cfg
+</PRE>
+</td></tr></table><HR noshade><PRE>
+// by default, use WIN displayer
+WindowStyle = &quot;WIN&quot;;
+
+// by default, use localhost to find the naming service
+NSHost = &quot;localhost&quot;;
+</PRE> \ No newline at end of file
diff --git a/cvs/cvsweb.cgi/code/nelns/admin_service/common.cfg?rev=1.1&content-type=text/x-cvsweb-markup&sortby=rev/index.html b/cvs/cvsweb.cgi/code/nelns/admin_service/common.cfg?rev=1.1&content-type=text/x-cvsweb-markup&sortby=rev/index.html
new file mode 100644
index 00000000..0734830f
--- /dev/null
+++ b/cvs/cvsweb.cgi/code/nelns/admin_service/common.cfg?rev=1.1&content-type=text/x-cvsweb-markup&sortby=rev/index.html
@@ -0,0 +1,19 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"><HTML>
+<HEAD><style> A { color:black }</style>
+<!-- hennerik CVSweb $Revision: 1.93 $ -->
+<TITLE>code/nelns/admin_service/common.cfg - view - 1.1</TITLE></HEAD>
+<BODY BGCOLOR="#eeeeee">
+<table width="100%" border=0 cellspacing=0 cellpadding=1 bgcolor="#aaaaaa"><tr valign=bottom><td><a href="common.cfg?sortby=rev"><IMG SRC="http://www.nevrax.org/inc/img/picto-up.gif" ALT="[BACK]" BORDER="0" WIDTH="14" HEIGHT="13"></a> <b>Return to <A HREF="common.cfg?sortby=rev">common.cfg</A>
+ CVS log</b> <IMG SRC="http://www.nevrax.org/inc/img/picto-news.gif" ALT="[TXT]" BORDER="0" WIDTH="13" HEIGHT="15"></td><td align=right><IMG SRC="http://www.nevrax.org/inc/img/picto-dir.gif" ALT="[DIR]" BORDER="0" WIDTH="15" HEIGHT="13"> <b>Up to <a href="/cvs/cvsweb.cgi/?sortby=rev">Nevrax</a> / <a href="/cvs/cvsweb.cgi/code/?sortby=rev">code</a> / <a href="/cvs/cvsweb.cgi/code/nelns/?sortby=rev">nelns</a> / <a href="/cvs/cvsweb.cgi/code/nelns/admin_service/?sortby=rev">admin_service</a></b></td></tr></table><HR noshade><table width="100%"><tr><td bgcolor="#ffffff">File: <a href="/cvs/cvsweb.cgi/?sortby=rev">Nevrax</a> / <a href="/cvs/cvsweb.cgi/code/?sortby=rev">code</a> / <a href="/cvs/cvsweb.cgi/code/nelns/?sortby=rev">nelns</a> / <a href="/cvs/cvsweb.cgi/code/nelns/admin_service/?sortby=rev">admin_service</a> / <a href="/cvs/cvsweb.cgi/code/nelns/admin_service/common.cfg?sortby=rev">common.cfg</a>&nbsp;(<A HREF="/cvs/cvsweb.cgi/~checkout~/code/nelns/admin_service/common.cfg?rev=1.1&amp;sortby=rev" target="cvs_checkout" onClick="window.open('/cvs/cvsweb.cgi/~checkout~/code/nelns/admin_service/common.cfg?rev=1.1','cvs_checkout','resizeable,scrollbars');"><b>download</b></A>)<BR>
+Revision <B>1.1</B>, <i>Tue Apr 23 15:54:07 2002 UTC</i> (3 months ago) by <i>lecroart</i>
+<BR>Branch: <b>MAIN</b>
+<BR>CVS Tags: <b>HEAD</b><PRE>
+ADDED: common.cfg
+</PRE>
+</td></tr></table><HR noshade><PRE>
+// by default, use WIN displayer
+WindowStyle = &quot;WIN&quot;;
+
+// by default, use localhost to find the naming service
+NSHost = &quot;localhost&quot;;
+</PRE> \ No newline at end of file
diff --git a/cvs/cvsweb.cgi/code/nelns/admin_service/common.cfg?sortby=log b/cvs/cvsweb.cgi/code/nelns/admin_service/common.cfg?sortby=log
new file mode 100644
index 00000000..5fcdbc2b
--- /dev/null
+++ b/cvs/cvsweb.cgi/code/nelns/admin_service/common.cfg?sortby=log
@@ -0,0 +1,137 @@
+<!doctype html public "-//W3C//DTD HTML 4.0 Transitional//EN" "http://www.w3.org/TR/REC-html40/loose.dtd">
+<HTML>
+<HEAD>
+ <TITLE>nevrax.org : cvs</TITLE>
+ <META name="keywords" content="freesoftware,nel,newt,snowballs,richard stallman,GNU,Multi-User Online World">
+
+ <LINK REL=stylesheet TYPE="text/css" HREF="http://www.nevrax.org/inc/css/nevrax.css">
+</HEAD>
+<BODY MARGINHEIGHT="0" MARGINWIDTH="0">
+
+<!-- uplinks -->
+<TABLE CELLSPACING=0 CELLPADDING=0 BORDER=0>
+ <TR>
+ <TD WIDTH=16><IMG SRC="http://www.nevrax.org/inc/img/pixel.gif" WIDTH="16" HEIGHT="16" BORDER=0 ALT=""></TD>
+ <TD WIDTH=140 BGCOLOR=#dddddd><IMG SRC="http://www.nevrax.org/inc/img/pixel.gif" WIDTH="140" HEIGHT="16" BORDER=0 ALT=""></TD>
+ <TD WIDTH=16><IMG SRC="http://www.nevrax.org/inc/img/pixel.gif" WIDTH="16" HEIGHT="16" BORDER=0 ALT=""></TD>
+ <TD><IMG width=6 height=14 SRC="http://www.nevrax.org/inc/img/reddots.gif" ALT="#" VSPACE=2 HSPACE=2 BORDER=0 ></TD><TD VALIGN=middle>&nbsp;<A CLASS=uplinks HREF=http://www.nevrax.org><b>Home</B></FONT></A>&nbsp;&nbsp;&nbsp;</TD>
+ <TD><IMG width=6 height=14 SRC="http://www.nevrax.org/inc/img/reddots.gif" ALT="#" VSPACE=2 HSPACE=2 BORDER=0 ></TD><TD VALIGN=middle>&nbsp;<A CLASS=uplinks HREF=http://www.nevrax.com><b>nevrax.com</B></FONT></A>&nbsp;&nbsp;&nbsp;</TD>
+ </TR>
+</TABLE>
+
+<!-- banner Nevrax -->
+<TABLE CELLSPACING=0 CELLPADDING=0 BORDER=0 WIDTH=100%>
+ <TR><TD BGCOLOR="#000000" BACKGROUND="http://www.nevrax.org/inc/img/black_banner.jpg"><A HREF="http://www.nevrax.org"><IMG SRC="http://www.nevrax.org/inc/img/nevrax.gif" WIDTH="170" HEIGHT="45" BORDER=0 ALT="Nevrax" ></A></TD></TR>
+</TABLE>
+
+<!-- main table -->
+<TABLE CELLSPACING=0 CELLPADDING=0 BORDER=0 height=100%>
+ <TR>
+ <TD WIDTH=16><IMG SRC="http://www.nevrax.org/inc/img/pixel.gif" WIDTH="16" HEIGHT="10" BORDER=0 ALT=""></TD>
+ <TD WIDTH=140 BGCOLOR=#dddddd VALIGN=TOP ALIGN=middle><IMG SRC="http://www.nevrax.org/inc/img/pixel.gif" WIDTH="140" HEIGHT="10" BORDER=0 ALT="">
+
+ <!------ Begin Box ------>
+ <TABLE BORDER=0 CELLSPACING=0 CELLPADDING=0 BGCOLOR=black><TR><TD><TABLE border=0 cellspacing=2 cellpadding=0 width=120><tr><TD ALIGN=middle bgcolor=black>
+ <FONT COLOR=white FACE="sans-serif"><B>Nevrax.org</B></FONT></TD></TR><tr><td colspan=2 bgcolor=#FFFFFF>
+ <TABLE cellspacing=0 cellpadding=1 border=0>
+ <tr><td ALIGN=middle><a class='linkbox' href="http://www.nevrax.org/news/" TITLE="Rubrique news"><img width=13 height=15 hspace=5 border=0 src=http://www.nevrax.org/inc/img/picto-news.gif ALT=#></A></td><td><a class='linkbox' href="http://www.nevrax.org/news/" TITLE="News">News</a></td></tr>
+ <tr><td ALIGN=middle><a class='linkbox' href="http://www.nevrax.org/mail/" TITLE="Rubrique mail"><img width=15 height=11 hspace=5 border=0 src=http://www.nevrax.org/inc/img/picto-mail.gif ALT=#></A></td><td><a class='linkbox' href="http://www.nevrax.org/mail/" TITLE="Mailing list archive">Mailing-list</a></td></tr>
+ <tr><td ALIGN=middle><a class='linkbox' href="http://www.nevrax.org/docs/" TITLE="Rubrique docs"><img width=14 height=16 hspace=5 border=0 src=http://www.nevrax.org/inc/img/picto-docs.gif ALT=#></A></td><td><a class='linkbox' href="http://www.nevrax.org/docs/" TITLE="Documentation">Documentation</a></td></tr>
+ <tr><td ALIGN=middle><a class='linkbox' href="http://www.nevrax.org/cvs/" TITLE="Rubrique cvs"><img width=13 height=17 hspace=5 border=0 src=http://www.nevrax.org/inc/img/picto-cvs.gif ALT=#></A></td><td><a class='linkbox' href="http://www.nevrax.org/cvs/" TITLE="CVS Web">CVS</a></td></tr>
+ <tr><td ALIGN=middle><a class='linkbox' href="http://www.nevrax.org/bugs/" TITLE="Rubrique bugs"><img width=20 height=16 hspace=5 border=0 src=http://www.nevrax.org/inc/img/picto-bugs.gif ALT=#></A></td><td><a class='linkbox' href="http://www.nevrax.org/bugs/" TITLE="Bugtracking">Bugs</a></td></tr>
+ <tr><td ALIGN=middle><a class='linkbox' href="http://www.nevrax.org/free/" TITLE="Rubrique license"><img width=18 height=12 hspace=5 border=0 src=http://www.nevrax.org/inc/img/picto-free.gif ALT=#></A></td><td><a class='linkbox' href="http://www.nevrax.org/free/" TITLE="Free Software">Free software</a></td></tr>
+ </TABLE>
+ </TD></TR></TABLE></TD></TR></TABLE>
+ <!------ End Box ------>
+
+ </TD>
+ <TD WIDTH=15><IMG SRC="http://www.nevrax.org/inc/img/pixel.gif" WIDTH="16" HEIGHT="16" BORDER=0 ALT=""></TD>
+ <TD ALIGN=left valign=top><IMG SRC="http://www.nevrax.org/inc/img/pixel.gif" WIDTH="140" HEIGHT="10" BORDER=0 ALT="">
+
+<!-- title -->
+<TABLE background="http://www.nevrax.org/inc/img/redline.gif" CELLSPACING=0 CELLPADDING=0 BORDER=0 width=100%><tr><td>
+<A HREF="http://www.nevrax.org/cvs/"><img src="http://www.nevrax.org/inc/img/t_cvs.gif" ALT="cvs" HEIGHT=20 BORDER=0></A>
+</td><td><IMG SRC="http://www.nevrax.org/inc/img/pixel.gif" WIDTH="1" HEIGHT="1" BORDER=0 ALT="">
+</td></tr></table>
+
+<!-- title -->
+<table width=100%><tr><td align=left><b> <a href="/cvs/cvsweb.cgi/?sortby=log">Nevrax</a> / <a href="/cvs/cvsweb.cgi/code/?sortby=log">code</a> / <a href="/cvs/cvsweb.cgi/code/nelns/?sortby=log">nelns</a> / <a href="/cvs/cvsweb.cgi/code/nelns/admin_service/?sortby=log">admin_service</a> / common.cfg</b></td><td align=right><b></b></td></TR></TABLE>
+
+<!-- block -->
+<TABLE bgcolor="#dddddd" CELLSPACING=0 CELLPADDING=0 BORDER=0 width=100%><tr><td width=1% valign=middle><img width=6 height=14 hspace=2 vspace=2 src="http://www.nevrax.org/inc/img/reddots.gif"></TD>
+ <TD><B>common.cfg</B></TD>
+ <TD ALIGN=RIGHT> </td>
+</tr></table>
+<P>
+<p>Default branch: MAIN<BR>
+<HR size=1 NOSHADE><P><a NAME="rev1.1"></a><a NAME="HEAD"></a><a NAME="MAIN"></a>
+ Revision <A HREF="common.cfg?rev=1.1&amp;content-type=text/x-cvsweb-markup&amp;sortby=log"><b>1.1</b></A> / (<A HREF="/cvs/cvsweb.cgi/~checkout~/code/nelns/admin_service/common.cfg?rev=1.1&amp;content-type=text/plain&amp;sortby=log" target="cvs_checkout" onClick="window.open('/cvs/cvsweb.cgi/~checkout~/code/nelns/admin_service/common.cfg?rev=1.1&amp;content-type=text/plain','cvs_checkout','resizeable,scrollbars');"><b>download</b></A>) - <a href="/cvs/cvsweb.cgi/code/nelns/admin_service/common.cfg?annotate=1.1&amp;sortby=log">annotate</a> - <A HREF="/cvs/cvsweb.cgi/code/nelns/admin_service/common.cfg?r1=1.1&amp;sortby=log">[select for diffs]</A>
+, <i>Tue Apr 23 15:54:07 2002 UTC</i> (3 months ago) by <i>lecroart</i>
+<BR>Branch: <b><A HREF="common.cfg?sortby=log&amp;only_with_tag=MAIN">MAIN</A>
+</b>
+<BR>CVS Tags: <b><A HREF="common.cfg?sortby=log&amp;only_with_tag=HEAD">HEAD</A>
+</b><BR>Diff<PRE>
+ADDED: common.cfg
+</PRE>
+
+<!-- block -->
+<TABLE bgcolor="#dddddd" CELLSPACING=0 CELLPADDING=0 BORDER=0 width=100%><tr><td width=1% valign=middle><img width=6 height=14 hspace=2 vspace=2 src="http://www.nevrax.org/inc/img/reddots.gif"></TD>
+ <TD><B>Request Diffs</B></TD>
+ <TD ALIGN=RIGHT> </td>
+</tr></table>
+<P>
+<P>
+<FORM METHOD="GET" ACTION="/cvs/cvsweb.cgi/code/nelns/admin_service/common.cfg.diff" NAME="diff_select">
+<INPUT TYPE=HIDDEN NAME="sortby" VALUE="log">
+Diffs between
+<SELECT NAME="r1">
+<OPTION VALUE="text" SELECTED>Use Text Field
+<OPTION VALUE="1:MAIN">MAIN
+<OPTION VALUE="1.1:HEAD">HEAD
+</SELECT>
+<INPUT TYPE="TEXT" SIZE="12" NAME="tr1" VALUE="1.1" onChange='document.diff_select.r1.selectedIndex=0'>
+ and
+<SELECT NAME="r2">
+<OPTION VALUE="text" SELECTED>Use Text Field
+<OPTION VALUE="1:MAIN">MAIN
+<OPTION VALUE="1.1:HEAD">HEAD
+</SELECT>
+<INPUT TYPE="TEXT" SIZE="12" NAME="tr2" VALUE="1.1" onChange='docuement.diff_select.r2.selectedIndex=0'>
+<BR>Type of Diff should be a&nbsp;<SELECT NAME="f">
+<OPTION VALUE=h SELECTED>Colored Diff<OPTION VALUE=H>Long Colored Diff<OPTION VALUE=u>Unidiff<OPTION VALUE=c>Context Diff<OPTION VALUE=s>Side by Side</SELECT><INPUT TYPE=SUBMIT VALUE=" Get Diffs ">
+</FORM>
+
+<!-- block -->
+<TABLE bgcolor="#dddddd" CELLSPACING=0 CELLPADDING=0 BORDER=0 width=100%><tr><td width=1% valign=middle><img width=6 height=14 hspace=2 vspace=2 src="http://www.nevrax.org/inc/img/reddots.gif"></TD>
+ <TD><B>Select branch</B></TD>
+ <TD ALIGN=RIGHT> </td>
+</tr></table>
+<P>
+<P>
+<A name=branch></A>
+<FORM METHOD="GET" ACTION="/cvs/cvsweb.cgi/code/nelns/admin_service/common.cfg">
+<INPUT TYPE=HIDDEN NAME="sortby" VALUE="log">
+View only Branch:
+<SELECT NAME="only_with_tag" onchange="submit()">
+<OPTION VALUE="">Show all branches
+<OPTION>MAIN
+</SELECT>
+<INPUT TYPE=SUBMIT VALUE=" View Branch ">
+</FORM>
+<A name=logsort></A>
+<FORM METHOD="GET" ACTION="/cvs/cvsweb.cgi/code/nelns/admin_service/common.cfg">
+<INPUT TYPE=HIDDEN NAME="sortby" VALUE="log">
+Sort log by:
+<SELECT NAME="logsort" onchange="submit()">
+<OPTION VALUE=cvs>Not sorted<OPTION VALUE=date SELECTED>Commit date<OPTION VALUE=rev>Revision</SELECT>
+<INPUT TYPE=SUBMIT VALUE=" Sort ">
+</FORM>
+
+<!-- footer -->
+<BR><FONT Size=+5>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </FONT>
+</TD>
+<TD WIDTH=15><IMG SRC=http://www.nevrax.org/inc/img/pixel.gif WIDTH=15 HEIGHT=15 BORDER=0 ALT=""></TD>
+</TR>
+</TABLE>
+</BODY>
+</HTML></BODY></HTML>
diff --git a/cvs/cvsweb.cgi/code/nelns/admin_service/common.cfg?sortby=rev b/cvs/cvsweb.cgi/code/nelns/admin_service/common.cfg?sortby=rev
new file mode 100644
index 00000000..65b22920
--- /dev/null
+++ b/cvs/cvsweb.cgi/code/nelns/admin_service/common.cfg?sortby=rev
@@ -0,0 +1,137 @@
+<!doctype html public "-//W3C//DTD HTML 4.0 Transitional//EN" "http://www.w3.org/TR/REC-html40/loose.dtd">
+<HTML>
+<HEAD>
+ <TITLE>nevrax.org : cvs</TITLE>
+ <META name="keywords" content="freesoftware,nel,newt,snowballs,richard stallman,GNU,Multi-User Online World">
+
+ <LINK REL=stylesheet TYPE="text/css" HREF="http://www.nevrax.org/inc/css/nevrax.css">
+</HEAD>
+<BODY MARGINHEIGHT="0" MARGINWIDTH="0">
+
+<!-- uplinks -->
+<TABLE CELLSPACING=0 CELLPADDING=0 BORDER=0>
+ <TR>
+ <TD WIDTH=16><IMG SRC="http://www.nevrax.org/inc/img/pixel.gif" WIDTH="16" HEIGHT="16" BORDER=0 ALT=""></TD>
+ <TD WIDTH=140 BGCOLOR=#dddddd><IMG SRC="http://www.nevrax.org/inc/img/pixel.gif" WIDTH="140" HEIGHT="16" BORDER=0 ALT=""></TD>
+ <TD WIDTH=16><IMG SRC="http://www.nevrax.org/inc/img/pixel.gif" WIDTH="16" HEIGHT="16" BORDER=0 ALT=""></TD>
+ <TD><IMG width=6 height=14 SRC="http://www.nevrax.org/inc/img/reddots.gif" ALT="#" VSPACE=2 HSPACE=2 BORDER=0 ></TD><TD VALIGN=middle>&nbsp;<A CLASS=uplinks HREF=http://www.nevrax.org><b>Home</B></FONT></A>&nbsp;&nbsp;&nbsp;</TD>
+ <TD><IMG width=6 height=14 SRC="http://www.nevrax.org/inc/img/reddots.gif" ALT="#" VSPACE=2 HSPACE=2 BORDER=0 ></TD><TD VALIGN=middle>&nbsp;<A CLASS=uplinks HREF=http://www.nevrax.com><b>nevrax.com</B></FONT></A>&nbsp;&nbsp;&nbsp;</TD>
+ </TR>
+</TABLE>
+
+<!-- banner Nevrax -->
+<TABLE CELLSPACING=0 CELLPADDING=0 BORDER=0 WIDTH=100%>
+ <TR><TD BGCOLOR="#000000" BACKGROUND="http://www.nevrax.org/inc/img/black_banner.jpg"><A HREF="http://www.nevrax.org"><IMG SRC="http://www.nevrax.org/inc/img/nevrax.gif" WIDTH="170" HEIGHT="45" BORDER=0 ALT="Nevrax" ></A></TD></TR>
+</TABLE>
+
+<!-- main table -->
+<TABLE CELLSPACING=0 CELLPADDING=0 BORDER=0 height=100%>
+ <TR>
+ <TD WIDTH=16><IMG SRC="http://www.nevrax.org/inc/img/pixel.gif" WIDTH="16" HEIGHT="10" BORDER=0 ALT=""></TD>
+ <TD WIDTH=140 BGCOLOR=#dddddd VALIGN=TOP ALIGN=middle><IMG SRC="http://www.nevrax.org/inc/img/pixel.gif" WIDTH="140" HEIGHT="10" BORDER=0 ALT="">
+
+ <!------ Begin Box ------>
+ <TABLE BORDER=0 CELLSPACING=0 CELLPADDING=0 BGCOLOR=black><TR><TD><TABLE border=0 cellspacing=2 cellpadding=0 width=120><tr><TD ALIGN=middle bgcolor=black>
+ <FONT COLOR=white FACE="sans-serif"><B>Nevrax.org</B></FONT></TD></TR><tr><td colspan=2 bgcolor=#FFFFFF>
+ <TABLE cellspacing=0 cellpadding=1 border=0>
+ <tr><td ALIGN=middle><a class='linkbox' href="http://www.nevrax.org/news/" TITLE="Rubrique news"><img width=13 height=15 hspace=5 border=0 src=http://www.nevrax.org/inc/img/picto-news.gif ALT=#></A></td><td><a class='linkbox' href="http://www.nevrax.org/news/" TITLE="News">News</a></td></tr>
+ <tr><td ALIGN=middle><a class='linkbox' href="http://www.nevrax.org/mail/" TITLE="Rubrique mail"><img width=15 height=11 hspace=5 border=0 src=http://www.nevrax.org/inc/img/picto-mail.gif ALT=#></A></td><td><a class='linkbox' href="http://www.nevrax.org/mail/" TITLE="Mailing list archive">Mailing-list</a></td></tr>
+ <tr><td ALIGN=middle><a class='linkbox' href="http://www.nevrax.org/docs/" TITLE="Rubrique docs"><img width=14 height=16 hspace=5 border=0 src=http://www.nevrax.org/inc/img/picto-docs.gif ALT=#></A></td><td><a class='linkbox' href="http://www.nevrax.org/docs/" TITLE="Documentation">Documentation</a></td></tr>
+ <tr><td ALIGN=middle><a class='linkbox' href="http://www.nevrax.org/cvs/" TITLE="Rubrique cvs"><img width=13 height=17 hspace=5 border=0 src=http://www.nevrax.org/inc/img/picto-cvs.gif ALT=#></A></td><td><a class='linkbox' href="http://www.nevrax.org/cvs/" TITLE="CVS Web">CVS</a></td></tr>
+ <tr><td ALIGN=middle><a class='linkbox' href="http://www.nevrax.org/bugs/" TITLE="Rubrique bugs"><img width=20 height=16 hspace=5 border=0 src=http://www.nevrax.org/inc/img/picto-bugs.gif ALT=#></A></td><td><a class='linkbox' href="http://www.nevrax.org/bugs/" TITLE="Bugtracking">Bugs</a></td></tr>
+ <tr><td ALIGN=middle><a class='linkbox' href="http://www.nevrax.org/free/" TITLE="Rubrique license"><img width=18 height=12 hspace=5 border=0 src=http://www.nevrax.org/inc/img/picto-free.gif ALT=#></A></td><td><a class='linkbox' href="http://www.nevrax.org/free/" TITLE="Free Software">Free software</a></td></tr>
+ </TABLE>
+ </TD></TR></TABLE></TD></TR></TABLE>
+ <!------ End Box ------>
+
+ </TD>
+ <TD WIDTH=15><IMG SRC="http://www.nevrax.org/inc/img/pixel.gif" WIDTH="16" HEIGHT="16" BORDER=0 ALT=""></TD>
+ <TD ALIGN=left valign=top><IMG SRC="http://www.nevrax.org/inc/img/pixel.gif" WIDTH="140" HEIGHT="10" BORDER=0 ALT="">
+
+<!-- title -->
+<TABLE background="http://www.nevrax.org/inc/img/redline.gif" CELLSPACING=0 CELLPADDING=0 BORDER=0 width=100%><tr><td>
+<A HREF="http://www.nevrax.org/cvs/"><img src="http://www.nevrax.org/inc/img/t_cvs.gif" ALT="cvs" HEIGHT=20 BORDER=0></A>
+</td><td><IMG SRC="http://www.nevrax.org/inc/img/pixel.gif" WIDTH="1" HEIGHT="1" BORDER=0 ALT="">
+</td></tr></table>
+
+<!-- title -->
+<table width=100%><tr><td align=left><b> <a href="/cvs/cvsweb.cgi/?sortby=rev">Nevrax</a> / <a href="/cvs/cvsweb.cgi/code/?sortby=rev">code</a> / <a href="/cvs/cvsweb.cgi/code/nelns/?sortby=rev">nelns</a> / <a href="/cvs/cvsweb.cgi/code/nelns/admin_service/?sortby=rev">admin_service</a> / common.cfg</b></td><td align=right><b></b></td></TR></TABLE>
+
+<!-- block -->
+<TABLE bgcolor="#dddddd" CELLSPACING=0 CELLPADDING=0 BORDER=0 width=100%><tr><td width=1% valign=middle><img width=6 height=14 hspace=2 vspace=2 src="http://www.nevrax.org/inc/img/reddots.gif"></TD>
+ <TD><B>common.cfg</B></TD>
+ <TD ALIGN=RIGHT> </td>
+</tr></table>
+<P>
+<p>Default branch: MAIN<BR>
+<HR size=1 NOSHADE><P><a NAME="rev1.1"></a><a NAME="HEAD"></a><a NAME="MAIN"></a>
+ Revision <A HREF="common.cfg?rev=1.1&amp;content-type=text/x-cvsweb-markup&amp;sortby=rev"><b>1.1</b></A> / (<A HREF="/cvs/cvsweb.cgi/~checkout~/code/nelns/admin_service/common.cfg?rev=1.1&amp;content-type=text/plain&amp;sortby=rev" target="cvs_checkout" onClick="window.open('/cvs/cvsweb.cgi/~checkout~/code/nelns/admin_service/common.cfg?rev=1.1&amp;content-type=text/plain','cvs_checkout','resizeable,scrollbars');"><b>download</b></A>) - <a href="/cvs/cvsweb.cgi/code/nelns/admin_service/common.cfg?annotate=1.1&amp;sortby=rev">annotate</a> - <A HREF="/cvs/cvsweb.cgi/code/nelns/admin_service/common.cfg?r1=1.1&amp;sortby=rev">[select for diffs]</A>
+, <i>Tue Apr 23 15:54:07 2002 UTC</i> (3 months ago) by <i>lecroart</i>
+<BR>Branch: <b><A HREF="common.cfg?sortby=rev&amp;only_with_tag=MAIN">MAIN</A>
+</b>
+<BR>CVS Tags: <b><A HREF="common.cfg?sortby=rev&amp;only_with_tag=HEAD">HEAD</A>
+</b><BR>Diff<PRE>
+ADDED: common.cfg
+</PRE>
+
+<!-- block -->
+<TABLE bgcolor="#dddddd" CELLSPACING=0 CELLPADDING=0 BORDER=0 width=100%><tr><td width=1% valign=middle><img width=6 height=14 hspace=2 vspace=2 src="http://www.nevrax.org/inc/img/reddots.gif"></TD>
+ <TD><B>Request Diffs</B></TD>
+ <TD ALIGN=RIGHT> </td>
+</tr></table>
+<P>
+<P>
+<FORM METHOD="GET" ACTION="/cvs/cvsweb.cgi/code/nelns/admin_service/common.cfg.diff" NAME="diff_select">
+<INPUT TYPE=HIDDEN NAME="sortby" VALUE="rev">
+Diffs between
+<SELECT NAME="r1">
+<OPTION VALUE="text" SELECTED>Use Text Field
+<OPTION VALUE="1:MAIN">MAIN
+<OPTION VALUE="1.1:HEAD">HEAD
+</SELECT>
+<INPUT TYPE="TEXT" SIZE="12" NAME="tr1" VALUE="1.1" onChange='document.diff_select.r1.selectedIndex=0'>
+ and
+<SELECT NAME="r2">
+<OPTION VALUE="text" SELECTED>Use Text Field
+<OPTION VALUE="1:MAIN">MAIN
+<OPTION VALUE="1.1:HEAD">HEAD
+</SELECT>
+<INPUT TYPE="TEXT" SIZE="12" NAME="tr2" VALUE="1.1" onChange='docuement.diff_select.r2.selectedIndex=0'>
+<BR>Type of Diff should be a&nbsp;<SELECT NAME="f">
+<OPTION VALUE=h SELECTED>Colored Diff<OPTION VALUE=H>Long Colored Diff<OPTION VALUE=u>Unidiff<OPTION VALUE=c>Context Diff<OPTION VALUE=s>Side by Side</SELECT><INPUT TYPE=SUBMIT VALUE=" Get Diffs ">
+</FORM>
+
+<!-- block -->
+<TABLE bgcolor="#dddddd" CELLSPACING=0 CELLPADDING=0 BORDER=0 width=100%><tr><td width=1% valign=middle><img width=6 height=14 hspace=2 vspace=2 src="http://www.nevrax.org/inc/img/reddots.gif"></TD>
+ <TD><B>Select branch</B></TD>
+ <TD ALIGN=RIGHT> </td>
+</tr></table>
+<P>
+<P>
+<A name=branch></A>
+<FORM METHOD="GET" ACTION="/cvs/cvsweb.cgi/code/nelns/admin_service/common.cfg">
+<INPUT TYPE=HIDDEN NAME="sortby" VALUE="rev">
+View only Branch:
+<SELECT NAME="only_with_tag" onchange="submit()">
+<OPTION VALUE="">Show all branches
+<OPTION>MAIN
+</SELECT>
+<INPUT TYPE=SUBMIT VALUE=" View Branch ">
+</FORM>
+<A name=logsort></A>
+<FORM METHOD="GET" ACTION="/cvs/cvsweb.cgi/code/nelns/admin_service/common.cfg">
+<INPUT TYPE=HIDDEN NAME="sortby" VALUE="rev">
+Sort log by:
+<SELECT NAME="logsort" onchange="submit()">
+<OPTION VALUE=cvs>Not sorted<OPTION VALUE=date SELECTED>Commit date<OPTION VALUE=rev>Revision</SELECT>
+<INPUT TYPE=SUBMIT VALUE=" Sort ">
+</FORM>
+
+<!-- footer -->
+<BR><FONT Size=+5>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </FONT>
+</TD>
+<TD WIDTH=15><IMG SRC=http://www.nevrax.org/inc/img/pixel.gif WIDTH=15 HEIGHT=15 BORDER=0 ALT=""></TD>
+</TR>
+</TABLE>
+</BODY>
+</HTML></BODY></HTML>
diff --git a/cvs/cvsweb.cgi/code/nelns/admin_service/index.html b/cvs/cvsweb.cgi/code/nelns/admin_service/index.html
new file mode 100644
index 00000000..9f21826b
--- /dev/null
+++ b/cvs/cvsweb.cgi/code/nelns/admin_service/index.html
@@ -0,0 +1,106 @@
+<!doctype html public "-//W3C//DTD HTML 4.0 Transitional//EN" "http://www.w3.org/TR/REC-html40/loose.dtd">
+<HTML>
+<HEAD>
+ <TITLE>nevrax.org : cvs</TITLE>
+ <META name="keywords" content="freesoftware,nel,newt,snowballs,richard stallman,GNU,Multi-User Online World">
+
+ <LINK REL=stylesheet TYPE="text/css" HREF="http://www.nevrax.org/inc/css/nevrax.css">
+</HEAD>
+<BODY MARGINHEIGHT="0" MARGINWIDTH="0">
+
+<!-- uplinks -->
+<TABLE CELLSPACING=0 CELLPADDING=0 BORDER=0>
+ <TR>
+ <TD WIDTH=16><IMG SRC="http://www.nevrax.org/inc/img/pixel.gif" WIDTH="16" HEIGHT="16" BORDER=0 ALT=""></TD>
+ <TD WIDTH=140 BGCOLOR=#dddddd><IMG SRC="http://www.nevrax.org/inc/img/pixel.gif" WIDTH="140" HEIGHT="16" BORDER=0 ALT=""></TD>
+ <TD WIDTH=16><IMG SRC="http://www.nevrax.org/inc/img/pixel.gif" WIDTH="16" HEIGHT="16" BORDER=0 ALT=""></TD>
+ <TD><IMG width=6 height=14 SRC="http://www.nevrax.org/inc/img/reddots.gif" ALT="#" VSPACE=2 HSPACE=2 BORDER=0 ></TD><TD VALIGN=middle>&nbsp;<A CLASS=uplinks HREF=http://www.nevrax.org><b>Home</B></FONT></A>&nbsp;&nbsp;&nbsp;</TD>
+ <TD><IMG width=6 height=14 SRC="http://www.nevrax.org/inc/img/reddots.gif" ALT="#" VSPACE=2 HSPACE=2 BORDER=0 ></TD><TD VALIGN=middle>&nbsp;<A CLASS=uplinks HREF=http://www.nevrax.com><b>nevrax.com</B></FONT></A>&nbsp;&nbsp;&nbsp;</TD>
+ </TR>
+</TABLE>
+
+<!-- banner Nevrax -->
+<TABLE CELLSPACING=0 CELLPADDING=0 BORDER=0 WIDTH=100%>
+ <TR><TD BGCOLOR="#000000" BACKGROUND="http://www.nevrax.org/inc/img/black_banner.jpg"><A HREF="http://www.nevrax.org"><IMG SRC="http://www.nevrax.org/inc/img/nevrax.gif" WIDTH="170" HEIGHT="45" BORDER=0 ALT="Nevrax" ></A></TD></TR>
+</TABLE>
+
+<!-- main table -->
+<TABLE CELLSPACING=0 CELLPADDING=0 BORDER=0 height=100%>
+ <TR>
+ <TD WIDTH=16><IMG SRC="http://www.nevrax.org/inc/img/pixel.gif" WIDTH="16" HEIGHT="10" BORDER=0 ALT=""></TD>
+ <TD WIDTH=140 BGCOLOR=#dddddd VALIGN=TOP ALIGN=middle><IMG SRC="http://www.nevrax.org/inc/img/pixel.gif" WIDTH="140" HEIGHT="10" BORDER=0 ALT="">
+
+ <!------ Begin Box ------>
+ <TABLE BORDER=0 CELLSPACING=0 CELLPADDING=0 BGCOLOR=black><TR><TD><TABLE border=0 cellspacing=2 cellpadding=0 width=120><tr><TD ALIGN=middle bgcolor=black>
+ <FONT COLOR=white FACE="sans-serif"><B>Nevrax.org</B></FONT></TD></TR><tr><td colspan=2 bgcolor=#FFFFFF>
+ <TABLE cellspacing=0 cellpadding=1 border=0>
+ <tr><td ALIGN=middle><a class='linkbox' href="http://www.nevrax.org/news/" TITLE="Rubrique news"><img width=13 height=15 hspace=5 border=0 src=http://www.nevrax.org/inc/img/picto-news.gif ALT=#></A></td><td><a class='linkbox' href="http://www.nevrax.org/news/" TITLE="News">News</a></td></tr>
+ <tr><td ALIGN=middle><a class='linkbox' href="http://www.nevrax.org/mail/" TITLE="Rubrique mail"><img width=15 height=11 hspace=5 border=0 src=http://www.nevrax.org/inc/img/picto-mail.gif ALT=#></A></td><td><a class='linkbox' href="http://www.nevrax.org/mail/" TITLE="Mailing list archive">Mailing-list</a></td></tr>
+ <tr><td ALIGN=middle><a class='linkbox' href="http://www.nevrax.org/docs/" TITLE="Rubrique docs"><img width=14 height=16 hspace=5 border=0 src=http://www.nevrax.org/inc/img/picto-docs.gif ALT=#></A></td><td><a class='linkbox' href="http://www.nevrax.org/docs/" TITLE="Documentation">Documentation</a></td></tr>
+ <tr><td ALIGN=middle><a class='linkbox' href="http://www.nevrax.org/cvs/" TITLE="Rubrique cvs"><img width=13 height=17 hspace=5 border=0 src=http://www.nevrax.org/inc/img/picto-cvs.gif ALT=#></A></td><td><a class='linkbox' href="http://www.nevrax.org/cvs/" TITLE="CVS Web">CVS</a></td></tr>
+ <tr><td ALIGN=middle><a class='linkbox' href="http://www.nevrax.org/bugs/" TITLE="Rubrique bugs"><img width=20 height=16 hspace=5 border=0 src=http://www.nevrax.org/inc/img/picto-bugs.gif ALT=#></A></td><td><a class='linkbox' href="http://www.nevrax.org/bugs/" TITLE="Bugtracking">Bugs</a></td></tr>
+ <tr><td ALIGN=middle><a class='linkbox' href="http://www.nevrax.org/free/" TITLE="Rubrique license"><img width=18 height=12 hspace=5 border=0 src=http://www.nevrax.org/inc/img/picto-free.gif ALT=#></A></td><td><a class='linkbox' href="http://www.nevrax.org/free/" TITLE="Free Software">Free software</a></td></tr>
+ </TABLE>
+ </TD></TR></TABLE></TD></TR></TABLE>
+ <!------ End Box ------>
+
+ </TD>
+ <TD WIDTH=15><IMG SRC="http://www.nevrax.org/inc/img/pixel.gif" WIDTH="16" HEIGHT="16" BORDER=0 ALT=""></TD>
+ <TD ALIGN=left valign=top><IMG SRC="http://www.nevrax.org/inc/img/pixel.gif" WIDTH="140" HEIGHT="10" BORDER=0 ALT="">
+
+<!-- title -->
+<TABLE background="http://www.nevrax.org/inc/img/redline.gif" CELLSPACING=0 CELLPADDING=0 BORDER=0 width=100%><tr><td>
+<A HREF="http://www.nevrax.org/cvs/"><img src="http://www.nevrax.org/inc/img/t_cvs.gif" ALT="cvs" HEIGHT=20 BORDER=0></A>
+</td><td><IMG SRC="http://www.nevrax.org/inc/img/pixel.gif" WIDTH="1" HEIGHT="1" BORDER=0 ALT="">
+</td></tr></table>
+
+
+<!-- title -->
+<table width=100%><tr><td align=left><b> <a href="/cvs/cvsweb.cgi/">Nevrax</a> / <a href="/cvs/cvsweb.cgi/code/">code</a> / <a href="/cvs/cvsweb.cgi/code/nelns/">nelns</a> / admin_service</b></td><td align=right><b></b></td></TR></TABLE>
+<table width="100%" border=0 cellspacing=1 cellpadding=2>
+<tr><th align=left bgcolor="#222222"><font color=white>File</font></th><th align=left bgcolor="#000000"><a class=title href="./?sortby=rev"><font color=white>Rev.</font></a></th><th align=left bgcolor="#000000"><a class=title href="./?sortby=date"><font color=white>Age</font></a></th><th align=left bgcolor="#000000"><a class=title href="./?sortby=author"><font color=white>Author</font></a></th><th align=left bgcolor="#000000"><a class=title href="./?sortby=log"><font color=white>Last log entry</font></a></th></tr>
+<tr bgcolor="#dddddd"><td><A HREF="../"><IMG SRC="http://www.nevrax.org/inc/img/picto-up.gif" ALT="[BACK]" BORDER="0" WIDTH="14" HEIGHT="13"></A>
+ <A HREF="../">Previous Directory</A>
+</td><td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td></tr>
+
+<tr bgcolor="#cccccc"><td><A NAME="Makefile.am"></A><A HREF="Makefile.am"><IMG SRC="http://www.nevrax.org/inc/img/picto-news.gif" ALT="[TXT]" BORDER="0" WIDTH="13" HEIGHT="15"></A>
+ <A HREF="Makefile.am">Makefile.am</A>
+</td><td>&nbsp;<A HREF="Makefile.am?rev=1.5&amp;content-type=text/x-cvsweb-markup"><b>1.5</b></A></td><td>&nbsp; <i>8 weeks</i></td><td>&nbsp;lecroart</td><td>&nbsp; <font size=-1>CHANGED: update makefile to manage log and cfg dir (thanks to loic dachary)
+</font></td></tr>
+<tr bgcolor="#dddddd"><td><A NAME="admin_service.cfg"></A><A HREF="admin_service.cfg"><IMG SRC="http://www.nevrax.org/inc/img/picto-news.gif" ALT="[TXT]" BORDER="0" WIDTH="13" HEIGHT="15"></A>
+ <A HREF="admin_service.cfg">admin_service.cfg</A>
+</td><td>&nbsp;<A HREF="admin_service.cfg?rev=1.6&amp;content-type=text/x-cvsweb-markup"><b>1.6</b></A></td><td>&nbsp; <i>6 weeks</i></td><td>&nbsp;lecroart</td><td>&nbsp; <font size=-1>ADDED: common.cfg
+</font></td></tr>
+<tr bgcolor="#cccccc"><td><A NAME="admin_service.cpp"></A><A HREF="admin_service.cpp"><IMG SRC="http://www.nevrax.org/inc/img/picto-news.gif" ALT="[TXT]" BORDER="0" WIDTH="13" HEIGHT="15"></A>
+ <A HREF="admin_service.cpp">admin_service.cpp</A>
+</td><td>&nbsp;<A HREF="admin_service.cpp?rev=1.15&amp;content-type=text/x-cvsweb-markup"><b>1.15</b></A></td><td>&nbsp; <i>2 months</i></td><td>&nbsp;lecroart</td><td>&nbsp; <font size=-1>CHANGED: use new service functions
+</font></td></tr>
+<tr bgcolor="#dddddd"><td><A NAME="admin_service.dsp"></A><A HREF="admin_service.dsp"><IMG SRC="http://www.nevrax.org/inc/img/picto-news.gif" ALT="[TXT]" BORDER="0" WIDTH="13" HEIGHT="15"></A>
+ <A HREF="admin_service.dsp">admin_service.dsp</A>
+</td><td>&nbsp;<A HREF="admin_service.dsp?rev=1.5&amp;content-type=text/x-cvsweb-markup"><b>1.5</b></A></td><td>&nbsp; <i>9 months</i></td><td>&nbsp;lecroart</td><td>&nbsp; <font size=-1>ADDED: DebugFast config
+</font></td></tr>
+<tr bgcolor="#cccccc"><td><A NAME="admin_service.vcproj"></A><A HREF="admin_service.vcproj"><IMG SRC="http://www.nevrax.org/inc/img/picto-news.gif" ALT="[TXT]" BORDER="0" WIDTH="13" HEIGHT="15"></A>
+ <A HREF="admin_service.vcproj">admin_service.vcproj</A>
+</td><td>&nbsp;<A HREF="admin_service.vcproj?rev=1.1&amp;content-type=text/x-cvsweb-markup"><b>1.1</b></A></td><td>&nbsp; <i>7 weeks</i></td><td>&nbsp;lecroart</td><td>&nbsp; <font size=-1>ADDED: visual .net project
+</font></td></tr>
+<tr bgcolor="#dddddd"><td><A NAME="common.cfg"></A><A HREF="common.cfg"><IMG SRC="http://www.nevrax.org/inc/img/picto-news.gif" ALT="[TXT]" BORDER="0" WIDTH="13" HEIGHT="15"></A>
+ <A HREF="common.cfg">common.cfg</A>
+</td><td>&nbsp;<A HREF="common.cfg?rev=1.1&amp;content-type=text/x-cvsweb-markup"><b>1.1</b></A></td><td>&nbsp; <i>6 weeks</i></td><td>&nbsp;lecroart</td><td>&nbsp; <font size=-1>ADDED: common.cfg
+</font></td></tr>
+</table><hr size=1 NOSHADE><FORM METHOD="GET" ACTION="./">
+Show only files with tag:
+<SELECT NAME=only_with_tag onchange="submit()"><OPTION VALUE="">All tags / default branch
+<OPTION>MAIN
+<OPTION>HEAD
+</SELECT>
+<INPUT TYPE=SUBMIT VALUE="Go">
+</FORM>
+
+<!-- footer -->
+<BR><FONT Size=+5>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </FONT>
+</TD>
+<TD WIDTH=15><IMG SRC=http://www.nevrax.org/inc/img/pixel.gif WIDTH=15 HEIGHT=15 BORDER=0 ALT=""></TD>
+</TR>
+</TABLE>
+</BODY>
+</HTML></BODY></HTML>