MG Mud User | 88f1247 | 2016-06-24 23:31:02 +0200 | [diff] [blame^] | 1 | // MorgenGrauen MUDlib |
| 2 | // |
| 3 | // www.finger.c |
| 4 | // |
| 5 | // $Id: www.finger.c 8755 2014-04-26 13:13:40Z Zesstra $ |
| 6 | |
| 7 | #pragma strong_types |
| 8 | #pragma combine_strings |
| 9 | |
| 10 | #include <properties.h> |
| 11 | #include <www.h> |
| 12 | #include <regexp.h> |
| 13 | |
| 14 | string Request(mapping cmds) |
| 15 | { |
| 16 | if(!sizeof(cmds) || !stringp(cmds[USER])) |
| 17 | return ERROR("Kein Nutzer angegeben!"); |
| 18 | /* |
| 19 | * Kann ja sein, dass ein Spieler auf die Idee kommt, HTML-Tags |
| 20 | * in seine Beschreibung einzubauen. Unsere Seite ist aber schon |
| 21 | * interaktiv genug. (Anm: Nur <.*>-Vorkommnisse zu ersetzen nutzt |
| 22 | * nix, da man auch mit einzelnen Zeichen Schaden machen kann. |
| 23 | */ |
| 24 | string result = regreplace(FINGER("-a "+cmds[USER]), "<","\\<",1); |
| 25 | result = regreplace(result, ">","\\>",1); |
| 26 | string *reslines = explode(result,"\n"); |
| 27 | /* |
| 28 | * Grund des kommenden Codeblocks ist , dass manche Spieler ihre |
| 29 | * Homepage mit "http://mg.mud.de" angeben, andere nur"mg.mud.de" |
| 30 | * schreiben. Damit aber der Browser den Link als absolut interpretiert, |
| 31 | * muss das http:// davor stehen, und zwar nur einmal. |
| 32 | */ |
| 33 | string *tmp = regexp(reslines,"^Homepage:"); |
| 34 | if (sizeof(tmp)&&stringp(tmp[0])&&sizeof(tmp[0])>16) { |
| 35 | string tmp2; |
| 36 | string quoted = regreplace(tmp[0],"([[\\]+*?.\\\\])","\\\\\\1", 1); |
| 37 | if (tmp[0][10..16]=="http://") |
| 38 | tmp2=sprintf("Homepage: <A HREF=\"%s\">%s</A>", |
| 39 | tmp[0][10..],tmp[0][10..]); |
| 40 | else |
| 41 | tmp2=sprintf("Homepage: <A HREF=\"http://%s\">%s</A>", |
| 42 | tmp[0][10..],tmp[0][10..]); |
| 43 | result = regreplace(result,quoted,tmp2,1); |
| 44 | } |
| 45 | tmp = regexp(reslines,"^Avatar-URI:"); |
| 46 | if (sizeof(tmp)) { |
| 47 | result = regreplace(result, |
| 48 | "Avatar-URI: ([^\n]*)", |
| 49 | "Avatar-URI: <a href=\\1>\\1</a>",1); |
| 50 | if (sizeof(regexp(({tmp[0]}),"http[s]{0,1}://",RE_PCRE))) { |
| 51 | string uri = regreplace(tmp[0], "Avatar-URI: ([^\n]*)", "\\1",1); |
| 52 | result = "<img src=\""+uri+"\" height=150 alt=\"" + capitalize(cmds[USER]) |
| 53 | + "\" /><br>" |
| 54 | + result; |
| 55 | } |
| 56 | } |
| 57 | |
| 58 | result = regreplace(result, |
| 59 | "E-Mail-Adresse: ([^\n]*)", |
| 60 | "E-Mail-Adresse: Bitte nachfragen...",1); |
| 61 | |
| 62 | result = regreplace(result, |
| 63 | "Messenger: ([^\n]*)", |
| 64 | "Messenger: Bitte nachfragen...", 1); |
| 65 | |
| 66 | result = regreplace(result, |
| 67 | "ICQ: ([^\n]*)", |
| 68 | "ICQ: Bitte nachfragen...", 1); |
| 69 | |
| 70 | return "<H2>Wer ist "+capitalize(cmds[USER])+"?</H2><HR>" |
| 71 | +"<PRE>"+result+"</PRE>"; |
| 72 | } |