#!/usr/bin/perl # # ResooSite v.0.9 - Resoo 2002 # resooboardadmin.pl # require "resooboardconf.pl"; ########################################################################### # Subroutine # Obtenir les informations du formulaire &parse_form; # Mettre les champs dans des variables &get_variables; ###### validation de message if ($action == "1") { # Obtenir le nb de messages (data) &get_number; # Ouvrir un nouveau fichier et y ecrire les infos &new_file; # Ouvrir le fichier principal et ajouter un lien &main_page; # Lier les messages et leurs reponses if ($num_followups >= 1) { &thread_pages; } # Retourner une page HTML a l'utilisateur &return_html; # Incrementer le compteur &increment_num; } ###### validation de message if ($action == "2") { # Obtenir le nb de messages (data) &get_number; # Ouvrir un nouveau fichier et y ecrire les infos &new_file; # Ouvrir le fichier principal et ajouter un lien &main_page; # Lier les messages et leurs reponses if ($num_followups >= 1) { &thread_pages; } # supprimer le fichier de validation (variable delfichier) &del_fichier; &del_lien; # Retourner une page HTML a l'utilisateur &return_html; # Incrementer le compteur &increment_num; } ###### suppression de message if ($action == "3") { # supprimer le fichier de validation (variable delfichier) &del_fichier; &del_lien; # Retourner une page HTML a l'utilisateur &return_html; } ###### purge page validation if ($action == "4") { # purge de la page &raz_check; &raz_page; # Retourner une page HTML a l'utilisateur &return_html; } ######################################## # Obtenir le nb de messages - Subroutine sub get_number { if (!(-e $wfile1)){open(NEW,"> $wfile1");print NEW "0";close(NEW); } $wfile1 = "$mondir/$datafile"; open(NUMBER,"$wfile1"); $num = ; close(NUMBER); if ($num == 99999) { $num = "1"; } else { $num++; } } ##################################################### # Obtenir les informations du formulaire - Subroutine sub parse_form { # Get the input read(STDIN, $buffer, $ENV{'CONTENT_LENGTH'}); # Split the name-value pairs @pairs = split(/&/, $buffer); foreach $pair (@pairs) { ($name, $value) = split(/=/, $pair); # Un-Webify plus signs and %-encoding $value =~ tr/+/ /; $value =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg; $value =~ s///g; if ($allow_html != 1) { $value =~ s/<([^>]|\n)*>//g; } else { unless ($name eq 'body') { $value =~ s/<([^>]|\n)*>//g; } } $FORM{$name} = $value; } } ################################################### # Mettre les champs dans des variables - Subroutine sub get_variables { if ($FORM{'action'}) { $action = "$FORM{'action'}"; } if ($action == "3") { if ($FORM{'delfichier'}) { $delfichier = "$FORM{'delfichier'}"; } } if ($action < "3") { if ($FORM{'delfichier'}) { $delfichier = "$FORM{'delfichier'}"; } if ($FORM{'followup'}) { $followup = "1"; @followup_num = split(/,/,$FORM{'followup'}); $num_followups = @followups = @followup_num; $last_message = pop(@followups); $origdate = "$FORM{'origdate'}"; $origname = "$FORM{'origname'}"; $origsubject = "$FORM{'origsubject'}"; } else { $followup = "0"; } if ($FORM{'name'}) { $name = "$FORM{'name'}"; $name =~ s/"//g; $name =~ s///g; $name =~ s/\&//g; } else { &error(no_name); } if ($FORM{'semail'} =~ /.*\@.*\..*/) { $semail = "$FORM{'semail'}"; } if ($FORM{'subject'}) { $subject = "$FORM{'subject'}"; $subject =~ s/\&/\&\;/g; $subject =~ s/"/\"\;/g; } else { &error(no_subject); } if ($FORM{'url'} =~ /.*\:.*\..*/ && $FORM{'url_title'}) { $message_url = "$FORM{'url'}"; $message_url_title = "$FORM{'url_title'}"; } if ($FORM{'img'} =~ /.*tp:\/\/.*\..*/) { $message_img = "$FORM{'img'}"; } if ($FORM{'body'}) { $body = "$FORM{'body'}"; $body =~ s/\cM//g; $body =~ s/\n\n/

