blockhosts 0.2.1 → 0.3.0

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: e4f35e5c7b868eefb3b5b184ab01f5883d86adc44dc519f2065eb7e19cebee1c
4
- data.tar.gz: 1ab911b3b884e473b763974267b445a780e0d6794678fadfd8fd83c05a2b91c8
3
+ metadata.gz: 3f05c99989ffd139291184309fcfd62a38087c6589dce286ecd888ad3c631daf
4
+ data.tar.gz: 83f046385ec592077b82d586978430de8c3e4893f3010eefbe2f69295b933696
5
5
  SHA512:
6
- metadata.gz: 25edfcc06f3cebac99ed20789509cbbf5baeb6f9a2ef96a69e4de18f7da242cb8faa4007bbcd8485787ad68d03fdecd972a3cd037c64d89144113b37cd89cd43
7
- data.tar.gz: 75e99d4c0899430c8a7f04a4a8cecebcd97f1ad38f79fbf7e450033c93ed40d1bdc59b50dfb309879a0c08e0fd697afaff5eadbf74ef31420ccc2e1ad176bad7
6
+ metadata.gz: 79bfc2e31f79338a71c3fb2a28216c8f0840b3ff8a7a8187bb9b111ab7a8bac8413f6971dd7b0a255dda035d088f79eddfbb502ce34765e09927f3065dd16673
7
+ data.tar.gz: 841a89102afbdce169b4f255a593a0d6b4fbbe1fd192b9e6b9dd1faf7af205d094eb6c782ef72f290b5f5aae948b4701eaf666a0c32dd7d8d0ec620a4010d755
Binary file
data.tar.gz.sig CHANGED
Binary file
@@ -2,10 +2,12 @@
2
2
 
3
3
  # file: blockhosts.rb
4
4
 
5
+ require 'sps-sub'
5
6
  require 'rxfhelper'
6
7
 
7
8
 
8
9
  class Host
10
+ include RXFHelperModule
9
11
 
10
12
  @ip = '127.0.0.1'
11
13
 
@@ -16,17 +18,21 @@ class Host
16
18
  '/etc/hosts'
17
19
  end
18
20
 
19
- def self.add(hostname, banlist=nil,
20
- hashtag=hostname.sub(/^www./,'').gsub('-','').gsub('.','dot'))
21
+ def self.add(hostname,
22
+ hashtag=hostname.sub(/^www./,'').gsub('-','').gsub('.','dot'),
23
+ banlist: nil, block: false)
21
24
 
25
+ b = block ? '' : '#'
26
+
22
27
  s = if banlist then
23
28
 
