repsheet_visualizer 0.2.1 → 0.2.2

Sign up to get free protection for your applications and to get access to all the features.
Files changed (302) hide show
  1. checksums.yaml +4 -4
  2. data/.travis.yml +2 -0
  3. data/Gemfile.lock +1 -1
  4. data/lib/repsheet_visualizer/application/app.rb +13 -3
  5. data/lib/repsheet_visualizer/application/backend.rb +5 -1
  6. data/lib/repsheet_visualizer/application/public/css/application.css +64 -0
  7. data/lib/repsheet_visualizer/application/public/javascripts/application.js +10 -0
  8. data/lib/repsheet_visualizer/application/views/activity.erb +7 -5
  9. data/lib/repsheet_visualizer/application/views/actors.erb +8 -66
  10. data/lib/repsheet_visualizer/application/views/breakdown.erb +7 -25
  11. data/lib/repsheet_visualizer/application/views/whitelist.erb +82 -0
  12. data/lib/repsheet_visualizer/application/views/worldview.erb +10 -10
  13. data/lib/repsheet_visualizer/version.rb +1 -1
  14. data/redesign/actor.html +228 -0
  15. data/redesign/chart-flot.html +698 -0
  16. data/redesign/chart-morris.html +528 -0
  17. data/redesign/chart-sparkline.html +702 -0
  18. data/redesign/css/App.css +3436 -0
  19. data/redesign/css/Login.css +88 -0
  20. data/redesign/css/bootstrap.min.css +9 -0
  21. data/redesign/css/custom.css +0 -0
  22. data/redesign/css/font-awesome.min.css +395 -0
  23. data/redesign/fonts/FontAwesome.otf +0 -0
  24. data/redesign/fonts/fontawesome-webfont.eot +0 -0
  25. data/redesign/fonts/fontawesome-webfont.svg +414 -0
  26. data/redesign/fonts/fontawesome-webfont.ttf +0 -0
  27. data/redesign/fonts/fontawesome-webfont.woff +0 -0
  28. data/redesign/fonts/glyphicons-halflings-regular.eot +0 -0
  29. data/redesign/fonts/glyphicons-halflings-regular.svg +228 -0
  30. data/redesign/fonts/glyphicons-halflings-regular.ttf +0 -0
  31. data/redesign/fonts/glyphicons-halflings-regular.woff +0 -0
  32. data/redesign/form-extended.html +1052 -0
  33. data/redesign/form-regular.html +863 -0
  34. data/redesign/form-validation.html +678 -0
  35. data/redesign/img/avatars/avatar-1.jpg +0 -0
  36. data/redesign/img/avatars/avatar-2.jpg +0 -0
  37. data/redesign/img/avatars/avatar-large-1.jpg +0 -0
  38. data/redesign/img/avatars/avatar-large-2.jpg +0 -0
  39. data/redesign/img/gallery/zoom.png +0 -0
  40. data/redesign/img/jquery/handle-vertical.png +0 -0
  41. data/redesign/img/jquery/handle.png +0 -0
  42. data/redesign/img/layout/sidebar-bg.png +0 -0
  43. data/redesign/img/loaders/ajax-loader.gif +0 -0
  44. data/redesign/img/logos/logo-login.png +0 -0
  45. data/redesign/img/logos/logo.png +0 -0
  46. data/redesign/img/mockup.png +0 -0
  47. data/redesign/img/photos/blur-lg.jpg +0 -0
  48. data/redesign/img/photos/blur-sm.jpg +0 -0
  49. data/redesign/img/photos/clock-lg.jpg +0 -0
  50. data/redesign/img/photos/clock-sm.jpg +0 -0
  51. data/redesign/img/photos/lens-lg.jpg +0 -0
  52. data/redesign/img/photos/lens-sm.jpg +0 -0
  53. data/redesign/img/photos/map.png +0 -0
  54. data/redesign/img/photos/rust-lg.jpg +0 -0
  55. data/redesign/img/photos/rust-sm.jpg +0 -0
  56. data/redesign/img/pricing/label-editable.png +0 -0
  57. data/redesign/img/pricing/label-red.png +0 -0
  58. data/redesign/img/pricing/label-yellow.png +0 -0
  59. data/redesign/index.html +328 -0
  60. data/redesign/js/App.js +372 -0
  61. data/redesign/js/Login.js +17 -0
  62. data/redesign/js/demos/buttons.js +7 -0
  63. data/redesign/js/demos/calendar.js +142 -0
  64. data/redesign/js/demos/charts/flot/area.js +73 -0
  65. data/redesign/js/demos/charts/flot/chart1.js +77 -0
  66. data/redesign/js/demos/charts/flot/chart2.js +70 -0
  67. data/redesign/js/demos/charts/flot/chart3.js +71 -0
  68. data/redesign/js/demos/charts/flot/chart4.js +69 -0
  69. data/redesign/js/demos/charts/flot/donut.js +49 -0
  70. data/redesign/js/demos/charts/flot/horizontal.js +56 -0
  71. data/redesign/js/demos/charts/flot/line.js +76 -0
  72. data/redesign/js/demos/charts/flot/pie.js +50 -0
  73. data/redesign/js/demos/charts/flot/scatter.js +62 -0
  74. data/redesign/js/demos/charts/flot/stacked-area.js +86 -0
  75. data/redesign/js/demos/charts/flot/stacked-horizontal.js +60 -0
  76. data/redesign/js/demos/charts/flot/stacked-vertical.js +75 -0
  77. data/redesign/js/demos/charts/flot/vertical.js +70 -0
  78. data/redesign/js/demos/charts/morris/area.js +28 -0
  79. data/redesign/js/demos/charts/morris/bar.js +29 -0
  80. data/redesign/js/demos/charts/morris/donut.js +26 -0
  81. data/redesign/js/demos/charts/morris/line.js +30 -0
  82. data/redesign/js/demos/dashboard.js +26 -0
  83. data/redesign/js/demos/form-extended.js +61 -0
  84. data/redesign/js/demos/popups.js +16 -0
  85. data/redesign/js/demos/pricing.js +10 -0
  86. data/redesign/js/demos/sliders.js +77 -0
  87. data/redesign/js/libs/bootstrap.js +1999 -0
  88. data/redesign/js/libs/bootstrap.min.js +6 -0
  89. data/redesign/js/libs/css/ui-lightness/images/ui-bg_diagonals-thick_18_b81900_40x40.png +0 -0
  90. data/redesign/js/libs/css/ui-lightness/images/ui-bg_diagonals-thick_20_666666_40x40.png +0 -0
  91. data/redesign/js/libs/css/ui-lightness/images/ui-bg_flat_10_000000_40x100.png +0 -0
  92. data/redesign/js/libs/css/ui-lightness/images/ui-bg_glass_100_f6f6f6_1x400.png +0 -0
  93. data/redesign/js/libs/css/ui-lightness/images/ui-bg_glass_100_fdf5ce_1x400.png +0 -0
  94. data/redesign/js/libs/css/ui-lightness/images/ui-bg_glass_65_ffffff_1x400.png +0 -0
  95. data/redesign/js/libs/css/ui-lightness/images/ui-bg_gloss-wave_35_f6a828_500x100.png +0 -0
  96. data/redesign/js/libs/css/ui-lightness/images/ui-bg_highlight-soft_100_eeeeee_1x100.png +0 -0
  97. data/redesign/js/libs/css/ui-lightness/images/ui-bg_highlight-soft_75_ffe45c_1x100.png +0 -0
  98. data/redesign/js/libs/css/ui-lightness/images/ui-icons_222222_256x240.png +0 -0
  99. data/redesign/js/libs/css/ui-lightness/images/ui-icons_228ef1_256x240.png +0 -0
  100. data/redesign/js/libs/css/ui-lightness/images/ui-icons_ef8c08_256x240.png +0 -0
  101. data/redesign/js/libs/css/ui-lightness/images/ui-icons_ffd27a_256x240.png +0 -0
  102. data/redesign/js/libs/css/ui-lightness/images/ui-icons_ffffff_256x240.png +0 -0
  103. data/redesign/js/libs/css/ui-lightness/jquery-ui-1.9.2.custom.css +294 -0
  104. data/redesign/js/libs/css/ui-lightness/jquery-ui-1.9.2.custom.min.css +7 -0
  105. data/redesign/js/libs/jquery-1.9.1.min.js +5 -0
  106. data/redesign/js/libs/jquery-ui-1.9.2.custom.min.js +6 -0
  107. data/redesign/js/libs/jquery.min.map +1 -0
  108. data/redesign/js/libs/raphael-2.1.2.min.js +11 -0
  109. data/redesign/js/plugins/autosize/jquery.autosize.min.js +7 -0
  110. data/redesign/js/plugins/datatables/DT_bootstrap.js +148 -0
  111. data/redesign/js/plugins/datatables/img/Sorting icons.psd +0 -0
  112. data/redesign/js/plugins/datatables/img/back_disabled.png +0 -0
  113. data/redesign/js/plugins/datatables/img/back_enabled.png +0 -0
  114. data/redesign/js/plugins/datatables/img/back_enabled_hover.png +0 -0
  115. data/redesign/js/plugins/datatables/img/datatable-row-openclose.png +0 -0
  116. data/redesign/js/plugins/datatables/img/favicon.ico +0 -0
  117. data/redesign/js/plugins/datatables/img/forward_disabled.png +0 -0
  118. data/redesign/js/plugins/datatables/img/forward_enabled.png +0 -0
  119. data/redesign/js/plugins/datatables/img/forward_enabled_hover.png +0 -0
  120. data/redesign/js/plugins/datatables/img/sort_asc.png +0 -0
  121. data/redesign/js/plugins/datatables/img/sort_asc_disabled.png +0 -0
  122. data/redesign/js/plugins/datatables/img/sort_both.png +0 -0
  123. data/redesign/js/plugins/datatables/img/sort_desc.png +0 -0
  124. data/redesign/js/plugins/datatables/img/sort_desc_disabled.png +0 -0
  125. data/redesign/js/plugins/datatables/jquery.dataTables.min.js +155 -0
  126. data/redesign/js/plugins/datepicker/bootstrap-datepicker.js +1258 -0
  127. data/redesign/js/plugins/datepicker/datepicker.css +481 -0
  128. data/redesign/js/plugins/datepicker/less/datepicker.less +122 -0
  129. data/redesign/js/plugins/fileupload/bootstrap-fileupload.css +132 -0
  130. data/redesign/js/plugins/fileupload/bootstrap-fileupload.js +169 -0
  131. data/redesign/js/plugins/fileupload/bootstrap-fileupload.min.css +31 -0
  132. data/redesign/js/plugins/fileupload/bootstrap-fileupload.min.js +7 -0
  133. data/redesign/js/plugins/flot/jquery.flot.js +2599 -0
  134. data/redesign/js/plugins/flot/jquery.flot.orderBars.js +186 -0
  135. data/redesign/js/plugins/flot/jquery.flot.pie.js +750 -0
  136. data/redesign/js/plugins/flot/jquery.flot.resize.js +57 -0
  137. data/redesign/js/plugins/flot/jquery.flot.stack.js +184 -0
  138. data/redesign/js/plugins/flot/jquery.flot.tooltip.min.js +14 -0
  139. data/redesign/js/plugins/fullcalendar/fullcalendar.css +589 -0
  140. data/redesign/js/plugins/fullcalendar/fullcalendar.js +6110 -0
  141. data/redesign/js/plugins/fullcalendar/fullcalendar.min.js +7 -0
  142. data/redesign/js/plugins/fullcalendar/fullcalendar.print.css +32 -0
  143. data/redesign/js/plugins/fullcalendar/gcal.js +107 -0
  144. data/redesign/js/plugins/howl/howl.js +70 -0
  145. data/redesign/js/plugins/howl/howl.min.js +2 -0
  146. data/redesign/js/plugins/icheck/jquery.icheck.js +462 -0
  147. data/redesign/js/plugins/icheck/jquery.icheck.min.js +11 -0
  148. data/redesign/js/plugins/icheck/skins/all.css +61 -0
  149. data/redesign/js/plugins/icheck/skins/flat/_all.css +540 -0
  150. data/redesign/js/plugins/icheck/skins/flat/aero.css +54 -0
  151. data/redesign/js/plugins/icheck/skins/flat/aero.png +0 -0
  152. data/redesign/js/plugins/icheck/skins/flat/aero@2x.png +0 -0
  153. data/redesign/js/plugins/icheck/skins/flat/blue.css +54 -0
  154. data/redesign/js/plugins/icheck/skins/flat/blue.png +0 -0
  155. data/redesign/js/plugins/icheck/skins/flat/blue@2x.png +0 -0
  156. data/redesign/js/plugins/icheck/skins/flat/flat.css +54 -0
  157. data/redesign/js/plugins/icheck/skins/flat/flat.png +0 -0
  158. data/redesign/js/plugins/icheck/skins/flat/flat@2x.png +0 -0
  159. data/redesign/js/plugins/icheck/skins/flat/green.css +54 -0
  160. data/redesign/js/plugins/icheck/skins/flat/green.png +0 -0
  161. data/redesign/js/plugins/icheck/skins/flat/green@2x.png +0 -0
  162. data/redesign/js/plugins/icheck/skins/flat/grey.css +54 -0
  163. data/redesign/js/plugins/icheck/skins/flat/grey.png +0 -0
  164. data/redesign/js/plugins/icheck/skins/flat/grey@2x.png +0 -0
  165. data/redesign/js/plugins/icheck/skins/flat/orange.css +54 -0
  166. data/redesign/js/plugins/icheck/skins/flat/orange.png +0 -0
  167. data/redesign/js/plugins/icheck/skins/flat/orange@2x.png +0 -0
  168. data/redesign/js/plugins/icheck/skins/flat/pink.css +54 -0
  169. data/redesign/js/plugins/icheck/skins/flat/pink.png +0 -0
  170. data/redesign/js/plugins/icheck/skins/flat/pink@2x.png +0 -0
  171. data/redesign/js/plugins/icheck/skins/flat/purple.css +54 -0
  172. data/redesign/js/plugins/icheck/skins/flat/purple.png +0 -0
  173. data/redesign/js/plugins/icheck/skins/flat/purple@2x.png +0 -0
  174. data/redesign/js/plugins/icheck/skins/flat/red.css +54 -0
  175. data/redesign/js/plugins/icheck/skins/flat/red.png +0 -0
  176. data/redesign/js/plugins/icheck/skins/flat/red@2x.png +0 -0
  177. data/redesign/js/plugins/icheck/skins/flat/yellow.css +54 -0
  178. data/redesign/js/plugins/icheck/skins/flat/yellow.png +0 -0
  179. data/redesign/js/plugins/icheck/skins/flat/yellow@2x.png +0 -0
  180. data/redesign/js/plugins/icheck/skins/futurico/futurico.css +54 -0
  181. data/redesign/js/plugins/icheck/skins/futurico/futurico.png +0 -0
  182. data/redesign/js/plugins/icheck/skins/futurico/futurico@2x.png +0 -0
  183. data/redesign/js/plugins/icheck/skins/line/_all.css +740 -0
  184. data/redesign/js/plugins/icheck/skins/line/aero.css +74 -0
  185. data/redesign/js/plugins/icheck/skins/line/blue.css +74 -0
  186. data/redesign/js/plugins/icheck/skins/line/green.css +74 -0
  187. data/redesign/js/plugins/icheck/skins/line/grey.css +74 -0
  188. data/redesign/js/plugins/icheck/skins/line/line.css +74 -0
  189. data/redesign/js/plugins/icheck/skins/line/line.png +0 -0
  190. data/redesign/js/plugins/icheck/skins/line/line@2x.png +0 -0
  191. data/redesign/js/plugins/icheck/skins/line/orange.css +74 -0
  192. data/redesign/js/plugins/icheck/skins/line/pink.css +74 -0
  193. data/redesign/js/plugins/icheck/skins/line/purple.css +74 -0
  194. data/redesign/js/plugins/icheck/skins/line/red.css +74 -0
  195. data/redesign/js/plugins/icheck/skins/line/yellow.css +74 -0
  196. data/redesign/js/plugins/icheck/skins/minimal/_all.css +600 -0
  197. data/redesign/js/plugins/icheck/skins/minimal/aero.css +60 -0
  198. data/redesign/js/plugins/icheck/skins/minimal/aero.png +0 -0
  199. data/redesign/js/plugins/icheck/skins/minimal/aero@2x.png +0 -0
  200. data/redesign/js/plugins/icheck/skins/minimal/blue.css +60 -0
  201. data/redesign/js/plugins/icheck/skins/minimal/blue.png +0 -0
  202. data/redesign/js/plugins/icheck/skins/minimal/blue@2x.png +0 -0
  203. data/redesign/js/plugins/icheck/skins/minimal/green.css +60 -0
  204. data/redesign/js/plugins/icheck/skins/minimal/green.png +0 -0
  205. data/redesign/js/plugins/icheck/skins/minimal/green@2x.png +0 -0
  206. data/redesign/js/plugins/icheck/skins/minimal/grey.css +60 -0
  207. data/redesign/js/plugins/icheck/skins/minimal/grey.png +0 -0
  208. data/redesign/js/plugins/icheck/skins/minimal/grey@2x.png +0 -0
  209. data/redesign/js/plugins/icheck/skins/minimal/minimal.css +60 -0
  210. data/redesign/js/plugins/icheck/skins/minimal/minimal.png +0 -0
  211. data/redesign/js/plugins/icheck/skins/minimal/minimal@2x.png +0 -0
  212. data/redesign/js/plugins/icheck/skins/minimal/orange.css +60 -0
  213. data/redesign/js/plugins/icheck/skins/minimal/orange.png +0 -0
  214. data/redesign/js/plugins/icheck/skins/minimal/orange@2x.png +0 -0
  215. data/redesign/js/plugins/icheck/skins/minimal/pink.css +60 -0
  216. data/redesign/js/plugins/icheck/skins/minimal/pink.png +0 -0
  217. data/redesign/js/plugins/icheck/skins/minimal/pink@2x.png +0 -0
  218. data/redesign/js/plugins/icheck/skins/minimal/purple.css +60 -0
  219. data/redesign/js/plugins/icheck/skins/minimal/purple.png +0 -0
  220. data/redesign/js/plugins/icheck/skins/minimal/purple@2x.png +0 -0
  221. data/redesign/js/plugins/icheck/skins/minimal/red.css +60 -0
  222. data/redesign/js/plugins/icheck/skins/minimal/red.png +0 -0
  223. data/redesign/js/plugins/icheck/skins/minimal/red@2x.png +0 -0
  224. data/redesign/js/plugins/icheck/skins/minimal/yellow.css +60 -0
  225. data/redesign/js/plugins/icheck/skins/minimal/yellow.png +0 -0
  226. data/redesign/js/plugins/icheck/skins/minimal/yellow@2x.png +0 -0
  227. data/redesign/js/plugins/icheck/skins/polaris/polaris.css +60 -0
  228. data/redesign/js/plugins/icheck/skins/polaris/polaris.png +0 -0
  229. data/redesign/js/plugins/icheck/skins/polaris/polaris@2x.png +0 -0
  230. data/redesign/js/plugins/icheck/skins/square/_all.css +600 -0
  231. data/redesign/js/plugins/icheck/skins/square/aero.css +60 -0
  232. data/redesign/js/plugins/icheck/skins/square/aero.png +0 -0
  233. data/redesign/js/plugins/icheck/skins/square/aero@2x.png +0 -0
  234. data/redesign/js/plugins/icheck/skins/square/blue.css +60 -0
  235. data/redesign/js/plugins/icheck/skins/square/blue.png +0 -0
  236. data/redesign/js/plugins/icheck/skins/square/blue@2x.png +0 -0
  237. data/redesign/js/plugins/icheck/skins/square/green.css +60 -0
  238. data/redesign/js/plugins/icheck/skins/square/green.png +0 -0
  239. data/redesign/js/plugins/icheck/skins/square/green@2x.png +0 -0
  240. data/redesign/js/plugins/icheck/skins/square/grey.css +60 -0
  241. data/redesign/js/plugins/icheck/skins/square/grey.png +0 -0
  242. data/redesign/js/plugins/icheck/skins/square/grey@2x.png +0 -0
  243. data/redesign/js/plugins/icheck/skins/square/orange.css +60 -0
  244. data/redesign/js/plugins/icheck/skins/square/orange.png +0 -0
  245. data/redesign/js/plugins/icheck/skins/square/orange@2x.png +0 -0
  246. data/redesign/js/plugins/icheck/skins/square/pink.css +60 -0
  247. data/redesign/js/plugins/icheck/skins/square/pink.png +0 -0
  248. data/redesign/js/plugins/icheck/skins/square/pink@2x.png +0 -0
  249. data/redesign/js/plugins/icheck/skins/square/purple.css +60 -0
  250. data/redesign/js/plugins/icheck/skins/square/purple.png +0 -0
  251. data/redesign/js/plugins/icheck/skins/square/purple@2x.png +0 -0
  252. data/redesign/js/plugins/icheck/skins/square/red.css +60 -0
  253. data/redesign/js/plugins/icheck/skins/square/red.png +0 -0
  254. data/redesign/js/plugins/icheck/skins/square/red@2x.png +0 -0
  255. data/redesign/js/plugins/icheck/skins/square/square.css +60 -0
  256. data/redesign/js/plugins/icheck/skins/square/square.png +0 -0
  257. data/redesign/js/plugins/icheck/skins/square/square@2x.png +0 -0
  258. data/redesign/js/plugins/icheck/skins/square/yellow.css +60 -0
  259. data/redesign/js/plugins/icheck/skins/square/yellow.png +0 -0
  260. data/redesign/js/plugins/icheck/skins/square/yellow@2x.png +0 -0
  261. data/redesign/js/plugins/magnific/jquery.magnific-popup.js +2026 -0
  262. data/redesign/js/plugins/magnific/jquery.magnific-popup.min.js +4 -0
  263. data/redesign/js/plugins/magnific/magnific-popup.css +396 -0
  264. data/redesign/js/plugins/morris/morris.css +1 -0
  265. data/redesign/js/plugins/morris/morris.min.js +1 -0
  266. data/redesign/js/plugins/parsley/parsley.js +1363 -0
  267. data/redesign/js/plugins/select2/select2-spinner.gif +0 -0
  268. data/redesign/js/plugins/select2/select2.css +615 -0
  269. data/redesign/js/plugins/select2/select2.js +3217 -0
  270. data/redesign/js/plugins/select2/select2.min.js +22 -0
  271. data/redesign/js/plugins/select2/select2.png +0 -0
  272. data/redesign/js/plugins/select2/select2x2.png +0 -0
  273. data/redesign/js/plugins/simplecolorpicker/jquery.simplecolorpicker.css +98 -0
  274. data/redesign/js/plugins/simplecolorpicker/jquery.simplecolorpicker.js +211 -0
  275. data/redesign/js/plugins/sparkline/jquery.sparkline.min.js +5 -0
  276. data/redesign/js/plugins/tableCheckable/jquery.tableCheckable.js +122 -0
  277. data/redesign/js/plugins/textarea-counter/jquery.textarea-counter.js +163 -0
  278. data/redesign/js/plugins/timepicker/bootstrap-timepicker.css +121 -0
  279. data/redesign/js/plugins/timepicker/bootstrap-timepicker.js +893 -0
  280. data/redesign/page-404.html +446 -0
  281. data/redesign/page-500.html +453 -0
  282. data/redesign/page-blank.html +417 -0
  283. data/redesign/page-calendar.html +491 -0
  284. data/redesign/page-gallery.html +736 -0
  285. data/redesign/page-invoice.html +705 -0
  286. data/redesign/page-login-social.html +111 -0
  287. data/redesign/page-login.html +82 -0
  288. data/redesign/page-pricing.html +707 -0
  289. data/redesign/page-settings.html +665 -0
  290. data/redesign/page-support.html +825 -0
  291. data/redesign/table-advanced.html +1297 -0
  292. data/redesign/table-basic.html +777 -0
  293. data/redesign/table-responsive.html +720 -0
  294. data/redesign/ui-buttons.html +901 -0
  295. data/redesign/ui-icons.html +1392 -0
  296. data/redesign/ui-popups.html +781 -0
  297. data/redesign/ui-portlets.html +887 -0
  298. data/redesign/ui-sliders.html +520 -0
  299. data/redesign/ui-tabs.html +663 -0
  300. data/redesign/ui-typography.html +687 -0
  301. data/script/fill +5 -0
  302. metadata +292 -3
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: f98f7e61dc56515d36646dd74b76486a069ad677
4
- data.tar.gz: 6fdb7a815f6ae92361d9a5628eb20445619787ad
3
+ metadata.gz: e66122989dd33efd0d533151d9ce6b9b439f403f
4
+ data.tar.gz: 62400722beb496a4aac1f5132798bff386bd67da
5
5
  SHA512:
