/* 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");
}