1############################################################################### 2# HoneyPot.pm # 3# $Date: 12.02.14 $ # 4############################################################################### 5# YaBB: Yet another Bulletin Board # 6# Open-Source Community Software for Webmasters # 7# Version: YaBB 2.6.11 # 8# Packaged: December 2, 2014 # 9# Distributed by: http://www.yabbforum.com # 10# =========================================================================== # 11# Copyright (c) 2000-2014 YaBB (www.yabbforum.com) - All Rights Reserved. # 12# Software by: The YaBB Development Team # 13# with assistance from the YaBB community. # 14############################################################################### 15use CGI::Carp qw(fatalsToBrowser); 16our $VERSION = '2.6.11'; 17 18$honeypotpmver = 'YaBB 2.6.11 $Revision: 1611 $'; 19if ( $action eq 'detailedversion' ) { return 1; } 20 21my $honey_language = $FORM{'honey_language'} || $INFO{'honey_language'} || $lang; 22 23sub honeypot { 24 25 is_admin_or_gmod(); 26 27 opendir LNGDIR, $langdir; 28 my @lfilesanddirs = readdir LNGDIR; 29 closedir LNGDIR; 30 31 foreach my $fld (sort {lc($a) cmp lc $b} @lfilesanddirs) { 32 if (-e "$langdir/$fld/Main.lng") { 33 my $displang = $fld; 34 $displang =~ s/(.+?)\_(.+?)$/$1 ($2)/gism; 35 if ($honey_language eq $fld) { $drawnldirs .= qq~<option value="$fld" selected="selected">$displang</option>~; } 36 else { $drawnldirs .= qq~<option value="$fld">$displang</option>~; } 37 } 38 } 39 40 if (-e "$langdir/$honey_language/honey.txt") { 41 fopen(HONEYPOT, "<$langdir/$honey_language/honey.txt") || fatal_error('cannot_open',"$langdir/$honey_language/honey.txt", 1); 42 @honey_label = <HONEYPOT>; 43 fclose(HONEYPOT); 44 } 45 46 $total_labels = @honey_label || 0; 47 48 if ($total_labels) { 49 $show_hon_labels = 50 qq~<tr class="catbg"> 51 <td><b>$honeypot{'label'}</b></td> 52 <td><b>$honeypot{'edits'}</b></td> 53 <td><b>$honeypot{'deletes'}</b></td> 54 </tr>~; 55 56 foreach my $hon_labels ( sort { $a <=> $b } @honey_label ) { 57 chomp $hon_labels; 58 $show_hon_labels .= qq~<tr class="windowbg2"> 59 <td>$hon_labels</td> 60 <td> 61 <form action="$adminurl?action=honeypot_edit" method="post"> 62 <input type="hidden" name="hon_label" value="$hon_labels" /> 63 <input class="button" type="submit" value="$admin_txt{'edit'}" /> 64 <input type="hidden" name="honey_language" value="$honey_language" /> 65 </form> 66 </td> 67 <td> 68 <form action="$adminurl?action=honeypot_delete" method="post"> 69 <input type="hidden" name="hon_label" value="$hon_labels" /> 70 <input class="button" type="submit" value="$admin_txt{'delete'}" onclick="return confirm('$honeypot{'confirm'}');"/> 71 <input type="hidden" name="honey_language" value="$honey_language" /> 72 </form> 73 </td> 74 </tr>~; 75 } 76 } 77 else { 78 $show_hon_labels = qq~<tr class="windowbg2"> 79 <td colspan="3">$honeypot{'no_label'}</td> 80 </tr>~; 81 } 82 83 $yymain = qq~<div class="bordercolor rightboxdiv"> 84 <table class="border-space pad-cell" style="margin-bottom: .5em;"> 85 <colgroup> 86 <col style="width: 50%" /> 87 <col span="2" style="width: 25%" /> 88 </colgroup> 89 <tr> 90 <th class="titlebg" colspan="3">$admin_img{'prefimg'} $honeypot{'labels'} ($total_labels) 91 <div style="display: inline; float: right;"> 92 <form action="$adminurl?action=honeypot" method="post" enctype="application/x-www-form-urlencoded"> 93 <select name="honey_language" id="honey_language" size="1"> 94 $drawnldirs 95 </select> 96 <input type="submit" value="$admin_txt{'462'}" class="button" /> 97 </form> 98 </div> 99 </th> 100 </tr> 101 $show_hon_labels 102 </table> 103 </div> 104 <form action="$adminurl?action=honeypot_add" method="post" accept-charset="$yymycharset"> 105 <div class="bordercolor rightboxdiv"> 106 <table class="border-space pad-cell" style="margin-bottom: .5em;"> 107 <colgroup> 108 <col style="width: 25%" /> 109 <col style="width: 75%" /> 110 </colgroup> 111 <tr> 112 <th class="titlebg" colspan="2">$admin_img{'prefimg'} $honeypot{'add_new_label'}</th> 113 </tr><tr class="windowbg2 vtop bold"> 114 <td><label for="honey_add">$honeypot{'new_label'}:</label></td> 115 <td><input type="text" name="honey_add" id="honey_add" size="60" maxlength="50" /></td> 116 </tr> 117 </table> 118 </div> 119 <div class="bordercolor rightboxdiv"> 120 <table class="border-space pad-cell" style="margin-bottom: .5em;"> 121 <tr> 122 <th class="titlebg">$admin_img{'prefimg'} $admin_txt{'10'}</th> 123 </tr><tr> 124 <td class="catbg center"> 125 <input class="button" type="submit" value="$honeypot{'add_label'}" /> 126 <input type="hidden" name="honey_language" value="$honey_language" /> 127 </td> 128 </tr> 129 </table> 130 </div> 131 </form>~; 132 133 $yytitle = $honeypot{'labels'}; 134 $action_area = 'honeypot'; 135 AdminTemplate(); 136 exit; 137} 138 139sub honeypot_add { 140 is_admin_or_gmod(); 141 142 $h_label = $FORM{'honey_add'}; 143 144 if ( $h_label eq q{} ) { 145 fatal_error( 'invalid_value', "$honeypot{'label'}" ); 146 } 147 148 fopen( HONEYPOT, ">>$langdir/$honey_language/honey.txt" ) 149 || fatal_error( 'cannot_open', "$langdir/$honey_language/honey.txt", 150 1 ); 151 print {HONEYPOT} "$h_label\n" 152 or croak "$croak{'print'} HONEYPOT"; 153 fclose(HONEYPOT); 154 155 if ( $action eq 'honeypot_add' ) { 156 $yySetLocation = qq~$adminurl?action=honeypot;honey_language=$FORM{'honey_language'}~; 157 redirectexit(); 158 } 159 return; 160} 161 162sub honeypot_edit { 163 is_admin_or_gmod(); 164 165 $h_label = $FORM{'hon_label'}; 166 167 fopen( HONEYPOT, "<$langdir/$honey_language/honey.txt" ) 168 || fatal_error( 'cannot_open', "$langdir/$honey_language/honey.txt", 169 1 ); 170 @h_labels = <HONEYPOT>; 171 fclose(HONEYPOT); 172 my $aa = 0; 173 foreach my $id (@h_labels) { 174 chomp $id; 175 if ( $id eq $h_label ) { 176 last; 177 } 178 $aa++; 179 } 180 181 182 $yymain = qq~ 183 <form action="$adminurl?action=honeypot_edit2" method="post" accept-charset="$yymycharset"> 184 <div class="bordercolor rightboxdiv"> 185 <table class="border-space pad-cell" style="margin-bottom: .5em;"> 186 <colgroup> 187 <col style="width: 25%" /> 188 <col style="width: 75%" /> 189 </colgroup> 190 <tr> 191 <th class="titlebg" colspan="2">$admin_img{'prefimg'} $honeypot{'edits'}</th> 192 </tr><tr class="windowbg2 vtop bold;"> 193 <td><label for="hon_label">$honeypot{'label'}:</label></td> 194 <td><input type="text" name="hon_label2" id="hon_label2" size="60" maxlength="50" value="$h_label" /><input type="hidden" name="hon_line" value="$aa" /></td> 195 </tr> 196 </table> 197 </div> 198 <div class="bordercolor rightboxdiv"> 199 <table class="border-space pad-cell"> 200 <tr> 201 <th class="titlebg">$admin_img{'prefimg'} $admin_txt{'10'}</th> 202 </tr><tr> 203 <td class="catbg center"> 204 <input class="button" type="submit" value="$admin_txt{'10'} $honeypot{'save'}" /> <input type="button" class="button" value="$admin_txt{'cancel'}" onclick="location.href='$adminurl?action=honeypot;honey_language=$FORM{'honey_language'}';" /> 205 <input type="hidden" name="honey_language" value="$honey_language" /> 206 </td> 207 </tr> 208 </table> 209 </div> 210 </form>~; 211 212 $yytitle = $honeypot{'labels'}; 213 AdminTemplate(); 214 exit; 215} 216 217sub honeypot_edit2 { 218 is_admin_or_gmod(); 219 220 $h_label = $FORM{'hon_label2'}; 221 $line = $FORM{'hon_line'}; 222 223 if ( $h_label eq q{} ) { 224 fatal_error( 'invalid_value', "$honeypot{'label'}" ); 225 } 226 227 fopen( HONEYPOT, "<$langdir/$honey_language/honey.txt" ) 228 || fatal_error( 'cannot_open', "$langdir/$honey_language/honey.txt", 229 1 ); 230 @h_labels = <HONEYPOT>; 231 fclose(HONEYPOT); 232 233 fopen( HONEYPOT, ">$langdir/$honey_language/honey.txt" ) 234 || fatal_error( 'cannot_open', "$langdir/$honey_language/honey.txt", 235 1 ); 236 $aa = 0; 237 foreach my $i ( @h_labels) { 238 chomp $i; 239 if($aa == $line) { 240 print {HONEYPOT} "$h_label\n" or croak "$croak{'print'} HONEYPOT"; 241 } 242 else { print {HONEYPOT} "$i\n" or croak "$croak{'print'} HONEYPOT"; } 243 $aa++; 244 } 245 246 fclose(HONEYPOT); 247 248 $yySetLocation = qq~$adminurl?action=honeypot;honey_language=$FORM{'honey_language'}~; 249 redirectexit(); 250 return; 251} 252 253sub honeypot_delete { 254 255 is_admin_or_gmod(); 256 $h_label = $FORM{'hon_label'}; 257 258 fopen( HONEYPOT, "<$langdir/$honey_language/honey.txt" ) 259 || fatal_error( 'cannot_open', "$langdir/$honey_language/honey.txt", 260 1 ); 261 @h_labels = <HONEYPOT>; 262 fclose(HONEYPOT); 263 264 fopen( HONEYPOT, ">$langdir/$honey_language/honey.txt" ) 265 || fatal_error( 'cannot_open', "$langdir/$honey_language/honey.txt", 266 1 ); 267 foreach my $i ( @h_labels) { 268 chomp $i; 269 if( $h_label eq $i) { 270 print {HONEYPOT} q{} or croak "$croak{'print'} HONEYPOT"; 271 } 272 else { print {HONEYPOT} "$i\n" or croak "$croak{'print'} HONEYPOT"; } 273 } 274 fclose(HONEYPOT); 275 276 $yySetLocation = qq~$adminurl?action=honeypot;honey_language=$FORM{'honey_language'}~; 277 redirectexit(); 278 return; 279} 280 2811; 282