amnesie 0.0.4 → 0.0.5
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.tar.gz.sig +0 -0
- data/CHANGELOG.md +5 -0
- data/Rakefile +12 -3
- data/amnesie.gemspec +1 -1
- data/lib/amnesie/options.rb +5 -1
- data/lib/amnesie/persist.rb +103 -0
- data/lib/amnesie/process.rb +2 -2
- data/lib/amnesie/runner.rb +17 -0
- metadata +3 -2
- metadata.gz.sig +0 -0
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 233d7f8f3157dd7508337cdcf3400768b4d68e16abd1f186a30cc9cec94fe5d7
|
4
|
+
data.tar.gz: fa77a1ad923ced06d8a0eac3d5039690a87f73dfb5b8450702696f84380553ae
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 21b9bda9e1aaaa409195ec6f271ae6547a5c2aab821858ab4be015b82480481ddc0934d76309c3e10d9dac3ac291e94b864e284881084b20dc661b67f71611b1
|
7
|
+
data.tar.gz: d534d1bb2a6550a88a591c92c2e602107fc0a5bd1dd3b7593ac5c919bd0cdd9b64da3ea3f4de935a6ca47310748f2c1f073261f3135c4b59d1ecca1e39bf3ba5
|
checksums.yaml.gz.sig
CHANGED
Binary file
|
data.tar.gz.sig
CHANGED
Binary file
|
data/CHANGELOG.md
CHANGED
@@ -1,3 +1,8 @@
|
|
1
|
+
## 0.0.5, release 2020-05-19
|
2
|
+
* Create a amnesie-mac@.service (work only if the gem is install system-wide)
|
3
|
+
* Add -p|--persist
|
4
|
+
* Replace Makefile by a Rakefile
|
5
|
+
|
1
6
|
## 0.0.4, release 2020-05-16
|
2
7
|
* Debian10 need to reload ifup@card-name too
|
3
8
|
* Correct path where search dhclient (/bin,/sbin)
|
data/Rakefile
CHANGED
@@ -2,9 +2,18 @@
|
|
2
2
|
require "rake/testtask"
|
3
3
|
|
4
4
|
Rake::TestTask.new(:test) do |t|
|
5
|
-
|
6
|
-
|
7
|
-
|
5
|
+
t.libs << "test"
|
6
|
+
t.libs << "lib"
|
7
|
+
t.test_files = FileList["test/test_*.rb"]
|
8
|
+
end
|
9
|
+
|
10
|
+
namespace :gem do
|
11
|
+
desc "build the gem"
|
12
|
+
task :build do
|
13
|
+
Dir["amnesie*.gem"].each {|f| File.unlink(f) }
|
14
|
+
system("gem build amnesie.gemspec")
|
15
|
+
system("gem install amnesie-0.0.5.gem -P MediumSecurity")
|
16
|
+
end
|
8
17
|
end
|
9
18
|
|
10
19
|
task :default => :test
|
data/amnesie.gemspec
CHANGED
data/lib/amnesie/options.rb
CHANGED
@@ -2,7 +2,7 @@ require 'optparse'
|
|
2
2
|
|
3
3
|
module Amnesie
|
4
4
|
class Options
|
5
|
-
attr_reader :mac, :netcard
|
5
|
+
attr_reader :mac, :netcard, :persist
|
6
6
|
|
7
7
|
def initialize(argv)
|
8
8
|
parse(argv)
|
@@ -19,6 +19,10 @@ module Amnesie
|
|
19
19
|
@netcard = net
|
20
20
|
end
|
21
21
|
|
22
|
+
opts.on("-p", "--persist", "Enable systemd service") do |net|
|
23
|
+
@persist = true
|
24
|
+
end
|
25
|
+
|
22
26
|
opts.on("-h", "--help", "Show this message") do
|
23
27
|
puts opts
|
24
28
|
exit
|
@@ -0,0 +1,103 @@
|
|
1
|
+
require 'fileutils'
|
2
|
+
require 'tempfile'
|
3
|
+
require_relative 'helpers'
|
4
|
+
|
5
|
+
module Amnesie
|
6
|
+
class Persist
|
7
|
+
|
8
|
+
def initialize(card)
|
9
|
+
@card = card
|
10
|
+
@systemd_dir = search_systemd_dir
|
11
|
+
@mv = Helpers::Exec.new("mv")
|
12
|
+
@systemctl = Helpers::Exec.new("systemctl")
|
13
|
+
end
|
14
|
+
|
15
|
+
def mac_exist?
|
16
|
+
File.exist? "#{@systemd_dir}/amnesie-mac@.service"
|
17
|
+
end
|
18
|
+
|
19
|
+
def to_s
|
20
|
+
@systemd_dir
|
21
|
+
end
|
22
|
+
|
23
|
+
def mac_service
|
24
|
+
amnesie_path=Dir.pwd + "/" + $0
|
25
|
+
@string=<<EOF
|
26
|
+
[Unit]
|
27
|
+
Description=MAC Change %I
|
28
|
+
Wants=network-pre.target
|
29
|
+
Before=network-pre.target
|
30
|
+
BindsTo=sys-subsystem-net-devices-%i.device
|
31
|
+
After=sys-subsystem-net-devices-%i.device
|
32
|
+
|
33
|
+
[Service]
|
34
|
+
Type=oneshot
|
35
|
+
ExecStart=#{amnesie_path} -m -n %I
|
36
|
+
|
37
|
+
[Install]
|
38
|
+
WantedBy=multi-user.target
|
39
|
+
EOF
|
40
|
+
end
|
41
|
+
|
42
|
+
def services
|
43
|
+
tmp = Tempfile.new("amnesie-mac@.service")
|
44
|
+
mac_service
|
45
|
+
File.open(tmp.path, 'w') do |file|
|
46
|
+
file.puts @string
|
47
|
+
end
|
48
|
+
dest=@systemd_dir + "/amnesie-mac@.service"
|
49
|
+
@mv.run("#{tmp.path} #{dest}")
|
50
|
+
@systemctl.run("daemon-reload")
|
51
|
+
end
|
52
|
+
|
53
|
+
def update_mac
|
54
|
+
print "Found a old amnesie-mac@.service, update? (y|n) "
|
55
|
+
answer = gets.chomp
|
56
|
+
case answer
|
57
|
+
when /^y|^Y/
|
58
|
+
services
|
59
|
+
end
|
60
|
+
end
|
61
|
+
|
62
|
+
def menu_mac
|
63
|
+
print "amnesie-mac@.service for #{@card}? (enable,disable,start,stop) "
|
64
|
+
answer = gets.chomp
|
65
|
+
case answer
|
66
|
+
when /^enable/
|
67
|
+
mac_enable
|
68
|
+
when /^disable/
|
69
|
+
mac_disable
|
70
|
+
when /^stop/
|
71
|
+
mac_stop
|
72
|
+
when /^start/
|
73
|
+
mac_start
|
74
|
+
end
|
75
|
+
end
|
76
|
+
|
77
|
+
private
|
78
|
+
|
79
|
+
def mac_enable
|
80
|
+
@systemctl.run("enable amnesie-mac@#{@card}.service")
|
81
|
+
end
|
82
|
+
def mac_disable
|
83
|
+
@systemctl.run("disable amnesie-mac@#{@card}.service")
|
84
|
+
end
|
85
|
+
def mac_stop
|
86
|
+
@systemctl.run("stop amnesie-mac@#{@card}.service")
|
87
|
+
end
|
88
|
+
def mac_start
|
89
|
+
@systemctl.run("start amnesie-mac@#{@card}.service")
|
90
|
+
end
|
91
|
+
|
92
|
+
def search_systemd_dir
|
93
|
+
if Dir.exist? "/lib/systemd/system"
|
94
|
+
"/lib/systemd/system"
|
95
|
+
elsif Dir.exist? "/usr/lib/systemd/system"
|
96
|
+
"/usr/lib/systemd/system"
|
97
|
+
else
|
98
|
+
raise "No directory systemd found"
|
99
|
+
exit
|
100
|
+
end
|
101
|
+
end
|
102
|
+
end
|
103
|
+
end
|
data/lib/amnesie/process.rb
CHANGED
@@ -31,7 +31,7 @@ module Amnesie
|
|
31
31
|
end
|
32
32
|
|
33
33
|
def kill_dhclient
|
34
|
-
return if not TTY::Which.exist?('dhclient', paths: ['/
|
34
|
+
return if not TTY::Which.exist?('dhclient', paths: ['/sbin'])
|
35
35
|
`pgrep -x dhclient`
|
36
36
|
@pkill.run("dhclient") if $?.success?
|
37
37
|
@rm.run("/run/dhclient.#{@card}.pid") if File.exist? "/run/dhclient.#{@card}.pid"
|
@@ -51,7 +51,7 @@ module Amnesie
|
|
51
51
|
end
|
52
52
|
|
53
53
|
def restart_dhclient
|
54
|
-
return if not TTY::Which.exist?('dhclient', paths: ['/
|
54
|
+
return if not TTY::Which.exist?('dhclient', paths: ['/sbin'])
|
55
55
|
dhclient = Helpers::Exec.new("dhclient")
|
56
56
|
# command tested on debian, not try on another system yet...
|
57
57
|
dhclient.run("-4 -v -i -pf /run/dhclient.#{@card}.pid -lf /var/lib/dhcp/dhclient.#{@card}.leases -I -df /var/lib/dhcp/dhclient6.#{@card}.leases #{@card}")
|
data/lib/amnesie/runner.rb
CHANGED
@@ -2,6 +2,7 @@ require_relative 'options'
|
|
2
2
|
require_relative 'mac'
|
3
3
|
require_relative 'process'
|
4
4
|
require_relative 'network'
|
5
|
+
require_relative 'persist'
|
5
6
|
|
6
7
|
module Amnesie
|
7
8
|
class Runner
|
@@ -10,6 +11,7 @@ module Amnesie
|
|
10
11
|
@options = Options.new(argv)
|
11
12
|
@network = false
|
12
13
|
end
|
14
|
+
|
13
15
|
def run
|
14
16
|
if @options.mac then
|
15
17
|
if not @network
|
@@ -26,6 +28,21 @@ module Amnesie
|
|
26
28
|
puts card.to_s
|
27
29
|
process.restart
|
28
30
|
end
|
31
|
+
if @options.persist then
|
32
|
+
if not @network
|
33
|
+
@network = Amnesie::Network.new(@options.netcard)
|
34
|
+
end
|
35
|
+
puts @network.card
|
36
|
+
persist = Amnesie::Persist.new(@network.card)
|
37
|
+
if ! persist.mac_exist?
|
38
|
+
puts "Create service..."
|
39
|
+
persist.services
|
40
|
+
elsif persist.mac_exist?
|
41
|
+
persist.update_mac
|
42
|
+
end
|
43
|
+
persist.menu_mac
|
44
|
+
puts persist.to_s
|
45
|
+
end
|
29
46
|
end
|
30
47
|
end
|
31
48
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: amnesie
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.5
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- szorfein
|
@@ -35,7 +35,7 @@ cert_chain:
|
|
35
35
|
J/zT/q2Ac7BWpSLbv6p9lChBiEnD9j24x463LR5QQjDNS5SsjzRQfFuprsa9Nqf2
|
36
36
|
Tw==
|
37
37
|
-----END CERTIFICATE-----
|
38
|
-
date: 2020-05-
|
38
|
+
date: 2020-05-19 00:00:00.000000000 Z
|
39
39
|
dependencies:
|
40
40
|
- !ruby/object:Gem::Dependency
|
41
41
|
name: rake
|
@@ -136,6 +136,7 @@ files:
|
|
136
136
|
- lib/amnesie/mac.rb
|
137
137
|
- lib/amnesie/network.rb
|
138
138
|
- lib/amnesie/options.rb
|
139
|
+
- lib/amnesie/persist.rb
|
139
140
|
- lib/amnesie/process.rb
|
140
141
|
- lib/amnesie/runner.rb
|
141
142
|
- test/test_mac.rb
|
metadata.gz.sig
CHANGED
Binary file
|