#!/usr/bin/perl use strict; use CGI qw/:standard/; use CGI::Carp qw(fatalsToBrowser carpout); ########################################################################### # # # addalias version 2.0 by deadlock (deadlock@cheeseheadz.net) # # # # This script can be used on a webpage for users to enter and edit their # # own info for the pisg ircstats program by mbrix. # # # # addalias v2+ is based on the original addalias program by Doomshammer # # # ########################################################################### ###################### ### Config section ### ###################### # File locations: my $pisg_config="/path/to/pisg.cfg"; # Page layout: my $c_bgcolor="#FFFFFF"; my $c_text="#000000"; my $c_link="blue"; my $c_vlink="#C0C0C0"; my $c_alink="#C0FFC0"; my $c_border="#FFFFFF"; my $title="IRC statistics - user addition page"; # Text on the main page my $txthead1="In this form you can enter the settings (aliases, link and user picture) for your nickname in the IRC-stats."; my $txthead2="Nicknames are allowed only once."; my $txtnick="Nickname"; my $txtalias="Alias(es)"; my $txturl="URL/E-Mail"; my $txtpic="Userpic"; my $txtsex="Sex"; my $txtmale="M"; my $txtfemale="F"; my $txtignore="Ignore me"; my $btnsubmit="Submit"; my $btnupdate="Update"; my $txtfoot1="To update your settings, just enter your nickname and click Submit to retrieve your current settings."; my $txthelp="For help on this form click here."; my $txtupdate="These are your current settings. Edit them where needed and click Update to update your info."; my $txtaddok="Your nickname was successfully added.:"; my $txtignoreon="You activated ignore and will not appear in the stats."; my $txtupdateok="Your info was successfully updated.:"; # Helptext: my $nickhelp="Enter the name you want to use in the stats here."; my $aliashelp="Add all aliases you use here, seperated by spaces, so they will be joined in the stats. A * is allowed as a wildcard. For example: MyNick[Zzz], MyNick-afk and MyNick-work could be entered as 'MyNick[Zzz] MyNick-*' or just as 'MyNick*'"; my $urlhelp="You can enter a webpage or e-mail adress here to be linked to your nick in the stats."; my $pichelp="If you enter a link to a picture here it will be added to your stats on the page."; my $sexhelp="This setting is used to determine if lines in the stats should read 'his' or 'her' when referring to you."; my $ignorehelp="If you don't want to be included in the stats, select this option."; ################################### ### End config section ### ### do not edit below this line ### ################################### # Main program my $path = path_info(); $path =~ s!^/!!; my (%oldnicks, @users, @nick); my ($frm_nick, $frm_alias, $frm_link, $frm_pic, $frm_sex, $frm_ignore); my ($old_nick, $old_alias, $old_link, $old_pic, $old_sex, $old_ignore); my ($old_sexm, $old_sexf, $old_ignr); my ($cfg, $fnd); my ($submitbtn, $frmaction); htmlheader(); if (!$path) { $submitbtn = $btnsubmit; $frmaction="\"addalias.pl/input\""; $txtupdate = ""; mainpage(); } elsif ($path eq 'help') { helppage(); } elsif ($path eq 'input') { readparams(); $cfg = read_config(); if ($cfg ne "1") { $fnd = check_if_found(); if ($fnd eq "1") { $submitbtn = $btnupdate; $frmaction="\"update\""; if ($old_sex eq "m" or $old_sex eq "M"){ $old_sexm = "checked"; } elsif ($old_sex eq "f" or $old_sex eq "F"){ $old_sexf = "checked"; } if ($old_ignore eq "1"){ $old_ignr = "checked"; } $txtfoot1=""; mainpage(); } else { addinfo(); } } else { addinfo(); } } elsif ($path eq 'update') { readparams(); $cfg = read_config(); updateinfo(); } else { print "Illegal calling of script
\n"; } htmlfooter(); # Subs sub htmlheader { print < $title HTML } sub htmlfooter { print < HTML } sub mainpage { print <$txthead1
$txthead2

