- add DELEXT configuration option

- update documentation a bit
This commit is contained in:
Ward Wouts 2003-04-27 22:28:59 +00:00
parent 97a8b5ea28
commit 30c79ac405
4 changed files with 34 additions and 11 deletions

View file

@ -1,9 +1,10 @@
# $Dwarf: CHANGELOG,v 1.19 2003/04/24 09:44:25 ward Exp $ # $Dwarf: CHANGELOG,v 1.20 2003/04/24 12:14:36 ward Exp $
# $Source$ # $Source$
from 0.2.0 to 0.2.1 from 0.2.0 to 0.2.1
- fail gracefully at a lack of configuration - fail gracefully at a lack of configuration
- fail gracefully if tempdir doesn't exist or isn't writable - fail gracefully if tempdir doesn't exist or isn't writable
- implement DELEXT configuration option
from 0.1.0 to 0.2.0 from 0.1.0 to 0.2.0
- fix extension enforcing - fix extension enforcing

View file

@ -1,4 +1,4 @@
# $Dwarf: README,v 1.5 2002/11/05 09:33:40 ward Exp $ # $Dwarf: README,v 1.6 2003/04/24 07:59:37 ward Exp $
# $Source$ # $Source$
Ripnews is a bulk downloader for usenet. It's quite flexible in terms of Ripnews is a bulk downloader for usenet. It's quite flexible in terms of
@ -113,6 +113,12 @@ NEWSRCNAME=<newsrcbase> Specify newsrc basename. Server names
will be appended. will be appended.
PERMISSION=<perm> Set permission bits for directory PERMISSION=<perm> Set permission bits for directory
creation. Standard unix style, eg. 0755. creation. Standard unix style, eg. 0755.
EXTENSIONS=<pattern> Set extension include pattern.
OPT_M=<pattern> Set EXTENSIONS just for multi part messages.
OPT_S=<pattern> Set EXTENSIONS just for single part messages.
DELEXT=<pattern> Set extension "mark read" pattern.
OPT_MD=<pattern> Set DELEXT just for multi part messages.
OPT_SD=<pattern> Set DELEXT just for single part messages.
Ruby patterns: Ruby patterns:
-------------- --------------

View file

@ -1,4 +1,4 @@
# $Dwarf: TODO,v 1.12 2003/04/20 20:42:43 ward Exp $ # $Dwarf: TODO,v 1.13 2003/04/21 22:11:38 ward Exp $
# $Source$ # $Source$
[ ] check for multiple servers (ip adresses) for each name and pick [ ] check for multiple servers (ip adresses) for each name and pick
@ -17,3 +17,5 @@
This will mess up things if a get_body is repeated because of This will mess up things if a get_body is repeated because of
exceptions. Use buffering for each body, before writing... exceptions. Use buffering for each body, before writing...
[ ] more regression tests [ ] more regression tests
[ ] add "mark read" option for subjects
[ ] update documentation

View file

