ses-proxy 0.1.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (57) hide show
  1. data/app/public/bootstrap/css/bootstrap-responsive.css +1092 -0
  2. data/app/public/bootstrap/css/bootstrap-responsive.min.css +9 -0
  3. data/app/public/bootstrap/css/bootstrap.css +6039 -0
  4. data/app/public/bootstrap/css/bootstrap.min.css +9 -0
  5. data/app/public/bootstrap/img/glyphicons-halflings-white.png +0 -0
  6. data/app/public/bootstrap/img/glyphicons-halflings.png +0 -0
  7. data/app/public/bootstrap/js/bootstrap.js +2159 -0
  8. data/app/public/bootstrap/js/bootstrap.min.js +6 -0
  9. data/app/public/css/application.css +16 -0
  10. data/app/public/datepicker/css/datepicker.css +7 -0
  11. data/app/public/datepicker/js/bootstrap-datepicker.js +454 -0
  12. data/app/public/datepicker/less/datepicker.less +119 -0
  13. data/app/public/highcharts/adapters/mootools-adapter.js +13 -0
  14. data/app/public/highcharts/adapters/mootools-adapter.src.js +327 -0
  15. data/app/public/highcharts/adapters/prototype-adapter.js +16 -0
  16. data/app/public/highcharts/adapters/prototype-adapter.src.js +385 -0
  17. data/app/public/highcharts/highcharts-more.js +35 -0
  18. data/app/public/highcharts/highcharts.js +246 -0
  19. data/app/public/highcharts/highcharts.src.js +15111 -0
  20. data/app/public/highcharts/modules/canvas-tools.js +133 -0
  21. data/app/public/highcharts/modules/canvas-tools.src.js +3113 -0
  22. data/app/public/highcharts/modules/data.js +11 -0
  23. data/app/public/highcharts/modules/data.src.js +277 -0
  24. data/app/public/highcharts/modules/exporting.js +23 -0
  25. data/app/public/highcharts/modules/exporting.src.js +736 -0
  26. data/app/public/highcharts/themes/dark-blue.js +263 -0
  27. data/app/public/highcharts/themes/dark-green.js +263 -0
  28. data/app/public/highcharts/themes/gray.js +262 -0
  29. data/app/public/highcharts/themes/grid.js +95 -0
  30. data/app/public/highcharts/themes/skies.js +89 -0
  31. data/app/public/images/loader.gif +0 -0
  32. data/app/public/js/application.js +81 -0
  33. data/app/views/_chart.haml +2 -0
  34. data/app/views/_search_form.haml +23 -0
  35. data/app/views/bounces.haml +23 -0
  36. data/app/views/kaminari/_first_page.html.erb +3 -0
  37. data/app/views/kaminari/_gap.html.erb +3 -0
  38. data/app/views/kaminari/_last_page.html.erb +3 -0
  39. data/app/views/kaminari/_next_page.html.erb +3 -0
  40. data/app/views/kaminari/_page.html.erb +3 -0
  41. data/app/views/kaminari/_paginator.html.erb +17 -0
  42. data/app/views/kaminari/_prev_page.html.erb +3 -0
  43. data/app/views/layout.haml +25 -0
  44. data/app/views/mails.haml +26 -0
  45. data/app/web_panel.rb +149 -0
  46. data/bin/ses_proxy +20 -0
  47. data/lib/ses_proxy/conf.rb +9 -0
  48. data/lib/ses_proxy/main_command.rb +154 -0
  49. data/lib/ses_proxy/models/bounce.rb +14 -0
  50. data/lib/ses_proxy/models/complaint.rb +13 -0
  51. data/lib/ses_proxy/models/email.rb +15 -0
  52. data/lib/ses_proxy/smtp_server.rb +122 -0
  53. data/lib/ses_proxy/sns_endpoint.rb +199 -0
  54. data/ses_proxy.rb +10 -0
  55. data/template/mongoid.yml +12 -0
  56. data/template/ses-proxy.yml +19 -0
  57. metadata +294 -0
