#!/usr/bin/perl # # REF: resoobbsconfadmin.pl # ResooSite v.0.9.5 -(p)Resoo 2002-2003 # (c)2003 - pascal blain / GNU GPL - General Public License # http://www.resoo.org/resoosite # pascal@resoo.org # require "resooconf.pl"; require "resoobbsconf.pl"; $query = $ENV{'QUERY_STRING'}; &parse_form; &get_date; &get_variables; ######## recuperation des variables ######## ##################################################### # Obtenir les informations du formulaire - Subroutine sub parse_form { # recevoir les variables read(STDIN, $buffer, $ENV{'CONTENT_LENGTH'}); # partager les variables en paire ( nom , valeur ) @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; $value =~ s/\"/\\\"/g; $FORM{$name} = $value; } } ################################################### # Mettre les champs dans des variables - Subroutine sub get_variables { if ($FORM{'utilnew'}) { $utilnew = "$FORM{'utilnew'}"; } if ($FORM{'passnew'}) { $passnew = "$FORM{'passnew'}"; } if ($FORM{'passnew2'}) { $passnew2 = "$FORM{'passnew2'}"; } if ($FORM{'passutil'}) { $passutil = "$FORM{'passutil'}"; } if ($FORM{'show_faq2'}) { $show_faq2 = "$FORM{'show_faq2'}"; } if ($FORM{'allow_html2'}) { $allow_html2 = "$FORM{'allow_html2'}"; } if ($FORM{'allow_links2'}) { $allow_links2 = "$FORM{'allow_links2'}"; } if ($FORM{'allow_img2'}) { $allow_img2 = "$FORM{'allow_img2'}"; } if ($FORM{'quote_text2'}) { $quote_text2 = "$FORM{'quote_text2'}"; } if ($FORM{'subject_line2'}) { $subject_line2 = "$FORM{'subject_line2'}"; } if ($FORM{'use_time2'}) { $use_time2 = "$FORM{'use_time2'}"; } if ($FORM{'show_mesg2'}) { $show_mesg2 = "$FORM{'show_mesg2'}"; } if ($FORM{'defautnumtopic2'}) { $defautnumtopic2 = "$FORM{'defautnumtopic2'}"; } if ($FORM{'defautnummesg2'}) { $defautnummesg2 = "$FORM{'defautnummesg2'}"; } if ($FORM{'decroche2'}) { $decroche2 = "$FORM{'decroche2'}"; } if ($FORM{'moderation2'}) { $moderation2 = "$FORM{'moderation2'}"; } if ($FORM{'bbsfontface2'}) { $bbsfontface2 = "$FORM{'bbsfontface2'}"; } if ($FORM{'bbsfontsize2'}) { $bbsfontsize2 = "$FORM{'bbsfontsize2'}"; } if ($FORM{'bbsfontcolor2'}) { $bbsfontcolor2 = "$FORM{'bbsfontcolor2'}"; } if ($FORM{'couleur_bbs12'}) { $couleur_bbs12 = "$FORM{'couleur_bbs12'}"; } if ($FORM{'couleur_bbs22'}) { $couleur_bbs22 = "$FORM{'couleur_bbs22'}"; } if ($FORM{'email_mod2'}) { $email_mod2 = "$FORM{'email_mod2'}"; } if ($FORM{'bbsname_mod2'}) { $bbsname_mod2 = "$FORM{'bbsname_mod2'}"; } if ($FORM{'bbssubject_eff2'}) { $bbssubject_eff2 = "$FORM{'bbssubject_eff2'}"; } if ($FORM{'bbsbodymess_eff2'}) { $bbsbodymess_eff2 = "$FORM{'bbsbodymess_eff2'}"; } if ($FORM{'use_head2'}) { $use_head2 = "$FORM{'use_head2'}"; } if ($FORM{'use_cadre2'}) { $use_cadre2 = "$FORM{'use_cadre2'}"; } if ($FORM{'use_upass2'}) { $use_upass2 = "$FORM{'use_upass2'}"; } if ($FORM{'pagehelp'}) { $pagehelp = "$FORM{'pagehelp'}"; } if ($FORM{'action'}) { $action = "$FORM{'action'}"; } if ($FORM{'verif'}) { $verif = "$FORM{'verif'}"; } else { $verif = "0" } if ($FORM{'util'}) { $util = "$FORM{'util'}"; if ($FORM{'pass'}) { $pass = "$FORM{'pass'}"; &verify; } else { $verif = ( $verif + 1 ); &page_verify; } } else { &page_verify; } } ######## affichage page mot de passe ######## sub page_verify { &page_tete; if ($verif == 2) { print "$fontgrande\n"; print "Votre mot de passe n'est pas valide,
\n"; print "merci de contacter \n"; print "l'administrateur du site $dir.
\n"; print "$finfontgrande\n"; } else { print "$fontstitre\n"; print "Vous êtes en mode \"Super Administrateur\":
\n"; print "$finfontstitre
\n"; print "
\n"; print "
\n"; print "\n"; print "\n"; print "\n"; print "\n"; print "\n"; print "
$font Utilisateur: $finfont
$font Mot de passe: $finfont
\n"; print "
\n"; if ($verif == 1) { print "
 
