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/src/head/wr_server.c
CHANGED
|
@@ -18,12 +18,14 @@
|
|
|
18
18
|
*/
|
|
19
19
|
#include <wr_request.h>
|
|
20
20
|
|
|
21
|
+
extern config_t *Config;
|
|
22
|
+
|
|
21
23
|
static struct ev_loop *loop; //Event loop
|
|
22
24
|
struct ev_idle idle_watcher; //Ideal watcher
|
|
23
25
|
/************ Private functions **************************/
|
|
24
26
|
|
|
25
27
|
/** Create Server */
|
|
26
|
-
wr_svr_t* wr_svr_new(struct ev_loop* loop
|
|
28
|
+
wr_svr_t* wr_svr_new(struct ev_loop* loop) {
|
|
27
29
|
LOG_FUNCTION
|
|
28
30
|
wr_svr_t* server = wr_malloc(wr_svr_t);
|
|
29
31
|
|
|
@@ -35,13 +37,12 @@ wr_svr_t* wr_svr_new(struct ev_loop* loop, wr_conf_t* conf) {
|
|
|
35
37
|
//Get ebb server object
|
|
36
38
|
ebb_server_init(&(server->ebb_svr),loop);
|
|
37
39
|
|
|
38
|
-
if(conf->server->flag&WR_SVR_SSL_SUPPORT) {
|
|
39
40
|
#ifdef HAVE_GNUTLS
|
|
40
|
-
|
|
41
|
+
if(Config->Server.flag & SERVER_SSL_SUPPORT) {
|
|
41
42
|
//Initialize ebb server for SSL support
|
|
42
43
|
ebb_server_init(&(server->secure_ebb_svr),loop);
|
|
43
44
|
// Add GnuTLS support
|
|
44
|
-
if(ebb_server_set_secure(&(server->secure_ebb_svr),
|
|
45
|
+
if(ebb_server_set_secure(&(server->secure_ebb_svr), Config->Server.SSL.certificate.str, Config->Server.SSL.key.str) < 0) {
|
|
45
46
|
ebb_server_unlisten(&(server->secure_ebb_svr));
|
|
46
47
|
//free(server);
|
|
47
48
|
//return NULL;
|
|
@@ -50,10 +51,9 @@ wr_svr_t* wr_svr_new(struct ev_loop* loop, wr_conf_t* conf) {
|
|
|
50
51
|
server->secure_ebb_svr.data = server;
|
|
51
52
|
server->secure_ebb_svr.new_connection = wr_new_conn_cb;
|
|
52
53
|
}
|
|
53
|
-
|
|
54
|
+
}
|
|
54
55
|
#endif
|
|
55
56
|
|
|
56
|
-
}
|
|
57
57
|
server->ebb_svr.data = server;
|
|
58
58
|
server->ebb_svr.new_connection = wr_new_conn_cb;
|
|
59
59
|
|
|
@@ -61,17 +61,26 @@ wr_svr_t* wr_svr_new(struct ev_loop* loop, wr_conf_t* conf) {
|
|
|
61
61
|
server->ctl = wr_svr_ctl_new();
|
|
62
62
|
if(!server->ctl) {
|
|
63
63
|
ebb_server_unlisten(&(server->ebb_svr));
|
|
64
|
+
#ifdef HAVE_GNUTLS
|
|
65
|
+
if(Config->Server.flag & SERVER_SSL_SUPPORT) {
|
|
66
|
+
ebb_server_unlisten(&(server->secure_ebb_svr));
|
|
67
|
+
}
|
|
68
|
+
#endif
|
|
64
69
|
free(server);
|
|
65
70
|
LOG_ERROR(WARN, "%s() control object allocation failed. Returning ...",__FUNCTION__);
|
|
66
71
|
return NULL;
|
|
67
72
|
}
|
|
68
73
|
|
|
69
|
-
server->conf = conf;
|
|
70
74
|
server->apps = NULL;
|
|
71
75
|
server->default_app = NULL;
|
|
72
76
|
server->resolver = wr_req_resolver_new();
|
|
73
77
|
if(server->resolver == NULL) {
|
|
74
78
|
ebb_server_unlisten(&(server->ebb_svr));
|
|
79
|
+
#ifdef HAVE_GNUTLS
|
|
80
|
+
if(Config->Server.flag & SERVER_SSL_SUPPORT) {
|
|
81
|
+
ebb_server_unlisten(&(server->secure_ebb_svr));
|
|
82
|
+
}
|
|
83
|
+
#endif
|
|
75
84
|
free(server);
|
|
76
85
|
LOG_ERROR(WARN, "Resolver object allocation failed. Returning ...");
|
|
77
86
|
return NULL;
|
|
@@ -81,19 +90,19 @@ wr_svr_t* wr_svr_new(struct ev_loop* loop, wr_conf_t* conf) {
|
|
|
81
90
|
}
|
|
82
91
|
|
|
83
92
|
/** Attach ideal watcher with event loop */
|
|
84
|
-
|
|
93
|
+
void attach_idle_watcher() {
|
|
85
94
|
if(!ev_is_active(&idle_watcher)) {
|
|
86
95
|
ev_idle_start (loop, &idle_watcher);
|
|
87
96
|
}
|
|
88
97
|
}
|
|
89
98
|
|
|
90
99
|
/** Detach Ideal watcher from event loop*/
|
|
91
|
-
|
|
100
|
+
void detach_idle_watcher() {
|
|
92
101
|
ev_idle_stop(loop, &idle_watcher);
|
|
93
102
|
}
|
|
94
103
|
|
|
95
104
|
/** Callback function for Ideal watcher */
|
|
96
|
-
|
|
105
|
+
void idle_cb (struct ev_loop *loop, struct ev_idle *w, int revents) {
|
|
97
106
|
/*if(clients_in_use_p()) {
|
|
98
107
|
rb_thread_schedule();
|
|
99
108
|
} else if(!rb_thread_alone()) {*/
|
|
@@ -116,35 +125,35 @@ static inline void idle_cb (struct ev_loop *loop, struct ev_idle *w, int revents
|
|
|
116
125
|
*****************************************************/
|
|
117
126
|
|
|
118
127
|
/** Starts listening for requests */
|
|
119
|
-
int wr_svr_init(wr_svr_t** server
|
|
128
|
+
int wr_svr_init(wr_svr_t** server) {
|
|
120
129
|
//TODO: attach idle watcher
|
|
121
130
|
//ev_idle_init (&idle_watcher, idle_cb);
|
|
122
131
|
//attach_idle_watcher();
|
|
123
132
|
|
|
124
133
|
//Create and initialize Server object
|
|
125
134
|
loop = ev_default_loop (0);
|
|
126
|
-
*server = wr_svr_new(loop
|
|
135
|
+
*server = wr_svr_new(loop);
|
|
127
136
|
|
|
128
137
|
if(*server == NULL) {
|
|
129
138
|
LOG_ERROR(SEVERE,"Server is NULL");
|
|
130
139
|
return -1;
|
|
131
140
|
}
|
|
132
141
|
|
|
133
|
-
(*server)->conf = conf;
|
|
134
|
-
if(conf->server->flag&WR_SVR_SSL_SUPPORT) {
|
|
135
142
|
#ifdef HAVE_GNUTLS
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
143
|
+
if(Config->Server.flag & SERVER_SSL_SUPPORT) {
|
|
144
|
+
LOG_DEBUG(DEBUG,"SSL port = %d", Config->Server.SSL.port);
|
|
145
|
+
if(ebb_server_listen_on_port(&(*server)->secure_ebb_svr, Config->Server.SSL.port) < 0) {
|
|
146
|
+
LOG_ERROR(SEVERE,"ebb_server_listen_on_port(): failed. Port number = %d",Config->Server.SSL.port);
|
|
147
|
+
printf("Port %d is already in use.\n", Config->Server.SSL.port);
|
|
148
|
+
return -1;
|
|
140
149
|
}
|
|
141
|
-
#endif
|
|
142
|
-
|
|
143
150
|
}
|
|
144
|
-
|
|
151
|
+
#endif
|
|
152
|
+
|
|
153
|
+
LOG_DEBUG(DEBUG,"port = %d", Config->Server.port);
|
|
145
154
|
//ebb server starts listening for request
|
|
146
|
-
if(ebb_server_listen_on_port(&(*server)->ebb_svr,
|
|
147
|
-
printf("Port %d is already in use.\n",
|
|
155
|
+
if(ebb_server_listen_on_port(&(*server)->ebb_svr, Config->Server.port) < 1) {
|
|
156
|
+
printf("Port %d is already in use.\n", Config->Server.port);
|
|
148
157
|
return -1;
|
|
149
158
|
}
|
|
150
159
|
|
|
@@ -152,8 +161,10 @@ int wr_svr_init(wr_svr_t** server, wr_conf_t *conf) {
|
|
|
152
161
|
(*server)->on_app_remove = wr_app_remove_cb;
|
|
153
162
|
(*server)->on_app_reload = wr_app_reload_cb;
|
|
154
163
|
(*server)->on_wkr_add = wr_wkr_add_cb;
|
|
164
|
+
(*server)->on_wkr_add_error = wr_wkr_add_error_cb;
|
|
155
165
|
(*server)->on_wkr_remove = wr_wkr_remove_cb;
|
|
156
166
|
(*server)->on_wkr_ping = wr_wkr_ping_cb;
|
|
167
|
+
(*server)->on_wkr_conf_req = wr_app_conf_req_cb;
|
|
157
168
|
(*server)->default_app = (*server)->static_app = NULL;
|
|
158
169
|
|
|
159
170
|
return 0;
|
|
@@ -168,11 +179,11 @@ void wr_svr_free(wr_svr_t* server) {
|
|
|
168
179
|
#ifdef HAVE_GNUTLS
|
|
169
180
|
|
|
170
181
|
//Destroy ebb server object used for SSL
|
|
171
|
-
|
|
182
|
+
if(Config->Server.flag & SERVER_SSL_SUPPORT)
|
|
183
|
+
ebb_server_unlisten(&(server->secure_ebb_svr));
|
|
172
184
|
|
|
173
185
|
#endif
|
|
174
186
|
|
|
175
|
-
|
|
176
187
|
// Destroy application list
|
|
177
188
|
if(server->apps) {
|
|
178
189
|
wr_app_free(server->apps);
|
|
@@ -186,7 +197,6 @@ void wr_svr_free(wr_svr_t* server) {
|
|
|
186
197
|
|
|
187
198
|
//Destroy Server Control object
|
|
188
199
|
wr_svr_ctl_free(server->ctl);
|
|
189
|
-
wr_conf_free(server->conf);
|
|
190
200
|
wr_req_resolver_free(server->resolver);
|
|
191
201
|
free(server);
|
|
192
202
|
}
|
data/src/head/wr_server.h
CHANGED
|
@@ -21,7 +21,6 @@
|
|
|
21
21
|
|
|
22
22
|
#include <wr_configurator.h>
|
|
23
23
|
#include <ebb.h>
|
|
24
|
-
#include <wr_config.h>
|
|
25
24
|
|
|
26
25
|
typedef struct wr_app_s wr_app_t;
|
|
27
26
|
typedef struct wr_svr_ctl_s wr_svr_ctl_t;
|
|
@@ -35,16 +34,15 @@ typedef void (*wr_ctl_signal_cb) (wr_ctl_t*, const wr_ctl_msg_t*);
|
|
|
35
34
|
typedef struct {
|
|
36
35
|
ebb_server ebb_svr; /**< Ebb server */
|
|
37
36
|
|
|
38
|
-
ebb_server secure_ebb_svr; /**< Ebb server */
|
|
39
37
|
#ifdef HAVE_GNUTLS
|
|
38
|
+
ebb_server secure_ebb_svr; /**< Ebb server */
|
|
40
39
|
#endif
|
|
41
40
|
|
|
42
|
-
wr_conf_t* conf; /**< Configuration pointer */
|
|
43
41
|
wr_app_t* apps; /**< Application list */
|
|
44
42
|
wr_app_t* default_app;
|
|
45
43
|
wr_app_t* static_app;
|
|
46
44
|
wr_svr_ctl_t* ctl; /**< Server control pointer */
|
|
47
|
-
char err_msg[
|
|
45
|
+
char err_msg[STR_SIZE1KB]; /**< Error message */
|
|
48
46
|
wr_req_resolver_t *resolver;
|
|
49
47
|
short is_running; /**< Keep alive flag */
|
|
50
48
|
|
|
@@ -55,10 +53,12 @@ typedef struct {
|
|
|
55
53
|
wr_ctl_signal_cb on_wkr_add;
|
|
56
54
|
wr_ctl_signal_cb on_wkr_remove;
|
|
57
55
|
wr_ctl_signal_cb on_wkr_ping;
|
|
56
|
+
wr_ctl_signal_cb on_wkr_add_error;
|
|
57
|
+
wr_ctl_signal_cb on_wkr_conf_req;
|
|
58
58
|
}wr_svr_t;
|
|
59
59
|
|
|
60
60
|
/** Initialize Server */
|
|
61
|
-
int wr_svr_init(wr_svr_t
|
|
61
|
+
int wr_svr_init(wr_svr_t**);
|
|
62
62
|
/** Destroy Server */
|
|
63
63
|
void wr_svr_free(wr_svr_t*);
|
|
64
64
|
|