foreman_discovery 1.0.0 → 1.0.2

Sign up to get free protection for your applications and to get access to all the features.
Files changed (1339) hide show
  1. checksums.yaml +7 -0
  2. data/README.md +17 -5
  3. data/lib/foreman_discovery/version.rb +1 -1
  4. metadata +32 -2726
  5. data/test/foreman_app/CHANGELOG +0 -3969
  6. data/test/foreman_app/Contributors +0 -94
  7. data/test/foreman_app/Gemfile +0 -33
  8. data/test/foreman_app/README.md +0 -17
  9. data/test/foreman_app/Rakefile +0 -7
  10. data/test/foreman_app/VERSION +0 -1
  11. data/test/foreman_app/app/assets/images/Archlinux.png +0 -0
  12. data/test/foreman_app/app/assets/images/Centos.png +0 -0
  13. data/test/foreman_app/app/assets/images/Darwin.png +0 -0
  14. data/test/foreman_app/app/assets/images/Debian.png +0 -0
  15. data/test/foreman_app/app/assets/images/Fedora.png +0 -0
  16. data/test/foreman_app/app/assets/images/Redhat.png +0 -0
  17. data/test/foreman_app/app/assets/images/SLC.png +0 -0
  18. data/test/foreman_app/app/assets/images/Scientific.png +0 -0
  19. data/test/foreman_app/app/assets/images/Solaris.png +0 -0
  20. data/test/foreman_app/app/assets/images/Suse.png +0 -0
  21. data/test/foreman_app/app/assets/images/Ubuntu.png +0 -0
  22. data/test/foreman_app/app/assets/images/Windows.png +0 -0
  23. data/test/foreman_app/app/assets/images/bullet_toggle_plus.png +0 -0
  24. data/test/foreman_app/app/assets/images/edit-hover.png +0 -0
  25. data/test/foreman_app/app/assets/images/edit.png +0 -0
  26. data/test/foreman_app/app/assets/images/false.png +0 -0
  27. data/test/foreman_app/app/assets/images/foreman.png +0 -0
  28. data/test/foreman_app/app/assets/images/foreman_background.png +0 -0
  29. data/test/foreman_app/app/assets/images/foreman_large.png +0 -0
  30. data/test/foreman_app/app/assets/images/foreman_white.png +0 -0
  31. data/test/foreman_app/app/assets/images/pie_chart_icon.png +0 -0
  32. data/test/foreman_app/app/assets/images/pie_overlay.png +0 -0
  33. data/test/foreman_app/app/assets/images/spinner.gif +0 -0
  34. data/test/foreman_app/app/assets/images/switch.png +0 -0
  35. data/test/foreman_app/app/assets/images/toggle_check.png +0 -0
  36. data/test/foreman_app/app/assets/images/true.png +0 -0
  37. data/test/foreman_app/app/assets/images/user.jpg +0 -0
  38. data/test/foreman_app/app/assets/javascripts/application.js +0 -348
  39. data/test/foreman_app/app/assets/javascripts/charts.js +0 -317
  40. data/test/foreman_app/app/assets/javascripts/compute_resource.js +0 -120
  41. data/test/foreman_app/app/assets/javascripts/config_template.js +0 -153
  42. data/test/foreman_app/app/assets/javascripts/host_checkbox.js +0 -151
  43. data/test/foreman_app/app/assets/javascripts/host_edit.js +0 -591
  44. data/test/foreman_app/app/assets/javascripts/lookup_keys.js +0 -184
  45. data/test/foreman_app/app/assets/javascripts/nfs_visibility.js +0 -33
  46. data/test/foreman_app/app/assets/javascripts/noVNC.js +0 -47
  47. data/test/foreman_app/app/assets/javascripts/reports.js +0 -27
  48. data/test/foreman_app/app/assets/javascripts/spice.js +0 -53
  49. data/test/foreman_app/app/assets/javascripts/taxonomy.js +0 -18
  50. data/test/foreman_app/app/assets/javascripts/topbar.js +0 -39
  51. data/test/foreman_app/app/assets/javascripts/trends.js +0 -10
  52. data/test/foreman_app/app/assets/stylesheets/application.scss +0 -350
  53. data/test/foreman_app/app/assets/stylesheets/bootstrap_and_overrides.scss +0 -130
  54. data/test/foreman_app/app/assets/stylesheets/charts.scss +0 -138
  55. data/test/foreman_app/app/assets/stylesheets/dashboard.scss +0 -42
  56. data/test/foreman_app/app/assets/stylesheets/login.scss +0 -77
  57. data/test/foreman_app/app/assets/stylesheets/topbar.scss +0 -83
  58. data/test/foreman_app/app/assets/stylesheets/wizard.scss +0 -60
  59. data/test/foreman_app/app/controllers/api/base_controller.rb +0 -162
  60. data/test/foreman_app/app/controllers/api/v1/architectures_controller.rb +0 -53
  61. data/test/foreman_app/app/controllers/api/v1/audits_controller.rb +0 -26
  62. data/test/foreman_app/app/controllers/api/v1/auth_source_ldaps_controller.rb +0 -72
  63. data/test/foreman_app/app/controllers/api/v1/base_controller.rb +0 -12
  64. data/test/foreman_app/app/controllers/api/v1/bookmarks_controller.rb +0 -59
  65. data/test/foreman_app/app/controllers/api/v1/common_parameters_controller.rb +0 -53
  66. data/test/foreman_app/app/controllers/api/v1/compute_resources_controller.rb +0 -71
  67. data/test/foreman_app/app/controllers/api/v1/config_templates_controller.rb +0 -102
  68. data/test/foreman_app/app/controllers/api/v1/dashboard_controller.rb +0 -20
  69. data/test/foreman_app/app/controllers/api/v1/domains_controller.rb +0 -74
  70. data/test/foreman_app/app/controllers/api/v1/environments_controller.rb +0 -50
  71. data/test/foreman_app/app/controllers/api/v1/fact_values_controller.rb +0 -23
  72. data/test/foreman_app/app/controllers/api/v1/home_controller.rb +0 -25
  73. data/test/foreman_app/app/controllers/api/v1/hostgroups_controller.rb +0 -70
  74. data/test/foreman_app/app/controllers/api/v1/hosts_controller.rb +0 -113
  75. data/test/foreman_app/app/controllers/api/v1/images_controller.rb +0 -73
  76. data/test/foreman_app/app/controllers/api/v1/lookup_keys_controller.rb +0 -63
  77. data/test/foreman_app/app/controllers/api/v1/media_controller.rb +0 -75
  78. data/test/foreman_app/app/controllers/api/v1/models_controller.rb +0 -56
  79. data/test/foreman_app/app/controllers/api/v1/operatingsystems_controller.rb +0 -79
  80. data/test/foreman_app/app/controllers/api/v1/ptables_controller.rb +0 -55
  81. data/test/foreman_app/app/controllers/api/v1/puppetclasses_controller.rb +0 -56
  82. data/test/foreman_app/app/controllers/api/v1/reports_controller.rb +0 -43
  83. data/test/foreman_app/app/controllers/api/v1/roles_controller.rb +0 -49
  84. data/test/foreman_app/app/controllers/api/v1/settings_controller.rb +0 -35
  85. data/test/foreman_app/app/controllers/api/v1/smart_proxies_controller.rb +0 -69
  86. data/test/foreman_app/app/controllers/api/v1/subnets_controller.rb +0 -77
  87. data/test/foreman_app/app/controllers/api/v1/template_kinds_controller.rb +0 -14
  88. data/test/foreman_app/app/controllers/api/v1/usergroups_controller.rb +0 -51
  89. data/test/foreman_app/app/controllers/api/v1/users_controller.rb +0 -102
  90. data/test/foreman_app/app/controllers/api/v2/base_controller.rb +0 -12
  91. data/test/foreman_app/app/controllers/api/v2/compute_resources_controller.rb +0 -20
  92. data/test/foreman_app/app/controllers/api/v2/config_templates_controller.rb +0 -26
  93. data/test/foreman_app/app/controllers/api/v2/domains_controller.rb +0 -20
  94. data/test/foreman_app/app/controllers/api/v2/environments_controller.rb +0 -20
  95. data/test/foreman_app/app/controllers/api/v2/host_classes_controller.rb +0 -49
  96. data/test/foreman_app/app/controllers/api/v2/hostgroup_classes_controller.rb +0 -44
  97. data/test/foreman_app/app/controllers/api/v2/hostgroups_controller.rb +0 -20
  98. data/test/foreman_app/app/controllers/api/v2/locations_controller.rb +0 -9
  99. data/test/foreman_app/app/controllers/api/v2/media_controller.rb +0 -20
  100. data/test/foreman_app/app/controllers/api/v2/organizations_controller.rb +0 -9
  101. data/test/foreman_app/app/controllers/api/v2/parameters_controller.rb +0 -131
  102. data/test/foreman_app/app/controllers/api/v2/puppetclasses_controller.rb +0 -60
  103. data/test/foreman_app/app/controllers/api/v2/smart_proxies_controller.rb +0 -20
  104. data/test/foreman_app/app/controllers/api/v2/subnets_controller.rb +0 -20
  105. data/test/foreman_app/app/controllers/api/v2/template_combinations_controller.rb +0 -46
  106. data/test/foreman_app/app/controllers/api/v2/users_controller.rb +0 -20
  107. data/test/foreman_app/app/controllers/application_controller.rb +0 -349
  108. data/test/foreman_app/app/controllers/architectures_controller.rb +0 -51
  109. data/test/foreman_app/app/controllers/audits_controller.rb +0 -19
  110. data/test/foreman_app/app/controllers/auth_source_ldaps_controller.rb +0 -49
  111. data/test/foreman_app/app/controllers/bookmarks_controller.rb +0 -55
  112. data/test/foreman_app/app/controllers/common_parameters_controller.rb +0 -46
  113. data/test/foreman_app/app/controllers/compute_resources_controller.rb +0 -103
  114. data/test/foreman_app/app/controllers/compute_resources_vms_controller.rb +0 -78
  115. data/test/foreman_app/app/controllers/concerns/api/taxonomy_scope.rb +0 -15
  116. data/test/foreman_app/app/controllers/concerns/api/v2/taxonomies_controller.rb +0 -99
  117. data/test/foreman_app/app/controllers/config_templates_controller.rb +0 -105
  118. data/test/foreman_app/app/controllers/dashboard_controller.rb +0 -21
  119. data/test/foreman_app/app/controllers/domains_controller.rb +0 -55
  120. data/test/foreman_app/app/controllers/environments_controller.rb +0 -59
  121. data/test/foreman_app/app/controllers/fact_values_controller.rb +0 -60
  122. data/test/foreman_app/app/controllers/facts_controller.rb +0 -25
  123. data/test/foreman_app/app/controllers/home_controller.rb +0 -37
  124. data/test/foreman_app/app/controllers/hostgroups_controller.rb +0 -115
  125. data/test/foreman_app/app/controllers/hosts_controller.rb +0 -570
  126. data/test/foreman_app/app/controllers/images_controller.rb +0 -57
  127. data/test/foreman_app/app/controllers/locations_controller.rb +0 -4
  128. data/test/foreman_app/app/controllers/lookup_keys_controller.rb +0 -60
  129. data/test/foreman_app/app/controllers/lookup_values_controller.rb +0 -58
  130. data/test/foreman_app/app/controllers/media_controller.rb +0 -56
  131. data/test/foreman_app/app/controllers/models_controller.rb +0 -49
  132. data/test/foreman_app/app/controllers/notices_controller.rb +0 -9
  133. data/test/foreman_app/app/controllers/operatingsystems_controller.rb +0 -77
  134. data/test/foreman_app/app/controllers/organizations_controller.rb +0 -4
  135. data/test/foreman_app/app/controllers/ptables_controller.rb +0 -56
  136. data/test/foreman_app/app/controllers/puppetclasses_controller.rb +0 -85
  137. data/test/foreman_app/app/controllers/reports_controller.rb +0 -60
  138. data/test/foreman_app/app/controllers/roles_controller.rb +0 -78
  139. data/test/foreman_app/app/controllers/settings_controller.rb +0 -21
  140. data/test/foreman_app/app/controllers/smart_proxies/autosign_controller.rb +0 -47
  141. data/test/foreman_app/app/controllers/smart_proxies/puppetca_controller.rb +0 -59
  142. data/test/foreman_app/app/controllers/smart_proxies_controller.rb +0 -43
  143. data/test/foreman_app/app/controllers/statistics_controller.rb +0 -27
  144. data/test/foreman_app/app/controllers/subnets_controller.rb +0 -88
  145. data/test/foreman_app/app/controllers/tasks_controller.rb +0 -16
  146. data/test/foreman_app/app/controllers/topbar_sweeper.rb +0 -24
  147. data/test/foreman_app/app/controllers/trends_controller.rb +0 -56
  148. data/test/foreman_app/app/controllers/unattended_controller.rb +0 -257
  149. data/test/foreman_app/app/controllers/usergroups_controller.rb +0 -44
  150. data/test/foreman_app/app/controllers/users_controller.rb +0 -150
  151. data/test/foreman_app/app/helpers/application_helper.rb +0 -317
  152. data/test/foreman_app/app/helpers/architecture_helper.rb +0 -2
  153. data/test/foreman_app/app/helpers/architectures_helper.rb +0 -2
  154. data/test/foreman_app/app/helpers/audits_helper.rb +0 -138
  155. data/test/foreman_app/app/helpers/auth_source_ldaps_helper.rb +0 -8
  156. data/test/foreman_app/app/helpers/auth_sources_helper.rb +0 -2
  157. data/test/foreman_app/app/helpers/bookmarks_helper.rb +0 -2
  158. data/test/foreman_app/app/helpers/common_parameters_helper.rb +0 -22
  159. data/test/foreman_app/app/helpers/compute_resources_helper.rb +0 -28
  160. data/test/foreman_app/app/helpers/compute_resources_vms_helper.rb +0 -45
  161. data/test/foreman_app/app/helpers/config_templates_helper.rb +0 -10
  162. data/test/foreman_app/app/helpers/dashboard_helper.rb +0 -35
  163. data/test/foreman_app/app/helpers/domains_helper.rb +0 -3
  164. data/test/foreman_app/app/helpers/environments_helper.rb +0 -3
  165. data/test/foreman_app/app/helpers/fact_values_helper.rb +0 -8
  166. data/test/foreman_app/app/helpers/home_helper.rb +0 -116
  167. data/test/foreman_app/app/helpers/hostgroups_helper.rb +0 -14
  168. data/test/foreman_app/app/helpers/hosts_and_hostgroups_helper.rb +0 -99
  169. data/test/foreman_app/app/helpers/hosts_helper.rb +0 -267
  170. data/test/foreman_app/app/helpers/images_helper.rb +0 -11
  171. data/test/foreman_app/app/helpers/layout_helper.rb +0 -214
  172. data/test/foreman_app/app/helpers/lookup_keys_helper.rb +0 -108
  173. data/test/foreman_app/app/helpers/media_helper.rb +0 -2
  174. data/test/foreman_app/app/helpers/medium_helper.rb +0 -2
  175. data/test/foreman_app/app/helpers/model_helper.rb +0 -2
  176. data/test/foreman_app/app/helpers/models_helper.rb +0 -2
  177. data/test/foreman_app/app/helpers/notices_helper.rb +0 -3
  178. data/test/foreman_app/app/helpers/operatingsystems_helper.rb +0 -40
  179. data/test/foreman_app/app/helpers/organization_helper.rb +0 -2
  180. data/test/foreman_app/app/helpers/ptables_helper.rb +0 -2
  181. data/test/foreman_app/app/helpers/puppetclasses_and_environments_helper.rb +0 -39
  182. data/test/foreman_app/app/helpers/puppetclasses_helper.rb +0 -16
  183. data/test/foreman_app/app/helpers/reports_helper.rb +0 -48
  184. data/test/foreman_app/app/helpers/settings_helper.rb +0 -27
  185. data/test/foreman_app/app/helpers/smart_proxies/autosign_helper.rb +0 -6
  186. data/test/foreman_app/app/helpers/smart_proxies/puppetca_helper.rb +0 -20
  187. data/test/foreman_app/app/helpers/smart_proxies_helper.rb +0 -2
  188. data/test/foreman_app/app/helpers/statistics_helper.rb +0 -16
  189. data/test/foreman_app/app/helpers/subnets_helper.rb +0 -9
  190. data/test/foreman_app/app/helpers/tasks_helper.rb +0 -22
  191. data/test/foreman_app/app/helpers/taxonomy_helper.rb +0 -107
  192. data/test/foreman_app/app/helpers/trends_helper.rb +0 -46
  193. data/test/foreman_app/app/helpers/unattended_helper.rb +0 -16
  194. data/test/foreman_app/app/helpers/usergroups_helper.rb +0 -2
  195. data/test/foreman_app/app/helpers/users_helper.rb +0 -21
  196. data/test/foreman_app/app/models/architecture.rb +0 -23
  197. data/test/foreman_app/app/models/archlinux.rb +0 -27
  198. data/test/foreman_app/app/models/auth_source.rb +0 -70
  199. data/test/foreman_app/app/models/auth_source_internal.rb +0 -17
  200. data/test/foreman_app/app/models/auth_source_ldap.rb +0 -147
  201. data/test/foreman_app/app/models/authorization.rb +0 -51
  202. data/test/foreman_app/app/models/bookmark.rb +0 -30
  203. data/test/foreman_app/app/models/classification.rb +0 -126
  204. data/test/foreman_app/app/models/common_parameter.rb +0 -13
  205. data/test/foreman_app/app/models/compute_resource.rb +0 -232
  206. data/test/foreman_app/app/models/config_template.rb +0 -172
  207. data/test/foreman_app/app/models/dashboard.rb +0 -53
  208. data/test/foreman_app/app/models/debian.rb +0 -47
  209. data/test/foreman_app/app/models/domain.rb +0 -90
  210. data/test/foreman_app/app/models/domain_parameter.rb +0 -22
  211. data/test/foreman_app/app/models/environment.rb +0 -57
  212. data/test/foreman_app/app/models/environment_class.rb +0 -25
  213. data/test/foreman_app/app/models/fact_name.rb +0 -17
  214. data/test/foreman_app/app/models/fact_trend.rb +0 -57
  215. data/test/foreman_app/app/models/fact_value.rb +0 -83
  216. data/test/foreman_app/app/models/facts_importer.rb +0 -121
  217. data/test/foreman_app/app/models/feature.rb +0 -4
  218. data/test/foreman_app/app/models/foreman_trend.rb +0 -38
  219. data/test/foreman_app/app/models/group_parameter.rb +0 -22
  220. data/test/foreman_app/app/models/host.rb +0 -30
  221. data/test/foreman_app/app/models/host/base.rb +0 -141
  222. data/test/foreman_app/app/models/host/hostmix.rb +0 -13
  223. data/test/foreman_app/app/models/host/managed.rb +0 -854
  224. data/test/foreman_app/app/models/host_class.rb +0 -13
  225. data/test/foreman_app/app/models/host_common.rb +0 -95
  226. data/test/foreman_app/app/models/host_mailer.rb +0 -77
  227. data/test/foreman_app/app/models/host_observer.rb +0 -19
  228. data/test/foreman_app/app/models/host_parameter.rb +0 -20
  229. data/test/foreman_app/app/models/host_template_helpers.rb +0 -43
  230. data/test/foreman_app/app/models/hostext/search.rb +0 -128
  231. data/test/foreman_app/app/models/hostgroup.rb +0 -159
  232. data/test/foreman_app/app/models/hostgroup_class.rb +0 -15
  233. data/test/foreman_app/app/models/image.rb +0 -14
  234. data/test/foreman_app/app/models/key_pair.rb +0 -5
  235. data/test/foreman_app/app/models/location.rb +0 -25
  236. data/test/foreman_app/app/models/log.rb +0 -25
  237. data/test/foreman_app/app/models/lookup_key.rb +0 -261
  238. data/test/foreman_app/app/models/lookup_value.rb +0 -61
  239. data/test/foreman_app/app/models/medium.rb +0 -58
  240. data/test/foreman_app/app/models/message.rb +0 -19
  241. data/test/foreman_app/app/models/model.rb +0 -14
  242. data/test/foreman_app/app/models/nic.rb +0 -61
  243. data/test/foreman_app/app/models/nic/bmc.rb +0 -22
  244. data/test/foreman_app/app/models/nic/bootable.rb +0 -31
  245. data/test/foreman_app/app/models/nic/interface.rb +0 -23
  246. data/test/foreman_app/app/models/nic/managed.rb +0 -57
  247. data/test/foreman_app/app/models/notice.rb +0 -36
  248. data/test/foreman_app/app/models/operatingsystem.rb +0 -196
  249. data/test/foreman_app/app/models/orchestration.rb +0 -184
  250. data/test/foreman_app/app/models/orchestration/compute.rb +0 -157
  251. data/test/foreman_app/app/models/orchestration/dhcp.rb +0 -154
  252. data/test/foreman_app/app/models/orchestration/dns.rb +0 -130
  253. data/test/foreman_app/app/models/orchestration/puppetca.rb +0 -79
  254. data/test/foreman_app/app/models/orchestration/ssh_provision.rb +0 -115
  255. data/test/foreman_app/app/models/orchestration/tftp.rb +0 -133
  256. data/test/foreman_app/app/models/organization.rb +0 -24
  257. data/test/foreman_app/app/models/os_default_template.rb +0 -11
  258. data/test/foreman_app/app/models/os_parameter.rb +0 -16
  259. data/test/foreman_app/app/models/parameter.rb +0 -34
  260. data/test/foreman_app/app/models/ptable.rb +0 -25
  261. data/test/foreman_app/app/models/puppet_class_importer.rb +0 -269
  262. data/test/foreman_app/app/models/puppetclass.rb +0 -172
  263. data/test/foreman_app/app/models/redhat.rb +0 -61
  264. data/test/foreman_app/app/models/report.rb +0 -356
  265. data/test/foreman_app/app/models/report_common.rb +0 -52
  266. data/test/foreman_app/app/models/role.rb +0 -156
  267. data/test/foreman_app/app/models/setting.rb +0 -174
  268. data/test/foreman_app/app/models/setting/auth.rb +0 -29
  269. data/test/foreman_app/app/models/setting/general.rb +0 -27
  270. data/test/foreman_app/app/models/setting/provisioning.rb +0 -28
  271. data/test/foreman_app/app/models/setting/puppet.rb +0 -36
  272. data/test/foreman_app/app/models/smart_proxies/puppet_ca.rb +0 -66
  273. data/test/foreman_app/app/models/smart_proxy.rb +0 -96
  274. data/test/foreman_app/app/models/solaris.rb +0 -114
  275. data/test/foreman_app/app/models/source.rb +0 -18
  276. data/test/foreman_app/app/models/subnet.rb +0 -146
  277. data/test/foreman_app/app/models/subnet_domain.rb +0 -12
  278. data/test/foreman_app/app/models/suse.rb +0 -22
  279. data/test/foreman_app/app/models/tax_host.rb +0 -181
  280. data/test/foreman_app/app/models/taxable_taxonomy.rb +0 -14
  281. data/test/foreman_app/app/models/taxonomix.rb +0 -47
  282. data/test/foreman_app/app/models/taxonomy.rb +0 -135
  283. data/test/foreman_app/app/models/template_combination.rb +0 -12
  284. data/test/foreman_app/app/models/template_kind.rb +0 -6
  285. data/test/foreman_app/app/models/token.rb +0 -23
  286. data/test/foreman_app/app/models/trend.rb +0 -22
  287. data/test/foreman_app/app/models/trend_counter.rb +0 -7
  288. data/test/foreman_app/app/models/trend_importer.rb +0 -50
  289. data/test/foreman_app/app/models/user.rb +0 -251
  290. data/test/foreman_app/app/models/user_fact.rb +0 -26
  291. data/test/foreman_app/app/models/user_hostgroup.rb +0 -10
  292. data/test/foreman_app/app/models/user_role.rb +0 -32
  293. data/test/foreman_app/app/models/usergroup.rb +0 -61
  294. data/test/foreman_app/app/models/usergroup_member.rb +0 -5
  295. data/test/foreman_app/app/models/windows.rb +0 -20
  296. data/test/foreman_app/app/views/api/v1/architectures/create.json.rabl +0 -3
  297. data/test/foreman_app/app/views/api/v1/architectures/index.json.rabl +0 -3
  298. data/test/foreman_app/app/views/api/v1/architectures/show.json.rabl +0 -3
  299. data/test/foreman_app/app/views/api/v1/audits/index.json.rabl +0 -3
  300. data/test/foreman_app/app/views/api/v1/audits/show.json.rabl +0 -5
  301. data/test/foreman_app/app/views/api/v1/auth_source_ldaps/index.json.rabl +0 -3
  302. data/test/foreman_app/app/views/api/v1/auth_source_ldaps/show.json.rabl +0 -3
  303. data/test/foreman_app/app/views/api/v1/bookmarks/create.json.rabl +0 -2
  304. data/test/foreman_app/app/views/api/v1/bookmarks/index.json.rabl +0 -3
  305. data/test/foreman_app/app/views/api/v1/bookmarks/show.json.rabl +0 -2
  306. data/test/foreman_app/app/views/api/v1/bookmarks/update.json.rabl +0 -8
  307. data/test/foreman_app/app/views/api/v1/common_parameters/create.json.rabl +0 -3
  308. data/test/foreman_app/app/views/api/v1/common_parameters/index.json.rabl +0 -3
  309. data/test/foreman_app/app/views/api/v1/common_parameters/show.json.rabl +0 -3
  310. data/test/foreman_app/app/views/api/v1/compute_resources/create.json.rabl +0 -3
  311. data/test/foreman_app/app/views/api/v1/compute_resources/ec2.json.rabl +0 -1
  312. data/test/foreman_app/app/views/api/v1/compute_resources/index.json.rabl +0 -3
  313. data/test/foreman_app/app/views/api/v1/compute_resources/libvirt.json.rabl +0 -0
  314. data/test/foreman_app/app/views/api/v1/compute_resources/openstack.json.rabl +0 -1
  315. data/test/foreman_app/app/views/api/v1/compute_resources/ovirt.json.rabl +0 -1
  316. data/test/foreman_app/app/views/api/v1/compute_resources/rackspace.json.rabl +0 -1
  317. data/test/foreman_app/app/views/api/v1/compute_resources/show.json.rabl +0 -8
  318. data/test/foreman_app/app/views/api/v1/compute_resources/vmware.json.rabl +0 -1
  319. data/test/foreman_app/app/views/api/v1/config_templates/create.json.rabl +0 -3
  320. data/test/foreman_app/app/views/api/v1/config_templates/index.json.rabl +0 -3
  321. data/test/foreman_app/app/views/api/v1/config_templates/show.json.rabl +0 -11
  322. data/test/foreman_app/app/views/api/v1/domains/index.json.rabl +0 -3
  323. data/test/foreman_app/app/views/api/v1/domains/show.json.rabl +0 -2
  324. data/test/foreman_app/app/views/api/v1/environments/create.json.rabl +0 -3
  325. data/test/foreman_app/app/views/api/v1/environments/index.json.rabl +0 -3
  326. data/test/foreman_app/app/views/api/v1/environments/show.json.rabl +0 -5
  327. data/test/foreman_app/app/views/api/v1/errors/access_denied.json.rabl +0 -4
  328. data/test/foreman_app/app/views/api/v1/errors/not_found.json.rabl +0 -3
  329. data/test/foreman_app/app/views/api/v1/errors/param_error.json.rabl +0 -7
  330. data/test/foreman_app/app/views/api/v1/errors/route_error.json.rabl +0 -4
  331. data/test/foreman_app/app/views/api/v1/errors/standard_error.json.rabl +0 -5
  332. data/test/foreman_app/app/views/api/v1/errors/unauthorized.json.rabl +0 -3
  333. data/test/foreman_app/app/views/api/v1/errors/unprocessable_entity.json.rabl +0 -6
  334. data/test/foreman_app/app/views/api/v1/home/index.json.rabl +0 -24
  335. data/test/foreman_app/app/views/api/v1/home/status.json.rabl +0 -6
  336. data/test/foreman_app/app/views/api/v1/hostgroups/create.json.rabl +0 -3
  337. data/test/foreman_app/app/views/api/v1/hostgroups/index.json.rabl +0 -3
  338. data/test/foreman_app/app/views/api/v1/hostgroups/show.json.rabl +0 -3
  339. data/test/foreman_app/app/views/api/v1/hosts/create.json.rabl +0 -3
  340. data/test/foreman_app/app/views/api/v1/hosts/index.json.rabl +0 -3
  341. data/test/foreman_app/app/views/api/v1/hosts/show.json.rabl +0 -12
  342. data/test/foreman_app/app/views/api/v1/images/index.json.rabl +0 -3
  343. data/test/foreman_app/app/views/api/v1/images/show.json.rabl +0 -3
  344. data/test/foreman_app/app/views/api/v1/lookup_keys/index.json.rabl +0 -3
  345. data/test/foreman_app/app/views/api/v1/lookup_keys/show.json.rabl +0 -3
  346. data/test/foreman_app/app/views/api/v1/media/index.json.rabl +0 -3
  347. data/test/foreman_app/app/views/api/v1/media/show.json.rabl +0 -9
  348. data/test/foreman_app/app/views/api/v1/models/index.rabl +0 -4
  349. data/test/foreman_app/app/views/api/v1/models/show.rabl +0 -3
  350. data/test/foreman_app/app/views/api/v1/operatingsystems/create.json.rabl +0 -4
  351. data/test/foreman_app/app/views/api/v1/operatingsystems/index.json.rabl +0 -3
  352. data/test/foreman_app/app/views/api/v1/operatingsystems/show.json.rabl +0 -22
  353. data/test/foreman_app/app/views/api/v1/operatingsystems/update.json.rabl +0 -3
  354. data/test/foreman_app/app/views/api/v1/ptables/index.json.rabl +0 -3
  355. data/test/foreman_app/app/views/api/v1/ptables/show.json.rabl +0 -3
  356. data/test/foreman_app/app/views/api/v1/reports/index.json.rabl +0 -3
  357. data/test/foreman_app/app/views/api/v1/reports/show.json.rabl +0 -16
  358. data/test/foreman_app/app/views/api/v1/roles/create.json.rabl +0 -3
  359. data/test/foreman_app/app/views/api/v1/roles/index.json.rabl +0 -3
  360. data/test/foreman_app/app/views/api/v1/roles/show.json.rabl +0 -3
  361. data/test/foreman_app/app/views/api/v1/settings/index.json.rabl +0 -3
  362. data/test/foreman_app/app/views/api/v1/settings/show.json.rabl +0 -3
  363. data/test/foreman_app/app/views/api/v1/smart_proxies/index.json.rabl +0 -3
  364. data/test/foreman_app/app/views/api/v1/smart_proxies/show.json.rabl +0 -9
  365. data/test/foreman_app/app/views/api/v1/subnets/create.json.rabl +0 -3
  366. data/test/foreman_app/app/views/api/v1/subnets/index.json.rabl +0 -5
  367. data/test/foreman_app/app/views/api/v1/subnets/show.json.rabl +0 -17
  368. data/test/foreman_app/app/views/api/v1/subnets/update.json.rabl +0 -3
  369. data/test/foreman_app/app/views/api/v1/template_kinds/index.json.rabl +0 -3
  370. data/test/foreman_app/app/views/api/v1/template_kinds/show.json.rabl +0 -3
  371. data/test/foreman_app/app/views/api/v1/usergroups/index.json.rabl +0 -3
  372. data/test/foreman_app/app/views/api/v1/usergroups/show.json.rabl +0 -3
  373. data/test/foreman_app/app/views/api/v1/users/create.json.rabl +0 -3
  374. data/test/foreman_app/app/views/api/v1/users/index.json.rabl +0 -5
  375. data/test/foreman_app/app/views/api/v1/users/show.json.rabl +0 -13
  376. data/test/foreman_app/app/views/api/v2/config_templates/create.json.rabl +0 -3
  377. data/test/foreman_app/app/views/api/v2/config_templates/index.json.rabl +0 -3
  378. data/test/foreman_app/app/views/api/v2/config_templates/show.json.rabl +0 -33
  379. data/test/foreman_app/app/views/api/v2/errors/access_denied.json.rabl +0 -4
  380. data/test/foreman_app/app/views/api/v2/errors/not_found.json.rabl +0 -3
  381. data/test/foreman_app/app/views/api/v2/errors/param_error.json.rabl +0 -7
  382. data/test/foreman_app/app/views/api/v2/errors/route_error.json.rabl +0 -4
  383. data/test/foreman_app/app/views/api/v2/errors/standard_error.json.rabl +0 -5
  384. data/test/foreman_app/app/views/api/v2/errors/unauthorized.json.rabl +0 -3
  385. data/test/foreman_app/app/views/api/v2/errors/unprocessable_entity.json.rabl +0 -6
  386. data/test/foreman_app/app/views/api/v2/parameters/create.json.rabl +0 -3
  387. data/test/foreman_app/app/views/api/v2/parameters/index.json.rabl +0 -3
  388. data/test/foreman_app/app/views/api/v2/parameters/show.json.rabl +0 -3
  389. data/test/foreman_app/app/views/api/v2/parameters/update.json.rabl +0 -3
  390. data/test/foreman_app/app/views/api/v2/puppetclasses/show.json.rabl +0 -7
  391. data/test/foreman_app/app/views/api/v2/taxonomies/index.json.rabl +0 -3
  392. data/test/foreman_app/app/views/api/v2/taxonomies/show.json.rabl +0 -7
  393. data/test/foreman_app/app/views/api/v2/taxonomies/update.json.rabl +0 -3
  394. data/test/foreman_app/app/views/api/v2/template_combinations/create.json.rabl +0 -3
  395. data/test/foreman_app/app/views/api/v2/template_combinations/index.json.rabl +0 -3
  396. data/test/foreman_app/app/views/api/v2/template_combinations/show.json.rabl +0 -3
  397. data/test/foreman_app/app/views/architectures/_form.html.erb +0 -6
  398. data/test/foreman_app/app/views/architectures/edit.html.erb +0 -3
  399. data/test/foreman_app/app/views/architectures/index.html.erb +0 -21
  400. data/test/foreman_app/app/views/architectures/new.html.erb +0 -3
  401. data/test/foreman_app/app/views/architectures/welcome.html.erb +0 -14
  402. data/test/foreman_app/app/views/audits/_list.erb +0 -24
  403. data/test/foreman_app/app/views/audits/index.html.erb +0 -6
  404. data/test/foreman_app/app/views/audits/show.html.erb +0 -56
  405. data/test/foreman_app/app/views/auth_source_ldaps/_form.html.erb +0 -23
  406. data/test/foreman_app/app/views/auth_source_ldaps/edit.html.erb +0 -3
  407. data/test/foreman_app/app/views/auth_source_ldaps/index.html.erb +0 -22
  408. data/test/foreman_app/app/views/auth_source_ldaps/new.html.erb +0 -3
  409. data/test/foreman_app/app/views/auth_source_ldaps/welcome.html.erb +0 -8
  410. data/test/foreman_app/app/views/bookmarks/_form.html.erb +0 -8
  411. data/test/foreman_app/app/views/bookmarks/_list.html.erb +0 -7
  412. data/test/foreman_app/app/views/bookmarks/edit.html.erb +0 -3
  413. data/test/foreman_app/app/views/bookmarks/index.html.erb +0 -25
  414. data/test/foreman_app/app/views/bookmarks/new.html.erb +0 -3
  415. data/test/foreman_app/app/views/bookmarks/welcome.html.erb +0 -8
  416. data/test/foreman_app/app/views/common/403.html.erb +0 -9
  417. data/test/foreman_app/app/views/common/404.html.erb +0 -8
  418. data/test/foreman_app/app/views/common/500.html.erb +0 -19
  419. data/test/foreman_app/app/views/common/_domain.html.erb +0 -9
  420. data/test/foreman_app/app/views/common/_domain_subnet.html.erb +0 -10
  421. data/test/foreman_app/app/views/common/_edit_habtm.erb +0 -20
  422. data/test/foreman_app/app/views/common/_notice.erb +0 -20
  423. data/test/foreman_app/app/views/common/_puppetclasses_or_envs_changed.html.erb +0 -32
  424. data/test/foreman_app/app/views/common/_searchbar.erb +0 -37
  425. data/test/foreman_app/app/views/common/_show_habtm.html.erb +0 -1
  426. data/test/foreman_app/app/views/common/os_selection/_architecture.html.erb +0 -9
  427. data/test/foreman_app/app/views/common/os_selection/_image_details.html.erb +0 -7
  428. data/test/foreman_app/app/views/common/os_selection/_initial.html.erb +0 -15
  429. data/test/foreman_app/app/views/common/os_selection/_operatingsystem.html.erb +0 -15
  430. data/test/foreman_app/app/views/common_parameters/_form.html.erb +0 -6
  431. data/test/foreman_app/app/views/common_parameters/_inherited_parameters.erb +0 -23
  432. data/test/foreman_app/app/views/common_parameters/_parameter.erb +0 -14
  433. data/test/foreman_app/app/views/common_parameters/_parameters.erb +0 -6
  434. data/test/foreman_app/app/views/common_parameters/_puppetclass_parameter.erb +0 -16
  435. data/test/foreman_app/app/views/common_parameters/_puppetclasses_parameters.erb +0 -7
  436. data/test/foreman_app/app/views/common_parameters/_show_parameter.html.erb +0 -5
  437. data/test/foreman_app/app/views/common_parameters/edit.html.erb +0 -3
  438. data/test/foreman_app/app/views/common_parameters/index.html.erb +0 -22
  439. data/test/foreman_app/app/views/common_parameters/new.html.erb +0 -3
  440. data/test/foreman_app/app/views/compute_resources/_form.html.erb +0 -44
  441. data/test/foreman_app/app/views/compute_resources/edit.html.erb +0 -3
  442. data/test/foreman_app/app/views/compute_resources/form/_ec2.html.erb +0 -8
  443. data/test/foreman_app/app/views/compute_resources/form/_libvirt.html.erb +0 -9
  444. data/test/foreman_app/app/views/compute_resources/form/_openstack.html.erb +0 -9
  445. data/test/foreman_app/app/views/compute_resources/form/_ovirt.html.erb +0 -8
  446. data/test/foreman_app/app/views/compute_resources/form/_rackspace.html.erb +0 -8
  447. data/test/foreman_app/app/views/compute_resources/form/_vmware.html.erb +0 -8
  448. data/test/foreman_app/app/views/compute_resources/index.html.erb +0 -24
  449. data/test/foreman_app/app/views/compute_resources/new.html.erb +0 -3
  450. data/test/foreman_app/app/views/compute_resources/show.html.erb +0 -56
  451. data/test/foreman_app/app/views/compute_resources_vms/form/_ec2.html.erb +0 -10
  452. data/test/foreman_app/app/views/compute_resources_vms/form/_libvirt.html.erb +0 -33
  453. data/test/foreman_app/app/views/compute_resources_vms/form/_openstack.html.erb +0 -9
  454. data/test/foreman_app/app/views/compute_resources_vms/form/_ovirt.html.erb +0 -43
  455. data/test/foreman_app/app/views/compute_resources_vms/form/_rackspace.html.erb +0 -7
  456. data/test/foreman_app/app/views/compute_resources_vms/form/_vmware.html.erb +0 -37
  457. data/test/foreman_app/app/views/compute_resources_vms/form/libvirt/_network.html.erb +0 -9
  458. data/test/foreman_app/app/views/compute_resources_vms/form/libvirt/_volume.html.erb +0 -6
  459. data/test/foreman_app/app/views/compute_resources_vms/form/ovirt/_network.html.erb +0 -13
  460. data/test/foreman_app/app/views/compute_resources_vms/form/ovirt/_volume.html.erb +0 -18
  461. data/test/foreman_app/app/views/compute_resources_vms/form/vmware/_network.html.erb +0 -8
  462. data/test/foreman_app/app/views/compute_resources_vms/form/vmware/_volume.html.erb +0 -8
  463. data/test/foreman_app/app/views/compute_resources_vms/index.html.erb +0 -3
  464. data/test/foreman_app/app/views/compute_resources_vms/index/_ec2.html.erb +0 -25
  465. data/test/foreman_app/app/views/compute_resources_vms/index/_libvirt.html.erb +0 -23
  466. data/test/foreman_app/app/views/compute_resources_vms/index/_openstack.html.erb +0 -23
  467. data/test/foreman_app/app/views/compute_resources_vms/index/_ovirt.html.erb +0 -24
  468. data/test/foreman_app/app/views/compute_resources_vms/index/_rackspace.html.erb +0 -22
  469. data/test/foreman_app/app/views/compute_resources_vms/index/_vmware.html.erb +0 -27
  470. data/test/foreman_app/app/views/compute_resources_vms/new.html.erb +0 -9
  471. data/test/foreman_app/app/views/compute_resources_vms/show.html.erb +0 -8
  472. data/test/foreman_app/app/views/compute_resources_vms/show/_ec2.html.erb +0 -19
  473. data/test/foreman_app/app/views/compute_resources_vms/show/_libvirt.html.erb +0 -53
  474. data/test/foreman_app/app/views/compute_resources_vms/show/_openstack.html.erb +0 -19
  475. data/test/foreman_app/app/views/compute_resources_vms/show/_ovirt.html.erb +0 -47
  476. data/test/foreman_app/app/views/compute_resources_vms/show/_rackspace.html.erb +0 -19
  477. data/test/foreman_app/app/views/compute_resources_vms/show/_vmware.html.erb +0 -16
  478. data/test/foreman_app/app/views/config_templates/_combination.html.erb +0 -5
  479. data/test/foreman_app/app/views/config_templates/_combinations.html.erb +0 -6
  480. data/test/foreman_app/app/views/config_templates/_diff.erb +0 -14
  481. data/test/foreman_app/app/views/config_templates/_form.html.erb +0 -94
  482. data/test/foreman_app/app/views/config_templates/edit.html.erb +0 -3
  483. data/test/foreman_app/app/views/config_templates/index.html.erb +0 -31
  484. data/test/foreman_app/app/views/config_templates/new.html.erb +0 -3
  485. data/test/foreman_app/app/views/dashboard/_status_table.html.erb +0 -32
  486. data/test/foreman_app/app/views/dashboard/index.html.erb +0 -24
  487. data/test/foreman_app/app/views/dashboard/welcome.html.erb +0 -118
  488. data/test/foreman_app/app/views/domains/_form.html.erb +0 -43
  489. data/test/foreman_app/app/views/domains/edit.html.erb +0 -3
  490. data/test/foreman_app/app/views/domains/index.html.erb +0 -20
  491. data/test/foreman_app/app/views/domains/new.html.erb +0 -3
  492. data/test/foreman_app/app/views/domains/welcome.html.erb +0 -13
  493. data/test/foreman_app/app/views/environments/_form.html.erb +0 -38
  494. data/test/foreman_app/app/views/environments/edit.html.erb +0 -3
  495. data/test/foreman_app/app/views/environments/index.html.erb +0 -27
  496. data/test/foreman_app/app/views/environments/new.html.erb +0 -3
  497. data/test/foreman_app/app/views/environments/welcome.html.erb +0 -15
  498. data/test/foreman_app/app/views/fact_values/index.html.erb +0 -40
  499. data/test/foreman_app/app/views/fact_values/welcome.html.erb +0 -9
  500. data/test/foreman_app/app/views/facts/show.html.erb +0 -3
  501. data/test/foreman_app/app/views/home/_location_dropdown.html.erb +0 -17
  502. data/test/foreman_app/app/views/home/_org_switcher.html.erb +0 -11
  503. data/test/foreman_app/app/views/home/_organization_dropdown.html.erb +0 -17
  504. data/test/foreman_app/app/views/home/_settings.html.erb +0 -22
  505. data/test/foreman_app/app/views/home/_topbar.html.erb +0 -33
  506. data/test/foreman_app/app/views/home/_user_dropdown.html.erb +0 -10
  507. data/test/foreman_app/app/views/host_mailer/_active_hosts.html.erb +0 -30
  508. data/test/foreman_app/app/views/host_mailer/_link_to_host.html.erb +0 -5
  509. data/test/foreman_app/app/views/host_mailer/_list.html.erb +0 -13
  510. data/test/foreman_app/app/views/host_mailer/_nonactive_hosts.html.erb +0 -30
  511. data/test/foreman_app/app/views/host_mailer/error_state.html.erb +0 -10
  512. data/test/foreman_app/app/views/host_mailer/summary.html.erb +0 -17
  513. data/test/foreman_app/app/views/hostgroups/_form.html.erb +0 -69
  514. data/test/foreman_app/app/views/hostgroups/edit.html.erb +0 -3
  515. data/test/foreman_app/app/views/hostgroups/index.html.erb +0 -23
  516. data/test/foreman_app/app/views/hostgroups/new.html.erb +0 -3
  517. data/test/foreman_app/app/views/hostgroups/welcome.html.erb +0 -20
  518. data/test/foreman_app/app/views/hosts/_assign_hosts.html.erb +0 -42
  519. data/test/foreman_app/app/views/hosts/_compute.html.erb +0 -12
  520. data/test/foreman_app/app/views/hosts/_conflicts.html.erb +0 -28
  521. data/test/foreman_app/app/views/hosts/_form.html.erb +0 -109
  522. data/test/foreman_app/app/views/hosts/_interfaces.html.erb +0 -29
  523. data/test/foreman_app/app/views/hosts/_list.html.erb +0 -47
  524. data/test/foreman_app/app/views/hosts/_metrics.html.erb +0 -13
  525. data/test/foreman_app/app/views/hosts/_operating_system.erb +0 -41
  526. data/test/foreman_app/app/views/hosts/_overview.html.erb +0 -25
  527. data/test/foreman_app/app/views/hosts/_progress.erb +0 -8
  528. data/test/foreman_app/app/views/hosts/_provisioning.html.erb +0 -9
  529. data/test/foreman_app/app/views/hosts/_selected_hosts.html.erb +0 -31
  530. data/test/foreman_app/app/views/hosts/_taxonomy_import_option.html.erb +0 -2
  531. data/test/foreman_app/app/views/hosts/_unattended.html.erb +0 -34
  532. data/test/foreman_app/app/views/hosts/assign_hosts.html.erb +0 -5
  533. data/test/foreman_app/app/views/hosts/console/log.html.erb +0 -17
  534. data/test/foreman_app/app/views/hosts/console/spice.html.erb +0 -18
  535. data/test/foreman_app/app/views/hosts/console/vnc.html.erb +0 -21
  536. data/test/foreman_app/app/views/hosts/edit.html.erb +0 -7
  537. data/test/foreman_app/app/views/hosts/index.html.erb +0 -4
  538. data/test/foreman_app/app/views/hosts/multiple_build.html.erb +0 -6
  539. data/test/foreman_app/app/views/hosts/multiple_destroy.html.erb +0 -6
  540. data/test/foreman_app/app/views/hosts/multiple_disable.html.erb +0 -6
  541. data/test/foreman_app/app/views/hosts/multiple_enable.html.erb +0 -6
  542. data/test/foreman_app/app/views/hosts/multiple_parameters.html.erb +0 -12
  543. data/test/foreman_app/app/views/hosts/multiple_puppetrun.html.erb +0 -5
  544. data/test/foreman_app/app/views/hosts/new.html.erb +0 -3
  545. data/test/foreman_app/app/views/hosts/query.html.erb +0 -3
  546. data/test/foreman_app/app/views/hosts/select_multiple_environment.html.erb +0 -8
  547. data/test/foreman_app/app/views/hosts/select_multiple_hostgroup.html.erb +0 -6
  548. data/test/foreman_app/app/views/hosts/select_multiple_location.html.erb +0 -6
  549. data/test/foreman_app/app/views/hosts/select_multiple_organization.html.erb +0 -6
  550. data/test/foreman_app/app/views/hosts/show.html.erb +0 -55
  551. data/test/foreman_app/app/views/hosts/storeconfig_klasses.html.erb +0 -12
  552. data/test/foreman_app/app/views/hosts/update_multiple_parameters.html.erb +0 -18
  553. data/test/foreman_app/app/views/hosts/welcome.html.erb +0 -10
  554. data/test/foreman_app/app/views/images/_form.html.erb +0 -16
  555. data/test/foreman_app/app/views/images/edit.html.erb +0 -3
  556. data/test/foreman_app/app/views/images/index.html.erb +0 -26
  557. data/test/foreman_app/app/views/images/new.html.erb +0 -4
  558. data/test/foreman_app/app/views/layouts/application.html.erb +0 -69
  559. data/test/foreman_app/app/views/locations/welcome.html.erb +0 -9
  560. data/test/foreman_app/app/views/lookup_keys/_fields.html.erb +0 -42
  561. data/test/foreman_app/app/views/lookup_keys/_value.html.erb +0 -6
  562. data/test/foreman_app/app/views/lookup_keys/edit.html.erb +0 -7
  563. data/test/foreman_app/app/views/lookup_keys/index.html.erb +0 -22
  564. data/test/foreman_app/app/views/media/_form.html.erb +0 -53
  565. data/test/foreman_app/app/views/media/edit.html.erb +0 -3
  566. data/test/foreman_app/app/views/media/index.html.erb +0 -26
  567. data/test/foreman_app/app/views/media/new.html.erb +0 -3
  568. data/test/foreman_app/app/views/media/welcome.html.erb +0 -19
  569. data/test/foreman_app/app/views/models/_form.html.erb +0 -8
  570. data/test/foreman_app/app/views/models/edit.html.erb +0 -3
  571. data/test/foreman_app/app/views/models/index.html.erb +0 -26
  572. data/test/foreman_app/app/views/models/new.html.erb +0 -3
  573. data/test/foreman_app/app/views/operatingsystems/_form.html.erb +0 -38
  574. data/test/foreman_app/app/views/operatingsystems/_template_defaults.html.erb +0 -19
  575. data/test/foreman_app/app/views/operatingsystems/_templates.html.erb +0 -2
  576. data/test/foreman_app/app/views/operatingsystems/edit.html.erb +0 -3
  577. data/test/foreman_app/app/views/operatingsystems/index.html.erb +0 -22
  578. data/test/foreman_app/app/views/operatingsystems/new.html.erb +0 -3
  579. data/test/foreman_app/app/views/organizations/welcome.html.erb +0 -14
  580. data/test/foreman_app/app/views/ptables/_form.html.erb +0 -8
  581. data/test/foreman_app/app/views/ptables/edit.html.erb +0 -3
  582. data/test/foreman_app/app/views/ptables/index.html.erb +0 -23
  583. data/test/foreman_app/app/views/ptables/new.html.erb +0 -3
  584. data/test/foreman_app/app/views/ptables/welcome.html.erb +0 -52
  585. data/test/foreman_app/app/views/puppetclasses/_class_parameters.html.erb +0 -16
  586. data/test/foreman_app/app/views/puppetclasses/_class_selection.html.erb +0 -44
  587. data/test/foreman_app/app/views/puppetclasses/_classes.html.erb +0 -23
  588. data/test/foreman_app/app/views/puppetclasses/_classes_parameters.html.erb +0 -14
  589. data/test/foreman_app/app/views/puppetclasses/_form.html.erb +0 -90
  590. data/test/foreman_app/app/views/puppetclasses/_selectedClasses.html.erb +0 -4
  591. data/test/foreman_app/app/views/puppetclasses/edit.html.erb +0 -3
  592. data/test/foreman_app/app/views/puppetclasses/index.html.erb +0 -33
  593. data/test/foreman_app/app/views/puppetclasses/new.html.erb +0 -3
  594. data/test/foreman_app/app/views/puppetclasses/no_route.html.erb +0 -11
  595. data/test/foreman_app/app/views/reports/_list.html.erb +0 -34
  596. data/test/foreman_app/app/views/reports/_metrics.html.erb +0 -25
  597. data/test/foreman_app/app/views/reports/_output.html.erb +0 -13
  598. data/test/foreman_app/app/views/reports/index.html.erb +0 -3
  599. data/test/foreman_app/app/views/reports/show.html.erb +0 -37
  600. data/test/foreman_app/app/views/reports/welcome.html.erb +0 -11
  601. data/test/foreman_app/app/views/roles/_form.html.erb +0 -28
  602. data/test/foreman_app/app/views/roles/edit.html.erb +0 -3
  603. data/test/foreman_app/app/views/roles/index.html.erb +0 -28
  604. data/test/foreman_app/app/views/roles/new.html.erb +0 -3
  605. data/test/foreman_app/app/views/roles/report.html.erb +0 -52
  606. data/test/foreman_app/app/views/settings/index.html.erb +0 -29
  607. data/test/foreman_app/app/views/smart_proxies/_form.html.erb +0 -38
  608. data/test/foreman_app/app/views/smart_proxies/autosign/_form.html.erb +0 -9
  609. data/test/foreman_app/app/views/smart_proxies/autosign/index.html.erb +0 -21
  610. data/test/foreman_app/app/views/smart_proxies/autosign/new.html.erb +0 -3
  611. data/test/foreman_app/app/views/smart_proxies/edit.html.erb +0 -3
  612. data/test/foreman_app/app/views/smart_proxies/index.html.erb +0 -37
  613. data/test/foreman_app/app/views/smart_proxies/new.html.erb +0 -3
  614. data/test/foreman_app/app/views/smart_proxies/puppetca/index.html.erb +0 -36
  615. data/test/foreman_app/app/views/statistics/index.html.erb +0 -5
  616. data/test/foreman_app/app/views/subnets/_fields.html.erb +0 -17
  617. data/test/foreman_app/app/views/subnets/_form.html.erb +0 -34
  618. data/test/foreman_app/app/views/subnets/edit.html.erb +0 -3
  619. data/test/foreman_app/app/views/subnets/import.html.erb +0 -26
  620. data/test/foreman_app/app/views/subnets/index.html.erb +0 -28
  621. data/test/foreman_app/app/views/subnets/new.html.erb +0 -3
  622. data/test/foreman_app/app/views/tasks/_list.html.erb +0 -5
  623. data/test/foreman_app/app/views/tasks/show.html.erb +0 -1
  624. data/test/foreman_app/app/views/taxonomies/_form.html.erb +0 -111
  625. data/test/foreman_app/app/views/taxonomies/_step1.html.erb +0 -14
  626. data/test/foreman_app/app/views/taxonomies/_step2.html.erb +0 -18
  627. data/test/foreman_app/app/views/taxonomies/clone.html.erb +0 -3
  628. data/test/foreman_app/app/views/taxonomies/edit.html.erb +0 -4
  629. data/test/foreman_app/app/views/taxonomies/index.html.erb +0 -39
  630. data/test/foreman_app/app/views/taxonomies/mismatches.html.erb +0 -37
  631. data/test/foreman_app/app/views/taxonomies/new.html.erb +0 -3
  632. data/test/foreman_app/app/views/taxonomies/step2.html.erb +0 -3
  633. data/test/foreman_app/app/views/trends/_fields.html.erb +0 -7
  634. data/test/foreman_app/app/views/trends/_form.html.erb +0 -9
  635. data/test/foreman_app/app/views/trends/_hosts.html.erb +0 -13
  636. data/test/foreman_app/app/views/trends/edit.html.erb +0 -33
  637. data/test/foreman_app/app/views/trends/index.html.erb +0 -47
  638. data/test/foreman_app/app/views/trends/new.html.erb +0 -3
  639. data/test/foreman_app/app/views/trends/show.html.erb +0 -19
  640. data/test/foreman_app/app/views/unattended/autowaik.xml.erb +0 -2
  641. data/test/foreman_app/app/views/unattended/autoyast.xml.erb +0 -80
  642. data/test/foreman_app/app/views/unattended/gpxe_kickstart_config.erb +0 -5
  643. data/test/foreman_app/app/views/unattended/grubby.erb +0 -9
  644. data/test/foreman_app/app/views/unattended/jumpstart.html.erb +0 -10
  645. data/test/foreman_app/app/views/unattended/jumpstart_finish.html.erb +0 -51
  646. data/test/foreman_app/app/views/unattended/kickstart.html.erb +0 -71
  647. data/test/foreman_app/app/views/unattended/preseed.html.erb +0 -66
  648. data/test/foreman_app/app/views/unattended/preseed_finish.html.erb +0 -7
  649. data/test/foreman_app/app/views/unattended/pxe_autowaik.erb +0 -3
  650. data/test/foreman_app/app/views/unattended/pxe_autoyast.erb +0 -4
  651. data/test/foreman_app/app/views/unattended/pxe_debian_config.erb +0 -4
  652. data/test/foreman_app/app/views/unattended/pxe_default.erb +0 -23
  653. data/test/foreman_app/app/views/unattended/pxe_jumpstart_config.erb +0 -10
  654. data/test/foreman_app/app/views/unattended/pxe_kickstart_config.erb +0 -4
  655. data/test/foreman_app/app/views/unattended/pxe_local.erb +0 -11
  656. data/test/foreman_app/app/views/unattended/snippets/_epel.erb +0 -15
  657. data/test/foreman_app/app/views/unattended/snippets/_http_proxy.erb +0 -8
  658. data/test/foreman_app/app/views/unattended/snippets/_puppet.conf.erb +0 -15
  659. data/test/foreman_app/app/views/unattended/snippets/_puppet.init.erb +0 -8
  660. data/test/foreman_app/app/views/unattended/snippets/_redhat_register.erb +0 -67
  661. data/test/foreman_app/app/views/unattended/snippets/_vmware.erb +0 -62
  662. data/test/foreman_app/app/views/usergroups/_form.html.erb +0 -7
  663. data/test/foreman_app/app/views/usergroups/edit.html.erb +0 -3
  664. data/test/foreman_app/app/views/usergroups/index.html.erb +0 -24
  665. data/test/foreman_app/app/views/usergroups/new.html.erb +0 -3
  666. data/test/foreman_app/app/views/users/_filters.html.erb +0 -38
  667. data/test/foreman_app/app/views/users/_form.html.erb +0 -58
  668. data/test/foreman_app/app/views/users/_user_fact.html.erb +0 -14
  669. data/test/foreman_app/app/views/users/edit.html.erb +0 -3
  670. data/test/foreman_app/app/views/users/index.html.erb +0 -31
  671. data/test/foreman_app/app/views/users/login.html.erb +0 -22
  672. data/test/foreman_app/app/views/users/new.html.erb +0 -3
  673. data/test/foreman_app/bundler.d/Gemfile.local.rb +0 -2
  674. data/test/foreman_app/bundler.d/assets.rb +0 -12
  675. data/test/foreman_app/bundler.d/console.rb +0 -5
  676. data/test/foreman_app/bundler.d/development.rb +0 -17
  677. data/test/foreman_app/bundler.d/fog.rb +0 -3
  678. data/test/foreman_app/bundler.d/i18n.rb +0 -5
  679. data/test/foreman_app/bundler.d/jsonp.rb +0 -3
  680. data/test/foreman_app/bundler.d/libvirt.rb +0 -3
  681. data/test/foreman_app/bundler.d/mysql.rb +0 -3
  682. data/test/foreman_app/bundler.d/mysql2.rb +0 -3
  683. data/test/foreman_app/bundler.d/openid.rb +0 -3
  684. data/test/foreman_app/bundler.d/ovirt.rb +0 -3
  685. data/test/foreman_app/bundler.d/postgresql.rb +0 -3
  686. data/test/foreman_app/bundler.d/sqlite.rb +0 -3
  687. data/test/foreman_app/bundler.d/test.rb +0 -17
  688. data/test/foreman_app/bundler.d/vmware.rb +0 -3
  689. data/test/foreman_app/config.ru +0 -8
  690. data/test/foreman_app/config/application.rb +0 -114
  691. data/test/foreman_app/config/boot.rb +0 -6
  692. data/test/foreman_app/config/database.yml +0 -22
  693. data/test/foreman_app/config/database.yml.example +0 -22
  694. data/test/foreman_app/config/email.yaml.example +0 -9
  695. data/test/foreman_app/config/environment.rb +0 -5
  696. data/test/foreman_app/config/environments/development.rb +0 -38
  697. data/test/foreman_app/config/environments/production.rb +0 -112
  698. data/test/foreman_app/config/environments/test.rb +0 -42
  699. data/test/foreman_app/config/ignored_environments.yml.sample +0 -9
  700. data/test/foreman_app/config/initializers/apipie.rb +0 -71
  701. data/test/foreman_app/config/initializers/backtrace_silencers.rb +0 -7
  702. data/test/foreman_app/config/initializers/email.rb +0 -17
  703. data/test/foreman_app/config/initializers/fast_gettext.rb +0 -49
  704. data/test/foreman_app/config/initializers/foreman.rb +0 -24
  705. data/test/foreman_app/config/initializers/hostable.rb +0 -3
  706. data/test/foreman_app/config/initializers/inflections.rb +0 -10
  707. data/test/foreman_app/config/initializers/local_secret_token.rb.example +0 -10
  708. data/test/foreman_app/config/initializers/mime_types.rb +0 -6
  709. data/test/foreman_app/config/initializers/puppet.rb +0 -22
  710. data/test/foreman_app/config/initializers/rack_openid.rb +0 -8
  711. data/test/foreman_app/config/initializers/secret_token.rb +0 -15
  712. data/test/foreman_app/config/initializers/session_store.rb +0 -8
  713. data/test/foreman_app/config/initializers/will_paginate.rb +0 -27
  714. data/test/foreman_app/config/initializers/wrap_parameters.rb +0 -13
  715. data/test/foreman_app/config/locales/README +0 -24
  716. data/test/foreman_app/config/locales/de.yml +0 -203
  717. data/test/foreman_app/config/locales/en.yml +0 -205
  718. data/test/foreman_app/config/locales/es.yml +0 -199
  719. data/test/foreman_app/config/locales/ja.yml +0 -197
  720. data/test/foreman_app/config/model.mappings.example +0 -342
  721. data/test/foreman_app/config/routes.rb +0 -332
  722. data/test/foreman_app/config/routes/api/apipiedoc.rb +0 -4
  723. data/test/foreman_app/config/routes/api/v1.rb +0 -65
  724. data/test/foreman_app/config/routes/api/v2.rb +0 -208
  725. data/test/foreman_app/config/settings.rb +0 -13
  726. data/test/foreman_app/config/settings.yaml +0 -18
  727. data/test/foreman_app/config/settings.yaml.example +0 -17
  728. data/test/foreman_app/db/migrate/20090714132448_create_hosts.rb +0 -47
  729. data/test/foreman_app/db/migrate/20090714132449_add_audits_table.rb +0 -27
  730. data/test/foreman_app/db/migrate/20090715143858_create_architectures.rb +0 -19
  731. data/test/foreman_app/db/migrate/20090717025820_create_media.rb +0 -19
  732. data/test/foreman_app/db/migrate/20090718060746_create_domains.rb +0 -15
  733. data/test/foreman_app/db/migrate/20090718064254_create_subnets.rb +0 -18
  734. data/test/foreman_app/db/migrate/20090720134126_create_operatingsystems.rb +0 -16
  735. data/test/foreman_app/db/migrate/20090722140138_create_models.rb +0 -16
  736. data/test/foreman_app/db/migrate/20090722141107_create_environments.rb +0 -18
  737. data/test/foreman_app/db/migrate/20090729132209_create_reports.rb +0 -14
  738. data/test/foreman_app/db/migrate/20090730152224_create_ptables.rb +0 -24
  739. data/test/foreman_app/db/migrate/20090802062223_create_puppetclasses.rb +0 -26
  740. data/test/foreman_app/db/migrate/20090804130144_create_parameters.rb +0 -13
  741. data/test/foreman_app/db/migrate/20090820130541_create_auth_sources.rb +0 -25
  742. data/test/foreman_app/db/migrate/20090905150131_create_hostgroups.rb +0 -24
  743. data/test/foreman_app/db/migrate/20090905155444_add_type_to_parameter.rb +0 -9
  744. data/test/foreman_app/db/migrate/20090907045751_add_domain_to_parameter.rb +0 -10
  745. data/test/foreman_app/db/migrate/20090915030726_change_report_field_type_to_text.rb +0 -13
  746. data/test/foreman_app/db/migrate/20090916053824_change_host_build_default_to_false.rb +0 -11
  747. data/test/foreman_app/db/migrate/20090920043521_add_index_to_host.rb +0 -25
  748. data/test/foreman_app/db/migrate/20090920064156_add_index_to_parameters.rb +0 -15
  749. data/test/foreman_app/db/migrate/20090920065522_add_index_to_reports.rb +0 -9
  750. data/test/foreman_app/db/migrate/20091012135004_create_users.rb +0 -19
  751. data/test/foreman_app/db/migrate/20091016031017_create_sessions.rb +0 -16
  752. data/test/foreman_app/db/migrate/20091022054108_add_status_to_report.rb +0 -15
  753. data/test/foreman_app/db/migrate/20091214045923_calc_existing_reports.rb +0 -19
  754. data/test/foreman_app/db/migrate/20091219132338_create_lookup_keys.rb +0 -14
  755. data/test/foreman_app/db/migrate/20091219132839_create_lookup_values.rb +0 -17
  756. data/test/foreman_app/db/migrate/20100115021803_change_mysql_reports_column.rb +0 -14
  757. data/test/foreman_app/db/migrate/20100310080727_add_family_to_os.rb +0 -33
  758. data/test/foreman_app/db/migrate/20100325142616_update_fact_names_and_values_to_bin.rb +0 -15
  759. data/test/foreman_app/db/migrate/20100414125652_add_releasename_to_os.rb +0 -24
  760. data/test/foreman_app/db/migrate/20100416124600_create_usergroups.rb +0 -17
  761. data/test/foreman_app/db/migrate/20100419151910_add_owner_to_hosts.rb +0 -26
  762. data/test/foreman_app/db/migrate/20100523114430_add_ubuntu_custom_lvm_ptable.rb +0 -67
  763. data/test/foreman_app/db/migrate/20100523141204_create_media_operatingsystems_and_migrate_data.rb +0 -34
  764. data/test/foreman_app/db/migrate/20100524080302_migrate_installation_medium_uri.rb +0 -15
  765. data/test/foreman_app/db/migrate/20100525094200_simplify_parameters.rb +0 -62
  766. data/test/foreman_app/db/migrate/20100601221000_update_os_minor.rb +0 -13
  767. data/test/foreman_app/db/migrate/20100616114400_change_family_in_os.rb +0 -50
  768. data/test/foreman_app/db/migrate/20100625155400_create_notices.rb +0 -21
  769. data/test/foreman_app/db/migrate/20100628123400_add_internal_auth.rb +0 -33
  770. data/test/foreman_app/db/migrate/20100629093200_create_roles.rb +0 -23
  771. data/test/foreman_app/db/migrate/20100701081235_add_user_domains_and_hostgroups.rb +0 -20
  772. data/test/foreman_app/db/migrate/20100822072954_create_user_facts.rb +0 -18
  773. data/test/foreman_app/db/migrate/20100823181036_add_enabled_to_hosts.rb +0 -9
  774. data/test/foreman_app/db/migrate/20100914092104_add_my_booleans_to_user.rb +0 -13
  775. data/test/foreman_app/db/migrate/20101018120548_create_messages.rb +0 -18
  776. data/test/foreman_app/db/migrate/20101018120603_create_sources.rb +0 -18
  777. data/test/foreman_app/db/migrate/20101018120621_create_logs.rb +0 -22
  778. data/test/foreman_app/db/migrate/20101019122857_add_metrics_to_report.rb +0 -9
  779. data/test/foreman_app/db/migrate/20101019183859_convert_reports.rb +0 -38
  780. data/test/foreman_app/db/migrate/20101103150254_add_owned_filter_to_user.rb +0 -9
  781. data/test/foreman_app/db/migrate/20101118130026_correct_media.rb +0 -35
  782. data/test/foreman_app/db/migrate/20101121080425_create_config_templates.rb +0 -15
  783. data/test/foreman_app/db/migrate/20101121135521_create_template_combinations.rb +0 -15
  784. data/test/foreman_app/db/migrate/20101122132041_create_operatingsystems_config_templates.rb +0 -12
  785. data/test/foreman_app/db/migrate/20101123152150_create_template_kinds.rb +0 -18
  786. data/test/foreman_app/db/migrate/20101123153303_create_os_default_templates.rb +0 -15
  787. data/test/foreman_app/db/migrate/20101125153351_add_default_templates.rb +0 -59
  788. data/test/foreman_app/db/migrate/20101130093613_add_sub_systems_to_subnet.rb +0 -13
  789. data/test/foreman_app/db/migrate/20101130100315_create_proxies.rb +0 -13
  790. data/test/foreman_app/db/migrate/20101202104444_add_proxy_to_domain.rb +0 -11
  791. data/test/foreman_app/db/migrate/20101213085232_add_grubby_template.rb +0 -15
  792. data/test/foreman_app/db/migrate/20110117162722_add_host_group_defaults.rb +0 -21
  793. data/test/foreman_app/db/migrate/20110128130239_add_default_pxe_menu_template.rb +0 -15
  794. data/test/foreman_app/db/migrate/20110213104226_create_proxy_features.rb +0 -28
  795. data/test/foreman_app/db/migrate/20110216101848_change_puppetmaster_column.rb +0 -21
  796. data/test/foreman_app/db/migrate/20110301154453_add_managed_to_hosts.rb +0 -15
  797. data/test/foreman_app/db/migrate/20110321070954_revert_face_names_and_values_to_text_records.rb +0 -13
  798. data/test/foreman_app/db/migrate/20110327123639_add_priority_to_parameter.rb +0 -11
  799. data/test/foreman_app/db/migrate/20110404150043_add_media_path_to_medium.rb +0 -13
  800. data/test/foreman_app/db/migrate/20110407091150_add_image_to_host.rb +0 -15
  801. data/test/foreman_app/db/migrate/20110412103238_remove_unused_fields_from_puppet_classes.rb +0 -9
  802. data/test/foreman_app/db/migrate/20110417102947_add_table_bookmarks.rb +0 -31
  803. data/test/foreman_app/db/migrate/20110420150600_add_solaris_templates.rb +0 -42
  804. data/test/foreman_app/db/migrate/20110613141800_add_solaris_disks.rb +0 -16
  805. data/test/foreman_app/db/migrate/20110616080444_add_look_up_key_id_to_puppet_class.rb +0 -28
  806. data/test/foreman_app/db/migrate/20110617190131_add_sparc_info_to_model.rb +0 -11
  807. data/test/foreman_app/db/migrate/20110619130336_add_ancestry_to_hostgroup.rb +0 -11
  808. data/test/foreman_app/db/migrate/20110628115422_create_settings.rb +0 -18
  809. data/test/foreman_app/db/migrate/20110712064120_update_audits_table.rb +0 -16
  810. data/test/foreman_app/db/migrate/20110712070522_create_host_class.rb +0 -11
  811. data/test/foreman_app/db/migrate/20110725142054_add_suse_templates.rb +0 -46
  812. data/test/foreman_app/db/migrate/20110801090318_add_vm_defaults_to_hostgroup.rb +0 -9
  813. data/test/foreman_app/db/migrate/20110803114134_add_subnet_and_domain_to_host_groups.rb +0 -11
  814. data/test/foreman_app/db/migrate/20111124095053_rename_changes_to_audited_changes.rb +0 -9
  815. data/test/foreman_app/db/migrate/20111124095054_add_remote_address_to_audits.rb +0 -10
  816. data/test/foreman_app/db/migrate/20111124095055_rename_parent_to_association.rb +0 -11
  817. data/test/foreman_app/db/migrate/20111205231500_add_gateway_and_dns_to_subnets.rb +0 -13
  818. data/test/foreman_app/db/migrate/20111227095806_ensure_all_hostnames_are_lowercase.rb +0 -9
  819. data/test/foreman_app/db/migrate/20120102071633_add_from_and_to_ranges_to_subnets.rb +0 -13
  820. data/test/foreman_app/db/migrate/20120110113051_create_subnet_domain.rb +0 -21
  821. data/test/foreman_app/db/migrate/20120122131037_create_compute_resources.rb +0 -19
  822. data/test/foreman_app/db/migrate/20120126113850_add_uuid_and_compute_id_to_host.rb +0 -11
  823. data/test/foreman_app/db/migrate/20120127141602_add_windows_templates.rb +0 -47
  824. data/test/foreman_app/db/migrate/20120311081257_create_nics.rb +0 -52
  825. data/test/foreman_app/db/migrate/20120313081913_add_puppet_master_proxy_to_host_and_host_group.rb +0 -41
  826. data/test/foreman_app/db/migrate/20120502105518_update_report_field_to_large_int.rb +0 -9
  827. data/test/foreman_app/db/migrate/20120506143325_create_images.rb +0 -18
  828. data/test/foreman_app/db/migrate/20120509131302_add_cert_name_to_host.rb +0 -12
  829. data/test/foreman_app/db/migrate/20120510113417_create_key_pairs.rb +0 -15
  830. data/test/foreman_app/db/migrate/20120521142924_add_dns_id_to_subnet.rb +0 -9
  831. data/test/foreman_app/db/migrate/20120523065531_add_image_id_to_host.rb +0 -9
  832. data/test/foreman_app/db/migrate/20120529113900_add_user_compute_resources.rb +0 -14
  833. data/test/foreman_app/db/migrate/20120529115814_add_compute_resources_boolean_to_user.rb +0 -9
  834. data/test/foreman_app/db/migrate/20120604114049_add_epel_snippets.rb +0 -10
  835. data/test/foreman_app/db/migrate/20120607074318_convert_params_to_text.rb +0 -11
  836. data/test/foreman_app/db/migrate/20120612070100_change_bookmark_column_to_text.rb +0 -10
  837. data/test/foreman_app/db/migrate/20120613082125_rename_association_to_associated.rb +0 -25
  838. data/test/foreman_app/db/migrate/20120620124658_fix_auditable_type.rb +0 -9
  839. data/test/foreman_app/db/migrate/20120620124659_fix_associated_type.rb +0 -9
  840. data/test/foreman_app/db/migrate/20120621135042_create_taxonomies.rb +0 -14
  841. data/test/foreman_app/db/migrate/20120623002052_add_ok_hosts_book_mark.rb +0 -13
  842. data/test/foreman_app/db/migrate/20120624081510_add_auditable_name_and_associated_name_to_audit.rb +0 -29
  843. data/test/foreman_app/db/migrate/20120624093958_add_os_family_to_media.rb +0 -14
  844. data/test/foreman_app/db/migrate/20120624094034_add_os_family_to_ptable.rb +0 -17
  845. data/test/foreman_app/db/migrate/20120705130038_add_attributes_to_compute_resources.rb +0 -9
  846. data/test/foreman_app/db/migrate/20120824142048_add_some_indexes.rb +0 -23
  847. data/test/foreman_app/db/migrate/20120905095532_create_environment_classes.rb +0 -16
  848. data/test/foreman_app/db/migrate/20120905131841_add_lookup_keys_override_and_required.rb +0 -15
  849. data/test/foreman_app/db/migrate/20120916080843_add_lookup_values_count_to_lookup_keys.rb +0 -9
  850. data/test/foreman_app/db/migrate/20120916080926_cache_lookup_values_count.rb +0 -8
  851. data/test/foreman_app/db/migrate/20120921000313_add_iam_role_to_images.rb +0 -9
  852. data/test/foreman_app/db/migrate/20120921105349_create_tokens.rb +0 -15
  853. data/test/foreman_app/db/migrate/20120927020752_add_bmc_feature_to_proxy.rb +0 -8
  854. data/test/foreman_app/db/migrate/20121003172526_add_taxonomy_ids_to_hosts.rb +0 -11
  855. data/test/foreman_app/db/migrate/20121011115320_change_domain_character_count.rb +0 -9
  856. data/test/foreman_app/db/migrate/20121012170851_create_trends.rb +0 -25
  857. data/test/foreman_app/db/migrate/20121012170936_create_trend_counters.rb +0 -16
  858. data/test/foreman_app/db/migrate/20121015113502_update_media_path_limit.rb +0 -9
  859. data/test/foreman_app/db/migrate/20121018152459_create_hostgroup_classes.rb +0 -11
  860. data/test/foreman_app/db/migrate/20121026160433_add_localboot_template.rb +0 -15
  861. data/test/foreman_app/db/migrate/20121029164911_rename_reply_adress_setting.rb +0 -9
  862. data/test/foreman_app/db/migrate/20121101141448_add_locations_organizations.rb +0 -12
  863. data/test/foreman_app/db/migrate/20121118120028_migrate_hypervisors_to_compute_resources.rb +0 -20
  864. data/test/foreman_app/db/migrate/20121118125341_create_taxable_taxonomies.rb +0 -19
  865. data/test/foreman_app/db/migrate/20121119102104_add_my_taxonomy_to_user.rb +0 -11
  866. data/test/foreman_app/db/migrate/20121218084123_change_smart_variable_length.rb +0 -9
  867. data/test/foreman_app/db/migrate/20121219040534_remove_replay_address_setting.rb +0 -8
  868. data/test/foreman_app/db/migrate/20130109155024_add_ignore_types_to_taxonomy.rb +0 -9
  869. data/test/foreman_app/db/migrate/20130121130826_add_digest_to_messages.rb +0 -18
  870. data/test/foreman_app/db/migrate/20130211160200_add_sti_to_hosts.rb +0 -11
  871. data/test/foreman_app/db/migrate/20130228145456_add_digest_to_sources.rb +0 -22
  872. data/test/foreman_app/db/migrate/20130329195742_remove_duplicate_snippets.rb +0 -20
  873. data/test/foreman_app/db/migrate/20130409081924_add_label_to_host_group.rb +0 -18
  874. data/test/foreman_app/db/migrate/20130417110127_add_sti_to_settings.rb +0 -17
  875. data/test/foreman_app/db/migrate/20130418134513_fix_sti_host_auditable_type.rb +0 -9
  876. data/test/foreman_app/db/migrate/20130419145808_add_id_to_user_hostgroup.rb +0 -9
  877. data/test/foreman_app/db/schema.rb +0 -746
  878. data/test/foreman_app/db/seeds.rb +0 -9
  879. data/test/foreman_app/db/test.sqlite3 +0 -0
  880. data/test/foreman_app/doc/README_FOR_APP +0 -2
  881. data/test/foreman_app/doc/apipie_examples.yml +0 -4645
  882. data/test/foreman_app/extras/changelog +0 -39
  883. data/test/foreman_app/extras/ci/migration.sh +0 -64
  884. data/test/foreman_app/extras/ci/setup.sh +0 -19
  885. data/test/foreman_app/extras/cli/foremancli +0 -210
  886. data/test/foreman_app/extras/dbmigrate +0 -10
  887. data/test/foreman_app/extras/foreman-release.spec +0 -41
  888. data/test/foreman_app/extras/foreman.repo +0 -11
  889. data/test/foreman_app/extras/git2nightly_snapshot +0 -9
  890. data/test/foreman_app/extras/git2release +0 -22
  891. data/test/foreman_app/extras/ignored_environments.yml.sample +0 -10
  892. data/test/foreman_app/extras/jumpstart/README +0 -2
  893. data/test/foreman_app/extras/jumpstart/admin +0 -11
  894. data/test/foreman_app/extras/jumpstart/curl +0 -0
  895. data/test/foreman_app/extras/jumpstart/curl-license +0 -22
  896. data/test/foreman_app/extras/jumpstart/curl.i386 +0 -0
  897. data/test/foreman_app/extras/jumpstart/curl.sparc +0 -0
  898. data/test/foreman_app/extras/jumpstart/dynamic_finish +0 -18
  899. data/test/foreman_app/extras/jumpstart/dynamic_profile +0 -17
  900. data/test/foreman_app/extras/jumpstart/nsswitch.conf +0 -34
  901. data/test/foreman_app/extras/jumpstart/rules +0 -1
  902. data/test/foreman_app/extras/jumpstart/rules.ok +0 -2
  903. data/test/foreman_app/extras/jumpstart/sysidcfg/sysidcfg_primary/sysidcfg +0 -12
  904. data/test/foreman_app/extras/noVNC/websockify.py +0 -5
  905. data/test/foreman_app/extras/noVNC/websockify/__init__.py +0 -2
  906. data/test/foreman_app/extras/noVNC/websockify/websocket.py +0 -982
  907. data/test/foreman_app/extras/noVNC/websockify/websocketproxy.py +0 -393
  908. data/test/foreman_app/extras/packaging/rpm/rel-eng/comps/comps-foreman-fedora18.xml +0 -76
  909. data/test/foreman_app/extras/packaging/rpm/rel-eng/comps/comps-foreman-rhel6.xml +0 -115
  910. data/test/foreman_app/extras/packaging/rpm/rel-eng/packages/foreman +0 -1
  911. data/test/foreman_app/extras/packaging/rpm/rel-eng/releasers.conf +0 -59
  912. data/test/foreman_app/extras/packaging/rpm/rel-eng/tito.props +0 -3
  913. data/test/foreman_app/extras/packaging/rpm/sources/0001-rubygem-actionmailer-fix-dep-versions.patch +0 -19
  914. data/test/foreman_app/extras/packaging/rpm/sources/foreman.cron.d +0 -27
  915. data/test/foreman_app/extras/packaging/rpm/sources/foreman.init +0 -154
  916. data/test/foreman_app/extras/packaging/rpm/sources/foreman.logrotate +0 -10
  917. data/test/foreman_app/extras/packaging/rpm/sources/foreman.repo +0 -11
  918. data/test/foreman_app/extras/packaging/rpm/sources/foreman.spec-devel.patch +0 -55
  919. data/test/foreman_app/extras/packaging/rpm/sources/foreman.sysconfig +0 -21
  920. data/test/foreman_app/extras/query/ssh_using_foreman +0 -136
  921. data/test/foreman_app/extras/rdoc/rdoc_prepare_script.rb +0 -51
  922. data/test/foreman_app/foreman.spec +0 -621
  923. data/test/foreman_app/lib/api/api_responder.rb +0 -17
  924. data/test/foreman_app/lib/api/authorization.rb +0 -78
  925. data/test/foreman_app/lib/api/version1.rb +0 -7
  926. data/test/foreman_app/lib/api/version2.rb +0 -7
  927. data/test/foreman_app/lib/api_constraints.rb +0 -15
  928. data/test/foreman_app/lib/audit_extensions.rb +0 -63
  929. data/test/foreman_app/lib/core_extensions.rb +0 -100
  930. data/test/foreman_app/lib/fog_extensions.rb +0 -45
  931. data/test/foreman_app/lib/fog_extensions/aws/flavor.rb +0 -9
  932. data/test/foreman_app/lib/fog_extensions/aws/server.rb +0 -18
  933. data/test/foreman_app/lib/fog_extensions/libvirt/server.rb +0 -24
  934. data/test/foreman_app/lib/fog_extensions/model.rb +0 -27
  935. data/test/foreman_app/lib/fog_extensions/openstack/flavor.rb +0 -13
  936. data/test/foreman_app/lib/fog_extensions/openstack/server.rb +0 -40
  937. data/test/foreman_app/lib/fog_extensions/ovirt/server.rb +0 -15
  938. data/test/foreman_app/lib/fog_extensions/ovirt/volume.rb +0 -11
  939. data/test/foreman_app/lib/fog_extensions/vsphere/folder.rb +0 -14
  940. data/test/foreman_app/lib/fog_extensions/vsphere/mini_server.rb +0 -20
  941. data/test/foreman_app/lib/fog_extensions/vsphere/mini_servers.rb +0 -22
  942. data/test/foreman_app/lib/fog_extensions/vsphere/server.rb +0 -19
  943. data/test/foreman_app/lib/foreman.rb +0 -14
  944. data/test/foreman_app/lib/foreman/access_control.rb +0 -120
  945. data/test/foreman_app/lib/foreman/access_permissions.rb +0 -572
  946. data/test/foreman_app/lib/foreman/controller.rb +0 -2
  947. data/test/foreman_app/lib/foreman/controller/auto_complete_search.rb +0 -23
  948. data/test/foreman_app/lib/foreman/controller/environments.rb +0 -36
  949. data/test/foreman_app/lib/foreman/controller/host_details.rb +0 -69
  950. data/test/foreman_app/lib/foreman/controller/smart_proxy_auth.rb +0 -68
  951. data/test/foreman_app/lib/foreman/controller/taxonomies_controller.rb +0 -178
  952. data/test/foreman_app/lib/foreman/controller/taxonomy_multiple.rb +0 -56
  953. data/test/foreman_app/lib/foreman/default_data/loader.rb +0 -166
  954. data/test/foreman_app/lib/foreman/exception.rb +0 -37
  955. data/test/foreman_app/lib/foreman/importer_puppetclass.rb +0 -48
  956. data/test/foreman_app/lib/foreman/model.rb +0 -2
  957. data/test/foreman_app/lib/foreman/model/ec2.rb +0 -128
  958. data/test/foreman_app/lib/foreman/model/libvirt.rb +0 -150
  959. data/test/foreman_app/lib/foreman/model/openstack.rb +0 -130
  960. data/test/foreman_app/lib/foreman/model/ovirt.rb +0 -250
  961. data/test/foreman_app/lib/foreman/model/rackspace.rb +0 -108
  962. data/test/foreman_app/lib/foreman/model/vmware.rb +0 -181
  963. data/test/foreman_app/lib/foreman/provision.rb +0 -3
  964. data/test/foreman_app/lib/foreman/provision/ssh.rb +0 -102
  965. data/test/foreman_app/lib/foreman/renderer.rb +0 -68
  966. data/test/foreman_app/lib/foreman/sti.rb +0 -30
  967. data/test/foreman_app/lib/foreman/thread_session.rb +0 -163
  968. data/test/foreman_app/lib/foreman/util.rb +0 -25
  969. data/test/foreman_app/lib/foreman/wrapped_exception.rb +0 -23
  970. data/test/foreman_app/lib/net.rb +0 -50
  971. data/test/foreman_app/lib/net/dhcp.rb +0 -6
  972. data/test/foreman_app/lib/net/dhcp/record.rb +0 -56
  973. data/test/foreman_app/lib/net/dhcp/sparc_record.rb +0 -25
  974. data/test/foreman_app/lib/net/dns.rb +0 -78
  975. data/test/foreman_app/lib/net/dns/a_record.rb +0 -47
  976. data/test/foreman_app/lib/net/dns/ptr_record.rb +0 -52
  977. data/test/foreman_app/lib/net/validations.rb +0 -47
  978. data/test/foreman_app/lib/orchestration/queue.rb +0 -58
  979. data/test/foreman_app/lib/proxy_api.rb +0 -6
  980. data/test/foreman_app/lib/proxy_api/bmc.rb +0 -120
  981. data/test/foreman_app/lib/proxy_api/dhcp.rb +0 -70
  982. data/test/foreman_app/lib/proxy_api/dns.rb +0 -26
  983. data/test/foreman_app/lib/proxy_api/features.rb +0 -12
  984. data/test/foreman_app/lib/proxy_api/puppet.rb +0 -28
  985. data/test/foreman_app/lib/proxy_api/puppetca.rb +0 -38
  986. data/test/foreman_app/lib/proxy_api/resource.rb +0 -90
  987. data/test/foreman_app/lib/proxy_api/tftp.rb +0 -54
  988. data/test/foreman_app/lib/puppet_setting.rb +0 -69
  989. data/test/foreman_app/lib/regexp_extensions.rb +0 -14
  990. data/test/foreman_app/lib/sso.rb +0 -13
  991. data/test/foreman_app/lib/sso/apache.rb +0 -16
  992. data/test/foreman_app/lib/sso/base.rb +0 -27
  993. data/test/foreman_app/lib/sso/signo.rb +0 -60
  994. data/test/foreman_app/lib/task.rb +0 -39
  995. data/test/foreman_app/lib/tasks/convert.rake +0 -127
  996. data/test/foreman_app/lib/tasks/exception.rake +0 -32
  997. data/test/foreman_app/lib/tasks/gettext.rake +0 -9
  998. data/test/foreman_app/lib/tasks/hosts.rake +0 -67
  999. data/test/foreman_app/lib/tasks/jenkins.rake +0 -19
  1000. data/test/foreman_app/lib/tasks/load_default_data.rake +0 -16
  1001. data/test/foreman_app/lib/tasks/locale.rake +0 -43
  1002. data/test/foreman_app/lib/tasks/model.rake +0 -83
  1003. data/test/foreman_app/lib/tasks/patches.rake +0 -19
  1004. data/test/foreman_app/lib/tasks/pkg.rake +0 -19
  1005. data/test/foreman_app/lib/tasks/puppet.rake +0 -178
  1006. data/test/foreman_app/lib/tasks/reports.rake +0 -82
  1007. data/test/foreman_app/lib/tasks/reset_permissions.rake +0 -20
  1008. data/test/foreman_app/lib/tasks/security.rake +0 -21
  1009. data/test/foreman_app/lib/tasks/smartproxy.rake +0 -58
  1010. data/test/foreman_app/lib/tasks/test_api_dir.rake +0 -10
  1011. data/test/foreman_app/lib/tasks/test_lib_dir.rake +0 -14
  1012. data/test/foreman_app/lib/tasks/trends.rake +0 -32
  1013. data/test/foreman_app/lib/timed_cached_store.rb +0 -55
  1014. data/test/foreman_app/lib/ws_proxy.rb +0 -78
  1015. data/test/foreman_app/locale/Makefile +0 -54
  1016. data/test/foreman_app/locale/README +0 -26
  1017. data/test/foreman_app/locale/de/foreman.po +0 -4477
  1018. data/test/foreman_app/locale/en/foreman.po +0 -4198
  1019. data/test/foreman_app/locale/es/foreman.po +0 -4494
  1020. data/test/foreman_app/locale/foreman.pot +0 -4198
  1021. data/test/foreman_app/locale/ja/foreman.po +0 -4215
  1022. data/test/foreman_app/locale/model_attributes.rb +0 -442
  1023. data/test/foreman_app/log/test.log +0 -36021
  1024. data/test/foreman_app/public/404.html +0 -26
  1025. data/test/foreman_app/public/422.html +0 -26
  1026. data/test/foreman_app/public/500.html +0 -26
  1027. data/test/foreman_app/public/blank.html +0 -33
  1028. data/test/foreman_app/public/favicon.ico +0 -0
  1029. data/test/foreman_app/public/robots.txt +0 -5
  1030. data/test/foreman_app/script/foreman-config +0 -147
  1031. data/test/foreman_app/script/performance/benchmarker +0 -3
  1032. data/test/foreman_app/script/performance/profiler +0 -3
  1033. data/test/foreman_app/script/rails +0 -6
  1034. data/test/foreman_app/script/show-missing-rails-locales.sh +0 -25
  1035. data/test/foreman_app/script/update-rails-locales.sh +0 -16
  1036. data/test/foreman_app/test/fixtures/architectures.yml +0 -10
  1037. data/test/foreman_app/test/fixtures/audits.yml +0 -18
  1038. data/test/foreman_app/test/fixtures/auth_sources.yml +0 -20
  1039. data/test/foreman_app/test/fixtures/bookmarks.yml +0 -13
  1040. data/test/foreman_app/test/fixtures/brslc022.facts.yaml +0 -68
  1041. data/test/foreman_app/test/fixtures/compute_resources.yml +0 -28
  1042. data/test/foreman_app/test/fixtures/config_templates.yml +0 -47
  1043. data/test/foreman_app/test/fixtures/domains.yml +0 -18
  1044. data/test/foreman_app/test/fixtures/environment_classes.yml +0 -15
  1045. data/test/foreman_app/test/fixtures/environments.yml +0 -10
  1046. data/test/foreman_app/test/fixtures/fact_names.yml +0 -5
  1047. data/test/foreman_app/test/fixtures/fact_values.yml +0 -11
  1048. data/test/foreman_app/test/fixtures/features.yml +0 -23
  1049. data/test/foreman_app/test/fixtures/host_classes.yml +0 -9
  1050. data/test/foreman_app/test/fixtures/hostgroup_classes.yml +0 -9
  1051. data/test/foreman_app/test/fixtures/hostgroups.yml +0 -24
  1052. data/test/foreman_app/test/fixtures/hosts.yml +0 -198
  1053. data/test/foreman_app/test/fixtures/images.yml +0 -16
  1054. data/test/foreman_app/test/fixtures/key_pairs.yml +0 -7
  1055. data/test/foreman_app/test/fixtures/logs.yml +0 -11
  1056. data/test/foreman_app/test/fixtures/lookup_keys.yml +0 -32
  1057. data/test/foreman_app/test/fixtures/media.yml +0 -25
  1058. data/test/foreman_app/test/fixtures/messages.yml +0 -7
  1059. data/test/foreman_app/test/fixtures/models.yml +0 -10
  1060. data/test/foreman_app/test/fixtures/notices.yml +0 -7
  1061. data/test/foreman_app/test/fixtures/operatingsystems.yml +0 -49
  1062. data/test/foreman_app/test/fixtures/os_default_templates.yml +0 -21
  1063. data/test/foreman_app/test/fixtures/parameters.yml +0 -30
  1064. data/test/foreman_app/test/fixtures/ptables.yml +0 -17
  1065. data/test/foreman_app/test/fixtures/puppetclasses.yml +0 -13
  1066. data/test/foreman_app/test/fixtures/report-2.6.12-noops.yaml +0 -627
  1067. data/test/foreman_app/test/fixtures/report-2.6.5-errors.yaml +0 -60
  1068. data/test/foreman_app/test/fixtures/report-2.6.5.yaml +0 -413
  1069. data/test/foreman_app/test/fixtures/report-3.0.1.yaml +0 -283
  1070. data/test/foreman_app/test/fixtures/report-applied.yaml +0 -86
  1071. data/test/foreman_app/test/fixtures/report-empty.yaml +0 -31
  1072. data/test/foreman_app/test/fixtures/report-errors.yaml +0 -66
  1073. data/test/foreman_app/test/fixtures/report-skipped.yaml +0 -86
  1074. data/test/foreman_app/test/fixtures/reports.yml +0 -13
  1075. data/test/foreman_app/test/fixtures/roles.yml +0 -198
  1076. data/test/foreman_app/test/fixtures/sample_http_preseed_template +0 -66
  1077. data/test/foreman_app/test/fixtures/sample_tokenised_template +0 -66
  1078. data/test/foreman_app/test/fixtures/settings.yml +0 -176
  1079. data/test/foreman_app/test/fixtures/smart_proxies.yml +0 -23
  1080. data/test/foreman_app/test/fixtures/sources.yml +0 -7
  1081. data/test/foreman_app/test/fixtures/subnet_domains.yml +0 -9
  1082. data/test/foreman_app/test/fixtures/subnets.yml +0 -26
  1083. data/test/foreman_app/test/fixtures/taxable_taxonomies.yml +0 -15
  1084. data/test/foreman_app/test/fixtures/taxonomies.yml +0 -15
  1085. data/test/foreman_app/test/fixtures/template_combinations.yml +0 -19
  1086. data/test/foreman_app/test/fixtures/template_kinds.yml +0 -14
  1087. data/test/foreman_app/test/fixtures/trend_counters.yml +0 -9
  1088. data/test/foreman_app/test/fixtures/trends.yml +0 -9
  1089. data/test/foreman_app/test/fixtures/trends_controller_test.rb +0 -8
  1090. data/test/foreman_app/test/fixtures/user_facts.yml +0 -7
  1091. data/test/foreman_app/test/fixtures/usergroups.yml +0 -7
  1092. data/test/foreman_app/test/fixtures/users.yml +0 -52
  1093. data/test/foreman_app/test/functional/api/v1/architectures_controller_test.rb +0 -79
  1094. data/test/foreman_app/test/functional/api/v1/audits_controller_test.rb +0 -20
  1095. data/test/foreman_app/test/functional/api/v1/auth_source_ldaps_controller_test.rb +0 -41
  1096. data/test/foreman_app/test/functional/api/v1/bookmarks_controller_test.rb +0 -60
  1097. data/test/foreman_app/test/functional/api/v1/common_parameters_controller_test.rb +0 -41
  1098. data/test/foreman_app/test/functional/api/v1/compute_resources_controller_test.rb +0 -50
  1099. data/test/foreman_app/test/functional/api/v1/config_templates_controller_test.rb +0 -82
  1100. data/test/foreman_app/test/functional/api/v1/dashboard_controller_test.rb +0 -12
  1101. data/test/foreman_app/test/functional/api/v1/domains_controller_test.rb +0 -50
  1102. data/test/foreman_app/test/functional/api/v1/environments_controller_test.rb +0 -40
  1103. data/test/foreman_app/test/functional/api/v1/fact_values_controller_test.rb +0 -19
  1104. data/test/foreman_app/test/functional/api/v1/home_controller_test.rb +0 -11
  1105. data/test/foreman_app/test/functional/api/v1/hostgroups_controller_test.rb +0 -41
  1106. data/test/foreman_app/test/functional/api/v1/hosts_controller_test.rb +0 -66
  1107. data/test/foreman_app/test/functional/api/v1/images_controller_test.rb +0 -47
  1108. data/test/foreman_app/test/functional/api/v1/lookup_keys_controller_test.rb +0 -41
  1109. data/test/foreman_app/test/functional/api/v1/media_controller_test.rb +0 -48
  1110. data/test/foreman_app/test/functional/api/v1/models_controller_test.rb +0 -43
  1111. data/test/foreman_app/test/functional/api/v1/operatingsystems_controller_test.rb +0 -55
  1112. data/test/foreman_app/test/functional/api/v1/ptables_controller_test.rb +0 -48
  1113. data/test/foreman_app/test/functional/api/v1/puppetclasses_controller_test.rb +0 -40
  1114. data/test/foreman_app/test/functional/api/v1/reports_controller_test.rb +0 -66
  1115. data/test/foreman_app/test/functional/api/v1/roles_controller_test.rb +0 -41
  1116. data/test/foreman_app/test/functional/api/v1/settings_controller_test.rb +0 -25
  1117. data/test/foreman_app/test/functional/api/v1/smart_proxies_controller_test.rb +0 -72
  1118. data/test/foreman_app/test/functional/api/v1/subnets_controller_test.rb +0 -58
  1119. data/test/foreman_app/test/functional/api/v1/template_kinds_controller_test.rb +0 -11
  1120. data/test/foreman_app/test/functional/api/v1/usergroups_controller_test.rb +0 -41
  1121. data/test/foreman_app/test/functional/api/v1/users_controller_test.rb +0 -137
  1122. data/test/foreman_app/test/functional/api/v2/config_templates_controller_test.rb +0 -80
  1123. data/test/foreman_app/test/functional/api/v2/domains_controller_test.rb +0 -32
  1124. data/test/foreman_app/test/functional/api/v2/host_classes_controller_test.rb +0 -29
  1125. data/test/foreman_app/test/functional/api/v2/hostgroup_class_controller_test.rb +0 -29
  1126. data/test/foreman_app/test/functional/api/v2/locations_controller_test.rb +0 -85
  1127. data/test/foreman_app/test/functional/api/v2/parameters_controller_test.rb +0 -180
  1128. data/test/foreman_app/test/functional/api/v2/puppetclasses_controller_test.rb +0 -103
  1129. data/test/foreman_app/test/functional/api/v2/template_combinations_controller_test.rb +0 -38
  1130. data/test/foreman_app/test/functional/architectures_controller_test.rb +0 -97
  1131. data/test/foreman_app/test/functional/audits_controller_test.rb +0 -29
  1132. data/test/foreman_app/test/functional/auth_source_ldaps_controller_test.rb +0 -66
  1133. data/test/foreman_app/test/functional/bookmarks_controller_test.rb +0 -51
  1134. data/test/foreman_app/test/functional/common_parameters_controller_test.rb +0 -69
  1135. data/test/foreman_app/test/functional/compute_resources_controller_test.rb +0 -157
  1136. data/test/foreman_app/test/functional/compute_resources_vms_controller_test.rb +0 -160
  1137. data/test/foreman_app/test/functional/config_templates_controller_test.rb +0 -132
  1138. data/test/foreman_app/test/functional/dashboard_controller_test.rb +0 -38
  1139. data/test/foreman_app/test/functional/domains_controller_test.rb +0 -101
  1140. data/test/foreman_app/test/functional/environments_controller_test.rb +0 -234
  1141. data/test/foreman_app/test/functional/fact_values_controller_test.rb +0 -138
  1142. data/test/foreman_app/test/functional/facts_controller_test.rb +0 -12
  1143. data/test/foreman_app/test/functional/home_controller_test.rb +0 -9
  1144. data/test/foreman_app/test/functional/hostgroups_controller_test.rb +0 -125
  1145. data/test/foreman_app/test/functional/hosts_controller_test.rb +0 -830
  1146. data/test/foreman_app/test/functional/images_controller_test.rb +0 -55
  1147. data/test/foreman_app/test/functional/locations_controller_test.rb +0 -149
  1148. data/test/foreman_app/test/functional/lookup_keys_controller_test.rb +0 -43
  1149. data/test/foreman_app/test/functional/lookup_values_controller_test.rb +0 -8
  1150. data/test/foreman_app/test/functional/media_controller_test.rb +0 -95
  1151. data/test/foreman_app/test/functional/models_controller_test.rb +0 -66
  1152. data/test/foreman_app/test/functional/notices_controller_test.rb +0 -36
  1153. data/test/foreman_app/test/functional/operatingsystems_controller_test.rb +0 -104
  1154. data/test/foreman_app/test/functional/organizations_controller_test.rb +0 -148
  1155. data/test/foreman_app/test/functional/ptables_controller_test.rb +0 -142
  1156. data/test/foreman_app/test/functional/puppetclasses_controller_test.rb +0 -66
  1157. data/test/foreman_app/test/functional/reports_controller_test.rb +0 -191
  1158. data/test/foreman_app/test/functional/roles_controller_test.rb +0 -124
  1159. data/test/foreman_app/test/functional/settings_controller_test.rb +0 -34
  1160. data/test/foreman_app/test/functional/smart_proxies/autosign_controller_test.rb +0 -8
  1161. data/test/foreman_app/test/functional/smart_proxies/puppetca_controller_test.rb +0 -8
  1162. data/test/foreman_app/test/functional/smart_proxies_controller_test.rb +0 -85
  1163. data/test/foreman_app/test/functional/statistics_controller_test.rb +0 -21
  1164. data/test/foreman_app/test/functional/subnets_controller_test.rb +0 -89
  1165. data/test/foreman_app/test/functional/tasks_controller_test.rb +0 -8
  1166. data/test/foreman_app/test/functional/unattended_controller_test.rb +0 -141
  1167. data/test/foreman_app/test/functional/usergroups_controller_test.rb +0 -66
  1168. data/test/foreman_app/test/functional/users_controller_test.rb +0 -147
  1169. data/test/foreman_app/test/lib/foreman/access_permissions_test.rb +0 -50
  1170. data/test/foreman_app/test/lib/foreman/default_settings/loader_test.rb +0 -39
  1171. data/test/foreman_app/test/lib/foreman/model/ovirt_test.rb +0 -72
  1172. data/test/foreman_app/test/lib/foreman/renderer_test.rb +0 -32
  1173. data/test/foreman_app/test/lib/foreman/util_test.rb +0 -40
  1174. data/test/foreman_app/test/lib/net/dhcp_test.rb +0 -39
  1175. data/test/foreman_app/test/lib/net/net_test.rb +0 -21
  1176. data/test/foreman_app/test/lib/net/validations_test.rb +0 -19
  1177. data/test/foreman_app/test/lib/proxy_api/bmc_test.rb +0 -256
  1178. data/test/foreman_app/test/lib/proxy_api/dhcp_test.rb +0 -60
  1179. data/test/foreman_app/test/lib/puppet_setting_test.rb +0 -92
  1180. data/test/foreman_app/test/performance/browsing_test.rb +0 -9
  1181. data/test/foreman_app/test/test_helper.rb +0 -164
  1182. data/test/foreman_app/test/unit/architecture_test.rb +0 -106
  1183. data/test/foreman_app/test/unit/auth_source_ldap_test.rb +0 -205
  1184. data/test/foreman_app/test/unit/auth_source_test.rb +0 -34
  1185. data/test/foreman_app/test/unit/bookmark_test.rb +0 -32
  1186. data/test/foreman_app/test/unit/classification_test.rb +0 -46
  1187. data/test/foreman_app/test/unit/common_parameter_test.rb +0 -100
  1188. data/test/foreman_app/test/unit/compute_resource_test.rb +0 -88
  1189. data/test/foreman_app/test/unit/config_template_test.rb +0 -67
  1190. data/test/foreman_app/test/unit/domain_parameter_test.rb +0 -106
  1191. data/test/foreman_app/test/unit/domain_test.rb +0 -161
  1192. data/test/foreman_app/test/unit/environment_class_test.rb +0 -9
  1193. data/test/foreman_app/test/unit/environment_test.rb +0 -35
  1194. data/test/foreman_app/test/unit/fact_value_test.rb +0 -25
  1195. data/test/foreman_app/test/unit/facts.yml +0 -91
  1196. data/test/foreman_app/test/unit/facts_importer_test.rb +0 -50
  1197. data/test/foreman_app/test/unit/facts_with_caps.yml +0 -91
  1198. data/test/foreman_app/test/unit/feature_test.rb +0 -8
  1199. data/test/foreman_app/test/unit/group_parameter_test.rb +0 -108
  1200. data/test/foreman_app/test/unit/helpers/architecture_helper_test.rb +0 -4
  1201. data/test/foreman_app/test/unit/helpers/audit_helper_test.rb +0 -4
  1202. data/test/foreman_app/test/unit/helpers/auth_sources_helper_test.rb +0 -4
  1203. data/test/foreman_app/test/unit/helpers/bookmarks_helper_test.rb +0 -4
  1204. data/test/foreman_app/test/unit/helpers/compute_resources_helper_test.rb +0 -4
  1205. data/test/foreman_app/test/unit/helpers/dashboard_helper_test.rb +0 -4
  1206. data/test/foreman_app/test/unit/helpers/domain_helper_test.rb +0 -4
  1207. data/test/foreman_app/test/unit/helpers/environments_helper_test.rb +0 -4
  1208. data/test/foreman_app/test/unit/helpers/fact_values_helper_test.rb +0 -4
  1209. data/test/foreman_app/test/unit/helpers/home_helper_test.rb +0 -4
  1210. data/test/foreman_app/test/unit/helpers/host_groups_helper_test.rb +0 -14
  1211. data/test/foreman_app/test/unit/helpers/hosts_helper_test.rb +0 -4
  1212. data/test/foreman_app/test/unit/helpers/images_helper_test.rb +0 -4
  1213. data/test/foreman_app/test/unit/helpers/lookup_keys_helper_test.rb +0 -4
  1214. data/test/foreman_app/test/unit/helpers/medium_helper_test.rb +0 -4
  1215. data/test/foreman_app/test/unit/helpers/model_helper_test.rb +0 -4
  1216. data/test/foreman_app/test/unit/helpers/operatingsystem_helper_test.rb +0 -4
  1217. data/test/foreman_app/test/unit/helpers/parameters_helper_test.rb +0 -4
  1218. data/test/foreman_app/test/unit/helpers/ptables_helper_test.rb +0 -4
  1219. data/test/foreman_app/test/unit/helpers/puppetclasses_helper_test.rb +0 -4
  1220. data/test/foreman_app/test/unit/helpers/reports_helper_test.rb +0 -4
  1221. data/test/foreman_app/test/unit/helpers/smart_proxies/autosign_helper_test.rb +0 -4
  1222. data/test/foreman_app/test/unit/helpers/smart_proxies/puppetca_helper_test.rb +0 -4
  1223. data/test/foreman_app/test/unit/helpers/statistics_helper_test.rb +0 -4
  1224. data/test/foreman_app/test/unit/helpers/tasks_helper_test.rb +0 -4
  1225. data/test/foreman_app/test/unit/helpers/trends_helper_test.rb +0 -4
  1226. data/test/foreman_app/test/unit/helpers/unattended_helper_test.rb +0 -4
  1227. data/test/foreman_app/test/unit/helpers/usergroups_helper_test.rb +0 -4
  1228. data/test/foreman_app/test/unit/helpers/users_helper_test.rb +0 -4
  1229. data/test/foreman_app/test/unit/host_class_test.rb +0 -8
  1230. data/test/foreman_app/test/unit/host_mailer_test.rb +0 -70
  1231. data/test/foreman_app/test/unit/host_observer_test.rb +0 -35
  1232. data/test/foreman_app/test/unit/host_parameter_test.rb +0 -119
  1233. data/test/foreman_app/test/unit/host_test.rb +0 -606
  1234. data/test/foreman_app/test/unit/hostgroup_class_test.rb +0 -11
  1235. data/test/foreman_app/test/unit/hostgroup_test.rb +0 -178
  1236. data/test/foreman_app/test/unit/image_test.rb +0 -5
  1237. data/test/foreman_app/test/unit/key_pair_test.rb +0 -4
  1238. data/test/foreman_app/test/unit/location_test.rb +0 -162
  1239. data/test/foreman_app/test/unit/log_test.rb +0 -8
  1240. data/test/foreman_app/test/unit/lookup_key_test.rb +0 -88
  1241. data/test/foreman_app/test/unit/medium_test.rb +0 -120
  1242. data/test/foreman_app/test/unit/message_test.rb +0 -8
  1243. data/test/foreman_app/test/unit/model_test.rb +0 -90
  1244. data/test/foreman_app/test/unit/nic_test.rb +0 -49
  1245. data/test/foreman_app/test/unit/notice_test.rb +0 -19
  1246. data/test/foreman_app/test/unit/operatingsystem_test.rb +0 -139
  1247. data/test/foreman_app/test/unit/orchestration/dhcp_test.rb +0 -161
  1248. data/test/foreman_app/test/unit/orchestration/dns_test.rb +0 -54
  1249. data/test/foreman_app/test/unit/orchestration/pxe_local_template +0 -11
  1250. data/test/foreman_app/test/unit/orchestration/pxe_template +0 -4
  1251. data/test/foreman_app/test/unit/orchestration/tftp_test.rb +0 -49
  1252. data/test/foreman_app/test/unit/orchestration_test.rb +0 -25
  1253. data/test/foreman_app/test/unit/organization_test.rb +0 -163
  1254. data/test/foreman_app/test/unit/os_default_template_test.rb +0 -8
  1255. data/test/foreman_app/test/unit/parameter_test.rb +0 -44
  1256. data/test/foreman_app/test/unit/ptable_test.rb +0 -119
  1257. data/test/foreman_app/test/unit/puppet_class_importer_test.rb +0 -67
  1258. data/test/foreman_app/test/unit/puppetclass_test.rb +0 -90
  1259. data/test/foreman_app/test/unit/report_test.rb +0 -196
  1260. data/test/foreman_app/test/unit/role_test.rb +0 -104
  1261. data/test/foreman_app/test/unit/setting_test.rb +0 -158
  1262. data/test/foreman_app/test/unit/smart_proxy_test.rb +0 -27
  1263. data/test/foreman_app/test/unit/source_test.rb +0 -8
  1264. data/test/foreman_app/test/unit/sso.rb +0 -26
  1265. data/test/foreman_app/test/unit/sso/apache_test.rb +0 -38
  1266. data/test/foreman_app/test/unit/sso/base_test.rb +0 -14
  1267. data/test/foreman_app/test/unit/sso/signo_test.rb +0 -81
  1268. data/test/foreman_app/test/unit/subnet_domain_test.rb +0 -8
  1269. data/test/foreman_app/test/unit/subnet_test.rb +0 -182
  1270. data/test/foreman_app/test/unit/suse_test.rb +0 -46
  1271. data/test/foreman_app/test/unit/taxable_taxonomy_test.rb +0 -8
  1272. data/test/foreman_app/test/unit/template_combination_test.rb +0 -8
  1273. data/test/foreman_app/test/unit/template_kind_test.rb +0 -8
  1274. data/test/foreman_app/test/unit/token_test.rb +0 -67
  1275. data/test/foreman_app/test/unit/trend_counter_test.rb +0 -8
  1276. data/test/foreman_app/test/unit/trend_test.rb +0 -8
  1277. data/test/foreman_app/test/unit/user_fact_test.rb +0 -8
  1278. data/test/foreman_app/test/unit/user_test.rb +0 -196
  1279. data/test/foreman_app/test/unit/usergroup_test.rb +0 -161
  1280. data/test/foreman_app/tmp/cache/505/030/idle_timeout +0 -1
  1281. data/test/foreman_app/tmp/cache/505/C00/use_gravatar +0 -1
  1282. data/test/foreman_app/tmp/cache/7D9/CD0/email_reply_address +0 -1
  1283. data/test/foreman_app/tmp/cache/94D/A30/discovery_organization +0 -1
  1284. data/test/foreman_app/tmp/cache/ACF/DB0/authorize_login_delegation +0 -1
  1285. data/test/foreman_app/tmp/secret_token +0 -1
  1286. data/test/foreman_app/vendor/assets/fonts/overpass_bold-web.eot +0 -0
  1287. data/test/foreman_app/vendor/assets/fonts/overpass_bold-web.svg +0 -470
  1288. data/test/foreman_app/vendor/assets/fonts/overpass_bold-web.ttf +0 -0
  1289. data/test/foreman_app/vendor/assets/fonts/overpass_bold-web.woff +0 -0
  1290. data/test/foreman_app/vendor/assets/fonts/overpass_regular-web.eot +0 -0
  1291. data/test/foreman_app/vendor/assets/fonts/overpass_regular-web.svg +0 -470
  1292. data/test/foreman_app/vendor/assets/fonts/overpass_regular-web.ttf +0 -0
  1293. data/test/foreman_app/vendor/assets/fonts/overpass_regular-web.woff +0 -0
  1294. data/test/foreman_app/vendor/assets/javascripts/ace/ace.js +0 -10
  1295. data/test/foreman_app/vendor/assets/javascripts/ace/cockpit.js +0 -1
  1296. data/test/foreman_app/vendor/assets/javascripts/ace/ext-static_highlight.js +0 -1
  1297. data/test/foreman_app/vendor/assets/javascripts/ace/ext-textarea.js +0 -1
  1298. data/test/foreman_app/vendor/assets/javascripts/ace/keybinding-emacs.js +0 -1
  1299. data/test/foreman_app/vendor/assets/javascripts/ace/keybinding-vim.js +0 -1
  1300. data/test/foreman_app/vendor/assets/javascripts/ace/mode-diff.js +0 -165
  1301. data/test/foreman_app/vendor/assets/javascripts/ace/mode-ruby.js +0 -1
  1302. data/test/foreman_app/vendor/assets/javascripts/ace/mode-sh.js +0 -1
  1303. data/test/foreman_app/vendor/assets/javascripts/ace/theme-clouds.js +0 -137
  1304. data/test/foreman_app/vendor/assets/javascripts/ace/theme-dawn.js +0 -1
  1305. data/test/foreman_app/vendor/assets/javascripts/ace/theme-textmate.js +0 -1
  1306. data/test/foreman_app/vendor/assets/javascripts/ace/theme-twilight.js +0 -1
  1307. data/test/foreman_app/vendor/assets/javascripts/ace/worker-coffee.js +0 -1
  1308. data/test/foreman_app/vendor/assets/javascripts/ace/worker-css.js +0 -1
  1309. data/test/foreman_app/vendor/assets/javascripts/ace/worker-javascript.js +0 -1
  1310. data/test/foreman_app/vendor/assets/javascripts/ace/worker-json.js +0 -1
  1311. data/test/foreman_app/vendor/assets/javascripts/ace/worker-xquery.js +0 -1
  1312. data/test/foreman_app/vendor/assets/javascripts/background-size.htc +0 -7
  1313. data/test/foreman_app/vendor/assets/javascripts/diff.js +0 -296
  1314. data/test/foreman_app/vendor/assets/javascripts/flot.js +0 -5
  1315. data/test/foreman_app/vendor/assets/javascripts/jquery.cookie.js +0 -91
  1316. data/test/foreman_app/vendor/assets/javascripts/jquery.dataTables.bootstrap-paging.js +0 -101
  1317. data/test/foreman_app/vendor/assets/javascripts/jquery.dataTables.min.js +0 -155
  1318. data/test/foreman_app/vendor/assets/javascripts/jquery.jeditable.js +0 -556
  1319. data/test/foreman_app/vendor/assets/javascripts/jquery.jnotify.js +0 -209
  1320. data/test/foreman_app/vendor/assets/javascripts/jquery.multi-select.js +0 -503
  1321. data/test/foreman_app/vendor/assets/javascripts/noVNC/base64.js +0 -147
  1322. data/test/foreman_app/vendor/assets/javascripts/noVNC/des.js +0 -273
  1323. data/test/foreman_app/vendor/assets/javascripts/noVNC/display.js +0 -700
  1324. data/test/foreman_app/vendor/assets/javascripts/noVNC/input.js +0 -1911
  1325. data/test/foreman_app/vendor/assets/javascripts/noVNC/jsunzip.js +0 -668
  1326. data/test/foreman_app/vendor/assets/javascripts/noVNC/logo.js +0 -1
  1327. data/test/foreman_app/vendor/assets/javascripts/noVNC/playback.js +0 -90
  1328. data/test/foreman_app/vendor/assets/javascripts/noVNC/rfb.js +0 -1846
  1329. data/test/foreman_app/vendor/assets/javascripts/noVNC/ui.js +0 -649
  1330. data/test/foreman_app/vendor/assets/javascripts/noVNC/util.js +0 -303
  1331. data/test/foreman_app/vendor/assets/javascripts/noVNC/web-socket-js/README.txt +0 -109
  1332. data/test/foreman_app/vendor/assets/javascripts/noVNC/web-socket-js/swfobject.js +0 -4
  1333. data/test/foreman_app/vendor/assets/javascripts/noVNC/web-socket-js/web_socket.js +0 -341
  1334. data/test/foreman_app/vendor/assets/javascripts/noVNC/websock.js +0 -356
  1335. data/test/foreman_app/vendor/assets/javascripts/noVNC/webutil.js +0 -148
  1336. data/test/foreman_app/vendor/assets/javascripts/vendor.js +0 -7
  1337. data/test/foreman_app/vendor/assets/stylesheets/jquery.jnotify.css +0 -97
  1338. data/test/foreman_app/vendor/assets/stylesheets/multi-select.scss +0 -126
  1339. data/test/foreman_app/vendor/assets/stylesheets/vendor.css +0 -3