24
29
  hashtag = hostname.sub(/^#/,'')
25
30
  list, _ = RXFHelper.read(banlist)
26
- list.lines.map {|hostx| "##{@ip} #{hostx.chomp} ##{hashtag}" }.join("\n")
31
+ list.lines.map {|hostx| "#{b}#{@ip} #{hostx.chomp} ##{hashtag}" }\
32
+ .join("\n")
27
33
 
28
34
  else
29
- "##{@ip} #{hostname} ##{hashtag}"
35
+ "#{b}#{@ip} #{hostname} ##{hashtag}"
30
36
  end
31
37
 
32
38
  open(@file, 'a') { |f| f.puts s } unless File.read(@file).include? hostname
@@ -35,7 +41,7 @@ class Host
35
41
  def self.disable(hashtag)
36
42
 
37
43
  modify() do |line|
38
- line.gsub(/^#([^#]+##{hashtag.sub(/^#/,'')}[^$]+$)/,'\1')
44
+ line.gsub(/^#([^#]+##{hashtag.sub(/^#/,'')}[^$]+)/,'\1')
39
45
  end
40
46
 
41
47
  end
@@ -54,6 +60,19 @@ class Host
54
60
 
55
61
  end
56
62
 
63
+ def self.exists?(host)
64
+ s = File.read(@file)
65
+ s.lines.grep(/\s#{host}\s/).any?
66
+ end
67
+
68
+ def self.export(hashtag, filename=nil)
69
+
70
+ s = self.view(hashtag)
71
+
72
+ filename ? FileX.write(filename, s) : s
73
+
74
+ end
75
+
57
76
  def self.block(hashtag) self.disable(hashtag) end
58
77
  def self.unblock(hashtag) self.enable(hashtag) end
59
78
 
@@ -73,4 +92,56 @@ class Host
73
92
 
74
93
  end
75
94
 
95
+ def self.view(hashtag)
96
+
97
+ File.read(@file).lines.select {|x| x =~ /##{hashtag}/}\
98
+ .map {|x| x[/(?<=#{@ip} )[^ ]+/]}.join("\n")
99
+
100
+ end
101
+
102
+ end
103
+
104
+ class HostsE
105
+ include RXFHelperModule
106
+
107
+ def initialize(filename='hostse.txt', sps_host: '127.0.0.1',
108
+ sps_port: '59053', hostname: Socket.gethostname,
109
+ topic: 'dnslookup/' + hostname, debug: false)
110
+
111
+ @sps_host, @sps_port, @topic, @debug = sps_host, sps_port, topic, debug
112
+ @filename = filename
113
+ @entries = FileX.read(filename).lines
114
+
115
+ end
116
+
117
+ def subscribe(topic=@topic)
118
+
119
+ sps = SPSSub.new(host: @sps_host, port: @sps_port)
120
+
121
+ sps.subscribe(topic: topic + ' or reload' ) do |host, topic|
122
+
123
+ if topic == 'reload' then
124
+ @entries = FileX.read(@filename).lines
125
+ puts 'reloaded ' if @debug
126
+ next
127
+ end
128
+
129
+ puts 'host: ' + host.inspect if @debug
130
+
131
+ @entries.each do |line|
132
+
133
+ pattern, hashtag = line.split(/\s+#/)
134
+ puts 'pattern: ' + pattern.inspect if @debug
135
+
136
+ if host =~ /#{pattern.gsub('*','.*')}/ then
137
+ puts 'adding host' if @debug
138
+ Host.add(host, hashtag, block: true) unless Host.exists? host
139
+
140
+ end
141
+ end
142
+
143
+ end
144
+
145
+ end
146
+
76
147
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: blockhosts
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.1
4
+ version: 0.3.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - James Robertson
@@ -35,7 +35,7 @@ cert_chain:
35
35
  7vecf9qfrpZt4fjOajWBWWZEUQ3QKHva1uNegE75UqN77YfewLL+A+SrV0ORhL9q
36
36
  /sJ0X03RC0pDp5fyhHmUoTyT
37
37
  -----END CERTIFICATE-----
38
- date: 2018-10-21 00:00:00.000000000 Z
38
+ date: 2018-10-23 00:00:00.000000000 Z
39
39
  dependencies:
40
40
  - !ruby/object:Gem::Dependency
41
41
  name: rxfhelper
@@ -57,6 +57,26 @@ dependencies:
57
57
  - - ">="
58
58
  - !ruby/object:Gem::Version
59
59
  version: 0.9.1
60
+ - !ruby/object:Gem::Dependency
61
+ name: sps-sub
62
+ requirement: !ruby/object:Gem::Requirement
63
+ requirements:
64
+ - - "~>"
65
+ - !ruby/object:Gem::Version
66
+ version: '0.3'
67
+ - - ">="
68
+ - !ruby/object:Gem::Version
69
+ version: 0.3.7
70
+ type: :runtime
71
+ prerelease: false
72
+ version_requirements: !ruby/object:Gem::Requirement
73
+ requirements:
74
+ - - "~>"
75
+ - !ruby/object:Gem::Version
76
+ version: '0.3'
77
+ - - ">="
78
+ - !ruby/object:Gem::Version
79
+ version: 0.3.7
60
80
  description:
61
81
  email: james@jamesrobertson.eu
62
82
  executables: []
metadata.gz.sig CHANGED
Binary file