Code Duplication    Length = 39-45 lines in 2 locations

htdocs/xoops_lib/modules/protector/class/protector.php 2 locations

@@ 1147-1191 (lines=45) @@
1144
            'SELECT COUNT(*) FROM ' . $xoopsDB->prefix($this->mydirname . '_access')
1145
            . " WHERE ip={$ip4sql} AND request_uri={$uri4sql}");
1146
        list($f5_count) = $xoopsDB->fetchRow($result);
1147
        if ($f5_count > $this->_conf['dos_f5count']) {
1148
1149
            // delayed insert
1150
            $xoopsDB->queryF($sql4insertlog);
1151
1152
            // extends the expires of the IP with 5 minutes at least (pending)
1153
            // $result = $xoopsDB->queryF( "UPDATE ".$xoopsDB->prefix($this->mydirname.'_access')." SET expire=UNIX_TIMESTAMP()+300 WHERE ip='$ip4sql' AND expire<UNIX_TIMESTAMP()+300" ) ;
1154
1155
            // call the filter first
1156
            $ret = $this->call_filter('f5attack_overrun');
1157
1158
            // actions for F5 Attack
1159
            $this->_done_dos       = true;
1160
            $this->last_error_type = 'DoS';
1161
            switch ($this->_conf['dos_f5action']) {
1162
                default :
1163
                case 'exit' :
1164
                    $this->output_log($this->last_error_type, $uid, true, 16);
1165
                    exit;
1166
                case 'none' :
1167
                    $this->output_log($this->last_error_type, $uid, true, 16);
1168
1169
                    return true;
1170
                case 'biptime0' :
1171
                    if ($can_ban) {
1172
                        $this->register_bad_ips(time() + $this->_conf['banip_time0']);
1173
                    }
1174
                    break;
1175
                case 'bip' :
1176
                    if ($can_ban) {
1177
                        $this->register_bad_ips();
1178
                    }
1179
                    break;
1180
                case 'hta' :
1181
                    if ($can_ban) {
1182
                        $this->deny_by_htaccess();
1183
                    }
1184
                    break;
1185
                case 'sleep' :
1186
                    sleep(5);
1187
                    break;
1188
            }
1189
1190
            return false;
1191
        }
1192
1193
        // Check its Agent
1194
        if (trim($this->_conf['dos_crsafe']) != '' && preg_match($this->_conf['dos_crsafe'], @$_SERVER['HTTP_USER_AGENT'])) {
@@ 1210-1248 (lines=39) @@
1207
        // delayed insert
1208
        $xoopsDB->queryF($sql4insertlog);
1209
1210
        if ($crawler_count > $this->_conf['dos_crcount']) {
1211
1212
            // call the filter first
1213
            $ret = $this->call_filter('crawler_overrun');
1214
1215
            // actions for bad Crawler
1216
            $this->_done_dos       = true;
1217
            $this->last_error_type = 'CRAWLER';
1218
            switch ($this->_conf['dos_craction']) {
1219
                default :
1220
                case 'exit' :
1221
                    $this->output_log($this->last_error_type, $uid, true, 16);
1222
                    exit;
1223
                case 'none' :
1224
                    $this->output_log($this->last_error_type, $uid, true, 16);
1225
1226
                    return true;
1227
                case 'biptime0' :
1228
                    if ($can_ban) {
1229
                        $this->register_bad_ips(time() + $this->_conf['banip_time0']);
1230
                    }
1231
                    break;
1232
                case 'bip' :
1233
                    if ($can_ban) {
1234
                        $this->register_bad_ips();
1235
                    }
1236
                    break;
1237
                case 'hta' :
1238
                    if ($can_ban) {
1239
                        $this->deny_by_htaccess();
1240
                    }
1241
                    break;
1242
                case 'sleep' :
1243
                    sleep(5);
1244
                    break;
1245
            }
1246
1247
            return false;
1248
        }
1249
1250
        return true;
1251
    }