Wiki2Go 1.17.5 → 1.22.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/bin/Wiki2Go_firewall_blacklist.rb +8 -0
- data/bin/Wiki2Go_make_cvs_repository.rb +1 -0
- data/bin/Wiki2Go_make_site.rb +1 -2
- data/bin/Wiki2Go_update_site.rb +1 -2
- data/lib/Web2Go/CGIRequest.rb +8 -2
- data/lib/Web2Go/CGIResponse.rb +17 -14
- data/lib/Web2Go/MockRequest.rb +12 -2
- data/lib/Web2Go/MockResponse.rb +10 -7
- data/lib/Web2Go/WebrickRequest.rb +106 -101
- data/lib/Web2Go/WebrickResponse.rb +4 -8
- data/lib/Wiki2Go/BlackList.rb +48 -25
- data/lib/Wiki2Go/DotGraphics.rb +1 -1
- data/lib/Wiki2Go/FileStorage.rb +266 -266
- data/lib/Wiki2Go/HTMLFormatter.rb +28 -0
- data/lib/Wiki2Go/Install/config/chonqed_blacklist.txt +418 -0
- data/lib/Wiki2Go/Install/config/passwords +1 -1
- data/lib/Wiki2Go/Install/config/url_blacklist.txt +3855 -0
- data/lib/Wiki2Go/Install/make_repository.rb +32 -26
- data/lib/Wiki2Go/Install/make_site.rb +197 -111
- data/lib/Wiki2Go/Install/site/error.html +1 -1
- data/lib/Wiki2Go/Install/site/robots.txt +10 -1
- data/lib/Wiki2Go/Install/site/style.css +129 -64
- data/lib/Wiki2Go/Install/templates/admin.htm +1 -1
- data/lib/Wiki2Go/Install/templates/admin_pages/edit.txt +2 -1
- data/lib/Wiki2Go/Install/templates/admin_pages/format_for_fck.txt +31 -0
- data/lib/Wiki2Go/Install/templates/admin_pages/passwords.txt +1 -1
- data/lib/Wiki2Go/Install/templates/edit.htm +62 -46
- data/lib/Wiki2Go/Install/templates/full_footer.htm +31 -33
- data/lib/Wiki2Go/Install/templates/header.htm +0 -1
- data/lib/Wiki2Go/Install/templates/menu.htm +29 -0
- data/lib/Wiki2Go/Install/templates/pagelist.htm +46 -43
- data/lib/Wiki2Go/Install/templates/simple_footer.htm +20 -16
- data/lib/Wiki2Go/Install/templates/versionlist.htm +52 -40
- data/lib/Wiki2Go/Install/templates/view.htm +46 -29
- data/lib/Wiki2Go/Install/templates/wikiedit.htm +63 -0
- data/lib/Wiki2Go/Install/wiki/delete.png +0 -0
- data/lib/Wiki2Go/Install/wiki/style.css +133 -63
- data/lib/Wiki2Go/LineFormatter.rb +345 -197
- data/lib/Wiki2Go/Page.rb +16 -3
- data/lib/Wiki2Go/PrivateWikiConfig.rb +5 -5
- data/lib/Wiki2Go/PublicWikiConfig.rb +83 -37
- data/lib/Wiki2Go/ReadWriteWikiConfig.rb +8 -8
- data/lib/Wiki2Go/Server.rb +6 -1
- data/lib/Wiki2Go/SpamFilter.rb +32 -41
- data/lib/Wiki2Go/Web.rb +10 -3
- data/lib/Wiki2Go/Wiki2Go.rb +301 -94
- data/lib/Wiki2Go/Wiki2GoConfig.rb +87 -6
- data/lib/Wiki2Go/Wiki2GoServlet.rb +66 -12
- data/lib/Wiki2Go/WikiFormatter.rb +60 -30
- data/lib/Wiki2Go/cgi/diff.rb +20 -0
- data/lib/Wiki2Go/cgi/secure/log_rss.rb +21 -0
- data/lib/Wiki2Go/cgi/sidebyside.rb +20 -0
- data/lib/Wiki2Go/cgi/wikiedit.rb +20 -0
- data/lib/Wiki2Go/firewall_blacklist.rb +88 -0
- data/test/All.rb +5 -2
- data/test/TestBlackList.rb +70 -14
- data/test/TestConfig.rb +5 -5
- data/test/TestDiff.rb +95 -0
- data/test/TestFormatter.rb +14 -16
- data/test/TestHTMLFormatter.rb +37 -0
- data/test/TestInstall.rb +70 -27
- data/test/TestLineFormatter.rb +71 -15
- data/test/TestRSS.rb +8 -7
- data/test/TestRepository.rb +50 -0
- data/test/TestServer.rb +3 -8
- data/test/TestSpamFilter.rb +33 -1
- data/test/TestStorage.rb +11 -0
- data/test/TestWeb.rb +2 -2
- data/test/TestWiki2Go.rb +766 -166
- data/test/TestWiki2GoServlet.rb +1122 -524
- data/test/UnitTestFiles.rb +7 -3
- data/test/Wiki2GoConfigForTest.rb +40 -6
- data/test/checksite.rb +17 -50
- data/test/test_firewall_blacklist.rb +131 -0
- data/test/test_page.rb +45 -0
- data/test/testdata/Registration.rbl.txt +7 -0
- data/test/testdata/config/url_blacklist.txt +38822 -0
- data/test/testdata/expected_changes.html +1 -2
- data/test/testdata/expected_edit.html +108 -59
- data/test/testdata/expected_full_rss.xml +2 -2
- data/test/testdata/expected_out.html +97 -61
- data/test/testdata/expected_put.html +88 -53
- data/test/testdata/expected_save.html +88 -52
- data/test/testdata/expected_savehtml.html +88 -52
- data/test/testdata/expected_search.html +68 -53
- data/test/testdata/expected_upload.html +88 -53
- data/test/testdata/expected_versions.html +97 -82
- data/test/testdata/expected_view.html +97 -61
- data/test/testdata/firewall/iptables.config +37 -0
- data/test/testdata/firewall/user_blacklist.txt +162 -0
- data/test/testdata/logs/wiki.log +652 -0
- data/test/testdata/logs/wiki.log.0 +113 -0
- data/test/testdata/logs/wiki.log.1 +113 -0
- data/test/testdata/logs/wiki.log.2 +113 -0
- data/test/testdata/logs/wiki.log.3 +115 -0
- data/test/testdata/logs/wiki.log.4 +5 -0
- data/test/testdata/logs/wiki.log.5 +7 -0
- data/test/testdata/logs/wiki.log.6 +5 -0
- data/test/testdata/logs/wiki.log.7 +118 -0
- data/test/testdata/logs/wiki.log.8 +12 -0
- data/test/testdata/site/html/Xpday/rss.xml +53 -103
- data/test/testdata/texts/Bugs/FrontPage.txt +6 -0
- data/test/testdata/texts/Bugs/NoHidden.spam +17850 -0
- data/test/testdata/texts/Bugs/PairProgrammingParties.spam +102 -0
- data/test/testdata/texts/Bugs/PairProgrammingParties.txt +99 -0
- metadata +53 -7
- data/test/TestMail.rb +0 -29
- data/test/gc.log +0 -2
| @@ -5,10 +5,16 @@ require 'etc' | |
| 5 5 | 
             
            require 'logger'
         | 
| 6 6 | 
             
            require 'tempfile'
         | 
