webroar 0.3.1 → 0.4.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/CHANGELOG +48 -1
- data/README +11 -14
- data/Rakefile +1 -1
- data/conf/mime_type.yml +172 -166
- data/conf/server_internal_config.yml +30 -8
- data/doc/user-guide.html +294 -153
- data/doc/user-guide.txt +9 -13
- data/lib/command_runner.rb +1 -0
- data/lib/dependencies.rb +18 -15
- data/lib/installer.rb +115 -50
- data/src/admin_panel/app/controllers/admin_controller.rb +1 -15
- data/src/admin_panel/app/controllers/application_controller.rb +2 -2
- data/src/admin_panel/app/controllers/application_specification_controller.rb +2 -1
- data/src/admin_panel/app/controllers/headers_controller.rb +73 -0
- data/src/admin_panel/app/controllers/mail_specification_controller.rb +10 -0
- data/src/admin_panel/app/controllers/server_specification_controller.rb +14 -0
- data/src/admin_panel/app/helpers/admin_helper.rb +0 -85
- data/src/admin_panel/app/models/app.rb +1 -1
- data/src/admin_panel/app/models/application_specification.rb +33 -25
- data/src/admin_panel/app/models/headers.rb +116 -0
- data/src/admin_panel/app/models/mail_specification.rb +20 -5
- data/src/admin_panel/app/models/server_specification.rb +2 -7
- data/src/admin_panel/app/views/admin/configuration.html.erb +10 -5
- data/src/admin_panel/app/views/exceptions/_exception_list_partial.html.erb +4 -4
- data/src/admin_panel/app/views/graph/_graph_page.html.erb +3 -0
- data/src/admin_panel/app/views/headers/_add_expires_text_box.html.erb +35 -0
- data/src/admin_panel/app/views/headers/_expires_by_type_form.html.erb +65 -0
- data/src/admin_panel/app/views/headers/_headers_table.html.erb +113 -0
- data/src/admin_panel/app/views/mail_specification/_current_spec.html.erb +168 -0
- data/src/admin_panel/app/views/{admin → server_specification}/_add_div.html.erb +1 -1
- data/src/admin_panel/config/initializers/application_constants.rb +6 -0
- data/src/admin_panel/lib/control.rb +6 -3
- data/src/admin_panel/lib/scgi.rb +74 -21
- data/src/admin_panel/lib/yaml_writer.rb +51 -17
- data/src/admin_panel/public/javascripts/application.js +20 -1
- data/src/head/wr_access_log.c +2 -2
- data/src/head/wr_application.c +294 -236
- data/src/head/wr_application.h +8 -8
- data/src/head/wr_configurator.c +451 -517
- data/src/head/wr_configurator.h +10 -115
- data/src/head/wr_connection.c +26 -25
- data/src/head/wr_connection.h +2 -3
- data/src/head/wr_controller.c +110 -93
- data/src/head/wr_controller.h +6 -6
- data/src/head/wr_main.c +31 -24
- data/src/head/wr_request.c +70 -93
- data/src/head/wr_request.h +0 -4
- data/src/head/wr_resolver.c +21 -15
- data/src/head/wr_resolver.h +2 -2
- data/src/head/wr_server.c +36 -26
- data/src/head/wr_server.h +5 -5
- data/src/head/wr_worker.c +551 -512
- data/src/head/wr_worker.h +33 -20
- data/src/helper/wr_config.c +316 -0
- data/src/helper/wr_config.h +235 -0
- data/src/helper/wr_helper.h +1 -5
- data/src/helper/wr_logger.c +4 -4
- data/src/helper/wr_scgi.c +3 -4
- data/src/helper/wr_scgi.h +2 -0
- data/src/helper/wr_string.h +2 -2
- data/src/helper/wr_util.c +3 -1
- data/src/helper/wr_util.h +0 -0
- data/src/helper/wr_yaml_parser.c +30 -0
- data/src/helper/wr_yaml_parser.h +1 -0
- data/src/ruby_lib/exception_tracker/instrumentation/action_controller.rb +2 -1
- data/src/ruby_lib/mailer/smtpmail.rb +7 -4
- data/src/ruby_lib/profiler/instrumentation/action_controller.rb +2 -1
- data/src/ruby_lib/profiler/instrumentation/active_record.rb +3 -0
- data/src/ruby_lib/rack/adapter/rails.rb +14 -7
- data/src/ruby_lib/ruby_interface/client.rb +1 -1
- data/src/ruby_lib/ruby_interface/version.rb +2 -2
- data/src/ruby_lib/webroar_app_loader.rb +4 -2
- data/src/worker/wkr_controller.c +200 -140
- data/src/worker/wkr_http.c +14 -28
- data/src/worker/wkr_http.h +4 -4
- data/src/worker/wkr_http_request.c +12 -11
- data/src/worker/wkr_http_request.h +7 -8
- data/src/worker/wkr_http_response.c +10 -14
- data/src/worker/wkr_http_response.h +0 -1
- data/src/worker/wkr_main.c +74 -140
- data/src/worker/wkr_static.c +295 -108
- data/src/worker/wkr_static.h +20 -7
- data/src/worker/worker.c +245 -70
- data/src/worker/worker.h +46 -34
- data/tasks/compile.rake +128 -175
- data/tasks/test.rake +345 -469
- data/test/spec/webroar_command_spec.rb +23 -0
- metadata +173 -43
- data/src/admin_panel/vendor/plugins/action_mailer_optional_tls/README +0 -34
- data/src/admin_panel/vendor/plugins/action_mailer_optional_tls/Rakefile +0 -13
- data/src/admin_panel/vendor/plugins/action_mailer_optional_tls/init.rb +0 -5
- data/src/admin_panel/vendor/plugins/action_mailer_optional_tls/lib/action_mailer_tls.rb +0 -16
- data/src/admin_panel/vendor/plugins/action_mailer_optional_tls/lib/smtp_tls.rb +0 -123
- data/src/admin_panel/vendor/plugins/action_mailer_optional_tls/test/tls_test.rb +0 -42
- data/src/head/wr_config.h +0 -165
- data/src/ruby_lib/mailer/action_mailer_tls.rb +0 -16
- data/src/ruby_lib/mailer/smtp_tls.rb +0 -123
data/doc/user-guide.txt
CHANGED
|
@@ -24,13 +24,15 @@ Ruby on Rails applications.
|
|
|
24
24
|
* Provides run time performance data for the deployed applications.
|
|
25
25
|
* Generates notifications in case any exceptions occur in any of the deployed
|
|
26
26
|
applications.
|
|
27
|
+
* Zero Downtime Application Upgrades.
|
|
28
|
+
* Static assets encoding.
|
|
27
29
|
* SSL support.
|
|
28
30
|
|
|
29
31
|
== Supported Operating Systems ==
|
|
30
32
|
|
|
31
|
-
WebROaR has been tested on Ubuntu 8.10/9.04/9.10, Debian 5 (64 Bit),
|
|
32
|
-
(v10.5 & v10.6), Arch Linux 2009.08 and Cent OS 5.2. Basically, it
|
|
33
|
-
able to run on any *IX OS.
|
|
33
|
+
WebROaR has been tested on Ubuntu 8.10/9.04/9.10/10.04, Debian 5 (64 Bit),
|
|
34
|
+
Mac OS X (v10.5 & v10.6), Arch Linux 2009.08 and Cent OS 5.2. Basically, it
|
|
35
|
+
should be able to run on any *IX OS.
|
|
34
36
|
|
|
35
37
|
Currently it does not support Microsoft(R) Windows.
|
|
36
38
|
|
|
@@ -51,16 +53,6 @@ Currently it does not support Microsoft(R) Windows.
|
|
|
51
53
|
- gnutls 2.4.1 or later (Only necessary in case SSL support is required)
|
|
52
54
|
- gnutls-dev 2.4.1 or later (Only necessary in case SSL support is required)
|
|
53
55
|
|
|
54
|
-
[NOTE]
|
|
55
|
-
.Ruby Shared Library
|
|
56
|
-
===============================
|
|
57
|
-
The server needs the shared library - libruby.so to run the ruby web
|
|
58
|
-
applications.
|
|
59
|
-
|
|
60
|
-
If you are building ruby from source, please ensure you pass the flag
|
|
61
|
-
*--enable-shared* while executing its ./configure script.
|
|
62
|
-
|
|
63
|
-
===============================
|
|
64
56
|
|
|
65
57
|
=== Procedure ===
|
|
66
58
|
|
|
@@ -244,6 +236,10 @@ directory. This can be used to troubleshoot the issues, if any.
|
|
|
244
236
|
in */var/log/webroar*. In the unfortunate event of the server crashing, a core
|
|
245
237
|
dump file would be created in /tmp if 'gcore' is available on that machine.
|
|
246
238
|
|
|
239
|
+
=== Know Issue ===
|
|
240
|
+
|
|
241
|
+
* WebROaR with SSL build crashes on Ubuntu 10.04 upon execution of
|
|
242
|
+
*gnutls_handshake* by secure connection.
|
|
247
243
|
|
|
248
244
|
=== Setting up database for server admin panel ===
|
|
249
245
|
|
data/lib/command_runner.rb
CHANGED
|
@@ -283,6 +283,7 @@ class CommandRunner
|
|
|
283
283
|
|
|
284
284
|
opts.on( '-D', '--path DIR', 'Path for the web application root directory') do |value|
|
|
285
285
|
@options[:path] = value.lstrip.gsub(/^=/,"")
|
|
286
|
+
@options[:path] = File.expand_path(@options[:path])
|
|
286
287
|
end
|
|
287
288
|
|
|
288
289
|
opts.on( '-T', '--type APPTYPE', 'Type of the application either rack or rails') do |value|
|
data/lib/dependencies.rb
CHANGED
|
@@ -34,10 +34,10 @@ module Webroar
|
|
|
34
34
|
@options = options
|
|
35
35
|
case (@name)
|
|
36
36
|
when File.basename(Config::CONFIG['CC']), "make", Config::CONFIG['RUBY_INSTALL_NAME'], "starling"; flag = find_command
|
|
37
|
-
when "libsqlite3.so"; flag =
|
|
38
|
-
when "sqlite3.h", "gnutls/gnutls.h"; flag = find_header_file
|
|
37
|
+
when "libsqlite3.so"; flag = find_lib
|
|
38
|
+
when "sqlite3.h", "gnutls/gnutls.h", "zlib.h", "regex.h"; flag = find_header_file
|
|
39
39
|
when "ruby_headers"; flag = find_header_file("ruby.h")
|
|
40
|
-
when Config::CONFIG['
|
|
40
|
+
when Config::CONFIG['LIBRUBY']; flag = find_ruby_lib
|
|
41
41
|
when "rubygems"; flag = find_gem
|
|
42
42
|
when "openssl-ruby"; flag = find_gem("openssl")
|
|
43
43
|
when "zlib-ruby"; flag = find_gem("zlib")
|
|
@@ -49,15 +49,15 @@ module Webroar
|
|
|
49
49
|
|
|
50
50
|
private
|
|
51
51
|
|
|
52
|
-
def
|
|
53
|
-
if File.exist?(File.join(Config::CONFIG['libdir'],Config::CONFIG['
|
|
52
|
+
def find_ruby_lib
|
|
53
|
+
if File.exist?(File.join(Config::CONFIG['libdir'],Config::CONFIG['LIBRUBY']))
|
|
54
54
|
flag = "\e[32mfound\e[0m at #{Config::CONFIG['libdir']}."
|
|
55
55
|
elsif Config::CONFIG['ENABLE_SHARED'] == 'yes'
|
|
56
56
|
flag = "\e[32mfound\e[0m."
|
|
57
57
|
else
|
|
58
|
-
flag =
|
|
58
|
+
flag = find_lib(Config::CONFIG['LIBRUBY'])
|
|
59
59
|
# else
|
|
60
|
-
# flag="\e[31mnot found\e[0m.\nUnable to find #{Config::CONFIG['
|
|
60
|
+
# flag="\e[31mnot found\e[0m.\nUnable to find #{Config::CONFIG['LIBRUBY']} at #{Config::CONFIG['libdir']}."
|
|
61
61
|
end
|
|
62
62
|
return flag
|
|
63
63
|
end
|
|
@@ -84,11 +84,11 @@ module Webroar
|
|
|
84
84
|
check_file(arr, name)
|
|
85
85
|
end
|
|
86
86
|
|
|
87
|
-
def
|
|
88
|
-
arr = []
|
|
89
|
-
arr
|
|
90
|
-
arr
|
|
91
|
-
arr
|
|
87
|
+
def find_lib(name = @name)
|
|
88
|
+
arr = ["/usr/lib"]
|
|
89
|
+
arr << ENV['LD_LIBRARY_PATH'].split(File::PATH_SEPARATOR) if ENV['LD_LIBRARY_PATH']
|
|
90
|
+
arr << Config::CONFIG['libdir'] if Config::CONFIG['libdir']
|
|
91
|
+
arr << @options[:library_paths].gsub(' -L','').gsub("''",":").gsub("'",'').split(File::PATH_SEPARATOR) if @options[:library_paths]
|
|
92
92
|
arr.delete("")
|
|
93
93
|
|
|
94
94
|
check_file(arr, name)
|
|
@@ -100,7 +100,8 @@ module Webroar
|
|
|
100
100
|
begin
|
|
101
101
|
require 'rbconfig'
|
|
102
102
|
require 'mkmf'
|
|
103
|
-
arr += [Config::CONFIG['archdir'], Config::CONFIG['sitearchdir']]
|
|
103
|
+
arr += [Config::CONFIG['includedir'], Config::CONFIG['archdir'], Config::CONFIG['sitearchdir']]
|
|
104
|
+
arr << Config::CONFIG['rubyhdrdir'] if Config::CONFIG['rubyhdrdir']
|
|
104
105
|
end
|
|
105
106
|
|
|
106
107
|
arr += ["/usr/include"]
|
|
@@ -125,7 +126,7 @@ module Webroar
|
|
|
125
126
|
GCC = Dependency.new(File.basename(Config::CONFIG['CC']))
|
|
126
127
|
Gnutls = Dependency.new('gnutls/gnutls.h')
|
|
127
128
|
Make = Dependency.new('make')
|
|
128
|
-
LibRuby = Dependency.new(Config::CONFIG['
|
|
129
|
+
LibRuby = Dependency.new(Config::CONFIG['LIBRUBY'])
|
|
129
130
|
LibSqlite = Dependency.new('libsqlite3.so')
|
|
130
131
|
Ruby_OpenSSL = Dependency.new('openssl-ruby')
|
|
131
132
|
Ruby = Dependency.new(Config::CONFIG['RUBY_INSTALL_NAME'])
|
|
@@ -134,6 +135,8 @@ module Webroar
|
|
|
134
135
|
Sqlite_DevHeaders = Dependency.new('sqlite3.h')
|
|
135
136
|
Starling = Dependency.new('starling')
|
|
136
137
|
Xcode = Dependency.new('Xcode.app')
|
|
137
|
-
|
|
138
|
+
RubyZlib = Dependency.new('zlib-ruby')
|
|
139
|
+
Zlib = Dependency.new('zlib.h')
|
|
140
|
+
Regex = Dependency.new('regex.h')
|
|
138
141
|
end
|
|
139
142
|
end # module Webroar
|
data/lib/installer.rb
CHANGED
|
@@ -73,6 +73,9 @@ class Installer
|
|
|
73
73
|
# 9) Logging level(optional)(default is 'Server Specification/log_level')
|
|
74
74
|
# 10) Run as user (mandatory)
|
|
75
75
|
# 11) Hostnames(optional)
|
|
76
|
+
# 12) Environment Variable(optional)
|
|
77
|
+
# It defines environment variables which can be used in the deployed application. It take following parameter.
|
|
78
|
+
# I) set_env(optional)(Value is key-value pair separated by equal sign('=') e.g. LOG_DIR=/var/log/webroar)
|
|
76
79
|
# Order of the above elements does not matter.
|
|
77
80
|
# Base-uri 'admin-panel' is reserved for 'Admin Panel'.
|
|
78
81
|
# Either host_names or baseuri(not both) must present to resolve HTTP request.
|
|
@@ -91,6 +94,9 @@ class Installer
|
|
|
91
94
|
# min_worker: 2
|
|
92
95
|
# max_worker: 5
|
|
93
96
|
# log_level: SEVERE
|
|
97
|
+
# environment_variables:
|
|
98
|
+
# - set_env: LOG_DIR=/var/log/webroar
|
|
99
|
+
# - set_env: TMP_DIR=/tmp
|
|
94
100
|
# Example with host_names:
|
|
95
101
|
# Application Specification:
|
|
96
102
|
# - name: Mephisto
|
|
@@ -103,21 +109,42 @@ class Installer
|
|
|
103
109
|
# min_worker: 2
|
|
104
110
|
# max_worker: 5
|
|
105
111
|
# log_level: SEVERE
|
|
106
|
-
#
|
|
107
|
-
#
|
|
108
|
-
#
|
|
109
|
-
#
|
|
110
|
-
#
|
|
111
|
-
#
|
|
112
|
-
#
|
|
113
|
-
#
|
|
114
|
-
#
|
|
115
|
-
#
|
|
116
|
-
#
|
|
117
|
-
#
|
|
118
|
-
#
|
|
119
|
-
#
|
|
120
|
-
#
|
|
112
|
+
# environment_variables:
|
|
113
|
+
# - set_env: LOG_DIR=/var/log/webroar
|
|
114
|
+
# - set_env: TMP_DIR=/tmp
|
|
115
|
+
#
|
|
116
|
+
# (c) Headers (optional)
|
|
117
|
+
# It allows adding or changing the Expires and Cache-Control in the response headers for static assets (e.g. *.js, *.gif etc).
|
|
118
|
+
# Elements:
|
|
119
|
+
# 1) Expires header for all static assets (optional) (default is 'off')
|
|
120
|
+
# 2) Specific expires header for specific file types (optional)
|
|
121
|
+
# Elements:
|
|
122
|
+
# I) File Extensions(mandatory)
|
|
123
|
+
# II) Expires value(mandatory) (No of seconds)
|
|
124
|
+
# Possible value for expires is off or no. of seconds.
|
|
125
|
+
# Example:
|
|
126
|
+
# Headers:
|
|
127
|
+
# expires: 3600
|
|
128
|
+
# expires_by_type:
|
|
129
|
+
# - ext: png, jpg, gif
|
|
130
|
+
# expires: 31536000
|
|
131
|
+
#
|
|
132
|
+
# (d) Encoding (optional)
|
|
133
|
+
# It allows (deflate) encoding of static assets.
|
|
134
|
+
# Elements:
|
|
135
|
+
# 1) Regex value for supported Content-Type (optional) (default is 'text|xml')
|
|
136
|
+
# 2) Regex value for supported Used-Agent (optional) (default is '.*')
|
|
137
|
+
# 3) Range of Content-Length (optional)
|
|
138
|
+
# Elements:
|
|
139
|
+
# I) Lower limit of Content-Length (optional) (default is 1024 i.e. 1KB)
|
|
140
|
+
# II) Upper limit of Content-Length (optional) (default is 12328960 i.e. 10MB)
|
|
141
|
+
# Example:
|
|
142
|
+
# Encoding:
|
|
143
|
+
# Content-Type: text|xml|javascript
|
|
144
|
+
# User-Agent: .*
|
|
145
|
+
# Size Limit:
|
|
146
|
+
# lower_limit: 2094
|
|
147
|
+
# upper_limit: 12328960
|
|
121
148
|
#
|
|
122
149
|
######################################################################################
|
|
123
150
|
}
|
|
@@ -130,7 +157,7 @@ class Installer
|
|
|
130
157
|
Dependencies::Ruby,
|
|
131
158
|
Dependencies::LibRuby,
|
|
132
159
|
Dependencies::Ruby_OpenSSL,
|
|
133
|
-
Dependencies::
|
|
160
|
+
Dependencies::RubyZlib,
|
|
134
161
|
Dependencies::Ruby_DevHeaders,
|
|
135
162
|
Dependencies::RubyGems,
|
|
136
163
|
Dependencies::GCC,
|
|
@@ -138,7 +165,9 @@ class Installer
|
|
|
138
165
|
Dependencies::LibSqlite,
|
|
139
166
|
Dependencies::Sqlite_DevHeaders,
|
|
140
167
|
Dependencies::Starling,
|
|
141
|
-
Dependencies::Gnutls
|
|
168
|
+
Dependencies::Gnutls,
|
|
169
|
+
Dependencies::Zlib,
|
|
170
|
+
Dependencies::Regex
|
|
142
171
|
]
|
|
143
172
|
end
|
|
144
173
|
|
|
@@ -147,14 +176,16 @@ class Installer
|
|
|
147
176
|
Dependencies::Ruby,
|
|
148
177
|
Dependencies::LibRuby,
|
|
149
178
|
Dependencies::Ruby_OpenSSL,
|
|
150
|
-
Dependencies::
|
|
179
|
+
Dependencies::RubyZlib,
|
|
151
180
|
Dependencies::Ruby_DevHeaders,
|
|
152
181
|
Dependencies::RubyGems,
|
|
153
182
|
Dependencies::GCC,
|
|
154
183
|
Dependencies::Make,
|
|
155
184
|
Dependencies::Starling,
|
|
156
185
|
Dependencies::Xcode,
|
|
157
|
-
Dependencies::Gnutls
|
|
186
|
+
Dependencies::Gnutls,
|
|
187
|
+
Dependencies::Zlib,
|
|
188
|
+
Dependencies::Regex
|
|
158
189
|
]
|
|
159
190
|
end
|
|
160
191
|
|
|
@@ -164,36 +195,48 @@ class Installer
|
|
|
164
195
|
@import = false
|
|
165
196
|
@port = 0
|
|
166
197
|
@err_msg = nil
|
|
198
|
+
@zlib = true
|
|
199
|
+
@regex = true
|
|
167
200
|
end
|
|
168
201
|
|
|
169
202
|
# Install the server
|
|
170
203
|
def install(options)
|
|
171
|
-
return -1 unless CheckUser.check
|
|
172
|
-
@options = options
|
|
173
|
-
|
|
174
|
-
str = set_install_options
|
|
175
|
-
|
|
176
204
|
|
|
177
|
-
|
|
205
|
+
begin
|
|
206
|
+
return -1 unless CheckUser.check
|
|
207
|
+
@options = options
|
|
178
208
|
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
209
|
+
str = set_install_options
|
|
210
|
+
|
|
211
|
+
check_dependencies || exit(1)
|
|
182
212
|
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
213
|
+
str << " zlib=yes" if @zlib
|
|
214
|
+
str << " regex=yes" if(@zlib and @regex)
|
|
215
|
+
|
|
216
|
+
@port, @import, gem_name = UserInteraction.new(@options).user_input
|
|
217
|
+
@port = import_files(gem_name) if @import
|
|
218
|
+
write_server_port if !@import
|
|
219
|
+
|
|
220
|
+
create_dirs
|
|
221
|
+
return -1 unless compile_code(str)
|
|
222
|
+
return -1 unless install_server
|
|
223
|
+
|
|
224
|
+
|
|
225
|
+
# Stop WebROaR if already running.
|
|
226
|
+
WebroarCommand.new.operation(nil, "stop") if File.exist?(PIDFILE)
|
|
227
|
+
|
|
228
|
+
# Start WebROaR
|
|
229
|
+
puts"Starting WebROaR ... "
|
|
230
|
+
WebroarCommand.new.operation(nil, "start")
|
|
231
|
+
|
|
232
|
+
install_msg(false)
|
|
233
|
+
puts "Warning: " + @err_msg if @err_msg
|
|
234
|
+
rescue Exception=>e
|
|
235
|
+
File.open(File.join(WEBROAR_ROOT, "install.log"), "a+") do |f|
|
|
236
|
+
f.puts e.class.name
|
|
237
|
+
f.puts e.backtrace
|
|
238
|
+
end
|
|
239
|
+
end
|
|
197
240
|
end
|
|
198
241
|
|
|
199
242
|
# Start test cases
|
|
@@ -391,8 +434,8 @@ class Installer
|
|
|
391
434
|
# Check the dependency
|
|
392
435
|
def check_dependencies
|
|
393
436
|
puts "Checking for the dependencies ..."
|
|
394
|
-
failed_dependencies =[]
|
|
395
|
-
|
|
437
|
+
failed_dependencies = []
|
|
438
|
+
|
|
396
439
|
REQUIRED_DEPENDENCIES.each do |dep|
|
|
397
440
|
if (dep.name=="gnutls/gnutls.h" and @ssl) or dep.name != "gnutls/gnutls.h"
|
|
398
441
|
print "Checking for #{dep.name}........"
|
|
@@ -407,6 +450,12 @@ class Installer
|
|
|
407
450
|
end
|
|
408
451
|
end
|
|
409
452
|
end
|
|
453
|
+
|
|
454
|
+
@zlib = false if failed_dependencies.include?(Dependencies::Zlib.name)
|
|
455
|
+
failed_dependencies.delete(Dependencies::Zlib.name)
|
|
456
|
+
|
|
457
|
+
@regex = false if failed_dependencies.include?(Dependencies::Regex.name)
|
|
458
|
+
failed_dependencies.delete(Dependencies::Regex.name)
|
|
410
459
|
|
|
411
460
|
if( failed_dependencies.size > 0)
|
|
412
461
|
puts "The following dependencies required for installation could not be found:"
|
|
@@ -414,13 +463,24 @@ class Installer
|
|
|
414
463
|
failed_dependencies.each do |dependency|
|
|
415
464
|
puts dependency
|
|
416
465
|
end
|
|
466
|
+
|
|
417
467
|
puts "\e[0mPlease refer the user guide for the list of prerequisites."
|
|
418
468
|
puts "Sorry, WebROaR could not be installed on this machine."
|
|
419
469
|
return false
|
|
420
470
|
end
|
|
471
|
+
|
|
472
|
+
unless @zlib
|
|
473
|
+
puts "\n\e[31mThe installation continue without supporting static assets encoding.\e[0m"
|
|
474
|
+
puts ""
|
|
475
|
+
else
|
|
476
|
+
unless @regex
|
|
477
|
+
puts "\n\e[31mThe static asstes endcoding supported without Regex validations.\e[0m"
|
|
478
|
+
puts ""
|
|
479
|
+
end
|
|
480
|
+
end
|
|
421
481
|
|
|
422
482
|
return true
|
|
423
|
-
end
|
|
483
|
+
end
|
|
424
484
|
|
|
425
485
|
def check_exe_file(file)
|
|
426
486
|
paths = ENV['PATH'].split(":")
|
|
@@ -434,7 +494,6 @@ class Installer
|
|
|
434
494
|
return flag
|
|
435
495
|
end
|
|
436
496
|
|
|
437
|
-
|
|
438
497
|
def create_service_links(script_file)
|
|
439
498
|
create_service_link("0", 'K15webroar', script_file)
|
|
440
499
|
create_service_link("1", 'K15webroar', script_file)
|
|
@@ -581,6 +640,12 @@ exit 0"
|
|
|
581
640
|
end
|
|
582
641
|
|
|
583
642
|
def import_server_configuration(import_dir)
|
|
643
|
+
unless File.exist?(File.join(import_dir,"conf","config.yml"))
|
|
644
|
+
@port = 3000
|
|
645
|
+
write_server_port
|
|
646
|
+
return
|
|
647
|
+
end
|
|
648
|
+
|
|
584
649
|
info = YAML.load(File.open(File.join(import_dir,"conf","config.yml")))
|
|
585
650
|
ssl = info['Server Specification']['SSL Specification'] if info and info['Server Specification'] and info['Server Specification']['SSL Specification']
|
|
586
651
|
|
|
@@ -626,11 +691,11 @@ exit 0"
|
|
|
626
691
|
|
|
627
692
|
if @options[:ssl]
|
|
628
693
|
@ssl = true
|
|
629
|
-
str
|
|
694
|
+
str << "ssl=yes "
|
|
630
695
|
end
|
|
631
696
|
|
|
632
|
-
str
|
|
633
|
-
str
|
|
697
|
+
str << " include_flags=\"#{@options[:include_paths]}\"" if @options[:include_paths].length > 0
|
|
698
|
+
str << " library_flags=\"#{@options[:library_paths]}\"" if @options[:library_paths].length > 0
|
|
634
699
|
str
|
|
635
700
|
end
|
|
636
701
|
|
|
@@ -702,7 +767,7 @@ exit 0"
|
|
|
702
767
|
def create_dirs
|
|
703
768
|
print 'Creating directory structure ...'
|
|
704
769
|
Dir.chdir(WEBROAR_ROOT)
|
|
705
|
-
system("ln -s #{ADMIN_PANEL_DIR} #{
|
|
770
|
+
system("ln -s #{ADMIN_PANEL_DIR} #{WEBROAR_ROOT}>install.log 2>>install.log")
|
|
706
771
|
system("chmod ugo+x #{File.join(WEBROAR_BIN_DIR,'webroar-analyzer')}")
|
|
707
772
|
puts " done."
|
|
708
773
|
end
|
|
@@ -138,7 +138,7 @@ class AdminController < ApplicationController
|
|
|
138
138
|
end
|
|
139
139
|
if password_changed
|
|
140
140
|
flash[:notice] = PASSWORD_CHANGED
|
|
141
|
-
YAMLWriter.write(users,USERS_FILE_PATH,
|
|
141
|
+
YAMLWriter.write(users, USERS_FILE_PATH, YAMLConfig::USER)
|
|
142
142
|
else
|
|
143
143
|
if params[:password][:new].length < 6
|
|
144
144
|
flash[:notice] = WRONG_PASSWORD2
|
|
@@ -155,20 +155,6 @@ class AdminController < ApplicationController
|
|
|
155
155
|
set_application_name
|
|
156
156
|
end
|
|
157
157
|
|
|
158
|
-
#This method is to add div for changing the server specifications.
|
|
159
|
-
#This action is called as a ajax call when user click on the edit button of the server specification block in the configuration page.
|
|
160
|
-
def add_text_box
|
|
161
|
-
@path = CONFIG_FILE_PATH
|
|
162
|
-
render :partial => 'add_div'
|
|
163
|
-
end
|
|
164
|
-
|
|
165
|
-
#This method is to close the edit box for the server specification.
|
|
166
|
-
#This is called if user doesnot wants to made the changes in the server specification.
|
|
167
|
-
def cancel_edit
|
|
168
|
-
text = params[:old_value].to_s
|
|
169
|
-
render :text => text
|
|
170
|
-
end
|
|
171
|
-
|
|
172
158
|
#This method is to return the server time.
|
|
173
159
|
#The method refreshes the time after every minute.
|
|
174
160
|
def get_latest_time
|
|
@@ -95,9 +95,9 @@ private
|
|
|
95
95
|
info = YAML::load_file(CONFIG_FILE_PATH) rescue nil
|
|
96
96
|
if info and info['Application Specification']
|
|
97
97
|
while(info['Application Specification'][i])
|
|
98
|
-
if info['Application Specification'][i]['analytics'].downcase == "enabled".downcase
|
|
98
|
+
#if info['Application Specification'][i]['analytics'].downcase == "enabled".downcase
|
|
99
99
|
apps << info['Application Specification'][i]['name'].gsub("<","<").gsub(">",">")
|
|
100
|
-
end
|
|
100
|
+
#end
|
|
101
101
|
i += 1
|
|
102
102
|
end
|
|
103
103
|
end
|
|
@@ -121,8 +121,9 @@ class ApplicationSpecificationController < ApplicationController
|
|
|
121
121
|
end
|
|
122
122
|
|
|
123
123
|
def set_error(reply, err_log)
|
|
124
|
+
# flash data is being stored in Session, and causing cookie overflow error when total session data exceeds 4K
|
|
124
125
|
flash[:error] = reply if reply
|
|
125
|
-
flash[:error] += "<br/><br/><div align='left'><font color='red'" + err_log.gsub("\n","<br/>") + "</font></div>" if err_log
|
|
126
|
+
flash[:error] += "<br/><br/><div align='left'><font color='red'>" + err_log.gsub("\n","<br/>") + "</font></div>" if err_log
|
|
126
127
|
end
|
|
127
128
|
|
|
128
129
|
end
|
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
#--
|
|
2
|
+
# WebROaR - Ruby Application Server - http://webroar.in/
|
|
3
|
+
# Copyright (C) 2009 Goonj LLC
|
|
4
|
+
#
|
|
5
|
+
# This file is part of WebROaR.
|
|
6
|
+
#
|
|
7
|
+
# WebROaR is free software: you can redistribute it and/or modify
|
|
8
|
+
# it under the terms of the GNU General Public License as published by
|
|
9
|
+
# the Free Software Foundation, either version 3 of the License, or
|
|
10
|
+
# (at your option) any later version.
|
|
11
|
+
#
|
|
12
|
+
# WebROaR is distributed in the hope that it will be useful,
|
|
13
|
+
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
14
|
+
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
15
|
+
# GNU General Public License for more details.
|
|
16
|
+
#
|
|
17
|
+
# You should have received a copy of the GNU General Public License
|
|
18
|
+
# along with WebROaR. If not, see <http://www.gnu.org/licenses/>.
|
|
19
|
+
#++
|
|
20
|
+
|
|
21
|
+
class HeadersController < ApplicationController
|
|
22
|
+
before_filter :login_required
|
|
23
|
+
before_filter :check_session_timeout
|
|
24
|
+
|
|
25
|
+
def add_expires_text_box
|
|
26
|
+
render :partial => 'add_expires_text_box'
|
|
27
|
+
end
|
|
28
|
+
|
|
29
|
+
def cancel_expires_value_edit
|
|
30
|
+
text = params[:old_value].to_s
|
|
31
|
+
render :text => text
|
|
32
|
+
end
|
|
33
|
+
|
|
34
|
+
def save_expires_value
|
|
35
|
+
text = params[:old_value].to_s
|
|
36
|
+
if params[:data][:value]
|
|
37
|
+
text, error_message = Headers.validate_and_write_expires_value(text, params[:data][:value])
|
|
38
|
+
if error_message.length > 0
|
|
39
|
+
render :text => text.to_s + " <span id='error_div'>#{error_message}</span>"
|
|
40
|
+
else
|
|
41
|
+
render :text => text.to_s + " <span id='error_div'>#{RESTART_SERVER_MESSAGE}</span>"
|
|
42
|
+
end
|
|
43
|
+
end
|
|
44
|
+
end
|
|
45
|
+
|
|
46
|
+
def add_expires_by_type_form
|
|
47
|
+
render :partial => 'expires_by_type_form'
|
|
48
|
+
end
|
|
49
|
+
|
|
50
|
+
def save_expires_by_type_value
|
|
51
|
+
@error_message = Headers.validate_and_write_expires_by_type(params[:data][:ext], params[:data][:expires])
|
|
52
|
+
if @error_message.length > 0
|
|
53
|
+
update_div = 'expires_by_type_form'
|
|
54
|
+
partial_name = 'expires_by_type_form'
|
|
55
|
+
else
|
|
56
|
+
update_div = 'headers_div'
|
|
57
|
+
partial_name = 'headers_table'
|
|
58
|
+
@restart_server_message = RESTART_SERVER_MESSAGE
|
|
59
|
+
end
|
|
60
|
+
render :update do |page|
|
|
61
|
+
page.replace_html update_div, :partial => partial_name
|
|
62
|
+
end
|
|
63
|
+
end
|
|
64
|
+
|
|
65
|
+
def delete_expires_by_type
|
|
66
|
+
Headers.delete_expires_by_type(params[:id].to_i) if params[:id]
|
|
67
|
+
render :partial => 'headers_table'
|
|
68
|
+
end
|
|
69
|
+
|
|
70
|
+
def cancel_expires_by_type_value
|
|
71
|
+
render :text => ''
|
|
72
|
+
end
|
|
73
|
+
end
|
|
@@ -70,4 +70,14 @@ class MailSpecificationController < ApplicationController
|
|
|
70
70
|
redirect_to :controller => 'admin', :action => 'configuration', :smtp => smtp
|
|
71
71
|
end
|
|
72
72
|
|
|
73
|
+
def enable_notification
|
|
74
|
+
MailSpecification.update_notification_status(:enable)
|
|
75
|
+
render :partial => 'current_spec'
|
|
76
|
+
end
|
|
77
|
+
|
|
78
|
+
def disable_notification
|
|
79
|
+
MailSpecification.update_notification_status(:disable)
|
|
80
|
+
render :partial => 'current_spec'
|
|
81
|
+
end
|
|
82
|
+
|
|
73
83
|
end
|
|
@@ -83,6 +83,20 @@ class ServerSpecificationController < ApplicationController
|
|
|
83
83
|
end
|
|
84
84
|
end
|
|
85
85
|
|
|
86
|
+
#This method is to add div for changing the server specifications.
|
|
87
|
+
#This action is called as a ajax call when user click on the edit button of the server specification block in the configuration page.
|
|
88
|
+
def add_text_box
|
|
89
|
+
@path = CONFIG_FILE_PATH
|
|
90
|
+
render :partial => 'add_div'
|
|
91
|
+
end
|
|
92
|
+
|
|
93
|
+
#This method is to close the edit box for the server specification.
|
|
94
|
+
#This is called if user doesnot wants to made the changes in the server specification.
|
|
95
|
+
def cancel_edit
|
|
96
|
+
text = params[:old_value].to_s
|
|
97
|
+
render :text => text
|
|
98
|
+
end
|
|
99
|
+
|
|
86
100
|
private
|
|
87
101
|
|
|
88
102
|
#Method is to check for the various constarins for ssl supports
|