fluentd-ui 0.1.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.

Potentially problematic release.


This version of fluentd-ui might be problematic. Click here for more details.

Files changed (320) hide show
  1. checksums.yaml +7 -0
  2. data/.bowerrc +3 -0
  3. data/.gitignore +31 -0
  4. data/.rspec +1 -0
  5. data/ChangeLog +3 -0
  6. data/Gemfile +21 -0
  7. data/Gemfile.lock +247 -0
  8. data/Gemfile.production +3 -0
  9. data/README.md +53 -0
  10. data/Rakefile +8 -0
  11. data/app/assets/images/.keep +0 -0
  12. data/app/assets/javascripts/alert.js +51 -0
  13. data/app/assets/javascripts/application.js +22 -0
  14. data/app/assets/javascripts/nested_setting.js +41 -0
  15. data/app/assets/javascripts/setting_format.js +15 -0
  16. data/app/assets/javascripts/tutorial.js +58 -0
  17. data/app/assets/javascripts/vue/fluent_log.js +64 -0
  18. data/app/assets/javascripts/vue/in_tail_format.js +153 -0
  19. data/app/assets/javascripts/vue/treeview.js +97 -0
  20. data/app/assets/javascripts/vue_common.js +4 -0
  21. data/app/assets/stylesheets/application.css +18 -0
  22. data/app/assets/stylesheets/common.css.scss +152 -0
  23. data/app/controllers/api_controller.rb +37 -0
  24. data/app/controllers/application_controller.rb +110 -0
  25. data/app/controllers/concerns/.keep +0 -0
  26. data/app/controllers/fluentd/agents_controller.rb +35 -0
  27. data/app/controllers/fluentd/settings/in_syslog_controller.rb +34 -0
  28. data/app/controllers/fluentd/settings/in_tail_controller.rb +57 -0
  29. data/app/controllers/fluentd/settings/out_forward_controller.rb +42 -0
  30. data/app/controllers/fluentd/settings/out_mongo_controller.rb +36 -0
  31. data/app/controllers/fluentd/settings/out_s3_controller.rb +36 -0
  32. data/app/controllers/fluentd/settings/out_td_controller.rb +36 -0
  33. data/app/controllers/fluentd/settings_controller.rb +18 -0
  34. data/app/controllers/fluentd_controller.rb +62 -0
  35. data/app/controllers/misc_controller.rb +69 -0
  36. data/app/controllers/plugins_controller.rb +44 -0
  37. data/app/controllers/polling_controller.rb +20 -0
  38. data/app/controllers/sessions_controller.rb +45 -0
  39. data/app/controllers/tutorials_controller.rb +40 -0
  40. data/app/controllers/users_controller.rb +28 -0
  41. data/app/controllers/welcome_controller.rb +5 -0
  42. data/app/helpers/application_helper.rb +55 -0
  43. data/app/helpers/fluentd/settings_helper.rb +2 -0
  44. data/app/helpers/miscs_helper.rb +2 -0
  45. data/app/helpers/settings_helper.rb +43 -0
  46. data/app/mailers/.keep +0 -0
  47. data/app/models/.keep +0 -0
  48. data/app/models/concerns/.keep +0 -0
  49. data/app/models/fluentd.rb +178 -0
  50. data/app/models/fluentd/agent.rb +28 -0
  51. data/app/models/fluentd/agent/common.rb +76 -0
  52. data/app/models/fluentd/agent/configuration.rb +35 -0
  53. data/app/models/fluentd/agent/fluentd_gem.rb +104 -0
  54. data/app/models/fluentd/agent/local_common.rb +101 -0
  55. data/app/models/fluentd/agent/remote.rb +7 -0
  56. data/app/models/fluentd/agent/td_agent.rb +44 -0
  57. data/app/models/fluentd/api.rb +6 -0
  58. data/app/models/fluentd/api/http.rb +26 -0
  59. data/app/models/fluentd/setting.rb +4 -0
  60. data/app/models/fluentd/setting/common.rb +185 -0
  61. data/app/models/fluentd/setting/in_syslog.rb +16 -0
  62. data/app/models/fluentd/setting/in_tail.rb +107 -0
  63. data/app/models/fluentd/setting/out_forward.rb +70 -0
  64. data/app/models/fluentd/setting/out_mongo.rb +35 -0
  65. data/app/models/fluentd/setting/out_s3.rb +29 -0
  66. data/app/models/fluentd/setting/out_td.rb +26 -0
  67. data/app/models/plugin.rb +193 -0
  68. data/app/models/settings.rb +4 -0
  69. data/app/models/user.rb +52 -0
  70. data/app/views/fluentd/_form.html.haml +31 -0
  71. data/app/views/fluentd/edit.html.haml +3 -0
  72. data/app/views/fluentd/errors.html.haml +19 -0
  73. data/app/views/fluentd/log.html.haml +9 -0
  74. data/app/views/fluentd/new.html.haml +3 -0
  75. data/app/views/fluentd/settings/_form.html.haml +43 -0
  76. data/app/views/fluentd/settings/edit.html.haml +7 -0
  77. data/app/views/fluentd/settings/in_syslog/_form.html.haml +9 -0
  78. data/app/views/fluentd/settings/in_syslog/show.html.haml +6 -0
  79. data/app/views/fluentd/settings/in_tail/_form.html.haml +42 -0
  80. data/app/views/fluentd/settings/in_tail/after_file_choose.html.haml +19 -0
  81. data/app/views/fluentd/settings/in_tail/after_format.html.haml +10 -0
  82. data/app/views/fluentd/settings/in_tail/confirm.html.haml +13 -0
  83. data/app/views/fluentd/settings/in_tail/show.html.haml +5 -0
  84. data/app/views/fluentd/settings/out_forward/_form.html.haml +22 -0
  85. data/app/views/fluentd/settings/out_forward/show.html.haml +6 -0
  86. data/app/views/fluentd/settings/out_mongo/_form.html.haml +30 -0
  87. data/app/views/fluentd/settings/out_mongo/finish.html.haml +4 -0
  88. data/app/views/fluentd/settings/out_mongo/show.html.haml +6 -0
  89. data/app/views/fluentd/settings/out_s3/_form.html.haml +39 -0
  90. data/app/views/fluentd/settings/out_s3/show.html.haml +6 -0
  91. data/app/views/fluentd/settings/out_td/_form.html.haml +18 -0
  92. data/app/views/fluentd/settings/out_td/show.html.haml +6 -0
  93. data/app/views/fluentd/settings/show.html.haml +10 -0
  94. data/app/views/fluentd/settings/source_and_output.html.haml +45 -0
  95. data/app/views/fluentd/show.html.haml +60 -0
  96. data/app/views/layouts/application.html.erb +102 -0
  97. data/app/views/layouts/sign_in.html.erb +28 -0
  98. data/app/views/misc/information.html.haml +75 -0
  99. data/app/views/misc/update_fluentd_ui.html.haml +45 -0
  100. data/app/views/plugins/installed.html.haml +67 -0
  101. data/app/views/plugins/recommended.html.haml +59 -0
  102. data/app/views/plugins/updated.html.haml +29 -0
  103. data/app/views/sessions/new.html.haml +13 -0
  104. data/app/views/shared/_error.html.haml +3 -0
  105. data/app/views/shared/_flash.html.haml +10 -0
  106. data/app/views/shared/_fluentd_nav.html.haml +12 -0
  107. data/app/views/shared/_global_nav.html.erb +80 -0
  108. data/app/views/shared/_initial_setup.html.haml +13 -0
  109. data/app/views/shared/_modal.html.erb +25 -0
  110. data/app/views/shared/_setting_errors.html.haml +5 -0
  111. data/app/views/shared/vue/_fluent_log.html.erb +25 -0
  112. data/app/views/shared/vue/_in_tail_format.html.erb +53 -0
  113. data/app/views/shared/vue/_treeview.html.erb +30 -0
  114. data/app/views/tutorials/chapter1.html.erb +31 -0
  115. data/app/views/tutorials/chapter2.html.haml +12 -0
  116. data/app/views/tutorials/chapter3.html.haml +12 -0
  117. data/app/views/tutorials/chapter4.html.haml +12 -0
  118. data/app/views/tutorials/chapter5.html.haml +10 -0
  119. data/app/views/tutorials/index.html.haml +26 -0
  120. data/app/views/users/show.html.haml +22 -0
  121. data/app/workers/all_plugin_check_update.rb +14 -0
  122. data/app/workers/fluentd_ui_restart.rb +41 -0
  123. data/app/workers/fluentd_ui_update_check.rb +15 -0
  124. data/app/workers/gem_installer.rb +17 -0
  125. data/app/workers/gem_uninstaller.rb +15 -0
  126. data/app/workers/gem_update_check.rb +10 -0
  127. data/bin/bundle +3 -0
  128. data/bin/fluentd-ui +13 -0
  129. data/bin/fluentd-ui-restart +12 -0
  130. data/bin/rails +8 -0
  131. data/bin/rake +8 -0
  132. data/bin/spring +18 -0
  133. data/bower.json +10 -0
  134. data/circle.yml +8 -0
  135. data/config.ru +4 -0
  136. data/config/application.rb +48 -0
  137. data/config/application.yml +211 -0
  138. data/config/boot.rb +4 -0
  139. data/config/environment.rb +5 -0
  140. data/config/environments/development.rb +36 -0
  141. data/config/environments/production.rb +69 -0
  142. data/config/environments/test.rb +40 -0
  143. data/config/initializers/backtrace_silencers.rb +7 -0
  144. data/config/initializers/cookies_serializer.rb +3 -0
  145. data/config/initializers/filter_parameter_logging.rb +4 -0
  146. data/config/initializers/inflections.rb +16 -0
  147. data/config/initializers/mime_types.rb +4 -0
  148. data/config/initializers/prefetch_gem_updates.rb +1 -0
  149. data/config/initializers/session_store.rb +3 -0
  150. data/config/initializers/wrap_parameters.rb +14 -0
  151. data/config/locales/en.yml +204 -0
  152. data/config/locales/ja.yml +194 -0
  153. data/config/locales/translation_en.yml +255 -0
  154. data/config/locales/translation_ja.yml +255 -0
  155. data/config/locales/tutorial_en.yml +117 -0
  156. data/config/locales/tutorial_ja.yml +120 -0
  157. data/config/routes.rb +93 -0
  158. data/config/secrets.yml +22 -0
  159. data/db/schema.rb +0 -0
  160. data/db/seeds.rb +11 -0
  161. data/fluentd-ui-ss01.png +0 -0
  162. data/fluentd-ui-ss02.png +0 -0
  163. data/fluentd-ui-ss03.png +0 -0
  164. data/fluentd-ui-ss04.png +0 -0
  165. data/fluentd-ui-ss05.png +0 -0
  166. data/fluentd-ui.gemspec +46 -0
  167. data/lib/assets/.keep +0 -0
  168. data/lib/file_reverse_reader.rb +56 -0
  169. data/lib/fluentd-ui.rb +22 -0
  170. data/lib/fluentd-ui/command.rb +52 -0
  171. data/lib/fluentd-ui/version.rb +3 -0
  172. data/lib/grok_converter.rb +39 -0
  173. data/lib/regexp_preview.rb +48 -0
  174. data/lib/tasks/.keep +0 -0
  175. data/lib/treeview.rb +45 -0
  176. data/log/.keep +0 -0
  177. data/public/404.html +67 -0
  178. data/public/422.html +67 -0
  179. data/public/500.html +66 -0
  180. data/public/favicon.ico +0 -0
  181. data/public/fluentd-logo-right-text.png +0 -0
  182. data/public/fluentd-logo.png +0 -0
  183. data/public/fluentd.png +0 -0
  184. data/public/robots.txt +5 -0
  185. data/spec/controllers/plugins_controller_spec.rb +5 -0
  186. data/spec/controllers/polling_controller_spec.rb +5 -0
  187. data/spec/controllers/sessions_controller_spec.rb +5 -0
  188. data/spec/controllers/tutorials_controller_spec.rb +5 -0
  189. data/spec/factories/fluentd.rb +11 -0
  190. data/spec/factories/plugins.rb +8 -0
  191. data/spec/factories/user.rb +6 -0
  192. data/spec/features/fluentd/setting/out_forward_spec.rb +45 -0
  193. data/spec/features/fluentd/setting/out_td_spec.rb +35 -0
  194. data/spec/features/sessions_spec.rb +55 -0
  195. data/spec/features/shared_examples/login_required.rb +4 -0
  196. data/spec/features/users_spec.rb +9 -0
  197. data/spec/grok_converter_spec.rb +50 -0
  198. data/spec/lib/file_reverse_reader_spec.rb +73 -0
  199. data/spec/lib/fluentd-ui_spec.rb +35 -0
  200. data/spec/models/fluentd/agent_spec.rb +91 -0
  201. data/spec/models/fluentd/setting/common_spec.rb +178 -0
  202. data/spec/models/fluentd/setting/in_syslog_spec.rb +35 -0
  203. data/spec/models/fluentd/setting/out_mongo_spec.rb +40 -0
  204. data/spec/models/fluentd/setting/out_td_spec.rb +38 -0
  205. data/spec/models/fluentd_spec.rb +166 -0
  206. data/spec/models/plugin_spec.rb +191 -0
  207. data/spec/models/user_spec.rb +15 -0
  208. data/spec/spec_helper.rb +58 -0
  209. data/spec/support/fixtures/error0.log +12 -0
  210. data/spec/support/fixtures/error2.log +130 -0
  211. data/spec/support/fluentd_agent_common_behavior.rb +114 -0
  212. data/spec/support/fluentd_agent_restart_strategy.rb +94 -0
  213. data/tmp/.gitkeep +0 -0
  214. data/vendor/assets/javascripts/.keep +0 -0
  215. data/vendor/assets/javascripts/bower/es6-promise/.bower.json +15 -0
  216. data/vendor/assets/javascripts/bower/es6-promise/bower.json +5 -0
  217. data/vendor/assets/javascripts/bower/es6-promise/promise.js +684 -0
  218. data/vendor/assets/javascripts/bower/es6-promise/promise.min.js +1 -0
  219. data/vendor/assets/javascripts/bower/lodash/.bower.json +33 -0
  220. data/vendor/assets/javascripts/bower/lodash/LICENSE.txt +22 -0
  221. data/vendor/assets/javascripts/bower/lodash/bower.json +23 -0
  222. data/vendor/assets/javascripts/bower/lodash/dist/lodash.compat.js +7157 -0
  223. data/vendor/assets/javascripts/bower/lodash/dist/lodash.compat.min.js +61 -0
  224. data/vendor/assets/javascripts/bower/lodash/dist/lodash.js +6785 -0
  225. data/vendor/assets/javascripts/bower/lodash/dist/lodash.min.js +56 -0
  226. data/vendor/assets/javascripts/bower/lodash/dist/lodash.underscore.js +4979 -0
  227. data/vendor/assets/javascripts/bower/lodash/dist/lodash.underscore.min.js +39 -0
  228. data/vendor/assets/javascripts/bower/vue/.bower.json +29 -0
  229. data/vendor/assets/javascripts/bower/vue/LICENSE +21 -0
  230. data/vendor/assets/javascripts/bower/vue/dist/vue.js +4713 -0
  231. data/vendor/assets/javascripts/bower/vue/dist/vue.min.js +7 -0
  232. data/vendor/assets/javascripts/bower/vue/src/batcher.js +45 -0
  233. data/vendor/assets/javascripts/bower/vue/src/binding.js +103 -0
  234. data/vendor/assets/javascripts/bower/vue/src/compiler.js +1037 -0
  235. data/vendor/assets/javascripts/bower/vue/src/config.js +19 -0
  236. data/vendor/assets/javascripts/bower/vue/src/deps-parser.js +65 -0
  237. data/vendor/assets/javascripts/bower/vue/src/directive.js +258 -0
  238. data/vendor/assets/javascripts/bower/vue/src/directives/html.js +41 -0
  239. data/vendor/assets/javascripts/bower/vue/src/directives/if.js +56 -0
  240. data/vendor/assets/javascripts/bower/vue/src/directives/index.js +129 -0
  241. data/vendor/assets/javascripts/bower/vue/src/directives/model.js +174 -0
  242. data/vendor/assets/javascripts/bower/vue/src/directives/on.js +56 -0
  243. data/vendor/assets/javascripts/bower/vue/src/directives/partial.js +50 -0
  244. data/vendor/assets/javascripts/bower/vue/src/directives/repeat.js +246 -0
  245. data/vendor/assets/javascripts/bower/vue/src/directives/style.js +40 -0
  246. data/vendor/assets/javascripts/bower/vue/src/directives/view.js +56 -0
  247. data/vendor/assets/javascripts/bower/vue/src/directives/with.js +50 -0
  248. data/vendor/assets/javascripts/bower/vue/src/emitter.js +97 -0
  249. data/vendor/assets/javascripts/bower/vue/src/exp-parser.js +190 -0
  250. data/vendor/assets/javascripts/bower/vue/src/filters.js +190 -0
  251. data/vendor/assets/javascripts/bower/vue/src/fragment.js +84 -0
  252. data/vendor/assets/javascripts/bower/vue/src/main.js +186 -0
  253. data/vendor/assets/javascripts/bower/vue/src/observer.js +446 -0
  254. data/vendor/assets/javascripts/bower/vue/src/text-parser.js +96 -0
  255. data/vendor/assets/javascripts/bower/vue/src/transition.js +228 -0
  256. data/vendor/assets/javascripts/bower/vue/src/utils.js +321 -0
  257. data/vendor/assets/javascripts/bower/vue/src/viewmodel.js +180 -0
  258. data/vendor/assets/javascripts/sb-admin-v2/bootstrap.js +1951 -0
  259. data/vendor/assets/javascripts/sb-admin-v2/bootstrap.min.js +6 -0
  260. data/vendor/assets/javascripts/sb-admin-v2/demo/dashboard-demo.js +117 -0
  261. data/vendor/assets/javascripts/sb-admin-v2/demo/flot-demo.js +1242 -0
  262. data/vendor/assets/javascripts/sb-admin-v2/demo/morris-demo.js +155 -0
  263. data/vendor/assets/javascripts/sb-admin-v2/jquery-1.10.2.js +6 -0
  264. data/vendor/assets/javascripts/sb-admin-v2/plugins/dataTables/dataTables.bootstrap.js +245 -0
  265. data/vendor/assets/javascripts/sb-admin-v2/plugins/dataTables/jquery.dataTables.js +14013 -0
  266. data/vendor/assets/javascripts/sb-admin-v2/plugins/flot/excanvas.min.js +1 -0
  267. data/vendor/assets/javascripts/sb-admin-v2/plugins/flot/jquery.flot.js +2599 -0
  268. data/vendor/assets/javascripts/sb-admin-v2/plugins/flot/jquery.flot.pie.js +750 -0
  269. data/vendor/assets/javascripts/sb-admin-v2/plugins/flot/jquery.flot.resize.js +60 -0
  270. data/vendor/assets/javascripts/sb-admin-v2/plugins/flot/jquery.flot.tooltip.min.js +12 -0
  271. data/vendor/assets/javascripts/sb-admin-v2/plugins/metisMenu/jquery.metisMenu.js +45 -0
  272. data/vendor/assets/javascripts/sb-admin-v2/plugins/morris/morris.js +1888 -0
  273. data/vendor/assets/javascripts/sb-admin-v2/plugins/morris/raphael-2.1.0.min.js +10 -0
  274. data/vendor/assets/javascripts/sb-admin-v2/sb-admin.js +18 -0
  275. data/vendor/assets/stylesheets/.keep +0 -0
  276. data/vendor/assets/stylesheets/sb-admin-v2/bootstrap.css +5830 -0
  277. data/vendor/assets/stylesheets/sb-admin-v2/bootstrap.min.css +7 -0
  278. data/vendor/assets/stylesheets/sb-admin-v2/font-awesome/css/font-awesome.css +1338 -0
  279. data/vendor/assets/stylesheets/sb-admin-v2/font-awesome/css/font-awesome.min.css +4 -0
  280. data/vendor/assets/stylesheets/sb-admin-v2/font-awesome/fonts/FontAwesome.otf +0 -0
  281. data/vendor/assets/stylesheets/sb-admin-v2/font-awesome/fonts/fontawesome-webfont.eot +0 -0
  282. data/vendor/assets/stylesheets/sb-admin-v2/font-awesome/fonts/fontawesome-webfont.svg +414 -0
  283. data/vendor/assets/stylesheets/sb-admin-v2/font-awesome/fonts/fontawesome-webfont.ttf +0 -0
  284. data/vendor/assets/stylesheets/sb-admin-v2/font-awesome/fonts/fontawesome-webfont.woff +0 -0
  285. data/vendor/assets/stylesheets/sb-admin-v2/font-awesome/scss/_bordered-pulled.scss +16 -0
  286. data/vendor/assets/stylesheets/sb-admin-v2/font-awesome/scss/_core.scss +12 -0
  287. data/vendor/assets/stylesheets/sb-admin-v2/font-awesome/scss/_fixed-width.scss +6 -0
  288. data/vendor/assets/stylesheets/sb-admin-v2/font-awesome/scss/_icons.scss +412 -0
  289. data/vendor/assets/stylesheets/sb-admin-v2/font-awesome/scss/_larger.scss +13 -0
  290. data/vendor/assets/stylesheets/sb-admin-v2/font-awesome/scss/_list.scss +19 -0
  291. data/vendor/assets/stylesheets/sb-admin-v2/font-awesome/scss/_mixins.scss +20 -0
  292. data/vendor/assets/stylesheets/sb-admin-v2/font-awesome/scss/_path.scss +14 -0
  293. data/vendor/assets/stylesheets/sb-admin-v2/font-awesome/scss/_rotated-flipped.scss +9 -0
  294. data/vendor/assets/stylesheets/sb-admin-v2/font-awesome/scss/_spinning.scss +30 -0
  295. data/vendor/assets/stylesheets/sb-admin-v2/font-awesome/scss/_stacked.scss +20 -0
  296. data/vendor/assets/stylesheets/sb-admin-v2/font-awesome/scss/_variables.scss +381 -0
  297. data/vendor/assets/stylesheets/sb-admin-v2/font-awesome/scss/font-awesome.scss +17 -0
  298. data/vendor/assets/stylesheets/sb-admin-v2/fonts/glyphicons-halflings-regular.eot +0 -0
  299. data/vendor/assets/stylesheets/sb-admin-v2/fonts/glyphicons-halflings-regular.svg +229 -0
  300. data/vendor/assets/stylesheets/sb-admin-v2/fonts/glyphicons-halflings-regular.ttf +0 -0
  301. data/vendor/assets/stylesheets/sb-admin-v2/fonts/glyphicons-halflings-regular.woff +0 -0
  302. data/vendor/assets/stylesheets/sb-admin-v2/plugins/dataTables/dataTables.bootstrap.css +233 -0
  303. data/vendor/assets/stylesheets/sb-admin-v2/plugins/morris/morris-0.4.3.min.css +2 -0
  304. data/vendor/assets/stylesheets/sb-admin-v2/plugins/social-buttons/social-buttons.css +68 -0
  305. data/vendor/assets/stylesheets/sb-admin-v2/plugins/timeline/timeline.css +144 -0
  306. data/vendor/assets/stylesheets/sb-admin-v2/sb-admin.css +329 -0
  307. data/vendor/patterns/firewalls +60 -0
  308. data/vendor/patterns/grok-patterns +94 -0
  309. data/vendor/patterns/haproxy +37 -0
  310. data/vendor/patterns/java +3 -0
  311. data/vendor/patterns/junos +9 -0
  312. data/vendor/patterns/linux-syslog +16 -0
  313. data/vendor/patterns/mcollective +1 -0
  314. data/vendor/patterns/mcollective-patterns +4 -0
  315. data/vendor/patterns/mongodb +4 -0
  316. data/vendor/patterns/nagios +108 -0
  317. data/vendor/patterns/postgresql +3 -0
  318. data/vendor/patterns/redis +3 -0
  319. data/vendor/patterns/ruby +2 -0
  320. metadata +659 -0
