blob: dbbccaf572a653dd050f337bfb085c125fdc9f87 [file] [log] [blame]
MG Mud User88f12472016-06-24 23:31:02 +02001// 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
14string 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]), "<","\\&lt;",1);
25 result = regreplace(result, ">","\\&gt;",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}