startor 0.6.3 → 0.6.4
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/bin/startor +7 -5
- data/lib/MacOS/HardwarePort.rb +109 -0
- data/lib/MacOS/IfConfig.rb +161 -0
- metadata +8 -8
- data/lib/OSX/HardwarePort.rb +0 -69
- data/lib/OSX/IfConfig.rb +0 -57
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 75a30a450379b0c64fbb337d72447828e9f7b7c7c7dd66c040794682ce488480
|
4
|
+
data.tar.gz: 5965c6e542207e6af325d3c305eeda9e4f30beea1068f77df39543a114a7cf07
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 4d3d3901d349fa82d2cb8efea423814f40d8617e56d9288fb7ee1807a53c170e975c368ed08513f9ba909134f4cae2b37290d9ae493c8c66116391482137af56
|
7
|
+
data.tar.gz: 16efcce7c462dcfc34a066ddb6ee799f0b7d1b79c0bf0c22c944ee5ea924d1a73f715f5eedb302f3c62acaa82eae0374e3ed1c4085c118069f57eafde8e6a5d3
|
data/bin/startor
CHANGED
@@ -2,7 +2,7 @@
|
|
2
2
|
# startor
|
3
3
|
|
4
4
|
# 20190802
|
5
|
-
# 0.6.
|
5
|
+
# 0.6.4
|
6
6
|
|
7
7
|
# History: Derived from https://kremalicious.com/simple-tor-setup-on-mac-os-x/...
|
8
8
|
|
@@ -52,11 +52,13 @@
|
|
52
52
|
# 11. ~ install_homebrew() to make use of homebrew_installed?().
|
53
53
|
# 12. ~ install_tor() to make use of tor_installed?(), though this is a bit redundant, since setup() should control whether install_tor() is run anyway.
|
54
54
|
# 13. ~ setup(), so that it doesn't needlessly install brew, because tor is already installed.
|
55
|
+
# 3/4
|
56
|
+
# 14. /lib\/OSX/lib\/MacOS/
|
55
57
|
|
56
58
|
require 'FileUtils/which'
|
57
59
|
require 'Kernel/run'
|
58
|
-
require '
|
59
|
-
require '
|
60
|
+
require 'MacOS/HardwarePort'
|
61
|
+
require 'MacOS/IfConfig'
|
60
62
|
|
61
63
|
def install_homebrew
|
62
64
|
if homebrew_installed?
|
@@ -102,12 +104,12 @@ def enter_admin_password
|
|
102
104
|
end
|
103
105
|
|
104
106
|
def active_network_interfaces
|
105
|
-
|
107
|
+
MacOS::IfConfig.active_interfaces
|
106
108
|
end
|
107
109
|
|
108
110
|
def active_network_ports
|
109
111
|
active_network_interfaces.collect do |active_network_interface|
|
110
|
-
if hardware_port =
|
112
|
+
if hardware_port = MacOS::HardwarePort.find_by_device(active_network_interface)
|
111
113
|
hardware_port.name
|
112
114
|
end
|
113
115
|
end.compact
|
@@ -0,0 +1,109 @@
|
|
1
|
+
# MacOS/HardwarePort.rb
|
2
|
+
# MacOS::HardwarePort
|
3
|
+
|
4
|
+
# 20190829
|
5
|
+
# 0.3.1
|
6
|
+
|
7
|
+
# Changes since 0.2:
|
8
|
+
# 1. /Hardware/HardwarePort at the top of the file.
|
9
|
+
# 2. /new()/initialize()/ (Really!? I did that!? Twice!)
|
10
|
+
# 3. ~ MacOS::HardwarePort.parse, so that it only puts in one entry per hardware port.
|
11
|
+
# 4. - all()
|
12
|
+
# 5. + alias_method :all, :parse
|
13
|
+
# 6. + alias_method :hardware_ports, :parse
|
14
|
+
# 7. + alias_method :ports, :parse
|
15
|
+
# 8. + MacOS::HardwarePort.find_by_name
|
16
|
+
# 9. + MacOS::HardwarePort.find_by_ethernet_address
|
17
|
+
# 10. + MacOS::HardwarePort#mac_address
|
18
|
+
# 0/1
|
19
|
+
# 11. /MacOS::HardwarePort.find_by_device/MacOS::HardwarePort.find_by_interface/
|
20
|
+
# 11. + alias_method :find_by_device, :find_by_interface
|
21
|
+
# 12. + MacOS::HardwarePort#interface
|
22
|
+
# 13. + alias_method :find_by_hardware_port, :find_by_name
|
23
|
+
|
24
|
+
require 'Thoran/String/Captures/captures'
|
25
|
+
|
26
|
+
module MacOS
|
27
|
+
class HardwarePort
|
28
|
+
|
29
|
+
class << self
|
30
|
+
|
31
|
+
def parse(output = nil)
|
32
|
+
output ||= self.output
|
33
|
+
hardware_ports = []
|
34
|
+
hardware_port = nil
|
35
|
+
output.each_line do |line|
|
36
|
+
# p line
|
37
|
+
if line == "\n" || line == ""
|
38
|
+
hardware_ports << hardware_port if hardware_port
|
39
|
+
hardware_port = new
|
40
|
+
else
|
41
|
+
label, value = line.captures(/^(.+): (.+)/)
|
42
|
+
case label
|
43
|
+
when 'Hardware Port'; hardware_port.hardware_port = value
|
44
|
+
when 'Device'; hardware_port.device = value
|
45
|
+
when 'Ethernet Address'; hardware_port.ethernet_address = value
|
46
|
+
end
|
47
|
+
end
|
48
|
+
end
|
49
|
+
hardware_ports
|
50
|
+
end
|
51
|
+
alias_method :all, :parse
|
52
|
+
alias_method :hardware_ports, :parse
|
53
|
+
alias_method :ports, :parse
|
54
|
+
|
55
|
+
def find_by_interface(interface)
|
56
|
+
all.detect{|hardware_port| hardware_port.interface == interface}
|
57
|
+
end
|
58
|
+
alias_method :find_by_device, :find_by_interface
|
59
|
+
|
60
|
+
def find_by_name(name)
|
61
|
+
all.detect{|hardware_port| hardware_port.name == name}
|
62
|
+
end
|
63
|
+
alias_method :find_by_hardware_port, :find_by_name
|
64
|
+
|
65
|
+
def find_by_mac_address(mac_address)
|
66
|
+
all.detect{|hardware_port| hardware_port.ethernet_address == mac_address}
|
67
|
+
end
|
68
|
+
alias_method :find_by_ethernet_address, :find_by_mac_address
|
69
|
+
|
70
|
+
private
|
71
|
+
|
72
|
+
def output
|
73
|
+
`networksetup -listallhardwareports`
|
74
|
+
end
|
75
|
+
|
76
|
+
end # class << self
|
77
|
+
|
78
|
+
attr_accessor :hardware_port
|
79
|
+
attr_accessor :device
|
80
|
+
attr_accessor :ethernet_address
|
81
|
+
|
82
|
+
def initialize(hardware_port: nil, device: nil, ethernet_address: nil)
|
83
|
+
@hardware_port = hardware_port
|
84
|
+
@device = device
|
85
|
+
@ethernet_address = ethernet_address
|
86
|
+
end
|
87
|
+
|
88
|
+
def name
|
89
|
+
@hardware_port
|
90
|
+
end
|
91
|
+
|
92
|
+
def mac_address
|
93
|
+
@ethernet_address
|
94
|
+
end
|
95
|
+
|
96
|
+
def interface
|
97
|
+
@device
|
98
|
+
end
|
99
|
+
|
100
|
+
end
|
101
|
+
end
|
102
|
+
|
103
|
+
if __FILE__ == $0
|
104
|
+
require 'pp'
|
105
|
+
pp MacOS::HardwarePort.all
|
106
|
+
p MacOS::HardwarePort.find_by_device('en4')
|
107
|
+
p MacOS::HardwarePort.find_by_name('Wi-Fi')
|
108
|
+
p MacOS::HardwarePort.find_by_interface('en4')
|
109
|
+
end
|
@@ -0,0 +1,161 @@
|
|
1
|
+
# MacOS/IfConfig.rb
|
2
|
+
# MacOS::IfConfig
|
3
|
+
|
4
|
+
# 20200429
|
5
|
+
# 0.6.0
|
6
|
+
|
7
|
+
# Changes since 0.5:
|
8
|
+
# 1. + MacOS::Ifconfig.find_by_interface
|
9
|
+
# 2. + MacOS::Ifconfig.find_by_mac_address
|
10
|
+
# 3. + MacOS::Ifconfig.find_by_ipv4_address
|
11
|
+
|
12
|
+
require 'Thoran/String/Capture/capture'
|
13
|
+
require 'Thoran/String/Captures/captures'
|
14
|
+
|
15
|
+
module MacOS
|
16
|
+
class IfConfig
|
17
|
+
|
18
|
+
class << self
|
19
|
+
|
20
|
+
def parse(output = nil)
|
21
|
+
output ||= self.output
|
22
|
+
@ifconfigs = []
|
23
|
+
interface = nil
|
24
|
+
output.each_line do |line|
|
25
|
+
if line =~ /^\t/
|
26
|
+
case line
|
27
|
+
when /ether/
|
28
|
+
@ifconfig.mac_address = line.capture(/ *ether (.+) $/)
|
29
|
+
when /inet /
|
30
|
+
if line.match(/broadcast/)
|
31
|
+
@ifconfig.ipv4_address, @ifconfig.netmask, @ifconfig.broadcast_address = line.captures(/ *inet (\d+(?:\.\d+){3}) netmask (.+) broadcast (.+)$/)
|
32
|
+
elsif line.match(/-->/)
|
33
|
+
ipv4_addresses, @ifconfig.netmask = line.captures(/ *inet (.+) netmask (.+) $/)
|
34
|
+
@ifconfig.ipv4_address = ipv4_addresses.split(' --> ').first
|
35
|
+
else
|
36
|
+
@ifconfig.ipv4_address, @ifconfig.netmask = line.captures(/ *inet (\d+(?:\.\d+){3}) netmask (.+) $/)
|
37
|
+
end
|
38
|
+
when /status\:/
|
39
|
+
@ifconfig.status = line.capture(/ *status: (.+)$/)
|
40
|
+
end
|
41
|
+
else
|
42
|
+
@ifconfigs << @ifconfig if @ifconfig
|
43
|
+
@ifconfig = new
|
44
|
+
@ifconfig.interface, _rest_of_line = line.captures(/^(.+?): (.+)$/)
|
45
|
+
end
|
46
|
+
end
|
47
|
+
@ifconfigs << @ifconfig
|
48
|
+
end
|
49
|
+
alias_method :all, :parse
|
50
|
+
alias_method :interfaces, :parse
|
51
|
+
|
52
|
+
def interface_names
|
53
|
+
all.collect(&:interface_name)
|
54
|
+
end
|
55
|
+
|
56
|
+
def active_interfaces
|
57
|
+
all.select(&:active?)
|
58
|
+
end
|
59
|
+
alias_method :active, :active_interfaces
|
60
|
+
|
61
|
+
def active_interfaces_names
|
62
|
+
all.select(&:active?).collect(&:interface_name)
|
63
|
+
end
|
64
|
+
|
65
|
+
def inactive_interfaces
|
66
|
+
all.select(&:inactive?)
|
67
|
+
end
|
68
|
+
alias_method :inactive, :inactive_interfaces
|
69
|
+
|
70
|
+
def inactive_interfaces_names
|
71
|
+
all.select(&:inactive?).collect(&:interface_name)
|
72
|
+
end
|
73
|
+
|
74
|
+
def up_interfaces
|
75
|
+
all.select(&:up?)
|
76
|
+
end
|
77
|
+
alias_method :up, :up_interfaces
|
78
|
+
|
79
|
+
def up_interfaces_names
|
80
|
+
all.select(&:up?).collect(&:interface_name)
|
81
|
+
end
|
82
|
+
|
83
|
+
def mac_addresses
|
84
|
+
all.collect(&:mac_address).compact
|
85
|
+
end
|
86
|
+
alias_method :ethernet_addresses, :mac_addresses
|
87
|
+
|
88
|
+
def ipv4_addresses
|
89
|
+
all.collect(&:ipv4_address).compact
|
90
|
+
end
|
91
|
+
|
92
|
+
def find_by_interface(interface)
|
93
|
+
all.find{|ifconfig| ifconfig.interface == interface}
|
94
|
+
end
|
95
|
+
|
96
|
+
def find_by_mac_address(mac_address)
|
97
|
+
all.find{|ifconfig| ifconfig.mac_address == mac_address}
|
98
|
+
end
|
99
|
+
|
100
|
+
def find_by_ipv4_address(ipv4_address)
|
101
|
+
all.find{|ifconfig| ifconfig.ipv4_address == ipv4_address}
|
102
|
+
end
|
103
|
+
|
104
|
+
private
|
105
|
+
|
106
|
+
def output
|
107
|
+
`ifconfig -a`
|
108
|
+
end
|
109
|
+
|
110
|
+
end # class << self
|
111
|
+
|
112
|
+
attr_accessor :interface
|
113
|
+
attr_accessor :mac_address
|
114
|
+
attr_accessor :ipv4_address, :netmask, :broadcast_address
|
115
|
+
attr_accessor :status
|
116
|
+
|
117
|
+
def initialize(interface: nil, mac_address: nil, ipv4_address: nil, netmask: nil, broadcast_address:nil, status: nil)
|
118
|
+
@interface = interface
|
119
|
+
@mac_address = mac_address
|
120
|
+
@ipv4_address, @netmask, @broadcast_address = ipv4_address, netmask, broadcast_address
|
121
|
+
@status = status
|
122
|
+
end
|
123
|
+
|
124
|
+
def interface_name
|
125
|
+
@interface
|
126
|
+
end
|
127
|
+
alias_method :name, :interface_name
|
128
|
+
|
129
|
+
def ethernet_address
|
130
|
+
@mac_address
|
131
|
+
end
|
132
|
+
|
133
|
+
def active?
|
134
|
+
@status == 'active'
|
135
|
+
end
|
136
|
+
|
137
|
+
def inactive?
|
138
|
+
@status == 'inactive'
|
139
|
+
end
|
140
|
+
|
141
|
+
def up?
|
142
|
+
active? || @ipv4_address
|
143
|
+
end
|
144
|
+
|
145
|
+
end
|
146
|
+
end
|
147
|
+
|
148
|
+
if __FILE__ == $0
|
149
|
+
require 'pp'
|
150
|
+
pp MacOS::IfConfig.interfaces
|
151
|
+
p MacOS::IfConfig.interface_names
|
152
|
+
p MacOS::IfConfig.active_interfaces
|
153
|
+
p MacOS::IfConfig.active_interfaces_names
|
154
|
+
p MacOS::IfConfig.inactive_interfaces
|
155
|
+
p MacOS::IfConfig.inactive_interfaces_names
|
156
|
+
p MacOS::IfConfig.up_interfaces
|
157
|
+
p MacOS::IfConfig.up_interfaces_names
|
158
|
+
p MacOS::IfConfig.mac_addresses
|
159
|
+
p MacOS::IfConfig.ipv4_addresses
|
160
|
+
p MacOS::IfConfig.find_by_interface('en0')
|
161
|
+
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: startor
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.6.
|
4
|
+
version: 0.6.4
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- thoran
|
8
|
-
autorequire:
|
8
|
+
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2020-12-30 00:00:00.000000000 Z
|
12
12
|
dependencies: []
|
13
13
|
description: Easily install, start, and stop tor.
|
14
14
|
email: code@thoran.com
|
@@ -28,9 +28,9 @@ files:
|
|
28
28
|
- lib/FileUtils/which.rb
|
29
29
|
- lib/Files.rb
|
30
30
|
- lib/Kernel/run.rb
|
31
|
+
- lib/MacOS/HardwarePort.rb
|
32
|
+
- lib/MacOS/IfConfig.rb
|
31
33
|
- lib/Module/alias_methods.rb
|
32
|
-
- lib/OSX/HardwarePort.rb
|
33
|
-
- lib/OSX/IfConfig.rb
|
34
34
|
- lib/Ordinal.rb
|
35
35
|
- lib/Ordinal/Array.rb
|
36
36
|
- lib/Platform/OS.rb
|
@@ -57,7 +57,7 @@ licenses:
|
|
57
57
|
metadata:
|
58
58
|
tor_website: https://www.torproject.org
|
59
59
|
tor_check_page: https://check.torproject.org
|
60
|
-
post_install_message:
|
60
|
+
post_install_message:
|
61
61
|
rdoc_options: []
|
62
62
|
require_paths:
|
63
63
|
- lib
|
@@ -72,8 +72,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
72
72
|
- !ruby/object:Gem::Version
|
73
73
|
version: '0'
|
74
74
|
requirements: []
|
75
|
-
rubygems_version: 3.0.
|
76
|
-
signing_key:
|
75
|
+
rubygems_version: 3.2.0.rc.1
|
76
|
+
signing_key:
|
77
77
|
specification_version: 4
|
78
78
|
summary: tor management made easy.
|
79
79
|
test_files: []
|
data/lib/OSX/HardwarePort.rb
DELETED
@@ -1,69 +0,0 @@
|
|
1
|
-
# OSX/Hardware.rb
|
2
|
-
# OSX::Hardware
|
3
|
-
|
4
|
-
# 20180209
|
5
|
-
# 0.1.1
|
6
|
-
|
7
|
-
require 'Thoran/String/Captures/captures'
|
8
|
-
|
9
|
-
module OSX
|
10
|
-
class HardwarePort
|
11
|
-
|
12
|
-
class << self
|
13
|
-
|
14
|
-
def parse(output)
|
15
|
-
hardware_ports = []
|
16
|
-
hardware_port = nil
|
17
|
-
output.each_line do |line|
|
18
|
-
if line == "\n" || line == ""
|
19
|
-
hardware_port = new
|
20
|
-
else
|
21
|
-
label, value = line.captures(/^(.+): (.+)/)
|
22
|
-
case label
|
23
|
-
when 'Hardware Port'; hardware_port.hardware_port = value
|
24
|
-
when 'Device'; hardware_port.device = value
|
25
|
-
when 'Ethernet Address'; hardware_port.ethernet_address = value
|
26
|
-
end
|
27
|
-
end
|
28
|
-
hardware_ports << hardware_port
|
29
|
-
end
|
30
|
-
hardware_ports
|
31
|
-
end
|
32
|
-
|
33
|
-
def all
|
34
|
-
parse(output)
|
35
|
-
end
|
36
|
-
|
37
|
-
def find_by_device(device)
|
38
|
-
all.detect{|hardware_port| hardware_port.device == device}
|
39
|
-
end
|
40
|
-
|
41
|
-
private
|
42
|
-
|
43
|
-
def output
|
44
|
-
`networksetup -listallhardwareports`
|
45
|
-
end
|
46
|
-
|
47
|
-
end # class << self
|
48
|
-
|
49
|
-
attr_accessor :hardware_port
|
50
|
-
attr_accessor :device
|
51
|
-
attr_accessor :ethernet_address
|
52
|
-
|
53
|
-
def new(hardware_port:, device:, ethernet_address:)
|
54
|
-
@hardware_port = hardware_port
|
55
|
-
@device = device
|
56
|
-
@ethernet_address = ethernet_address
|
57
|
-
end
|
58
|
-
|
59
|
-
def name
|
60
|
-
@hardware_port
|
61
|
-
end
|
62
|
-
|
63
|
-
end
|
64
|
-
end
|
65
|
-
|
66
|
-
if __FILE__ == $0
|
67
|
-
p hardware_ports = OSX::HardwarePort.all
|
68
|
-
p en4 = OSX::HardwarePort.find_by_device('en4')
|
69
|
-
end
|
data/lib/OSX/IfConfig.rb
DELETED
@@ -1,57 +0,0 @@
|
|
1
|
-
# OSX/IfConfig.rb
|
2
|
-
# OSX::IfConfig
|
3
|
-
|
4
|
-
# 20180209
|
5
|
-
# 0.2.0
|
6
|
-
|
7
|
-
# Changes since 0.1:
|
8
|
-
# 1. + OSX namespace, under the assumption that the output of ifconfig on OSX is different from other operating systems.
|
9
|
-
require 'Thoran/String/Captures/captures'
|
10
|
-
|
11
|
-
module OSX
|
12
|
-
class IfConfig
|
13
|
-
|
14
|
-
def new(output = nil)
|
15
|
-
@output = output
|
16
|
-
end
|
17
|
-
|
18
|
-
def interfaces
|
19
|
-
parse.keys
|
20
|
-
end
|
21
|
-
|
22
|
-
def active_interfaces
|
23
|
-
parse.select do |interface, details|
|
24
|
-
details.any?{|detail| detail =~ /status: active/}
|
25
|
-
end.keys
|
26
|
-
end
|
27
|
-
|
28
|
-
private
|
29
|
-
|
30
|
-
def output
|
31
|
-
@output || `ifconfig -a`
|
32
|
-
end
|
33
|
-
|
34
|
-
def parse
|
35
|
-
interfaces = {}
|
36
|
-
interface = nil
|
37
|
-
output.each_line do |line|
|
38
|
-
if line =~ /^\t/
|
39
|
-
interfaces[interface] << line.sub(/^\t/, '')
|
40
|
-
else
|
41
|
-
interface, rest_of_line = line.captures(/^(.+?): (.+)$/)
|
42
|
-
interfaces[interface] = [rest_of_line]
|
43
|
-
end
|
44
|
-
end
|
45
|
-
interfaces
|
46
|
-
end
|
47
|
-
|
48
|
-
end
|
49
|
-
end
|
50
|
-
|
51
|
-
if __FILE__ == $0
|
52
|
-
require 'pp'
|
53
|
-
ic = OSX::IfConfig.new
|
54
|
-
pp ic.send(:parse)
|
55
|
-
ic.interfaces
|
56
|
-
ic.active_interfaces
|
57
|
-
end
|