@ -1,6 +1,6 @@
#!/usr/local/bin/ruby -w #!/usr/local/bin/ruby -w
# $Dwarf: ripnews.rb,v 1.51 2003/04/24 09:41:17 ward Exp $ # $Dwarf: ripnews.rb,v 1.52 2003/04/24 12:14:36 ward Exp $
# $Source$ # $Source$
require 'date' require 'date'
@ -226,6 +226,10 @@ def check_config
@config[i]["-S"] = @config[i]["EXTENSIONS"] @config[i]["-S"] = @config[i]["EXTENSIONS"]
@config[i]["-M"] = @config[i]["EXTENSIONS"] @config[i]["-M"] = @config[i]["EXTENSIONS"]
end end
if @config[i].has_key?("DELEXT")
@config[i]["-SD"] = @config[i]["DELEXT"]
@config[i]["-MD"] = @config[i]["DELEXT"]
end
@config[i]["-M"] = "(?!.*)" if @config[i].has_key?("-S") and ! @config[i].has_key?("-M") @config[i]["-M"] = "(?!.*)" if @config[i].has_key?("-S") and ! @config[i].has_key?("-M")
@config[i]["-S"] = "(?!.*)" if @config[i].has_key?("-M") and ! @config[i].has_key?("-S") @config[i]["-S"] = "(?!.*)" if @config[i].has_key?("-M") and ! @config[i].has_key?("-S")
} }
@ -237,12 +241,12 @@ def get_single(subj, group)
if UUEncode.is_uuencoded(body) if UUEncode.is_uuencoded(body)
filename = UUEncode.get_filename(body) filename = UUEncode.get_filename(body)
print " filename #{filename}\n" print " filename #{filename}\n"
return false unless check_ext(group, filename, "s") return false unless check_ext(group, filename, "s", subj)
print " UUDecoding...\n" print " UUDecoding...\n"
mode, filename, body = UUEncode.uudecode(body) mode, filename, body = UUEncode.uudecode(body)
elsif YEnc.is_yencoded(body) elsif YEnc.is_yencoded(body)
filename = YEnc.get_filename(body) filename = YEnc.get_filename(body)
return false unless check_ext(group, filename, "s") return false unless check_ext(group, filename, "s", subj)
print " YDecoding...\n" print " YDecoding...\n"
mode, filename, body = YEnc.ydecode(body) mode, filename, body = YEnc.ydecode(body)
else else
@ -259,14 +263,14 @@ def get_multi(subj, group)
if UUEncode.is_uuencoded(body) if UUEncode.is_uuencoded(body)
filename = UUEncode.get_filename(body) filename = UUEncode.get_filename(body)
print " filename #{filename}\n" print " filename #{filename}\n"
return false unless check_ext(group, filename, "m") return false unless check_ext(group, filename, "m", subj)
print " UUDecoding...\n" print " UUDecoding...\n"
mode, filename, body = UUEncode.uudecode(body) mode, filename, body = UUEncode.uudecode(body)
elsif YEnc.is_yencoded(body) elsif YEnc.is_yencoded(body)
print "yencc\n" print "yencc\n"
filename = YEnc.get_filename(body) filename = YEnc.get_filename(body)
print "filename #{filename}\n" print "filename #{filename}\n"
return false unless check_ext(group, filename, "m") return false unless check_ext(group, filename, "m", subj)
print " YDecoding...\n" print " YDecoding...\n"
mode, filename, body = YEnc.ydecode(body) mode, filename, body = YEnc.ydecode(body)
else else
@ -280,12 +284,12 @@ def get_multi(subj, group)
if UUEncode.is_uuencoded(body) if UUEncode.is_uuencoded(body)
filename = UUEncode.get_filename(body) filename = UUEncode.get_filename(body)
print " filename #{filename}\n" print " filename #{filename}\n"
return false unless check_ext(group, filename, "m") return false unless check_ext(group, filename, "m", subj)
elsif YEnc.is_yencoded(body) elsif YEnc.is_yencoded(body)
print "yencc\n" print "yencc\n"
filename = YEnc.get_filename(body) filename = YEnc.get_filename(body)
print "filename #{filename}\n" print "filename #{filename}\n"
return false unless check_ext(group, filename, "m") return false unless check_ext(group, filename, "m", subj)
end end
file = Tempfile.new("riptmp", @config[group]["TEMPDIR"]) file = Tempfile.new("riptmp", @config[group]["TEMPDIR"])
body.collect{|x| file.print "#{x}\n"} body.collect{|x| file.print "#{x}\n"}
@ -344,11 +348,21 @@ def output_data(subject, mode, filename="", body="")
end end
end end
def check_ext(group, filename, mode) def check_ext(group, filename, mode, subject)
case mode case mode
when "s" when "s"
if @config[group].has_key?("-SD") && ( filename =~ /\.(#{@config[group]["-SD"]})$/ )
print "Marking '#{subject}' matches as read\n"
@articles.group_update_newsrc(subject)
return false
end
return @config[group].has_key?("-S") ? ( filename =~ /\.(#{@config[group]["-S"]})$/ ) : true return @config[group].has_key?("-S") ? ( filename =~ /\.(#{@config[group]["-S"]})$/ ) : true
when "m" when "m"
if @config[group].has_key?("-MD") && ( filename =~ /\.(#{@config[group]["-MD"]})$/ )
print "Marking '#{subject}' matches as read\n"
@articles.group_update_newsrc(subject)
return false
end
return @config[group].has_key?("-M") ? ( filename =~ /\.(#{@config[group]["-M"]})$/ ) : true return @config[group].has_key?("-M") ? ( filename =~ /\.(#{@config[group]["-M"]})$/ ) : true
else else
print "Illegal mode \"#{mode}\" in check_ext\n" print "Illegal mode \"#{mode}\" in check_ext\n"