@@ -0,0 +1,262 @@
1
+ /**
2
+ * Gray theme for Highcharts JS
3
+ * @author Torstein Hønsi
4
+ */
5
+
6
+ Highcharts.theme = {
7
+ colors: ["#DDDF0D", "#7798BF", "#55BF3B", "#DF5353", "#aaeeee", "#ff0066", "#eeaaee",
8
+ "#55BF3B", "#DF5353", "#7798BF", "#aaeeee"],
9
+ chart: {
10
+ backgroundColor: {
11
+ linearGradient: { x1: 0, y1: 0, x2: 0, y2: 1 },
12
+ stops: [
13
+ [0, 'rgb(96, 96, 96)'],
14
+ [1, 'rgb(16, 16, 16)']
15
+ ]
16
+ },
17
+ borderWidth: 0,
18
+ borderRadius: 15,
19
+ plotBackgroundColor: null,
20
+ plotShadow: false,
21
+ plotBorderWidth: 0
22
+ },
23
+ title: {
24
+ style: {
25
+ color: '#FFF',
26
+ font: '16px Lucida Grande, Lucida Sans Unicode, Verdana, Arial, Helvetica, sans-serif'
27
+ }
28
+ },
29
+ subtitle: {
30
+ style: {
31
+ color: '#DDD',
32
+ font: '12px Lucida Grande, Lucida Sans Unicode, Verdana, Arial, Helvetica, sans-serif'
33
+ }
34
+ },
35
+ xAxis: {
36
+ gridLineWidth: 0,
37
+ lineColor: '#999',
38
+ tickColor: '#999',
39
+ labels: {
40
+ style: {
41
+ color: '#999',
42
+ fontWeight: 'bold'
43
+ }
44
+ },
45
+ title: {
46
+ style: {
47
+ color: '#AAA',
48
+ font: 'bold 12px Lucida Grande, Lucida Sans Unicode, Verdana, Arial, Helvetica, sans-serif'
49
+ }
50
+ }
51
+ },
52
+ yAxis: {
53
+ alternateGridColor: null,
54
+ minorTickInterval: null,
55
+ gridLineColor: 'rgba(255, 255, 255, .1)',
56
+ lineWidth: 0,
57
+ tickWidth: 0,
58
+ labels: {
59
+ style: {
60
+ color: '#999',
61
+ fontWeight: 'bold'
62
+ }
63
+ },
64
+ title: {
65
+ style: {
66
+ color: '#AAA',
67
+ font: 'bold 12px Lucida Grande, Lucida Sans Unicode, Verdana, Arial, Helvetica, sans-serif'
68
+ }
69
+ }
70
+ },
71
+ legend: {
72
+ itemStyle: {
73
+ color: '#CCC'
74
+ },
75
+ itemHoverStyle: {
76
+ color: '#FFF'
77
+ },
78
+ itemHiddenStyle: {
79
+ color: '#333'
80
+ }
81
+ },
82
+ labels: {
83
+ style: {
84
+ color: '#CCC'
85
+ }
86
+ },
87
+ tooltip: {
88
+ backgroundColor: {
89
+ linearGradient: { x1: 0, y1: 0, x2: 0, y2: 1 },
90
+ stops: [
91
+ [0, 'rgba(96, 96, 96, .8)'],
92
+ [1, 'rgba(16, 16, 16, .8)']
93
+ ]
94
+ },
95
+ borderWidth: 0,
96
+ style: {
97
+ color: '#FFF'
98
+ }
99
+ },
100
+
101
+
102
+ plotOptions: {
103
+ line: {
104
+ dataLabels: {
105
+ color: '#CCC'
106
+ },
107
+ marker: {
108
+ lineColor: '#333'
109
+ }
110
+ },
111
+ spline: {
112
+ marker: {
113
+ lineColor: '#333'
114
+ }
115
+ },
116
+ scatter: {
117
+ marker: {
118
+ lineColor: '#333'
119
+ }
120
+ },
121
+ candlestick: {
122
+ lineColor: 'white'
123
+ }
124
+ },
125
+
126
+ toolbar: {
127
+ itemStyle: {
128
+ color: '#CCC'
129
+ }
130
+ },
131
+
132
+ navigation: {
133
+ buttonOptions: {
134
+ backgroundColor: {
135
+ linearGradient: { x1: 0, y1: 0, x2: 0, y2: 1 },
136
+ stops: [
137
+ [0.4, '#606060'],
138
+ [0.6, '#333333']
139
+ ]
140
+ },
141
+ borderColor: '#000000',
142
+ symbolStroke: '#C0C0C0',
143
+ hoverSymbolStroke: '#FFFFFF'
144
+ }
145
+ },
146
+
147
+ exporting: {
148
+ buttons: {
149
+ exportButton: {
150
+ symbolFill: '#55BE3B'
151
+ },
152
+ printButton: {
153
+ symbolFill: '#7797BE'
154
+ }
155
+ }
156
+ },
157
+
158
+ // scroll charts
159
+ rangeSelector: {
160
+ buttonTheme: {
161
+ fill: {
162
+ linearGradient: { x1: 0, y1: 0, x2: 0, y2: 1 },
163
+ stops: [
164
+ [0.4, '#888'],
165
+ [0.6, '#555']
166
+ ]
167
+ },
168
+ stroke: '#000000',
169
+ style: {
170
+ color: '#CCC',
171
+ fontWeight: 'bold'
172
+ },
173
+ states: {
174
+ hover: {
175
+ fill: {
176
+ linearGradient: { x1: 0, y1: 0, x2: 0, y2: 1 },
177
+ stops: [
178
+ [0.4, '#BBB'],
179
+ [0.6, '#888']
180
+ ]
181
+ },
182
+ stroke: '#000000',
183
+ style: {
184
+ color: 'white'
185
+ }
186
+ },
187
+ select: {
188
+ fill: {
189
+ linearGradient: { x1: 0, y1: 0, x2: 0, y2: 1 },
190
+ stops: [
191
+ [0.1, '#000'],
192
+ [0.3, '#333']
193
+ ]
194
+ },
195
+ stroke: '#000000',
196
+ style: {
197
+ color: 'yellow'
198
+ }
199
+ }
200
+ }
201
+ },
202
+ inputStyle: {
203
+ backgroundColor: '#333',
204
+ color: 'silver'
205
+ },
206
+ labelStyle: {
207
+ color: 'silver'
208
+ }
209
+ },
210
+
211
+ navigator: {
212
+ handles: {
213
+ backgroundColor: '#666',
214
+ borderColor: '#AAA'
215
+ },
216
+ outlineColor: '#CCC',
217
+ maskFill: 'rgba(16, 16, 16, 0.5)',
218
+ series: {
219
+ color: '#7798BF',
220
+ lineColor: '#A6C7ED'
221
+ }
222
+ },
223
+
224
+ scrollbar: {
225
+ barBackgroundColor: {
226
+ linearGradient: { x1: 0, y1: 0, x2: 0, y2: 1 },
227
+ stops: [
228
+ [0.4, '#888'],
229
+ [0.6, '#555']
230
+ ]
231
+ },
232
+ barBorderColor: '#CCC',
233
+ buttonArrowColor: '#CCC',
234
+ buttonBackgroundColor: {
235
+ linearGradient: { x1: 0, y1: 0, x2: 0, y2: 1 },
236
+ stops: [
237
+ [0.4, '#888'],
238
+ [0.6, '#555']
239
+ ]
240
+ },
241
+ buttonBorderColor: '#CCC',
242
+ rifleColor: '#FFF',
243
+ trackBackgroundColor: {
244
+ linearGradient: { x1: 0, y1: 0, x2: 0, y2: 1 },
245
+ stops: [
246
+ [0, '#000'],
247
+ [1, '#333']
248
+ ]
249
+ },
250
+ trackBorderColor: '#666'
251
+ },
252
+
253
+ // special colors for some of the demo examples
254
+ legendBackgroundColor: 'rgba(48, 48, 48, 0.8)',
255
+ legendBackgroundColorSolid: 'rgb(70, 70, 70)',
256
+ dataLabelsColor: '#444',
257
+ textColor: '#E0E0E0',
258
+ maskColor: 'rgba(255,255,255,0.3)'
259
+ };
260
+
261
+ // Apply the theme
262
+ var highchartsOptions = Highcharts.setOptions(Highcharts.theme);
@@ -0,0 +1,95 @@
1
+ /**
2
+ * Grid theme for Highcharts JS
3
+ * @author Torstein Hønsi
4
+ */
5
+
6
+ Highcharts.theme = {
7
+ colors: ['#058DC7', '#50B432', '#ED561B', '#DDDF00', '#24CBE5', '#64E572', '#FF9655', '#FFF263', '#6AF9C4'],
8
+ chart: {
9
+ backgroundColor: {
10
+ linearGradient: { x1: 0, y1: 0, x2: 1, y2: 1 },
11
+ stops: [
12
+ [0, 'rgb(255, 255, 255)'],
13
+ [1, 'rgb(240, 240, 255)']
14
+ ]
15
+ },
16
+ borderWidth: 2,
17
+ plotBackgroundColor: 'rgba(255, 255, 255, .9)',
18
+ plotShadow: true,
19
+ plotBorderWidth: 1
20
+ },
21
+ title: {
22
+ style: {
23
+ color: '#000',
24
+ font: 'bold 16px "Trebuchet MS", Verdana, sans-serif'
25
+ }
26
+ },
27
+ subtitle: {
28
+ style: {
29
+ color: '#666666',
30
+ font: 'bold 12px "Trebuchet MS", Verdana, sans-serif'
31
+ }
32
+ },
33
+ xAxis: {
34
+ gridLineWidth: 1,
35
+ lineColor: '#000',
36
+ tickColor: '#000',
37
+ labels: {
38
+ style: {
39
+ color: '#000',
40
+ font: '11px Trebuchet MS, Verdana, sans-serif'
41
+ }
42
+ },
43
+ title: {
44
+ style: {
45
+ color: '#333',
46
+ fontWeight: 'bold',
47
+ fontSize: '12px',
48
+ fontFamily: 'Trebuchet MS, Verdana, sans-serif'
49
+
50
+ }
51
+ }
52
+ },
53
+ yAxis: {
54
+ minorTickInterval: 'auto',
55
+ lineColor: '#000',
56
+ lineWidth: 1,
57
+ tickWidth: 1,
58
+ tickColor: '#000',
59
+ labels: {
60
+ style: {
61
+ color: '#000',
62
+ font: '11px Trebuchet MS, Verdana, sans-serif'
63
+ }
64
+ },
65
+ title: {
66
+ style: {
67
+ color: '#333',
68
+ fontWeight: 'bold',
69
+ fontSize: '12px',
70
+ fontFamily: 'Trebuchet MS, Verdana, sans-serif'
71
+ }
72
+ }
73
+ },
74
+ legend: {
75
+ itemStyle: {
76
+ font: '9pt Trebuchet MS, Verdana, sans-serif',
77
+ color: 'black'
78
+
79
+ },
80
+ itemHoverStyle: {
81
+ color: '#039'
82
+ },
83
+ itemHiddenStyle: {
84
+ color: 'gray'
85
+ }
86
+ },
87
+ labels: {
88
+ style: {
89
+ color: '#99b'
90
+ }
91
+ }
92
+ };
93
+
94
+ // Apply the theme
95
+ var highchartsOptions = Highcharts.setOptions(Highcharts.theme);
@@ -0,0 +1,89 @@
1
+ /**
2
+ * Skies theme for Highcharts JS
3
+ * @author Torstein Hønsi
4
+ */
5
+
6
+ Highcharts.theme = {
7
+ colors: ["#514F78", "#42A07B", "#9B5E4A", "#72727F", "#1F949A", "#82914E", "#86777F", "#42A07B"],
8
+ chart: {
9
+ className: 'skies',
10
+ borderWidth: 0,
11
+ plotShadow: true,
12
+ plotBackgroundImage: '/demo/gfx/skies.jpg',
13
+ plotBackgroundColor: {
14
+ linearGradient: [0, 0, 250, 500],
15
+ stops: [
16
+ [0, 'rgba(255, 255, 255, 1)'],
17
+ [1, 'rgba(255, 255, 255, 0)']
18
+ ]
19
+ },
20
+ plotBorderWidth: 1
21
+ },
22
+ title: {
23
+ style: {
24
+ color: '#3E576F',
25
+ font: '16px Lucida Grande, Lucida Sans Unicode, Verdana, Arial, Helvetica, sans-serif'
26
+ }
27
+ },
28
+ subtitle: {
29
+ style: {
30
+ color: '#6D869F',
31
+ font: '12px Lucida Grande, Lucida Sans Unicode, Verdana, Arial, Helvetica, sans-serif'
32
+ }
33
+ },
34
+ xAxis: {
35
+ gridLineWidth: 0,
36
+ lineColor: '#C0D0E0',
37
+ tickColor: '#C0D0E0',
38
+ labels: {
39
+ style: {
40
+ color: '#666',
41
+ fontWeight: 'bold'
42
+ }
43
+ },
44
+ title: {
45
+ style: {
46
+ color: '#666',
47
+ font: '12px Lucida Grande, Lucida Sans Unicode, Verdana, Arial, Helvetica, sans-serif'
48
+ }
49
+ }
50
+ },
51
+ yAxis: {
52
+ alternateGridColor: 'rgba(255, 255, 255, .5)',
53
+ lineColor: '#C0D0E0',
54
+ tickColor: '#C0D0E0',
55
+ tickWidth: 1,
56
+ labels: {
57
+ style: {
58
+ color: '#666',
59
+ fontWeight: 'bold'
60
+ }
61
+ },
62
+ title: {
63
+ style: {
64
+ color: '#666',
65
+ font: '12px Lucida Grande, Lucida Sans Unicode, Verdana, Arial, Helvetica, sans-serif'
66
+ }
67
+ }
68
+ },
69
+ legend: {
70
+ itemStyle: {
71
+ font: '9pt Trebuchet MS, Verdana, sans-serif',
72
+ color: '#3E576F'
73
+ },
74
+ itemHoverStyle: {
75
+ color: 'black'
76
+ },
77
+ itemHiddenStyle: {
78
+ color: 'silver'
79
+ }
80
+ },
81
+ labels: {
82
+ style: {
83
+ color: '#3E576F'
84
+ }
85
+ }
86
+ };
87
+
88
+ // Apply the theme
89
+ var highchartsOptions = Highcharts.setOptions(Highcharts.theme);
@@ -0,0 +1,81 @@
1
+ window.Chart = {
2
+ make_chart_from_ajax_call: function(form, chartdiv) {
3
+ return $.get(form.attr("data-ajax-url"), form.serialize(), function(data, state, xhr) {
4
+ if (!data) {
5
+ data = {
6
+ x: [],
7
+ y: []
8
+ };
9
+ }
10
+ if (Chart.options.xAxis) {
11
+ Chart.options.xAxis.categories = data.x;
12
+ Chart.options.xAxis.labels.step = Chart.get_step(data.x, chartdiv);
13
+ }
14
+ Chart.options.series = data.y;
15
+ if (Chart.options.plotOptions.series) {
16
+ Chart.options.plotOptions.series.marker.enabled = Chart.show_marker(data.x, chartdiv);
17
+ }
18
+ return new Highcharts.Chart(Chart.options);
19
+ });
20
+ },
21
+ show_marker: function(categories, chartdiv) {
22
+ var width;
23
+ width = $("#" + chartdiv).width() - 150;
24
+ return !(width / categories.length <= 35);
25
+ },
26
+ get_step: function(categories, chartdiv) {
27
+ var i, max_label_width, max_labels, ret, width;
28
+ width = $("#" + chartdiv).width() - 150;
29
+ max_label_width = 120;
30
+ max_labels = Math.floor(width / max_label_width);
31
+ return Math.floor((categories.length / max_labels) * 2);
32
+ }
33
+ };
34
+
35
+ $(function(){
36
+ var chart;
37
+ Chart.options = {
38
+ chart: {
39
+ renderTo: 'chartdiv',
40
+ type: 'spline'
41
+ },
42
+ title: {
43
+ text: "" + ($('.page-title').html())
44
+ },
45
+ xAxis: {
46
+ categories: [],
47
+ labels: {
48
+ step: 1
49
+ }
50
+ },
51
+ yAxis: {
52
+ title: {
53
+ text: ""
54
+ }
55
+ },
56
+ tooltip: {
57
+ crosshairs: true,
58
+ shared: true
59
+ },
60
+ plotOptions: {
61
+ spline: {
62
+ marker: {
63
+ radius: 4,
64
+ lineColor: '#666666',
65
+ lineWidth: 1
66
+ }
67
+ },
68
+ series: {
69
+ marker: {
70
+ enabled: true
71
+ },
72
+ }
73
+ },
74
+ series: []
75
+ };
76
+
77
+ chart = Chart.make_chart_from_ajax_call($("form[data-chart=chartdiv]"), "chartdiv");
78
+
79
+ $(".date").datepicker()
80
+ })
81
+