$txtupdate
$txtnick
$txtalias
$txturl
$txtpic
$txtsex $txtmale$txtfemale
$txtignore
$txtfoot1
$txthelp
HTML } sub helppage { print <$txtnick:
$nickhelp
$txtalias:
$aliashelp
$txturl:
$urlhelp
$txtpic:
$pichelp
$txtsex:
$sexhelp
$txtignore:
$ignorehelp
HTML } sub readparams { $frm_nick = param('nick'); $frm_alias = param('alias'); $frm_link = param('link'); $frm_pic = param('pic'); $frm_sex = param('sex'); $frm_ignore = param('ignore'); } sub read_config { open(FILE, "<$pisg_config") or die("Error opening pisg config file: $!"); my $i = 0; while() { if($_ =~ /^/ ) { my $alias = $1; $oldnicks{$nick[$i]}{'alias'} = $alias; } if ($users[$i] =~ /link="(\S+)"(.*)/) { my $link = $1; $oldnicks{$nick[$i]}{'link'} = $link; } if ($users[$i] =~ /pic="(\S+)"(.*)/) { my $pic = $1; $oldnicks{$nick[$i]}{'pic'} = $pic; } if ($users[$i] =~ /sex="(\S+)"(.*)/) { my $sex = $1; $oldnicks{$nick[$i]}{'sex'} = $sex; } if($users[$i] =~ /ignore="(\S+)"(.*)/) { my $ignore = $1; if($ignore eq "y" or $ignore eq "Y") { $ignore = 1; } else { $ignore = 0; } $oldnicks{$nick[$i]}{'ignore'} = $ignore; } } else { $search = 1; } $i++; } return $search; } sub check_if_found { my $found = 0; foreach (@nick) { if ($oldnicks{$_}{'nick'} eq $frm_nick) { $found = 1; } } if ($found eq "1") { $old_nick = $oldnicks{$frm_nick}{'nick'}; $old_alias = $oldnicks{$frm_nick}{'alias'}; $old_link = $oldnicks{$frm_nick}{'link'}; $old_pic = $oldnicks{$frm_nick}{'pic'}; $old_sex = $oldnicks{$frm_nick}{'sex'}; $old_ignore = $oldnicks{$frm_nick}{'ignore'}; } return $found; } sub addinfo { my $line_to_add = ">$pisg_config") or die("Error writing to configfile: $!"); print FILE "$line_to_add\n"; close(FILE); print <
\n HTML ; if($frm_alias) { print " \n"; print " \n"; print " \n"; } if($frm_link) { print " \n"; if($frm_link =~ /^http:|ftp:/) { print " \n"; } elsif ($frm_link =~ /(.*)@(.*).(.*)/) { print " \n"; } else { print " \n"; } print " \n"; } if($frm_pic) { print " \n"; print " \n"; print " \n"; } if($frm_sex eq "m") { print " \n"; print " \n"; print " \n"; } if($frm_sex eq "f") { print " \n"; print " \n"; print " \n"; } if($frm_ignore eq "on") { print " \n"; print " \n"; print " \n"; } } sub updateinfo { my $line; my $line_to_add = "; close(OLDFILE); open(NEWFILE, ">$pisg_config") or die("Error updating configfile: $!"); &lock_file(*NEWFILE); foreach $line (@lines) { if ($line =~ /^
\n
$txtnick:$frm_nick
$txtalias:$frm_alias
$txturl:$frm_link$txturl:$frm_link$txturl:$frm_link
$txtpic:
$txtsex:$txtmale
$txtsex:$txtfemale
$txtignore:$txtignoreon
HTML ; if($frm_alias) { print " \n"; print " \n"; print " \n"; } if($frm_link) { print " \n"; if($frm_link =~ /^http:|ftp:/) { print " \n"; } elsif ($frm_link =~ /(.*)@(.*).(.*)/) { print " \n"; } else { print " \n"; } print " \n"; } if($frm_pic) { print " \n"; print " \n"; print " \n"; } if($frm_sex eq "m") { print " \n"; print " \n"; print " \n"; } if($frm_sex eq "f") { print " \n"; print " \n"; print " \n"; } if($frm_ignore eq "on") { print " \n"; print " \n"; print " \n"; } } sub lock_file { my $lock = 2; flock($_[0], $lock); }
$txtnick:$frm_nick
$txtalias:$frm_alias
$txturl:$frm_link$txturl:$frm_link$txturl:$frm_link
$txtpic:
$txtsex:$txtmale
$txtsex:$txtfemale
$txtignore:$txtignoreon