facter 2.5.7-x86-mingw32 → 3.9.6.cfacter.20180606-x86-mingw32

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (506) hide show
  1. checksums.yaml +5 -5
  2. data/bin/facter.bat +8 -0
  3. data/bin/facter.exe +0 -0
  4. data/bin/facter_interactive.bat +6 -0
  5. data/bin/libfacter.so +0 -0
  6. data/bin/run_facter_interactive.bat +9 -0
  7. data/lib/facter.rb +45 -261
  8. data/lib/libfacter.so.a +0 -0
  9. metadata +23 -854
  10. data/COMMITTERS.md +0 -185
  11. data/CONTRIBUTING.md +0 -91
  12. data/Gemfile +0 -69
  13. data/LICENSE +0 -15
  14. data/README.md +0 -65
  15. data/Rakefile +0 -46
  16. data/bin/facter +0 -20
  17. data/etc/facter.conf +0 -5
  18. data/ext/build_defaults.yaml +0 -9
  19. data/ext/debian/changelog.erb +0 -59
  20. data/ext/debian/compat +0 -1
  21. data/ext/debian/control +0 -15
  22. data/ext/debian/copyright +0 -19
  23. data/ext/debian/docs +0 -1
  24. data/ext/debian/lintian-overrides +0 -0
  25. data/ext/debian/rules +0 -10
  26. data/ext/debian/source/format +0 -1
  27. data/ext/facter-diff +0 -74
  28. data/ext/ips/facter.p5m.erb +0 -10
  29. data/ext/ips/rules +0 -7
  30. data/ext/ips/transforms +0 -18
  31. data/ext/osx/file_mapping.yaml +0 -32
  32. data/ext/osx/preflight.erb +0 -33
  33. data/ext/osx/prototype.plist.erb +0 -38
  34. data/ext/project_data.yaml +0 -31
  35. data/ext/redhat/facter.spec.erb +0 -223
  36. data/ext/solaris/pkginfo +0 -7
  37. data/install.rb +0 -380
  38. data/lib/facter/Cfkey.rb +0 -42
  39. data/lib/facter/application.rb +0 -206
  40. data/lib/facter/architecture.rb +0 -50
  41. data/lib/facter/augeasversion.rb +0 -28
  42. data/lib/facter/blockdevices.rb +0 -105
  43. data/lib/facter/core/aggregate.rb +0 -220
  44. data/lib/facter/core/directed_graph.rb +0 -46
  45. data/lib/facter/core/execution.rb +0 -123
  46. data/lib/facter/core/execution/base.rb +0 -81
  47. data/lib/facter/core/execution/posix.rb +0 -50
  48. data/lib/facter/core/execution/windows.rb +0 -57
  49. data/lib/facter/core/logging.rb +0 -197
  50. data/lib/facter/core/resolvable.rb +0 -94
  51. data/lib/facter/core/suitable.rb +0 -113
  52. data/lib/facter/dhcp_servers.rb +0 -45
  53. data/lib/facter/domain.rb +0 -99
  54. data/lib/facter/ec2.rb +0 -68
  55. data/lib/facter/ec2/rest.rb +0 -137
  56. data/lib/facter/facterversion.rb +0 -15
  57. data/lib/facter/filesystems.rb +0 -45
  58. data/lib/facter/fqdn.rb +0 -24
  59. data/lib/facter/gce.rb +0 -16
  60. data/lib/facter/gce/metadata.rb +0 -87
  61. data/lib/facter/gid.rb +0 -25
  62. data/lib/facter/hardwareisa.rb +0 -20
  63. data/lib/facter/hardwaremodel.rb +0 -67
  64. data/lib/facter/hostname.rb +0 -31
  65. data/lib/facter/id.rb +0 -21
  66. data/lib/facter/interfaces.rb +0 -58
  67. data/lib/facter/ipaddress.rb +0 -169
  68. data/lib/facter/ipaddress6.rb +0 -82
  69. data/lib/facter/iphostnumber.rb +0 -29
  70. data/lib/facter/kernel.rb +0 -22
  71. data/lib/facter/kernelmajversion.rb +0 -23
  72. data/lib/facter/kernelrelease.rb +0 -45
  73. data/lib/facter/kernelversion.rb +0 -22
  74. data/lib/facter/ldom.rb +0 -51
  75. data/lib/facter/lsbdistcodename.rb +0 -20
  76. data/lib/facter/lsbdistdescription.rb +0 -21
  77. data/lib/facter/lsbdistid.rb +0 -20
  78. data/lib/facter/lsbdistrelease.rb +0 -20
  79. data/lib/facter/lsbmajdistrelease.rb +0 -22
  80. data/lib/facter/lsbminordistrelease.rb +0 -22
  81. data/lib/facter/lsbrelease.rb +0 -20
  82. data/lib/facter/macaddress.rb +0 -99
  83. data/lib/facter/macosx.rb +0 -56
  84. data/lib/facter/manufacturer.rb +0 -68
  85. data/lib/facter/memory.rb +0 -168
  86. data/lib/facter/netmask.rb +0 -43
  87. data/lib/facter/network.rb +0 -20
  88. data/lib/facter/operatingsystem.rb +0 -24
  89. data/lib/facter/operatingsystem/base.rb +0 -61
  90. data/lib/facter/operatingsystem/cumuluslinux.rb +0 -27
  91. data/lib/facter/operatingsystem/implementation.rb +0 -33
  92. data/lib/facter/operatingsystem/linux.rb +0 -511
  93. data/lib/facter/operatingsystem/osreleaselinux.rb +0 -28
  94. data/lib/facter/operatingsystem/sunos.rb +0 -54
  95. data/lib/facter/operatingsystem/vmkernel.rb +0 -11
  96. data/lib/facter/operatingsystem/windows.rb +0 -43
  97. data/lib/facter/operatingsystemmajrelease.rb +0 -31
  98. data/lib/facter/operatingsystemrelease.rb +0 -29
  99. data/lib/facter/os.rb +0 -98
  100. data/lib/facter/osfamily.rb +0 -18
  101. data/lib/facter/partitions.rb +0 -39
  102. data/lib/facter/path.rb +0 -14
  103. data/lib/facter/physicalprocessorcount.rb +0 -27
  104. data/lib/facter/processor.rb +0 -52
  105. data/lib/facter/processors.rb +0 -66
  106. data/lib/facter/processors/os.rb +0 -244
  107. data/lib/facter/ps.rb +0 -31
  108. data/lib/facter/puppetversion.rb +0 -20
  109. data/lib/facter/rackspace.rb +0 -37
  110. data/lib/facter/rubyplatform.rb +0 -12
  111. data/lib/facter/rubysitedir.rb +0 -15
  112. data/lib/facter/rubyversion.rb +0 -12
  113. data/lib/facter/selinux.rb +0 -154
  114. data/lib/facter/ssh.rb +0 -73
  115. data/lib/facter/system32.rb +0 -21
  116. data/lib/facter/system_uptime.rb +0 -44
  117. data/lib/facter/timezone.rb +0 -14
  118. data/lib/facter/uniqueid.rb +0 -4
  119. data/lib/facter/uptime.rb +0 -16
  120. data/lib/facter/uptime_days.rb +0 -13
  121. data/lib/facter/uptime_hours.rb +0 -13
  122. data/lib/facter/uptime_seconds.rb +0 -20
  123. data/lib/facter/util/architecture.rb +0 -19
  124. data/lib/facter/util/collection.rb +0 -161
  125. data/lib/facter/util/composite_loader.rb +0 -12
  126. data/lib/facter/util/config.rb +0 -88
  127. data/lib/facter/util/confine.rb +0 -66
  128. data/lib/facter/util/dhcp_servers.rb +0 -58
  129. data/lib/facter/util/directory_loader.rb +0 -88
  130. data/lib/facter/util/ec2.rb +0 -106
  131. data/lib/facter/util/fact.rb +0 -204
  132. data/lib/facter/util/file_read.rb +0 -37
  133. data/lib/facter/util/formatter.rb +0 -39
  134. data/lib/facter/util/ip.rb +0 -340
  135. data/lib/facter/util/ip/windows.rb +0 -215
  136. data/lib/facter/util/loader.rb +0 -155
  137. data/lib/facter/util/macaddress.rb +0 -43
  138. data/lib/facter/util/macosx.rb +0 -73
  139. data/lib/facter/util/manufacturer.rb +0 -99
  140. data/lib/facter/util/memory.rb +0 -228
  141. data/lib/facter/util/netmask.rb +0 -40
  142. data/lib/facter/util/normalization.rb +0 -94
  143. data/lib/facter/util/nothing_loader.rb +0 -12
  144. data/lib/facter/util/operatingsystem.rb +0 -21
  145. data/lib/facter/util/parser.rb +0 -168
  146. data/lib/facter/util/partitions.rb +0 -47
  147. data/lib/facter/util/partitions/linux.rb +0 -71
  148. data/lib/facter/util/partitions/openbsd.rb +0 -40
  149. data/lib/facter/util/plist.rb +0 -24
  150. data/lib/facter/util/plist/generator.rb +0 -228
  151. data/lib/facter/util/plist/parser.rb +0 -226
  152. data/lib/facter/util/posix.rb +0 -16
  153. data/lib/facter/util/processor.rb +0 -289
  154. data/lib/facter/util/registry.rb +0 -11
  155. data/lib/facter/util/resolution.rb +0 -160
  156. data/lib/facter/util/solaris_zones.rb +0 -158
  157. data/lib/facter/util/unix_root.rb +0 -5
  158. data/lib/facter/util/uptime.rb +0 -83
  159. data/lib/facter/util/values.rb +0 -109
  160. data/lib/facter/util/virtual.rb +0 -220
  161. data/lib/facter/util/vlans.rb +0 -21
  162. data/lib/facter/util/windows.rb +0 -10
  163. data/lib/facter/util/windows/api_types.rb +0 -135
  164. data/lib/facter/util/windows/dir.rb +0 -43
  165. data/lib/facter/util/windows/error.rb +0 -87
  166. data/lib/facter/util/windows/process.rb +0 -294
  167. data/lib/facter/util/windows/user.rb +0 -186
  168. data/lib/facter/util/windows_root.rb +0 -7
  169. data/lib/facter/util/wmi.rb +0 -49
  170. data/lib/facter/util/xendomains.rb +0 -28
  171. data/lib/facter/version.rb +0 -86
  172. data/lib/facter/virtual.rb +0 -339
  173. data/lib/facter/vlans.rb +0 -17
  174. data/lib/facter/xendomains.rb +0 -20
  175. data/lib/facter/zfs_version.rb +0 -14
  176. data/lib/facter/zonename.rb +0 -6
  177. data/lib/facter/zones.rb +0 -18
  178. data/lib/facter/zpool_version.rb +0 -10
  179. data/spec/fixtures/cpuinfo/amd64dual +0 -57
  180. data/spec/fixtures/cpuinfo/amd64dual-grep +0 -2
  181. data/spec/fixtures/cpuinfo/amd64quad +0 -79
  182. data/spec/fixtures/cpuinfo/amd64solo +0 -23
  183. data/spec/fixtures/cpuinfo/amd64tri +0 -86
  184. data/spec/fixtures/cpuinfo/amd64twentyfour +0 -600
  185. data/spec/fixtures/cpuinfo/amd64twentyfour-grep +0 -24
  186. data/spec/fixtures/cpuinfo/bbg3-armel +0 -12
  187. data/spec/fixtures/cpuinfo/beaglexm-armel +0 -12
  188. data/spec/fixtures/cpuinfo/panda-armel +0 -17
  189. data/spec/fixtures/cpuinfo/ppc64 +0 -19
  190. data/spec/fixtures/cpuinfo/ppc64le +0 -15
  191. data/spec/fixtures/cpuinfo/sparc +0 -10
  192. data/spec/fixtures/cpuinfo/two_multicore-grep +0 -4
  193. data/spec/fixtures/cpuinfo/two_singlecore-grep +0 -2
  194. data/spec/fixtures/hpux/machinfo/hppa-rp4440 +0 -26
  195. data/spec/fixtures/hpux/machinfo/ia64-rx2620 +0 -49
  196. data/spec/fixtures/hpux/machinfo/ia64-rx6600 +0 -26
  197. data/spec/fixtures/hpux/machinfo/ia64-rx8640 +0 -53
  198. data/spec/fixtures/hpux/machinfo/superdome-server-SD32B +0 -53
  199. data/spec/fixtures/hpux/machinfo/superdome2-16s +0 -31
  200. data/spec/fixtures/hpux/sched.models +0 -174
  201. data/spec/fixtures/hpux/unistd.h +0 -1534
  202. data/spec/fixtures/ifconfig/bsd_ifconfig_all_with_multiple_interfaces +0 -18
  203. data/spec/fixtures/ifconfig/centos_5_5 +0 -17
  204. data/spec/fixtures/ifconfig/centos_5_5_eth0 +0 -8
  205. data/spec/fixtures/ifconfig/darwin_10_3_0 +0 -26
  206. data/spec/fixtures/ifconfig/darwin_10_3_0_en0 +0 -6
  207. data/spec/fixtures/ifconfig/darwin_10_6_4 +0 -28
  208. data/spec/fixtures/ifconfig/darwin_10_6_4_en1 +0 -6
  209. data/spec/fixtures/ifconfig/darwin_10_6_6_dualstack +0 -8
  210. data/spec/fixtures/ifconfig/darwin_10_6_6_dualstack_en1 +0 -7
  211. data/spec/fixtures/ifconfig/darwin_9_8_0 +0 -26
  212. data/spec/fixtures/ifconfig/darwin_9_8_0_en0 +0 -6
  213. data/spec/fixtures/ifconfig/darwin_ifconfig_all_with_multiple_interfaces +0 -23
  214. data/spec/fixtures/ifconfig/fedora_10 +0 -36
  215. data/spec/fixtures/ifconfig/fedora_10_eth0 +0 -9
  216. data/spec/fixtures/ifconfig/fedora_13 +0 -18
  217. data/spec/fixtures/ifconfig/fedora_13_eth0 +0 -9
  218. data/spec/fixtures/ifconfig/fedora_8 +0 -38
  219. data/spec/fixtures/ifconfig/fedora_8_eth0 +0 -9
  220. data/spec/fixtures/ifconfig/freebsd_6_0 +0 -12
  221. data/spec/fixtures/ifconfig/ifconfig_net_tools_1.60.txt +0 -19
  222. data/spec/fixtures/ifconfig/ifconfig_ubuntu_1204.txt +0 -16
  223. data/spec/fixtures/ifconfig/linux_ifconfig_all_with_multiple_interfaces +0 -19
  224. data/spec/fixtures/ifconfig/linux_ifconfig_all_with_multiple_interfaces_and_fe80 +0 -19
  225. data/spec/fixtures/ifconfig/linux_ifconfig_all_with_multiple_interfaces_and_no_public_ipv6 +0 -18
  226. data/spec/fixtures/ifconfig/linux_ifconfig_no_addr +0 -19
  227. data/spec/fixtures/ifconfig/linux_ifconfig_no_mac +0 -8
  228. data/spec/fixtures/ifconfig/linux_ifconfig_venet +0 -24
  229. data/spec/fixtures/ifconfig/open_solaris_10 +0 -12
  230. data/spec/fixtures/ifconfig/open_solaris_b132 +0 -20
  231. data/spec/fixtures/ifconfig/openbsd_bridge_rules +0 -11
  232. data/spec/fixtures/ifconfig/sunos_ifconfig_all_with_multiple_interfaces +0 -10
  233. data/spec/fixtures/ifconfig/ubuntu_7_04 +0 -38
  234. data/spec/fixtures/ifconfig/ubuntu_7_04_eth0 +0 -9
  235. data/spec/fixtures/ldom/ldom_v1 +0 -6
  236. data/spec/fixtures/netstat/centos_5_5 +0 -5
  237. data/spec/fixtures/netstat/darwin_10_3_0 +0 -35
  238. data/spec/fixtures/netstat/darwin_10_6_4 +0 -29
  239. data/spec/fixtures/netstat/darwin_10_6_6_dualstack +0 -34
  240. data/spec/fixtures/netstat/darwin_9_8_0 +0 -28
  241. data/spec/fixtures/netstat/fedora_10 +0 -7
  242. data/spec/fixtures/netstat/open_solaris_10 +0 -16
  243. data/spec/fixtures/netstat/open_solaris_b132 +0 -17
  244. data/spec/fixtures/netstat/ubuntu_7_04 +0 -7
  245. data/spec/fixtures/processorcount/solaris-psrinfo +0 -24
  246. data/spec/fixtures/processorcount/solaris-sparc-kstat-cpu-info +0 -1216
  247. data/spec/fixtures/processorcount/solaris-x86_64-kstat-cpu-info +0 -225
  248. data/spec/fixtures/unit/dhcp_servers/nmcli_devices +0 -4
  249. data/spec/fixtures/unit/dhcp_servers/nmcli_devices_disconnected +0 -4
  250. data/spec/fixtures/unit/dhcp_servers/nmcli_eth0_dhcp +0 -36
  251. data/spec/fixtures/unit/dhcp_servers/nmcli_eth0_static +0 -24
  252. data/spec/fixtures/unit/dhcp_servers/nmcli_wlan0_dhcp +0 -49
  253. data/spec/fixtures/unit/dhcp_servers/nmcli_wlan0_static +0 -37
  254. data/spec/fixtures/unit/dhcp_servers/route +0 -3
  255. data/spec/fixtures/unit/dhcp_servers/route_nogw +0 -1
  256. data/spec/fixtures/unit/ec2/rest/meta-data/root +0 -20
  257. data/spec/fixtures/unit/filesystems/linux +0 -28
  258. data/spec/fixtures/unit/gce/metadata/metadata.json +0 -69
  259. data/spec/fixtures/unit/interfaces/ifconfig_net_tools_1.60.txt +0 -19
  260. data/spec/fixtures/unit/interfaces/ifconfig_net_tools_1.60.txt.em1 +0 -10
  261. data/spec/fixtures/unit/interfaces/ifconfig_net_tools_1.60.txt.lo +0 -8
  262. data/spec/fixtures/unit/interfaces/ifconfig_net_tools_1.60_v6.txt +0 -9
  263. data/spec/fixtures/unit/ipaddress/ifconfig_multiple_127_addresses.txt +0 -20
  264. data/spec/fixtures/unit/ipaddress/ifconfig_net_tools_1.60.txt +0 -19
  265. data/spec/fixtures/unit/ipaddress/ifconfig_non_english_locale.txt +0 -18
  266. data/spec/fixtures/unit/ipaddress/ifconfig_ubuntu_1204.txt +0 -16
  267. data/spec/fixtures/unit/kernelrelease/openbsd-5.3 +0 -2
  268. data/spec/fixtures/unit/kernelrelease/openbsd-5.3-current +0 -3
  269. data/spec/fixtures/unit/memory/aix-svmon +0 -9
  270. data/spec/fixtures/unit/memory/aix-swap_l +0 -2
  271. data/spec/fixtures/unit/memory/darwin-swapinfo-multiple +0 -3
  272. data/spec/fixtures/unit/memory/darwin-swapinfo-single +0 -2
  273. data/spec/fixtures/unit/memory/darwin-vm_stat +0 -13
  274. data/spec/fixtures/unit/memory/dragonfly-vmstat +0 -3
  275. data/spec/fixtures/unit/memory/freebsd-vmstat +0 -3
  276. data/spec/fixtures/unit/memory/linux-proc_meminfo +0 -10
  277. data/spec/fixtures/unit/memory/openbsd-vmstat +0 -3
  278. data/spec/fixtures/unit/memory/smartos_zone_swap_l-single +0 -2
  279. data/spec/fixtures/unit/memory/solaris-prtconf +0 -4
  280. data/spec/fixtures/unit/memory/solaris-swap_l-multiple +0 -3
  281. data/spec/fixtures/unit/memory/solaris-swap_l-single +0 -2
  282. data/spec/fixtures/unit/memory/solaris-vmstat +0 -3
  283. data/spec/fixtures/unit/netmask/darwin_10_8_5.txt +0 -30
  284. data/spec/fixtures/unit/netmask/ifconfig_aix_7.txt +0 -3
  285. data/spec/fixtures/unit/netmask/ifconfig_net_tools_1.60.txt +0 -19
  286. data/spec/fixtures/unit/netmask/ifconfig_ubuntu_1204.txt +0 -16
  287. data/spec/fixtures/unit/processors/os/darwin-system-profiler +0 -287
  288. data/spec/fixtures/unit/selinux/selinux_sestatus +0 -6
  289. data/spec/fixtures/unit/selinux/selinux_sestatus2 +0 -9
  290. data/spec/fixtures/unit/util/dhcp_servers/route +0 -3
  291. data/spec/fixtures/unit/util/dhcp_servers/route_nogw +0 -1
  292. data/spec/fixtures/unit/util/ec2/centos-arp-ec2.out +0 -1
  293. data/spec/fixtures/unit/util/ec2/linux-arp-ec2.out +0 -1
  294. data/spec/fixtures/unit/util/ec2/linux-arp-not-ec2.out +0 -5
  295. data/spec/fixtures/unit/util/ec2/solaris8_arp_a_not_ec2.out +0 -7
  296. data/spec/fixtures/unit/util/ec2/windows-2008-arp-a-not-ec2.out +0 -6
  297. data/spec/fixtures/unit/util/ec2/windows-2008-arp-a.out +0 -10
  298. data/spec/fixtures/unit/util/ip/6.0-STABLE_FreeBSD_ifconfig +0 -12
  299. data/spec/fixtures/unit/util/ip/Mac_OS_X_10.5.5_ifconfig +0 -26
  300. data/spec/fixtures/unit/util/ip/darwin_ifconfig_all_with_multiple_interfaces +0 -10
  301. data/spec/fixtures/unit/util/ip/darwin_ifconfig_single_interface +0 -6
  302. data/spec/fixtures/unit/util/ip/debian_kfreebsd_ifconfig +0 -40
  303. data/spec/fixtures/unit/util/ip/hpux_1111_ifconfig_lan0 +0 -2
  304. data/spec/fixtures/unit/util/ip/hpux_1111_ifconfig_lan1 +0 -2
  305. data/spec/fixtures/unit/util/ip/hpux_1111_ifconfig_lo0 +0 -2
  306. data/spec/fixtures/unit/util/ip/hpux_1111_lanscan +0 -5
  307. data/spec/fixtures/unit/util/ip/hpux_1111_netstat_in +0 -4
  308. data/spec/fixtures/unit/util/ip/hpux_1131_asterisk_ifconfig_lan0 +0 -2
  309. data/spec/fixtures/unit/util/ip/hpux_1131_asterisk_ifconfig_lan1 +0 -2
  310. data/spec/fixtures/unit/util/ip/hpux_1131_asterisk_ifconfig_lo0 +0 -2
  311. data/spec/fixtures/unit/util/ip/hpux_1131_asterisk_lanscan +0 -5
  312. data/spec/fixtures/unit/util/ip/hpux_1131_asterisk_netstat_in +0 -4
  313. data/spec/fixtures/unit/util/ip/hpux_1131_ifconfig_lan0 +0 -2
  314. data/spec/fixtures/unit/util/ip/hpux_1131_ifconfig_lan1 +0 -2
  315. data/spec/fixtures/unit/util/ip/hpux_1131_ifconfig_lo0 +0 -2
  316. data/spec/fixtures/unit/util/ip/hpux_1131_lanscan +0 -4
  317. data/spec/fixtures/unit/util/ip/hpux_1131_netstat_in +0 -4
  318. data/spec/fixtures/unit/util/ip/hpux_1131_nic_bonding_ifconfig_lan1 +0 -2
  319. data/spec/fixtures/unit/util/ip/hpux_1131_nic_bonding_ifconfig_lan4 +0 -2
  320. data/spec/fixtures/unit/util/ip/hpux_1131_nic_bonding_ifconfig_lan4_1 +0 -2
  321. data/spec/fixtures/unit/util/ip/hpux_1131_nic_bonding_ifconfig_lo0 +0 -2
  322. data/spec/fixtures/unit/util/ip/hpux_1131_nic_bonding_lanscan +0 -9
  323. data/spec/fixtures/unit/util/ip/hpux_1131_nic_bonding_netstat_in +0 -6
  324. data/spec/fixtures/unit/util/ip/linux_2_6_35_proc_net_bonding_bond0 +0 -19
  325. data/spec/fixtures/unit/util/ip/linux_get_single_interface_eth0 +0 -10
  326. data/spec/fixtures/unit/util/ip/linux_get_single_interface_ib0 +0 -8
  327. data/spec/fixtures/unit/util/ip/linux_get_single_interface_ib0_centos7 +0 -8
  328. data/spec/fixtures/unit/util/ip/linux_get_single_interface_lo +0 -9
  329. data/spec/fixtures/unit/util/ip/linux_ifconfig_all_with_single_interface +0 -18
  330. data/spec/fixtures/unit/util/ip/linux_ifconfig_ib0 +0 -8
  331. data/spec/fixtures/unit/util/ip/linux_ifconfig_ib0_centos7 +0 -8
  332. data/spec/fixtures/unit/util/ip/solaris_ifconfig_all_with_multiple_interfaces +0 -8
  333. data/spec/fixtures/unit/util/ip/solaris_ifconfig_single_interface +0 -3
  334. data/spec/fixtures/unit/util/ip/windows_netsh_all_interfaces +0 -12
  335. data/spec/fixtures/unit/util/ip/windows_netsh_single_interface +0 -7
  336. data/spec/fixtures/unit/util/ip/windows_netsh_single_interface6 +0 -18
  337. data/spec/fixtures/unit/util/manufacturer/freebsd_dmidecode +0 -42
  338. data/spec/fixtures/unit/util/manufacturer/intel_linux_dmidecode +0 -549
  339. data/spec/fixtures/unit/util/manufacturer/linux_dmidecode_with_spaces +0 -60
  340. data/spec/fixtures/unit/util/manufacturer/opensolaris_smbios +0 -33
  341. data/spec/fixtures/unit/util/manufacturer/smartos_smbios +0 -533
  342. data/spec/fixtures/unit/util/manufacturer/solaris_sunfire_v120_prtdiag +0 -33
  343. data/spec/fixtures/unit/util/manufacturer/solaris_t5220_prtdiag +0 -136
  344. data/spec/fixtures/unit/util/operatingsystem/coreos.txt +0 -9
  345. data/spec/fixtures/unit/util/operatingsystem/cumuluslinux.txt +0 -8
  346. data/spec/fixtures/unit/util/operatingsystem/redhat-7.txt +0 -12
  347. data/spec/fixtures/unit/util/operatingsystem/sabayon.txt +0 -7
  348. data/spec/fixtures/unit/util/operatingsystem/wheezy.txt +0 -9
  349. data/spec/fixtures/unit/util/partitions/partitions/mount +0 -9
  350. data/spec/fixtures/unit/util/processor/solaris-i86pc +0 -28
  351. data/spec/fixtures/unit/util/processor/solaris-sun4u +0 -151
  352. data/spec/fixtures/unit/util/processor/x86-pentium2 +0 -41
  353. data/spec/fixtures/unit/util/uptime/kstat_boot_time +0 -1
  354. data/spec/fixtures/unit/util/uptime/sysctl_kern_boottime_darwin +0 -1
  355. data/spec/fixtures/unit/util/uptime/sysctl_kern_boottime_openbsd +0 -1
  356. data/spec/fixtures/unit/util/uptime/ubuntu_proc_uptime +0 -1
  357. data/spec/fixtures/unit/util/virtual/invalid_unicode_dmi_entries +0 -0
  358. data/spec/fixtures/unit/util/virtual/solaris10_proc_self_status1 +0 -0
  359. data/spec/fixtures/unit/util/vlans/centos-5-no-vlans +0 -2
  360. data/spec/fixtures/unit/util/vlans/linux_vlan_config +0 -6
  361. data/spec/fixtures/unit/util/xendomains/xendomains +0 -4
  362. data/spec/fixtures/unit/virtual/sysfs_dmi_entries_raw.txt +0 -0
  363. data/spec/fixtures/unit/zfs_version/freebsd_8.2 +0 -14
  364. data/spec/fixtures/unit/zfs_version/freebsd_9.0 +0 -13
  365. data/spec/fixtures/unit/zfs_version/linux-fuse_0.6.9 +0 -14
  366. data/spec/fixtures/unit/zfs_version/solaris_10 +0 -10
  367. data/spec/fixtures/unit/zfs_version/solaris_11 +0 -12
  368. data/spec/fixtures/unit/zfs_version/zfs_new +0 -61
  369. data/spec/fixtures/unit/zfs_version/zfs_old +0 -43
  370. data/spec/fixtures/unit/zfs_version/zfsonlinux_0.6.1 +0 -13
  371. data/spec/fixtures/unit/zpool_version/freebsd_8.2 +0 -26
  372. data/spec/fixtures/unit/zpool_version/freebsd_9.0 +0 -38
  373. data/spec/fixtures/unit/zpool_version/linux-fuse_0.6.9 +0 -35
  374. data/spec/fixtures/unit/zpool_version/solaris_10 +0 -31
  375. data/spec/fixtures/unit/zpool_version/solaris_11 +0 -43
  376. data/spec/fixtures/unit/zpool_version/zfsonlinux_0.6.1 +0 -48
  377. data/spec/fixtures/virtual/proc_1_cgroup/in_a_container +0 -9
  378. data/spec/fixtures/virtual/proc_1_cgroup/in_a_docker_container +0 -8
  379. data/spec/fixtures/virtual/proc_1_cgroup/in_a_docker_container_with_systemd_slices +0 -10
  380. data/spec/fixtures/virtual/proc_1_cgroup/not_in_a_container +0 -9
  381. data/spec/fixtures/virtual/proc_self_status/vserver_2_1/guest +0 -37
  382. data/spec/fixtures/virtual/proc_self_status/vserver_2_1/host +0 -36
  383. data/spec/fixtures/virtual/proc_self_status/vserver_2_3/guest +0 -39
  384. data/spec/fixtures/virtual/proc_self_status/vserver_2_3/host +0 -39
  385. data/spec/integration/facter_spec.rb +0 -39
  386. data/spec/integration/util/windows/user_spec.rb +0 -59
  387. data/spec/lib/facter_spec/cpuinfo.rb +0 -15
  388. data/spec/lib/facter_spec/windows_network.rb +0 -64
  389. data/spec/puppetlabs_spec/files.rb +0 -57
  390. data/spec/puppetlabs_spec/fixtures.rb +0 -49
  391. data/spec/puppetlabs_spec/matchers.rb +0 -87
  392. data/spec/puppetlabs_spec/verbose.rb +0 -9
  393. data/spec/puppetlabs_spec_helper.rb +0 -26
  394. data/spec/schema/validate_facter_schema.rb +0 -18
  395. data/spec/shared_contexts/platform.rb +0 -55
  396. data/spec/shared_formats/parses.rb +0 -3
  397. data/spec/spec_helper.rb +0 -68
  398. data/spec/unit/application_spec.rb +0 -110
  399. data/spec/unit/architecture_spec.rb +0 -63
  400. data/spec/unit/blockdevices_spec.rb +0 -109
  401. data/spec/unit/core/aggregate_spec.rb +0 -125
  402. data/spec/unit/core/directed_graph_spec.rb +0 -79
  403. data/spec/unit/core/execution/base_spec.rb +0 -130
  404. data/spec/unit/core/execution/posix_spec.rb +0 -96
  405. data/spec/unit/core/execution/windows_spec.rb +0 -106
  406. data/spec/unit/core/execution_spec.rb +0 -42
  407. data/spec/unit/core/logging_spec.rb +0 -223
  408. data/spec/unit/core/resolvable_spec.rb +0 -81
  409. data/spec/unit/core/suitable_spec.rb +0 -106
  410. data/spec/unit/dhcp_servers_spec.rb +0 -212
  411. data/spec/unit/domain_spec.rb +0 -310
  412. data/spec/unit/ec2/rest_spec.rb +0 -168
  413. data/spec/unit/ec2_spec.rb +0 -139
  414. data/spec/unit/facter_spec.rb +0 -108
  415. data/spec/unit/filesystems_spec.rb +0 -50
  416. data/spec/unit/fqdn_spec.rb +0 -16
  417. data/spec/unit/gce/metadata_spec.rb +0 -49
  418. data/spec/unit/gce_spec.rb +0 -34
  419. data/spec/unit/gid_spec.rb +0 -51
  420. data/spec/unit/hardwareisa_spec.rb +0 -41
  421. data/spec/unit/hardwaremodel_spec.rb +0 -58
  422. data/spec/unit/hostname_spec.rb +0 -40
  423. data/spec/unit/id_spec.rb +0 -29
  424. data/spec/unit/interfaces_spec.rb +0 -67
  425. data/spec/unit/ipaddress6_spec.rb +0 -180
  426. data/spec/unit/ipaddress_spec.rb +0 -114
  427. data/spec/unit/kernel_spec.rb +0 -24
  428. data/spec/unit/kernelmajversion_spec.rb +0 -22
  429. data/spec/unit/kernelrelease_spec.rb +0 -66
  430. data/spec/unit/kernelversion_spec.rb +0 -32
  431. data/spec/unit/ldom_spec.rb +0 -84
  432. data/spec/unit/lsbdistcodename_spec.rb +0 -30
  433. data/spec/unit/lsbdistdescription_spec.rb +0 -30
  434. data/spec/unit/lsbdistid_spec.rb +0 -30
  435. data/spec/unit/lsbdistrelease_spec.rb +0 -30
  436. data/spec/unit/lsbmajdistrelease_spec.rb +0 -30
  437. data/spec/unit/lsbminordistrelease_spec.rb +0 -31
  438. data/spec/unit/lsbrelease_spec.rb +0 -30
  439. data/spec/unit/macaddress_spec.rb +0 -76
  440. data/spec/unit/manufacturer_spec.rb +0 -115
  441. data/spec/unit/memory_spec.rb +0 -470
  442. data/spec/unit/netmask_spec.rb +0 -106
  443. data/spec/unit/operatingsystem/base_spec.rb +0 -76
  444. data/spec/unit/operatingsystem/cumuluslinux_spec.rb +0 -40
  445. data/spec/unit/operatingsystem/implementation_spec.rb +0 -50
  446. data/spec/unit/operatingsystem/linux_spec.rb +0 -559
  447. data/spec/unit/operatingsystem/sunos_spec.rb +0 -143
  448. data/spec/unit/operatingsystem/vmkernel_spec.rb +0 -13
  449. data/spec/unit/operatingsystem/windows_spec.rb +0 -77
  450. data/spec/unit/operatingsystem_spec.rb +0 -17
  451. data/spec/unit/operatingsystemmajrelease_spec.rb +0 -21
  452. data/spec/unit/operatingsystemrelease_spec.rb +0 -20
  453. data/spec/unit/os_spec.rb +0 -131
  454. data/spec/unit/osfamily_spec.rb +0 -17
  455. data/spec/unit/partitions_spec.rb +0 -88
  456. data/spec/unit/physicalprocessorcount_spec.rb +0 -13
  457. data/spec/unit/processor_spec.rb +0 -38
  458. data/spec/unit/processors/os_spec.rb +0 -469
  459. data/spec/unit/processors_spec.rb +0 -203
  460. data/spec/unit/ps_spec.rb +0 -42
  461. data/spec/unit/rackspace_spec.rb +0 -40
  462. data/spec/unit/rubyplatform_spec.rb +0 -7
  463. data/spec/unit/selinux_spec.rb +0 -119
  464. data/spec/unit/ssh_spec.rb +0 -77
  465. data/spec/unit/system32_spec.rb +0 -28
  466. data/spec/unit/system_uptime_spec.rb +0 -80
  467. data/spec/unit/uniqueid_spec.rb +0 -27
  468. data/spec/unit/uptime_spec.rb +0 -110
  469. data/spec/unit/util/collection_spec.rb +0 -258
  470. data/spec/unit/util/config_spec.rb +0 -120
  471. data/spec/unit/util/confine_spec.rb +0 -148
  472. data/spec/unit/util/dhcp_servers_spec.rb +0 -63
  473. data/spec/unit/util/directory_loader_spec.rb +0 -102
  474. data/spec/unit/util/ec2_spec.rb +0 -184
  475. data/spec/unit/util/fact_spec.rb +0 -142
  476. data/spec/unit/util/file_read_spec.rb +0 -29
  477. data/spec/unit/util/formatter_spec.rb +0 -55
  478. data/spec/unit/util/ip/windows_spec.rb +0 -80
  479. data/spec/unit/util/ip_spec.rb +0 -487
  480. data/spec/unit/util/loader_spec.rb +0 -286
  481. data/spec/unit/util/macaddress_spec.rb +0 -143
  482. data/spec/unit/util/macosx_spec.rb +0 -114
  483. data/spec/unit/util/manufacturer_spec.rb +0 -223
  484. data/spec/unit/util/normalization_spec.rb +0 -113
  485. data/spec/unit/util/operatingsystem_spec.rb +0 -107
  486. data/spec/unit/util/parser_spec.rb +0 -233
  487. data/spec/unit/util/partitions/partitions_spec.rb +0 -67
  488. data/spec/unit/util/partitions_spec.rb +0 -19
  489. data/spec/unit/util/posix_spec.rb +0 -11
  490. data/spec/unit/util/processor_spec.rb +0 -212
  491. data/spec/unit/util/registry_spec.rb +0 -76
  492. data/spec/unit/util/resolution_spec.rb +0 -129
  493. data/spec/unit/util/solaris_zones_spec.rb +0 -127
  494. data/spec/unit/util/uptime_spec.rb +0 -131
  495. data/spec/unit/util/values_spec.rb +0 -171
  496. data/spec/unit/util/virtual_spec.rb +0 -393
  497. data/spec/unit/util/vlans_spec.rb +0 -42
  498. data/spec/unit/util/wmi_spec.rb +0 -19
  499. data/spec/unit/util/xendomains_spec.rb +0 -114
  500. data/spec/unit/version_spec.rb +0 -42
  501. data/spec/unit/virtual_spec.rb +0 -585
  502. data/spec/unit/zfs_version_spec.rb +0 -87
  503. data/spec/unit/zonename_spec.rb +0 -14
  504. data/spec/unit/zones_spec.rb +0 -55
  505. data/spec/unit/zpool_version_spec.rb +0 -80
  506. data/spec/watchr.rb +0 -125
