sheepsafe 0.2.4 → 0.2.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.
- data/History.txt +15 -0
- data/lib/sheepsafe/config.rb +3 -3
- data/lib/sheepsafe/controller.rb +5 -4
- data/lib/sheepsafe/installer.rb +5 -1
- data/lib/sheepsafe/network.rb +12 -0
- data/lib/sheepsafe.rb +1 -1
- data/sheepsafe.gemspec +2 -2
- data/spec/sheepsafe_spec.rb +32 -4
- metadata +4 -4
data/History.txt
CHANGED
@@ -1,3 +1,18 @@
|
|
1
|
+
=== 0.2.5
|
2
|
+
|
3
|
+
- Wait a bit before starting proxy when switching networks
|
4
|
+
- Allow specification of port for ssh (thanks Kevin Ball)
|
5
|
+
- Add wifi blacklist (thanks Tim Felgentreff)
|
6
|
+
- Add ability to trust encrypted wifi networks (thanks Tim Felgentreff)
|
7
|
+
|
8
|
+
=== 0.2.4
|
9
|
+
|
10
|
+
- Ensure the ~/Library/LaunchAgents directory exists
|
11
|
+
- Docs and `sheepsafe proxy kick`
|
12
|
+
- sheepsafe list|add commands (thanks Ted Nielsen)
|
13
|
+
- Use connection response from http://example.com as indication that
|
14
|
+
we're past a paywall wifi network (idea thanks to Adam Keys)
|
15
|
+
|
1
16
|
=== 0.2.3
|
2
17
|
|
3
18
|
- Recycle the proxy server on every launch when on the Untrusted
|
data/lib/sheepsafe/config.rb
CHANGED
@@ -3,9 +3,9 @@ require 'yaml'
|
|
3
3
|
module Sheepsafe
|
4
4
|
class Config
|
5
5
|
FILE = File.expand_path('~/.sheepsafe.yml')
|
6
|
-
DEFAULT_CONFIG = {"untrusted_location" => "Untrusted", "socks_port" => "9999"}
|
7
|
-
ATTRS = %w(trusted_location untrusted_location last_network ssh_host socks_port)
|
8
|
-
ARRAY_ATTRS = %w(trusted_names)
|
6
|
+
DEFAULT_CONFIG = {"untrusted_location" => "Untrusted", "socks_port" => "9999", "trust_encrypted?" => "false"}
|
7
|
+
ATTRS = %w(trusted_location untrusted_location last_network ssh_host ssh_port socks_port trust_encrypted?)
|
8
|
+
ARRAY_ATTRS = %w(trusted_names untrusted_names)
|
9
9
|
|
10
10
|
def self.load_config
|
11
11
|
YAML.load_file(FILE)
|
data/lib/sheepsafe/controller.rb
CHANGED
@@ -47,7 +47,7 @@ module Sheepsafe
|
|
47
47
|
end
|
48
48
|
@config.last_network = @network
|
49
49
|
@config.write
|
50
|
-
elsif !@network.
|
50
|
+
elsif !@network.trustworthy?
|
51
51
|
# recycle the proxy server on network changes
|
52
52
|
bring_socks_proxy 'restart'
|
53
53
|
end
|
@@ -66,11 +66,11 @@ module Sheepsafe
|
|
66
66
|
end
|
67
67
|
|
68
68
|
def switch_to_trusted?
|
69
|
-
@network.
|
69
|
+
@network.trustworthy?
|
70
70
|
end
|
71
71
|
|
72
72
|
def switch_to_untrusted?
|
73
|
-
!@network.
|
73
|
+
!@network.trustworthy?
|
74
74
|
end
|
75
75
|
|
76
76
|
def bring_socks_proxy(direction)
|
@@ -87,9 +87,10 @@ module Sheepsafe
|
|
87
87
|
Process.kill("TERM", pid)
|
88
88
|
exit 0
|
89
89
|
end
|
90
|
+
sleep 2 # wait a bit before starting proxy
|
90
91
|
loop do
|
91
92
|
pid = fork do
|
92
|
-
exec("ssh -ND #{@config.socks_port} #{@config.ssh_host}")
|
93
|
+
exec("ssh -p #{@config.ssh_port } -ND #{@config.socks_port} #{@config.ssh_host}")
|
93
94
|
end
|
94
95
|
Process.waitpid(pid)
|
95
96
|
sleep 1
|
data/lib/sheepsafe/installer.rb
CHANGED
@@ -38,8 +38,12 @@ MSG
|
|
38
38
|
q.default = config.ssh_host
|
39
39
|
end
|
40
40
|
|
41
|
+
config.ssh_port = ask "SSH Port >\n" do |q|
|
42
|
+
q.default = config.ssh_port || 22
|
43
|
+
end
|
44
|
+
|
41
45
|
say "Testing connectivitity to #{config.ssh_host}..."
|
42
|
-
system "ssh #{config.ssh_host} true"
|
46
|
+
system "ssh -p #{config.ssh_port} #{config.ssh_host} true"
|
43
47
|
unless $?.success?
|
44
48
|
abort "Sorry! that ssh host was no good."
|
45
49
|
end
|
data/lib/sheepsafe/network.rb
CHANGED
@@ -8,10 +8,22 @@ module Sheepsafe
|
|
8
8
|
@config = config || Sheepsafe::Config.new({})
|
9
9
|
end
|
10
10
|
|
11
|
+
def trustworthy?
|
12
|
+
!untrusted? && (encrypted? && @config.trust_encrypted? || trusted?)
|
13
|
+
end
|
14
|
+
|
11
15
|
def trusted?
|
12
16
|
@config.trusted_names.include?(ssid) || @config.trusted_names.include?(bssid)
|
13
17
|
end
|
14
18
|
|
19
|
+
def untrusted?
|
20
|
+
@config.untrusted_names.include?(ssid) || @config.untrusted_names.include?(bssid)
|
21
|
+
end
|
22
|
+
|
23
|
+
def encrypted?
|
24
|
+
!(@data["802.11 auth"] == "open" or @data["link auth"] == "open")
|
25
|
+
end
|
26
|
+
|
15
27
|
def up?
|
16
28
|
@data['AirPort'] != false
|
17
29
|
end
|
data/lib/sheepsafe.rb
CHANGED
data/sheepsafe.gemspec
CHANGED
data/spec/sheepsafe_spec.rb
CHANGED
@@ -33,14 +33,14 @@ describe Sheepsafe::Controller do
|
|
33
33
|
|
34
34
|
context "#switch_to_trusted?" do
|
35
35
|
it "is when the current network is trusted" do
|
36
|
-
network.stub :
|
36
|
+
network.stub :trustworthy? => true
|
37
37
|
controller.switch_to_trusted?.should be_true
|
38
38
|
end
|
39
39
|
end
|
40
40
|
|
41
41
|
context "#switch_to_untrusted?" do
|
42
42
|
it "is when the current network is trusted" do
|
43
|
-
network.stub :
|
43
|
+
network.stub :trustworthy? => false
|
44
44
|
controller.switch_to_untrusted?.should be_true
|
45
45
|
end
|
46
46
|
end
|
@@ -51,13 +51,13 @@ describe Sheepsafe::Controller do
|
|
51
51
|
end
|
52
52
|
|
53
53
|
it "does not touch config" do
|
54
|
-
network.stub :
|
54
|
+
network.stub :trustworthy? => true
|
55
55
|
config.should_not_receive(:write)
|
56
56
|
controller.run
|
57
57
|
end
|
58
58
|
|
59
59
|
it "recycles the proxy server process when on the untrusted network" do
|
60
|
-
network.stub :
|
60
|
+
network.stub :trustworthy? => false
|
61
61
|
controller.should_receive(:bring_socks_proxy).with('restart')
|
62
62
|
controller.run
|
63
63
|
end
|
@@ -121,6 +121,34 @@ describe Sheepsafe::Network do
|
|
121
121
|
it { should be_trusted }
|
122
122
|
end
|
123
123
|
|
124
|
+
context "with untrusted SSID" do
|
125
|
+
let(:config) { Sheepsafe::Config.new({"untrusted_names" => [current_network.ssid]}) }
|
126
|
+
subject { Sheepsafe::Network.new(config) }
|
127
|
+
|
128
|
+
it { should_not be_trusted }
|
129
|
+
end
|
130
|
+
|
131
|
+
context "with untrusted BSSID" do
|
132
|
+
let(:config) { Sheepsafe::Config.new({"untrusted_names" => [current_network.bssid]}) }
|
133
|
+
subject { Sheepsafe::Network.new(config) }
|
134
|
+
|
135
|
+
it { should_not be_trusted }
|
136
|
+
end
|
137
|
+
|
138
|
+
context "with trusted encryption" do
|
139
|
+
let(:config) { Sheepsafe::Config.new({"trust_encrypted?" => true}) }
|
140
|
+
subject { Sheepsafe::Network.new(config) }
|
141
|
+
|
142
|
+
it { should be_trusted if subject.encrypted? }
|
143
|
+
end
|
144
|
+
|
145
|
+
context "with untrusted encryption" do
|
146
|
+
let(:config) { Sheepsafe::Config.new({"trust_encrypted?" => false}) }
|
147
|
+
subject { Sheepsafe::Network.new(config) }
|
148
|
+
|
149
|
+
it { should_not be_trusted }
|
150
|
+
end
|
151
|
+
|
124
152
|
context "with no trusted names" do
|
125
153
|
subject { Sheepsafe::Network.new }
|
126
154
|
|
metadata
CHANGED
@@ -1,13 +1,13 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: sheepsafe
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
hash:
|
4
|
+
hash: 29
|
5
5
|
prerelease: false
|
6
6
|
segments:
|
7
7
|
- 0
|
8
8
|
- 2
|
9
|
-
-
|
10
|
-
version: 0.2.
|
9
|
+
- 5
|
10
|
+
version: 0.2.5
|
11
11
|
platform: ruby
|
12
12
|
authors:
|
13
13
|
- Nick Sieger
|
@@ -15,7 +15,7 @@ autorequire:
|
|
15
15
|
bindir: bin
|
16
16
|
cert_chain: []
|
17
17
|
|
18
|
-
date: 2010-11-
|
18
|
+
date: 2010-11-19 00:00:00 -06:00
|
19
19
|
default_executable: sheepsafe
|
20
20
|
dependencies:
|
21
21
|
- !ruby/object:Gem::Dependency
|