ftpd.c-Dateireferenz

#include "/secure/wizlevels.h"
#include "/sys/daemon.h"
Include-Abhängigkeitsdiagramm für ftpd.c:

gehe zum Quellcode dieser Datei

Makrodefinitionen

#define FTPDSAVE   "/secure/ARCH/ftpd"
#define FTPD_CH   "FTP"
#define BBMASTER   "/secure/bbmaster"
#define NEWIMP   "yes"
#define DBG(x)   if(find_player("rumata")){tell_object(find_player("rumata"),"FTPD:"+x+"\n");}

Funktionen

nomask void create ()
nomask int player_exists (string user)
nomask varargs int add (string user, int timeout)
nomask int sub (string user)
nomask mixed list ()
private object findFtpImpFor (string user)
private nomask void msg (string user, string m)
nomask int secure ()
nomask mixed QueryRead (string user, string file)
nomask mixed QueryWrite (string user, string file)
nomask mixed QueryDir (string user, string file)

Variablen

mapping monitored

Makro-Dokumentation

#define BBMASTER   "/secure/bbmaster"

Definiert in Zeile 42 der Datei ftpd.c.

Wird benutzt von __set_bb(), FtpAccess(), getCmds(), modify_command() und msg().

#define DBG ( x   )     if(find_player("rumata")){tell_object(find_player("rumata"),"FTPD:"+x+"\n");}

Definiert in Zeile 155 der Datei ftpd.c.

#define FTPD_CH   "FTP"

Definiert in Zeile 41 der Datei ftpd.c.

Wird benutzt von msg().

#define FTPDSAVE   "/secure/ARCH/ftpd"

Definiert in Zeile 40 der Datei ftpd.c.

Wird benutzt von add(), create() und sub().

#define NEWIMP   "yes"

Definiert in Zeile 85 der Datei ftpd.c.


Dokumentation der Funktionen

nomask varargs int add ( string  user,
int  timeout 
)

Definiert in Zeile 64 der Datei ftpd.c.

Benutzt ARCH_SECURITY, FTPDSAVE, monitored, player_exists() und save_object().

00064                                                    {
00065   if( !ARCH_SECURITY ) return -1;
00066   if( !player_exists(user) ) return -2;
00067   monitored[user] = timeout;
00068   save_object( FTPDSAVE );
00069   return 0;
00070 }

Hier ist ein Graph der zeigt, was diese Funktion aufruft:

nomask void create (  ) 

Definiert in Zeile 48 der Datei ftpd.c.

Benutzt destruct(), FTPDSAVE, monitored und restore_object().

00048                      {
00049   if( clonep(this_object()) ) {
00050     destruct( this_object() );
00051     return;
00052   }
00053   seteuid( getuid() );
00054   if( !restore_object(FTPDSAVE) )
00055     monitored = ([]);
00056 }

Hier ist ein Graph der zeigt, was diese Funktion aufruft:

private object findFtpImpFor ( string  user  ) 

Definiert in Zeile 87 der Datei ftpd.c.

Wird benutzt von msg().

00087                                             {
00088 #ifdef NEWIMP
00089   return "/secure/impfetch"->impFor( lower_case(user) );
00090 #else
00091   object imp;
00092   string fname;
00093 
00094   user = lower_case( user );
00095   fname = "/ftpimp:" + user;
00096   imp = find_object( fname );
00097   if( !objectp(imp) ) {
00098     imp = clone_object( "secure/ftpimp" );
00099     imp->SetUser(user);
00100     rename_object( imp, fname );
00101   }
00102   return imp;
00103 #endif
00104 }

Hier ist ein Graph der zeigt, wo diese Funktion aufgerufen wird:

nomask mixed list (  ) 

Definiert in Zeile 80 der Datei ftpd.c.

Benutzt ARCH_SECURITY und monitored.

00080                     {
00081   if( !ARCH_SECURITY ) return -1;
00082   return deep_copy(monitored);
00083 }

private nomask void msg ( string  user,
string  m 
)

Definiert in Zeile 106 der Datei ftpd.c.

Benutzt BBMASTER, CHMASTER, find_player(), findFtpImpFor(), FTPD_CH, monitored und sub().

