Added public files
Roughly added all public files. Probably missed some, though.
diff --git a/secure/ftpimp.c b/secure/ftpimp.c
new file mode 100644
index 0000000..daee34c
--- /dev/null
+++ b/secure/ftpimp.c
@@ -0,0 +1,75 @@
+// MorgenGrauen MUDlib
+//
+// master/ftpimp.c -- FTP Avatar
+//
+// $Id: ftpimp.c 6440 2007-08-18 23:00:49Z Zesstra $
+//
+// siehe /secure/ftpd
+
+#pragma strong_types
+
+#include "/secure/master.h"
+#define FTPD "/secure/ftpd"
+
+//private inherit "/std/shells/filesys/filesys";
+private inherit "/secure/misc/filesys/filesys";
+
+static string user; // Name des zugehoerigen Users
+
+nomask private int secure_impcall() {
+ return
+ getuid(previous_object()) == ROOTID &&
+ geteuid(previous_object()) == ROOTID;
+
+}
+
+// Nach dem Aufruf von SetUser wird der Filename geaednert, sodass
+// das normale clonep in get_dir nicht mehr geht. Hier ein ersatz.
+private nomask int my_is_clone() {
+ return member(object_name(this_object()),':')>=0;
+}
+
+nomask void create() {
+ if( !clonep(this_object()) ) {
+ set_next_reset( -1 ); // blueprint soll nicht sterben
+ return;
+ }
+ //if( secure_impcall() ) ::create();
+}
+
+nomask int SetUser( string name ) {
+ if( !secure_impcall() || !clonep(this_object()) ) return -2;
+ if( stringp(user) && user != "" ) {
+ //write( "User="+user+"\n" );
+ return -1; // schon ein name da!
+ }
+ user = lower_case(name);
+ seteuid( user );
+ set_next_reset( 1800 );
+}
+
+// Gibt einen negativen Wert zurück, wenn die Datei nicht gelesen werden
+// kann oder einen string, der die gesamten Daten des Verzeichnisses
+// enthält.
+nomask mixed GetDir(string dir)
+{
+ mixed ret; ret = "";
+ if( !secure_impcall() || !my_is_clone()) return -2;
+ if( !stringp(user) || user=="" ) return -1;
+ _ls_output( dir, &ret, user, 0x83 );
+ set_next_reset( 1800 );
+ return ret;
+}
+
+nomask void reset() {
+ destruct(this_object());
+}
+
+varargs mixed move() {
+ return -1;
+}
+
+// Fuer die Meldung auf FTP
+nomask string name() {
+ return capitalize(user);
+}