6
- metadata.gz: 030d9e94c181dc2c948eed48415322379537ba7a44e708732b9e3955fcba4f0ac66dafd416e17d7d6281f1fef314d0674d537ba8d62a992f65c6073b77d42fcc
7
- data.tar.gz: 9516b4fb6cb68e5ada5df76f0d7420c35f675cc1036e304f08065ffc098aed7df9e7e86641e3c04b641f2cc48c0ac96186ea0e186f7d9050dc6d1de5101a75b8
6
+ metadata.gz: 658e63336c976326bf9ec90dd6589316e622ff903a1939810ed594d8bbd2e6a78faab3b8b967ef527454faa2b7a7698d9bd75567bed9b2a03b697cfc4e89fd9f
7
+ data.tar.gz: 6a2fe22a7ca6c590fb268695049f3a5076935bfa6c23206b4e76c79a3cac0f3df0d26eb0ba4d89edacaa9bd8df99e861984a5d480a58d9546376dd7e3c83f285
@@ -2,3 +2,5 @@ language: ruby
2
2
  rvm:
3
3
  - 2.0.0
4
4
  - 1.9.3
5
+ services:
6
+ - redis-server
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- repsheet_visualizer (0.2.1)
4
+ repsheet_visualizer (0.2.2)
5
5
  geoip
