amnesie 0.0.4 → 0.0.5

Sign up to get free protection for your applications and to get access to all the features.
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