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'}" />&nbsp;<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