6
6
  json
7
7
  redis
@@ -15,7 +15,7 @@ class RepsheetVisualizer < Sinatra::Base
15
15
  if blacklist.nil? || blacklist == "false"
16
16
  "blacklist"
17
17
  else
18
- "allow"
18
+ "whitelist"
19
19
  end
20
20
  end
21
21
 
@@ -50,6 +50,11 @@ class RepsheetVisualizer < Sinatra::Base
50
50
  erb :actors
51
51
  end
52
52
 
53
+ get '/whitelist' do
54
+ @whitelist = Backend.whitelist(redis_connection)
55
+ erb :whitelist
56
+ end
57
+
53
58
  get '/breakdown' do
54
59
  @data = Backend.breakdown(redis_connection)
55
60
  erb :breakdown
@@ -69,12 +74,17 @@ class RepsheetVisualizer < Sinatra::Base
69
74
 
70
75
  post '/action' do
71
76
  connection = redis_connection
72
- if params["action"] == "allow"
77
+ if params["action"] == "whitelist"
78
+ connection.set("#{params[:ip]}:repsheet:whitelist", "true")
73
79
  connection.del("#{params[:ip]}:repsheet:blacklist")
74
- else
80
+ connection.del("#{params[:ip]}:repsheet")
81
+ connection.del("#{params[:ip]}:detected")
82
+ connection.srem("repsheet:blacklist:history", params[:ip])
83
+ elsif params["action"] == "blacklist"
75
84
  ttl = connection.ttl("#{params[:ip]}:requests")
