# Setting some vabiales if {![info exists pre(spam_filters)]} {set pre(spam_filters) ""} if {![info exists pre(sections)]} {set pre(sections) ""} if {![info exists pre(genres)]} {set pre(genres) ""} if {![info exists pre(auto_delpre)]} {set pre(auto_delpre) ""} if {![info exists pre(spam_stripout)]} {set pre(spam_stripout) ""} if {![info exists pre(groups)]} {set pre(groups) ""} if {![info exists pre(site_banned_sections)]} {set pre(site_banned_sections) ""} proc pre:get_spam_update {} { global pre return [lindex [pre:query "SELECT value FROM $pre(mysql_prefix)options WHERE name='spam_update'"] 0] } proc pre:get_genre_update {} { global pre return [lindex [pre:query "SELECT value FROM $pre(mysql_prefix)options WHERE name='genre_update'"] 0] } proc pre:get_section_update {} { global pre return [lindex [pre:query "SELECT value FROM $pre(mysql_prefix)options WHERE name='section_update'"] 0] } proc pre:get_spam_stripout_update {} { global pre return [lindex [pre:query "SELECT value FROM $pre(mysql_prefix)options WHERE name='spam_stripout_update'"] 0] } proc pre:get_groups_update {} { global pre return [lindex [pre:query "SELECT value FROM $pre(mysql_prefix)options WHERE name='groups_update'"] 0] } proc pre:get_site_banned_sections_update {} { global pre return [lindex [pre:query "SELECT value FROM $pre(mysql_prefix)options WHERE name='site_banned_sections_update'"] 0] } proc pre:get_auto_delpre_update {} { global pre return [lindex [pre:query "SELECT value FROM $pre(mysql_prefix)options WHERE name='auto_delpre_update'"] 0] } proc pre:load_config {} { global pre set spam_update [pre:get_spam_update] if {$pre(spam_update)<$spam_update} { pre:putlog "Updating filters from the database!" set pre(spam_filters) "" set pre(spam_filters) [pre:query "SELECT regex,rating,type,casesensitive FROM $pre(mysql_prefix)filter WHERE enabled='1'"] set pre(spam_update) $spam_update } set genre_update [pre:get_genre_update] if {$pre(genre_update)<$genre_update} { pre:putlog "Updating genres from the database!" set pre(genres) "" set pre(genres) [pre:query "SELECT regex,real_genre FROM $pre(mysql_prefix)genres"] set pre(genre_update) $genre_update } set section_update [pre:get_section_update] if {$pre(section_update)<$section_update} { pre:putlog "Updating sections from the database!" set pre(sections) "" set pre(sections) [pre:query "SELECT regex,real_section FROM $pre(mysql_prefix)sections ORDER BY priority ASC"] set pre(section_update) $section_update } set auto_delpre_update [pre:get_auto_delpre_update] if {$pre(auto_delpre_update)<$auto_delpre_update} { pre:putlog "Updating auto-delpre nuke reasons from the database!" set pre(auto_delpre) "" set pre(auto_delpre) [lindex [lindex [pre:query "SELECT value FROM $pre(mysql_prefix)options WHERE name='auto_delpre'"] 0] 0] set pre(auto_delpre_update) $auto_delpre_update } set spam_stripout_update [pre:get_spam_stripout_update] if {$pre(spam_stripout_update)<$spam_stripout_update} { pre:putlog "Updating spam stripout words from the database!" set pre(spam_stripout) "" set pre(spam_stripout) [lindex [lindex [pre:query "SELECT value FROM $pre(mysql_prefix)options WHERE name='spam_stripout'"] 0] 0] set pre(spam_stripout_update) $spam_stripout_update } set groups_update [pre:get_groups_update] if {$pre(groups_update)<$groups_update} { pre:putlog "Updating special groups list from the database!" set pre(groups) "" set pre(groups) [lindex [lindex [pre:query "SELECT value FROM $pre(mysql_prefix)options WHERE name='groups'"] 0] 0] set pre(groups_update) $groups_update } set site_banned_sections_update [pre:get_site_banned_sections_update] if {$pre(site_banned_sections_update)<$site_banned_sections_update} { pre:putlog "Updating special site banned sections list from the database!" set pre(site_banned_sections) "" set pre(site_banned_sections) [lindex [lindex [pre:query "SELECT value FROM $pre(mysql_prefix)options WHERE name='site_banned_sections'"] 0] 0] set pre(site_banned_sections_update) $site_banned_sections_update } set pre(enabled) "1" timer 1 pre:load_config } proc pre:prepare_stripped {release} { global pre if {$pre(spam_stripout)!=""} { regsub -all -nocase $pre(spam_stripout) $release "" release pre:already_processed $release "addpre" } } proc pre:pass_hardcoded_filters_info {files size} { if {![string is double $size]} {return 0} if {![string is integer $files]} {return 0} if {[string length $size]<1} {return 0} if {[string length $files]<1} {return 0} if {$size==0 || $files==0} {return 0} return 1 } proc pre:pass_hardcoded_filters_name {release} { set minlen 10 set maxlen 256 if {[string length $release] < $minlen} {return 0} if {[string length $release] > $maxlen} {return 0} if {![regexp {\.|\_|\-} $release]} {return 0} if {![regexp {\-} $release]} {return 0} if {[regexp {[\-\.\(\)_]$} $release]} {return 0} if {![regexp -nocase {[a-z]} $release]} {return 0} if {[regexp ^[clock format [clock scan today] -format %Y-%m] $release]} {return 0} if {[regexp ^[clock format [clock scan today] -format %m%d] $release]} {return 0} if {[regexp -all {\(} $release]!=[regexp -all {\)} $release]} {return 0} pre:prepare_stripped $release return 1 } proc pre:pass_hardcoded_filters_section {section} { set minlen 2 set maxlen 256 if {[string is digit $section]} {return 0} if {[string length $section]<$minlen} {return 0} if {[string length $section]>$maxlen} {return 0} return 1 } proc pre:pass_hardcoded_filters_reason {reason} { set minlen 4 set maxlen 256 if {[string is digit $reason]} {return 0} if {[string length $reason]<$minlen} {return 0} if {[string length $reason]>$maxlen} {return 0} return 1 } proc pre:get_genre {genre} { global pre foreach genre_set $pre(genres) { if {[regexp -nocase [lindex $genre_set 0] $genre]} { return [lindex $genre_set 1] } } putlog "Warning: $genre is an UNKNOWN genre for me!" return "" } proc pre:get_section {section} { global pre foreach section_set $pre(sections) { if {[regexp -nocase [lindex $section_set 0] $section]} { return [lindex $section_set 1] } } putlog "Warning: $section has an UNKNOWN section for me!" return "UNKNOWN" } proc pre:spam_filter {line type} { global pre set result "0.0" if {$type=="0" && ![pre:pass_hardcoded_filters_name $line]} {return [expr $pre(spam_release) + 1]} if {$type=="1" && ![pre:pass_hardcoded_filters_reason $line]} {return [expr $pre(spam_reason) + 1]} if {$type=="3" && ![pre:pass_hardcoded_filters_section $line]} {return [expr $pre(spam_section) + 1]} foreach filter $pre(spam_filters) { if {[lindex $filter 2]==$type} { set mode [lindex $filter 3] set pattern [lindex $filter 0] set n 0 if {$mode=="0"} { set n [regexp -all -nocase $pattern $line] } else { set n [regexp -all $pattern $line] } set result [expr $result + $n*[lindex $filter 1]] } } return $result }