blob: daee34c9b00c4142878b5b33ddf4fbf741dfef1e [file] [log] [blame]
MG Mud User88f12472016-06-24 23:31:02 +02001// MorgenGrauen MUDlib
2//
3// master/ftpimp.c -- FTP Avatar
4//
5// $Id: ftpimp.c 6440 2007-08-18 23:00:49Z Zesstra $
6//
7// siehe /secure/ftpd
8
9#pragma strong_types
10
11#include "/secure/master.h"
12#define FTPD "/secure/ftpd"
13
14//private inherit "/std/shells/filesys/filesys";
15private inherit "/secure/misc/filesys/filesys";
16
17static string user; // Name des zugehoerigen Users
18
19nomask private int secure_impcall() {
20 return
21 getuid(previous_object()) == ROOTID &&
22 geteuid(previous_object()) == ROOTID;
23
24}
25
26// Nach dem Aufruf von SetUser wird der Filename geaednert, sodass
27// das normale clonep in get_dir nicht mehr geht. Hier ein ersatz.
28private nomask int my_is_clone() {
29 return member(object_name(this_object()),':')>=0;
30}
31
32nomask void create() {
33 if( !clonep(this_object()) ) {
34 set_next_reset( -1 ); // blueprint soll nicht sterben
35 return;
36 }
37 //if( secure_impcall() ) ::create();
38}
39
40nomask int SetUser( string name ) {
41 if( !secure_impcall() || !clonep(this_object()) ) return -2;
42 if( stringp(user) && user != "" ) {
43 //write( "User="+user+"\n" );
44 return -1; // schon ein name da!
45 }
46 user = lower_case(name);
47 seteuid( user );
48 set_next_reset( 1800 );
49}
50
51// Gibt einen negativen Wert zurück, wenn die Datei nicht gelesen werden
52// kann oder einen string, der die gesamten Daten des Verzeichnisses
53// enthält.
54nomask mixed GetDir(string dir)
55{
56 mixed ret; ret = "";
57 if( !secure_impcall() || !my_is_clone()) return -2;
58 if( !stringp(user) || user=="" ) return -1;
59 _ls_output( dir, &ret, user, 0x83 );
60 set_next_reset( 1800 );
61 return ret;
62}
63
64nomask void reset() {
65 destruct(this_object());
66}
67
68varargs mixed move() {
69 return -1;
70}
71
72// Fuer die Meldung auf FTP
73nomask string name() {
74 return capitalize(user);
75}