webroar 0.3.1 → 0.4.0
Sign up to get free protection for your applications and to get access to all the features.
- 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
|