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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 81455c8939114e8211b6c21844ad35e88d0422c29be33d36cafff2ea5210bfa6
4
- data.tar.gz: 6dcc45de41fbfbf84b3e6f4a0af45fe139af8296ce5a444ecc3e4d5997baf243
3
+ metadata.gz: 233d7f8f3157dd7508337cdcf3400768b4d68e16abd1f186a30cc9cec94fe5d7
4
+ data.tar.gz: fa77a1ad923ced06d8a0eac3d5039690a87f73dfb5b8450702696f84380553ae
5
5
  SHA512:
6
- metadata.gz: bc53a51bed717b6e931d35d0a1e19ba45c8b6ee250a811ed08e5956e6f64c419167112e1329f32019b0fa0204e0b98fc8ebb9d16f368923b959d45504769591c
7
- data.tar.gz: 4a78f282cc125ce8dd2e7248ebfa9b3126dcff206a257a04157f7d01582728944fcdf0da62638dc16e079e700055b657bad0c043eef3d175e887d610552db288
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
- t.libs << "test"
6
- t.libs << "lib"
7
- t.test_files = FileList["test/test_*.rb"]
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
@@ -1,6 +1,6 @@
1
1
  Gem::Specification.new do |s|
2
2
  s.name = "amnesie"
3
- s.version = "0.0.4"
3
+ s.version = "0.0.5"
4
4
  s.summary = "A tool to make your computer amnesic"
5
5
  s.description = <<-EOF
6
6
  A tool to make your computer amnesic"
@@ -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
@@ -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: ['/bin, /sbin'])
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: ['/bin, /sbin'])
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}")
@@ -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
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-15 00:00:00.000000000 Z
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