@@ -0,0 +1,152 @@
1
+ table {
2
+ // mainly for /misc/information page
3
+ td {
4
+ word-wrap: break-word;
5
+ word-break: break-all;
6
+ }
7
+ td:first-child {
8
+ white-space: nowrap;
9
+ }
10
+ }
11
+
12
+ // mainly for sidebar navigation
13
+ .nav {
14
+ .current {
15
+ color: #000;
16
+ font-weight: bold;
17
+ }
18
+ }
19
+
20
+
21
+ // visualize clickable area
22
+ label {
23
+ cursor: pointer;
24
+ }
25
+
26
+
27
+ #page-wrapper {
28
+ padding-bottom: 2em;
29
+ }
30
+
31
+
32
+ // expand alert area width
33
+ .navbar-top-links .dropdown-messages,
34
+ .navbar-top-links .dropdown-tasks,
35
+ .navbar-top-links .dropdown-alerts {
36
+ // width: 310px;
37
+ width: 400px;
38
+ min-width: 0;
39
+ }
40
+
41
+
42
+
43
+ #alert {
44
+ .nothing {
45
+ padding: 1em 0;
46
+ }
47
+ }
48
+
49
+ // search field for DataTable to the right
50
+ .dataTables_filter {
51
+ float: right;
52
+ }
53
+
54
+
55
+
56
+
57
+ #fluent-log {
58
+ pre .log {
59
+ max-height: 43em; // 30em * 1.42(line-height) = 42.6
60
+ overflow: auto;
61
+ }
62
+ }
63
+
64
+
65
+
66
+ #treeview {
67
+ .tree {
68
+ background-color: #f5f5f5;
69
+ border: 1px solid #ccc;
70
+ padding: 1ex;
71
+ height: 40em;
72
+ overflow-y: auto;
73
+ }
74
+ .preview {
75
+ margin-top: 1em;
76
+ }
77
+ .vue-path {
78
+ cursor: pointer;
79
+ display: block;
80
+ height: 1.4em;
81
+
82
+ &:hover {
83
+ background-color: #d9d9d9;
84
+ }
85
+ &.selected {
86
+ background-color: #9cf;
87
+ }
88
+ .fa-folder, .fa-folder-open {
89
+ color: #69f;
90
+ }
91
+ }
92
+ .dirs {
93
+ padding: 1ex 0;
94
+ .dir {
95
+ background: #f9f9f9;
96
+ border: 1px solid #ccc;
97
+ padding: 0 1ex;
98
+ margin: 0 1ex;
99
+ cursor: pointer;
100
+
101
+ &:hover {
102
+ background-color: #e0e0ff;
103
+ }
104
+
105
+ &:first-child {
106
+ margin-left: 0;
107
+ }
108
+ }
109
+ .fa-caret-right {
110
+ color: #bbb;
111
+ }
112
+ }
113
+ }
114
+
115
+ *[data-toggle="collapse"] {
116
+ cursor: pointer;
117
+ }
118
+
119
+
120
+
121
+ .ignore-rails-error-div {
122
+ .field_with_errors {
123
+ display: inline;
124
+ }
125
+ }
126
+
127
+ .form-group {
128
+ .form-group {
129
+ margin-left: 30px; // used at fluentd/settings/out_forward, nested config form
130
+ }
131
+ }
132
+
133
+ .fluentd-setting-inout {
134
+ .arrow-right {
135
+ text-align: center;
136
+ font-size: 36px;
137
+ padding-top: 64px;
138
+ }
139
+ }
140
+
141
+ .fluentd-ui-logo {
142
+ padding: 0;
143
+ img {
144
+ height: 50px;
145
+ }
146
+ }
147
+
148
+
149
+
150
+ .nav > li > a.section {
151
+ color: #777;
152
+ }
@@ -0,0 +1,37 @@
1
+ class ApiController < ApplicationController
2
+ def tree
3
+ render json: Treeview.tree(params[:path])
4
+ end
5
+
6
+ def file_preview
7
+ file = params[:file]
8
+ unless File.exists?(file)
9
+ return render json: [], status: 404
10
+ end
11
+ unless File.file?(file) && File.readable?(file)
12
+ return render json: [], status: 403
13
+ end
14
+ render json: file_tail(file) || []
15
+ end
16
+
17
+ def empty_json
18
+ render json: []
19
+ end
20
+
21
+ def regexp_preview
22
+ preview = RegexpPreview.new(params[:file], params[:format], regexp: params[:regexp], time_format: params[:time_format])
23
+ matches = preview.matches
24
+ render json: {
25
+ regexp: preview.regexp.try(:source),
26
+ time_format: preview.time_format,
27
+ matches: matches.compact,
28
+ }
29
+ end
30
+
31
+ def grok_to_regexp
32
+ grok = GrokConverter.new
33
+ grok.load_patterns
34
+ render text: grok.convert_to_regexp(params[:grok_str]).source
35
+ end
36
+ end
37
+
@@ -0,0 +1,110 @@
1
+ class ApplicationController < ActionController::Base
2
+ # Prevent CSRF attacks by raising an exception.
3
+ # For APIs, you may want to use :null_session instead.
4
+ protect_from_forgery with: :exception
5
+ helper_method :current_user
6
+ helper_method :current_locale
7
+ helper_method :installing_gem?, :installing_gems, :uninstalling_gem?, :uninstalling_gems
8
+ helper_method :fluentd_ui_title, :fluentd_ui_brand, :fluentd_run_user
9
+ helper_method :file_tail
10
+ helper_method :fluentd_exists?
11
+ before_action :login_required
12
+ before_action :set_locale
13
+ before_action :notice_new_fluentd_ui_available
14
+
15
+ private
16
+
17
+ def current_user
18
+ return unless session[:succeed_password]
19
+ # NOTE: if hashed password is invalid or broken, .authenticate would raise error. Using `try` is avoid that situation
20
+ @current_user ||= User.new(name: "admin").try(:authenticate, session[:succeed_password])
21
+ end
22
+
23
+ def login_required
24
+ return true if current_user
25
+ if request.xhr?
26
+ render nothing: true, status: 401
27
+ else
28
+ redirect_to new_sessions_path
29
+ end
30
+ end
31
+
32
+ def current_locale
33
+ I18n.locale
34
+ end
35
+
36
+ def fluentd_ui_title
37
+ ENV["FLUENTD_UI_TITLE"] || "Fluentd UI"
38
+ end
39
+
40
+ def fluentd_ui_brand
41
+ ENV["FLUENTD_UI_BRAND"] || "fluentd"
42
+ end
43
+
44
+ def fluentd_run_user
45
+ Fluentd.instance.td_agent? ? "td-agent" : ENV["USER"]
46
+ end
47
+
48
+ def installing_gem?
49
+ installing_gems.present?
50
+ end
51
+
52
+ def installing_gems
53
+ Plugin.installing
54
+ end
55
+
56
+ def uninstalling_gem?
57
+ uninstalling_gems.present?
58
+ end
59
+
60
+ def uninstalling_gems
61
+ Plugin.uninstalling
62
+ end
63
+
64
+ def fluentd_exists?
65
+ !!Fluentd.instance
66
+ end
67
+
68
+ def notice_new_fluentd_ui_available
69
+ if FluentdUI.update_available?
70
+ flash[:info] = I18n.t("messages.available_new_fluentd_ui", version: FluentdUI.latest_version, update_url: misc_information_path, title: fluentd_ui_title)
71
+ end
72
+ end
73
+
74
+ def find_fluentd
75
+ @fluentd = Fluentd.instance
76
+ end
77
+
78
+ def set_locale
79
+ available = I18n.available_locales.map(&:to_s)
80
+ if params[:lang] && available.include?(params[:lang])
81
+ session[:prefer_lang] = params[:lang]
82
+ I18n.locale = params[:lang]
83
+ return
84
+ end
85
+ if session[:prefer_lang]
86
+ I18n.locale = session[:prefer_lang]
87
+ return
88
+ end
89
+
90
+ # NOTE: ignoring q=xxx in request header for now
91
+ return if request.env["HTTP_ACCEPT_LANGUAGE"].blank?
92
+ langs = request.env["HTTP_ACCEPT_LANGUAGE"].gsub(/q=[0-9.]+/, "").gsub(";","").split(",")
93
+ prefer = langs.find {|lang| available.include?(lang) }
94
+ unless prefer
95
+ if langs.find{|lang| lang.match(/^en/)}
96
+ I18n.locale = :en
97
+ return
98
+ end
99
+ end
100
+ I18n.locale = prefer
101
+ end
102
+
103
+ def file_tail(path, limit = 10)
104
+ return unless path
105
+ return unless File.exists? path
106
+ reader = FileReverseReader.new(File.open(path))
107
+ return if reader.binary_file?
108
+ reader.tail(limit)
109
+ end
110
+ end
File without changes
@@ -0,0 +1,35 @@
1
+ class Fluentd::AgentsController < ApplicationController
2
+ before_action :find_fluentd
3
+
4
+ def start
5
+ if @fluentd.agent.start
6
+ flash[:success] = t("messages.fluentd_start_stop_delay_notice", action: t('fluentd.common.start'))
7
+ else
8
+ flash[:error] = t("messages.fluentd_start_failed", brand: fluentd_ui_title) + @fluentd.agent.log_tail(1).first
9
+ end
10
+ redirect_to daemon_path(@fluentd), status: 303 # 303 is change HTTP Verb GET
11
+ end
12
+
13
+ def stop
14
+ if @fluentd.agent.stop
15
+ flash[:success] = t("messages.fluentd_start_stop_delay_notice", action: t('fluentd.common.stop'))
16
+ else
17
+ flash[:error] = t("messages.fluentd_stop_failed", brand: fluentd_ui_title)
18
+ end
19
+ redirect_to daemon_path(@fluentd), status: 303 # 303 is change HTTP Verb GET
20
+ end
21
+
22
+ def restart
23
+ if @fluentd.agent.restart
24
+ flash[:success] = t("messages.fluentd_start_stop_delay_notice", action: t('fluentd.common.restart'))
25
+ else
26
+ flash[:error] = t("messages.fluentd_restart_failed", brand: fluentd_ui_title) + @fluentd.agent.log_tail(1).first
27
+ end
28
+ redirect_to daemon_path(@fluentd), status: 303 # 303 is change HTTP Verb GET
29
+ end
30
+
31
+ def log_tail
32
+ @logs = @fluentd.agent.log_tail(params[:limit]).reverse if @fluentd
33
+ render json: @logs
34
+ end
35
+ end
@@ -0,0 +1,34 @@
1
+ class Fluentd::Settings::InSyslogController < ApplicationController
2
+ before_action :login_required
3
+ before_action :find_fluentd
4
+
5
+ def show
6
+ @setting = Fluentd::Setting::InSyslog.new({
7
+ bind: "0.0.0.0",
8
+ port: 5140,
9
+ })
10
+ end
11
+
12
+ def finish
13
+ @setting = Fluentd::Setting::InSyslog.new(setting_params)
14
+ unless @setting.valid?
15
+ return render "show"
16
+ end
17
+
18
+ @fluentd.agent.config_append @setting.to_config
19
+ if @fluentd.agent.running?
20
+ unless @fluentd.agent.restart
21
+ @setting.errors.add(:base, @fluentd.agent.log_tail(1).first)
22
+ return render "show"
23
+ end
24
+ end
25
+ redirect_to daemon_setting_path(@fluentd)
26
+ end
27
+
28
+ private
29
+
30
+ def setting_params
31
+ params.require(:fluentd_setting_in_syslog).permit(*Fluentd::Setting::InSyslog::KEYS)
32
+ end
33
+
34
+ end
@@ -0,0 +1,57 @@
1
+ class Fluentd::Settings::InTailController < ApplicationController
2
+ before_action :login_required
3
+ before_action :find_fluentd
4
+
5
+ def after_file_choose
6
+ @setting = Fluentd::Setting::InTail.new({
7
+ :path => params[:path],
8
+ :tag => nil,
9
+ })
10
+ end
11
+
12
+ def after_format
13
+ # NOTE: pos_file form field doesn't exists before this action
14
+ attrs = setting_params
15
+ if attrs[:pos_file].blank?
16
+ attrs.merge!(pos_file: "/tmp/fluentd-#{@fluentd.id}-#{Time.now.to_i}.pos")
17
+ end
18
+ @setting = Fluentd::Setting::InTail.new(attrs)
19
+ end
20
+
21
+ def confirm
22
+ @setting = Fluentd::Setting::InTail.new(setting_params)
23
+ if params[:back]
24
+ return render :after_file_choose
25
+ end
26
+ unless @setting.valid?
27
+ return render :after_format
28
+ end
29
+ end
30
+
31
+ def finish
32
+ @setting = Fluentd::Setting::InTail.new(setting_params)
33
+ if params[:back]
34
+ return render :after_format
35
+ end
36
+
37
+ unless @setting.valid?
38
+ return render "after_format"
39
+ end
40
+
41
+ if @fluentd.agent.configuration.to_s.include?(@setting.to_conf.strip)
42
+ @setting.errors.add(:base, :duplicated_conf)
43
+ return render "after_format"
44
+ end
45
+
46
+ @fluentd.agent.config_append @setting.to_conf
47
+ @fluentd.agent.restart if @fluentd.agent.running?
48
+ redirect_to daemon_setting_path(@fluentd)
49
+ end
50
+
51
+ private
52
+
53
+ def setting_params
54
+ params.require(:setting).permit(:path, :format, :regexp, *Fluentd::Setting::InTail.known_formats, :tag, :rotate_wait, :pos_file, :read_from_head, :refresh_interval)
55
+ end
56
+
57
+ end
@@ -0,0 +1,42 @@
1
+ class Fluentd::Settings::OutForwardController < ApplicationController
2
+ before_action :login_required
3
+ before_action :find_fluentd
4
+
5
+ def show
6
+ @setting = Fluentd::Setting::OutForward.new({
7
+ secondary: {
8
+ "0" => {
9
+ type: "file",
10
+ }
11
+ }
12
+ })
13
+ end
14
+
15
+ def finish
16
+ @setting = Fluentd::Setting::OutForward.new(setting_params)
17
+ unless @setting.valid?
18
+ return render "show"
19
+ end
20
+
21
+ @fluentd.agent.config_append @setting.to_config
22
+ if @fluentd.agent.running?
23
+ unless @fluentd.agent.restart
24
+ @setting.errors.add(:base, @fluentd.agent.log_tail(1).first)
25
+ return render "show"
26
+ end
27
+ end
28
+ redirect_to daemon_setting_path(@fluentd)
29
+ end
30
+
31
+ private
32
+
33
+ def setting_params
34
+ params.require(:fluentd_setting_out_forward).permit(*Fluentd::Setting::OutForward::KEYS).merge(
35
+ params.require(:fluentd_setting_out_forward).permit(
36
+ :server => Fluentd::Setting::OutForward::Server::KEYS,
37
+ :secondary => Fluentd::Setting::OutForward::Secondary::KEYS,
38
+ ),
39
+ )
40
+ end
41
+
42
+ end