76
85
  connection.set("#{params[:ip]}:repsheet:blacklist", "true")
77
86
  connection.expire("#{params[:ip]}:repsheet:blacklist", ttl)
87
+ connection.del("#{params[:ip]}:repsheet:whitelist")
78
88
  end
79
89
  redirect back
80
90
  end
@@ -26,7 +26,7 @@ class Backend
26
26
 
27
27
  def self.worldview(connection, database)
28
28
  data = {}
29
- offenders = connection.keys("*:repsheet*").map {|o| o.split(":").first}
29
+ offenders = connection.keys("*:repsheet:blacklist").map {|o| o.split(":").first}
30
30
  offenders.each do |address|
31
31
  details = database.country(address)
32
32
  next if details.nil?
@@ -85,6 +85,10 @@ class Backend
85
85
  blacklisted
86
86
  end
87
87
 
88
+ def self.whitelist(connection)
89
+ connection.keys("*:*:whitelist").map {|record| record.split(":").first}.reject {|ip| ip.empty?}
90
+ end
91
+
88
92
  def self.score_actor(connection, actor, detected, optimized=false)
89
93
  return connection.zscore("offenders", "#{actor}").to_i if optimized
90
94
 
@@ -0,0 +1,64 @@
1
+ body {
2
+ padding-top: 60px; /* 60px to make the container go all the way to the bottom of the topbar */
3
+ }
4
+
5
+ #search {
6
+ float: right;
7
+ padding-top: 7px;
8
+ }
9
+
10
+ .actors {
11
+ border-color: #FFF;
12
+ }
13
+
14
+ #suspects-wrapper {
15
+ float: left;
16
+ }
17
+
18
+ #suspects-table-wrapper {
19
+ overflow: auto;
20
+ max-height: 800px;
21
+ }
22
+
23
+ #suspects {
24
+ width: 550px;
25
+ }
26
+
27
+ #blacklisted-wrapper {
28
+ float: right;
29
+ }
30
+
31
+ #blacklisted-table-wrapper {
32
+ width: 565px;
33
+ overflow: auto;
34
+ max-height: 570px;
35
+ }
36
+
37
+ #blacklisted {
38
+ width: 550px;
39
+ }
40
+
41
+ .clearfix {
42
+ display: inline-block;
43
+ clear: both;
44
+ }
45
+
46
+ .chartLabel {
47
+ font: 16px sans-serif;
48
+ fill: #666;
49
+ }
50
+
51
+ .arcLabel {
52
+ font: 10px sans-serif;
53
+ fill: #fff;
54
+ }
55
+
56
+ .announce {
57
+ font-size: 20px;
58
+ font-weight: bold;
59
+ }
60
+
61
+ svg {
62
+ display: block;
63
+ margin: auto;
64
+ }
@@ -1,8 +1,18 @@
1
1
  $(document).ready(function() {
2
2
  $("#suspects").tablesorter({sortList: [[2,1]],widgets: ['zebra']});
3
3
  $("#blacklisted").tablesorter({sortList: [[2,1]],widgets: ['zebra']});
4
+
5
+ $("#search-button").click(function() {
6
+ ip = $("#ip").val();
7
+ if (ip === "") return;
8
+ window.location = activity(ip);
9
+ });
4
10
  });
