#include "/secure/wizlevels.h"#include "/sys/daemon.h"
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 |
| #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");} |
| #define FTPDSAVE "/secure/ARCH/ftpd" |
| 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 }

| 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 }

| 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 }

| 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 }


| nomask int player_exists | ( | string | user | ) |
| nomask mixed QueryDir | ( | string | user, | |
| string | file | |||
| ) |
| 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 }

| 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 }

| nomask int secure | ( | ) |
| 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 }

1.6.3