@@ -1 +0,0 @@
1
- noVNC_logo = {"width": 640, "height": 435, "data": "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAoAAAAGzCAYAAAC/y6a9AAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAAStAAAErQBBHTWggAAABl0RVh0U29mdHdhcmUAd3d3Lmlua3NjYXBlLm9yZ5vuPBoAACAASURBVHic7N13fBvlwQfw3522ZMm2vPdIGCFkA4GyoYyGsCmjk+7dQksHL2/H2/dtC4W2tLTlfelu2VA2lEILFCgQIHEGJCQkdjzkLdmWZGvfvX8oOkmJEy/pNO73/Xz44DtLzz2RT7qfnnXC8uXLZUxDlqfdnUYQhIP+bjbPn+5xhypzrmUf6rGzOc5cjzVduXN9/nTPyfRrMt/jzOcY05U5n3L2f95s/34LPW4m/p6FbLp/73xe+5nKnWuZs/07ZOOcnusx5nucbJU727LneuxslDmdTBxn/2NmusyEuZS7kHMxG/XP5Gf3TOVmQzY+u/PhPMnkMcSsH5WIiIiI8goDIBEREZHGMAASERERaQwDIBEREZHGMAASERERaQwDIBEREZHGMAASERERaQwDIBEREZHGMAASERERaQwDIBEREZHGMAASERERaQwDIBEREZHGMAASERERaQwDIBEREZHGMAASERERaQwDIBEREZHGMAASERERaQwDIBEREZHGMAASERERaQwDIBEREZHGMAASERERaQwDIBEREZHGMAASERERaQwDIBEREZHGMAASERERaQwDIBEREZHGMAASERERaQwDIBEREZHGMAASERERaQwDIBEREZHGMAASERERaQwDIBEREZHGMAASERERaQwDIBEREZHGMAASERERaQwDIBEREZHGMAASERERaQwDIBEREZHGMAASERERaQwDIBEREZHGMAASERERaQwDIBEREZHGMAASERERaQwDIBEREZHGMAASERERaQwDIBEREZHGMAASERERaQwDIBEREZHGMAASERERaQwDIBEREZHGMAASERERaQwDIBEREZHGMAASERERaQwDIBEREZHGMAASERERaQwDIBEREZHGMAASERERaQwDIBEREZHGMAASERERaQwDIBEREZHGMAASERERaQwDIBEREZHGMAASERERaQwDIBEREZHGMAASERERaQwDIBEREZHGMAASERERaQwDIBEREZHGMAASERERaQwDIBEREZHGMAASERERaQwDIBEREZHG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"};
@@ -1,90 +0,0 @@
1
- /*
2
- * noVNC: HTML5 VNC client
3
- * Copyright (C) 2011 Joel Martin
4
- * Licensed under LGPL-3 (see LICENSE.LGPL-3)
5
- */
6
-
7
- "use strict";
8
- /*jslint browser: true, white: false */
9
- /*global Util, VNC_frame_data, finish */
10
-
11
- var rfb, mode, test_state, frame_idx, frame_length,
12
- iteration, iterations, istart_time,
13
-
14
- // Pre-declarations for jslint
15
- send_array, next_iteration, queue_next_packet, do_packet;
16
-
17
- // Override send_array
18
- send_array = function (arr) {
19
- // Stub out send_array
20
- };
21
-
22
- next_iteration = function () {
23
- if (iteration === 0) {
24
- frame_length = VNC_frame_data.length;
25
- test_state = 'running';
26
- } else {
27
- rfb.disconnect();
28
- }
29
-
30
- if (test_state !== 'running') { return; }
31
-
32
- iteration += 1;
33
- if (iteration > iterations) {
34
- finish();
35
- return;
36
- }
37
-
38
- frame_idx = 0;
39
- istart_time = (new Date()).getTime();
40
- rfb.connect('test', 0, "bogus");
41
-
42
- queue_next_packet();
43
-
44
- };
45
-
46
- queue_next_packet = function () {
47
- var frame, foffset, toffset, delay;
48
- if (test_state !== 'running') { return; }
49
-
50
- frame = VNC_frame_data[frame_idx];
51
- while ((frame_idx < frame_length) && (frame.charAt(0) === "}")) {
52
- //Util.Debug("Send frame " + frame_idx);
53
- frame_idx += 1;
54
- frame = VNC_frame_data[frame_idx];
55
- }
56
-
57
- if (frame === 'EOF') {
58
- Util.Debug("Finished, found EOF");
59
- next_iteration();
60
- return;
61
- }
62
- if (frame_idx >= frame_length) {
63
- Util.Debug("Finished, no more frames");
64
- next_iteration();
65
- return;
66
- }
67
-
68
- if (mode === 'realtime') {
69
- foffset = frame.slice(1, frame.indexOf('{', 1));
70
- toffset = (new Date()).getTime() - istart_time;
71
- delay = foffset - toffset;
72
- if (delay < 1) {
73
- delay = 1;
74
- }
75
-
76
- setTimeout(do_packet, delay);
77
- } else {
78
- setTimeout(do_packet, 1);
79
- }
80
- };
81
-
82
- do_packet = function () {
83
- //Util.Debug("Processing frame: " + frame_idx);
84
- var frame = VNC_frame_data[frame_idx];
85
- rfb.recv_message({'data' : frame.slice(frame.indexOf('{', 1) + 1)});
86
- frame_idx += 1;
87
-
88
- queue_next_packet();
89
- };
90
-
@@ -1,1846 +0,0 @@
1
- /*
2
- * noVNC: HTML5 VNC client
3
- * Copyright (C) 2011 Joel Martin
4
- * Licensed under LGPL-3 (see LICENSE.txt)
5
- *
6
- * See README.md for usage and integration instructions.
7
- *
8
- * TIGHT decoder portion:
9
- * (c) 2012 Michael Tinglof, Joe Balaz, Les Piech (Mercuri.ca)
10
- */
11
-
12
- /*jslint white: false, browser: true, bitwise: false, plusplus: false */
13
- /*global window, Util, Display, Keyboard, Mouse, Websock, Websock_native, Base64, DES */
14
-
15
-
16
- function RFB(defaults) {
17
- "use strict";
18
-
19
- var that = {}, // Public API methods
20
- conf = {}, // Configuration attributes
21
-
22
- // Pre-declare private functions used before definitions (jslint)
23
- init_vars, updateState, fail, handle_message,
24
- init_msg, normal_msg, framebufferUpdate, print_stats,
25
-
26
- pixelFormat, clientEncodings, fbUpdateRequest, fbUpdateRequests,
27
- keyEvent, pointerEvent, clientCutText,
28
-
29
- getTightCLength, extract_data_uri, scan_tight_imgQ,
30
- keyPress, mouseButton, mouseMove,
31
-
32
- checkEvents, // Overridable for testing
33
-
34
-
35
- //
36
- // Private RFB namespace variables
37
- //
38
- rfb_host = '',
39
- rfb_port = 5900,
40
- rfb_password = '',
41
- rfb_path = '',
42
-
43
- rfb_state = 'disconnected',
44
- rfb_version = 0,
45
- rfb_max_version= 3.8,
46
- rfb_auth_scheme= '',
47
-
48
-
49
- // In preference order
50
- encodings = [
51
- ['COPYRECT', 0x01 ],
52
- ['TIGHT', 0x07 ],
53
- ['TIGHT_PNG', -260 ],
54
- ['HEXTILE', 0x05 ],
55
- ['RRE', 0x02 ],
56
- ['RAW', 0x00 ],
57
- ['DesktopSize', -223 ],
58
- ['Cursor', -239 ],
59
-
60
- // Psuedo-encoding settings
61
- //['JPEG_quality_lo', -32 ],
62
- ['JPEG_quality_med', -26 ],
63
- //['JPEG_quality_hi', -23 ],
64
- //['compress_lo', -255 ],
65
- ['compress_hi', -247 ],
66
- ['last_rect', -224 ]
67
- ],
68
-
69
- encHandlers = {},
70
- encNames = {},
71
- encStats = {}, // [rectCnt, rectCntTot]
72
-
73
- ws = null, // Websock object
74
- display = null, // Display object
75
- keyboard = null, // Keyboard input handler object
76
- mouse = null, // Mouse input handler object
77
- sendTimer = null, // Send Queue check timer
78
- connTimer = null, // connection timer
79
- disconnTimer = null, // disconnection timer
80
- msgTimer = null, // queued handle_message timer
81
-
82
- // Frame buffer update state
83
- FBU = {
84
- rects : 0,
85
- subrects : 0, // RRE
86
- lines : 0, // RAW
87
- tiles : 0, // HEXTILE
88
- bytes : 0,
89
- x : 0,
90
- y : 0,
91
- width : 0,
92
- height : 0,
93
- encoding : 0,
94
- subencoding : -1,
95
- background : null,
96
- imgQ : [], // TIGHT_PNG image queue
97
- zlibs : [] // TIGHT zlib streams
98
- },
99
-
100
- fb_Bpp = 4,
101
- fb_depth = 3,
102
- fb_width = 0,
103
- fb_height = 0,
104
- fb_name = "",
105
-
106
- scan_imgQ_rate = 40, // 25 times per second or so
107
- last_req_time = 0,
108
- rre_chunk_sz = 100,
109
-
110
- timing = {
111
- last_fbu : 0,
112
- fbu_total : 0,
113
- fbu_total_cnt : 0,
114
- full_fbu_total : 0,
115
- full_fbu_cnt : 0,
116
-
117
- fbu_rt_start : 0,
118
- fbu_rt_total : 0,
119
- fbu_rt_cnt : 0,
120
- pixels : 0
121
- },
122
-
123
- test_mode = false,
124
-
125
- def_con_timeout = Websock_native ? 10 : 25,
126
-
127
- /* Mouse state */
128
- mouse_buttonMask = 0,
129
- mouse_arr = [],
130
- viewportDragging = false,
131
- viewportDragPos = {};
132
-
133
- // Configuration attributes
134
- Util.conf_defaults(conf, that, defaults, [
135
- ['target', 'wo', 'dom', null, 'VNC display rendering Canvas object'],
136
- ['focusContainer', 'wo', 'dom', document, 'DOM element that captures keyboard input'],
137
-
138
- ['encrypt', 'rw', 'bool', false, 'Use TLS/SSL/wss encryption'],
139
- ['true_color', 'rw', 'bool', true, 'Request true color pixel data'],
140
- ['local_cursor', 'rw', 'bool', false, 'Request locally rendered cursor'],
141
- ['shared', 'rw', 'bool', true, 'Request shared mode'],
142
- ['view_only', 'rw', 'bool', false, 'Disable client mouse/keyboard'],
143
-
144
- ['connectTimeout', 'rw', 'int', def_con_timeout, 'Time (s) to wait for connection'],
145
- ['disconnectTimeout', 'rw', 'int', 10, 'Time (s) to wait for disconnection'],
146
-
147
- ['viewportDrag', 'rw', 'bool', false, 'Move the viewport on mouse drags'],
148
-
149
- ['check_rate', 'rw', 'int', 217, 'Timing (ms) of send/receive check'],
150
- ['fbu_req_rate', 'rw', 'int', 1413, 'Timing (ms) of frameBufferUpdate requests'],
151
-
152
- // Callback functions
153
- ['onUpdateState', 'rw', 'func', function() { },
154
- 'onUpdateState(rfb, state, oldstate, statusMsg): RFB state update/change '],
155
- ['onPasswordRequired', 'rw', 'func', function() { },
156
- 'onPasswordRequired(rfb): VNC password is required '],
157
- ['onClipboard', 'rw', 'func', function() { },
158
- 'onClipboard(rfb, text): RFB clipboard contents received'],
159
- ['onBell', 'rw', 'func', function() { },
160
- 'onBell(rfb): RFB Bell message received '],
161
- ['onFBUReceive', 'rw', 'func', function() { },
162
- 'onFBUReceive(rfb, fbu): RFB FBU received but not yet processed '],
163
- ['onFBUComplete', 'rw', 'func', function() { },
164
- 'onFBUComplete(rfb, fbu): RFB FBU received and processed '],
165
-
166
- // These callback names are deprecated
167
- ['updateState', 'rw', 'func', function() { },
168
- 'obsolete, use onUpdateState'],
169
- ['clipboardReceive', 'rw', 'func', function() { },
170
- 'obsolete, use onClipboard']
171
- ]);
172
-
173
-
174
- // Override/add some specific configuration getters/setters
175
- that.set_local_cursor = function(cursor) {
176
- if ((!cursor) || (cursor in {'0':1, 'no':1, 'false':1})) {
177
- conf.local_cursor = false;
178
- } else {
179
- if (display.get_cursor_uri()) {
180
- conf.local_cursor = true;
181
- } else {
182
- Util.Warn("Browser does not support local cursor");
183
- }
184
- }
185
- };
186
-
187
- // These are fake configuration getters
188
- that.get_display = function() { return display; };
189
-
190
- that.get_keyboard = function() { return keyboard; };
191
-
192
- that.get_mouse = function() { return mouse; };
193
-
194
-
195
-
196
- //
197
- // Setup routines
198
- //
199
-
200
- // Create the public API interface and initialize values that stay
201
- // constant across connect/disconnect
202
- function constructor() {
203
- var i, rmode;
204
- Util.Debug(">> RFB.constructor");
205
-
206
- // Create lookup tables based encoding number
207
- for (i=0; i < encodings.length; i+=1) {
208
- encHandlers[encodings[i][1]] = encHandlers[encodings[i][0]];
209
- encNames[encodings[i][1]] = encodings[i][0];
210
- encStats[encodings[i][1]] = [0, 0];
211
- }
212
- // Initialize display, mouse, keyboard, and websock
213
- try {
214
- display = new Display({'target': conf.target});
215
- } catch (exc) {
216
- Util.Error("Display exception: " + exc);
217
- updateState('fatal', "No working Display");
218
- }
219
- keyboard = new Keyboard({'target': conf.focusContainer,
220
- 'onKeyPress': keyPress});
221
- mouse = new Mouse({'target': conf.target,
222
- 'onMouseButton': mouseButton,
223
- 'onMouseMove': mouseMove});
224
-
225
- rmode = display.get_render_mode();
226
-
227
- ws = new Websock();
228
- ws.on('message', handle_message);
229
- ws.on('open', function() {
230
- if (rfb_state === "connect") {
231
- updateState('ProtocolVersion', "Starting VNC handshake");
232
- } else {
233
- fail("Got unexpected WebSockets connection");
234
- }
235
- });
236
- ws.on('close', function(e) {
237
- if (e.code) {
238
- Util.Info("Close code: " + e.code + ", reason: " + e.reason + ", wasClean: " + e.wasClean);
239
- }
240
- if (rfb_state === 'disconnect') {
241
- updateState('disconnected', 'VNC disconnected');
242
- } else if (rfb_state === 'ProtocolVersion') {
243
- fail('Failed to connect to server');
244
- } else if (rfb_state in {'failed':1, 'disconnected':1}) {
245
- Util.Error("Received onclose while disconnected");
246
- } else {
247
- fail('Server disconnected');
248
- }
249
- });
250
- ws.on('error', function(e) {
251
- fail("WebSock error: " + e);
252
- });
253
-
254
-
255
- init_vars();
256
-
257
- /* Check web-socket-js if no builtin WebSocket support */
258
- if (Websock_native) {
259
- Util.Info("Using native WebSockets");
260
- updateState('loaded', 'noVNC ready: native WebSockets, ' + rmode);
261
- } else {
262
- Util.Warn("Using web-socket-js bridge. Flash version: " +
263
- Util.Flash.version);
264
- if ((! Util.Flash) ||
265
- (Util.Flash.version < 9)) {
266
- updateState('fatal', "WebSockets or <a href='http://get.adobe.com/flashplayer'>Adobe Flash<\/a> is required");
267
- } else if (document.location.href.substr(0, 7) === "file://") {
268
- updateState('fatal',
269
- "'file://' URL is incompatible with Adobe Flash");
270
- } else {
271
- updateState('loaded', 'noVNC ready: WebSockets emulation, ' + rmode);
272
- }
273
- }
274
-
275
- Util.Debug("<< RFB.constructor");
276
- return that; // Return the public API interface
277
- }
278
-
279
- function connect() {
280
- Util.Debug(">> RFB.connect");
281
- var uri;
282
-
283
- if (typeof UsingSocketIO !== "undefined") {
284
- uri = "http://" + rfb_host + ":" + rfb_port + "/" + rfb_path;
285
- } else {
286
- if (conf.encrypt) {
287
- uri = "wss://";
288
- } else {
289
- uri = "ws://";
290
- }
291
- uri += rfb_host + ":" + rfb_port + "/" + rfb_path;
292
- }
293
- Util.Info("connecting to " + uri);
294
- ws.open(uri);
295
-
296
- Util.Debug("<< RFB.connect");
297
- }
298
-
299
- // Initialize variables that are reset before each connection
300
- init_vars = function() {
301
- var i;
302
-
303
- /* Reset state */
304
- ws.init();
305
-
306
- FBU.rects = 0;
307
- FBU.subrects = 0; // RRE and HEXTILE
308
- FBU.lines = 0; // RAW
309
- FBU.tiles = 0; // HEXTILE
310
- FBU.imgQ = []; // TIGHT_PNG image queue
311
- FBU.zlibs = []; // TIGHT zlib encoders
312
- mouse_buttonMask = 0;
313
- mouse_arr = [];
314
-
315
- // Clear the per connection encoding stats
316
- for (i=0; i < encodings.length; i+=1) {
317
- encStats[encodings[i][1]][0] = 0;
318
- }
319
-
320
- for (i=0; i < 4; i++) {
321
- //FBU.zlibs[i] = new InflateStream();
322
- FBU.zlibs[i] = new TINF();
323
- FBU.zlibs[i].init();
324
- }
325
- };
326
-
327
- // Print statistics
328
- print_stats = function() {
329
- var i, s;
330
- Util.Info("Encoding stats for this connection:");
331
- for (i=0; i < encodings.length; i+=1) {
332
- s = encStats[encodings[i][1]];
333
- if ((s[0] + s[1]) > 0) {
334
- Util.Info(" " + encodings[i][0] + ": " +
335
- s[0] + " rects");
336
- }
337
- }
338
- Util.Info("Encoding stats since page load:");
339
- for (i=0; i < encodings.length; i+=1) {
340
- s = encStats[encodings[i][1]];
341
- if ((s[0] + s[1]) > 0) {
342
- Util.Info(" " + encodings[i][0] + ": " +
343
- s[1] + " rects");
344
- }
345
- }
346
- };
347
-
348
- //
349
- // Utility routines
350
- //
351
-
352
-
353
- /*
354
- * Page states:
355
- * loaded - page load, equivalent to disconnected
356
- * disconnected - idle state
357
- * connect - starting to connect (to ProtocolVersion)
358
- * normal - connected
359
- * disconnect - starting to disconnect
360
- * failed - abnormal disconnect
361
- * fatal - failed to load page, or fatal error
362
- *
363
- * RFB protocol initialization states:
364
- * ProtocolVersion
365
- * Security
366
- * Authentication
367
- * password - waiting for password, not part of RFB
368
- * SecurityResult
369
- * ClientInitialization - not triggered by server message
370
- * ServerInitialization (to normal)
371
- */
372
- updateState = function(state, statusMsg) {
373
- var func, cmsg, oldstate = rfb_state;
374
-
375
- if (state === oldstate) {
376
- /* Already here, ignore */
377
- Util.Debug("Already in state '" + state + "', ignoring.");
378
- return;
379
- }
380
-
381
- /*
382
- * These are disconnected states. A previous connect may
383
- * asynchronously cause a connection so make sure we are closed.
384
- */
385
- if (state in {'disconnected':1, 'loaded':1, 'connect':1,
386
- 'disconnect':1, 'failed':1, 'fatal':1}) {
387
- if (sendTimer) {
388
- clearInterval(sendTimer);
389
- sendTimer = null;
390
- }
391
-
392
- if (msgTimer) {
393
- clearInterval(msgTimer);
394
- msgTimer = null;
395
- }
396
-
397
- if (display && display.get_context()) {
398
- keyboard.ungrab();
399
- mouse.ungrab();
400
- display.defaultCursor();
401
- if ((Util.get_logging() !== 'debug') ||
402
- (state === 'loaded')) {
403
- // Show noVNC logo on load and when disconnected if
404
- // debug is off
405
- display.clear();
406
- }
407
- }
408
-
409
- ws.close();
410
- }
411
-
412
- if (oldstate === 'fatal') {
413
- Util.Error("Fatal error, cannot continue");
414
- }
415
-
416
- if ((state === 'failed') || (state === 'fatal')) {
417
- func = Util.Error;
418
- } else {
419
- func = Util.Warn;
420
- }
421
-
422
- if ((oldstate === 'failed') && (state === 'disconnected')) {
423
- // Do disconnect action, but stay in failed state.
424
- rfb_state = 'failed';
425
- } else {
426
- rfb_state = state;
427
- }
428
-
429
- cmsg = typeof(statusMsg) !== 'undefined' ? (" Msg: " + statusMsg) : "";
430
- func("New state '" + rfb_state + "', was '" + oldstate + "'." + cmsg);
431
-
432
- if (connTimer && (rfb_state !== 'connect')) {
433
- Util.Debug("Clearing connect timer");
434
- clearInterval(connTimer);
435
- connTimer = null;
436
- }
437
-
438
- if (disconnTimer && (rfb_state !== 'disconnect')) {
439
- Util.Debug("Clearing disconnect timer");
440
- clearInterval(disconnTimer);
441
- disconnTimer = null;
442
- }
443
-
444
- switch (state) {
445
- case 'normal':
446
- if ((oldstate === 'disconnected') || (oldstate === 'failed')) {
447
- Util.Error("Invalid transition from 'disconnected' or 'failed' to 'normal'");
448
- }
449
-
450
- break;
451
-
452
-
453
- case 'connect':
454
-
455
- connTimer = setTimeout(function () {
456
- fail("Connect timeout");
457
- }, conf.connectTimeout * 1000);
458
-
459
- init_vars();
460
- connect();
461
-
462
- // WebSocket.onopen transitions to 'ProtocolVersion'
463
- break;
464
-
465
-
466
- case 'disconnect':
467
-
468
- if (! test_mode) {
469
- disconnTimer = setTimeout(function () {
470
- fail("Disconnect timeout");
471
- }, conf.disconnectTimeout * 1000);
472
- }
473
-
474
- print_stats();
475
-
476
- // WebSocket.onclose transitions to 'disconnected'
477
- break;
478
-
479
-
480
- case 'failed':
481
- if (oldstate === 'disconnected') {
482
- Util.Error("Invalid transition from 'disconnected' to 'failed'");
483
- }
484
- if (oldstate === 'normal') {
485
- Util.Error("Error while connected.");
486
- }
487
- if (oldstate === 'init') {
488
- Util.Error("Error while initializing.");
489
- }
490
-
491
- // Make sure we transition to disconnected
492
- setTimeout(function() { updateState('disconnected'); }, 50);
493
-
494
- break;
495
-
496
-
497
- default:
498
- // No state change action to take
499
-
500
- }
501
-
502
- if ((oldstate === 'failed') && (state === 'disconnected')) {
503
- // Leave the failed message
504
- conf.updateState(that, state, oldstate); // Obsolete
505
- conf.onUpdateState(that, state, oldstate);
506
- } else {
507
- conf.updateState(that, state, oldstate, statusMsg); // Obsolete
508
- conf.onUpdateState(that, state, oldstate, statusMsg);
509
- }
510
- };
511
-
512
- fail = function(msg) {
513
- updateState('failed', msg);
514
- return false;
515
- };
516
-
517
- handle_message = function() {
518
- //Util.Debug(">> handle_message ws.rQlen(): " + ws.rQlen());
519
- //Util.Debug("ws.rQslice(0,20): " + ws.rQslice(0,20) + " (" + ws.rQlen() + ")");
520
- if (ws.rQlen() === 0) {
521
- Util.Warn("handle_message called on empty receive queue");
522
- return;
523
- }
524
- switch (rfb_state) {
525
- case 'disconnected':
526
- case 'failed':
527
- Util.Error("Got data while disconnected");
528
- break;
529
- case 'normal':
530
- if (normal_msg() && ws.rQlen() > 0) {
531
- // true means we can continue processing
532
- // Give other events a chance to run
533
- if (msgTimer === null) {
534
- Util.Debug("More data to process, creating timer");
535
- msgTimer = setTimeout(function () {
536
- msgTimer = null;
537
- handle_message();
538
- }, 10);
539
- } else {
540
- Util.Debug("More data to process, existing timer");
541
- }
542
- }
543
- break;
544
- default:
545
- init_msg();
546
- break;
547
- }
548
- };
549
-
550
-
551
- function genDES(password, challenge) {
552
- var i, passwd = [];
553
- for (i=0; i < password.length; i += 1) {
554
- passwd.push(password.charCodeAt(i));
555
- }
556
- return (new DES(passwd)).encrypt(challenge);
557
- }
558
-
559
- function flushClient() {
560
- if (mouse_arr.length > 0) {
561
- //send(mouse_arr.concat(fbUpdateRequests()));
562
- ws.send(mouse_arr);
563
- setTimeout(function() {
564
- ws.send(fbUpdateRequests());
565
- }, 50);
566
-
567
- mouse_arr = [];
568
- return true;
569
- } else {
570
- return false;
571
- }
572
- }
573
-
574
- // overridable for testing
575
- checkEvents = function() {
576
- var now;
577
- if (rfb_state === 'normal' && !viewportDragging) {
578
- if (! flushClient()) {
579
- now = new Date().getTime();
580
- if (now > last_req_time + conf.fbu_req_rate) {
581
- last_req_time = now;
582
- ws.send(fbUpdateRequests());
583
- }
584
- }
585
- }
586
- setTimeout(checkEvents, conf.check_rate);
587
- };
588
-
589
- keyPress = function(keysym, down) {
590
- var arr;
591
-
592
- if (conf.view_only) { return; } // View only, skip keyboard events
593
-
594
- arr = keyEvent(keysym, down);
595
- arr = arr.concat(fbUpdateRequests());
596
- ws.send(arr);
597
- };
598
-
599
- mouseButton = function(x, y, down, bmask) {
600
- if (down) {
601
- mouse_buttonMask |= bmask;
602
- } else {
603
- mouse_buttonMask ^= bmask;
604
- }
605
-
606
- if (conf.viewportDrag) {
607
- if (down && !viewportDragging) {
608
- viewportDragging = true;
609
- viewportDragPos = {'x': x, 'y': y};
610
-
611
- // Skip sending mouse events
612
- return;
613
- } else {
614
- viewportDragging = false;
615
- ws.send(fbUpdateRequests()); // Force immediate redraw
616
- }
617
- }
618
-
619
- if (conf.view_only) { return; } // View only, skip mouse events
620
-
621
- mouse_arr = mouse_arr.concat(
622
- pointerEvent(display.absX(x), display.absY(y)) );
623
- flushClient();
624
- };
625
-
626
- mouseMove = function(x, y) {
627
- //Util.Debug('>> mouseMove ' + x + "," + y);
628
- var deltaX, deltaY;
629
-
630
- if (viewportDragging) {
631
- //deltaX = x - viewportDragPos.x; // drag viewport
632
- deltaX = viewportDragPos.x - x; // drag frame buffer
633
- //deltaY = y - viewportDragPos.y; // drag viewport
634
- deltaY = viewportDragPos.y - y; // drag frame buffer
635
- viewportDragPos = {'x': x, 'y': y};
636
-
637
- display.viewportChange(deltaX, deltaY);
638
-
639
- // Skip sending mouse events
640
- return;
641
- }
642
-
643
- if (conf.view_only) { return; } // View only, skip mouse events
644
-
645
- mouse_arr = mouse_arr.concat(
646
- pointerEvent(display.absX(x), display.absY(y)) );
647
- };
648
-
649
-
650
- //
651
- // Server message handlers
652
- //
653
-
654
- // RFB/VNC initialisation message handler
655
- init_msg = function() {
656
- //Util.Debug(">> init_msg [rfb_state '" + rfb_state + "']");
657
-
658
- var strlen, reason, length, sversion, cversion,
659
- i, types, num_types, challenge, response, bpp, depth,
660
- big_endian, red_max, green_max, blue_max, red_shift,
661
- green_shift, blue_shift, true_color, name_length;
662
-
663
- //Util.Debug("ws.rQ (" + ws.rQlen() + ") " + ws.rQslice(0));
664
- switch (rfb_state) {
665
-
666
- case 'ProtocolVersion' :
667
- if (ws.rQlen() < 12) {
668
- return fail("Incomplete protocol version");
669
- }
670
- sversion = ws.rQshiftStr(12).substr(4,7);
671
- Util.Info("Server ProtocolVersion: " + sversion);
672
- switch (sversion) {
673
- case "003.003": rfb_version = 3.3; break;
674
- case "003.006": rfb_version = 3.3; break; // UltraVNC
675
- case "003.007": rfb_version = 3.7; break;
676
- case "003.008": rfb_version = 3.8; break;
677
- case "004.000": rfb_version = 3.8; break; // Intel AMT KVM
678
- default:
679
- return fail("Invalid server version " + sversion);
680
- }
681
- if (rfb_version > rfb_max_version) {
682
- rfb_version = rfb_max_version;
683
- }
684
-
685
- if (! test_mode) {
686
- sendTimer = setInterval(function() {
687
- // Send updates either at a rate of one update
688
- // every 50ms, or whatever slower rate the network
689
- // can handle.
690
- ws.flush();
691
- }, 50);
692
- }
693
-
694
- cversion = "00" + parseInt(rfb_version,10) +
695
- ".00" + ((rfb_version * 10) % 10);
696
- ws.send_string("RFB " + cversion + "\n");
697
- updateState('Security', "Sent ProtocolVersion: " + cversion);
698
- break;
699
-
700
- case 'Security' :
701
- if (rfb_version >= 3.7) {
702
- // Server sends supported list, client decides
703
- num_types = ws.rQshift8();
704
- if (ws.rQwait("security type", num_types, 1)) { return false; }
705
- if (num_types === 0) {
706
- strlen = ws.rQshift32();
707
- reason = ws.rQshiftStr(strlen);
708
- return fail("Security failure: " + reason);
709
- }
710
- rfb_auth_scheme = 0;
711
- types = ws.rQshiftBytes(num_types);
712
- Util.Debug("Server security types: " + types);
713
- for (i=0; i < types.length; i+=1) {
714
- if ((types[i] > rfb_auth_scheme) && (types[i] < 3)) {
715
- rfb_auth_scheme = types[i];
716
- }
717
- }
718
- if (rfb_auth_scheme === 0) {
719
- return fail("Unsupported security types: " + types);
720
- }
721
-
722
- ws.send([rfb_auth_scheme]);
723
- } else {
724
- // Server decides
725
- if (ws.rQwait("security scheme", 4)) { return false; }
726
- rfb_auth_scheme = ws.rQshift32();
727
- }
728
- updateState('Authentication',
729
- "Authenticating using scheme: " + rfb_auth_scheme);
730
- init_msg(); // Recursive fallthrough (workaround JSLint complaint)
731
- break;
732
-
733
- // Triggered by fallthough, not by server message
734
- case 'Authentication' :
735
- //Util.Debug("Security auth scheme: " + rfb_auth_scheme);
736
- switch (rfb_auth_scheme) {
737
- case 0: // connection failed
738
- if (ws.rQwait("auth reason", 4)) { return false; }
739
- strlen = ws.rQshift32();
740
- reason = ws.rQshiftStr(strlen);
741
- return fail("Auth failure: " + reason);
742
- case 1: // no authentication
743
- if (rfb_version >= 3.8) {
744
- updateState('SecurityResult');
745
- return;
746
- }
747
- // Fall through to ClientInitialisation
748
- break;
749
- case 2: // VNC authentication
750
- if (rfb_password.length === 0) {
751
- // Notify via both callbacks since it is kind of
752
- // a RFB state change and a UI interface issue.
753
- updateState('password', "Password Required");
754
- conf.onPasswordRequired(that);
755
- return;
756
- }
757
- if (ws.rQwait("auth challenge", 16)) { return false; }
758
- challenge = ws.rQshiftBytes(16);
759
- //Util.Debug("Password: " + rfb_password);
760
- //Util.Debug("Challenge: " + challenge +
761
- // " (" + challenge.length + ")");
762
- response = genDES(rfb_password, challenge);
763
- //Util.Debug("Response: " + response +
764
- // " (" + response.length + ")");
765
-
766
- //Util.Debug("Sending DES encrypted auth response");
767
- ws.send(response);
768
- updateState('SecurityResult');
769
- return;
770
- default:
771
- fail("Unsupported auth scheme: " + rfb_auth_scheme);
772
- return;
773
- }
774
- updateState('ClientInitialisation', "No auth required");
775
- init_msg(); // Recursive fallthrough (workaround JSLint complaint)
776
- break;
777
-
778
- case 'SecurityResult' :
779
- if (ws.rQwait("VNC auth response ", 4)) { return false; }
780
- switch (ws.rQshift32()) {
781
- case 0: // OK
782
- // Fall through to ClientInitialisation
783
- break;
784
- case 1: // failed
785
- if (rfb_version >= 3.8) {
786
- length = ws.rQshift32();
787
- if (ws.rQwait("SecurityResult reason", length, 8)) {
788
- return false;
789
- }
790
- reason = ws.rQshiftStr(length);
791
- fail(reason);
792
- } else {
793
- fail("Authentication failed");
794
- }
795
- return;
796
- case 2: // too-many
797
- return fail("Too many auth attempts");
798
- }
799
- updateState('ClientInitialisation', "Authentication OK");
800
- init_msg(); // Recursive fallthrough (workaround JSLint complaint)
801
- break;
802
-
803
- // Triggered by fallthough, not by server message
804
- case 'ClientInitialisation' :
805
- ws.send([conf.shared ? 1 : 0]); // ClientInitialisation
806
- updateState('ServerInitialisation', "Authentication OK");
807
- break;
808
-
809
- case 'ServerInitialisation' :
810
- if (ws.rQwait("server initialization", 24)) { return false; }
811
-
812
- /* Screen size */
813
- fb_width = ws.rQshift16();
814
- fb_height = ws.rQshift16();
815
-
816
- /* PIXEL_FORMAT */
817
- bpp = ws.rQshift8();
818
- depth = ws.rQshift8();
819
- big_endian = ws.rQshift8();
820
- true_color = ws.rQshift8();
821
-
822
- red_max = ws.rQshift16();
823
- green_max = ws.rQshift16();
824
- blue_max = ws.rQshift16();
825
- red_shift = ws.rQshift8();
826
- green_shift = ws.rQshift8();
827
- blue_shift = ws.rQshift8();
828
- ws.rQshiftStr(3); // padding
829
-
830
- Util.Info("Screen: " + fb_width + "x" + fb_height +
831
- ", bpp: " + bpp + ", depth: " + depth +
832
- ", big_endian: " + big_endian +
833
- ", true_color: " + true_color +
834
- ", red_max: " + red_max +
835
- ", green_max: " + green_max +
836
- ", blue_max: " + blue_max +
837
- ", red_shift: " + red_shift +
838
- ", green_shift: " + green_shift +
839
- ", blue_shift: " + blue_shift);
840
-
841
- if (big_endian !== 0) {
842
- Util.Warn("Server native endian is not little endian");
843
- }
844
- if (red_shift !== 16) {
845
- Util.Warn("Server native red-shift is not 16");
846
- }
847
- if (blue_shift !== 0) {
848
- Util.Warn("Server native blue-shift is not 0");
849
- }
850
-
851
- /* Connection name/title */
852
- name_length = ws.rQshift32();
853
- fb_name = ws.rQshiftStr(name_length);
854
-
855
- if (conf.true_color && fb_name === "Intel(r) AMT KVM")
856
- {
857
- Util.Warn("Intel AMT KVM only support 8/16 bit depths. Disabling true color");
858
- conf.true_color = false;
859
- }
860
-
861
- display.set_true_color(conf.true_color);
862
- display.resize(fb_width, fb_height);
863
- keyboard.grab();
864
- mouse.grab();
865
-
866
- if (conf.true_color) {
867
- fb_Bpp = 4;
868
- fb_depth = 3;
869
- } else {
870
- fb_Bpp = 1;
871
- fb_depth = 1;
872
- }
873
-
874
- response = pixelFormat();
875
- response = response.concat(clientEncodings());
876
- response = response.concat(fbUpdateRequests());
877
- timing.fbu_rt_start = (new Date()).getTime();
878
- ws.send(response);
879
-
880
- /* Start pushing/polling */
881
- setTimeout(checkEvents, conf.check_rate);
882
- setTimeout(scan_tight_imgQ, scan_imgQ_rate);
883
-
884
- if (conf.encrypt) {
885
- updateState('normal', "Connected (encrypted) to: " + fb_name);
886
- } else {
887
- updateState('normal', "Connected (unencrypted) to: " + fb_name);
888
- }
889
- break;
890
- }
891
- //Util.Debug("<< init_msg");
892
- };
893
-
894
-
895
- /* Normal RFB/VNC server message handler */
896
- normal_msg = function() {
897
- //Util.Debug(">> normal_msg");
898
-
899
- var ret = true, msg_type, length, text,
900
- c, first_colour, num_colours, red, green, blue;
901
-
902
- if (FBU.rects > 0) {
903
- msg_type = 0;
904
- } else {
905
- msg_type = ws.rQshift8();
906
- }
907
- switch (msg_type) {
908
- case 0: // FramebufferUpdate
909
- ret = framebufferUpdate(); // false means need more data
910
- break;
911
- case 1: // SetColourMapEntries
912
- Util.Debug("SetColourMapEntries");
913
- ws.rQshift8(); // Padding
914
- first_colour = ws.rQshift16(); // First colour
915
- num_colours = ws.rQshift16();
916
- if (ws.rQwait("SetColourMapEntries", num_colours*6, 6)) { return false; }
917
-
918
- for (c=0; c < num_colours; c+=1) {
919
- red = ws.rQshift16();
920
- //Util.Debug("red before: " + red);
921
- red = parseInt(red / 256, 10);
922
- //Util.Debug("red after: " + red);
923
- green = parseInt(ws.rQshift16() / 256, 10);
924
- blue = parseInt(ws.rQshift16() / 256, 10);
925
- display.set_colourMap([blue, green, red], first_colour + c);
926
- }
927
- Util.Debug("colourMap: " + display.get_colourMap());
928
- Util.Info("Registered " + num_colours + " colourMap entries");
929
- //Util.Debug("colourMap: " + display.get_colourMap());
930
- break;
931
- case 2: // Bell
932
- Util.Debug("Bell");
933
- conf.onBell(that);
934
- break;
935
- case 3: // ServerCutText
936
- Util.Debug("ServerCutText");
937
- if (ws.rQwait("ServerCutText header", 7, 1)) { return false; }
938
- ws.rQshiftBytes(3); // Padding
939
- length = ws.rQshift32();
940
- if (ws.rQwait("ServerCutText", length, 8)) { return false; }
941
-
942
- text = ws.rQshiftStr(length);
943
- conf.clipboardReceive(that, text); // Obsolete
944
- conf.onClipboard(that, text);
945
- break;
946
- default:
947
- fail("Disconnected: illegal server message type " + msg_type);
948
- Util.Debug("ws.rQslice(0,30):" + ws.rQslice(0,30));
949
- break;
950
- }
951
- //Util.Debug("<< normal_msg");
952
- return ret;
953
- };
954
-
955
- framebufferUpdate = function() {
956
- var now, hdr, fbu_rt_diff, ret = true;
957
-
958
- if (FBU.rects === 0) {
959
- //Util.Debug("New FBU: ws.rQslice(0,20): " + ws.rQslice(0,20));
960
- if (ws.rQwait("FBU header", 3)) {
961
- ws.rQunshift8(0); // FBU msg_type
962
- return false;
963
- }
964
- ws.rQshift8(); // padding
965
- FBU.rects = ws.rQshift16();
966
- //Util.Debug("FramebufferUpdate, rects:" + FBU.rects);
967
- FBU.bytes = 0;
968
- timing.cur_fbu = 0;
969
- if (timing.fbu_rt_start > 0) {
970
- now = (new Date()).getTime();
971
- Util.Info("First FBU latency: " + (now - timing.fbu_rt_start));
972
- }
973
- }
974
-
975
- while (FBU.rects > 0) {
976
- if (rfb_state !== "normal") {
977
- return false;
978
- }
979
- if (ws.rQwait("FBU", FBU.bytes)) { return false; }
980
- if (FBU.bytes === 0) {
981
- if (ws.rQwait("rect header", 12)) { return false; }
982
- /* New FramebufferUpdate */
983
-
984
- hdr = ws.rQshiftBytes(12);
985
- FBU.x = (hdr[0] << 8) + hdr[1];
986
- FBU.y = (hdr[2] << 8) + hdr[3];
987
- FBU.width = (hdr[4] << 8) + hdr[5];
988
- FBU.height = (hdr[6] << 8) + hdr[7];
989
- FBU.encoding = parseInt((hdr[8] << 24) + (hdr[9] << 16) +
990
- (hdr[10] << 8) + hdr[11], 10);
991
-
992
- conf.onFBUReceive(that,
993
- {'x': FBU.x, 'y': FBU.y,
994
- 'width': FBU.width, 'height': FBU.height,
995
- 'encoding': FBU.encoding,
996
- 'encodingName': encNames[FBU.encoding]});
997
-
998
- if (encNames[FBU.encoding]) {
999
- // Debug:
1000
- /*
1001
- var msg = "FramebufferUpdate rects:" + FBU.rects;
1002
- msg += " x: " + FBU.x + " y: " + FBU.y;
1003
- msg += " width: " + FBU.width + " height: " + FBU.height;
1004
- msg += " encoding:" + FBU.encoding;
1005
- msg += "(" + encNames[FBU.encoding] + ")";
1006
- msg += ", ws.rQlen(): " + ws.rQlen();
1007
- Util.Debug(msg);
1008
- */
1009
- } else {
1010
- fail("Disconnected: unsupported encoding " +
1011
- FBU.encoding);
1012
- return false;
1013
- }
1014
- }
1015
-
1016
- timing.last_fbu = (new Date()).getTime();
1017
-
1018
- ret = encHandlers[FBU.encoding]();
1019
-
1020
- now = (new Date()).getTime();
1021
- timing.cur_fbu += (now - timing.last_fbu);
1022
-
1023
- if (ret) {
1024
- encStats[FBU.encoding][0] += 1;
1025
- encStats[FBU.encoding][1] += 1;
1026
- timing.pixels += FBU.width * FBU.height;
1027
- }
1028
-
1029
- if (FBU.rects === 0 || (timing.pixels >= (fb_width * fb_height))) {
1030
- if (((FBU.width === fb_width) &&
1031
- (FBU.height === fb_height)) ||
1032
- (timing.fbu_rt_start > 0)) {
1033
- timing.full_fbu_total += timing.cur_fbu;
1034
- timing.full_fbu_cnt += 1;
1035
- Util.Info("Timing of full FBU, cur: " +
1036
- timing.cur_fbu + ", total: " +
1037
- timing.full_fbu_total + ", cnt: " +
1038
- timing.full_fbu_cnt + ", avg: " +
1039
- (timing.full_fbu_total /
1040
- timing.full_fbu_cnt));
1041
- }
1042
- if (timing.fbu_rt_start > 0) {
1043
- fbu_rt_diff = now - timing.fbu_rt_start;
1044
- timing.fbu_rt_total += fbu_rt_diff;
1045
- timing.fbu_rt_cnt += 1;
1046
- Util.Info("full FBU round-trip, cur: " +
1047
- fbu_rt_diff + ", total: " +
1048
- timing.fbu_rt_total + ", cnt: " +
1049
- timing.fbu_rt_cnt + ", avg: " +
1050
- (timing.fbu_rt_total /
1051
- timing.fbu_rt_cnt));
1052
- timing.fbu_rt_start = 0;
1053
- }
1054
- }
1055
- if (! ret) {
1056
- return ret; // false ret means need more data
1057
- }
1058
- }
1059
-
1060
- conf.onFBUComplete(that,
1061
- {'x': FBU.x, 'y': FBU.y,
1062
- 'width': FBU.width, 'height': FBU.height,
1063
- 'encoding': FBU.encoding,
1064
- 'encodingName': encNames[FBU.encoding]});
1065
-
1066
- return true; // We finished this FBU
1067
- };
1068
-
1069
- //
1070
- // FramebufferUpdate encodings
1071
- //
1072
-
1073
- encHandlers.RAW = function display_raw() {
1074
- //Util.Debug(">> display_raw (" + ws.rQlen() + " bytes)");
1075
-
1076
- var cur_y, cur_height;
1077
-
1078
- if (FBU.lines === 0) {
1079
- FBU.lines = FBU.height;
1080
- }
1081
- FBU.bytes = FBU.width * fb_Bpp; // At least a line
1082
- if (ws.rQwait("RAW", FBU.bytes)) { return false; }
1083
- cur_y = FBU.y + (FBU.height - FBU.lines);
1084
- cur_height = Math.min(FBU.lines,
1085
- Math.floor(ws.rQlen()/(FBU.width * fb_Bpp)));
1086
- display.blitImage(FBU.x, cur_y, FBU.width, cur_height,
1087
- ws.get_rQ(), ws.get_rQi());
1088
- ws.rQshiftBytes(FBU.width * cur_height * fb_Bpp);
1089
- FBU.lines -= cur_height;
1090
-
1091
- if (FBU.lines > 0) {
1092
- FBU.bytes = FBU.width * fb_Bpp; // At least another line
1093
- } else {
1094
- FBU.rects -= 1;
1095
- FBU.bytes = 0;
1096
- }
1097
- //Util.Debug("<< display_raw (" + ws.rQlen() + " bytes)");
1098
- return true;
1099
- };
1100
-
1101
- encHandlers.COPYRECT = function display_copy_rect() {
1102
- //Util.Debug(">> display_copy_rect");
1103
-
1104
- var old_x, old_y;
1105
-
1106
- if (ws.rQwait("COPYRECT", 4)) { return false; }
1107
- old_x = ws.rQshift16();
1108
- old_y = ws.rQshift16();
1109
- display.copyImage(old_x, old_y, FBU.x, FBU.y, FBU.width, FBU.height);
1110
- FBU.rects -= 1;
1111
- FBU.bytes = 0;
1112
- return true;
1113
- };
1114
-
1115
- encHandlers.RRE = function display_rre() {
1116
- //Util.Debug(">> display_rre (" + ws.rQlen() + " bytes)");
1117
- var color, x, y, width, height, chunk;
1118
-
1119
- if (FBU.subrects === 0) {
1120
- if (ws.rQwait("RRE", 4+fb_Bpp)) { return false; }
1121
- FBU.subrects = ws.rQshift32();
1122
- color = ws.rQshiftBytes(fb_Bpp); // Background
1123
- display.fillRect(FBU.x, FBU.y, FBU.width, FBU.height, color);
1124
- }
1125
- while ((FBU.subrects > 0) && (ws.rQlen() >= (fb_Bpp + 8))) {
1126
- color = ws.rQshiftBytes(fb_Bpp);
1127
- x = ws.rQshift16();
1128
- y = ws.rQshift16();
1129
- width = ws.rQshift16();
1130
- height = ws.rQshift16();
1131
- display.fillRect(FBU.x + x, FBU.y + y, width, height, color);
1132
- FBU.subrects -= 1;
1133
- }
1134
- //Util.Debug(" display_rre: rects: " + FBU.rects +
1135
- // ", FBU.subrects: " + FBU.subrects);
1136
-
1137
- if (FBU.subrects > 0) {
1138
- chunk = Math.min(rre_chunk_sz, FBU.subrects);
1139
- FBU.bytes = (fb_Bpp + 8) * chunk;
1140
- } else {
1141
- FBU.rects -= 1;
1142
- FBU.bytes = 0;
1143
- }
1144
- //Util.Debug("<< display_rre, FBU.bytes: " + FBU.bytes);
1145
- return true;
1146
- };
1147
-
1148
- encHandlers.HEXTILE = function display_hextile() {
1149
- //Util.Debug(">> display_hextile");
1150
- var subencoding, subrects, color, cur_tile,
1151
- tile_x, x, w, tile_y, y, h, xy, s, sx, sy, wh, sw, sh,
1152
- rQ = ws.get_rQ(), rQi = ws.get_rQi();
1153
-
1154
- if (FBU.tiles === 0) {
1155
- FBU.tiles_x = Math.ceil(FBU.width/16);
1156
- FBU.tiles_y = Math.ceil(FBU.height/16);
1157
- FBU.total_tiles = FBU.tiles_x * FBU.tiles_y;
1158
- FBU.tiles = FBU.total_tiles;
1159
- }
1160
-
1161
- /* FBU.bytes comes in as 1, ws.rQlen() at least 1 */
1162
- while (FBU.tiles > 0) {
1163
- FBU.bytes = 1;
1164
- if (ws.rQwait("HEXTILE subencoding", FBU.bytes)) { return false; }
1165
- subencoding = rQ[rQi]; // Peek
1166
- if (subencoding > 30) { // Raw
1167
- fail("Disconnected: illegal hextile subencoding " + subencoding);
1168
- //Util.Debug("ws.rQslice(0,30):" + ws.rQslice(0,30));
1169
- return false;
1170
- }
1171
- subrects = 0;
1172
- cur_tile = FBU.total_tiles - FBU.tiles;
1173
- tile_x = cur_tile % FBU.tiles_x;
1174
- tile_y = Math.floor(cur_tile / FBU.tiles_x);
1175
- x = FBU.x + tile_x * 16;
1176
- y = FBU.y + tile_y * 16;
1177
- w = Math.min(16, (FBU.x + FBU.width) - x);
1178
- h = Math.min(16, (FBU.y + FBU.height) - y);
1179
-
1180
- /* Figure out how much we are expecting */
1181
- if (subencoding & 0x01) { // Raw
1182
- //Util.Debug(" Raw subencoding");
1183
- FBU.bytes += w * h * fb_Bpp;
1184
- } else {
1185
- if (subencoding & 0x02) { // Background
1186
- FBU.bytes += fb_Bpp;
1187
- }
1188
- if (subencoding & 0x04) { // Foreground
1189
- FBU.bytes += fb_Bpp;
1190
- }
1191
- if (subencoding & 0x08) { // AnySubrects
1192
- FBU.bytes += 1; // Since we aren't shifting it off
1193
- if (ws.rQwait("hextile subrects header", FBU.bytes)) { return false; }
1194
- subrects = rQ[rQi + FBU.bytes-1]; // Peek
1195
- if (subencoding & 0x10) { // SubrectsColoured
1196
- FBU.bytes += subrects * (fb_Bpp + 2);
1197
- } else {
1198
- FBU.bytes += subrects * 2;
1199
- }
1200
- }
1201
- }
1202
-
1203
- /*
1204
- Util.Debug(" tile:" + cur_tile + "/" + (FBU.total_tiles - 1) +
1205
- " (" + tile_x + "," + tile_y + ")" +
1206
- " [" + x + "," + y + "]@" + w + "x" + h +
1207
- ", subenc:" + subencoding +
1208
- "(last: " + FBU.lastsubencoding + "), subrects:" +
1209
- subrects +
1210
- ", ws.rQlen():" + ws.rQlen() + ", FBU.bytes:" + FBU.bytes +
1211
- " last:" + ws.rQslice(FBU.bytes-10, FBU.bytes) +
1212
- " next:" + ws.rQslice(FBU.bytes-1, FBU.bytes+10));
1213
- */
1214
- if (ws.rQwait("hextile", FBU.bytes)) { return false; }
1215
-
1216
- /* We know the encoding and have a whole tile */
1217
- FBU.subencoding = rQ[rQi];
1218
- rQi += 1;
1219
- if (FBU.subencoding === 0) {
1220
- if (FBU.lastsubencoding & 0x01) {
1221
- /* Weird: ignore blanks after RAW */
1222
- Util.Debug(" Ignoring blank after RAW");
1223
- } else {
1224
- display.fillRect(x, y, w, h, FBU.background);
1225
- }
1226
- } else if (FBU.subencoding & 0x01) { // Raw
1227
- display.blitImage(x, y, w, h, rQ, rQi);
1228
- rQi += FBU.bytes - 1;
1229
- } else {
1230
- if (FBU.subencoding & 0x02) { // Background
1231
- FBU.background = rQ.slice(rQi, rQi + fb_Bpp);
1232
- rQi += fb_Bpp;
1233
- }
1234
- if (FBU.subencoding & 0x04) { // Foreground
1235
- FBU.foreground = rQ.slice(rQi, rQi + fb_Bpp);
1236
- rQi += fb_Bpp;
1237
- }
1238
-
1239
- display.startTile(x, y, w, h, FBU.background);
1240
- if (FBU.subencoding & 0x08) { // AnySubrects
1241
- subrects = rQ[rQi];
1242
- rQi += 1;
1243
- for (s = 0; s < subrects; s += 1) {
1244
- if (FBU.subencoding & 0x10) { // SubrectsColoured
1245
- color = rQ.slice(rQi, rQi + fb_Bpp);
1246
- rQi += fb_Bpp;
1247
- } else {
1248
- color = FBU.foreground;
1249
- }
1250
- xy = rQ[rQi];
1251
- rQi += 1;
1252
- sx = (xy >> 4);
1253
- sy = (xy & 0x0f);
1254
-
1255
- wh = rQ[rQi];
1256
- rQi += 1;
1257
- sw = (wh >> 4) + 1;
1258
- sh = (wh & 0x0f) + 1;
1259
-
1260
- display.subTile(sx, sy, sw, sh, color);
1261
- }
1262
- }
1263
- display.finishTile();
1264
- }
1265
- ws.set_rQi(rQi);
1266
- FBU.lastsubencoding = FBU.subencoding;
1267
- FBU.bytes = 0;
1268
- FBU.tiles -= 1;
1269
- }
1270
-
1271
- if (FBU.tiles === 0) {
1272
- FBU.rects -= 1;
1273
- }
1274
-
1275
- //Util.Debug("<< display_hextile");
1276
- return true;
1277
- };
1278
-
1279
-
1280
- // Get 'compact length' header and data size
1281
- getTightCLength = function (arr) {
1282
- var header = 1, data = 0;
1283
- data += arr[0] & 0x7f;
1284
- if (arr[0] & 0x80) {
1285
- header += 1;
1286
- data += (arr[1] & 0x7f) << 7;
1287
- if (arr[1] & 0x80) {
1288
- header += 1;
1289
- data += arr[2] << 14;
1290
- }
1291
- }
1292
- return [header, data];
1293
- };
1294
-
1295
- function display_tight(isTightPNG) {
1296
- //Util.Debug(">> display_tight");
1297
-
1298
- if (fb_depth === 1) {
1299
- fail("Tight protocol handler only implements true color mode");
1300
- }
1301
-
1302
- var ctl, cmode, clength, color, img, data;
1303
- var filterId = -1, resetStreams = 0, streamId = -1;
1304
- var rQ = ws.get_rQ(), rQi = ws.get_rQi();
1305
-
1306
- FBU.bytes = 1; // compression-control byte
1307
- if (ws.rQwait("TIGHT compression-control", FBU.bytes)) { return false; }
1308
-
1309
- var checksum = function(data) {
1310
- var sum=0, i;
1311
- for (i=0; i<data.length;i++) {
1312
- sum += data[i];
1313
- if (sum > 65536) sum -= 65536;
1314
- }
1315
- return sum;
1316
- }
1317
-
1318
- var decompress = function(data) {
1319
- for (var i=0; i<4; i++) {
1320
- if ((resetStreams >> i) & 1) {
1321
- FBU.zlibs[i].reset();
1322
- Util.Info("Reset zlib stream " + i);
1323
- }
1324
- }
1325
- var uncompressed = FBU.zlibs[streamId].uncompress(data, 0);
1326
- if (uncompressed.status !== 0) {
1327
- Util.Error("Invalid data in zlib stream");
1328
- }
1329
- //Util.Warn("Decompressed " + data.length + " to " +
1330
- // uncompressed.data.length + " checksums " +
1331
- // checksum(data) + ":" + checksum(uncompressed.data));
1332
-
1333
- return uncompressed.data;
1334
- }
1335
-
1336
- var handlePalette = function() {
1337
- var numColors = rQ[rQi + 2] + 1;
1338
- var paletteSize = numColors * fb_depth;
1339
- FBU.bytes += paletteSize;
1340
- if (ws.rQwait("TIGHT palette " + cmode, FBU.bytes)) { return false; }
1341
-
1342
- var bpp = (numColors <= 2) ? 1 : 8;
1343
- var rowSize = Math.floor((FBU.width * bpp + 7) / 8);
1344
- var raw = false;
1345
- if (rowSize * FBU.height < 12) {
1346
- raw = true;
1347
- clength = [0, rowSize * FBU.height];
1348
- } else {
1349
- clength = getTightCLength(ws.rQslice(3 + paletteSize,
1350
- 3 + paletteSize + 3));
1351
- }
1352
- FBU.bytes += clength[0] + clength[1];
1353
- if (ws.rQwait("TIGHT " + cmode, FBU.bytes)) { return false; }
1354
-
1355
- // Shift ctl, filter id, num colors, palette entries, and clength off
1356
- ws.rQshiftBytes(3);
1357
- var palette = ws.rQshiftBytes(paletteSize);
1358
- ws.rQshiftBytes(clength[0]);
1359
-
1360
- if (raw) {
1361
- data = ws.rQshiftBytes(clength[1]);
1362
- } else {
1363
- data = decompress(ws.rQshiftBytes(clength[1]));
1364
- }
1365
-
1366
- // Convert indexed (palette based) image data to RGB
1367
- // TODO: reduce number of calculations inside loop
1368
- var dest = [];
1369
- var x, y, b, w, w1, dp, sp;
1370
- if (numColors === 2) {
1371
- w = Math.floor((FBU.width + 7) / 8);
1372
- w1 = Math.floor(FBU.width / 8);
1373
- for (y = 0; y < FBU.height; y++) {
1374
- for (x = 0; x < w1; x++) {
1375
- for (b = 7; b >= 0; b--) {
1376
- dp = (y*FBU.width + x*8 + 7-b) * 3;
1377
- sp = (data[y*w + x] >> b & 1) * 3;
1378
- dest[dp ] = palette[sp ];
1379
- dest[dp+1] = palette[sp+1];
1380
- dest[dp+2] = palette[sp+2];
1381
- }
1382
- }
1383
- for (b = 7; b >= 8 - FBU.width % 8; b--) {
1384
- dp = (y*FBU.width + x*8 + 7-b) * 3;
1385
- sp = (data[y*w + x] >> b & 1) * 3;
1386
- dest[dp ] = palette[sp ];
1387
- dest[dp+1] = palette[sp+1];
1388
- dest[dp+2] = palette[sp+2];
1389
- }
1390
- }
1391
- } else {
1392
- for (y = 0; y < FBU.height; y++) {
1393
- for (x = 0; x < FBU.width; x++) {
1394
- dp = (y*FBU.width + x) * 3;
1395
- sp = data[y*FBU.width + x] * 3;
1396
- dest[dp ] = palette[sp ];
1397
- dest[dp+1] = palette[sp+1];
1398
- dest[dp+2] = palette[sp+2];
1399
- }
1400
- }
1401
- }
1402
-
1403
- FBU.imgQ.push({
1404
- 'type': 'rgb',
1405
- 'img': {'complete': true, 'data': dest},
1406
- 'x': FBU.x,
1407
- 'y': FBU.y,
1408
- 'width': FBU.width,
1409
- 'height': FBU.height});
1410
- return true;
1411
- }
1412
-
1413
- var handleCopy = function() {
1414
- var raw = false;
1415
- var uncompressedSize = FBU.width * FBU.height * fb_depth;
1416
- if (uncompressedSize < 12) {
1417
- raw = true;
1418
- clength = [0, uncompressedSize];
1419
- } else {
1420
- clength = getTightCLength(ws.rQslice(1, 4));
1421
- }
1422
- FBU.bytes = 1 + clength[0] + clength[1];
1423
- if (ws.rQwait("TIGHT " + cmode, FBU.bytes)) { return false; }
1424
-
1425
- // Shift ctl, clength off
1426
- ws.rQshiftBytes(1 + clength[0]);
1427
-
1428
- if (raw) {
1429
- data = ws.rQshiftBytes(clength[1]);
1430
- } else {
1431
- data = decompress(ws.rQshiftBytes(clength[1]));
1432
- }
1433
-
1434
- FBU.imgQ.push({
1435
- 'type': 'rgb',
1436
- 'img': {'complete': true, 'data': data},
1437
- 'x': FBU.x,
1438
- 'y': FBU.y,
1439
- 'width': FBU.width,
1440
- 'height': FBU.height});
1441
- return true;
1442
- }
1443
-
1444
- ctl = ws.rQpeek8();
1445
-
1446
- // Keep tight reset bits
1447
- resetStreams = ctl & 0xF;
1448
-
1449
- // Figure out filter
1450
- ctl = ctl >> 4;
1451
- streamId = ctl & 0x3;
1452
-
1453
- if (ctl === 0x08) cmode = "fill";
1454
- else if (ctl === 0x09) cmode = "jpeg";
1455
- else if (ctl === 0x0A) cmode = "png";
1456
- else if (ctl & 0x04) cmode = "filter";
1457
- else if (ctl < 0x04) cmode = "copy";
1458
- else throw("Illegal tight compression received, ctl: " + ctl);
1459
-
1460
- if (isTightPNG && (cmode === "filter" || cmode === "copy")) {
1461
- throw("filter/copy received in tightPNG mode");
1462
- }
1463
-
1464
- switch (cmode) {
1465
- // fill uses fb_depth because TPIXELs drop the padding byte
1466
- case "fill": FBU.bytes += fb_depth; break; // TPIXEL
1467
- case "jpeg": FBU.bytes += 3; break; // max clength
1468
- case "png": FBU.bytes += 3; break; // max clength
1469
- case "filter": FBU.bytes += 2; break; // filter id + num colors if palette
1470
- case "copy": break;
1471
- }
1472
-
1473
- if (ws.rQwait("TIGHT " + cmode, FBU.bytes)) { return false; }
1474
-
1475
- //Util.Debug(" ws.rQslice(0,20): " + ws.rQslice(0,20) + " (" + ws.rQlen() + ")");
1476
- //Util.Debug(" cmode: " + cmode);
1477
-
1478
- // Determine FBU.bytes
1479
- switch (cmode) {
1480
- case "fill":
1481
- ws.rQshift8(); // shift off ctl
1482
- color = ws.rQshiftBytes(fb_depth);
1483
- FBU.imgQ.push({
1484
- 'type': 'fill',
1485
- 'img': {'complete': true},
1486
- 'x': FBU.x,
1487
- 'y': FBU.y,
1488
- 'width': FBU.width,
1489
- 'height': FBU.height,
1490
- 'color': [color[2], color[1], color[0]] });
1491
- break;
1492
- case "png":
1493
- case "jpeg":
1494
- clength = getTightCLength(ws.rQslice(1, 4));
1495
- FBU.bytes = 1 + clength[0] + clength[1]; // ctl + clength size + jpeg-data
1496
- if (ws.rQwait("TIGHT " + cmode, FBU.bytes)) { return false; }
1497
-
1498
- // We have everything, render it
1499
- //Util.Debug(" jpeg, ws.rQlen(): " + ws.rQlen() + ", clength[0]: " +
1500
- // clength[0] + ", clength[1]: " + clength[1]);
1501
- ws.rQshiftBytes(1 + clength[0]); // shift off ctl + compact length
1502
- img = new Image();
1503
- //img.onload = scan_tight_imgQ;
1504
- FBU.imgQ.push({
1505
- 'type': 'img',
1506
- 'img': img,
1507
- 'x': FBU.x,
1508
- 'y': FBU.y});
1509
- img.src = "data:image/" + cmode +
1510
- extract_data_uri(ws.rQshiftBytes(clength[1]));
1511
- img = null;
1512
- break;
1513
- case "filter":
1514
- filterId = rQ[rQi + 1];
1515
- if (filterId === 1) {
1516
- if (!handlePalette()) { return false; }
1517
- } else {
1518
- // Filter 0, Copy could be valid here, but servers don't send it as an explicit filter
1519
- // Filter 2, Gradient is valid but not used if jpeg is enabled
1520
- throw("Unsupported tight subencoding received, filter: " + filterId);
1521
- }
1522
- break;
1523
- case "copy":
1524
- if (!handleCopy()) { return false; }
1525
- break;
1526
- }
1527
-
1528
- FBU.bytes = 0;
1529
- FBU.rects -= 1;
1530
- //Util.Debug(" ending ws.rQslice(0,20): " + ws.rQslice(0,20) + " (" + ws.rQlen() + ")");
1531
- //Util.Debug("<< display_tight_png");
1532
- return true;
1533
- }
1534
-
1535
- extract_data_uri = function(arr) {
1536
- //var i, stra = [];
1537
- //for (i=0; i< arr.length; i += 1) {
1538
- // stra.push(String.fromCharCode(arr[i]));
1539
- //}
1540
- //return "," + escape(stra.join(''));
1541
- return ";base64," + Base64.encode(arr);
1542
- };
1543
-
1544
- scan_tight_imgQ = function() {
1545
- var data, imgQ, ctx;
1546
- ctx = display.get_context();
1547
- if (rfb_state === 'normal') {
1548
- imgQ = FBU.imgQ;
1549
- while ((imgQ.length > 0) && (imgQ[0].img.complete)) {
1550
- data = imgQ.shift();
1551
- if (data.type === 'fill') {
1552
- display.fillRect(data.x, data.y, data.width, data.height, data.color);
1553
- } else if (data.type === 'rgb') {
1554
- display.blitRgbImage(data.x, data.y, data.width, data.height, data.img.data, 0);
1555
- } else {
1556
- ctx.drawImage(data.img, data.x, data.y);
1557
- }
1558
- }
1559
- setTimeout(scan_tight_imgQ, scan_imgQ_rate);
1560
- }
1561
- };
1562
-
1563
- encHandlers.TIGHT = function () { return display_tight(false); };
1564
- encHandlers.TIGHT_PNG = function () { return display_tight(true); };
1565
-
1566
- encHandlers.last_rect = function last_rect() {
1567
- Util.Debug(">> set_desktopsize");
1568
- FBU.rects = 0;
1569
- Util.Debug("<< set_desktopsize");
1570
- return true;
1571
- };
1572
-
1573
- encHandlers.DesktopSize = function set_desktopsize() {
1574
- Util.Debug(">> set_desktopsize");
1575
- fb_width = FBU.width;
1576
- fb_height = FBU.height;
1577
- display.resize(fb_width, fb_height);
1578
- timing.fbu_rt_start = (new Date()).getTime();
1579
- // Send a new non-incremental request
1580
- ws.send(fbUpdateRequests());
1581
-
1582
- FBU.bytes = 0;
1583
- FBU.rects -= 1;
1584
-
1585
- Util.Debug("<< set_desktopsize");
1586
- return true;
1587
- };
1588
-
1589
- encHandlers.Cursor = function set_cursor() {
1590
- var x, y, w, h, pixelslength, masklength;
1591
- //Util.Debug(">> set_cursor");
1592
- x = FBU.x; // hotspot-x
1593
- y = FBU.y; // hotspot-y
1594
- w = FBU.width;
1595
- h = FBU.height;
1596
-
1597
- pixelslength = w * h * fb_Bpp;
1598
- masklength = Math.floor((w + 7) / 8) * h;
1599
-
1600
- FBU.bytes = pixelslength + masklength;
1601
- if (ws.rQwait("cursor encoding", FBU.bytes)) { return false; }
1602
-
1603
- //Util.Debug(" set_cursor, x: " + x + ", y: " + y + ", w: " + w + ", h: " + h);
1604
-
1605
- display.changeCursor(ws.rQshiftBytes(pixelslength),
1606
- ws.rQshiftBytes(masklength),
1607
- x, y, w, h);
1608
-
1609
- FBU.bytes = 0;
1610
- FBU.rects -= 1;
1611
-
1612
- //Util.Debug("<< set_cursor");
1613
- return true;
1614
- };
1615
-
1616
- encHandlers.JPEG_quality_lo = function set_jpeg_quality() {
1617
- Util.Error("Server sent jpeg_quality pseudo-encoding");
1618
- };
1619
-
1620
- encHandlers.compress_lo = function set_compress_level() {
1621
- Util.Error("Server sent compress level pseudo-encoding");
1622
- };
1623
-
1624
- /*
1625
- * Client message routines
1626
- */
1627
-
1628
- pixelFormat = function() {
1629
- //Util.Debug(">> pixelFormat");
1630
- var arr;
1631
- arr = [0]; // msg-type
1632
- arr.push8(0); // padding
1633
- arr.push8(0); // padding
1634
- arr.push8(0); // padding
1635
-
1636
- arr.push8(fb_Bpp * 8); // bits-per-pixel
1637
- arr.push8(fb_depth * 8); // depth
1638
- arr.push8(0); // little-endian
1639
- arr.push8(conf.true_color ? 1 : 0); // true-color
1640
-
1641
- arr.push16(255); // red-max
1642
- arr.push16(255); // green-max
1643
- arr.push16(255); // blue-max
1644
- arr.push8(16); // red-shift
1645
- arr.push8(8); // green-shift
1646
- arr.push8(0); // blue-shift
1647
-
1648
- arr.push8(0); // padding
1649
- arr.push8(0); // padding
1650
- arr.push8(0); // padding
1651
- //Util.Debug("<< pixelFormat");
1652
- return arr;
1653
- };
1654
-
1655
- clientEncodings = function() {
1656
- //Util.Debug(">> clientEncodings");
1657
- var arr, i, encList = [];
1658
-
1659
- for (i=0; i<encodings.length; i += 1) {
1660
- if ((encodings[i][0] === "Cursor") &&
1661
- (! conf.local_cursor)) {
1662
- Util.Debug("Skipping Cursor pseudo-encoding");
1663
- } else {
1664
- //Util.Debug("Adding encoding: " + encodings[i][0]);
1665
- encList.push(encodings[i][1]);
1666
- }
1667
- }
1668
-
1669
- arr = [2]; // msg-type
1670
- arr.push8(0); // padding
1671
-
1672
- arr.push16(encList.length); // encoding count
1673
- for (i=0; i < encList.length; i += 1) {
1674
- arr.push32(encList[i]);
1675
- }
1676
- //Util.Debug("<< clientEncodings: " + arr);
1677
- return arr;
1678
- };
1679
-
1680
- fbUpdateRequest = function(incremental, x, y, xw, yw) {
1681
- //Util.Debug(">> fbUpdateRequest");
1682
- if (typeof(x) === "undefined") { x = 0; }
1683
- if (typeof(y) === "undefined") { y = 0; }
1684
- if (typeof(xw) === "undefined") { xw = fb_width; }
1685
- if (typeof(yw) === "undefined") { yw = fb_height; }
1686
- var arr;
1687
- arr = [3]; // msg-type
1688
- arr.push8(incremental);
1689
- arr.push16(x);
1690
- arr.push16(y);
1691
- arr.push16(xw);
1692
- arr.push16(yw);
1693
- //Util.Debug("<< fbUpdateRequest");
1694
- return arr;
1695
- };
1696
-
1697
- // Based on clean/dirty areas, generate requests to send
1698
- fbUpdateRequests = function() {
1699
- var cleanDirty = display.getCleanDirtyReset(),
1700
- arr = [], i, cb, db;
1701
-
1702
- cb = cleanDirty.cleanBox;
1703
- if (cb.w > 0 && cb.h > 0) {
1704
- // Request incremental for clean box
1705
- arr = arr.concat(fbUpdateRequest(1, cb.x, cb.y, cb.w, cb.h));
1706
- }
1707
- for (i = 0; i < cleanDirty.dirtyBoxes.length; i++) {
1708
- db = cleanDirty.dirtyBoxes[i];
1709
- // Force all (non-incremental for dirty box
1710
- arr = arr.concat(fbUpdateRequest(0, db.x, db.y, db.w, db.h));
1711
- }
1712
- return arr;
1713
- };
1714
-
1715
-
1716
-
1717
- keyEvent = function(keysym, down) {
1718
- //Util.Debug(">> keyEvent, keysym: " + keysym + ", down: " + down);
1719
- var arr;
1720
- arr = [4]; // msg-type
1721
- arr.push8(down);
1722
- arr.push16(0);
1723
- arr.push32(keysym);
1724
- //Util.Debug("<< keyEvent");
1725
- return arr;
1726
- };
1727
-
1728
- pointerEvent = function(x, y) {
1729
- //Util.Debug(">> pointerEvent, x,y: " + x + "," + y +
1730
- // " , mask: " + mouse_buttonMask);
1731
- var arr;
1732
- arr = [5]; // msg-type
1733
- arr.push8(mouse_buttonMask);
1734
- arr.push16(x);
1735
- arr.push16(y);
1736
- //Util.Debug("<< pointerEvent");
1737
- return arr;
1738
- };
1739
-
1740
- clientCutText = function(text) {
1741
- //Util.Debug(">> clientCutText");
1742
- var arr, i, n;
1743
- arr = [6]; // msg-type
1744
- arr.push8(0); // padding
1745
- arr.push8(0); // padding
1746
- arr.push8(0); // padding
1747
- arr.push32(text.length);
1748
- n = text.length;
1749
- for (i=0; i < n; i+=1) {
1750
- arr.push(text.charCodeAt(i));
1751
- }
1752
- //Util.Debug("<< clientCutText:" + arr);
1753
- return arr;
1754
- };
1755
-
1756
-
1757
-
1758
- //
1759
- // Public API interface functions
1760
- //
1761
-
1762
- that.connect = function(host, port, password, path) {
1763
- //Util.Debug(">> connect");
1764
-
1765
- rfb_host = host;
1766
- rfb_port = port;
1767
- rfb_password = (password !== undefined) ? password : "";
1768
- rfb_path = (path !== undefined) ? path : "";
1769
-
1770
- if ((!rfb_host) || (!rfb_port)) {
1771
- return fail("Must set host and port");
1772
- }
1773
-
1774
- updateState('connect');
1775
- //Util.Debug("<< connect");
1776
-
1777
- };
1778
-
1779
- that.disconnect = function() {
1780
- //Util.Debug(">> disconnect");
1781
- updateState('disconnect', 'Disconnecting');
1782
- //Util.Debug("<< disconnect");
1783
- };
1784
-
1785
- that.sendPassword = function(passwd) {
1786
- rfb_password = passwd;
1787
- rfb_state = "Authentication";
1788
- setTimeout(init_msg, 1);
1789
- };
1790
-
1791
- that.sendCtrlAltDel = function() {
1792
- if (rfb_state !== "normal" || conf.view_only) { return false; }
1793
- Util.Info("Sending Ctrl-Alt-Del");
1794
- var arr = [];
1795
- arr = arr.concat(keyEvent(0xFFE3, 1)); // Control
1796
- arr = arr.concat(keyEvent(0xFFE9, 1)); // Alt
1797
- arr = arr.concat(keyEvent(0xFFFF, 1)); // Delete
1798
- arr = arr.concat(keyEvent(0xFFFF, 0)); // Delete
1799
- arr = arr.concat(keyEvent(0xFFE9, 0)); // Alt
1800
- arr = arr.concat(keyEvent(0xFFE3, 0)); // Control
1801
- arr = arr.concat(fbUpdateRequests());
1802
- ws.send(arr);
1803
- };
1804
-
1805
- // Send a key press. If 'down' is not specified then send a down key
1806
- // followed by an up key.
1807
- that.sendKey = function(code, down) {
1808
- if (rfb_state !== "normal" || conf.view_only) { return false; }
1809
- var arr = [];
1810
- if (typeof down !== 'undefined') {
1811
- Util.Info("Sending key code (" + (down ? "down" : "up") + "): " + code);
1812
- arr = arr.concat(keyEvent(code, down ? 1 : 0));
1813
- } else {
1814
- Util.Info("Sending key code (down + up): " + code);
1815
- arr = arr.concat(keyEvent(code, 1));
1816
- arr = arr.concat(keyEvent(code, 0));
1817
- }
1818
- arr = arr.concat(fbUpdateRequests());
1819
- ws.send(arr);
1820
- };
1821
-
1822
- that.clipboardPasteFrom = function(text) {
1823
- if (rfb_state !== "normal") { return; }
1824
- //Util.Debug(">> clipboardPasteFrom: " + text.substr(0,40) + "...");
1825
- ws.send(clientCutText(text));
1826
- //Util.Debug("<< clipboardPasteFrom");
1827
- };
1828
-
1829
- // Override internal functions for testing
1830
- that.testMode = function(override_send) {
1831
- test_mode = true;
1832
- that.recv_message = ws.testMode(override_send);
1833
-
1834
- checkEvents = function () { /* Stub Out */ };
1835
- that.connect = function(host, port, password) {
1836
- rfb_host = host;
1837
- rfb_port = port;
1838
- rfb_password = password;
1839
- updateState('ProtocolVersion', "Starting VNC handshake");
1840
- };
1841
- };
1842
-
1843
-
1844
- return constructor(); // Return the public API interface
1845
-
1846
- } // End of RFB()