Wiki2Go 1.14.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.
Files changed (67) hide show
  1. data/bin/Wiki2GoServer.rb +11 -0
  2. data/bin/Wiki2Go_make_site.rb +10 -0
  3. data/bin/Wiki2Go_make_wiki.rb +10 -0
  4. data/bin/Wiki2Go_update_site.rb +10 -0
  5. data/lib/Web2Go/CGIRequest.rb +99 -0
  6. data/lib/Web2Go/CGIResponse.rb +64 -0
  7. data/lib/Web2Go/ERB_Interpreter.rb +47 -0
  8. data/lib/Web2Go/MockCookie.rb +17 -0
  9. data/lib/Web2Go/MockRequest.rb +131 -0
  10. data/lib/Web2Go/MockResponse.rb +35 -0
  11. data/lib/Web2Go/Web2Go.rb +0 -0
  12. data/lib/Web2Go/WebrickRequest.rb +124 -0
  13. data/lib/Web2Go/WebrickResponse.rb +50 -0
  14. data/lib/Wiki2Go.rb +2 -0
  15. data/lib/Wiki2Go/BlackList.rb +52 -0
  16. data/lib/Wiki2Go/DotGraphics.rb +69 -0
  17. data/lib/Wiki2Go/FileStorage.rb +267 -0
  18. data/lib/Wiki2Go/GreyList.rb +88 -0
  19. data/lib/Wiki2Go/Install/config/chonqed_blacklist.txt +4743 -0
  20. data/lib/Wiki2Go/Install/config/passwords +1 -0
  21. data/lib/Wiki2Go/Install/make_site.rb +515 -0
  22. data/lib/Wiki2Go/Install/site/error.html +77 -0
  23. data/lib/Wiki2Go/Install/site/html/admin.css +135 -0
  24. data/lib/Wiki2Go/Install/site/html/xml.gif +0 -0
  25. data/lib/Wiki2Go/Install/site/robots.txt +13 -0
  26. data/lib/Wiki2Go/Install/site/style.css +135 -0
  27. data/lib/Wiki2Go/Install/templates/admin.htm +48 -0
  28. data/lib/Wiki2Go/Install/templates/admin_pages/admin.txt +1 -0
  29. data/lib/Wiki2Go/Install/templates/admin_pages/greylist.txt +72 -0
  30. data/lib/Wiki2Go/Install/templates/admin_pages/passwords.txt +67 -0
  31. data/lib/Wiki2Go/Install/templates/admin_pages/regenerate.txt +26 -0
  32. data/lib/Wiki2Go/Install/templates/admin_pages/removespam.txt +19 -0
  33. data/lib/Wiki2Go/Install/templates/admin_pages/update.txt +13 -0
  34. data/lib/Wiki2Go/Install/templates/edit.htm +74 -0
  35. data/lib/Wiki2Go/Install/templates/pagelist.htm +82 -0
  36. data/lib/Wiki2Go/Install/templates/rss.xml +11 -0
  37. data/lib/Wiki2Go/Install/templates/versionlist.htm +84 -0
  38. data/lib/Wiki2Go/Install/templates/view.htm +72 -0
  39. data/lib/Wiki2Go/Install/wiki/style.css +135 -0
  40. data/lib/Wiki2Go/Page.rb +69 -0
  41. data/lib/Wiki2Go/PrivateWikiConfig.rb +27 -0
  42. data/lib/Wiki2Go/PublicWikiConfig.rb +52 -0
  43. data/lib/Wiki2Go/ReadWriteWikiConfig.rb +23 -0
  44. data/lib/Wiki2Go/Server.rb +94 -0
  45. data/lib/Wiki2Go/SpamFilter.rb +95 -0
  46. data/lib/Wiki2Go/UrlFinder.rb +26 -0
  47. data/lib/Wiki2Go/Web.rb +185 -0
  48. data/lib/Wiki2Go/WebrickServlet.rb +211 -0
  49. data/lib/Wiki2Go/WhiteList.rb +29 -0
  50. data/lib/Wiki2Go/Wiki2Go.rb +274 -0
  51. data/lib/Wiki2Go/Wiki2GoConfig.rb +144 -0
  52. data/lib/Wiki2Go/Wiki2GoServlet.rb +197 -0
  53. data/lib/Wiki2Go/WikiFormatter.rb +597 -0
  54. data/lib/Wiki2Go/WikiLogFile.rb +43 -0
  55. data/lib/Wiki2Go/cgi/changes.rb +20 -0
  56. data/lib/Wiki2Go/cgi/display.rb +20 -0
  57. data/lib/Wiki2Go/cgi/edit.rb +20 -0
  58. data/lib/Wiki2Go/cgi/redirect.rb +20 -0
  59. data/lib/Wiki2Go/cgi/save.rb +20 -0
  60. data/lib/Wiki2Go/cgi/search.rb +20 -0
  61. data/lib/Wiki2Go/cgi/secure/admin.rb +20 -0
  62. data/lib/Wiki2Go/cgi/secure/generate_static.rb +20 -0
  63. data/lib/Wiki2Go/cgi/secure/removespam.rb +20 -0
  64. data/lib/Wiki2Go/cgi/upload.rb +20 -0
  65. data/lib/Wiki2Go/cgi/versions.rb +20 -0
  66. data/lib/Wiki2Go/cgi/view.rb +20 -0
  67. metadata +113 -0
