/* Playground+ - web.c * * Some basic stuff for putting talker info on the talker's webpage. Assuming, of course, that * your talker and your webpage are in the same account ;) * * Copyright (c) 2001 Will Fischer (stratocaster) *------------------------------------------------------------------------------------------------- */ #include <stdio.h> #include <string.h> #include <stdlib.h> #include <fcntl.h> #include <unistd.h> #include <ctype.h> #include <sys/socket.h> #include "include/autoconfig.h" #include "include/config.h" #include "include/player.h" #include "include/proto.h" #define PATH "../web" /* where do we want this file to go? */ #define FILENAME "who.html" /* what do we want the file to be called? */ #define ZONE "GMT" /* timezone your talker is in... */ #define BGCOLOR "#BEC0C8" #define TEXT "#213963" #define LINK "#330099" #define VLINK "#3333CC" void html_who(void) { FILE *fp; char *fname; char string[560]; player *scan; fname = malloc(strlen(string) + 15); if (!fname) { LOGF("error", "no memory to malloc in html_who (web.c)"); return; } sprintf(fname, "%s/%s", PATH, FILENAME); fp = fopen(fname, "w+"); if (!fp) { LOGF("error", "can't send text to '%s' in html_who (web.c)", fname); free(fname); return; } fprintf(fp, "<html>\n"); fprintf(fp, "<body bgcolor = \"%s\" text = \"%s\" link = \"%s\" vlink = \"%s\">\n", BGCOLOR, TEXT, LINK, VLINK); fprintf(fp, "<center>Currently logged onto %s, as of %s (%s)</center>\n", get_config_msg("talker_name"), sys_time(), ZONE); fprintf(fp, "<br>\n"); fprintf(fp, "<table border=\"1\" align=\"center\" cellspacing=\"2\" cellpadding=\"2\">\n"); fprintf(fp, "<tr><td><center><font size=6>Name</center></td><td><center><font size=6>URL</center></td>" "<td><center><font size=6>ICQ number</center></td><td><center><font size=6>AIM " "name</center></td></tr></font>"); for (scan = flatlist_start; scan; scan = scan->flat_next) { if (scan->alt_email[0] && scan->icq && scan->aim[0]) { if (!strstr(scan->alt_email, "http://")) sprintf(string, "<tr><td><center>%s</center></td>" "<td><center><a href=\"http://%s\">http://%s</a></center></td><td><center>%d</center></td>" "<td><center><a href=\"aim:addbuddy?screenname=%s\">%s</a></center></td></tr>", scan->name, scan->alt_email, scan->alt_email, scan->icq, scan->aim, scan->aim); else sprintf(string, "<tr><td><center>%s</center></td>" "<td><center><a href=\"%s\">%s</a></center></td><td><center>%d</center></td>" "<td><center><a href=\"aim:addbuddy?screenname=%s\">%s</a></center></td></tr>", scan->name, scan->alt_email, scan->alt_email, scan->icq, scan->aim, scan->aim); } else if (scan->alt_email[0] && scan->icq) { if (!strstr(scan->alt_email, "http://")) sprintf(string, "<tr><td><center>%s</center></td>" "<td><center><a href=\"http://%s\">%s</a></center></td><td><center>%d</center></td>" "<td><center>-</center></td></tr>", scan->name, scan->alt_email, scan->alt_email, scan->icq); else sprintf(string, "<tr><td><center>%s</center></td>" "<td><center><a href=\"%s\">%s</a></center></td><td><center>%d</center></td>" "<td><center>-</center></td></tr>", scan->name, scan->alt_email, scan->alt_email, scan->icq); } else if (scan->alt_email[0] && scan->aim[0]) { if (!strstr(scan->alt_email, "http://")) sprintf(string, "<tr><td><center>%s</center></td>" "<td><center><a href=\"http://%s\">%s</a></center></td><td><center>-</center></td>" "<td><center><a href=\"aim:addbuddy?screenname=%s\">%s</a></center></td></tr>", scan->name, scan->alt_email, scan->alt_email, scan->aim, scan->aim); else sprintf(string, "<tr><td><center>%s</center></td><td><center>" "<a href=\"%s\">%s</a></center></td><td><center>-</center></td>" "<td><center><a href=\"aim:addbuddy?screenname=%s\">%s</a></center></td></tr>", scan->name, scan->alt_email, scan->alt_email, scan->aim, scan->aim); } else if (scan->icq && scan->aim[0]) { sprintf(string, "<tr><td><center>%s</center></td><td><center>-</center></td>" "<td><center>%d</center></td>" "<td><center><a href=\"aim:addbuddy?screenname=%s\">%s</a></center></td></tr>", scan->name, scan->icq, scan->aim, scan->aim); } else if (scan->alt_email[0]) { if (!strstr(scan->alt_email, "http://")) sprintf(string, "<tr><td><center>%s</center></td>" "<td><center><a href=\"http://%s\">http://%s</a></center></td>" "<td><center>-</center></td><td><center>-</center></td></tr>", scan->name, scan->alt_email, scan->alt_email); else sprintf(string, "<tr><td><center>%s</center></td><td><center><a href=\"%s\">%s</a></center></td>" "<td><center>-</center></td><td><center>-</center></td></tr>", scan->name, scan->alt_email, scan->alt_email); } else if (scan->icq) { sprintf(string, "<tr><td><center>%s</center></td><td><center>-</center></td>" "<td><center>%d</center></td><td><center>-</center></td></tr>", scan->name, scan->icq); } else if (scan->aim[0]) { sprintf(string, "<tr><td><center>%s</center></td><td><center>-</center></td>" "<td><center>-</center></td>" "<td><center><a href=\"aim:addbuddy?screenname=%s\">%s</a></center></td></tr>", scan->name, scan->aim, scan->aim); } else { sprintf(string, "<tr><td><center>%s</center></td><td><center>-</center></td>" "<td><center>-</center></td><td><center>-</center></td></tr>", scan->name); } fprintf(fp, "%s\n", string); } fprintf(fp, "</table>\n"); fprintf(fp, "<center>Note: Clicking a person's AIM name will add them to your buddy list," " if you have AOL Instant Messenger.</center>"); fprintf(fp, "</html>\n"); fclose(fp); free(fname); } void set_aim(player * p, char *str) { if (!*str) { TELLPLAYER(p, " You set your AIM name to... erm... nothing!\n"); strcpy(p->aim, ""); return; } if (p->system_flags & NO_MSGS) { TELLPLAYER(p, " Sorry, but you have been prevented from changing this.\n"); return; } if (contains_dynatext(p, str) || strstr(str, "^")) { TELLPLAYER(p, " You may not have colour or dynatext in your AIM name.\n"); return; } strncpy(p->aim, str, MAX_SPODCLASS - 3); TELLPLAYER(p, " You set your AIM name to '%s'\n", p->aim); } void view_player_aim(player * p, char *str) { player *scan, *start; int pages = 1, page, line; char *oldstack, middle[80]; oldstack = stack; if (true_strlen(str) < 1) page = 1; else page = atoi(str); if (page < 1) { tell_player(p, " Usage : list_aim [<pagenumber>]\n"); return; } scan = flatlist_start; start = NULL; line = 0; for (scan = flatlist_start; scan; scan = scan->flat_next) { if (pages <= page && line == 0) start = scan; if (scan->aim[0] != 0) line++; if (line > TERM_LINES - 2) { line = 0; pages++; } } if (page > pages) page = pages; pstack_mid("Listing of all active players' AIM names"); line = 0; for (; start; start = start->flat_next) { if (line > TERM_LINES) break; if (start->aim[0] != 0) { sprintf(stack, "%-19s *", start->name); stack = strchr(stack, 0); strcpy(stack, start->aim); stack = strchr(stack, 0); *stack++ = '\n'; line++; } } sprintf(middle, "Page %d of %d", page, pages); pstack_mid(middle); *stack++ = 0; tell_player(p, oldstack); stack = oldstack; return; } void webstuff_version(void) { stack += sprintf(stack, " -=*> WebstuFF (by stratocaster) installed.\n"); }