Added public files
Roughly added all public files. Probably missed some, though.
diff --git a/secure/PlayerDeleter.c b/secure/PlayerDeleter.c
new file mode 100644
index 0000000..1b1ce2e
--- /dev/null
+++ b/secure/PlayerDeleter.c
@@ -0,0 +1,87 @@
+// MorgenGrauen MUDlib
+//
+// master.c -- master object
+//
+// $Id: master.c 7336 2009-11-19 20:37:31Z Zesstra $
+#pragma strong_types
+#pragma no_clone
+#pragma no_shadow
+#pragma no_inherit
+#pragma verbose_errors
+#pragma combine_strings
+#pragma pedantic
+#pragma range_check
+#pragma warn_deprecated
+
+#include <files.h>
+#include <wizlevels.h>
+#include <events.h>
+#include <config.h>
+#include <properties.h>
+
+protected void create() {
+ seteuid(getuid(this_object()));
+}
+
+public varargs int Delete(string plname, int nobanish, int noclone) {
+ // definitiv nur fuer EM+ und nur Objekt mit Level 66+ in der Callchain.
+ if (!ARCH_SECURITY || process_call())
+ return -1;
+
+ // existiert der Spieler?
+ if (!stringp(plname)
+ || !master()->find_userinfo(plname))
+ return -2;
+ // gibt es das Spielerobjekt?
+ object plob = find_player(plname) || find_netdead(plname);
+ // wenn kein Objekt: Dummyobjekt erzeugen
+ if (!objectp(plob) && !noclone) {
+ catch(plob = __create_player_dummy(plname));
+ }
+
+ int wlevel = query_wiz_level(plname);
+ string part_filename="/"+plname[0..0]+"/"+plname+".o";
+
+ // ggf. banishen
+ if (!nobanish && wlevel >= LEARNER_LVL)
+ master()->BanishName(plname, "So hiess mal ein Magier hier", 1);
+ else if (!nobanish && wlevel >= SEER_LVL)
+ master()->BanishName(plname, "So hiess mal ein Seher hier", 1);
+
+ // Spielpausen aufheben
+ master()->TBanishName(plname, 0);
+
+ // loggen
+ log_file("ARCH/ADMIN_USERDELETE",
+ sprintf("%s: %s geloescht durch %s (%s)\n",
+ strftime("%y%m%d-%H%M%S"),
+ plname,
+ secure_euid(),
+ to_string(query_ip_number(this_interactive())) ));
+
+
+ // Loesch-Event ausloesen
+ if (plob) {
+ EVENTD->TriggerEvent(EVT_LIB_PLAYER_DELETION, ([
+ E_PLNAME: plname,
+ E_ENVIRONMENT: environment(plob),
+ E_GUILDNAME: plob->QueryProp(P_GUILD) ]) );
+
+ // Spielerobjekt zerstoeren
+ plob->move("/room/void", M_NOCHECK);
+ plob->remove(1);
+ }
+
+ // Files loeschen
+ if (file_size("/"SECUREDIR"/save"+part_filename) > FSIZE_NOFILE)
+ rm("/"SECUREDIR"/save"+part_filename);
+ if (file_size("/"LIBSAVEDIR + part_filename) > FSIZE_NOFILE)
+ rm("/"LIBSAVEDIR + part_filename);
+ if (file_size("/"MAILDIR + part_filename) > FSIZE_NOFILE)
+ rm("/"MAILDIR + part_filename);
+
+ master()->RemoveFromCache(plname);
+
+ return 1;
+}
+