@@ -0,0 +1,11 @@
1
+ #!/usr/local/bin/ruby
2
+
3
+ require 'rubygems'
4
+ require_gem "Wiki2Go"
5
+ require "Wiki2Go/Server"
6
+
7
+ if $0 =~ /Wiki2GoServer\.rb/
8
+ server = Wiki2Go::Server.new(ARGV)
9
+ thread = server.start
10
+ thread.join
11
+ end
@@ -0,0 +1,10 @@
1
+ #!/usr/local/bin/ruby
2
+
3
+ require 'rubygems'
4
+ require_gem "Wiki2Go"
5
+
6
+ require 'fileutils'
7
+ require 'Wiki2Go/Install/make_site'
8
+
9
+ Wiki2Go::Install::make_site(ARGV)
10
+
@@ -0,0 +1,10 @@
1
+ #!/usr/local/bin/ruby
2
+
3
+ require 'rubygems'
4
+ require_gem "Wiki2Go"
5
+
6
+ require 'fileutils'
7
+ require 'Wiki2Go/Install/make_site'
8
+
9
+ Wiki2Go::Install::make_wiki(ARGV)
10
+
@@ -0,0 +1,10 @@
1
+ #!/usr/local/bin/ruby
2
+
3
+ require 'rubygems'
4
+ require_gem "Wiki2Go"
5
+
6
+ require 'fileutils'
7
+ require 'Wiki2Go/Install/make_site'
8
+
9
+ Wiki2Go::Install::update_site(ARGV)
10
+
@@ -0,0 +1,99 @@
1
+ require 'cgi'
2
+
3
+ module Web2Go
4
+
5
+ class CGIFile
6
+
7
+ attr_reader :content
8
+ attr_reader :filename
9
+
10
+ def initialize(file)
11
+ @file = file
12
+ @content = file.read
13
+ @filename = file.original_filename
14
+ end
15
+
16
+ end
17
+
18
+ class CGIRequest
19
+
20
+ attr_reader :server_variable
21
+ attr_reader :params
22
+
23
+ def initialize(cgi)
24
+ @cgi = cgi
25
+ @server_variable = ENV
26
+ @params = @cgi.params
27
+ end
28
+
29
+ def path
30
+ @server_variable['PATH_INFO']
31
+ end
32
+
33
+ def host
34
+ @server_variable['SERVER_NAME']
35
+ end
36
+
37
+ def port
38
+ @server_variable['SERVER_PORT']
39
+ end
40
+
41
+ def user
42
+ @user ||= find_user
43
+ @user
44
+ end
45
+
46
+ def authenticated
47
+ @server_variable.has_key?("AUTH_TYPE")
48
+ end
49
+
50
+ def parameter(name,default_value=nil)
51
+ value = @params[name]
52
+ if value.nil? || value.length < 1 then
53
+ return default_value
54
+ else
55
+ return value[0]
56
+ end
57
+ end
58
+
59
+ def uploaded_file(name,pos=0)
60
+ file = @params[name]
61
+ if !file.nil? then
62
+ return CGIFile.new(file[pos])
63
+ end
64
+ nil
65
+ end
66
+
67
+ def cookie(name)
68
+ if @cgi.cookies.has_key?(name) then
69
+ return @cgi.cookies[name]
70
+ else
71
+ return nil
72
+ end
73
+ end
74
+
75
+ def cookies
76
+ @cgi.cookies
77
+ end
78
+
79
+ private
80
+
81
+ def find_user
82
+ user = @server_variable['REMOTE_USER']
83
+ if user.nil? or user.empty? then
84
+ user = @server_variable['REMOTE_ADDR']
85
+ begin
86
+ addr = Resolv.getname(user)
87
+ if !addr.nil? and !addr.empty? then
88
+ user = addr
89
+ end
90
+ rescue
91
+ end
92
+ end
93
+ user
94
+ end
95
+
96
+
97
+ end
98
+ end
99
+
@@ -0,0 +1,64 @@
1
+ require 'cgi'
2
+
3
+ module Web2Go
4
+
5
+ class CGIResponse
6
+
7
+ attr_accessor :content_type
8
+
9
+ def initialize(cgi)
10
+ @cgi = cgi
11
+ @content_type = 'text/html'
12
+ @redirect = nil
13
+ end
14
+
15
+ def redirect_to=(redirect_url)
16
+ @redirect = redirect_url
17
+ end
18
+
19
+ def body=(content)
20
+ options = Hash.new
21
+ options['type'] = @content_type
22
+
23
+ if @cgi.cookies.length > 0 then
24
+ options['cookie'] = @cgi.cookies
25
+ end
26
+ if !@redirect.nil? then
27
+ options['Status'] = '302 Moved'
28
+ options[ 'location'] = @redirect
29
+ end
30
+
31
+
32
+ @cgi.out(options) do
33
+ content
34
+ end
35
+
36
+ end
37
+
38
+ def set_cookie(cookie)
39
+ @cgi.cookies[cookie.name] = cookie
40
+ end
41
+
42
+ def cookies
43
+ @cgi.cookies
44
+ end
45
+
46
+ def add_cookie(name,value,domain=nil,path=nil,expires=nil)
47
+ cookie = CGI::Cookie.new(name,value)
48
+ cookie.expires = expires unless expires.nil?
49
+ cookie.domain = domain unless domain.nil?
50
+ cookie.path = path unless path.nil?
51
+ set_cookie(cookie)
52
+ end
53
+
54
+ def add_cookies(cookies)
55
+ # cookies.each do |cookie|
56
+ # set_cookie(cookie)
57
+ # end
58
+ end
59
+
60
+
61
+ end
62
+ end
63
+
64
+
@@ -0,0 +1,47 @@
1
+
2
+ require 'erb'
3
+ require 'ostruct'
4
+
5
+ module Web2Go
6
+
7
+ # ERB_Interpreter manages the execution of ERB scripts
8
+ # See eRuby and ERB class in stdlib
9
+ class ERB_Interpreter
10
+
11
+ def initialize
12
+ @evaluation_context = OpenStruct.new
13
+ end
14
+
15
+ # Add a named field to the evaluation context
16
+ # Can be accessed from within script as erb.name
17
+ def add_parameter(name,value)
18
+ @evaluation_context.send(name+'=',value)
19
+ end
20
+
21
+ # add a member variable to the evaluation context
22
+ # Can be accessed from within script as @name
23
+ def add_field(name,value)
24
+ instance_variable_set(name,value)
25
+ end
26
+
27
+
28
+ # Execute an ERB script and return the resulting string
29
+ def execute(script,params=nil)
30
+
31
+ parser = ERB.new(script)
32
+
33
+ if !params.nil? then
34
+ params.each { |key,value| add_parameter(key,value) }
35
+ end
36
+
37
+ erb = @evaluation_context
38
+ # for compatibility with previous usage of ERB in Wiki2Go
39
+ current = @evaluation_context
40
+
41
+ parser.result(binding)
42
+
43
+ end
44
+
45
+ end
46
+
47
+ end
@@ -0,0 +1,17 @@
1
+ module Web2Go
2
+
3
+
4
+ class MockCookie
5
+ attr_reader :name
6
+ attr_reader :value
7
+ attr_reader :domain
8
+ attr_reader :expires
9
+
10
+ def initialize(name,value,domain,expires)
11
+ @name = name
12
+ @value = value
13
+ @domain = domain
14
+ @expires = expires
15
+ end
16
+ end
17
+ end
@@ -0,0 +1,131 @@
1
+
2
+ require 'uri'
3
+ require 'cgi'
4
+
5
+ require 'Web2Go/MockCookie'
6
+
7
+ module Web2Go
8
+
9
+ class MockFile
10
+ attr_reader :filename
11
+ attr_reader :content
12
+
13
+ def initialize(filename,content=nil)
14
+ @filename = filename
15
+ if content.nil? then
16
+ File.open(filename,"r") do |f|
17
+ content = f.read
18
+ end
19
+ end
20
+ @content = content
21
+ end
22
+ end
23
+
24
+ class MockRequest
25
+
26
+ #Request interface
27
+ attr_reader :server_variable
28
+ attr_reader :params
29
+ attr_accessor :user
30
+ attr_accessor :authenticated
31
+ attr_accessor :cookies
32
+
33
+ def initialize(url = 'http://localhost/',env=ENV)
34
+ @server_variable = get_server_variables(url)
35
+ @server_variable.update( env)
36
+
37
+ @params = CGI::parse(server_variable['QUERY_STRING'])
38
+ @user = env['REMOTE_USER'] || env['USER'] || env['USERNAME']
39
+ @authenticated = env.has_key?('AUTH_TYPE')
40
+ @uploaded_files = {}
41
+ @cookies = {}
42
+ end
43
+
44
+ def path
45
+ @server_variable['PATH_INFO']
46
+ end
47
+
48
+ def host
49
+ @server_variable['SERVER_NAME']
50
+ end
51
+
52
+ def port
53
+ @server_variable['SERVER_PORT']
54
+ end
55
+
56
+ def parameter(name,default_value=nil)
57
+ value = @params[name]
58
+ if value.nil? then
59
+ return default_value
60
+ else
61
+ return value[0]
62
+ end
63
+ end
64
+
65
+ def uploaded_file(name,pos=0)
66
+ file = @uploaded_files[name]
67
+ if !file.nil? then
68
+ return file[pos]
69
+ end
70
+ nil
71
+ end
72
+
73
+ def cookie(name)
74
+ return @cookies[name]
75
+ end
76
+
77
+ #Mock manipulation
78
+ def add_parameter(name,value)
79
+ if @params.has_key?(name) then
80
+ @params[name].push(value)
81
+ else
82
+ @params[name] = [ value ]
83
+ end
84
+ end
85
+
86
+ def upload_file(name,filename,content=nil)
87
+ file = MockFile.new(filename,content)
88
+ if @uploaded_files.has_key?(name) then
89
+ @uploaded_files[name].push(file)
90
+ else
91
+ @uploaded_files[name] = [ file ]
92
+ end
93
+ end
94
+
95
+ def add_cookie(name,value,domain=nil,expires=nil)
96
+ @cookies[name] = MockCookie.new(name,value,domain,expires)
97
+ end
98
+
99
+ private
100
+
101
+ def get_server_variables(url)
102
+ vars = Hash.new
103
+ uri = URI::parse(url)
104
+ vars['SERVER_NAME'] = uri.host
105
+ vars['SERVER_PORT'] = uri.port
106
+ vars['SCRIPT_NAME'], vars['PATH_INFO'] = split_script_and_path(clean(uri.path))
107
+ vars['QUERY_STRING'] = uri.query || ''
108
+ vars
109
+ end
110
+
111
+ def split_script_and_path(path)
112
+ if path =~ /\// then
113
+ path =~ /^([^\/]+)\/(.*)$/
114
+ return $1,$2
115
+ else
116
+ return path,""
117
+ end
118
+
119
+ end
120
+
121
+ def clean(path)
122
+ if path.nil? then
123
+ return ""
124
+ else
125
+ return path.squeeze('/').gsub(/^\//,'').gsub(/\/$/,'')
126
+ end
127
+ end
128
+
129
+ end
130
+
131
+ end
@@ -0,0 +1,35 @@
1
+
2
+ require 'uri'
3
+ require 'cgi'
4
+
5
+ module Web2Go
6
+
7
+ class MockResponse
8
+
9
+ attr_accessor :body
10
+ attr_accessor :content_type
11
+ attr_accessor :redirect_to
12
+ attr_accessor :cookies
13
+
14
+ def initialize
15
+ @content_type = 'text/html'
16
+ @cookies = { }
17
+ end
18
+
19
+ def set_cookie(cookie)
20
+ @cookies[cookie.name] = cookie
21
+ end
22
+
23
+ def add_cookie(name,value,domain=nil,expires=nil)
24
+ @cookies[name] = MockCookie.new(name,value,domain,expires)
25
+ end
26
+
27
+ def add_cookies(cookies)
28
+ cookies.each do |cookie|
29
+ set_cookie(cookie)
30
+ end
31
+ end
32
+
33
+ end
34
+
35
+ end