rewrite work and log file cleanup

This commit is contained in:
John Bintz 2010-05-06 22:26:12 -04:00
parent 9e2010266c
commit f6397e9034
4 changed files with 70 additions and 29 deletions

View File

@ -172,6 +172,6 @@ module Apache
end end
block_methods :virtual_host, :files_match, :location block_methods :virtual_host, :files_match, :location, :files
end end
end end

View File

@ -1,23 +1,15 @@
module Apache module Apache
module Logging module Logging
def error_log(*opts) [ :custom, :error, :script, :rewrite ].each do |type|
handle_log 'ErrorLog', opts.first, opts.first, opts[1..-1] class_eval <<-EOT
def #{type}_log(*opts)
handle_log '#{type.to_s.capitalize}Log', opts.first, opts.first, opts[1..-1]
end end
def custom_log(*opts) def rotate_#{type}_log(*opts)
handle_log 'CustomLog', opts.first, opts.first, opts[1..-1] handle_log '#{type.to_s.capitalize}Log', opts.first, quoteize(rotatelogs(*opts[0..1])), opts[2..-1]
end end
EOT
def rotate_custom_log(*opts)
handle_log 'CustomLog', opts.first, quoteize(rotatelogs(*opts[0..1])), opts[2..-1]
end
def rotate_error_log(*opts)
handle_log 'ErrorLog', opts.first, quoteize(rotatelogs(*opts[0..1])), opts[2..-1]
end
def rotate_script_log(*opts)
handle_log 'ScriptLog', opts.first, quoteize(rotatelogs(*opts[0..1])), opts[2..-1]
end end
def combined_log_format(name = 'combined') def combined_log_format(name = 'combined')

View File

@ -46,5 +46,12 @@ module Apache
end end
alias :script_alias! :script_alias alias :script_alias! :script_alias
def add_type!(mime, extension, options = {})
self << "AddType #{mime} #{extension}"
options.each do |type, value|
self << "Add#{type.to_s.capitalize} #{value} #{extension}"
end
end
end end
end end

View File

@ -31,14 +31,27 @@ module Apache
self.instance_eval(&block) self.instance_eval(&block)
@rewrites @rewrites.collect(&:to_a).flatten
end
def commit!
@rewrites << @rewrite
@rewrite = nil
end
def ensure_rewrite!
@rewrite = RewriteRule.new if !@rewrite
end end
def rewrite(*opts) def rewrite(*opts)
@rewrite = RewriteRule.new ensure_rewrite!
@rewrite.rule(*opts) @rewrite.rule(*opts)
commit!
end
@rewrites << @rewrite def cond(*opts)
ensure_rewrite!
@rewrite.cond(*opts)
end end
def r301(*opts) def r301(*opts)
@ -63,6 +76,8 @@ module Apache
end end
class MatchableThing class MatchableThing
include Apache::Quoteize
def tag; raise 'Override this method'; end def tag; raise 'Override this method'; end
def initialize def initialize
@ -75,7 +90,14 @@ module Apache
def rule(from, to, *opts) def rule(from, to, *opts)
@from = from @from = from
@to = to @to = to
@options = opts @options = opts.first
end
def cond(from, to, *opts)
rewrite_cond = RewriteCondition.new
rewrite_cond.cond(from, to, *opts)
@conditions << rewrite_cond
end end
def test(from, opts) def test(from, opts)
@ -86,18 +108,29 @@ module Apache
from from
end end
def to_s def to_a
output = [] output = @conditions.collect(&:to_s)
@conditions.each do |condition|
options = @options.collect do |key, value|
case key
when :last
'L'
when :preserve_query_string
'QSA'
end
end end
output << "#{tag} #{[@from.source, @to, @options].flatten * " "}" if !options.empty?
options = "[#{options * ','}]"
output * "\n" else
options = nil
end
output << "#{tag} #{[quoteize(@from.source), quoteize(@to), options].compact.flatten * " "}"
output
end
end end
end
class RewriteRule < MatchableThing class RewriteRule < MatchableThing
def tag; 'RewriteRule'; end def tag; 'RewriteRule'; end
@ -106,4 +139,13 @@ end
class RedirectMatchPermanent < MatchableThing class RedirectMatchPermanent < MatchableThing
def tag; 'RedirectMatch permanent'; end def tag; 'RedirectMatch permanent'; end
end end
class RewriteCondition < MatchableThing
def tag; 'RewriteCond'; end
alias :cond :rule
def to_s
"#{tag} #{[quoteize(@from), quoteize(@to), @options].flatten * " "}"
end
end
end end