5
11
 
12
+ function activity(ip) {
13
+ return "<%= @mount %>activity/" + ip;
14
+ }
15
+
6
16
  function angle(d) {
7
17
  var a = (d.startAngle + d.endAngle) * 90 / Math.PI - 90;
8
18
  return a > 90 ? a - 180 : a;
@@ -8,12 +8,9 @@
8
8
  <meta name="author" content="Aaron Bedra">
9
9
 
10
10
  <link href="<%= @mount %>css/bootstrap.css" rel="stylesheet">
11
- <style>
12
- body {
13
- padding-top: 60px; /* 60px to make the container go all the way to the bottom of the topbar */
14
- }
15
- </style>
16
11
  <link href="<%= @mount %>css/bootstrap-responsive.css" rel="stylesheet">
12
+ <link href="<%= @mount %>css/blue/style.css" rel="stylesheet">
13
+ <link href="<%= @mount %>css/application.css" rel="stylesheet">
17
14
 
18
15
  <!-- HTML5 shim, for IE6-8 support of HTML5 elements -->
19
16
  <!--[if lt IE 9]>
@@ -35,10 +32,15 @@
35
32
  <div class="nav-collapse collapse">
36
33
  <ul class="nav">
37
34
  <li><a href="<%= @mount %>">Actors</a></li>
35
+ <li><a href="<%= @mount %>whitelist">Whitelist</a></li>
38
36
  <li><a href="<%= @mount %>breakdown">Breakdown</a></li>
39
37
  <li><a href="<%= @mount %>worldview">Worldview</a></li>
40
38
  </ul>
41
39
  </div>
40
+ <div id="search">
41
+ <input name="ip" id="ip" type="text-field" placeholder="Find Activity For an IP"/>
42
+ <input type="submit" id="search-button" value="Search"/>
43
+ </div>
42
44
  </div>
43
45
  </div>
44
46
  </div>
@@ -10,51 +10,7 @@
10
10
  <link href="<%= @mount %>css/bootstrap.css" rel="stylesheet">
11
11
  <link href="<%= @mount %>css/bootstrap-responsive.css" rel="stylesheet">
12
12
  <link href="<%= @mount %>css/blue/style.css" rel="stylesheet">
13
- <style>
14
- body {
15
- padding-top: 60px; /* 60px to make the container go all the way to the bottom of the topbar */
16
- }
17
-
18
- #search {
19
- padding-bottom: 20px;
20
- }
21
-
22
- .actors {
23
- border-color: #FFF;
24
- }
25
-
26
- #suspects-wrapper {
27
- float: left;
28
- }
29
-
30
- #suspects-table-wrapper {
31
- overflow: auto;
32
- max-height: 800px;
33
-
34
- }
35
-
36
- #suspects {
37
- width: 550px;
38
- }
39
-
40
- #blacklisted-wrapper {
41
- float: right;
42
- }
43
-
44
- #blacklisted-table-wrapper {
45
- overflow: auto;
46
- max-height: 570px;
47
- }
48
-
49
- #blacklisted {
50
- width: 550px;
51
- }
52
-
53
- .clearfix {
54
- display: inline-block;
55
- clear: both;
56
- }
57
- </style>
13
+ <link href="<%= @mount %>css/application.css" rel="stylesheet">
58
14
 