| 7 7 |  | 
| 8 | 
            -
             | 
| 9 | 
            -
             | 
| 10 | 
            -
             | 
| 11 | 
            -
            require 'rscm | 
| 8 | 
            +
            begin
         | 
| 9 | 
            +
              require 'rubygems'
         | 
| 10 | 
            +
              gem 'rscm','~>0.3.1'
         | 
| 11 | 
            +
              require 'rscm'
         | 
| 12 | 
            +
              #require 'rscm/logging'
         | 
| 13 | 
            +
              require 'rscm/better'
         | 
| 14 | 
            +
                
         | 
| 15 | 
            +
            rescue Exception => e
         | 
| 16 | 
            +
              puts e
         | 
| 17 | 
            +
            end
         | 
| 12 18 |  | 
| 13 19 | 
             
            module RSCM
         | 
| 14 20 | 
             
              class Better
         | 
| @@ -79,7 +85,6 @@ module RSCM | |
| 79 85 | 
             
              end
         | 
| 80 86 | 
             
            end
         | 
| 81 87 |  | 
| 82 | 
            -
             | 
| 83 88 | 
             
            module Wiki2Go
         | 
| 84 89 | 
             
              class RepositoryMaker
         | 
| 85 90 |  | 
| @@ -392,8 +397,8 @@ module Wiki2Go | |
| 392 397 | 
             
                  config_file = File.join(dir,'config')
         | 
| 393 398 | 
             
                  lock_directory = File.join(@dir,'locks') 
         | 
| 394 399 | 
             
                  update_file(config_file,{/LockDir=/    => "LockDir=#{lock_directory}\n" , 
         | 
| 395 | 
            -
             | 
| 396 | 
            -
             | 
| 400 | 
            +
                      /LogHistory=/ => "LogHistory=TMAR\n" ,
         | 
| 401 | 
            +
                      /LockServer=/ => "LockServer=none\n" })
         | 
| 397 402 | 
             
                end
         | 
| 398 403 |  | 
| 399 404 | 
             
                def update_file(name,substitutions)
         | 
| @@ -448,31 +453,32 @@ module Wiki2Go | |
| 448 453 | 
             
            *.pdf -k 'b'
         | 
| 449 454 | 
             
            *.xls -k 'b'
         | 
| 450 455 | 
             
            *.ppt -k 'b'
         | 
| 451 | 
            -
             | 
| 456 | 
            +
            *.swf -k 'b'
         | 
| 457 | 
            +
                  END_CVS_WRAPPERS
         | 
| 452 458 | 
             
                end
         | 
| 453 459 |  | 
| 454 | 
            -
             | 
| 455 | 
            -
             | 
| 456 | 
            -
             | 
| 457 | 
            -
             | 
| 458 | 
            -
             | 
| 459 | 
            -
             | 
| 460 | 
            -
             | 
| 461 | 
            -
             | 
| 462 | 
            -
             | 
| 463 | 
            -
             | 
| 464 | 
            -
             | 
| 465 | 
            -
             | 
| 466 | 
            -
             | 
| 467 | 
            -
             | 
| 468 | 
            -
             | 
| 469 | 
            -
             | 
| 460 | 
            +
                def set_owner(dir,username,groupname)
         | 
| 461 | 
            +
                  info = Etc.getpwnam(username)
         | 
| 462 | 
            +
                  if !info.nil? then
         | 
| 463 | 
            +
                    user_id = info.uid
         | 
| 464 | 
            +
                    group_id = info.gid
         | 
| 465 | 
            +
                    if !groupname.nil? then
         | 
| 466 | 
            +
                      group_id = Etc.getgrnam(groupname).gid
         | 
| 467 | 
            +
                    end
         | 
| 468 | 
            +
                    mode = File.stat(dir).mode | 02775
         | 
| 469 | 
            +
                    File.chmod(mode,dir)
         | 
| 470 | 
            +
                    File.chown(user_id,group_id,dir)
         | 
| 471 | 
            +
                    Dir.glob(File.join(dir,'**/*')).each do |file|
         | 
| 472 | 
            +
                      if file[0] != '.' then
         | 
| 473 | 
            +
                        mode = File.stat(file).mode | 02775
         | 
| 474 | 
            +
                        File.chmod(mode,file)
         | 
| 475 | 
            +
                        File.chown(user_id,group_id,file)
         | 
| 476 | 
            +
                      end
         | 
| 470 477 | 
             
                    end
         | 
| 471 478 | 
             
                  end
         | 
| 472 479 | 
             
                end
         | 
| 473 | 
            -
              end
         | 
| 474 480 |  | 
| 475 | 
            -
            end
         | 
| 481 | 
            +
              end
         | 
| 476 482 |  | 
| 477 483 | 
             
            end
         | 
| 478 484 |  | 
| @@ -5,12 +5,12 @@ require 'fileutils' | |
| 5 5 | 
             
            require 'optparse'
         | 
| 6 6 | 
             
            require "uri"
         | 
| 7 7 |  | 
| 8 | 
            -
             | 
| 9 | 
            -
            WIKI2GO_VERSION = '1.17.5'
         | 
| 8 | 
            +
            WIKI2GO_VERSION = '1.22.0'
         | 
| 10 9 | 
             
            gem "Wiki2Go","~>#{WIKI2GO_VERSION}"
         | 
| 11 10 |  | 
| 12 11 | 
             
            require 'Wiki2Go/Web.rb'
         | 
| 13 12 | 
             
            require 'Wiki2Go/Wiki2Go.rb'
         | 
| 13 | 
            +
             | 
| 14 14 | 
             
            require 'Wiki2Go/PublicWikiConfig'
         | 
| 15 15 | 
             
            require 'Wiki2Go/PrivateWikiConfig'
         | 
| 16 16 | 
             
            require 'Wiki2Go/ReadWriteWikiConfig'
         | 
| @@ -39,16 +39,45 @@ module Wiki2Go | |
| 39 39 | 
             
                attr_accessor  :subsite
         | 
| 40 40 |  | 
| 41 41 | 
             
                def initialize
         | 
