Class: Roebe::GenerateRewriteRules

Inherits:
Base show all
Defined in:
lib/roebe/classes/generate_rewrite_rules.rb

Overview

Roebe::GenerateRewriteRules

Constant Summary collapse

N_PADDING =
10
PC =
ENV['PC'].to_s+'/'
APACHE_DIR =
#

APACHE_DIR

#
PC+'APACHE/'
LIGHTY_DIR =
#

LIGHTY_DIR

#
'/home/x/programming/ruby/src/roebe/lib/roebe/www/lighttpd/'
LIGHTY_REWRITE_RULES_FILE =
#

LIGHTY_REWRITE_RULES_FILE

#
LIGHTY_DIR+'configuration/redirects.conf'
APACHE_CONFIG_DIR =
#

APACHE_CONFIG_DIR

#
APACHE_DIR+'configuration/'
WHERE_TO_STORE =
#

WHERE_TO_STORE

#
APACHE_CONFIG_DIR+'autogenerated_rewrite_rules.conf'
YAML_FILE_AUTOGENERATE_THESE_REWRITE_RULES =
#

YAML_FILE_AUTOGENERATE_THESE_REWRITE_RULES

#
'/home/x/programming/ruby/src/roebe/lib/roebe/yaml/autogenerate_these_rewrite_rules/'\
'autogenerate_these_rewrite_rules.yml'

Constants inherited from Base

Base::COLOURS, Base::HOME_DIRECTORY_OF_USER_X, Base::N, Base::NAMESPACE

Class Method Summary collapse

Instance Method Summary collapse

Methods inherited from Base

#actions, #append_this_onto_that_file, #append_what_into, #be_silent, #beautiful_url, #burlywood, #call_next, #chdir, #cheerful_guy, #cliner, #complex_esystem, #convert_global_env, #copy_directory, #copy_file, #cornflowerblue, #create_directory, #crimson, #current_month?, #current_time?, #current_year?, #cyan, #darkcyan, #darkgreen, #darkkhaki, #darkslateblue, #deeppink, #delete_symlink, #do_not_use_the_base_colours, #do_use_the_base_colours, #e, #ecomment, #editor_to_use?, #efancy, #eimp, #emphasis, #ensure_main_encoding, #ensure_utf_encoding, #eparse, #erev, #esteelblue, #etomato, #ewarn, #exit_program, #firebrick, #get_current_day, #get_current_month, #get_files_and_directories, #get_files_from, #get_german_name_for_this_weekday, #gold, #green, #grey, #hh_mm_ss, #hh_mm_ss_day_month_year, #home_dir?, #home_directory_of_user_x?, #infer_the_namespace, #internal_hash?, #is_a_directory?, #is_a_file?, #is_a_jpg_file?, #is_an_image_file?, #is_archive?, #is_audio_file?, #is_in_studium_dir?, #is_multimedia_file?, #is_on_roebe?, #is_on_windows?, #is_studium_available?, #is_symlink?, #is_this_a_ruby_file?, #is_video_file?, #iso_encoding?, #le, #left_colour, #lightblue, #lightgreen, #lightseagreen, #lightsteelblue, #lime, #limegreen, #localhost_to_data, #log_directory?, #main_encoding?, #mediumorchid, #mediumpurple, #mediumseagreen, #mediumslateblue, #mediumspringgreen, #mediumturquoise, #mkdir_p, #mv, #n_days_in_this_month, #n_pages_in_this_pdf_file?, #namespace?, #no_file_exists_at, #ogrey, #olive, #olivedrab, #open_in_browser, #opne, #opnesystem, #opnn, #orange, #orchid, #orev, #palegoldenrod, #palevioletred, #pink, #powderblue, #programs_dir?, #project_base_dir?, #random_html_colour, #rds, #read_file_in_iso_encoding, #read_file_via_the_default_encoding, #read_lines_via_iso_encoding, #readlines_with_main_encoding, #red, #register_sigint, #remove, #remove_directory, #remove_file, #rename_kde_konsole_tab, #replace_localhost_with_data, #report_pwd, #require_rescue, #reset_the_internal_hash, #return_all_directories_from_this_directory, #return_all_files_from_this_directory, #return_current_directory, #return_dd_mm_yyyy, #return_file_or_directory_of, #return_files_from_pwd, #return_last_part_of_the_current_directory, #return_utc, #rev, #right_arrow?, #right_colour, #roebe_log_directory?, #rosybrown, #royalblue, #ruby_base_directory?, #run_in_background, #run_rcfiles_then_run_ata_via_qdbus, #sandybrown, #sdir, #seagreen, #set_be_verbose, #set_xorg_buffer, #sfancy, #sfile, #show_help, #silent_redirection?, #simp, #simple_esystem, #skyblue, #slateblue, #slategray, #springgreen, #steelblue, #string_italic, #swarn, #symlink, #teal, #temp_dir?, #to_camelcase, #to_counted_hash, #tomato, #touch, #try_to_require_the_beautiful_url_gem, #try_to_require_the_html_template, #try_to_require_the_open_gem, #try_to_require_the_program_information_gem, #try_to_require_the_xorg_buffer, #use_colours?, #verbose_truth, #weekday?, #word_wrap, #write_what_into, #yellow

