Added public files

Roughly added all public files. Probably missed some, though.
diff --git a/secure/udp/channel.c b/secure/udp/channel.c
new file mode 100644
index 0000000..3592ffe
--- /dev/null
+++ b/secure/udp/channel.c
@@ -0,0 +1,110 @@
+// MorgenGrauen MUDlib
+//
+// channel.c
+//
+// $Id: channel.c 9142 2015-02-04 22:17:29Z Zesstra $
+
+#include <udp.h>
+
+#include <properties.h>
+#include <daemon.h>
+
+#ifdef ZEBEDEE
+inherit "/sys/format";
+#endif
+
+#define COMMAND                "cmd"
+#define CHANNEL                "channel"
+
+private nosave mixed _name_;
+
+int filter_listeners(object ob, string channel) {
+    return ob->QueryProp(P_INTERMUD);
+}
+
+int udp_channel(mapping data) {
+  object *list;
+  string msg;
+  int i, type;
+
+  /* Compatability with older systems. */
+  if (!data[CHANNEL])
+    data[CHANNEL] = data["CHANNEL"];
+  if (!data[COMMAND])
+    data[COMMAND] = data["CMD"];
+  if (!data[DATA])
+    data[DATA]="";
+
+  if (!stringp(data[CHANNEL]) || !sizeof(data[CHANNEL])
+      || !stringp(data[DATA]) || !sizeof(data[DATA])
+      || !stringp(data[NAME]) || !sizeof(data[NAME])
+      || !stringp(data[SENDER]) || !sizeof(data[SENDER]))
+    return 0;
+
+  data[DATA]=
+    implode(filter(explode(data[DATA], ""), #'>=, " "), "");//'))
+  data[NAME]=
+    implode(filter(explode(data[NAME], ""), #'>=, " "), "");//'))
+  switch(data[COMMAND]) {
+  case "list":
+    /* Request for a list of people listening to a certain channel. */
+    list = filter(users(), "filter_listeners",
+                        this_object(), data[CHANNEL]);
+    if (i = sizeof(list)) {
+      msg = "[" + capitalize(data[CHANNEL]) + "@" +
+        LOCAL_NAME + "] Listening:\n";
+      while(i--)
+        msg +=
+          "    " + capitalize(list[i]->query_real_name()) + "\n";
+    }
+    else
+      msg = "[" + capitalize(data[CHANNEL]) + "@" + LOCAL_NAME 
+      + "] Nobody Listening.\n";
+    INETD->_send_udp(data[NAME], ([
+                                  REQUEST: REPLY,
+                                  RECIPIENT: data[SENDER],
+                                  ID: data[ID],
+                                  DATA: msg
+                                ]));
+    return 1;
+  case "emote": /* A channel emote. */
+      type = MSG_EMOTE;
+      break;
+  default: /* A regular channel message. */
+    type = MSG_SAY;
+    break;
+  }
+  _name_ = capitalize(data[SENDER])+"@"+capitalize(data[NAME]);
+  CHMASTER->send(capitalize(data[CHANNEL]), this_object(), 
+                 data[DATA], type);
+  _name_ = 0;
+  return 1;
+}
+
+string name() { return _name_ || "<Intermud>"; }
+string Name() {return capitalize(_name_ || "<Intermud>");}
+
+private void _send(string mud, mixed data, mapping request)
+{
+  if(member(data[HOST_COMMANDS], "channel") != -1 ||
+     member(data[HOST_COMMANDS], "*") != -1)
+    INETD->_send_udp(data[HOST_NAME], request);
+}
+
+void ChannelMessage(mixed m)
+{
+  mapping request;
+  if(m[1] == this_object()) return;
+  request = ([
+              REQUEST : "channel",
+              SENDER  : m[1]->name() || capitalize(getuid(m[1])),
+              "CHANNEL": lower_case(m[0]),
+              DATA    : implode(old_explode(m[2], "\n"), " ")]);
+  if(m[3] == MSG_GEMOTE || m[3] == MSG_EMOTE)
+  { 
+    request["EMOTE"] = 1;
+    request["CMD"] = "emote";
+  }
+  walk_mapping(INETD->query("hosts") - ([lower_case(MUDNAME)]), 
+               #'_send/*'*/, request);
+}