| 42 | 
            -
                  @user         = WebUser.new( | 
| 42 | 
            +
                  @user         = WebUser.new(nil,nil)
         | 
| 43 43 | 
             
                  @server       = 'localhost'
         | 
| 44 44 | 
             
                  @port         = '80'
         | 
| 45 45 | 
             
                  @default_wiki = ''
         | 
| 46 46 | 
             
                  @directory    = Dir.getwd
         | 
| 47 | 
            -
                  @type         =  | 
| 47 | 
            +
                  @type         = nil
         | 
| 48 48 | 
             
                  @source_dir   = File.expand_path(File.dirname(__FILE__))
         | 
| 49 49 | 
             
                  @subsite      = ''
         | 
| 50 50 | 
             
                end
         | 
| 51 51 |  | 
| 52 | 
            +
                # Return a Wiki2GoConfig object, if there is a CgiOptions.rb file
         | 
| 53 | 
            +
                # Returns nil if no configuration could be read
         | 
| 54 | 
            +
                def existing_configuration
         | 
| 55 | 
            +
                  configfile = File.join(@directory,'site','scripts','CgiOptions.rb')
         | 
| 56 | 
            +
                  if File.exists?(configfile) then
         | 
| 57 | 
            +
                    load configfile
         | 
| 58 | 
            +
                    return CgiOptions.new
         | 
| 59 | 
            +
                  end
         | 
| 60 | 
            +
                  return nil
         | 
| 61 | 
            +
                end
         | 
| 62 | 
            +
                
         | 
| 63 | 
            +
                def read_existing_configuration
         | 
| 64 | 
            +
                  config = existing_configuration
         | 
| 65 | 
            +
                  unless config.nil? then
         | 
| 66 | 
            +
                    if @type.nil? then
         | 
| 67 | 
            +
                      @type = Configuration.type_of(config)
         | 
| 68 | 
            +
                    end
         | 
| 69 | 
            +
             | 
| 70 | 
            +
                    if @user.user.nil? then
         | 
| 71 | 
            +
                      @user.user = config.user if config.respond_to?(:user) 
         | 
| 72 | 
            +
                    end
         | 
| 73 | 
            +
             | 
| 74 | 
            +
                    if @user.group.nil? || @user.group.empty? then
         | 
| 75 | 
            +
                      @user.group = (config.respond_to?(:group) ? config.group : nil)
         | 
| 76 | 
            +
                    end
         | 
| 77 | 
            +
             | 
| 78 | 
            +
                  end
         | 
| 79 | 
            +
                end
         | 
| 80 | 
            +
             | 
| 52 81 | 
             
                def dotted_port
         | 
| 53 82 | 
             
                  if @port.nil? || @port.empty? then
         | 
| 54 83 | 
             
                    ':80'
         | 
| @@ -74,12 +103,20 @@ module Wiki2Go | |
| 74 103 | 
             
                   @subsite = uri.path
         | 
| 75 104 | 
             
                   @port    = uri.port.to_s
         | 
| 76 105 | 
             
                 end
         | 
| 77 | 
            -
             | 
| 106 | 
            +
               end
         | 
| 107 | 
            +
             | 
| 108 | 
            +
               private
         | 
| 109 | 
            +
               def self.type_of(configuration)
         | 
| 110 | 
            +
                 return 'public' if configuration.kind_of?(Wiki2Go::PublicWikiConfig)
         | 
| 111 | 
            +
                 return 'private' if configuration.kind_of?(Wiki2Go::PrivateWikiConfig)
         | 
| 112 | 
            +
                 return 'readwrite' if configuration.kind_of?(Wiki2Go::ReadWriteWikiConfig)
         | 
| 113 | 
            +
                 return nil 
         | 
| 114 | 
            +
             end
         | 
| 78 115 | 
             
              end
         | 
| 79 116 |  | 
| 80 117 | 
             
              module Install
         | 
| 81 118 |  | 
| 82 | 
            -
                def Install.make_site(args)
         | 
| 119 | 
            +
                def Install.make_site(args,&block)
         | 
| 83 120 | 
             
                  opts = OptionParser.new
         | 
| 84 121 |  | 
| 85 122 | 
             
                  configuration = Configuration.new      
         | 
| @@ -89,7 +126,7 @@ module Wiki2Go | |
| 89 126 | 
             
                  opts.on("-u",'--user username',String) { |val| configuration.user.user = val }
         | 
| 90 127 | 
             
                  opts.on("-g",'--group groupname',String) { |val| configuration.user.group = val }
         | 
| 91 128 | 
             
                  opts.on("-w",'--web default_web',String) { |val| configuration.default_wiki = val }
         | 
| 92 | 
            -
                  opts.on("-t",'--type wiki_type',"(public, private, readwrite)",String) { |val| configuration.type = val }
         | 
| 129 | 
            +
                  opts.on("-t",'--type wiki_type',"(public, private, readwrite)",String) { |val| configuration.type = val.downcase }
         | 
| 93 130 | 
             
                  opts.on("-d",'--directory dir',"default = .",String) { |val| configuration.directory = File.expand_path(val) }
         | 
| 94 131 | 
             
                  opts.on_tail("-h", "--help", "Show this message") do
         | 
| 95 132 | 
             
                    puts opts
         | 
| @@ -97,11 +134,14 @@ module Wiki2Go | |
| 97 134 | 
             
                  end
         | 
| 98 135 | 
             
                  opts.parse(args)
         | 
| 99 136 |  | 
| 100 | 
            -
                   | 
| 101 | 
            -
             | 
| 102 | 
            -
                  if configuration.server.empty? or configuration.type. | 
| 137 | 
            +
                  configuration.read_existing_configuration
         | 
| 138 | 
            +
                  
         | 
| 139 | 
            +
                  if configuration.server.empty? or configuration.type.nil? then
         | 
| 140 | 
            +
                    puts "Server URL must be specified" if configuration.server.empty?
         | 
| 141 | 
            +
                    puts "Wiki type (public, private, readwrite) must be specified" if configuration.type.nil?
         | 
| 103 142 | 
             
                    puts opts
         | 
| 104 143 | 
             
                  else
         | 
| 144 | 
            +
                    yield "Installing Wiki2Go site in #{configuration.directory}" if block_given?
         | 
| 105 145 | 
             
                    oldmask = File.umask(02)
         | 
| 106 146 | 
             
                    ensure_path_exists(configuration.directory)
         | 
| 107 147 | 
             
                    cd(configuration.directory) {
         | 
| @@ -116,20 +156,20 @@ module Wiki2Go | |
| 116 156 | 
             
                    }
         | 
| 117 157 | 
             
                    set_owner(configuration.directory,configuration.user)
         | 
| 118 158 | 
             
                    File.umask(oldmask)
         | 
| 119 | 
            -
                     | 
| 120 | 
            -
                     | 
| 121 | 
            -
                     | 
| 159 | 
            +
                    yield "Installed." if block_given?
         | 
| 160 | 
            +
                    yield "Include '#{configuration.directory}/config/site.conf' in your Apache configuration" if block_given?
         | 
| 161 | 
            +
                    yield "  and restart Apache to activate your wiki." if block_given?
         | 
| 122 162 | 
             
                  end
         | 
| 123 163 | 
             
                end
         | 
| 124 164 |  | 
| 125 | 
            -
                def Install.update_site(args)
         | 
| 165 | 
            +
                def Install.update_site(args,&block)
         | 
| 126 166 | 
             
                  opts = OptionParser.new      
         | 
| 127 167 |  | 
| 128 168 | 
             
                  configuration = Configuration.new      
         | 
| 129 169 | 
             
                  opts.on("-u",'--user username',String) { |val| configuration.user.user = val }
         | 
| 130 170 | 
             
                  opts.on("-g",'--group groupname',String) { |val| configuration.user.group = val }
         | 
| 131 171 | 
             
                  opts.on("-d",'--directory dir',"default = .",String) { |val| configuration.directory = File.expand_path(val) }
         | 
| 132 | 
            -
                  opts.on("-t",'--type wiki_type',"(public, private, readwrite)",String) { |val| configuration.type = val }
         | 
| 172 | 
            +
                  opts.on("-t",'--type wiki_type',"(public, private, readwrite)",String) { |val| configuration.type = val.downcase }
         | 
| 133 173 | 
             
                  opts.on_tail("-h", "--help", "Show this message") do
         | 
| 134 174 | 
             
                    puts opts
         | 
| 135 175 | 
             
                    exit
         | 
| @@ -137,14 +177,19 @@ module Wiki2Go | |
| 137 177 |  | 
| 138 178 | 
             
                  opts.parse(args)
         | 
| 139 179 |  | 
| 140 | 
            -
                   | 
| 180 | 
            +
                  configuration.read_existing_configuration
         | 
| 181 | 
            +
                  
         | 
| 182 | 
            +
                  if configuration.type.nil? then
         | 
| 183 | 
            +
                    puts "Wiki type (public, private, readwrite) must be specified" if configuration.type.nil?
         | 
| 141 184 | 
             
                    puts opts
         | 
| 142 185 | 
             
                  else
         | 
| 186 | 
            +
                    yield "Updating Wiki2Go site in #{configuration.directory}" if block_given?
         | 
| 187 | 
            +
             | 
| 143 188 | 
             
                    oldmask = File.umask(02)
         | 
| 144 189 | 
             
                    cd(configuration.directory) {
         | 
| 145 190 | 
             
                      case configuration.type
         | 
| 146 191 | 
             
                      when 'private' then
         | 
| 147 | 
            -
                        do_update_private_site( | 
| 192 | 
            +
                        do_update_private_site(configuration)
         | 
| 148 193 | 
             
                      when 'public'
         | 
| 149 194 | 
             
                        do_update_public_site(configuration)
         | 
| 150 195 | 
             
                      else
         | 
| @@ -153,17 +198,18 @@ module Wiki2Go | |
| 153 198 | 
             
                    }
         | 
| 154 199 | 
             
                    set_owner(configuration.directory,configuration.user)
         | 
| 155 200 | 
             
                    File.umask(oldmask)
         | 
| 201 | 
            +
                    yield "Updated." if block_given?
         | 
| 156 202 | 
             
                  end
         | 
| 157 203 | 
             
                end
         | 
| 158 204 |  | 
| 159 | 
            -
                def Install.make_wiki(args)
         | 
| 205 | 
            +
                def Install.make_wiki(args,&block)
         | 
| 160 206 | 
             
                  opts = OptionParser.new      
         | 
| 161 207 |  | 
| 162 208 | 
             
                  configuration = Configuration.new      
         | 
| 163 209 |  | 
| 164 210 | 
             
                  opts.on("-u",'--user username',String) { |val| configuration.user.user = val }
         | 
| 165 211 | 
             
                  opts.on("-g",'--group groupname',String) { |val| configuration.user.group = val }
         | 
| 166 | 
            -
                  opts.on("-w",'--web  | 
| 212 | 
            +
                  opts.on("-w",'--web default_wiki',String) { |val| configuration.default_wiki = val }
         | 
| 167 213 | 
             
                  opts.on("-d",'--directory dir',"default = .",String) { |val| configuration.directory = File.expand_path(val) }
         | 
| 168 214 | 
             
                  opts.on_tail("-h", "--help", "Show this message") do
         | 
| 169 215 | 
             
                    puts opts
         | 
| @@ -171,21 +217,27 @@ module Wiki2Go | |
| 171 217 | 
             
                  end
         | 
| 172 218 | 
             
                  opts.parse(args)
         | 
| 173 219 |  | 
| 174 | 
            -
                   | 
| 175 | 
            -
             | 
| 176 | 
            -
             | 
| 177 | 
            -
             | 
| 178 | 
            -
             | 
| 179 | 
            -
                   | 
| 220 | 
            +
                  configuration.read_existing_configuration
         | 
| 221 | 
            +
             | 
| 222 | 
            +
                  if configuration.default_wiki.empty? then
         | 
| 223 | 
            +
                    puts "The name of the subwiki is required"
         | 
| 224 | 
            +
                    puts opts
         | 
| 225 | 
            +
                  else
         | 
| 226 | 
            +
                    yield "Creating subwiki #{configuration.default_wiki} in #{configuration.directory}" if block_given?
         | 
| 227 | 
            +
                    oldmask = File.umask(02)
         | 
| 228 | 
            +
                    cd(configuration.directory) {
         | 
| 229 | 
            +
                      do_make_wiki(configuration)
         | 
| 230 | 
            +
                    }      
         | 
| 231 | 
            +
                    set_owner(configuration.directory,configuration.user)
         | 
| 232 | 
            +
                    File.umask(oldmask)
         | 
| 233 | 
            +
                    yield "Created." if block_given?
         | 
| 234 | 
            +
                  end
         | 
| 180 235 | 
             
                end
         | 
| 181 236 |  | 
| 182 237 | 
             
                private
         | 
| 183 238 |  | 
| 184 239 | 
             
                def Install.do_make_public_site(configuration)
         | 
| 185 240 | 
             
                  do_update_public_site(configuration)
         | 
| 186 | 
            -
                  config_file = make_config( configuration,'PublicWikiConfig')
         | 
| 187 | 
            -
             | 
| 188 | 
            -
                  install_html(configuration)
         | 
| 189 241 |  | 
| 190 242 | 
             
                  do_make_wiki( configuration)
         | 
| 191 243 |  | 
| @@ -195,9 +247,6 @@ module Wiki2Go | |
| 195 247 |  | 
| 196 248 | 
             
                def Install.do_make_readwrite_site( configuration)
         | 
| 197 249 | 
             
                  do_update_readwrite_site( configuration)
         | 
| 198 | 
            -
                  config_file = make_config( configuration,'ReadWriteWikiConfig')
         | 
| 199 | 
            -
             | 
| 200 | 
            -
                  install_html(configuration)
         | 
| 201 250 |  | 
| 202 251 | 
             
                  do_make_wiki( configuration)
         | 
| 203 252 |  | 
| @@ -208,9 +257,6 @@ module Wiki2Go | |
| 208 257 | 
             
                def Install.do_make_private_site(configuration)
         | 
| 209 258 |  | 
| 210 259 | 
             
                  do_update_private_site(configuration)
         | 
| 211 | 
            -
                  config_file = make_config( configuration,'PrivateWikiConfig')
         | 
| 212 | 
            -
             | 
| 213 | 
            -
                  install_html(configuration)
         | 
| 214 260 |  | 
| 215 261 | 
             
                  do_make_wiki( configuration)
         | 
| 216 262 |  | 
| @@ -220,22 +266,32 @@ module Wiki2Go | |
| 220 266 |  | 
| 221 267 |  | 
| 222 268 | 
             
                def Install.do_update_public_site(config)
         | 
| 223 | 
            -
                   | 
| 269 | 
            +
                  install_html(config)
         | 
| 270 | 
            +
             | 
| 224 271 | 
             
                  install_scripts(config)
         | 
| 272 | 
            +
             | 
| 273 | 
            +
                  make_config( config,'PublicWikiConfig')
         | 
| 225 274 | 
             
                end    
         | 
| 226 275 |  | 
| 227 276 | 
             
                def Install.do_update_readwrite_site(config)
         | 
| 228 | 
            -
                   | 
| 277 | 
            +
                  install_html(config)
         | 
| 278 | 
            +
             | 
| 229 279 | 
             
                  install_readwrite_scripts(config)
         | 
| 280 | 
            +
             | 
| 281 | 
            +
                  make_config( config,'ReadWriteWikiConfig')
         | 
| 282 | 
            +
                  
         | 
| 230 283 | 
             
                end    
         | 
| 231 284 |  | 
| 232 285 | 
             
                def Install.do_update_private_site(config)
         | 
| 233 | 
            -
                   | 
| 286 | 
            +
                  install_html(config)
         | 
| 287 | 
            +
                  
         | 
| 234 288 | 
             
                  install_scripts(config)
         | 
| 235 | 
            -
                end    
         | 
| 236 289 |  | 
| 290 | 
            +
                  make_config( config,'PrivateWikiConfig')
         | 
| 291 | 
            +
                end    
         | 
| 237 292 |  | 
| 238 293 | 
             
                def Install.install_scripts(config)
         | 
| 294 | 
            +
                  mkdir_p(File.join('site','scripts','secure'),{ :mode => 0775})
         | 
| 239 295 | 
             
                  source = File.join(config.source_dir,'..','cgi')
         | 
| 240 296 | 
             
                  copy_scripts(source,'site/scripts')
         | 
| 241 297 | 
             
                  copy_scripts(source,'site/scripts/secure')
         | 
| @@ -246,9 +302,10 @@ module Wiki2Go | |
| 246 302 | 
             
                end
         | 
| 247 303 |  | 
| 248 304 | 
             
                def Install.install_readwrite_scripts(config)
         | 
| 305 | 
            +
                  mkdir_p(File.join('site','scripts','secure'),{ :mode => 0775})
         | 
| 249 306 | 
             
                  source = File.join(config.source_dir,'..','cgi')
         | 
| 250 307 | 
             
                  copy_scripts(source,'site/scripts') { |name| 
         | 
| 251 | 
            -
                    value = (name != 'save.rb' && name != 'edit.rb') 
         | 
| 308 | 
            +
                    value = (name != 'save.rb' && name != 'edit.rb' && name != 'wikiedit.rb') 
         | 
| 252 309 | 
             
                    value
         | 
| 253 310 | 
             
                  }
         | 
| 254 311 | 
             
                  copy_scripts(source,'site/scripts/secure')
         | 
| @@ -297,37 +354,39 @@ module Wiki2Go | |
| 297 354 | 
             
                end
         | 
| 298 355 |  | 
| 299 356 | 
             
                def Install.set_owner(dir,owner)
         | 
| 300 | 
            -
                   | 
| 301 | 
            -
             | 
| 302 | 
            -
                     | 
| 303 | 
            -
             | 
| 304 | 
            -
             | 
| 305 | 
            -
                       | 
| 306 | 
            -
             | 
| 307 | 
            -
             | 
| 308 | 
            -
             | 
| 309 | 
            -
             | 
| 310 | 
            -
             | 
| 311 | 
            -
                       | 
| 312 | 
            -
                        if  | 
| 313 | 
            -
                           | 
| 314 | 
            -
             | 
| 315 | 
            -
                           | 
| 357 | 
            +
                  if !owner.user.nil? then
         | 
| 358 | 
            +
                    info = Etc.getpwnam(owner.user)
         | 
| 359 | 
            +
                    if !info.nil? then
         | 
| 360 | 
            +
                      user_id = info.uid
         | 
| 361 | 
            +
                      group_id = info.gid
         | 
| 362 | 
            +
                      if !owner.group.nil? then
         | 
| 363 | 
            +
                        group_id = Etc.getgrnam(owner.group).gid
         | 
| 364 | 
            +
                      end
         | 
| 365 | 
            +
                      mode = File.stat(dir).mode | 0664
         | 
| 366 | 
            +
                      File.chmod(mode,dir)
         | 
| 367 | 
            +
                      File.chown(user_id,group_id,dir)
         | 
| 368 | 
            +
                      Dir.glob(File.join(dir,'**/*')).each do |file|
         | 
| 369 | 
            +
                        if file[0] != '.' then
         | 
| 370 | 
            +
                          if File.extname(file) == '.rb' then
         | 
| 371 | 
            +
                            mode = File.stat(file).mode | 0764
         | 
| 372 | 
            +
                          else
         | 
| 373 | 
            +
                            mode = File.stat(file).mode | 0664
         | 
| 374 | 
            +
                          end
         | 
| 375 | 
            +
                          File.chmod(mode,file)
         | 
| 376 | 
            +
                          File.chown(user_id,group_id,file)
         | 
| 316 377 | 
             
                        end
         | 
| 317 | 
            -
                        File.chmod(mode,file)
         | 
| 318 | 
            -
                        File.chown(user_id,group_id,file)
         | 
| 319 378 | 
             
                      end
         | 
| 320 379 | 
             
                    end
         | 
| 321 380 | 
             
                  end
         | 
| 322 381 | 
             
                end
         | 
| 323 | 
            -
             | 
| 382 | 
            +
                
         | 
| 324 383 | 
             
                def Install.make_config(config,baseconfig)
         | 
| 325 384 | 
             
                  template = <<-TEMPLATE_END
         | 
| 326 385 | 
             
            #!/usr/bin/env ruby
         | 
| 327 386 |  | 
| 328 387 | 
             
            # Select which version of Wiki2Go is used. 
         | 
| 329 388 | 
             
            require 'rubygems'
         | 
| 330 | 
            -
             | 
| 389 | 
            +
            gem "Wiki2Go","~>#{WIKI2GO_VERSION}"
         | 
| 331 390 | 
             
            require "Wiki2Go/#{baseconfig}"
         | 
| 332 391 |  | 
| 333 392 | 
             
            class CgiOptions < Wiki2Go::#{baseconfig}
         | 
| @@ -351,6 +410,17 @@ class CgiOptions < Wiki2Go::#{baseconfig} | |
| 351 410 | 
             
                # Set your Amazon affiliate ID for ISBN links
         | 
| 352 411 | 
             
                @amazon_affiliate = 'agilesystems-21'
         | 
| 353 412 |  | 
| 413 | 
            +
                # The number of pages that appear in the 'Recent Changes' list and in RSS feeds
         | 
| 414 | 
            +
                @pages_in_recent_changes = 20 
         | 
| 415 | 
            +
                @pages_in_rss = 20
         | 
| 416 | 
            +
             | 
| 417 | 
            +
                # Choose either 'edit' (rich edit) or 'wikiedit' (classic wiki editor)
         | 
| 418 | 
            +
                # To enable rich editing
         | 
| 419 | 
            +
                #  1. Install the Wiki2GoEditor gem to enable the rich editor
         | 
| 420 | 
            +
                #  2. Execute Wiki2Go_install_editor.rb -d <the directory where the wiki is installed> to add the rich editor
         | 
| 421 | 
            +
                #  3. Change this setting to 'edit'
         | 
| 422 | 
            +
                @editor       = 'wikiedit'
         | 
| 423 | 
            +
             | 
| 354 424 | 
             
                # Set to true if you want to allow the execution of Ruby code inside pages
         | 
| 355 425 | 
             
                # SECURITY WARNING: this code can do absolutely anything, only allow for trusted users
         | 
| 356 426 | 
             
                @allow_dynamic_pages = false
         | 
| @@ -369,33 +439,45 @@ class CgiOptions < Wiki2Go::#{baseconfig} | |
| 369 439 | 
             
                # If you want to enable CVS commit/update support for your wiki, uncomment the following line
         | 
| 370 440 | 
             
                #  and fill in the CVSROOT and the name of the module as parameters
         | 
| 371 441 | 
             
                # The CVS repository and module must exist and the webserver user must have commit access to it
         | 
| 372 | 
            -
                # You need to have the rscm 0.3 gem installed  
         | 
| 442 | 
            +
                # You need to have the rscm 0.3.x gem installed  
         | 
| 373 443 | 
             
                # use_repository('MYCVSROOT','mymodule')
         | 
| 374 444 |  | 
| 445 | 
            +
                # The wiki calculates checksums for pages submitted and stored. This can be used for 2 purposes
         | 
| 446 | 
            +
                # - Check that the save was not performed by a robot: the checksum from the edit page is missing
         | 
| 447 | 
            +
                # - Check for edit collisions: the checksum submitted is not the same as the checksum of the file on disk
         | 
| 448 | 
            +
                # For compatibility reasons, this functionality is disabled by default
         | 
| 449 | 
            +
             | 
| 450 | 
            +
                # Set to true to enable checksum checking when saving files
         | 
| 451 | 
            +
                @checksum_required = false
         | 
| 452 | 
            +
                # Set to a unique string to make your checksums unique
         | 
| 453 | 
            +
                @checksum_salt = '#{config.directory}'
         | 
| 454 | 
            +
                # Set to true to add users who save without checksum to the blacklist
         | 
| 455 | 
            +
                @blacklist_when_no_checksum = false
         | 
| 375 456 | 
             
              end  
         | 
| 376 457 |  | 
| 377 458 | 
             
            end
         | 
| 378 459 | 
             
            TEMPLATE_END
         | 
| 379 460 |  | 
| 380 461 | 
             
                  dest = File.join(config.directory,'site','scripts','CgiOptions.rb')
         | 
| 381 | 
            -
                  if  | 
| 382 | 
            -
                     | 
| 383 | 
            -
                      f.puts template
         | 
| 384 | 
            -
                    end
         | 
| 462 | 
            +
                  if File.exists?(dest) then
         | 
| 463 | 
            +
                    dest += '.new'
         | 
| 385 464 | 
             
                  end
         | 
| 386 | 
            -
             | 
| 465 | 
            +
                  File.open(dest,File::CREAT|File::TRUNC|File::RDWR,0664) do |f|
         | 
| 466 | 
            +
                    f.puts template
         | 
| 467 | 
            +
                  end
         | 
| 468 | 
            +
                  
         | 
| 387 469 | 
             
                  logdir = File.join(config.directory,'logs')
         | 
| 388 470 | 
             
                  mkdir_p(logdir,{ :mode => 0775}) unless File.exists?(logdir)
         | 
| 389 | 
            -
             | 
| 471 | 
            +
                  
         | 
| 390 472 | 
             
                  logfile = File.join(logdir,'wiki.log')
         | 
| 391 473 | 
             
                  if !File.exists?(logfile) then
         | 
| 392 474 | 
             
                    touch logfile
         | 
| 393 475 | 
             
                  end
         | 
| 394 | 
            -
             | 
| 476 | 
            +
                  
         | 
| 395 477 | 
             
                  securedir = File.join(config.directory,'site','scripts','secure')
         | 
| 396 478 | 
             
                  if File.exists?(securedir) then
         | 
| 397 479 | 
             
                    secure = File.join(securedir,'CgiOptions.rb')
         | 
| 398 | 
            -
             | 
| 480 | 
            +
                    
         | 
| 399 481 | 
             
                    begin
         | 
| 400 482 | 
             
                      ln_sf(dest,secure)
         | 
| 401 483 | 
             
                    rescue NotImplementedError
         | 
| @@ -404,15 +486,14 @@ TEMPLATE_END | |
| 404 486 | 
             
                  end
         | 
| 405 487 | 
             
                  return dest
         | 
| 406 488 | 
             
                end
         | 
| 407 | 
            -
             | 
| 489 | 
            +
                
         | 
| 408 490 | 
             
                def Install.install_html(config)
         | 
| 409 491 | 
             
                  dest = File.join(config.directory,'site')
         | 
| 410 492 | 
             
                  mkdir_p(File.join(dest,'html'),{ :mode => 0775})
         | 
| 411 | 
            -
                  source = File.join(config.source_dir,'site' | 
| 412 | 
            -
                   | 
| 413 | 
            -
                  Dir["#{dest}/**/CVS"].each { |name| rm_r name }
         | 
| 493 | 
            +
                  source = File.join(config.source_dir,'site')
         | 
| 494 | 
            +
                  copy_if_not_exists source,dest
         | 
| 414 495 | 
             
                end
         | 
| 415 | 
            -
             | 
| 496 | 
            +
                
         | 
| 416 497 | 
             
                def Install.do_make_wiki(config)
         | 
| 417 498 | 
             
                  wikiname = config.default_wiki
         | 
| 418 499 | 
             
                  textdir = File.join('texts',wikiname)
         | 
| @@ -421,60 +502,69 @@ TEMPLATE_END | |
| 421 502 | 
             
                  if !File.exists?(frontpage) then
         | 
| 422 503 | 
             
                    touch frontpage
         | 
| 423 504 | 
             
                  end
         | 
| 424 | 
            -
             | 
| 505 | 
            +
                  
         | 
| 425 506 | 
             
                  templatedir = File.join('templates',wikiname)
         | 
| 426 507 | 
             
                  mkdir_p(templatedir,{ :mode => 0775})
         | 
| 427 508 | 
             
                  source = File.join(config.source_dir,'templates')
         | 
| 428 509 | 
             
                  dest = templatedir      
         | 
| 429 510 | 
             
                  copy_if_not_exists(source,dest)
         | 
| 430 | 
            -
             | 
| 511 | 
            +
                  
         | 
| 431 512 | 
             
                  source = File.join(config.source_dir,'wiki','.')
         | 
| 432 513 | 
             
                  wiki_html = File.join('site','html',wikiname)
         | 
| 433 514 | 
             
                  mkdir_p(wiki_html,{ :mode => 0775})
         | 
| 434 515 | 
             
                  copy_if_not_exists(source,wiki_html)
         | 
| 435 516 |  | 
| 436 517 | 
             
                  make_static_homepage(config)
         | 
| 437 | 
            -
             | 
| 518 | 
            +
                  
         | 
| 438 519 | 
             
                end
         | 
| 439 | 
            -
             | 
| 520 | 
            +
                
         | 
| 440 521 | 
             
                def Install.copy_if_not_exists(source,dest)
         | 
| 441 522 | 
             
                  Dir.glob(File.join(source,'*')).each do |sourcefile| 
         | 
| 442 523 | 
             
                    if FileTest.file?(sourcefile) then
         | 
| 443 524 | 
             
                      name = File.basename(sourcefile)
         | 
| 444 525 | 
             
                      destfile = File.join(dest,name)
         | 
| 445 | 
            -
                       | 
| 446 | 
            -
             | 
| 526 | 
            +
                      cp sourcefile,destfile unless File.exists?(destfile)
         | 
| 527 | 
            +
                    elsif FileTest.directory?(sourcefile) then
         | 
| 528 | 
            +
                      name = File.basename(sourcefile)
         | 
| 529 | 
            +
                      unless name == 'CVS' then
         | 
| 530 | 
            +
                        destdir = File.join(dest,name)
         | 
| 531 | 
            +
                        mkdir_p destdir unless File.exists?(destdir)
         | 
| 532 | 
            +
                        copy_if_not_exists sourcefile,destdir
         | 
| 447 533 | 
             
                      end
         | 
| 448 534 | 
             
                    end
         | 
| 449 535 | 
             
                  end
         | 
| 450 536 | 
             
                end
         | 
| 451 | 
            -
             | 
| 537 | 
            +
                
         | 
| 452 538 | 
             
                def Install.write_apache_config(config,contents)
         | 
| 453 539 | 
             
                  config_dir = File.join(config.directory,'config')
         | 
| 454 540 | 
             
                  mkdir_p(config_dir,{ :mode => 0775}) unless File.exists?(config_dir)
         | 
| 455 | 
            -
             | 
| 541 | 
            +
                  
         | 
| 456 542 | 
             
                  configfile = File.join(config_dir,'site.conf')
         | 
| 457 | 
            -
                  File. | 
| 458 | 
            -
                     | 
| 543 | 
            +
                  unless File.exists?(configfile) then
         | 
| 544 | 
            +
                    File.open(configfile,File::CREAT|File::TRUNC|File::RDWR,0664) do |f|
         | 
| 545 | 
            +
                      f.puts contents
         | 
| 546 | 
            +
                    end
         | 
| 459 547 | 
             
                  end
         | 
| 460 | 
            -
             | 
| 548 | 
            +
                  
         | 
| 461 549 | 
             
                  source = File.join(config.source_dir,'config')
         | 
| 462 550 | 
             
                  copy_if_not_exists(source,config_dir)
         | 
| 463 551 | 
             
                end
         | 
| 464 | 
            -
             | 
| 552 | 
            +
                
         | 
| 465 553 | 
             
                def Install.write_lighttpd_config(config,contents)
         | 
| 466 554 | 
             
                  config_dir = File.join(config.directory,'config')
         | 
| 467 555 | 
             
                  mkdir_p(config_dir,{ :mode => 0775}) unless File.exists?(config_dir)
         | 
| 468 | 
            -
             | 
| 556 | 
            +
                  
         | 
| 469 557 | 
             
                  configfile = File.join(config_dir,'lighttpd.conf')
         | 
| 470 | 
            -
                  File. | 
| 471 | 
            -
                     | 
| 558 | 
            +
                  unless File.exists?(configfile) then
         | 
| 559 | 
            +
                    File.open(configfile,File::CREAT|File::TRUNC|File::RDWR,0664) do |f|
         | 
| 560 | 
            +
                      f.puts contents
         | 
| 561 | 
            +
                    end
         | 
| 472 562 | 
             
                  end
         | 
| 473 | 
            -
             | 
| 563 | 
            +
                  
         | 
| 474 564 | 
             
                  source = File.join(config.source_dir,'config')
         | 
| 475 565 | 
             
                  copy_if_not_exists(source,config_dir)
         | 
| 476 566 | 
             
                end
         | 
| 477 | 
            -
             | 
| 567 | 
            +
                
         | 
| 478 568 | 
             
                def Install.make_public_apache_config(config)
         | 
| 479 569 | 
             
                  template = <<-END_TEMPLATE
         | 
| 480 570 | 
             
            <VirtualHost *#{config.dotted_port}>
         | 
| @@ -482,11 +572,10 @@ ServerName #{config.server} | |
| 482 572 | 
             
            DocumentRoot #{config.directory}/site
         | 
| 483 573 | 
             
            RedirectMatch ^/$ http://#{File.join(config.server_url,config.default_wiki,'FrontPage.html')}
         | 
| 484 574 | 
             
            RedirectMatch ^$ http://#{File.join(config.server_url,config.default_wiki,'FrontPage.html')}
         | 
| 485 | 
            -
            ScriptAlias /scripts/secure #{config.directory}/site/scripts/secure
         | 
| 486 575 | 
             
            ScriptAlias /scripts #{config.directory}/site/scripts
         | 
| 487 576 | 
             
            <Directory "#{config.directory}/site/scripts/secure">
         | 
| 488 577 | 
             
            AuthType Basic
         | 
| 489 | 
            -
            AuthName "#{config. | 
| 578 | 
            +
            AuthName "#{config.server} wiki site"
         | 
| 490 579 | 
             
            AuthUserFile #{config.directory}/config/passwords
         | 
| 491 580 | 
             
            require valid-user
         | 
| 492 581 | 
             
            Options ExecCGI FollowSymLinks
         | 
| @@ -495,7 +584,7 @@ Options ExecCGI FollowSymLinks | |
| 495 584 | 
             
            Options ExecCGI FollowSymLinks
         | 
| 496 585 | 
             
            </Directory>
         | 
| 497 586 | 
             
            ErrorLog #{config.directory}/logs/error.log
         | 
| 498 | 
            -
            CustomLog #{config.directory}/logs/access.log | 
| 587 | 
            +
            CustomLog #{config.directory}/logs/access.log combined
         | 
| 499 588 |  | 
| 500 589 | 
             
            </VirtualHost>
         | 
| 501 590 | 
             
            END_TEMPLATE
         | 
| @@ -503,12 +592,11 @@ END_TEMPLATE | |
| 503 592 | 
             
                  subsite_template = <<-END_TEMPLATE
         | 
| 504 593 | 
             
            RedirectMatch ^#{config.subsite}/$ http://#{File.join(config.server_url,config.subsite,config.default_wiki,'FrontPage.html')}
         | 
| 505 594 | 
             
            RedirectMatch ^#{config.subsite}$ http://#{File.join(config.server_url,config.subsite,config.default_wiki,'FrontPage.html')}
         | 
| 506 | 
            -
            ScriptAlias #{config.subsite}/scripts/secure #{config.directory}/site/scripts/secure
         | 
| 507 595 | 
             
            ScriptAlias #{config.subsite}/scripts #{config.directory}/site/scripts
         | 
| 508 596 | 
             
            Alias #{config.subsite} #{config.directory}/site
         | 
| 509 597 | 
             
            <Directory "#{config.directory}/site/scripts/secure">
         | 
| 510 598 | 
             
            AuthType Basic
         | 
| 511 | 
            -
            AuthName "#{config. | 
| 599 | 
            +
            AuthName "#{config.server} wiki site"
         | 
| 512 600 | 
             
            AuthUserFile #{config.directory}/config/passwords
         | 
| 513 601 | 
             
            require valid-user
         | 
| 514 602 | 
             
            Options ExecCGI FollowSymLinks
         | 
| @@ -517,10 +605,10 @@ Options ExecCGI FollowSymLinks | |
| 517 605 | 
             
            Options ExecCGI FollowSymLinks
         | 
| 518 606 | 
             
            </Directory>
         | 
| 519 607 | 
             
            END_TEMPLATE
         | 
| 520 | 
            -
             | 
| 608 | 
            +
             | 
| 521 609 | 
             
                  write_apache_config(config,(config.subsite.empty? ? template : subsite_template))
         | 
| 522 610 | 
             
                end
         | 
| 523 | 
            -
             | 
| 611 | 
            +
                
         | 
| 524 612 | 
             
                def Install.make_public_lighttpd_config( config)
         | 
| 525 613 | 
             
                  template = <<-END_OF_TEMPLATE
         | 
| 526 614 | 
             
            # Configuration generated by Wiki2Go
         | 
| @@ -589,11 +677,10 @@ ServerName #{config.server} | |
| 589 677 | 
             
            DocumentRoot #{config.directory}/site
         | 
| 590 678 | 
             
            RedirectMatch ^/$ http://#{File.join(config.server_url,config.default_wiki,'FrontPage.html')}
         | 
| 591 679 | 
             
            RedirectMatch ^$ http://#{File.join(config.server_url,config.default_wiki,'FrontPage.html')}
         | 
| 592 | 
            -
            ScriptAlias /scripts/secure #{config.directory}/site/scripts/secure
         | 
| 593 680 | 
             
            ScriptAlias /scripts #{config.directory}/site/scripts
         | 
| 594 681 | 
             
            <Directory "#{config.directory}/site/scripts/secure">
         | 
| 595 682 | 
             
            AuthType Basic
         | 
| 596 | 
            -
            AuthName "#{config. | 
| 683 | 
            +
            AuthName "#{config.server} wiki site"
         | 
| 597 684 | 
             
            AuthUserFile #{config.directory}/config/passwords
         | 
| 598 685 | 
             
            require valid-user
         | 
| 599 686 | 
             
            Options ExecCGI FollowSymLinks
         | 
| @@ -602,7 +689,7 @@ Options ExecCGI FollowSymLinks | |
| 602 689 | 
             
            Options ExecCGI FollowSymLinks
         | 
| 603 690 | 
             
            </Directory>
         | 
| 604 691 | 
             
            ErrorLog #{config.directory}/logs/error.log
         | 
| 605 | 
            -
            CustomLog #{config.directory}/logs/access.log | 
| 692 | 
            +
            CustomLog #{config.directory}/logs/access.log combined
         | 
| 606 693 |  | 
| 607 694 | 
             
            </VirtualHost>
         | 
| 608 695 | 
             
            END_TEMPLATE
         | 
| @@ -610,12 +697,11 @@ END_TEMPLATE | |
| 610 697 | 
             
                  subsite_template = <<-END_TEMPLATE
         | 
| 611 698 | 
             
            RedirectMatch ^#{config.subsite}/$ http://#{File.join(config.server_url,config.subsite,config.default_wiki,'FrontPage.html')}
         | 
| 612 699 | 
             
            RedirectMatch ^#{config.subsite}$ http://#{File.join(config.server_url,config.subsite,config.default_wiki,'FrontPage.html')}
         | 
| 613 | 
            -
            ScriptAlias #{config.subsite}/scripts/secure #{config.directory}/site/scripts/secure
         | 
| 614 700 | 
             
            ScriptAlias #{config.subsite}/scripts #{config.directory}/site/scripts
         | 
| 615 701 | 
             
            Alias #{config.subsite} #{config.directory}/site
         | 
| 616 702 | 
             
            <Directory "#{config.directory}/site/scripts/secure">
         | 
| 617 703 | 
             
            AuthType Basic
         | 
| 618 | 
            -
            AuthName "#{config. | 
| 704 | 
            +
            AuthName "#{config.server} wiki site"
         | 
| 619 705 | 
             
            AuthUserFile #{config.directory}/config/passwords
         | 
| 620 706 | 
             
            require valid-user
         | 
| 621 707 | 
             
            Options ExecCGI FollowSymLinks
         | 
| @@ -624,10 +710,10 @@ Options ExecCGI FollowSymLinks | |
| 624 710 | 
             
            Options ExecCGI FollowSymLinks
         | 
| 625 711 | 
             
            </Directory>
         | 
| 626 712 | 
             
            END_TEMPLATE
         | 
| 627 | 
            -
             | 
| 713 | 
            +
             | 
| 628 714 | 
             
                  write_apache_config(config,(config.subsite.empty? ? template : subsite_template))
         | 
| 629 715 | 
             
                end
         | 
| 630 | 
            -
             | 
| 716 | 
            +
                
         | 
| 631 717 | 
             
                def Install.make_readwrite_lighttpd_config( config)
         | 
| 632 718 | 
             
                  template = <<-END_OF_TEMPLATE
         | 
| 633 719 | 
             
            # Configuration generated by Wiki2Go
         | 
| @@ -699,7 +785,7 @@ RedirectMatch ^$ http://#{File.join(config.server_url,config.default_wiki,'Front | |
| 699 785 | 
             
            ScriptAlias /scripts #{config.directory}/site/scripts
         | 
| 700 786 | 
             
            <Directory "#{config.directory}/site/">
         | 
| 701 787 | 
             
            AuthType Basic
         | 
| 702 | 
            -
            AuthName "#{config. | 
| 788 | 
            +
            AuthName "#{config.server} wiki site"
         | 
| 703 789 | 
             
            AuthUserFile #{config.directory}/config/passwords
         | 
| 704 790 | 
             
            require valid-user
         | 
| 705 791 | 
             
            Options ExecCGI FollowSymLinks
         | 
| @@ -708,19 +794,19 @@ Options ExecCGI FollowSymLinks | |
| 708 794 | 
             
            Options ExecCGI FollowSymLinks
         | 
| 709 795 | 
             
            </Directory>
         | 
| 710 796 | 
             
            ErrorLog #{config.directory}/logs/error.log
         | 
| 711 | 
            -
            CustomLog #{config.directory}/logs/access.log | 
| 797 | 
            +
            CustomLog #{config.directory}/logs/access.log combined
         | 
| 712 798 |  | 
| 713 799 | 
             
            </VirtualHost>
         | 
| 714 800 | 
             
            END_TEMPLATE
         | 
| 715 801 |  | 
| 716 | 
            -
             | 
| 802 | 
            +
                  subsite_template = <<-END_TEMPLATE
         | 
| 717 803 | 
             
            RedirectMatch ^#{config.subsite}/$ http://#{File.join(config.server_url,config.subsite,config.default_wiki,'FrontPage.html')}
         | 
| 718 804 | 
             
            RedirectMatch ^#{config.subsite}$ http://#{File.join(config.server_url,config.subsite,config.default_wiki,'FrontPage.html')}
         | 
| 719 805 | 
             
            ScriptAlias #{config.subsite}/scripts #{config.directory}/site/scripts
         | 
| 720 806 | 
             
            Alias #{config.subsite} #{config.directory}/site
         | 
| 721 807 | 
             
            <Directory "#{config.directory}/site/">
         | 
| 722 808 | 
             
            AuthType Basic
         | 
| 723 | 
            -
            AuthName "#{config. | 
| 809 | 
            +
            AuthName "#{config.server} wiki site"
         | 
| 724 810 | 
             
            AuthUserFile #{config.directory}/config/passwords
         | 
| 725 811 | 
             
            require valid-user
         | 
| 726 812 | 
             
            Options ExecCGI FollowSymLinks
         | 
| @@ -730,10 +816,10 @@ Options ExecCGI FollowSymLinks | |
| 730 816 | 
             
            </Directory>
         | 
| 731 817 |  | 
| 732 818 | 
             
            END_TEMPLATE
         | 
| 733 | 
            -
             | 
| 819 | 
            +
             | 
| 734 820 | 
             
                  write_apache_config(config,(config.subsite.empty? ? template : subsite_template))
         | 
| 735 821 | 
             
                end
         | 
| 736 | 
            -
             | 
| 822 | 
            +
                
         | 
| 737 823 | 
             
                def Install.make_private_lighttpd_config( config)
         | 
| 738 824 | 
             
                  template = <<-END_OF_TEMPLATE
         | 
| 739 825 | 
             
            # Configuration generated by Wiki2Go
         | 
| @@ -812,7 +898,7 @@ END_OF_TEMPLATE | |
| 812 898 | 
             
                    wiki.generate_html(web)
         | 
| 813 899 | 
             
                  end
         | 
| 814 900 | 
             
                end
         | 
| 815 | 
            -
             | 
| 901 | 
            +
                
         | 
| 816 902 | 
             
                private
         | 
| 817 903 |  | 
| 818 904 | 
             
                def Install.ensure_path_exists(path)
         |