59
15
  <!-- HTML5 shim, for IE6-8 support of HTML5 elements -->
60
16
  <!--[if lt IE 9]>
@@ -66,20 +22,6 @@
66
22
  <script src="<%= @mount %>javascripts/jquery-latest.js" type="text/javascript"></script>
67
23
  <script src="<%= @mount %>javascripts/jquery.tablesorter.min.js" type="text/javascript"></script>
68
24
  <script src="<%= @mount %>javascripts/application.js" type="text/javascript"></script>
69
-
70
- <script type="text/javascript">
71
- function activity(ip) {
72
- return "<%= @mount %>activity/" + ip;
73
- }
74
-
75
- $(document).ready(function() {
76
- $("#search-button").click(function() {
77
- ip = $("#ip").val();
78
- if (ip === "") return;
79
- window.location = activity(ip);
80
- });
81
- });
82
- </script>
83
25
  </head>
84
26
 
85
27
  <body>
@@ -90,20 +32,20 @@
90
32
  <div class="nav-collapse collapse">
91
33
  <ul class="nav">
92
34
  <li class="active"><a href="<%= @mount %>">Actors</a></li>
35
+ <li><a href="<%= @mount %>whitelist">Whitelist</a></li>
93
36
  <li><a href="<%= @mount %>breakdown">Breakdown</a></li>