@@ -1,21 +0,0 @@
1
- # A module to gather vlan facts
2
- #
3
- module Facter::Util::Vlans
4
- def self.get_vlan_config
5
- if File.exist?('/proc/net/vlan/config') and File.readable?('/proc/net/vlan/config')
6
- File.read('/proc/net/vlan/config')
7
- end
8
- end
9
-
10
- def self.get_vlans
11
- if (config = self.get_vlan_config)
12
- vlans = []
13
- config.each_line do |line|
14
- if (match = line.match(/^([0-9A-Za-z]+)\.([0-9]+) /))
15
- vlans << match[2] if match[2]
16
- end
17
- end
18
- vlans.join(',') unless vlans.empty?
19
- end
20
- end
21
- end
@@ -1,10 +0,0 @@
1
- module Facter::Util::Windows
2
- module Process; end
3
-
4
- if Facter::Util::Config.is_windows?
5
- require 'facter/util/windows/api_types'
6
- require 'facter/util/windows/error'
7
- require 'facter/util/windows/user'
8
- require 'facter/util/windows/process'
9
- end
10
- end
@@ -1,135 +0,0 @@
1
- require 'ffi'
2
-
3
- module Facter::Util::Windows::ApiTypes
4
- class ::Facter::Util::Windows::FFI
5
- # standard Win32 error codes
6
- WIN32_FALSE = 0
7
- ERROR_SUCCESS = 0
8
-
9
- NULL_HANDLE = 0
10
-
11
- def self.read_win32_bool(ffi_pointer)
12
- # BOOL is always a 32-bit integer in Win32
13
- # some Win32 APIs return 1 for true, while others are non-0
14
- ffi_pointer.read_int32 != WIN32_FALSE
15
- end
16
-
17
- def self.read_dword(ffi_pointer)
18
- ffi_pointer.read_uint32
19
- end
20
-
21
- def self.read_handle(ffi_pointer)
22
- ffi_pointer.type_size == 4 ? ffi_pointer.read_uint32 : ffi_pointer.read_uint64
23
- end
24
-
25
- def self.read_wide_string(ffi_pointer, char_length, dst_encoding = Encoding::UTF_8)
26
- # char_length is number of wide chars (typically excluding NULLs), *not* bytes
27
- str = ffi_pointer.get_bytes(0, char_length * 2).force_encoding('UTF-16LE')
28
- str.encode(dst_encoding)
29
- end
30
-
31
- # @param max_char_length [Integer] Maximum number of wide chars to return (typically excluding NULLs), *not* bytes
32
- # @param null_terminator [Symbol] Number of number of null wchar characters, *not* bytes, that determine the end of the string
33
- # null_terminator = :single_null, then the terminating sequence is two bytes of zero. This is UNIT16 = 0
34
- # null_terminator = :double_null, then the terminating sequence is four bytes of zero. This is UNIT32 = 0
35
- def self.read_arbitrary_wide_string_up_to(ffi_pointer, max_char_length = 512, null_terminator = :single_null)
36
- if null_terminator != :single_null && null_terminator != :double_null
37
- raise _("Unable to read wide strings with %{null_terminator} terminal nulls") % { null_terminator: null_terminator }
38
- end
39
-
40
- terminator_width = null_terminator == :single_null ? 1 : 2
41
- reader_method = null_terminator == :single_null ? :get_uint16 : :get_uint32
42
-
43
- # Look for a null terminating characters; if found, read up to that null (exclusive)
44
- (0...max_char_length - terminator_width).each do |i|
45
- return read_wide_string(ffi_pointer, i) if ffi_pointer.send(reader_method, (i * 2)) == 0
46
- end
47
-
48
- # String is longer than the max; read just to the max
49
- read_wide_string(ffi_pointer, max_char_length)
50
- end
51
-
52
- def self.read_win32_local_pointer(ffi_pointer, &block)
53
- ptr = nil
54
- begin
55
- ptr = ffi_pointer.read_pointer
56
- yield ptr
57
- ensure
58
- if ptr && ! ptr.null?
59
- if WIN32.LocalFree(ptr.address) != NULL_HANDLE
60
- Puppet.debug "LocalFree memory leak"
61
- end
62
- end
63
- end
64
-
65
- # ptr has already had LocalFree called, so nothing to return
66
- nil
67
- end
68
- end
69
- # FFI Types
70
- # https://github.com/ffi/ffi/wiki/Types
71
-
72
- # Windows - Common Data Types
73
- # https://msdn.microsoft.com/en-us/library/cc230309.aspx
74
-
75
- # Windows Data Types
76
- # https://msdn.microsoft.com/en-us/library/windows/desktop/aa383751(v=vs.85).aspx
77
-
78
- FFI.typedef :uint32, :dword
79
- FFI.typedef :uintptr_t, :handle
80
-
81
- # buffer_inout is similar to pointer (platform specific), but optimized for buffers
82
- FFI.typedef :buffer_inout, :lpwstr
83
-
84
- # pointer in FFI is platform specific
85
- # NOTE: for API calls with reserved lpvoid parameters, pass a FFI::Pointer::NULL
86
- FFI.typedef :pointer, :lpcvoid
87
- FFI.typedef :pointer, :lpvoid
88
- FFI.typedef :pointer, :lpdword
89
- FFI.typedef :pointer, :pdword
90
- FFI.typedef :pointer, :phandle
91
- FFI.typedef :pointer, :pbool
92
-
93
- # any time LONG / ULONG is in a win32 API definition DO NOT USE platform specific width
94
- # which is what FFI uses by default
95
- # instead create new aliases for these very special cases
96
- # NOTE: not a good idea to redefine FFI :ulong since other typedefs may rely on it
97
- FFI.typedef :uint32, :win32_ulong
98
- FFI.typedef :int32, :win32_long
99
- # FFI bool can be only 1 byte at times,
100
- # Win32 BOOL is a signed int, and is always 4 bytes, even on x64
101
- # https://blogs.msdn.com/b/oldnewthing/archive/2011/03/28/10146459.aspx
102
- FFI.typedef :int32, :win32_bool
103
-
104
- # Same as a LONG, a 32-bit signed integer
105
- FFI.typedef :int32, :hresult
106
-
107
- # NOTE: FFI already defines (u)short as a 16-bit (un)signed like this:
108
- # FFI.typedef :uint16, :ushort
109
- # FFI.typedef :int16, :short
110
-
111
- # 8 bits per byte
112
- FFI.typedef :uchar, :byte
113
- FFI.typedef :uint16, :wchar
114
-
115
- module ::Facter::Util::Windows::FFI::WIN32
116
- extend ::FFI::Library
117
-
118
- ffi_convention :stdcall
119
-
120
- private
121
- # https://msdn.microsoft.com/en-us/library/windows/desktop/aa366730(v=vs.85).aspx
122
- # HLOCAL WINAPI LocalFree(
123
- # _In_ HLOCAL hMem
124
- # );
125
- ffi_lib :kernel32
126
- attach_function :LocalFree, [:handle], :handle
127
-
128
- # https://msdn.microsoft.com/en-us/library/windows/desktop/ms724211(v=vs.85).aspx
129
- # BOOL WINAPI CloseHandle(
130
- # _In_ HANDLE hObject
131
- # );
132
- ffi_lib :kernel32
133
- attach_function :CloseHandle, [:handle], :win32_bool
134
- end
135
- end
@@ -1,43 +0,0 @@
1
- require 'facter/util/windows'
2
- require 'ffi'
3
-
4
- module Facter::Util::Windows::Dir
5
- extend FFI::Library
6
-
7
- COMMON_APPDATA = 0x0023
8
- S_OK = 0x0
9
- MAX_PATH = 260;
10
-
11
- def get_common_appdata
12
- common_appdata = ''
13
-
14
- # this pointer actually points to a :lpwstr (pointer) since we're letting Windows allocate for us
15
- FFI::MemoryPointer.new(:pointer, ((MAX_PATH + 1) * 2)) do |buffer_ptr|
16
- # hwndOwner, nFolder, hToken, dwFlags, pszPath
17
- if SHGetFolderPathW(0, COMMON_APPDATA, 0, 0, buffer_ptr) != S_OK
18
- raise Facter::Util::Windows::Error.new("Could not find COMMON_APPDATA path")
19
- end
20
-
21
- common_appdata = Facter::Util::Windows::FFI.read_arbitrary_wide_string_up_to(buffer_ptr, MAX_PATH + 1)
22
- end
23
-
24
- common_appdata
25
- end
26
- module_function :get_common_appdata
27
-
28
- private
29
-
30
- ffi_convention :stdcall
31
-
32
- # https://msdn.microsoft.com/en-us/library/windows/desktop/bb762181(v=vs.85).aspx
33
- # HRESULT SHGetFolderPath(
34
- # _In_ HWND hwndOwner,
35
- # _In_ int nFolder,
36
- # _In_ HANDLE hToken,
37
- # _In_ DWORD dwFlags,
38
- # _Out_ LPTSTR pszPath
39
- # );
40
- ffi_lib :shell32
41
- attach_function :SHGetFolderPathW,
42
- [:handle, :int32, :handle, :dword, :lpwstr], :hresult
43
- end
@@ -1,87 +0,0 @@
1
- require 'facter/util/windows'
2
-
3
- # represents an error resulting from a Win32 error code
4
- class Facter::Util::Windows::Error < RuntimeError
5
- require 'ffi'
6
- extend FFI::Library
7
-
8
- attr_reader :code
9
- attr_reader :original
10
-
11
- # NOTE: FFI.errno only works properly when prior Win32 calls have been made
12
- # through FFI bindings. Calls made through Win32API do not have their error
13
- # codes captured by FFI.errno
14
- def initialize(message, code = FFI.errno, original = nil)
15
- @original = original
16
- super(message + ": #{self.class.format_error_code(code)}")
17
-
18
- @code = code
19
- end
20
-
21
- # Helper method that wraps FormatMessage that returns a human readable string.
22
- def self.format_error_code(code)
23
- # specifying 0 will look for LANGID in the following order
24
- # 1.Language neutral
25
- # 2.Thread LANGID, based on the thread's locale value
26
- # 3.User default LANGID, based on the user's default locale value
27
- # 4.System default LANGID, based on the system default locale value
28
- # 5.US English
29
- dwLanguageId = 0
30
- flags = FORMAT_MESSAGE_ALLOCATE_BUFFER |
31
- FORMAT_MESSAGE_FROM_SYSTEM |
32
- FORMAT_MESSAGE_ARGUMENT_ARRAY |
33
- FORMAT_MESSAGE_IGNORE_INSERTS |
34
- FORMAT_MESSAGE_MAX_WIDTH_MASK
35
- error_string = ''
36
-
37
- # this pointer actually points to a :lpwstr (pointer) since we're letting Windows allocate for us
38
- FFI::MemoryPointer.new(:pointer, 1) do |buffer_ptr|
39
- length = FormatMessageW(flags, FFI::Pointer::NULL, code, dwLanguageId,
40
- buffer_ptr, 0, FFI::Pointer::NULL)
41
-
42
- if length == Facter::Util::Windows::FFI::WIN32_FALSE
43
- # can't raise same error type here or potentially recurse infinitely
44
- raise Facter::Error.new("FormatMessageW could not format code #{code}")
45
- end
46
-
47
- # returns an FFI::Pointer with autorelease set to false, which is what we want
48
- Facter::Util::Windows::FFI.read_win32_local_pointer(buffer_ptr) do |wide_string_ptr|
49
- if wide_string_ptr.null?
50
- raise Facter::Error.new("FormatMessageW failed to allocate buffer for code #{code}")
51
- end
52
-
53
- error_string = Facter::Util::Windows::FFI.read_wide_string(wide_string_ptr, length)
54
- end
55
- end
56
-
57
- error_string
58
- end
59
-
60
- ERROR_FILE_NOT_FOUND = 2
61
- ERROR_ACCESS_DENIED = 5
62
-
63
- FORMAT_MESSAGE_ALLOCATE_BUFFER = 0x00000100
64
- FORMAT_MESSAGE_IGNORE_INSERTS = 0x00000200
65
- FORMAT_MESSAGE_FROM_SYSTEM = 0x00001000
66
- FORMAT_MESSAGE_ARGUMENT_ARRAY = 0x00002000
67
- FORMAT_MESSAGE_MAX_WIDTH_MASK = 0x000000FF
68
-
69
- private
70
-
71
- ffi_convention :stdcall
72
-
73
- # https://msdn.microsoft.com/en-us/library/windows/desktop/ms679351(v=vs.85).aspx
74
- # DWORD WINAPI FormatMessage(
75
- # _In_ DWORD dwFlags,
76
- # _In_opt_ LPCVOID lpSource,
77
- # _In_ DWORD dwMessageId,
78
- # _In_ DWORD dwLanguageId,
79
- # _Out_ LPTSTR lpBuffer,
80
- # _In_ DWORD nSize,
81
- # _In_opt_ va_list *Arguments
82
- # );
83
- # NOTE: since we're not preallocating the buffer, use a :pointer for lpBuffer
84
- ffi_lib :kernel32
85
- attach_function :FormatMessageW,
86
- [:dword, :lpcvoid, :dword, :dword, :pointer, :dword, :pointer], :dword
87
- end
@@ -1,294 +0,0 @@
1
- require 'facter/util/windows'
2
- require 'ffi'
3
-
4
- module Facter::Util::Windows::Process
5
- extend FFI::Library
6
-
7
- def get_current_process
8
- # this pseudo-handle does not require closing per MSDN docs
9
- GetCurrentProcess()
10
- end
11
- module_function :get_current_process
12
-
13
- def open_process_token(handle, desired_access, &block)
14
- token_handle = nil
15
- begin
16
- FFI::MemoryPointer.new(:handle, 1) do |token_handle_ptr|
17
- result = OpenProcessToken(handle, desired_access, token_handle_ptr)
18
- if result == Facter::Util::Windows::FFI::WIN32_FALSE
19
- raise Facter::Util::Windows::Error.new(
20
- "OpenProcessToken(#{handle}, #{desired_access.to_s(8)}, #{token_handle_ptr})")
21
- end
22
-
23
- yield token_handle = Facter::Util::Windows::FFI.read_handle(token_handle_ptr)
24
- end
25
-
26
- token_handle
27
- ensure
28
- Facter::Util::Windows::FFI::WIN32.CloseHandle(token_handle) if token_handle
29
- end
30
-
31
- # token_handle has had CloseHandle called against it, so nothing to return
32
- nil
33
- end
34
- module_function :open_process_token
35
-
36
- def get_token_information(token_handle, token_information, &block)
37
- # to determine buffer size
38
- FFI::MemoryPointer.new(:dword, 1) do |return_length_ptr|
39
- result = GetTokenInformation(token_handle, token_information, nil, 0, return_length_ptr)
40
- return_length = Facter::Util::Windows::FFI.read_dword(return_length_ptr)
41
-
42
- if return_length <= 0
43
- raise Facter::Util::Windows::Error.new(
44
- "GetTokenInformation(#{token_handle}, #{token_information}, nil, 0, #{return_length_ptr})")
45
- end
46
-
47
- # re-call API with properly sized buffer for all results
48
- FFI::MemoryPointer.new(return_length) do |token_information_buf|
49
- result = GetTokenInformation(token_handle, token_information,
50
- token_information_buf, return_length, return_length_ptr)
51
-
52
- if result == Facter::Util::Windows::FFI::WIN32_FALSE
53
- raise Facter::Util::Windows::Error.new(
54
- "GetTokenInformation(#{token_handle}, #{token_information}, #{token_information_buf}, " +
55
- "#{return_length}, #{return_length_ptr})")
56
- end
57
-
58
- yield token_information_buf
59
- end
60
- end
61
-
62
- # GetTokenInformation buffer has been cleaned up by this point, nothing to return
63
- nil
64
- end
65
- module_function :get_token_information
66
-
67
- def parse_token_information_as_token_elevation(token_information_buf)
68
- TOKEN_ELEVATION.new(token_information_buf)
69
- end
70
- module_function :parse_token_information_as_token_elevation
71
-
72
- TOKEN_QUERY = 0x0008
73
- # Returns whether or not the owner of the current process is running
74
- # with elevated security privileges.
75
- #
76
- # Only supported on Windows Vista or later.
77
- #
78
- def elevated_security?
79
- # default / pre-Vista
80
- elevated = false
81
- handle = nil
82
-
83
- begin
84
- handle = get_current_process
85
- open_process_token(handle, TOKEN_QUERY) do |token_handle|
86
- get_token_information(token_handle, :TokenElevation) do |token_info|
87
- token_elevation = parse_token_information_as_token_elevation(token_info)
88
- # TokenIsElevated member of the TOKEN_ELEVATION struct
89
- elevated = token_elevation[:TokenIsElevated] != 0
90
- end
91
- end
92
-
93
- elevated
94
- rescue Facter::Util::Windows::Error => e
95
- raise e if e.code != ERROR_NO_SUCH_PRIVILEGE
96
- ensure
97
- Facter::Util::Windows::FFI::WIN32.CloseHandle(handle) if handle
98
- end
99
- end
100
- module_function :elevated_security?
101
-
102
- STATUS_SUCCESS = 0
103
-
104
- def os_version(&block)
105
- FFI::MemoryPointer.new(OSVERSIONINFOEX.size) do |ver_ptr|
106
- ver = OSVERSIONINFOEX.new(ver_ptr)
107
- ver[:dwOSVersionInfoSize] = OSVERSIONINFOEX.size
108
-
109
- result = RtlGetVersion(ver_ptr)
110
-
111
- if result != STATUS_SUCCESS
112
- raise RuntimeError, 'Calling Windows RtlGetVersion failed'
113
- end
114
-
115
- yield ver
116
- end
117
-
118
- # ver_ptr has already had free called, so nothing to return
119
- nil
120
- end
121
- module_function :os_version
122
-
123
- def windows_major_version
124
- ver = 0
125
-
126
- self.os_version do |version|
127
- ver = version[:dwMajorVersion]
128
- end
129
-
130
- ver
131
- end
132
- module_function :windows_major_version
133
-
134
- def os_version_string
135
- ver = ''
136
- self.os_version do |version|
137
- ver = "#{version[:dwMajorVersion]}.#{version[:dwMinorVersion]}.#{version[:dwBuildNumber]}"
138
- end
139
-
140
- ver
141
- end
142
- module_function :os_version_string
143
-
144
-
145
- SM_SERVERR2 = 89
146
-
147
- def is_2003_r2?
148
- # Peculiar API from user32 - the docs for SM_SERVER2 indicate
149
- # The build number if the system is Windows Server 2003 R2; otherwise, 0.
150
- GetSystemMetrics(SM_SERVERR2) != 0
151
- end
152
- module_function :is_2003_r2?
153
-
154
- def supports_elevated_security?
155
- windows_major_version >= 6
156
- end
157
- module_function :supports_elevated_security?
158
-
159
- private
160
-
161
- ffi_convention :stdcall
162
-
163
- # https://msdn.microsoft.com/en-us/library/windows/desktop/ms683179(v=vs.85).aspx
164
- # HANDLE WINAPI GetCurrentProcess(void);
165
- ffi_lib :kernel32
166
- attach_function :GetCurrentProcess, [], :handle
167
-
168
- # https://msdn.microsoft.com/en-us/library/windows/desktop/aa379295(v=vs.85).aspx
169
- # BOOL WINAPI OpenProcessToken(
170
- # _In_ HANDLE ProcessHandle,
171
- # _In_ DWORD DesiredAccess,
172
- # _Out_ PHANDLE TokenHandle
173
- # );
174
- ffi_lib :advapi32
175
- attach_function :OpenProcessToken,
176
- [:handle, :dword, :phandle], :win32_bool
177
-
178
- public
179
- # https://msdn.microsoft.com/en-us/library/windows/desktop/aa379626(v=vs.85).aspx
180
- TOKEN_INFORMATION_CLASS = enum(
181
- :TokenUser, 1,
182
- :TokenGroups,
183
- :TokenPrivileges,
184
- :TokenOwner,
185
- :TokenPrimaryGroup,
186
- :TokenDefaultDacl,
187
- :TokenSource,
188
- :TokenType,
189
- :TokenImpersonationLevel,
190
- :TokenStatistics,
191
- :TokenRestrictedSids,
192
- :TokenSessionId,
193
- :TokenGroupsAndPrivileges,
194
- :TokenSessionReference,
195
- :TokenSandBoxInert,
196
- :TokenAuditPolicy,
197
- :TokenOrigin,
198
- :TokenElevationType,
199
- :TokenLinkedToken,
200
- :TokenElevation,
201
- :TokenHasRestrictions,
202
- :TokenAccessInformation,
203
- :TokenVirtualizationAllowed,
204
- :TokenVirtualizationEnabled,
205
- :TokenIntegrityLevel,
206
- :TokenUIAccess,
207
- :TokenMandatoryPolicy,
208
- :TokenLogonSid,
209
- :TokenIsAppContainer,
210
- :TokenCapabilities,
211
- :TokenAppContainerSid,
212
- :TokenAppContainerNumber,
213
- :TokenUserClaimAttributes,
214
- :TokenDeviceClaimAttributes,
215
- :TokenRestrictedUserClaimAttributes,
216
- :TokenRestrictedDeviceClaimAttributes,
217
- :TokenDeviceGroups,
218
- :TokenRestrictedDeviceGroups,
219
- :TokenSecurityAttributes,
220
- :TokenIsRestricted,
221
- :MaxTokenInfoClass
222
- )
223
-
224
- # https://msdn.microsoft.com/en-us/library/windows/desktop/bb530717(v=vs.85).aspx
225
- # typedef struct _TOKEN_ELEVATION {
226
- # DWORD TokenIsElevated;
227
- # } TOKEN_ELEVATION, *PTOKEN_ELEVATION;
228
- class TOKEN_ELEVATION < FFI::Struct
229
- layout :TokenIsElevated, :dword
230
- end
231
-
232
- private
233
-
234
- # https://msdn.microsoft.com/en-us/library/windows/desktop/aa446671(v=vs.85).aspx
235
- # BOOL WINAPI GetTokenInformation(
236
- # _In_ HANDLE TokenHandle,
237
- # _In_ TOKEN_INFORMATION_CLASS TokenInformationClass,
238
- # _Out_opt_ LPVOID TokenInformation,
239
- # _In_ DWORD TokenInformationLength,
240
- # _Out_ PDWORD ReturnLength
241
- # );
242
- ffi_lib :advapi32
243
- attach_function :GetTokenInformation,
244
- [:handle, TOKEN_INFORMATION_CLASS, :lpvoid, :dword, :pdword ], :win32_bool
245
-
246
- public
247
-
248
- # https://msdn.microsoft.com/en-us/library/windows/hardware/ff563620(v=vs.85).aspx
249
- # typedef struct _OSVERSIONINFOEXW {
250
- # ULONG dwOSVersionInfoSize;
251
- # ULONG dwMajorVersion;
252
- # ULONG dwMinorVersion;
253
- # ULONG dwBuildNumber;
254
- # ULONG dwPlatformId;
255
- # WCHAR szCSDVersion[128];
256
- # USHORT wServicePackMajor;
257
- # USHORT wServicePackMinor;
258
- # USHORT wSuiteMask;
259
- # UCHAR wProductType;
260
- # UCHAR wReserved;
261
- # } RTL_OSVERSIONINFOEXW, *PRTL_OSVERSIONINFOEXW;
262
- class OSVERSIONINFOEX < FFI::Struct
263
- layout(
264
- :dwOSVersionInfoSize, :win32_ulong,
265
- :dwMajorVersion, :win32_ulong,
266
- :dwMinorVersion, :win32_ulong,
267
- :dwBuildNumber, :win32_ulong,
268
- :dwPlatformId, :win32_ulong,
269
- :szCSDVersion, [:wchar, 128],
270
- :wServicePackMajor, :ushort,
271
- :wServicePackMinor, :ushort,
272
- :wSuiteMask, :ushort,
273
- :wProductType, :uchar,
274
- :wReserved, :uchar,
275
- )
276
- end
277
-
278
- private
279
-
280
- # NTSTATUS -> :int32 (defined in winerror.h / ntstatus.h)
281
- # https://msdn.microsoft.com/en-us/library/windows/hardware/ff561910(v=vs.85).aspx
282
- # NTSTATUS RtlGetVersion(
283
- # _Out_ PRTL_OSVERSIONINFOW lpVersionInformation
284
- # );
285
- ffi_lib [FFI::CURRENT_PROCESS, :ntdll]
286
- attach_function :RtlGetVersion, [:pointer], :int32
287
-
288
- # C++ int is a signed 32-bit integer
289
- # int WINAPI GetSystemMetrics(
290
- # _In_ int nIndex
291
- # );
292
- ffi_lib :user32
293
- attach_function :GetSystemMetrics, [:int32], :int32
294
- end