Class: Pickynode
- Inherits:
-
Object
- Object
- Pickynode
- Defined in:
- lib/pickynode.rb
Overview
Allows you to easily add/ban/connect/disconnect nodes based on User Agent.
Constant Summary collapse
- VERSION =
'0.1.4'
Instance Method Summary collapse
- #add(filter, limit = nil) ⇒ Object
- #ban(filter) ⇒ Object
- #clear_cache ⇒ Object
- #connect(filter, limit = nil) ⇒ Object
- #disconnect(filter) ⇒ Object
- #display ⇒ Object
- #info ⇒ Object
-
#initialize(opts = {}) ⇒ Pickynode
constructor
A new instance of Pickynode.
- #run ⇒ Object
Constructor Details
#initialize(opts = {}) ⇒ Pickynode
Returns a new instance of Pickynode.
14 15 16 |
# File 'lib/pickynode.rb', line 14 def initialize(opts = {}) @opts = opts end |
Instance Method Details
#add(filter, limit = nil) ⇒ Object
18 19 20 21 22 23 24 25 26 27 28 29 |
# File 'lib/pickynode.rb', line 18 def add(filter, limit = nil) return unless filter validate_limit(limit) count = 0 bitnode_addr_types.select { |_, v| v.include?(filter) }.each do |k, _| run_cmd(%(bitcoin-cli addnode "#{k}" "add")) count += 1 break if limit == count end end |
#ban(filter) ⇒ Object
31 32 33 34 35 36 37 38 39 |
# File 'lib/pickynode.rb', line 31 def ban(filter) return unless filter addr_types.each do |k, v| if v.include?(filter) u = URI.parse("https://#{k}") run_cmd(%(bitcoin-cli setban "#{u.host}" "add")) end end end |
#clear_cache ⇒ Object
79 80 81 82 |
# File 'lib/pickynode.rb', line 79 def clear_cache @addr_types = nil @bitnode_addr_types = nil end |
#connect(filter, limit = nil) ⇒ Object
41 42 43 44 45 46 47 48 49 50 51 52 |
# File 'lib/pickynode.rb', line 41 def connect(filter, limit = nil) return unless filter validate_limit(limit) count = 0 bitnode_addr_types.select { |_, v| v.include?(filter) }.each do |k, _| run_cmd(%(bitcoin-cli addnode "#{k}" "onetry")) count += 1 break if limit == count end end |
#disconnect(filter) ⇒ Object
54 55 56 57 58 59 |
# File 'lib/pickynode.rb', line 54 def disconnect(filter) return unless filter addr_types.each do |k, v| run_cmd(%(bitcoin-cli disconnectnode "#{k}")) if v.include?(filter) end end |
#display ⇒ Object
61 62 63 |
# File 'lib/pickynode.rb', line 61 def display ap addr_types end |
#info ⇒ Object
65 66 67 |
# File 'lib/pickynode.rb', line 65 def info ap getinfo end |
#run ⇒ Object
69 70 71 72 73 74 75 76 77 |
# File 'lib/pickynode.rb', line 69 def run add(@opts[:add], @opts[:limit]) connect(@opts[:connect], @opts[:limit]) ban(@opts[:ban]) disconnect(@opts[:disconnect]) display_info end |