Methods included from Base::CommandlineArguments

#append_onto_the_commandline_arguments, #clear_commandline_arguments, #commandline_arguments?, #commandline_arguments_as_string?, #commandline_arguments_without_leading_hyphens?, #first_argument?, #first_argument_without_leading_hyphens?, #has_an_argument_been_passed?, #remove_hyphened_arguments_from_the_commandline_arguments, #return_commandline_arguments_with_leading_hyphens, #second_argument?, #set_commandline_arguments

Constructor Details

#initialize(i = ARGV, run_already = true) ⇒ GenerateRewriteRules

#

initialize

#


62
63
64
65
66
67
68
69
# File 'lib/roebe/classes/generate_rewrite_rules.rb', line 62

def initialize(
    i           = ARGV,
    run_already = true
  )
  reset
  set_commandline_arguments(i)
  run if run_already
end

Class Method Details

.[](i = '') ⇒ Object

#

Roebe::GenerateRewriteRules[]

#


258
259
260
# File 'lib/roebe/classes/generate_rewrite_rules.rb', line 258

def self.[](i = '')
  new(i)
end

Instance Method Details

#add_headerObject

#

add_header

#


97
98
99
# File 'lib/roebe/classes/generate_rewrite_rules.rb', line 97

def add_header
  return '# '+('=' * 76)+' #'+N
end

#be_verbose?Boolean

#

be_verbose?

#

Returns:

  • (Boolean)


132
133
134
# File 'lib/roebe/classes/generate_rewrite_rules.rb', line 132

def be_verbose?
  @be_verbose
end

#eliminate_localhost(i) ⇒ Object

#

eliminate_localhost

#


241
242
243
# File 'lib/roebe/classes/generate_rewrite_rules.rb', line 241

def eliminate_localhost(i)
  return i.delete_prefix('http://localhost/')
end

#generate_all_stringsObject

#

generate_all_strings

#


104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
# File 'lib/roebe/classes/generate_rewrite_rules.rb', line 104

def generate_all_strings
  e 'Generating all strings next.' if be_verbose?
  @string << add_header
  @string << '# Autogenerated Apache rewrite rules, '+
             'from file generate_rewrite_rules.rb. '+N+'#'+N+
             '# To include this in your httpd.conf, do:'+N+
             '#   Include '+WHERE_TO_STORE+N
  @string << add_header
  main_array?.each { |member|
    _ = @beautiful_url.search_for_this_url(member)
    e _ if be_verbose?
    if _
      if _.is_a? Array
        _.each {|entry|
          expanded_url = eliminate_localhost(entry) # Eliminate the localhost.
          generate_rewrite_string(member, expanded_url)
        }
      else
        expanded_url = eliminate_localhost(_)
        generate_rewrite_string(member, expanded_url)
      end
    end
  }
end

#generate_rewrite_rules_for_lighty(store_into_this_file = LIGHTY_REWRITE_RULES_FILE) ⇒ Object

#

generate_rewrite_rules_for_lighty

Here we generate the rewrite rules for Lighty.

#


203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
# File 'lib/roebe/classes/generate_rewrite_rules.rb', line 203

def generate_rewrite_rules_for_lighty(
    store_into_this_file = LIGHTY_REWRITE_RULES_FILE
  )
  _ = ''.dup # This is the string that will get saved.
  _ << '