/g; $body =~ s/\n/
/g; $body =~ s/<//g; $body =~ s/"/"/g; } else { &error(no_body); } if ($quote_text == 1) { $hidden_body = "$body"; $hidden_body =~ s//>/g; $hidden_body =~ s/"/"/g; } } } ############################################################## # supprimer le fichier de validation - Subroutine sub del_fichier { $del_fich = "$mesgdir/$delfichier"; unlink ($del_fich); } ############################################################## # supprimer le lien de la page validation - Subroutine sub del_lien { $wfile2 = "$mon_dir/$fileboardvalid\.$ext"; if ($wfile2) { open (VALID,"$wfile2"); @valid = ; close (VALID); open(VALID,">$wfile2") || die $!; foreach $line (@valid) { if ($line =~ /.*\/$delfichier\".*/) { $_=$line; if ($action == "2") { s/<\/a>//; s//Vu - /; } if ($action == "3") { s/<\/a>//; s//Suppr - /; } print VALID "$_"; } else { print VALID "$line"; } } close(VALID); } } ############################################################## # Ouvrir un nouveau fichier et y ecrire les infos - Subroutine sub new_file { $wfile3 = "$mesg_dir/$num\.$ext"; open(NEWFILE,">$wfile3") || die $!; if ($use_SSI == 1) { print NEWFILE "$resooSSIhm"; } else { print NEWFILE "\n"; print NEWFILE " \n"; print NEWFILE " $subject\n"; print NEWFILE " \n"; print NEWFILE " $page\n"; print NEWFILE " $fonttxt\n"; } print NEWFILE "

\n"; print NEWFILE "

$subject