\n"; print "$fontstitre\n"; print "deuxième essai\n"; print "$finfontstitre\n"; } else { print "
 
\n"; print "$fontpetite\n"; print "premier essai\n"; print "$finfontpetite\n"; } } &page_pied; } ######## verification mot de passe ######## sub verify { open(MAIN,"$private/$util.su") || &erreurpass; @main =
; foreach $main_line (@main) { $passcrypt = &resoocrypt($pass); if ($main_line =~ /^$passcrypt$/) { if ($action > 0) { &action; } else { $verif = "9"; #condition du titre page_admin $action = "0"; &page_admin; } } else { &erreurpass; } } close(MAIN); } sub erreurpass { $verif = ( $verif + 1 ); &page_verify; } ######## administration du site ######## sub page_admin { &page_tete; print "
\n"; ######## configuration forum ###################################################### print ""; print "\n"; print "\n"; print "\n"; print ""; print "\n"; print "\n"; print "\n"; print "\n"; &hidden; print "\n"; print "\n"; print "\n"; print "\n"; print "\n"; print "\n"; print "\n"; print "\n"; &hidden; print "\n"; print "\n"; print "\n"; print "\n"; ######## modération ################################################################ print "\n"; print ""; print "\n"; print ""; print "\n"; print ""; print "\n"; print ""; print ""; print "\n"; print ""; print "\n"; print ""; print "\n"; print ""; print "\n"; ######## configuration du script ################################################## print ""; print ""; print "\n"; print ""; print "\n"; print ""; print "\n"; print ""; # print ""; # print "\n"; print ""; # print ""; # print "\n"; print ""; # print ""; # print "\n"; print ""; print "\n"; print ""; print "\n"; ######## configuration affichage ################################################### print ""; print "\n"; print ""; print "\n"; print ""; print "\n"; print ""; print "\n"; print ""; print "\n"; print ""; print "\n"; print ""; print "\n"; print ""; print "\n"; print ""; print "\n"; print ""; print "\n"; print ""; print "\n"; print ""; print "\n"; #################################################################################### &hidden; print "\n"; print "\n"; print ""; print "\n"; print "\n"; print ""; print ""; print ""; ######## page faq ################################################################ print "\n"; print "\n"; &hidden; print "\n"; print "\n"; print "\n"; print "\n"; print "\n"; print ""; ######## log modérateurs ################################################################ print "\n"; print "\n"; print ""; ######## password utilisateur ################################################################ print "\n"; print "\n"; &hidden; print "\n"; print "\n"; print "\n"; print "\n"; print "\n"; print ""; ######## fond de formulaire ################################################################ print "\n"; &hidden; print "\n"; print "\n"; print "\n"; print "

$fontstitre Création d'un modérateur: $finfontstitre
$font Nom: $finfont
$font Mot de passe: $finfont
$font 2° saisie: $finfont

$fontstitre Suppression d'un modérateur: $finfontstitre
$font Nom: $finfont"; print "

$fontstitre Options modération: $finfontstitre

$font Mode modération: $finfont$font oui \n"; print " non $finfont

$font Autoriser mot de passe utilisateur: $finfont$font oui \n"; print " non $finfont$font (option en service si modération) $finfont

$font Email modérateur: $finfont $font (par défaut : $email) $finfont

$font Nom du modérateur: $finfont

$font Titre \"effacé\": $finfont

$font Message \"effacé\": $finfont "; print "

$fontstitre Configuration du script $finfontstitre

$font Lien \"Voir l'aide\": $finfont$font oui \n"; print " non $finfont

$font Autoriser du code html: $finfont$font oui \n"; print " non $finfont

$font Inclure un champs \"lien\": $finfont$font oui \n"; # print " non $finfont

$font Inclure un champs \"image\": $finfont$font oui \n"; # print " non $finfont

$font Inclure un champs \"image\": $finfont$font oui \n"; # print " non $finfont

$font Reprendre le \"titre\": $finfont$font oui (éditable) \n"; print " oui (non-éditable) \n"; print " non $finfont

$font Indiquer l'heure: $finfont$font oui \n"; print " non $finfont

$fontstitre Configuration de l'affichage $finfontstitre

$font Lister les messages:: $finfont$font par date \n"; print " par fil de discussion $finfont

$font Nombre de sujets affichés par page (page index): $finfont

$font Nombre de messages affichés par page (page index): $finfont

$font Décalage maximum des réponses: $finfont

$font Afficher haut de page standard: $finfont$font oui \n"; print " non (affichage texte) $finfont

$font Afficher cadre message: $finfont$font oui \n"; print " non (texte seul) $finfont

$font Police (message): $finfont $font (par défaut: $police2) $finfont

$font Couleur police (message): $finfont $font (par défaut: $couleur) $finfont

$font Taille police (message): $finfont$font 1 \n"; print " 2 \n"; print " 3 \n"; print " 4 $finfont$fontbbs Exemple, taille par defaut: $taille_standard $finfontbbs

$font Couleur cadre (titre): $finfont $fontbbs Exemple $finfontbbs

$font Couleur cadre (mess.): $finfont $fontbbs Exemple $finfontbbs






$fonttitre Autres modifications: $finfonttitre




$fontstitre Page F.A.Q.: $finfontstitre $font (mode édition)$finfont




$fontstitre Modérateurs: $finfontstitre $font (affichage pour info seulement)$finfont




$fontstitre Mot de passe utilisateur: $finfontstitre $font (un mot de passe par ligne)$finfont




\n"; print "\n"; &page_pied; } ######## entete et pied de page ######## sub page_tete { print "Content-type: text/html\; charset=ISO-8859-1\n\n"; &head; print "\n"; print "\n"; print "\n"; print "\n"; print "\n"; print "\n"; print "\n"; print "\n"; print "\n"; print "\n"; print "\n"; print "\n"; print "\n"; print "
\n"; print "$font\n"; print "\n"; print "
\n"; print "$fonttitre\n"; if ( $verif == 9 ) { if ( $action == "4" ) { print "Oups ! Erreur...\n"; } else { print "Page configuration ($forumtitre)\n"; } } else { print "Saisie du mot de passe $fontstitre(super-admin)$finfontstitre\n"; } print "$finfonttitre

\n"; print "Si vous avez un problème avec cette page, merci d'en informer "; print "l'administrateur de ce site
\n"; print "$finfont\n"; print "
\n"; print "$font\n"; print "\ \;
\ \;\n"; print "$finfont\n"; print "
\n"; print "$font \ \;
\n"; } sub page_pied { print "$finfont\n"; print "
\n"; print "$font\n"; print "\n"; print "
\n"; &foot; } ######## routines "action" ######## # action = 1 ###(creation) # action = 2 ###(modification) # action = 3 ###(suppression) # action = 4 (erreur) # action = 5 (creation modérateur) # action = 6 (suppression modérateur) # action = 7 (creation liste password util) # action = 8 (modif fichier aide) # action = 9 (config) # action = 10 ###(stat) sub action { ✓ &page_tete; print "$fontgrande\n"; if ($action == "5" ) { ## creer le fichier bbs open(MAIN7,">$private/$utilnew.bbs") || die $!; $passnew = &resoocrypt($passnew); print MAIN7 "$passnew\n"; close(MAIN7); chmod 0600, "$private/$utilnew.bbs"; &logutil("BBS$utilnew"); } if ($action == "6" ) { $delfic1 = "$private/$utilnew.bbs"; unlink ($delfic1); &delogutil("BBS$utilnew"); } if ($action == "7" ) { ## creer le fichier forum.pass open(MAIN7,">$private/forum.pass") || &badcheck7; $passutil =~ s/\r//g; print MAIN7 "$passutil"; close(MAIN7); chmod 0600, "$private/forum.pass"; } if ($action == "8" ) { ## modifier le fichier faq open(MAIN7,">$dir_bbs/$faqfile") || &badcheck4; # $pagehelp =~ s/\n/
/g; # $pagehelp =~ s/\r/\n/g; $pagehelp =~ s/\\\"/\"/g; $renew = $pagehelp; &unword; $pagehelp = $renew; print MAIN7 "$pagehelp"; close(MAIN7); } if ($action == "9" ) { %champs=('show_faq2', 'show_faq', 'allow_html2', 'allow_html', 'allow_links2', 'allow_links', 'allow_img2', 'allow_img', 'use_time2', 'use_time', 'quote_text2', 'quote_text', 'subject_line2', 'subject_line', 'show_mesg2', 'show_mesg', 'defautnumtopic2', 'defautnumtopic', 'defautnummesg2', 'defautnummesg', 'decroche2', 'decroche', 'moderation2', 'moderation', 'bbsfontface2', 'bbsfontface', 'bbsfontsize2', 'bbsfontsize', 'bbsfontcolor2', 'bbsfontcolor', 'couleur_bbs12', 'couleur_bbs1', 'couleur_bbs22', 'couleur_bbs2', 'email_mod2', 'email_mod', 'bbsname_mod2', 'bbsname_mod', 'bbssubject_eff2', 'bbssubject_eff', 'bbsbodymess_eff2', 'bbsbodymess_eff', 'use_head2', 'use_head', 'use_upass2', 'use_upass', 'use_cadre2', 'use_cadre'); open (CNF, "resoobbscnf.pl") || &badcheck; @cnf = ; close (CNF); open (CNF, ">resoobbscnf.pl") || &badcheck2; foreach $line (@cnf) { print CNF "$line"; last if ($line =~ /\#EDIT/); } print CNF "\n"; foreach $champs (sort keys %champs){ print CNF "\$$champs{$champs} \= \"$$champs\"\;\n"; } print CNF "\n"; print CNF "1\;\n"; close (CNF); } if ($action == "4") { print "Erreur: $error.

\n"; print "$font\n"; print "utiliser le bouton retour de votre navigateur pour revenir au formulaire prédédent.

\n"; print "$finfont\n"; } if ($action == "5") { print "Création modérateur \"$utilnew\" effectuée !

\n"; } if ($action == "6") { print "Suppression modérateur \"$utilnew\" effectuée !

\n"; } else { print "Mise à jour configuration ...OK \!

\n"; } print "
\n"; print "
\n"; &hidden; print "\n"; print "\n"; print "\n"; print "
\n"; print "
\n"; print "
\n"; print "
\n"; if ($page) { print "\n"; } print "\n"; print "\n"; print "\n"; print "\n"; print "\n"; print "
\n"; print "


\n"; print "$finfontgrande\n"; print "$font\n"; print "...
\n"; print "$finfont\n"; &page_pied; } sub check { if ($action == "5") { if (!$utilnew) { $error = "\"nom\" non servi"; $action = "4"; } if ((!$passnew) or (!$passnew2)) { $error = "\"mot de passe\" non servi"; $action = "4"; } if ($passnew ne $passnew2) { $error = "\"mot de passe\" : les deux saisies sont différentes..."; $action = "4"; } if (open (F, "$private/$utilnew.bbs")) { $error = "\"nom\" (Modérateur déjà existant)"; close(F); $action = "4"; } } if ($action == "6") { if (!$utilnew) { $error = "\"nom\" non servi"; $action = "4"; } if (!open (F, "$private/$utilnew.bbs")) { $error = "\"nom\" (Modérateur inconnu)"; close(F); $action = "4"; } } if ($action == "9") { $email_mod2 =~ s/\@/\\\@/g; $bbsbodymess_eff =~ s/\n/
/g; $signature2 =~ s/\"/\\\"/g; $signature2 =~ s/\(c\)/\©\;/g; } } sub badcheck { $error = "Fichier resoobbscnf.pl absent..."; $action = "4"; } sub badcheck2 { $error = "Impossible d'écrire dans le fichier resoobbscnf.pl..."; $action = "4"; } sub badcheck3 { $error = "Fichier faq absent..."; $action = "4"; } sub badcheck4 { $error = "Impossible d'écrire dans le fichier faq..."; $action = "4"; } sub badcheck5 { $error = "Fichier util.log absent..."; $action = "4"; } sub badcheck6 { $error = "Fichier pass (utilisteur) absent..."; $action = "4"; } sub badcheck7 { $error = "Impossible d'écrire dans le fichier pass..."; $action = "4"; }