Added public files

Roughly added all public files. Probably missed some, though.
diff --git a/secure/misc/twitter.c b/secure/misc/twitter.c
new file mode 100644
index 0000000..f34519e
--- /dev/null
+++ b/secure/misc/twitter.c
@@ -0,0 +1,131 @@
+/* rumatas twitter client, sendet text
+ * an einen twitterproxyprozess, der sie dann an twitter
+ * weiterschickt.
+ *
+ * version 2
+ * mit persistenter verbindung zum proxy und input-channel
+ *
+ * 25.5.2016 rumata@mg.mud.de
+ */
+
+#include <wizlevels.h>
+#include <daemon/channel.h>
+
+#define HOST "127.0.0.1"
+#define PORT 4911
+
+#define DEBUG(x) tell_object(find_player("rumata"),x+"\n")
+
+void create() {
+	if( clonep() ) return;
+	seteuid(getuid());
+}
+
+object caller;
+string msgbuf;
+
+mapping registered = ([
+	"rumata": "ru",
+	"arathorn": "ara",
+	"ark": "ark",
+	"zesstra": "ze",
+	"zook": "zo",
+	"humni": "hu",
+	"miril": "mi",
+	"gloinson": "gl"
+]);
+
+int allowed() {
+	return IS_ARCH(this_player()) || getuid(this_player())=="gloinson";
+}
+
+string sig( object pl ) {
+	string uid = getuid(pl);
+	if( !uid ) return "??";
+	string abbr = registered[uid];
+	if( !abbr ) return uid;
+	return abbr;
+}
+
+void emit( string msg ) {
+	CHMASTER->send("twitter",this_object(),msg,MSG_SAY);
+	/*
+	foreach( string uid: m_indices(registered) ) {
+		object pl = find_player(uid);
+		if( pl ) tell_object(pl,msg);
+	}*/
+}
+
+/* Offizielle API funktion
+ * xeval "/secure/misc/twitter"->twitter("@_zesstra_ welcome back")
+ */
+void twitter(string msg) {
+	int err = 0;
+	if( !allowed() ) {
+		write( "Twitter ist ARCH+Gloinson only.\n" );
+		return;
+	}
+	msg = msg + "^" + sig(this_player()) + "\n";
+	if(interactive(this_object())) {
+		tell_object(this_object(),msg);
+	} else {
+		msgbuf = msg;
+		caller = this_player();
+		if( (err=net_connect(HOST,PORT))!=0 ) {
+			write( "Konnte Tweet nicht senden. err="+err+"\n" );
+		}
+	}
+}
+
+// sonderfunktion fuer den fall, dass man die verbindung
+// aufbauen will, ohne dass etwas auf twitter erscheint
+void connect() {
+	int err = 0;
+	if( interactive(this_object()) ) return;
+	msgbuf = "";
+	caller = this_player();
+	if( (err=net_connect(HOST,PORT))!=0 ) {
+		write( "Konnte Tweet nicht connected. err="+err+"\n" );
+	}
+}
+
+varargs void logon(int flag) {
+	if( flag<0 ) {
+		tell_object(caller,"Twitterproxy antwortet nicht?\n");
+  } else {
+		enable_commands();
+		add_action("input","",1);
+		write(msgbuf);
+		if( msgbuf!="" ) emit( msgbuf );
+		//"/secure/master"->disconnect(this_object());
+	}
+}
+
+void NetDead() {
+	disable_commands();
+}
+
+string query_real_name() {
+	return "(Twitter)";
+}
+
+varargs string Name( int casus, int demon ) {
+	return "Twitter";
+}
+
+// daten werden via tell_object an dieses objekt gesendet
+// und dann nach aussen weitergeben
+void catch_tell( string msg ) {
+	if( allowed() && interactive(this_object()) ) {
+		write( msg );
+	}
+}
+
+// hier landen daten von aussen
+int input( string s ) {
+	string msg = query_verb();
+	if( s ) msg = msg + " " + s;
+	emit( msg ); //"Twitter teilt dir mit: "+msg+"\n" );
+	return 1;
+}
+