spior 0.1.5 → 0.2.8
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.
- checksums.yaml +4 -4
- checksums.yaml.gz.sig +0 -0
- data/.github/workflows/rubocop-analysis.yml +47 -0
- data/.gitignore +1 -0
- data/CHANGELOG.md +21 -0
- data/Gemfile +5 -0
- data/README.md +27 -4
- data/Rakefile +21 -10
- data/lib/spior/dep.rb +59 -0
- data/lib/spior/helpers.rb +19 -19
- data/lib/spior/iptables/default.rb +19 -13
- data/lib/spior/iptables/root.rb +36 -41
- data/lib/spior/iptables/rules.rb +103 -0
- data/lib/spior/iptables/tor.rb +24 -26
- data/lib/spior/iptables.rb +3 -0
- data/lib/spior/menu.rb +16 -23
- data/lib/spior/msg.rb +22 -12
- data/lib/spior/options.rb +17 -20
- data/lib/spior/service/enable.rb +63 -0
- data/lib/spior/service/restart.rb +13 -0
- data/lib/spior/service/start.rb +14 -0
- data/lib/spior/service/stop.rb +12 -0
- data/lib/spior/service.rb +12 -0
- data/lib/spior/status.rb +32 -24
- data/lib/spior/tor/config.rb +100 -0
- data/lib/spior/tor/data.rb +53 -0
- data/lib/spior/tor/start.rb +59 -0
- data/lib/spior/tor/stop.rb +32 -0
- data/lib/spior/tor.rb +8 -2
- data/lib/spior/version.rb +3 -1
- data/lib/spior.rb +18 -23
- data/man/spior.1 +53 -0
- data/man/spior.1.html +122 -0
- data/man/spior.1.ronn +46 -0
- data/spior.gemspec +24 -21
- data/test/test_install.rb +2 -2
- data/test/test_options.rb +2 -0
- data.tar.gz.sig +0 -0
- metadata +67 -57
- metadata.gz.sig +0 -0
- data/lib/spior/clear.rb +0 -36
- data/lib/spior/copy.rb +0 -85
- data/lib/spior/install.rb +0 -33
- data/lib/spior/network.rb +0 -45
- data/lib/spior/persist.rb +0 -51
- data/lib/spior/tor/info.rb +0 -113
- data/lib/spior/tor/restart.rb +0 -13
metadata
CHANGED
@@ -1,98 +1,99 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: spior
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.2.8
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- szorfein
|
8
|
-
autorequire:
|
8
|
+
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain:
|
11
11
|
- |
|
12
12
|
-----BEGIN CERTIFICATE-----
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
13
|
+
MIIEhTCCAu2gAwIBAgIBATANBgkqhkiG9w0BAQsFADBEMREwDwYDVQQDDAhzem9y
|
14
|
+
ZmVpbjEaMBgGCgmSJomT8ixkARkWCnByb3Rvbm1haWwxEzARBgoJkiaJk/IsZAEZ
|
15
|
+
FgNjb20wHhcNMjIwOTA4MDYyNjE5WhcNMjMwOTA4MDYyNjE5WjBEMREwDwYDVQQD
|
16
|
+
DAhzem9yZmVpbjEaMBgGCgmSJomT8ixkARkWCnByb3Rvbm1haWwxEzARBgoJkiaJ
|
17
|
+
k/IsZAEZFgNjb20wggGiMA0GCSqGSIb3DQEBAQUAA4IBjwAwggGKAoIBgQDEJNhl
|
18
|
+
Gd0JNHLXysR7GvbCKD+y1prQbmS333GpoFgPR2chEGv8Y7l0We2UFXCZ59CVOs1v
|
19
|
+
KBVQhhNvxWAHWhfe/8stb1JFBxZpnCi7S0BGpqeblaGBXVlhBOzbZ6d1NrOwMfDS
|
20
|
+
6EzdX4WAOH55HnAz29T5KREUdbONVLU7HJNIIFVZvf6ethOv84pnkWbdWjV0RB3A
|
21
|
+
ERYste5QHGx1YQOYGTuJMlu8113kqTbB8wpEw6X00aJwmXcJvnKXkhN5mxd06yss
|
22
|
+
EE96lOk16raTWCh7DeYR3/ilVet3DpLlCvpFNtMIuko1HFa3HTW+57003VxD8Ozk
|
23
|
+
VGQKn823D+ReujKh+jgxbl8Q+r652C9Wl1N+C5CSma4mDtNGKr0XmEOEQycpSx0z
|
24
|
+
Z9J6/27wS8s6SJ0rLxueFQ6gb2oPEQb8jKJuNEuXWLmO3Idrwlv9Z7ymhnksjyqM
|
25
|
+
fAw+NMGEOCITNphXmssazlLX+bnxcbpr7rbTHa1xBmmHoUVudAnxAG43PrMCAwEA
|
26
|
+
AaOBgTB/MAkGA1UdEwQCMAAwCwYDVR0PBAQDAgSwMB0GA1UdDgQWBBRzxda94CPF
|
27
|
+
Ll9UQ5l55l65RCZuEzAiBgNVHREEGzAZgRdzem9yZmVpbkBwcm90b25tYWlsLmNv
|
28
|
+
bTAiBgNVHRIEGzAZgRdzem9yZmVpbkBwcm90b25tYWlsLmNvbTANBgkqhkiG9w0B
|
29
|
+
AQsFAAOCAYEAPhavFyzIP60Zw7y40zJhzQpMK2IWtdw9HrRJq313Ea4UT1Kgv7F9
|
30
|
+
lCFtQzI5XMzooYiLMoPz7xBMXaUz+DDFOOcgGSinVrFbfPA4rOGEkBjnlwC39lBc
|
31
|
+
AiyXFzCV7Wqn4VhtqQQyvmoNYL4Q666K+nL8/nsXZWsXtRQ119LeAvrI2A+xmYAb
|
32
|
+
FPE5bD3Jx1JCoJdVN1DmE4YYdM8mVmb0XjCK9Tp1M01EDKDvAX7f3B+X6A5D7uBq
|
33
|
+
63X6Kx09VkntVOrifd3W4TwjDlyAMpB+50OIi3ErPnH2R4i09qnCiZmcVWATBVKw
|
34
|
+
e2QSloIAUZJwEFkrRqWPNVi8sr+BcMeuKpXaOwpbkP+xq/W2EKlUQKhPXMXS4jvC
|
35
|
+
MuTi+RjpSNKZxzBrOlK2eMIpiFrugF7nzKcM9EGnWRWUb899drCcD4VJhjPtgpn+
|
36
|
+
aEJeKq4/BlIwMlXPe+W5C8zp2i8hgG1/OYbwbGE1p2iRi1NIK7G/HyRqQjOqJxzE
|
37
|
+
LLknX69FN7/G
|
37
38
|
-----END CERTIFICATE-----
|
38
|
-
date:
|
39
|
+
date: 2022-09-16 00:00:00.000000000 Z
|
39
40
|
dependencies:
|
40
41
|
- !ruby/object:Gem::Dependency
|
41
|
-
name:
|
42
|
+
name: interfacez
|
42
43
|
requirement: !ruby/object:Gem::Requirement
|
43
44
|
requirements:
|
44
|
-
- -
|
45
|
+
- - "~>"
|
45
46
|
- !ruby/object:Gem::Version
|
46
|
-
version:
|
47
|
+
version: '1.0'
|
47
48
|
type: :runtime
|
48
49
|
prerelease: false
|
49
50
|
version_requirements: !ruby/object:Gem::Requirement
|
50
51
|
requirements:
|
51
|
-
- -
|
52
|
+
- - "~>"
|
52
53
|
- !ruby/object:Gem::Version
|
53
|
-
version:
|
54
|
+
version: '1.0'
|
54
55
|
- !ruby/object:Gem::Dependency
|
55
|
-
name:
|
56
|
+
name: nomansland
|
56
57
|
requirement: !ruby/object:Gem::Requirement
|
57
58
|
requirements:
|
58
|
-
- -
|
59
|
+
- - "~>"
|
59
60
|
- !ruby/object:Gem::Version
|
60
|
-
version:
|
61
|
+
version: '0.0'
|
61
62
|
type: :runtime
|
62
63
|
prerelease: false
|
63
64
|
version_requirements: !ruby/object:Gem::Requirement
|
64
65
|
requirements:
|
65
|
-
- -
|
66
|
+
- - "~>"
|
66
67
|
- !ruby/object:Gem::Version
|
67
|
-
version:
|
68
|
+
version: '0.0'
|
68
69
|
- !ruby/object:Gem::Dependency
|
69
|
-
name:
|
70
|
+
name: rainbow
|
70
71
|
requirement: !ruby/object:Gem::Requirement
|
71
72
|
requirements:
|
72
|
-
- -
|
73
|
+
- - "~>"
|
73
74
|
- !ruby/object:Gem::Version
|
74
|
-
version:
|
75
|
+
version: '3.1'
|
75
76
|
type: :runtime
|
76
77
|
prerelease: false
|
77
78
|
version_requirements: !ruby/object:Gem::Requirement
|
78
79
|
requirements:
|
79
|
-
- -
|
80
|
+
- - "~>"
|
80
81
|
- !ruby/object:Gem::Version
|
81
|
-
version:
|
82
|
+
version: '3.1'
|
82
83
|
- !ruby/object:Gem::Dependency
|
83
84
|
name: tty-which
|
84
85
|
requirement: !ruby/object:Gem::Requirement
|
85
86
|
requirements:
|
86
|
-
- -
|
87
|
+
- - "~>"
|
87
88
|
- !ruby/object:Gem::Version
|
88
|
-
version: 0.
|
89
|
+
version: '0.5'
|
89
90
|
type: :runtime
|
90
91
|
prerelease: false
|
91
92
|
version_requirements: !ruby/object:Gem::Requirement
|
92
93
|
requirements:
|
93
|
-
- -
|
94
|
+
- - "~>"
|
94
95
|
- !ruby/object:Gem::Version
|
95
|
-
version: 0.
|
96
|
+
version: '0.5'
|
96
97
|
description: " A tool to make TOR your default gateway\n"
|
97
98
|
email: szorfein@protonmail.com
|
98
99
|
executables:
|
@@ -102,8 +103,10 @@ extra_rdoc_files:
|
|
102
103
|
- README.md
|
103
104
|
- CHANGELOG.md
|
104
105
|
files:
|
106
|
+
- ".github/workflows/rubocop-analysis.yml"
|
105
107
|
- ".gitignore"
|
106
108
|
- CHANGELOG.md
|
109
|
+
- Gemfile
|
107
110
|
- LICENSE
|
108
111
|
- README.md
|
109
112
|
- Rakefile
|
@@ -111,24 +114,31 @@ files:
|
|
111
114
|
- ext/ipt_mod.conf
|
112
115
|
- ext/iptables.service
|
113
116
|
- lib/spior.rb
|
114
|
-
- lib/spior/
|
115
|
-
- lib/spior/copy.rb
|
117
|
+
- lib/spior/dep.rb
|
116
118
|
- lib/spior/helpers.rb
|
117
|
-
- lib/spior/install.rb
|
118
119
|
- lib/spior/iptables.rb
|
119
120
|
- lib/spior/iptables/default.rb
|
120
121
|
- lib/spior/iptables/root.rb
|
122
|
+
- lib/spior/iptables/rules.rb
|
121
123
|
- lib/spior/iptables/tor.rb
|
122
124
|
- lib/spior/menu.rb
|
123
125
|
- lib/spior/msg.rb
|
124
|
-
- lib/spior/network.rb
|
125
126
|
- lib/spior/options.rb
|
126
|
-
- lib/spior/
|
127
|
+
- lib/spior/service.rb
|
128
|
+
- lib/spior/service/enable.rb
|
129
|
+
- lib/spior/service/restart.rb
|
130
|
+
- lib/spior/service/start.rb
|
131
|
+
- lib/spior/service/stop.rb
|
127
132
|
- lib/spior/status.rb
|
128
133
|
- lib/spior/tor.rb
|
129
|
-
- lib/spior/tor/
|
130
|
-
- lib/spior/tor/
|
134
|
+
- lib/spior/tor/config.rb
|
135
|
+
- lib/spior/tor/data.rb
|
136
|
+
- lib/spior/tor/start.rb
|
137
|
+
- lib/spior/tor/stop.rb
|
131
138
|
- lib/spior/version.rb
|
139
|
+
- man/spior.1
|
140
|
+
- man/spior.1.html
|
141
|
+
- man/spior.1.ronn
|
132
142
|
- spior.gemspec
|
133
143
|
- test/test_install.rb
|
134
144
|
- test/test_options.rb
|
@@ -139,7 +149,7 @@ metadata:
|
|
139
149
|
changelog_uri: https://github.com/szorfein/spior/blob/master/CHANGELOG.md
|
140
150
|
bug_tracker_uri: https://github.com/szorfein/spior/issues
|
141
151
|
wiki_uri: https://github.com/szorfein/spior
|
142
|
-
post_install_message:
|
152
|
+
post_install_message:
|
143
153
|
rdoc_options: []
|
144
154
|
require_paths:
|
145
155
|
- lib
|
@@ -147,7 +157,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
147
157
|
requirements:
|
148
158
|
- - ">="
|
149
159
|
- !ruby/object:Gem::Version
|
150
|
-
version: '2.
|
160
|
+
version: '2.6'
|
151
161
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
152
162
|
requirements:
|
153
163
|
- - ">="
|
@@ -156,8 +166,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
156
166
|
requirements:
|
157
167
|
- tor
|
158
168
|
- iptables
|
159
|
-
rubygems_version: 3.
|
160
|
-
signing_key:
|
169
|
+
rubygems_version: 3.3.19
|
170
|
+
signing_key:
|
161
171
|
specification_version: 4
|
162
172
|
summary: A tool to make TOR your default gateway
|
163
173
|
test_files:
|
metadata.gz.sig
CHANGED
Binary file
|
data/lib/spior/clear.rb
DELETED
@@ -1,36 +0,0 @@
|
|
1
|
-
require 'tty-which'
|
2
|
-
require 'nomansland'
|
3
|
-
|
4
|
-
module Spior
|
5
|
-
module Clear
|
6
|
-
extend self
|
7
|
-
|
8
|
-
def all
|
9
|
-
iptables
|
10
|
-
Spior::Copy.new.restore
|
11
|
-
end
|
12
|
-
|
13
|
-
private
|
14
|
-
|
15
|
-
def iptables
|
16
|
-
puts "Clearing rules.."
|
17
|
-
ipt = Spior::Iptables::Default.new
|
18
|
-
ipt.stop!
|
19
|
-
#if File.exist?("/var/lib/iptables/rules-save")
|
20
|
-
# ipt_restore "/var/lib/iptables/rules-save"
|
21
|
-
#elsif File.exist?("/etc/iptables/rules.save")
|
22
|
-
# ipt_restore "/etc/iptables/iptables.rules"
|
23
|
-
#elsif File.exist?("/etc/iptables.rules")
|
24
|
-
# ipt_restore "/etc/iptables.rules"
|
25
|
-
#else
|
26
|
-
#Msg.p "Couldn't find any previous rules for iptables, create basic rules..."
|
27
|
-
ipt.run!
|
28
|
-
#end
|
29
|
-
end
|
30
|
-
|
31
|
-
def ipt_restore(path)
|
32
|
-
puts "Restoring rules #{path}..."
|
33
|
-
Helpers::Exec.new("iptables-restore").run("#{path}")
|
34
|
-
end
|
35
|
-
end
|
36
|
-
end
|
data/lib/spior/copy.rb
DELETED
@@ -1,85 +0,0 @@
|
|
1
|
-
require 'digest'
|
2
|
-
|
3
|
-
module Spior
|
4
|
-
class Copy
|
5
|
-
def initialize
|
6
|
-
@cp = Helpers::Exec.new("cp -a")
|
7
|
-
@files = []
|
8
|
-
search_conf_dir
|
9
|
-
config_files
|
10
|
-
list
|
11
|
-
end
|
12
|
-
|
13
|
-
def save
|
14
|
-
@files.each { |f|
|
15
|
-
backup = "#{f}_backup"
|
16
|
-
if ! File.exist? backup
|
17
|
-
Msg.p "#{f} saved"
|
18
|
-
@cp.run("#{f} #{backup}")
|
19
|
-
end
|
20
|
-
}
|
21
|
-
end
|
22
|
-
|
23
|
-
def restore
|
24
|
-
@files.each { |f|
|
25
|
-
backup = "#{f}_backup"
|
26
|
-
if File.exist? backup
|
27
|
-
Msg.p "#{f} restored"
|
28
|
-
@cp.run("#{backup} #{f}")
|
29
|
-
end
|
30
|
-
}
|
31
|
-
end
|
32
|
-
|
33
|
-
private
|
34
|
-
|
35
|
-
def config_files
|
36
|
-
copy_file("#{@conf_dir}/ipt_mod.conf", "/etc/modules-load.d/ipt_mod.conf")
|
37
|
-
end
|
38
|
-
|
39
|
-
def list
|
40
|
-
add "/etc/resolv.conf"
|
41
|
-
add "/etc/tor/torrc"
|
42
|
-
add "/etc/systemd/resolved.conf"
|
43
|
-
add "/var/lib/iptables/rules-save" # gentoo
|
44
|
-
add "/etc/iptables/iptables.rules" # arch
|
45
|
-
add "/etc/iptables/rules.v4" # debian
|
46
|
-
end
|
47
|
-
|
48
|
-
def add(file)
|
49
|
-
@files << file if File.exist? file
|
50
|
-
end
|
51
|
-
|
52
|
-
def search_conf_dir
|
53
|
-
# ebuild on gentoo copy the ext dir at lib/ext
|
54
|
-
@conf_dir = File.expand_path('../..' + '/lib/ext', __dir__)
|
55
|
-
if ! Dir.exist?(@conf_dir)
|
56
|
-
@conf_dir = File.expand_path('../..' + '/ext', __dir__)
|
57
|
-
end
|
58
|
-
end
|
59
|
-
|
60
|
-
def previous_copy(target)
|
61
|
-
backup=`ls #{target}.backup-* | head -1`.chomp
|
62
|
-
return false if ! File.exist? backup
|
63
|
-
check_hash(backup, target)
|
64
|
-
end
|
65
|
-
|
66
|
-
def add_file(target)
|
67
|
-
@cp.run("#{@config_file} #{target}")
|
68
|
-
Msg.p "File #{@config_file} has been successfully copied at #{target}"
|
69
|
-
end
|
70
|
-
|
71
|
-
def copy_file(conf, target)
|
72
|
-
@config_file = conf
|
73
|
-
add_file target if ! File.exist? target
|
74
|
-
return if check_hash(@config_file, target)
|
75
|
-
add_file target
|
76
|
-
end
|
77
|
-
|
78
|
-
def check_hash(src, target)
|
79
|
-
return if not File.exist?(target)
|
80
|
-
sha256conf = Digest::SHA256.file src
|
81
|
-
sha256target = Digest::SHA256.file target
|
82
|
-
sha256conf === sha256target
|
83
|
-
end
|
84
|
-
end
|
85
|
-
end
|
data/lib/spior/install.rb
DELETED
@@ -1,33 +0,0 @@
|
|
1
|
-
require 'nomansland'
|
2
|
-
require 'tty-which'
|
3
|
-
|
4
|
-
module Spior
|
5
|
-
class Install
|
6
|
-
class << self
|
7
|
-
def check_deps
|
8
|
-
base_packages
|
9
|
-
end
|
10
|
-
|
11
|
-
private
|
12
|
-
|
13
|
-
def base_packages
|
14
|
-
if not TTY::Which.exist?('iptables') or not TTY::Which.exist?('tor')
|
15
|
-
case Nomansland::installer?
|
16
|
-
when :emerge
|
17
|
-
emerge = Helpers::Exec.new("emerge -av --changed-use")
|
18
|
-
emerge.run("tor iptables")
|
19
|
-
when :pacman
|
20
|
-
pacman = Helpers::Exec.new("pacman -S --needed")
|
21
|
-
pacman.run("tor iptables")
|
22
|
-
when :yum
|
23
|
-
yum = Helpers::Exec.new("yum install")
|
24
|
-
yum.run("tor iptables")
|
25
|
-
else
|
26
|
-
apt_get = Helpers::Exec.new("apt-get install")
|
27
|
-
apt_get.run("tor iptables iptables-persistent")
|
28
|
-
end
|
29
|
-
end
|
30
|
-
end
|
31
|
-
end
|
32
|
-
end
|
33
|
-
end
|
data/lib/spior/network.rb
DELETED
@@ -1,45 +0,0 @@
|
|
1
|
-
require 'interfacez'
|
2
|
-
|
3
|
-
module Spior
|
4
|
-
class Network
|
5
|
-
attr_accessor :card
|
6
|
-
|
7
|
-
def initialize(name = false)
|
8
|
-
@name = name
|
9
|
-
@check = false
|
10
|
-
end
|
11
|
-
|
12
|
-
def card
|
13
|
-
verify_card
|
14
|
-
if @check == false then
|
15
|
-
ask_for_card
|
16
|
-
end
|
17
|
-
@name
|
18
|
-
end
|
19
|
-
|
20
|
-
private
|
21
|
-
|
22
|
-
def verify_card
|
23
|
-
return if @check or not @name
|
24
|
-
Interfacez.all do |interface|
|
25
|
-
if interface == @name then
|
26
|
-
@check = true
|
27
|
-
end
|
28
|
-
end
|
29
|
-
if not @check then
|
30
|
-
Msg.err "Your interface #{@name} is no found"
|
31
|
-
end
|
32
|
-
end
|
33
|
-
|
34
|
-
def ask_for_card
|
35
|
-
until @check == true
|
36
|
-
Interfacez.all do |interface|
|
37
|
-
print interface + " "
|
38
|
-
end
|
39
|
-
printf "\nWhat is the name of the card to be used? "
|
40
|
-
@name = gets.chomp
|
41
|
-
verify_card
|
42
|
-
end
|
43
|
-
end
|
44
|
-
end
|
45
|
-
end
|
data/lib/spior/persist.rb
DELETED
@@ -1,51 +0,0 @@
|
|
1
|
-
require 'nomansland'
|
2
|
-
require 'tty-which'
|
3
|
-
|
4
|
-
module Spior
|
5
|
-
module Persist
|
6
|
-
extend self
|
7
|
-
|
8
|
-
def enable
|
9
|
-
case Nomansland::distro?
|
10
|
-
when :gentoo
|
11
|
-
for_gentoo
|
12
|
-
else
|
13
|
-
Msg.p "Your distro is not yet supported."
|
14
|
-
end
|
15
|
-
end
|
16
|
-
|
17
|
-
private
|
18
|
-
|
19
|
-
def for_gentoo
|
20
|
-
if TTY::Which.exist?('systemctl')
|
21
|
-
systemd_start("iptables-store")
|
22
|
-
systemd_enable("iptables-restore")
|
23
|
-
systemd_enable("tor")
|
24
|
-
else
|
25
|
-
system("sudo /etc/init.d/iptables save")
|
26
|
-
rc_upd = Helpers::Exec.new("rc-update")
|
27
|
-
rc_upd.run("rc-update add iptables boot")
|
28
|
-
rc_upd.run("rc-update add tor")
|
29
|
-
rc_upd.run("rc-update add tor default")
|
30
|
-
end
|
31
|
-
end
|
32
|
-
|
33
|
-
def systemd_enable(service)
|
34
|
-
systemctl = Helpers::Exec.new("systemctl")
|
35
|
-
Msg.p "Search for service #{service}..."
|
36
|
-
`systemctl is-enabled #{service}`
|
37
|
-
if not $?.success? then
|
38
|
-
systemctl.run("enable #{service}")
|
39
|
-
end
|
40
|
-
end
|
41
|
-
|
42
|
-
def systemd_start(service)
|
43
|
-
systemctl = Helpers::Exec.new("systemctl")
|
44
|
-
Msg.p "Search for service #{service}..."
|
45
|
-
`systemctl is-active #{service}`
|
46
|
-
if not $?.success? then
|
47
|
-
systemctl.run("start #{service}")
|
48
|
-
end
|
49
|
-
end
|
50
|
-
end
|
51
|
-
end
|
data/lib/spior/tor/info.rb
DELETED
@@ -1,113 +0,0 @@
|
|
1
|
-
require 'pathname'
|
2
|
-
require 'nomansland'
|
3
|
-
require 'tty-which'
|
4
|
-
|
5
|
-
module Spior
|
6
|
-
module Tor
|
7
|
-
class Info
|
8
|
-
attr_accessor :dns, :uid, :trans_port, :virt_addr
|
9
|
-
|
10
|
-
def initialize
|
11
|
-
@systemctl = Helpers::Exec.new("systemctl")
|
12
|
-
check_deps
|
13
|
-
@dns = search_dns
|
14
|
-
@uid = search_uid
|
15
|
-
@trans_port = search_trans_port
|
16
|
-
@virt_addr = search_virt_addr
|
17
|
-
end
|
18
|
-
|
19
|
-
private
|
20
|
-
|
21
|
-
def check_deps
|
22
|
-
Spior::Install::check_deps
|
23
|
-
Spior::Copy.new.save
|
24
|
-
add_resolv
|
25
|
-
add_torrc
|
26
|
-
verify_service
|
27
|
-
end
|
28
|
-
|
29
|
-
def add_resolv
|
30
|
-
string = "nameserver 127.0.0.1"
|
31
|
-
new_file = Helpers::NewFile.new(string, "resolv.conf", "/etc")
|
32
|
-
new_file.add
|
33
|
-
new_file.perm("root", "644")
|
34
|
-
end
|
35
|
-
|
36
|
-
def self.grep?(file, regex)
|
37
|
-
is_found = false
|
38
|
-
return is_found if ! File.exist? file
|
39
|
-
File.open(file) do |f|
|
40
|
-
f.each do |line|
|
41
|
-
is_found = true if line.match(regex)
|
42
|
-
end
|
43
|
-
end
|
44
|
-
is_found
|
45
|
-
end
|
46
|
-
|
47
|
-
def add_torrc
|
48
|
-
user = ""
|
49
|
-
pid = ""
|
50
|
-
dir = "DataDirectory /var/lib/tor/data"
|
51
|
-
case Nomansland::distro?
|
52
|
-
when :gentoo
|
53
|
-
user = "User tor"
|
54
|
-
pid = "PIDFile /run/tor/tor.pid"
|
55
|
-
end
|
56
|
-
string = <<EOF
|
57
|
-
# Generated by Spior
|
58
|
-
#{user}
|
59
|
-
#{pid}
|
60
|
-
#{dir}
|
61
|
-
GeoIPExcludeUnknown 1
|
62
|
-
DNSPort 127.0.0.1:9061
|
63
|
-
AutomapHostsOnResolve 1
|
64
|
-
AutomapHostsSuffixes .exit,.onion
|
65
|
-
SocksPort 9050
|
66
|
-
VirtualAddrNetworkIPv4 10.192.0.0/10
|
67
|
-
TransPort 9040 IsolateClientAddr IsolateClientProtocol IsolateDestAddr IsolateDestPort
|
68
|
-
TestSocks 1
|
69
|
-
MaxCircuitDirtiness 600
|
70
|
-
EOF
|
71
|
-
new_file = Helpers::NewFile.new(string, "torrc", "/etc/tor")
|
72
|
-
new_file.add
|
73
|
-
new_file.perm("root", "644")
|
74
|
-
end
|
75
|
-
|
76
|
-
def search_dns
|
77
|
-
9061
|
78
|
-
end
|
79
|
-
|
80
|
-
def search_uid
|
81
|
-
case Nomansland::distro?
|
82
|
-
when :debian
|
83
|
-
`id -u debian-tor`.chomp
|
84
|
-
when :ubuntu
|
85
|
-
`id -u debian-tor`.chomp
|
86
|
-
else
|
87
|
-
`id -u tor`.chomp
|
88
|
-
end
|
89
|
-
end
|
90
|
-
|
91
|
-
def search_trans_port
|
92
|
-
9040
|
93
|
-
end
|
94
|
-
|
95
|
-
def search_virt_addr
|
96
|
-
"10.192.0.0/10"
|
97
|
-
end
|
98
|
-
|
99
|
-
def verify_service
|
100
|
-
if TTY::Which.exist?('systemctl')
|
101
|
-
state = `systemctl is-active tor`.chomp
|
102
|
-
if state == 'active'
|
103
|
-
@systemctl.run('restart tor')
|
104
|
-
else
|
105
|
-
@systemctl.run('start tor')
|
106
|
-
end
|
107
|
-
else
|
108
|
-
Msg.for_no_systemd
|
109
|
-
end
|
110
|
-
end
|
111
|
-
end
|
112
|
-
end
|
113
|
-
end
|
data/lib/spior/tor/restart.rb
DELETED