94
37
  <li><a href="<%= @mount %>worldview">Worldview</a></li>
95
38
  </ul>
96
39
  </div>
40
+ <div id="search">
41
+ <input name="ip" id="ip" type="text-field" placeholder="Find Activity For an IP"/>
42
+ <input type="submit" id="search-button" value="Search"/>
43
+ </div>
97
44
  </div>
98
45
  </div>
99
46
  </div>
100
47
 
101
48
  <div class="container">
102
- <div id="search">
103
- <label-for="ip"><b>Find Activity For an IP</b> </label>
104
- <input name="ip" id="ip" type="text-field"/>
105
- <input type="submit" id="search-button" value="Search"/>
106
- </div>
107
49
 
108
50
  <div id="suspects-wrapper">
109
51
  <h2>Top 10 Suspect Actors</h2>
@@ -125,7 +67,7 @@
125
67
  <td><%= details[:detected] %></td>
126
68
  <td><%= details[:total] %></td>
127
69
  <td width=100><a href="<%= @mount %>activity/<%= actor %>">Click to see activity</a>
128
- <td width=90>
70
+ <td width=90 align="center">
129
71
  <form method="post" action="<%= @mount %>action" class="button_to">
130
72
  <div>
131
73
  <input value="<%= action(actor, 'false') %>" type="submit" />
@@ -163,7 +105,7 @@
163
105
  <td><%= details[:detected] %></td>
164
106
  <td><%= details[:total] %></td>
165
107
  <td width=100><a href="<%= @mount %>activity/<%= actor %>">Click to see activity</a>
166
- <td width=70>
108
+ <td width=90 align="center">
167
109
  <form method="post" action="<%= @mount %>action" class="button_to">
168
110
  <div>
169
111
  <input value="<%= action(actor, 'true') %>" type="submit" />
@@ -8,32 +8,9 @@
8
8
  <meta name="author" content="Aaron Bedra">
9
9
 
10
10
  <link href="<%= @mount %>css/bootstrap.css" rel="stylesheet">
