rhoconnect 3.1.2 → 3.2.0.beta1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (248) hide show
  1. data/CHANGELOG.md +14 -2
  2. data/CREDITS +151 -10
  3. data/Gemfile +16 -5
  4. data/Gemfile.lock +58 -23
  5. data/Rakefile +70 -50
  6. data/bench/bench_runner.rb +2 -2
  7. data/bench/benchapp/Gemfile +6 -0
  8. data/bench/benchapp/Gemfile.lock +5 -0
  9. data/bench/benchapp/config.ru +2 -0
  10. data/bench/lib/bench/cli.rb +2 -0
  11. data/bench/lib/bench/distr_runner.rb +3 -2
  12. data/bench/lib/bench/runner.rb +1 -1
  13. data/bench/lib/bench.rb +10 -1
  14. data/bench/run_bench.sh +1 -1
  15. data/bench/scripts/test_query_script.rb +2 -1
  16. data/bench/spec/bench_spec_helper.rb +1 -0
  17. data/bin/rhoconnect +9 -27
  18. data/bin/rhoconnect-benchmark +10 -1
  19. data/commands/commands/dtach_commands/dtach_about.rb +6 -0
  20. data/commands/commands/dtach_commands/dtach_install.rb +30 -0
  21. data/commands/commands/redis_commands/redis_about.rb +6 -0
  22. data/commands/commands/redis_commands/redis_attach.rb +6 -0
  23. data/commands/commands/redis_commands/redis_download.rb +33 -0
  24. data/commands/commands/redis_commands/redis_install.rb +26 -0
  25. data/commands/commands/redis_commands/redis_make.rb +9 -0
  26. data/commands/commands/redis_commands/redis_restart.rb +7 -0
  27. data/commands/commands/redis_commands/redis_runner.rb +67 -0
  28. data/commands/commands/redis_commands/redis_start.rb +6 -0
  29. data/commands/commands/redis_commands/redis_startbg.rb +6 -0
  30. data/commands/commands/redis_commands/redis_stop.rb +6 -0
  31. data/commands/commands/rhoconnect/attach.rb +7 -0
  32. data/commands/commands/rhoconnect/clean_start.rb +9 -0
  33. data/commands/commands/rhoconnect/config.rb +15 -0
  34. data/commands/commands/rhoconnect/console.rb +15 -0
  35. data/commands/commands/rhoconnect/console_helper.rb +3 -0
  36. data/commands/commands/rhoconnect/create_user.rb +18 -0
  37. data/commands/commands/rhoconnect/delete_device.rb +9 -0
  38. data/commands/commands/rhoconnect/delete_user.rb +8 -0
  39. data/commands/commands/rhoconnect/flushdb.rb +14 -0
  40. data/commands/commands/rhoconnect/get_token.rb +25 -0
  41. data/commands/commands/rhoconnect/reset.rb +16 -0
  42. data/commands/commands/rhoconnect/reset_refresh.rb +11 -0
  43. data/commands/commands/rhoconnect/restart.rb +7 -0
  44. data/commands/commands/rhoconnect/secret.rb +11 -0
  45. data/commands/commands/rhoconnect/set_admin_password.rb +26 -0
  46. data/commands/commands/rhoconnect/spec.rb +15 -0
  47. data/commands/commands/rhoconnect/start.rb +18 -0
  48. data/commands/commands/rhoconnect/startbg.rb +34 -0
  49. data/commands/commands/rhoconnect/startdebug.rb +35 -0
  50. data/commands/commands/rhoconnect/stop.rb +11 -0
  51. data/commands/commands/rhoconnect/war.rb +32 -0
  52. data/commands/commands/rhoconnect/web.rb +7 -0
  53. data/commands/execute.rb +35 -0
  54. data/commands/generators/app.rb +6 -0
  55. data/commands/generators/source.rb +6 -0
  56. data/commands/utilities/dtach_installed.rb +10 -0
  57. data/doc/benchmarks-running.txt +5 -0
  58. data/doc/command-line.txt +216 -27
  59. data/doc/heroku-addon.txt +1 -1
  60. data/doc/preparing-production.txt +20 -1
  61. data/doc/public/cli.txt +191 -0
  62. data/doc/push-backend-setup.txt +148 -0
  63. data/doc/push-client-setup.txt +61 -0
  64. data/doc/push-server-setup.txt +91 -0
  65. data/doc/push.txt +8 -137
  66. data/doc/rest-api.txt +96 -0
  67. data/doc/settings.txt +1 -1
  68. data/doc/supported-platforms.txt +2 -1
  69. data/doc/tutorial.txt +6 -4
  70. data/examples/simple/Gemfile +39 -0
  71. data/examples/simple/Rakefile +7 -12
  72. data/examples/simple/config.ru +16 -31
  73. data/examples/simple/settings/settings.yml +5 -4
  74. data/examples/simple/sources/product.rb +51 -0
  75. data/generators/templates/application/Gemfile +7 -0
  76. data/generators/templates/application/Rakefile +5 -18
  77. data/generators/templates/application/config.ru +11 -19
  78. data/install.sh +24 -49
  79. data/installer/unix-like/create_texts.rb +71 -123
  80. data/installer/unix-like/post_install.sh +3 -0
  81. data/installer/unix-like/post_uninstall.sh +2 -0
  82. data/installer/unix-like/pre_install.sh +5 -3
  83. data/installer/unix-like/pre_uninstall.sh +14 -6
  84. data/installer/unix-like/rho_connect_install_checkers.rb +1 -1
  85. data/installer/unix-like/rho_connect_install_constants.rb +6 -10
  86. data/installer/unix-like/rho_connect_install_debian.rb +2 -2
  87. data/installer/unix-like/rho_connect_install_dnd.rb +2 -5
  88. data/installer/unix-like/rho_connect_install_installers.rb +15 -23
  89. data/installer/unix-like/rho_connect_install_yum.rb +2 -2
  90. data/installer/utils/constants.rb +4 -4
  91. data/installer/utils/create_sha1.rb +1 -1
  92. data/installer/utils/nix_install_test.rb +32 -31
  93. data/installer/utils/nix_installation.rake +1 -1
  94. data/installer/utils/package_upload/repos.rake +34 -30
  95. data/installer/utils/package_upload/s3_upload.rb +3 -3
  96. data/lib/rhoconnect/api/source/fast_delete.rb +10 -0
  97. data/lib/rhoconnect/api/source/fast_insert.rb +10 -0
  98. data/lib/rhoconnect/api/source/fast_update.rb +10 -0
  99. data/lib/rhoconnect/api/source/get_source_params.rb +1 -1
  100. data/lib/rhoconnect/api/source/list_sources.rb +2 -2
  101. data/lib/rhoconnect/api/source/save_adapter.rb +1 -1
  102. data/lib/rhoconnect/api/source/update_source_params.rb +6 -0
  103. data/lib/rhoconnect/async.rb +82 -0
  104. data/lib/rhoconnect/bulk_data/bulk_data.rb +5 -1
  105. data/lib/rhoconnect/client_sync.rb +18 -3
  106. data/lib/rhoconnect/console/rhoconnect_api.rb +2 -2
  107. data/lib/rhoconnect/console/server.rb +5 -32
  108. data/lib/rhoconnect/console.rb +2 -2
  109. data/lib/rhoconnect/graph_helper.rb +225 -0
  110. data/lib/rhoconnect/jobs/bulk_data_job.rb +24 -2
  111. data/lib/rhoconnect/server.rb +31 -11
  112. data/lib/rhoconnect/source.rb +10 -5
  113. data/lib/rhoconnect/source_sync.rb +32 -2
  114. data/lib/rhoconnect/tasks.rb +19 -108
  115. data/lib/rhoconnect/test_methods.rb +20 -0
  116. data/lib/rhoconnect/utilities.rb +118 -0
  117. data/lib/rhoconnect/version.rb +1 -1
  118. data/lib/rhoconnect/web-console/controllers/admins.js +245 -0
  119. data/lib/rhoconnect/web-console/models/adapter.js +53 -0
  120. data/lib/rhoconnect/web-console/models/client.js +105 -0
  121. data/lib/rhoconnect/web-console/models/doc.js +113 -0
  122. data/lib/rhoconnect/web-console/models/session.js +40 -0
  123. data/lib/rhoconnect/web-console/models/source.js +115 -0
  124. data/lib/rhoconnect/web-console/models/stats.js +84 -0
  125. data/lib/rhoconnect/web-console/models/user.js +111 -0
  126. data/lib/rhoconnect/web-console/public/backbone.js +1432 -0
  127. data/lib/rhoconnect/web-console/public/bootstrap.css +3990 -0
  128. data/lib/rhoconnect/{console/app → web-console}/public/jqplot/excanvas.min.js +0 -0
  129. data/lib/rhoconnect/{console/app → web-console}/public/jqplot/jqplot.barRenderer.min.js +0 -0
  130. data/lib/rhoconnect/{console/app → web-console}/public/jqplot/jqplot.canvasAxisLabelRenderer.js +0 -0
  131. data/lib/rhoconnect/{console/app → web-console}/public/jqplot/jqplot.canvasAxisTickRenderer.js +0 -0
  132. data/lib/rhoconnect/{console/app → web-console}/public/jqplot/jqplot.canvasTextRenderer.js +0 -0
  133. data/lib/rhoconnect/{console/app → web-console}/public/jqplot/jqplot.categoryAxisRenderer.min.js +0 -0
  134. data/lib/rhoconnect/{console/app → web-console}/public/jqplot/jqplot.cursor.js +0 -0
  135. data/lib/rhoconnect/{console/app → web-console}/public/jqplot/jqplot.dateAxisRenderer.js +0 -0
  136. data/lib/rhoconnect/{console/app → web-console}/public/jqplot/jqplot.dateAxisRenderer.min.js +0 -0
  137. data/lib/rhoconnect/{console/app → web-console}/public/jqplot/jqplot.pointLabels.min.js +0 -0
  138. data/lib/rhoconnect/{console/app → web-console}/public/jqplot/jquery-1.4.2.min.js +0 -0
  139. data/lib/rhoconnect/{console/app → web-console}/public/jqplot/jquery.jqplot.min.css +0 -0
  140. data/lib/rhoconnect/{console/app → web-console}/public/jqplot/jquery.jqplot.min.js +0 -0
  141. data/lib/rhoconnect/web-console/public/jquery-1.7.1.min.js +154 -0
  142. data/lib/rhoconnect/web-console/public/rhoconnect-web.js +15 -0
  143. data/lib/rhoconnect/web-console/public/underscore.js +999 -0
  144. data/lib/rhoconnect/web-console/server.rb +55 -0
  145. data/lib/rhoconnect/web-console/templates/index.erb +90 -0
  146. data/lib/rhoconnect/web-console/templates/jqplot.erb +60 -0
  147. data/lib/rhoconnect/web-console/views/api_token.js +16 -0
  148. data/lib/rhoconnect/web-console/views/doc.js +63 -0
  149. data/lib/rhoconnect/web-console/views/edit_user.js +43 -0
  150. data/lib/rhoconnect/web-console/views/home.js +56 -0
  151. data/lib/rhoconnect/web-console/views/index.js +63 -0
  152. data/lib/rhoconnect/web-console/views/new_ping.js +58 -0
  153. data/lib/rhoconnect/web-console/views/new_user.js +29 -0
  154. data/lib/rhoconnect/web-console/views/server_doc.js +103 -0
  155. data/lib/rhoconnect/web-console/views/set_adapter.js +38 -0
  156. data/lib/rhoconnect/web-console/views/settings.js +53 -0
  157. data/lib/rhoconnect/web-console/views/show_device.js +56 -0
  158. data/lib/rhoconnect/web-console/views/show_user.js +38 -0
  159. data/lib/rhoconnect/web-console/views/source_docs.js +30 -0
  160. data/lib/rhoconnect/web-console/views/stats.js +69 -0
  161. data/lib/rhoconnect/web-console/views/users.js +20 -0
  162. data/lib/rhoconnect.rb +2 -1
  163. data/rhoconnect.gemspec +3 -1
  164. data/spec/api/application/rhoconnect_api_spec.rb +3 -5
  165. data/spec/api/source/fast_delete_spec.rb +27 -0
  166. data/spec/api/source/fast_insert_spec.rb +28 -0
  167. data/spec/api/source/fast_update_spec.rb +51 -0
  168. data/spec/api/source/get_source_params_spec.rb +1 -0
  169. data/spec/api/source/update_source_params_spec.rb +24 -0
  170. data/spec/async_spec.rb +19 -0
  171. data/spec/client_sync_spec.rb +19 -2
  172. data/spec/javascripts/PlayerSpec.js +58 -0
  173. data/spec/javascripts/admins_routes_spec.js +117 -0
  174. data/spec/javascripts/admins_spec.js +27 -0
  175. data/spec/javascripts/doc_view_spec.js +37 -0
  176. data/spec/javascripts/edit_user_view_spec.js +44 -0
  177. data/spec/javascripts/helpers/SpecHelper.js +9 -0
  178. data/spec/javascripts/helpers/jasmine-jquery.js +305 -0
  179. data/spec/javascripts/helpers/jasmine-sinon.js +43 -0
  180. data/spec/javascripts/helpers/sinon-1.3.2.js +3551 -0
  181. data/spec/javascripts/home_view_spec.js +39 -0
  182. data/spec/javascripts/index_view_spec.js +42 -0
  183. data/spec/javascripts/new_ping_view_spec.js +48 -0
  184. data/spec/javascripts/new_user_view_spec.js +42 -0
  185. data/spec/javascripts/server_doc_view_spec.js +39 -0
  186. data/spec/javascripts/set_adapter_view_spec.js +32 -0
  187. data/spec/javascripts/show_device_view_spec.js +41 -0
  188. data/spec/javascripts/show_user_view_spec.js +46 -0
  189. data/spec/javascripts/source_docs_view_spec.js +36 -0
  190. data/spec/javascripts/support/jasmine.yml +79 -0
  191. data/spec/javascripts/support/jasmine_config.rb +23 -0
  192. data/spec/javascripts/support/jasmine_runner.rb +32 -0
  193. data/spec/javascripts/users_view_spec.js +35 -0
  194. data/spec/jobs/bulk_data_job_spec.rb +10 -2
  195. data/spec/perf/bulk_data_perf_spec.rb +1 -0
  196. data/spec/server/server_spec.rb +3 -1
  197. data/spec/source_sync_spec.rb +14 -1
  198. data/spec/spec_helper.rb +51 -0
  199. data/spec/store_spec.rb +6 -0
  200. data/spec/test_methods_spec.rb +11 -0
  201. data/tasks/redis.rake +3 -1
  202. metadata +172 -64
  203. data/doc/contributing.txt +0 -60
  204. data/lib/rhoconnect/console/app/helpers/auth_helper.rb +0 -22
  205. data/lib/rhoconnect/console/app/helpers/extensions.rb +0 -19
  206. data/lib/rhoconnect/console/app/helpers/helpers.rb +0 -57
  207. data/lib/rhoconnect/console/app/public/ThickBox.css +0 -649
  208. data/lib/rhoconnect/console/app/public/home.css +0 -431
  209. data/lib/rhoconnect/console/app/public/images/foot_logo_rhoconnect.png +0 -0
  210. data/lib/rhoconnect/console/app/public/images/header_halo.jpg +0 -0
  211. data/lib/rhoconnect/console/app/public/images/land_separator.gif +0 -0
  212. data/lib/rhoconnect/console/app/public/images/landing_header.jpg +0 -0
  213. data/lib/rhoconnect/console/app/public/images/logo_rhoconnect.png +0 -0
  214. data/lib/rhoconnect/console/app/public/images/tabs_separator.png +0 -0
  215. data/lib/rhoconnect/console/app/public/main.css +0 -7
  216. data/lib/rhoconnect/console/app/public/reset.css +0 -76
  217. data/lib/rhoconnect/console/app/public/style.css +0 -2201
  218. data/lib/rhoconnect/console/app/public/text.txt +0 -0
  219. data/lib/rhoconnect/console/app/routes/adapter.rb +0 -28
  220. data/lib/rhoconnect/console/app/routes/auth.rb +0 -29
  221. data/lib/rhoconnect/console/app/routes/client.rb +0 -31
  222. data/lib/rhoconnect/console/app/routes/docs.rb +0 -145
  223. data/lib/rhoconnect/console/app/routes/heroku.rb +0 -19
  224. data/lib/rhoconnect/console/app/routes/home.rb +0 -63
  225. data/lib/rhoconnect/console/app/routes/timing.rb +0 -242
  226. data/lib/rhoconnect/console/app/routes/user.rb +0 -122
  227. data/lib/rhoconnect/console/app/views/adapter.erb +0 -16
  228. data/lib/rhoconnect/console/app/views/client.erb +0 -30
  229. data/lib/rhoconnect/console/app/views/content.erb +0 -14
  230. data/lib/rhoconnect/console/app/views/doc.erb +0 -8
  231. data/lib/rhoconnect/console/app/views/docdata.erb +0 -28
  232. data/lib/rhoconnect/console/app/views/docs.erb +0 -30
  233. data/lib/rhoconnect/console/app/views/edituser.erb +0 -13
  234. data/lib/rhoconnect/console/app/views/headermenu.erb +0 -40
  235. data/lib/rhoconnect/console/app/views/home.erb +0 -24
  236. data/lib/rhoconnect/console/app/views/index.erb +0 -58
  237. data/lib/rhoconnect/console/app/views/jqplot.erb +0 -52
  238. data/lib/rhoconnect/console/app/views/layout.erb +0 -153
  239. data/lib/rhoconnect/console/app/views/login.erb +0 -26
  240. data/lib/rhoconnect/console/app/views/newuser.erb +0 -17
  241. data/lib/rhoconnect/console/app/views/ping.erb +0 -40
  242. data/lib/rhoconnect/console/app/views/result.erb +0 -11
  243. data/lib/rhoconnect/console/app/views/rightboxlinks.erb +0 -15
  244. data/lib/rhoconnect/console/app/views/select_doc.erb +0 -17
  245. data/lib/rhoconnect/console/app/views/upload_doc.erb +0 -23
  246. data/lib/rhoconnect/console/app/views/user.erb +0 -29
  247. data/lib/rhoconnect/console/app/views/users.erb +0 -19
  248. data/lib/rhoconnect/server/views/index.erb +0 -13
