Code fuer altes proftpd-Modul entfernt.
Der Code, der die Zugriffsrechte dynamisch fuer das
Mud-Modul vom proftpd ermittelt und via UDP zurueck-
gemeldet hat, wurde entfernt.
Das Modul wird seit vielen Jahren nicht mehr benutzt,
weil es nicht gewartet wurde und nach einem Update
des proftpd nicht mehr funktionierte.
Change-Id: Ifd3c49882f7b2de2499e048d303e40f2b05ab495
diff --git a/secure/ftpd.c b/secure/ftpd.c
deleted file mode 100644
index 3aaa5e6..0000000
--- a/secure/ftpd.c
+++ /dev/null
@@ -1,178 +0,0 @@
-/**************************************************************************
-** ftpd.c
-** Rumata@mg
-** 13.6.1999
-**
-** Ermittlung der Zugriffsrechte aus den Userdaten.
-**
-** Dieses Objekt wird vom ftpimp aus aufgerufen, der wiederum vom master
-** aufgerufen wird, um die Zugriffsrechte zu pruefen.
-**
-** Fuktionsweise:
-** + Im Master wird vom UNIX-ftpd aus FtpAccess (/secure/master/network)
-** aufgerufen.
-** + Dieses ruft dann, sobald ein Zugriff erkannt wird
-** QueryRead, QueryWrite oder QueryDir auf.
-** + Diese fragen den Master, ob der Zugriff legal ist.
-** + QueryDir liefert auch gleich das Ergebnis mit.
-**
-** Um ftp-zugriffe überwachen zu können, kann der ftpd eine liste der
-** ueberwachten spieler liefern und deren Zugriffe auf dem FTP Kanal ausgeben.
-**
-** add( name, zeit ) - FTP Zugriffe des Spielers 'name' werden protokolliert.
-** Nach 'zeit' wird dieser Zugriff automatisch beendet.
-** Ist 'zeit' <= 0, wir auf ewig ueberwacht.
-** sub( name ) - FTP Snoop fuer Spieler 'name' direkt aufheben.
-** list() - Mapping der ueberwachten Spieler zurueckgeben.
-**
-** FILES:
-** /secure/master/network.c
-** /secure/ftpd.c
-** /std/shells/filesys/ftpimp.c
-** /secure/ARCH/ftpd.o
-** /p/daemon/channeld.init
-**
-***************************************************************************/
-
-#include "/secure/wizlevels.h"
-#include "/sys/daemon.h"
-
-#define FTPDSAVE "/secure/ARCH/ftpd"
-#define FTPD_CH "FTP"
-#define BBMASTER "/secure/bbmaster"
-
-mapping monitored;
-// Zu jedem Spielernamen wird vermerkt, wie lange die Ueberwachung dauern soll.
-// Zahlen <= 0 bedeuten fuer immer.
-
-nomask void create() {
- if( clonep(this_object()) ) {
- destruct( this_object() );
- return;
- }
- seteuid( getuid() );
- if( !restore_object(FTPDSAVE) )
- monitored = ([]);
-}
-
-nomask int player_exists( string user ) {
- user = lower_case(user);
- if( !stringp( user ) || sizeof( user ) < 1 ) return 0;
- return master()->find_userinfo(user);
-}
-
-nomask varargs int add( string user, int timeout ) {
- if( !ARCH_SECURITY ) return -1;
- if( !player_exists(user) ) return -2;
- monitored[user] = timeout;
- save_object( FTPDSAVE );
- return 0;
-}
-
-nomask int sub( string user ) {
- if( !ARCH_SECURITY ) return -1;
- if( !player_exists(user) ) return -2;
- monitored -= ([ user ]);
- save_object( FTPDSAVE );
- return 0;
-}
-
-nomask mixed list() {
- if( !ARCH_SECURITY ) return -1;
- return deep_copy(monitored);
-}
-
-#define NEWIMP "yes"
-
-private object findFtpImpFor( string user ) {
-#ifdef NEWIMP
- return "/secure/impfetch"->impFor( lower_case(user) );
-#else
- object imp;
- string fname;
-
- user = lower_case( user );
- fname = "/ftpimp:" + user;
- imp = find_object( fname );
- if( !objectp(imp) ) {
- imp = clone_object( "secure/ftpimp" );
- imp->SetUser(user);
- rename_object( imp, fname );
- }
- return imp;
-#endif
-}
-
-private nomask void msg( string user, string m ) {
- int timeout;
- object r;
-
- if( !stringp(user) ) return;
- m += "\n";
- if( (r=find_player("rumata")) && user=="atamur" ) {
- timeout = CHMASTER->send(FTPD_CH,findFtpImpFor(user), m );
- tell_object( r, sprintf("%O\n", findFtpImpFor(user) ) );
- }
- BBMASTER->ftpbb(user,m);
- if( !member(monitored,user) ) return;
- timeout = monitored[user];
- if( timeout > 0 && timeout < time() ) {
- sub( user );
- return;
- }
- CHMASTER->send(FTPD_CH,findFtpImpFor(user), m );
-}
-
-nomask int secure() {
- return previous_object()==find_object(MASTER);
-}
-
-nomask mixed QueryRead( string user, string file ) {
- if( !secure() ) return -1;
- if( (IS_WIZARD(user) || file[0..4]=="/open")
- && file[0] == '/'
- && MASTER->valid_read(file, user, "read_file", 0)
- ) {
- msg( user, "read " + file );
- return "OK";
- } else {
- return "FAIL";
- }
-}
-
-nomask mixed QueryWrite( string user, string file ) {
- if( !secure() ) return -1;
- if( file[0] == '/'
- && MASTER->valid_write( file, user, "write_file", 0)
- ) {
- msg( user, "write " + file );
- return "OK";
- } else {
- return "FAIL";
- }
-}
-
-#define DBG(x) if(find_player("rumata")){tell_object(find_player("rumata"),"FTPD:"+x+"\n");}
-
-//nomask mixed QueryDir( string user, string file ) {
-// string reply;
-// object imp;
-//
-// if( !secure() ) return -1;
-// reply = QueryRead( user, file );
-// if( reply=="FAIL" ) return -1;
-//
-// imp = findFtpImpFor( user );
-// if( !objectp(imp) ) return -1; // should never happen
-//
-// return imp->GetDir( file );
-//}
-
-nomask mixed QueryDir( string user, string file ) {
- if( !secure() ) return -1;
- if( file[0] == '/'
- && MASTER->valid_read( file+"/*", user, "get_dir", 0))
- return "OK";
- else
- return "FAIL";
-}
diff --git a/secure/ftpimp.c b/secure/ftpimp.c
deleted file mode 100644
index daee34c..0000000
--- a/secure/ftpimp.c
+++ /dev/null
@@ -1,75 +0,0 @@
-// 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);
-}
diff --git a/secure/master/network.c b/secure/master/network.c
index e681f82..f60cc40 100644
--- a/secure/master/network.c
+++ b/secure/master/network.c
@@ -60,128 +60,6 @@
return (passwd == pwhash);
}
-
-static void FtpAccess( string host, string message, int port )
-{
- string *comp, reply, head;
-#if __EFUN_DEFINED__(send_udp)
- comp = efun::explode( message, "\t" );
-#define FTP_ID 0
-#define FTP_SEQ 1
-#define FTP_TAG 2
-#define FTP_CMD 3
-#define FTP_ARG1 4
-#define FTP_ARG2 5
-#define FTP_ARG3 6
-
- if ( sizeof(comp) <= FTP_CMD || lower_case(comp[FTP_TAG]) != "req" ){
- log_file( "IMP_MSGS", "Host: " + host + ":" + port + " - '" +
- message + "'\n" );
- return;
- }
-
- reply = "INVALID";
-
- head = sprintf( "%s\t%s\tRPLY\t%s\t",
- comp[FTP_ID], comp[FTP_SEQ], comp[FTP_CMD] );
-
- switch ( lower_case(comp[FTP_CMD]) ){
- case "user":
- if ( sizeof(comp) <= FTP_ARG1 )
- break;
-
- if ( IS_LEARNER(lower_case(comp[FTP_ARG1])) )
- reply = "/players/" + lower_case(comp[FTP_ARG1]);
- else
- reply = "NONE";
- break;
-
- case "pass":
- if ( sizeof(comp) <= FTP_ARG2 )
- break;
-
- comp[FTP_ARG1] = lower_case(comp[FTP_ARG1]);
-
- if ( IS_LEARNER(comp[FTP_ARG1]) &&
- !"/secure/master"->QueryTBanished(comp[FTP_ARG1]) ){
- if ( CheckPasswd( comp[FTP_ARG1], comp[FTP_ARG2] ) )
- reply = "OK";
- else {
- if ( get_wiz_level( comp[FTP_ARG1] ) < ARCH_LVL )
- log_file( "LOGINFAIL",
- sprintf( "PASSWORD: (FTP) %s %s\n",
- comp[FTP_ARG1],
- ctime(time()) ) );
- else
- log_file( "ARCH/LOGINFAIL",
- sprintf( "PASSWORD: (FTP) %s %s\n",
- comp[FTP_ARG1],
- ctime(time()) ) );
- }
- }
- else
- reply = "FAIL";
- break;
-
- case "read":
-DEBUG("-FtpAccess----\nHost:"+host+"Message:\n"+message+"\n--------------\n");
- if ( sizeof(comp) <= FTP_ARG2 )
- break;
-
- if ( comp[FTP_ARG2][0] == '/' &&
- valid_read( comp[FTP_ARG2], lower_case(comp[FTP_ARG1]),
- "read_file", 0 ) ){
-
- BBMASTER->ftpbb( lower_case(comp[FTP_ARG1]),
- "read " + comp[FTP_ARG2] + "\n" );
- reply = "OK";
- }
- else
- reply = "FAIL";
- break;
-
- case "writ":
-DEBUG("-FtpAccess----\nHost:"+host+"Message:\n"+message+"\n--------------\n");
- if ( sizeof(comp) <= FTP_ARG2 )
- break;
-
- if ( comp[FTP_ARG2][0] == '/' &&
- valid_write( comp[FTP_ARG2], lower_case(comp[FTP_ARG1]),
- "write_file", 0 ) ){
-
- BBMASTER->ftpbb( lower_case(comp[FTP_ARG1]),
- "write " + comp[FTP_ARG2] + "\n" );
- reply = "OK";
- }
- else
- reply = "FAIL";
- break;
-
- case "list":
-DEBUG("-FtpAccess----\nHost:"+host+"Message:\n"+message+"\n--------------\n");
- if ( sizeof(comp) <= FTP_ARG2 )
- break;
-
- if ( comp[FTP_ARG2][0] == '/' &&
- valid_read( comp[FTP_ARG2], lower_case(comp[FTP_ARG1]),
- "read_file", 0 ) )
- reply = "OK";
- else
- reply = "FAIL";
- break;
-
- default:
-DEBUG("-FtpAccess----\nHost:"+host+"Message:\n"+message+"\n--------------\n");
- log_file( "IMP_MSGS", "Host: " + host + ":" + port + " - '" +
- message + "'\n" );
- break;
- }
-
- send_udp( host, port, head+reply );
-#endif
-}
-
-
static int doReadMail( string file )
{
string str, *lines, *parts, *tmp;
@@ -410,17 +288,6 @@
return;
}
- if (message[0..4]=="NFTPD") {
-#if __HOST_NAME__==MUDHOST
- if (host!=FTPD_IP) {
- DEBUG(sprintf("INVALID HOST: %s\n",host));
- return;
- }
-#endif
- FtpAccess(host,message,port);
- return;
- }
-
if (message[0..9]=="udp_query:") {
return udp_query(message[10..],host,port);
}