Via UDP empfangene Bytesequenzen als ASCII verarbeiten

In receive_udp werden eingangs alle Bytesequenzen als ASCII
interpretiert und nach string gewandelt.
Traditionell sind einkommende Nachrichten via UDP immer ASCII-pur
gewesen. Davon geht auch aller Code im MG aus.
Durch die zentrale Wandlung beim Empfang bleibt nun erstmal
bis auf Weiteres alles beim Alten.

Change-Id: I6520e11fa63dbfbef127dc32c59ff35bf6a7981f
diff --git a/secure/master/network.c b/secure/master/network.c
index 88b03e4..3e7d0b1 100644
--- a/secure/master/network.c
+++ b/secure/master/network.c
@@ -106,33 +106,43 @@
 #define UDP_DEBUG(x) 
 //#define UDP_DEBUG(x) (write_file("/log/ARCH/udp.log",(x)))
 
-void receive_udp(string host, string message, int port)
+void receive_udp(string host, bytes message, int port)
 {
-  mixed *tmp;
-  UDP_DEBUG(sprintf("%s %s:%d: %s\n",strftime(),host,port,message));
+  // Traditionell sind einkommende Nachrichten via UDP immer ASCII-pur
+  // gewesen. Davon geht auch aller hier gerufener Code aus. Daher wird jetzt
+  // hier zentral die Bytesequenz als ASCII interpretiert und in string
+  // gewandelt, der dann wie bislang auch verarbeitet wird.
+  string msg_text = to_text(message, "ASCII");
 
-  if (message[0..6]=="EXTREQ:"
-  	|| message[0..5]=="IPNAME"
-  	|| message[0..3]=="AUTH"
-  ) {	
+  UDP_DEBUG(sprintf("%s %s:%d: %s\n",strftime(),host,port,msg_text));
+
+  // Nicht mehr benutzt, zur Sicherheit abfangen vor dem inetd.
+  if (strstr(msg_text, "EXTREQ:") == 0
+      || strstr(msg_text, "IPNAME") == 0
+      || strstr(msg_text, "AUTH") == 0)
+  {
     return;
   }
 
-  if( message[0..8]=="IPLOOKUP\n" ) {
-    "/p/daemon/iplookup"->update( message );
+  // Die folgenden Services sind keine Intermud-Dienste
+  if(strstr(msg_text, "IPLOOKUP\n") == 0)
+  {
+    "/p/daemon/iplookup"->update( msg_text );
     return;
   }
 
-  if( message[0..9]=="DNSLOOKUP\n" ) {
-    "/p/daemon/dnslookup"->update( message );
+  if( strstr(msg_text, "DNSLOOKUP\n") == 0)
+  {
+    "/p/daemon/dnslookup"->update( msg_text );
     return;
   }
 
-  if (message[0..9]=="udp_query:") {
-    return udp_query(message[10..],host,port);
+  if (strstr(msg_text, "udp_query:") == 0)
+  {
+    return udp_query(msg_text[10..],host,port);
   }
-
-  "secure/inetd"->_receive_udp(host, message);
+  // Rest an inetd fuer Bearbeitung als Intermud-Nachricht.
+  "secure/inetd"->_receive_udp(host, msg_text);
 }