\n"; print NEWFILE "
\n"; print NEWFILE "
\n"; if ($show_faq == 1) { print NEWFILE "
[ Répondre au message ] [ Voir l'aide ] [ Retour au Forum ]
\n"; } else { print NEWFILE "
[ Répondre au message ] [ Retour au Forum ]
\n"; } print NEWFILE "

\n"; print NEWFILE "Envoyé par "; if ($semail) { print NEWFILE "$name le $date:

\n"; } else { print NEWFILE "$fontname$name$fontend le $date:

\n"; } if ($followup == 1) { print NEWFILE "En réponse à: $origsubject envoyé par "; if ($origemail) { print NEWFILE "$origname le $fontname$origdate$fontend:

\n"; } else { print NEWFILE "$fontname$origname$fontend le $fontname$origdate$fontend:

\n"; } } if ($message_img) { print NEWFILE "

\n"; } print NEWFILE "

\n"; print NEWFILE "
\n"; if ($message_url) { print NEWFILE "\n"; } print NEWFILE "

\n"; print NEWFILE "Les réponses:
\n"; print NEWFILE "

\n"; print NEWFILE "

\n"; print NEWFILE "

Répondre au message

\n"; print NEWFILE "

\n"; print NEWFILE ""; print NEWFILE "\n"; print NEWFILE "\n"; if ($semail) { print NEWFILE "\n"; } print NEWFILE "\n"; print NEWFILE "\n"; print NEWFILE "
\n"; print NEWFILE "\n"; print NEWFILE "\n"; if ($subject_line == 1) { if ($subject_line =~ /^Re:/) { print NEWFILE "\n"; print NEWFILE "\n"; } else { print NEWFILE "\n"; print NEWFILE "\n"; } } elsif ($subject_line == 2) { print NEWFILE "\n"; } else { if ($subject =~ /^Re:/) { print NEWFILE "\n"; } else { print NEWFILE "\n"; } } print NEWFILE "\n"; print NEWFILE "\n"; print NEWFILE "
$fonttxt Nom: $fontend
$fonttxt E-Mail: $fontend
$fonttxt Titre: $fontend $subject
$fonttxt Titre: $fontend Re: $subject
$fonttxt Titre: $fontend
$fonttxt Titre: $fontend
$fonttxt Titre: $fontend
$fonttxt Message: $fontend
\n"; print NEWFILE "

\n"; if ($show_faq == 1) { print NEWFILE "
[ Répondre au message ] [ Voir l'aide ] [ Retour au Forum ]
\n"; } else { print NEWFILE "
[ Répondre au message ] [ Retour au Forum ]
\n"; } if ($use_SSI == 1) { print NEWFILE "$resooSSIfm"; } else { print NEWFILE "$fontend\n"; } close(NEWFILE); } ############################################################# # Ouvrir le fichier principal et ajouter un lien - Subroutine sub main_page { $wfile4 = "$mondir/$fileboard\.$ext2"; open(MAIN,"$wfile4") || die $!; @main =
; close(MAIN); open(MAIN,">$wfile4") || die $!; if ($followup == 0) { foreach $main_line (@main) { if ($main_line =~ //) { print MAIN "\n"; print MAIN "
  • $subject - $name $date\n"; print MAIN "(pas de réponse)\n"; print MAIN "
      \n"; print MAIN "
    \n"; } else { print MAIN "$main_line"; } } } else { foreach $main_line (@main) { $work = 0; if ($main_line =~ /
      /) { print MAIN "
        \n"; print MAIN "
      • $subject - $name $date\n"; print MAIN "(pas de réponse)\n"; print MAIN "
          \n"; print MAIN "
        \n"; } elsif ($main_line =~ /\((.*)\)/) { $response_num = $1; $num_responses = $2; $num_responses++; foreach $followup_num (@followup_num) { if ($followup_num == $response_num) { print MAIN "($num_responses réponse(s))\n"; $work = 1; } } if ($work != 1) { print MAIN "$main_line"; } } else { print MAIN "$main_line"; } } } close(MAIN); } ################################################## # Lier les messages et leurs reponses - Subroutine sub thread_pages { foreach $followup_num (@followup_num) { open(FOLLOWUP,"$mesg_dir/$followup_num\.$ext"); @followup_lines = ; close(FOLLOWUP); open(FOLLOWUP,">$mesg_dir/$followup_num\.$ext"); foreach $followup_line (@followup_lines) { $work = 0; if ($followup_line =~ /
          /) { print FOLLOWUP "
            \n"; print FOLLOWUP "
          • $subject $name $date\n"; print FOLLOWUP "(pas de réponse)\n"; print FOLLOWUP "
              \n"; print FOLLOWUP "
            \n"; } elsif ($followup_line =~ /\((.*)\)/) { $response_num = $1; $num_responses = $2; $num_responses++; foreach $followup_num (@followup_num) { if ($followup_num == $response_num) { print FOLLOWUP "($num_responses réponse(s))\n"; $work = 1; } } if ($work != 1) { print FOLLOWUP "$followup_line"; } } else { print FOLLOWUP "$followup_line"; } } close(FOLLOWUP); } } ###################################################### # Retourner une page HTML a l'utilisateur - Subroutine sub return_html { print "Content-type: text/html\n\n"; if ($action < "3") { if ($use_SSI == 1) { &headbbs; } else { print "Message envoyé: $subject\n"; print "$page\n"; print "$fonttxt\n"; } print "

            Message envoyé: $subject

            \n"; print "Les informations suivantes ont été ajoutées au Forum:


            \n"; print "Nom: $name
            \n"; print "E-Mail: $semail
            \n"; print "Titre: $subject
            \n"; print "Message:

            \n"; print "

              $fontmess$body$fontend

            \n"; print "Ajouté le: $date

            \n"; } if ($action == "3") { if ($use_SSI == 1) { &headbbs; } else { print "Message supprimé: $delfichier\n"; print "$page\n"; print "$fonttxt\n"; } print "

            Message supprimé: $delfichier

            \n"; } if ($action == "4") { if ($use_SSI == 1) { &headbbs; } else { print "Purge page validation\n"; print "$page\n"; print "$fonttxt\n"; } print "

            Purge page validation: OK

            \n"; } print "
            \n"; print "
            "; if ($action > "1") { print "[ Retour Page Validation ] "; } print "[ Retour au Forum ]
            \n"; if ($use_SSI == 1) { &footbbs; } else { print "$fontend\n"; } } ###################################### # Incrementer le compteur - Subroutine sub increment_num { open(NUM,">$mondir/$datafile") || die $!; print NUM "$num"; close(NUM); } ############################################## # Formulaire de saisie utilise en fond de page sub rest_of_form { print "
            \n"; print "
            \n"; print "\n"; if ($followup == 1) { print "\n"; print "\n"; print "\n"; print "\n"; print "\n"; } print "\n"; print "\n"; if ($error eq 'no_subject') { print "\n"; } else { print "\n"; print "\n"; } print "\n"; print "\n"; print "
            $fonttxt Nom: $fontend
            $fonttxt E-Mail: $fontend
            $fonttxt Titre: $fontend
            $fonttxt Titre: $fontend $FORM{'subject'}
            $fonttxt Message: $fontend
            \n"; print "
            \n"; print "

            \n"; if ($show_faq == 1) { print "
            [ Voir l'aide ] "; if ($action == 1) { print "[ Retour forum ]
            \n"; } else { print "[ Retour page validation ]\n"; } } else { print "
            "; if ($action == 1) { print "[ Retour forum ]
            \n"; } else { print "[ Retour page validation ]\n"; } } if ($use_SSI == 1) { &footbbs; } else { print "$fontend\n"; } } ################################################################# # Remplacement du fichier razfichier par razfichier2 - Subroutine sub raz_check { opendir (DIRREP, $mesgdir); @DIRREP=grep(!/^\.\.?$/, readdir DIRREP); foreach $line (@DIRREP) { if ($line ne "") { &error(mess_non_vide); } } } sub raz_page { open(MAIN,"$mon_dir/$fileboardvalid2\.$ext") || die $!; @main =
            ; close(MAIN); open(MAIN,">$mon_dir/$fileboardvalid\.$ext") || die $!; foreach $main_line (@main) { print MAIN "$main_line"; } close(MAIN); }