All pastes #64068 Raw Edit

Miscellany

public text v1 · immutable
#64068 ·published 2006-06-11 03:12 UTC
rendered paste body
#  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
}