$HTTP["host"] =~ "localhost" {

url.redirect = (
'
main_array?.each {|entry|
  original_entry = entry.to_s.dup
  entry = @beautiful_url.search_for_this_url(entry)
  entry = eliminate_localhost(entry)
  _ << '    ' # The original padding here.
  left_part = ('"^'+original_entry+'$"').ljust(22)
  _ << left_part+' => "'+entry+'",'+N
  # ======================================================================= #
  # And we also add the UPCASED variant to it, since as of July 2015.
  # ======================================================================= #
  #_ << '    ' # The original padding here.
  #left_part = ('"^'+original_entry.upcase+'$"').ljust(22)
  #_ << left_part+' => "'+entry+'",'+N
}
# ========================================================================= #
# Next, add the closing tag:
# ========================================================================= #
_ << '  )

}'
  opn; e 'Next storing into '+sfile(store_into_this_file)
  begin
    write_what_into(_, store_into_this_file)
  rescue; end
end

#generate_rewrite_string(keyword, expanded) ⇒ Object

#

generate_rewrite_string

This generates a rewrite string.

#


162
163
164
165
166
167
168
169
# File 'lib/roebe/classes/generate_rewrite_rules.rb', line 162

def generate_rewrite_string(keyword, expanded)
  _ = 'RewriteRule '.dup
  _ << '^/'+keyword+'$'
  _ << ' ' * N_PADDING
  _ = '%-43s' % _
  _ << expanded+N
  @string << _
end

#load_yaml_dataObject

#

load_yaml_data

Load the yaml dataset for which rules are to be autogenerated.

#


141
142
143
144
145
146
147
148
# File 'lib/roebe/classes/generate_rewrite_rules.rb', line 141

def load_yaml_data # bl $PC/APACHE/YAML/autogenerate_these_rewrite_rules.yml
  _ = YAML_FILE_AUTOGENERATE_THESE_REWRITE_RULES
  if File.exist? _
    @array_yaml_data = YAML.load_file(_)
  else
    no_file_exists_at(_)
  end
end

#main_array?Boolean

#

main_array?

#

Returns:

  • (Boolean)


153
154
155
# File 'lib/roebe/classes/generate_rewrite_rules.rb', line 153

def main_array?
  @array_yaml_data
end

#notify_the_user_what_we_will_do(i = YAML_FILE_AUTOGENERATE_THESE_REWRITE_RULES) ⇒ Object

#

notify_the_user_what_we_will_do

#


189
190
191
192
193
194
195
196
# File 'lib/roebe/classes/generate_rewrite_rules.rb', line 189

def notify_the_user_what_we_will_do(
    i = YAML_FILE_AUTOGENERATE_THESE_REWRITE_RULES
  )
  opn; e 'Generating RewriteRules next, from the file '
  e
  e "  #{sfile(i)}"
  e
end

#resetObject

#

reset (reset tag)

#


74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
# File 'lib/roebe/classes/generate_rewrite_rules.rb', line 74

def reset
  super()
  infer_the_namespace
  # ======================================================================= #
  # === @be_verbose
  # ======================================================================= #
  @be_verbose = false
  # ======================================================================= #
  # === @string
  #
  # This is the main string of this class.
  # ======================================================================= #
  @string = ''.dup
  # ======================================================================= #
  # === @beautiful_url
  # ======================================================================= #
  @beautiful_url = BeautifulUrl::BeautifulUrl.new :dont_run_yet
  load_yaml_data
end

#runObject

#

run (run tag)

#


248
249
250
251
252
253
# File 'lib/roebe/classes/generate_rewrite_rules.rb', line 248

def run
  notify_the_user_what_we_will_do
  generate_all_strings
  store_config
  generate_rewrite_rules_for_lighty
end

#store_configObject

#

store_config

This stores the autogenerated rewrite rules into a file.

#


176
177
178
179
180
181
182
183
184
# File 'lib/roebe/classes/generate_rewrite_rules.rb', line 176

def store_config
  where = WHERE_TO_STORE
  where = '/home/temp/'+File.basename(WHERE_TO_STORE)
  e '  Storing the autogenerated RewriteRules into '
  e '    '+sfile(where)
  begin
    write_what_into(@string, where,'w+')
  rescue; end
end