Wird benutzt von _channel(), _check_wear_restrictions(), _echoto(), _make(), AddExit(), depointer_adj(), DoChangeRow(), doUnwearMessage(), DumpMiniQuests(), error(), failed_to_deliver(), FeelIt(), Forward(), ForwardArea(), give_notify(), gtell(), heart_beat(), lisp(), mampf_heilung(), memo(), MixedOut(), MoveMessage(), NotifyACChange(), QueryRead(), QueryWrite(), reset_doors(), retry_send(), tmhist(), udp_channel() und update().

00106                                                  {
00107   int timeout;
00108   object r;
00109 
00110   if( !stringp(user) ) return;
00111   m += "\n";
00112   if( (r=find_player("rumata")) && user=="atamur" ) {
00113      timeout = CHMASTER->send(FTPD_CH,findFtpImpFor(user), m );
00114      tell_object( r, sprintf("%O\n", findFtpImpFor(user) ) );
00115   }
00116   BBMASTER->ftpbb(user,m);
00117   if( !member(monitored,user) ) return;
00118   timeout = monitored[user];
00119   if( timeout > 0 && timeout < time() ) {
00120     sub( user );
00121     return;
00122   }
00123   CHMASTER->send(FTPD_CH,findFtpImpFor(user), m );
00124 }

Hier ist ein Graph der zeigt, was diese Funktion aufruft:

Hier ist ein Graph der zeigt, wo diese Funktion aufgerufen wird:

nomask int player_exists ( string  user  ) 

Definiert in Zeile 58 der Datei ftpd.c.

00058                                         {
00059   user = lower_case(user);
00060   if( !stringp( user ) || strlen( user ) < 1 ) return 0;
00061   return file_size( "/save/"+user[0..0]+"/"+user+".o" ) > 0;
00062 }

nomask mixed QueryDir ( string  user,
string  file 
)

Definiert in Zeile 171 der Datei ftpd.c.

Benutzt MASTER und secure().

00171                                                   {
00172   if( !secure() ) return -1;
00173   if( file[0] == '/'
00174       && MASTER->valid_read( file+"/*", user, "get_dir", 0))
00175       return "OK";
00176   else 
00177     return "FAIL";
00178 }

Hier ist ein Graph der zeigt, was diese Funktion aufruft:

nomask mixed QueryRead ( string  user,
string  file 
)

Definiert in Zeile 130 der Datei ftpd.c.

Benutzt IS_WIZARD, MASTER, msg() und secure().

00130                                                    {
00131   if( !secure() ) return -1;
00132   if( (IS_WIZARD(user) || file[0..4]=="/open")
00133       && file[0] == '/'
00134       && MASTER->valid_read(file, user, "read_file", 0)
00135       ) {
00136     msg( user, "read " + file );
00137     return "OK";
00138   } else {
00139     return "FAIL";
00140   }
00141 }

Hier ist ein Graph der zeigt, was diese Funktion aufruft:

nomask mixed QueryWrite ( string  user,
string  file 
)

Definiert in Zeile 143 der Datei ftpd.c.

Benutzt MASTER, msg() und secure().

00143                                                     {
00144   if( !secure() ) return -1;
00145   if( file[0] == '/'
00146       && MASTER->valid_write( file, user, "write_file", 0)
00147       ) {
00148     msg( user, "write " + file );
00149     return "OK";
00150   } else {
00151     return "FAIL";
00152   }
00153 }

Hier ist ein Graph der zeigt, was diese Funktion aufruft:

nomask int secure (  ) 

Definiert in Zeile 126 der Datei ftpd.c.

Benutzt MASTER.

00126                     {
00127   return previous_object()==find_object(MASTER);
00128 }

nomask int sub ( string  user  ) 

Definiert in Zeile 72 der Datei ftpd.c.

Benutzt ARCH_SECURITY, FTPDSAVE, monitored, player_exists() und save_object().

00072                               {
00073   if( !ARCH_SECURITY ) return -1;
00074   if( !player_exists(user) ) return -2;
00075   monitored -= ([ user ]);
00076   save_object( FTPDSAVE );
00077   return 0;
00078 }

Hier ist ein Graph der zeigt, was diese Funktion aufruft:


Variablen-Dokumentation

mapping monitored

Definiert in Zeile 44 der Datei ftpd.c.

Erzeugt am Thu Jun 3 14:41:21 2010 für MorgenGrauen Mudlib von  doxygen 1.6.3