File without changes
@@ -1,28 +0,0 @@
1
- class RhoconnectConsole::Server
2
-
3
- get '/adapter' do
4
- if params[:xhr] or request.xhr?
5
- @adapter = nil
6
- handle_api_error("Can't load adapter url") do
7
- @adapter = RhoconnectApi::get_adapter(session[:server],session[:token])['adapter_url']
8
- @domain = ENV['RHODES_URL'] || request.session[:server_url] + "/application"
9
- end
10
- erb :adapter, :layout => false
11
- else
12
- render_page url_path("/adapter")
13
- end
14
- end
15
-
16
- post '/adapter/create' do
17
- session[:errors] = nil
18
- verify_format_of :adapter_url, "url must start with http(s)"
19
- unless session[:errors]
20
- handle_api_error("Can't save adapter url") do
21
- RhoconnectApi::save_adapter(session[:server],
22
- session[:token],params[:adapter_url])
23
- end
24
- end
25
- redirect url_path( '/adapter'), 303
26
- end
27
-
28
- end
@@ -1,29 +0,0 @@
1
- class RhoconnectConsole::Server
2
- post '/login' do
3
- begin
4
- session[:errors] = nil
5
- session[:login] = params[:login]
6
- session[:connect] = params[:connect]
7
- session[:server_url] = params[:server]
8
- session[:server] = params[:connect] == 'direct' ? nil : params[:server]
9
-
10
- #verify_presence_of :server, "Server is not provaided."
11
- verify_presence_of :login, "Login is not provided."
12
-
13
- unless session[:errors]
14
- session[:token] = RhoconnectApi::get_token(session[:server],params[:login],params[:password])
15
- end
16
- rescue Exception => e
17
- session[:token] = nil
18
- report_error("Can't login to Rhoconnect server.")
19
- #puts e.message + "\n" + e.backtrace.join("\n")
20
- end
21
- redirect url_path('/'), 303
22
- end
23
-
24
- get '/logout' do
25
- session[:token] = nil
26
- redirect url_path('/'), 303
27
- end
28
-
29
- end
@@ -1,31 +0,0 @@
1
- class RhoconnectConsole::Server
2
-
3
- get '/device/create' do
4
- session[:errors] = nil
5
- handle_api_error("Can't create new device") do
6
- RhoconnectApi::create_client(session[:server],session[:token],params[:user_id])
7
- end
8
- redirect url_path("/user?user_id=#{CGI.escape(params[:user_id])}"), 303
9
- end
10
-
11
- get '/device' do
12
- @attributes = []
13
- handle_api_error("Can't load list of device attributes") do
14
- @attributes = RhoconnectApi::get_client_params(session[:server],session[:token],params[:device_id])
15
- end
16
- @sources = []
17
- handle_api_error("Can't load list of sources") do
18
- @sources = RhoconnectApi::list_sources(session[:server],session[:token],:all)
19
- end
20
- erb :client, :layout => false
21
- end
22
-
23
- get '/device/delete' do
24
- handle_api_error("Can't delete device #{params[:device_id]}") do
25
- RhoconnectApi::delete_client(session[:server],session[:token],
26
- params[:user_id],params[:device_id])
27
- end
28
- redirect url_path(session[:errors] ? "/device?user_id=#{CGI.escape(params[:user_id])}&device_id=#{CGI.escape(params[:device_id])}" :
29
- "/user?user_id=#{CGI.escape(params[:user_id])}"), 303
30
- end
31
- end
@@ -1,145 +0,0 @@
1
- class RhoconnectConsole::Server
2
- def docs_render_page(contenturl)
3
- @currentpage = "Console"
4
- @initialcontent = contenturl
5
- @pagetitle = "RhoConnect Console" #H1 title
6
- @locals = {
7
- :div => "main_box",
8
- :links => [
9
- { :url => url_path('/homepage'), :title => 'Info' },
10
- { :url => url_path('/doc/select'), :selected => true, :title => 'Server Document' },
11
- { :url => url_path('/users'), :title => 'Users' }
12
- ]
13
- }
14
- erb :content
15
- end
16
-
17
- def hash_to_params(inhash)
18
- outstring = "?"
19
- inhash.each do |k,v|
20
- outstring << "#{k}=#{CGI.escape(v)}&"
21
- end
22
- outstring
23
- end
24
-
25
- get '/docs' do
26
- if params[:xhr] or request.xhr?
27
-
28
- @src_params = []
29
- handle_api_error("Can't load list of source attributes") do
30
- @src_params = RhoconnectApi::get_source_params(
31
- session[:server],session[:token],params[:source_id])
32
- end
33
- @docs = []
34
- @docs_name = ''
35
- @back_href = ''
36
- @doc_params = doc_params
37
- handle_api_error("Can't load list of the documents") do
38
- if params[:device_id]
39
- @docs_name = "device #{params[:device_id]}"
40
- @back_href = url_path("device?user_id=#{CGI.escape(params[:user_id])}&device_id=#{CGI.escape(params[:device_id])}")
41
- @docs = RhoconnectApi::list_client_docs(session[:server],session[:token],params[:source_id],params[:device_id])
42
- else
43
- if params[:user_id]=='*'
44
- @docs_name = "app partition"
45
- @back_href = url_path('/')
46
- else
47
- @docs_name = "user #{params[:user_id]} partition"
48
- @back_href = url_path("user?user_id=#{CGI.escape(params[:user_id])}")
49
- end
50
- @docs = RhoconnectApi::list_source_docs(session[:server],
51
- session[:token],params[:source_id],params[:user_id])
52
- end
53
- end
54
- erb :docs, :layout => false
55
- else
56
- docs_render_page url_path("/docs" + hash_to_params(params))
57
-
58
- end
59
- end
60
-
61
- get '/doc/select' do
62
- if params[:xhr] or request.xhr?
63
- if params[:dbkey].nil?
64
- @dbkey = ''
65
- @data = {}
66
- else
67
- @dbkey = params[:dbkey]
68
- @is_string = doc_is_string
69
- handle_api_error("Can't load document") do
70
- @data = RhoconnectApi::get_db_doc(session[:server],
71
- session[:token],params[:dbkey],@is_string ? :string : '')
72
- end
73
- end
74
- erb :select_doc, :layout => false
75
- else
76
- docs_render_page url_path("/doc/select" + hash_to_params(params))
77
- end
78
- end
79
-
80
- get '/doc' do
81
- if params[:xhr] or request.xhr?
82
-
83
- @data = {}
84
- @is_string = doc_is_string
85
- handle_api_error("Can't load document") do
86
- @data = RhoconnectApi::get_db_doc(session[:server],
87
- session[:token],params[:dbkey],@is_string ? :string : '')
88
- end
89
- @back_params = "source_id=#{CGI.escape(params[:source_id])}&user_id=#{CGI.escape(params[:user_id])}"
90
- @back_params += "&device_id=#{CGI.escape(params[:device_id])}" if params[:device_id]
91
- @back_href = url_path("docs?#{doc_params}")
92
- erb :doc, :layout => false
93
- else
94
- docs_render_page url_path("/doc" + hash_to_params(params))
95
- end
96
-
97
- end
98
-
99
- get '/doc/clear' do
100
- if params[:xhr] or request.xhr?
101
- is_string = doc_is_string
102
- handle_api_error("Can't clear document") do
103
- RhoconnectApi::set_db_doc(session[:server],session[:token],params[:dbkey],
104
- is_string ? '' : {}, is_string ? :string : '')
105
- end
106
- @result_name = "Clear result"
107
- @status = "Successfully cleared: [#{CGI.unescape(params[:dbkey])}]"
108
- @back_href = params[:user_id] ?
109
- url_path("doc?#{doc_params}&dbkey=#{CGI.escape(params[:dbkey])}") :
110
- url_path("doc/select?dbkey=#{CGI.escape(params[:dbkey])}")
111
- erb :result, :layout => false
112
- else
113
- docs_render_page url_path("/doc/clear" + hash_to_params(params))
114
- end
115
- end
116
-
117
- post '/doc/upload' do
118
- if params[:string]
119
- handle_api_error("Can't upload document") do
120
- RhoconnectApi::set_db_doc(session[:server],session[:token],CGI.unescape(params[:doc]),params[:string],:string)
121
- end
122
- else
123
- unless params[:file] &&
124
- (tmpfile = params[:file][:tempfile]) &&
125
- (name = params[:file][:filename])
126
- report_error "No file selected"
127
- else
128
- data = []
129
- while blk = tmpfile.read(65536)
130
- data << blk
131
- end
132
- handle_api_error("Can't upload document #{name.inspect}") do
133
- RhoconnectApi::set_db_doc(session[:server],session[:token],CGI.unescape(params[:doc]),JSON.parse(data.join))
134
- end
135
- end
136
- end
137
- @result_name = "Upload result"
138
- @status = "Successfully uploadad data to: [#{CGI.unescape(params[:doc])}]"
139
- @back_href = params[:user_id] ?
140
- url_path("doc?#{doc_params}&dbkey=#{params[:doc]}") :
141
- url_path("doc/select?dbkey=#{params[:doc]}")
142
- erb :result
143
- end
144
-
145
- end
@@ -1,19 +0,0 @@
1
- class RhoconnectConsole::Server
2
-
3
- get "/heroku/resources/:id" do
4
- begin
5
- # check heroku addon started app
6
- halt 403 unless ENV['INSTANCE_ID'] == params[:id] && params[:token] == ENV['API_TOKEN']
7
- # rhoconnect authentication
8
- session[:login] = 'rhoadmin'
9
- session[:connect] = 'direct'
10
- session[:token] = RhoconnectApi::get_token(session[:server],session[:login],ENV['PSWRD'])
11
- rescue Exception => e
12
- session[:token] = nil
13
- halt 403
14
- end
15
- response.set_cookie('heroku-nav-data', :value => params[:nav], :path => '/')
16
- redirect url_path('/'), 303
17
- end
18
-
19
- end
@@ -1,63 +0,0 @@
1
- class RhoconnectConsole::Server
2
- get '/' do
3
- if params[:xhr] or request.xhr?
4
- if login_required
5
- redirect url_path('/loginpage')
6
- else
7
- redirect url_path('/homepage')
8
- end
9
- else
10
- @currentpage = "Console" #which page in menu
11
- if login_required
12
- @pagetitle = "Login" #H1 title
13
- @initialcontent = url_path('/loginpage')
14
-
15
- @locals = {
16
- :div => "main_box",
17
- :links => [
18
- # { :url => url_path('/timing/bydevice'), :selected => true, :title => 'By Device' },
19
- # { :url => url_path('/timing/bysource'), :title => 'By Source' }
20
- ]
21
- }
22
- else
23
- @pagetitle = "RhoConnect Console" #H1 title
24
- @initialcontent = url_path('/homepage')
25
-
26
- @locals = {
27
- :div => "main_box",
28
- :links => [
29
- { :url => url_path('/homepage'), :selected => true, :title => 'Info' },
30
- { :url => url_path('/doc/select'), :title => 'Server Document' },
31
- { :url => url_path('/adapter'), :title => 'Backend App URL' },
32
- { :url => url_path('/users'), :title => 'Users' }
33
- ]
34
- }
35
- end
36
- erb :content
37
- end
38
- end
39
-
40
- get '/loginpage' do
41
- halt 401 if ENV['INSTANCE_ID']
42
- erb :login, :layout => false
43
- end
44
-
45
- get '/homepage' do
46
- @license = nil
47
- handle_api_error("Can't get license information") do
48
- @license = RhoconnectApi::get_license_info(session[:server],session[:token])
49
- end
50
- @sources = nil
51
- handle_api_error("Can't load list of application partition sources") do
52
- @sources = RhoconnectApi::list_sources(session[:server],session[:token],:app)
53
- end
54
- erb :home, :layout => false
55
- end
56
-
57
- get '/reset' do
58
- handle_api_error("Can't reset server") do
59
- RhoconnectApi::reset(session[:server],session[:token])
60
- end
61
- redirect url_path('/'), 303
62
- end
63
- end
@@ -1,242 +0,0 @@
1
- require 'json'
2
-
3
- class RhoconnectConsole::Server
4
- get '/timing' do
5
- if login_required
6
- redirect url_path('/')
7
- return
8
- end
9
- @currentpage = "Statistics"
10
- @pagetitle = "Statistics" #H1 title
11
-
12
- @initialcontent = url_path('/timing/usercount')
13
-
14
- @locals = {
15
- :div => "main_box",
16
- :links => [
17
- { :url => url_path('/timing/usercount'), :selected => true, :title => 'User Count' },
18
- { :url => url_path('/timing/devicecount'), :title => 'Device Count' },
19
- { :url => url_path('/timing/httptiming'), :title => 'HTTP Timing' },
20
- { :url => url_path('/timing/bysource'), :title => 'Source Timing' }
21
- ]
22
- }
23
-
24
- erb :content
25
- end
26
-
27
-
28
- get '/timing/bydevice' do
29
- '<div id="chartdiv" style="height:400px;width:300px; "></div> '
30
- end
31
-
32
- def count_graph(uri,title,name,metric)
33
- @uri = 'uri'
34
-
35
- start = 0
36
- finish = -1
37
- now = Time.now.to_i
38
- format = "%m/%d/%y %H:%M:%S"
39
-
40
- thisdata = []
41
- series = []
42
- series <<
43
- options = { :legend => { :show => false }, :title => title }
44
- @sources = []
45
-
46
- s = {}
47
- usercount = []
48
-
49
- begin
50
- usercount = JSON.parse RhoconnectApi::stats(session[:server],session[:token], {:metric => metric, :start => start, :finish => finish})
51
- rescue Exception => e
52
- usercount = ["0:#{Time.now.to_i}"]
53
- end
54
- usercount.each do |count|
55
- user,timestamp = count.split(':')
56
- user = user.to_i
57
- timestamp = timestamp.to_i * 1000
58
- thisdata << [timestamp,user]
59
- end
60
-
61
- options[:axes] = {
62
- :xaxis => { :autoscale => true, :renderer=>'$.jqplot.DateAxisRenderer',
63
- :tickOptions => {:formatString => format}},
64
- :yaxis => {:label => name, :labelRenderer => '$.jqplot.CanvasAxisLabelRenderer'}
65
- }
66
-
67
- options[:cursor] = {:zoom => true, :showTooltip => true}
68
- s['name'] = name
69
- s['data'] = [thisdata]
70
- s['options'] = options
71
- @sources << s
72
- erb :jqplot, :layout => false
73
- end
74
-
75
- get '/timing/usercount' do
76
- count_graph('timing/usercount', "User Count", "Users", "users")
77
- end
78
-
79
- get '/timing/devicecount' do
80
- count_graph('timing/devicecount', "Device Count", "Devices", "clients")
81
- end
82
-
83
-
84
-
85
- get '/timing/bysource' do
86
- @uri = 'timing/bysource'
87
-
88
- #name,data,options
89
- @displayname = params['display']
90
- names = []
91
- handle_api_error("Can't load list of sources") do
92
- names = RhoconnectApi::list_sources(session[:server],session[:token],:all)
93
- end
94
- @sources = []
95
-
96
- names.each do |name|
97
- s = {}
98
- data = []
99
- series = []
100
- options = { :legend => { :show => true }, :title => name }
101
- s['name'] = name
102
-
103
- keys = JSON.parse RhoconnectApi::stats(session[:server],session[:token], :names => "source:*:#{name}")
104
-
105
- xmin = 9999999999999999
106
- xmax = -1
107
- ymin = 9999999999999999
108
- ymax = -1
109
- keys.each do |key|
110
- method = key.gsub(/source:/,"").gsub(/:.*/,"")
111
- series << {:showLabel => true, :label => method }
112
- #range = r.zrange(key,0,-1)
113
- range = JSON.parse RhoconnectApi::stats(session[:server],session[:token], {:metric => key, :start => 0, :finish => -1})
114
- thisdata = []
115
- range.each do |value|
116
- count = value.split(',')[0]
117
- value.gsub!(/.*,/,"")
118
- thisdata << value.split(":").reverse
119
- thisdata[-1][0] = thisdata[-1][0].to_i * 1000
120
- thisdata[-1][1] = thisdata[-1][1].to_f
121
- thisdata[-1][1] /= count.to_f
122
-
123
- ymin = thisdata[-1][1].to_f if thisdata[-1][1] && thisdata[-1][1].to_f < ymin
124
- ymax = thisdata[-1][1].to_f if thisdata[-1][1] && thisdata[-1][1].to_f > ymax
125
-
126
- end
127
- data << thisdata
128
- xmin = thisdata[0][0].to_i if thisdata[0] && thisdata[0][0].to_i < xmin
129
- xmax = thisdata[-1][0].to_i if thisdata[-1] && thisdata[-1][0].to_i > xmax
130
- end
131
- #ticks = []
132
- #xmin..xmax.step(60) {|x| ticks << x }
133
-
134
- options[:axes] = {
135
- :yaxis => { :tickOptions => { :formatString =>'%.3f'}, :autoscale => true, :min => 0, :max => ymax + (ymax * 0.05), :label => 'Seconds', :labelRenderer => '$.jqplot.CanvasAxisLabelRenderer' },
136
- :xaxis => { :autoscale => true, :renderer=>'$.jqplot.DateAxisRenderer',
137
- :tickOptions => {:formatString => '%m/%d/%y %H:%M:%S'}}
138
- }
139
-
140
-
141
- # options[:axes] = {
142
- # :yaxis => { :autoscale => true, :min => 0, :max => ymax + (ymax * 0.05) },
143
- # :xaxis => { :autoscale => true, :min => xmin - 60, :max => xmax + 60, :renderer=>'$.jqplot.DateAxisRenderer',
144
- # :tickOptions => {:formatString => '%m/%d/%y %H:%M:%S'}}
145
- # }
146
-
147
- s['data'] = data
148
- options[:series] = series
149
- options[:cursor] = {:zoom => true, :showTooltip => true}
150
-
151
- # options[:seriesDefaults] = { :showMarker => false}
152
- # options[:seriesDefaults] = { :renderer => '$.jqplot.BarRenderer', :rendererOptions => {:barPadding => 8, :barMargin => 20}}
153
- s['options'] = options
154
-
155
- @sources << s
156
- end
157
-
158
- @data = [[[1,2],[3,4],[5,6]]].to_json
159
- erb :jqplot, :layout => false
160
- end
161
-
162
-
163
- get '/timing/httptiming' do
164
- @uri = 'timing/httptiming'
165
-
166
- #name,data,options
167
- @displayname = params['display']
168
- names = ["GET","POST"]
169
- handle_api_error("Can't load list of sources") do
170
- names = RhoconnectApi::list_sources(session[:server],session[:token],:all)
171
- end
172
- names << "ALL"
173
- @sources = []
174
-
175
- names.each do |name|
176
- s = {}
177
- data = []
178
- series = []
179
- options = { :legend => { :show => true }, :title => name }
180
- s['name'] = name
181
-
182
- name = "*" if name == "ALL"
183
- keys = JSON.parse RhoconnectApi::stats(session[:server],session[:token], :names => "http:*:#{name}")
184
-
185
- xmin = 9999999999999999
186
- xmax = -1
187
- ymin = 9999999999999999
188
- ymax = -1
189
- keys.each do |key|
190
- method = key.gsub(/http:.*?:/,"")
191
- method.gsub!(/:.*/,"") unless name == "*"
192
- series << {:showLabel => true, :label => method }
193
- #range = r.zrange(key,0,-1)
194
- range = JSON.parse RhoconnectApi::stats(session[:server],session[:token], {:metric => key, :start => 0, :finish => -1})
195
- thisdata = []
196
- range.each do |value|
197
- count = value.split(',')[0]
198
- value.gsub!(/.*,/,"")
199
- thisdata << value.split(":").reverse
200
- thisdata[-1][0] = thisdata[-1][0].to_i * 1000
201
- thisdata[-1][1] = thisdata[-1][1].to_f
202
- thisdata[-1][1] /= count.to_f
203
-
204
- ymin = thisdata[-1][1].to_f if thisdata[-1][1] && thisdata[-1][1].to_f < ymin
205
- ymax = thisdata[-1][1].to_f if thisdata[-1][1] && thisdata[-1][1].to_f > ymax
206
-
207
- end
208
- data << thisdata
209
- xmin = thisdata[0][0].to_i if thisdata[0] && thisdata[0][0].to_i < xmin
210
- xmax = thisdata[-1][0].to_i if thisdata[-1] && thisdata[-1][0].to_i > xmax
211
- end
212
- #ticks = []
213
- #xmin..xmax.step(60) {|x| ticks << x }
214
-
215
- options[:axes] = {
216
- :yaxis => { :tickOptions => { :formatString =>'%.3f'}, :autoscale => true, :min => 0, :max => ymax + (ymax * 0.05), :label => 'Seconds', :labelRenderer => '$.jqplot.CanvasAxisLabelRenderer' },
217
- :xaxis => { :autoscale => true, :renderer=>'$.jqplot.DateAxisRenderer',
218
- :tickOptions => {:formatString => '%m/%d/%y %H:%M:%S'}}
219
- }
220
-
221
-
222
- # options[:axes] = {
223
- # :yaxis => { :autoscale => true, :min => 0, :max => ymax + (ymax * 0.05) },
224
- # :xaxis => { :autoscale => true, :min => xmin - 60, :max => xmax + 60, :renderer=>'$.jqplot.DateAxisRenderer',
225
- # :tickOptions => {:formatString => '%m/%d/%y %H:%M:%S'}}
226
- # }
227
-
228
- s['data'] = data
229
- options[:series] = series
230
- options[:cursor] = {:zoom => true, :showTooltip => true}
231
-
232
- # options[:seriesDefaults] = { :showMarker => false}
233
- # options[:seriesDefaults] = { :renderer => '$.jqplot.BarRenderer', :rendererOptions => {:barPadding => 8, :barMargin => 20}}
234
- s['options'] = options
235
-
236
- @sources << s
237
- end
238
-
239
- @data = [[[1,2],[3,4],[5,6]]].to_json
240
- erb :jqplot, :layout => false
241
- end
242
- end
@@ -1,122 +0,0 @@
1
- class RhoconnectConsole::Server
2
- def render_page(contenturl)
3
- @currentpage = "Console"
4
- @initialcontent = contenturl
5
- @pagetitle = "RhoConnect Console" #H1 title
6
- @locals = {
7
- :div => "main_box",
8
- :links => [
9
- { :url => url_path('/homepage'), :title => 'Info' },
10
- { :url => url_path('/doc/select'), :title => 'Server Document' },
11
- { :url => url_path('/adapter'), :title => 'Backend App URL' },
12
- { :url => url_path('/users'), :selected => true, :title => 'Users' }
13
- ]
14
- }
15
- erb :content
16
- end
17
-
18
- get '/users' do
19
- if params[:xhr] or request.xhr?
20
- @users = []
21
- handle_api_error("Can't load list of users") do
22
- @users = RhoconnectApi::list_users(session[:server],session[:token])
23
- end
24
- erb :users, :layout => false
25
-
26
- else
27
- render_page url_path("/users")
28
- end
29
- end
30
-
31
- get '/user/new' do
32
- if params[:xhr] or request.xhr?
33
- erb :newuser, :layout => false
34
- else
35
- render_page url_path("/user/new")
36
- end
37
-
38
- end
39
-
40
- get '/user/edit' do
41
- if params[:xhr] or request.xhr?
42
- erb :edituser, :layout => false
43
- else
44
- render_page url_path("/user/edit")
45
- end
46
- end
47
-
48
- post '/user/update' do
49
- params.merge!({:login => 'rhoadmin'})
50
- handle_api_error("Can't update admin password") do
51
- RhoconnectApi::update_user(session[:server],
52
- session[:token],params)
53
- end
54
- redirect url_path(session[:errors] ? '/user/edit' : '/users'), 303
55
- end
56
-
57
- post '/user/create' do
58
- session[:errors] = nil
59
- verify_presence_of :login, "Login is not provided."
60
- unless session[:errors]
61
- handle_api_error("Can't create new user") do
62
- RhoconnectApi::create_user(session[:server],
63
- session[:token],params[:login],params[:password])
64
- end
65
- end
66
- redirect url_path(session[:errors] ? '/user/new' : '/users'), 303
67
- end
68
-
69
- get '/user' do
70
- if params[:xhr] or request.xhr?
71
-
72
- @devices = []
73
- handle_api_error("Can't load list of devices") do
74
- @devices = RhoconnectApi::list_clients(
75
- session[:server],session[:token],params[:user_id])
76
- end
77
- @sources = []
78
- handle_api_error("Can't load list of user partition sources") do
79
- @sources = RhoconnectApi::list_sources(session[:server],session[:token],:user)
80
- end
81
- erb :user, :layout => false
82
- else
83
- params[:user_id] = CGI::escape(params[:user_id]) if params[:user_id]
84
- render_page url_path("/user?user_id=#{params[:user_id]}")
85
- end
86
- end
87
-
88
- get '/user/delete' do
89
- handle_api_error("Can't delete user #{params[:user_id]}") do
90
- RhoconnectApi::delete_user(session[:server],session[:token],params[:user_id])
91
- end
92
- redirect url_path(session[:errors] ? "/user?user_id=#{CGI.escape(params[:user_id])}" : '/users'), 303
93
- end
94
-
95
- get '/user/ping' do
96
- if params[:xhr] or request.xhr?
97
-
98
- @sources = []
99
- handle_api_error("Can't load list of user partition sources") do
100
- @sources = RhoconnectApi::list_sources(session[:server],session[:token],:all)
101
- end
102
- erb :ping, :layout => false
103
- else
104
- render_page url_path("/user/ping?user_id=#{CGI.escape(params[:user_id])}")
105
- end
106
-
107
- end
108
-
109
- post '/user/ping' do
110
- params['sources'] = params['sources'].split(',')
111
- params[:user_id] = params[:user_id].split(',')
112
- handle_api_error("Error while pinging") do
113
- RhoconnectApi::ping(session[:server],session[:token],params[:user_id],params)
114
- end
115
- users = CGI.escape(params[:user_id].join(','))
116
- if params[:user_id].size == 1
117
- redirect url_path(session[:errors] ? "/user/ping?user_id=#{users}" : "/user?user_id=#{users}"), 303
118
- else
119
- redirect url_path(session[:errors] ? "/user/ping?user_id=#{users}" : "/users"), 303
120
- end
121
- end
122
- end