11
- <style>
12
- body {
13
- padding-top: 60px; /* 60px to make the container go all the way to the bottom of the topbar */
14
- }
15
-
16
- .chartLabel {
17
- font: 16px sans-serif;
18
- fill: #666;
19
- }
20
-
21
- .arcLabel {
22
- font: 10px sans-serif;
23
- fill: #fff;
24
- }
25
-
26
- .announce {
27
- font-size: 20px;
28
- font-weight: bold;
29
- }
30
-
31
- svg {
32
- display: block;
33
- margin: auto;
34
- }
35
- </style>
36
11
  <link href="<%= @mount %>css/bootstrap-responsive.css" rel="stylesheet">
12
+ <link href="<%= @mount %>css/blue/style.css" rel="stylesheet">
13
+ <link href="<%= @mount %>css/application.css" rel="stylesheet">
37
14
 
38
15
  <!-- HTML5 shim, for IE6-8 support of HTML5 elements -->
39
16
  <!--[if lt IE 9]>
@@ -54,10 +31,15 @@
54
31
  <div class="nav-collapse collapse">
55
32
  <ul class="nav">
56
33
  <li><a href="<%= @mount %>">Actors</a></li>
34
+ <li><a href="<%= @mount %>whitelist">Whitelist</a></li>
57
35
  <li class="active"><a href="<%= @mount %>breakdown">Breakdown</a></li>
58
36
  <li><a href="<%= @mount %>worldview">Worldview</a></li>
59
37
  </ul>
60
38
  </div>
39
+ <div id="search">
40
+ <input name="ip" id="ip" type="text-field" placeholder="Find Activity For an IP"/>
41
+ <input type="submit" id="search-button" value="Search"/>
42
+ </div>
61
43
  </div>
62
44
  </div>
63
45
  </div>
@@ -0,0 +1,82 @@
1
+ <!DOCTYPE html>
2
+ <html lang="en">
3
+ <head>
4
+ <meta charset="utf-8">
5
+ <title>Repsheet::Visualizer::Whitelist</title>
6
+ <meta name="viewport" content="width=device-width, initial-scale=1.0">
7
+ <meta name="description" content="">
8
+ <meta name="author" content="Aaron Bedra">
9
+
10
+ <link href="<%= @mount %>css/bootstrap.css" rel="stylesheet">
11
+ <link href="<%= @mount %>css/bootstrap-responsive.css" rel="stylesheet">
12
+ <link href="<%= @mount %>css/blue/style.css" rel="stylesheet">
13
+ <link href="<%= @mount %>css/application.css" rel="stylesheet">
14
+
15
+ <!-- HTML5 shim, for IE6-8 support of HTML5 elements -->
16
+ <!--[if lt IE 9]>
17
+ <script src="<%= @mount %>javascripts/html5shiv.js"></script>
18
+ <![endif]-->
19
+
20
+ <link rel="shortcut icon" href="<%= @mount %>images/favicon.ico">
21
+
22
+ <script src="<%= @mount %>javascripts/jquery-latest.js" type="text/javascript"></script>
23
+ <script src="<%= @mount %>javascripts/jquery.tablesorter.min.js" type="text/javascript"></script>
24
+ <script src="<%= @mount %>javascripts/application.js" type="text/javascript"></script>
25
+ </head>
26
+
27
+ <body>
28
+ <div class="navbar navbar-inverse navbar-fixed-top">
29
+ <div class="navbar-inner">
30
+ <div class="container">
31
+ <a class="brand" href="<%= @mount %>">Repsheet</a>
32
+ <div class="nav-collapse collapse">
33
+ <ul class="nav">
34
+ <li><a href="<%= @mount %>">Actors</a></li>
35
+ <li class="active"><a href="<%= @mount %>whitelist">Whitelist</a></li>
36
+ <li><a href="<%= @mount %>breakdown">Breakdown</a></li>
37
+ <li><a href="<%= @mount %>worldview">Worldview</a></li>
38
+ </ul>
39
+ </div>
40
+ <div id="search">
41
+ <input name="ip" id="ip" type="text-field" placeholder="Find Activity For an IP"/>
42
+ <input type="submit" id="search-button" value="Search"/>
43
+ </div>
44
+ </div>
45
+ </div>
46
+ </div>
47
+
48
+ <div class="container">
49
+ <div id="suspects-wrapper">
50
+ <h2>Whitelist</h2>
51
+ <div id="suspects-table-wrapper">
52
+ <table id="suspects" class="tablesorter actors">
53
+ <thead>
54
+ <tr>
55
+ <th>IP</th>
56
+ <th>Activity</th>
57
+ <th></th>
58
+ </tr>
59
+ </thead>
60
+ <tbody>
61
+ <% @whitelist.each do |actor| %>
62
+ <tr>
63
+ <td><%= actor %></td>
64
+ <td width=100><a href="<%= @mount %>activity/<%= actor %>">Click to see activity</a>
65
+ <td width=90>
66
+ <form method="post" action="<%= @mount %>action" class="button_to">
67
+ <div>
68
+ <input value="<%= action(actor, 'false') %>" type="submit" />
69
+ <input type="hidden" name="ip" value="<%= actor %>"/>
70
+ <input type="hidden" name="action" value="<%= action(actor, 'false') %>"/>
71
+ </div>
72
+ </form>
73
+ </td>
74
+ </tr>
75
+ <% end %>
76
+ </tbody>
77
+ </table>
78
+ </div>
79
+ </div>
80
+ </div>
81
+ </body>
82
+ </html>