titech-pubnet-auth 1.1.1 → 1.2.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 +7 -0
- data/README.md +1 -0
- data/bin/titech-pubnet-auth +5 -9
- data/lib/titech_pubnet_auth.rb +17 -14
- data/lib/titech_pubnet_auth/bin_routines.rb +2 -2
- data/lib/titech_pubnet_auth/version.rb +1 -1
- data/titech_pubnet_auth.gemspec +1 -1
- metadata +12 -20
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: 8e611fb6cd90163e6460a3f576118d9b3d479bba
|
4
|
+
data.tar.gz: 686255d23b172c56253798ed5ad15cb362ce5591
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: 1e27367ad4f8a43b46e16366812962daadba3f811b01631023fd9d311da27ccc194bd104fa35ae3e0a59a37b41b8d5835dda0e2685ae2506a927f425e4788dab
|
7
|
+
data.tar.gz: 90fc94968d4aa64d993828be20f8c63ab5bfe25eaddf3fd2ad2c178854b26d6b044604cf8618faca4979af06b563771ef171a98027b50ff55571bc6e973a4dac
|
data/README.md
CHANGED
data/bin/titech-pubnet-auth
CHANGED
@@ -7,7 +7,7 @@ require 'optparse'
|
|
7
7
|
|
8
8
|
opt = OptionParser.new
|
9
9
|
|
10
|
-
interval =
|
10
|
+
interval = 3
|
11
11
|
opt.on('-i','--interval=SECONDS',"Specify the polling interval.[#{interval}]"){|v|
|
12
12
|
interval = v.to_i
|
13
13
|
}
|
@@ -45,7 +45,7 @@ if configure
|
|
45
45
|
'username' => username,
|
46
46
|
'password' => password
|
47
47
|
}
|
48
|
-
|
48
|
+
File::open(File.expand_path('../config/private.yml', File.dirname(__FILE__)),'w'){|f|
|
49
49
|
f << conf.to_yaml
|
50
50
|
}
|
51
51
|
puts 'configured!'
|
@@ -61,15 +61,13 @@ end
|
|
61
61
|
include TitechPubnetAuth::BinRoutines
|
62
62
|
|
63
63
|
pubnet_auth = TitechPubnetAuth.new
|
64
|
-
retry_count = 0
|
65
64
|
loop do |t|
|
66
65
|
begin
|
67
66
|
if mputs 'network_available?', pubnet_auth.network_available?
|
68
67
|
if not mputs 'is_connected?', pubnet_auth.is_connected?
|
69
68
|
if mputs 'auth', pubnet_auth.auth
|
70
69
|
notifier
|
71
|
-
|
72
|
-
pubnet_auth = TitechPubnetAuth.new(open_timeout: 3)
|
70
|
+
pubnet_auth = TitechPubnetAuth.new(open_timeout: 5)
|
73
71
|
end
|
74
72
|
end
|
75
73
|
end
|
@@ -82,11 +80,9 @@ loop do |t|
|
|
82
80
|
error_notifier(e) if debug
|
83
81
|
|
84
82
|
pubnet_auth = TitechPubnetAuth.new(open_timeout: 10)
|
85
|
-
retry_count += 1
|
86
83
|
ensure
|
87
|
-
print "\n"
|
88
|
-
|
89
|
-
sleep interval unless retry_count == 1
|
84
|
+
print "\n"; $stdout.flush
|
85
|
+
sleep interval
|
90
86
|
end
|
91
87
|
break if single
|
92
88
|
end
|
data/lib/titech_pubnet_auth.rb
CHANGED
@@ -4,33 +4,30 @@ require 'mechanize'
|
|
4
4
|
require 'uri'
|
5
5
|
require 'yaml'
|
6
6
|
|
7
|
-
$:.unshift File.dirname(__FILE__)
|
7
|
+
$:.unshift(__dir__ || File.dirname(__FILE__))
|
8
8
|
require 'titech_pubnet_auth/bin_routines'
|
9
9
|
require 'titech_pubnet_auth/extensions'
|
10
10
|
|
11
11
|
|
12
12
|
class TitechPubnetAuth
|
13
|
-
|
14
|
-
|
15
|
-
SAMPLE_URI = ->{%w[www.google.com twitter.com www.facebook.com mixi.jp www.amazon.co.jp www.wikipedia.org www.fc2.com www.yahoo.co.jp www.kakaku.com].map{|uri| URI.parse("http://#{uri}")}[rand(3)]}
|
16
|
-
|
13
|
+
SAMPLE_URI = URI "http://example.org"
|
17
14
|
HTTP_PROXY = {ip: '131.112.125.238', port: 3128}
|
18
15
|
|
19
|
-
def initialize(opt = {open_timeout:
|
16
|
+
def initialize(opt = {open_timeout: 5})
|
20
17
|
@agent, @agent_with_proxy = Mechanize.new, Mechanize.new
|
21
|
-
[@agent
|
18
|
+
[@agent, @agent_with_proxy].each{|agent|
|
22
19
|
agent.follow_meta_refresh = true
|
23
20
|
agent.open_timeout = opt[:open_timeout]
|
24
21
|
}
|
25
22
|
@agent_with_proxy.set_proxy(HTTP_PROXY[:ip], HTTP_PROXY[:port])
|
26
23
|
|
27
|
-
@private = YAML.
|
24
|
+
@private = YAML.load_file((__dir__ || File.dirname(__FILE__)) + '/../config/private.yml')
|
28
25
|
end
|
29
26
|
|
30
27
|
#
|
31
28
|
# called if network_available? and not is_connected?
|
32
29
|
#
|
33
|
-
def auth(sample_uri = SAMPLE_URI
|
30
|
+
def auth(sample_uri = SAMPLE_URI)
|
34
31
|
auth_page = @agent.get(sample_uri)
|
35
32
|
return false if auth_page.uri.hostname != 'wlanauth.noc.titech.ac.jp'
|
36
33
|
|
@@ -43,23 +40,29 @@ class TitechPubnetAuth
|
|
43
40
|
|
44
41
|
return is_connected?
|
45
42
|
end
|
46
|
-
|
43
|
+
|
47
44
|
#
|
48
45
|
# called if network_available?
|
49
46
|
#
|
50
|
-
def is_connected?(sample_uri = SAMPLE_URI
|
51
|
-
@agent_with_proxy.get(sample_uri).uri
|
47
|
+
def is_connected?(sample_uri = SAMPLE_URI)
|
48
|
+
compare_uri_by_first_part sample_uri, @agent_with_proxy.get(sample_uri).uri
|
52
49
|
rescue # retry without the proxy
|
53
|
-
@agent.get(sample_uri).uri
|
50
|
+
compare_uri_by_first_part sample_uri, @agent.get(sample_uri).uri
|
54
51
|
end
|
55
52
|
|
56
53
|
#
|
57
54
|
# note: titech-pubnet allows to access portal.titech.ac.jp without authentication.
|
58
55
|
#
|
59
|
-
def network_available?(sample_uri = SAMPLE_URI
|
56
|
+
def network_available?(sample_uri = SAMPLE_URI)
|
60
57
|
@agent.get('http://portal.titech.ac.jp').to_b
|
61
58
|
rescue # check another website just to make sure
|
62
59
|
@agent.get(sample_uri).to_b rescue return false
|
63
60
|
end
|
64
61
|
|
62
|
+
private
|
63
|
+
|
64
|
+
def compare_uri_by_first_part uri1, uri2
|
65
|
+
uri1.hostname.split(".").first == uri2.hostname.split(".").first
|
66
|
+
end
|
67
|
+
|
65
68
|
end
|
@@ -8,11 +8,11 @@ class TitechPubnetAuth
|
|
8
8
|
require 'terminal-notifier'
|
9
9
|
|
10
10
|
def notifier
|
11
|
-
TerminalNotifier.notify(nil,:title => 'Titech
|
11
|
+
TerminalNotifier.notify(nil,:title => 'Titech Pubnet Auth', :subtitle => 'Connected!')
|
12
12
|
end
|
13
13
|
|
14
14
|
def error_notifier(e)
|
15
|
-
TerminalNotifier.notify(e.inspect,:title => 'Titech
|
15
|
+
TerminalNotifier.notify(e.inspect,:title => 'Titech Pubnet Auth',:subtitle => 'Caught an unexpected error!')
|
16
16
|
end
|
17
17
|
|
18
18
|
else
|
data/titech_pubnet_auth.gemspec
CHANGED
@@ -18,7 +18,7 @@ Gem::Specification.new do |gem|
|
|
18
18
|
gem.version = TitechPubnetAuth::VERSION
|
19
19
|
|
20
20
|
gem.add_dependency 'colorize'
|
21
|
-
gem.add_dependency 'mechanize', '~> 2.
|
21
|
+
gem.add_dependency 'mechanize', '~> 2.7'
|
22
22
|
gem.add_dependency 'terminal-notifier', '~> 1.4'
|
23
23
|
|
24
24
|
end
|
metadata
CHANGED
@@ -1,52 +1,46 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: titech-pubnet-auth
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.
|
5
|
-
prerelease:
|
4
|
+
version: 1.2.0
|
6
5
|
platform: ruby
|
7
6
|
authors:
|
8
7
|
- Sohei Takeno
|
9
8
|
autorequire:
|
10
9
|
bindir: bin
|
11
10
|
cert_chain: []
|
12
|
-
date: 2013-
|
11
|
+
date: 2013-07-28 00:00:00.000000000 Z
|
13
12
|
dependencies:
|
14
13
|
- !ruby/object:Gem::Dependency
|
15
14
|
name: colorize
|
16
15
|
requirement: !ruby/object:Gem::Requirement
|
17
|
-
none: false
|
18
16
|
requirements:
|
19
|
-
- -
|
17
|
+
- - '>='
|
20
18
|
- !ruby/object:Gem::Version
|
21
19
|
version: '0'
|
22
20
|
type: :runtime
|
23
21
|
prerelease: false
|
24
22
|
version_requirements: !ruby/object:Gem::Requirement
|
25
|
-
none: false
|
26
23
|
requirements:
|
27
|
-
- -
|
24
|
+
- - '>='
|
28
25
|
- !ruby/object:Gem::Version
|
29
26
|
version: '0'
|
30
27
|
- !ruby/object:Gem::Dependency
|
31
28
|
name: mechanize
|
32
29
|
requirement: !ruby/object:Gem::Requirement
|
33
|
-
none: false
|
34
30
|
requirements:
|
35
31
|
- - ~>
|
36
32
|
- !ruby/object:Gem::Version
|
37
|
-
version: '2.
|
33
|
+
version: '2.7'
|
38
34
|
type: :runtime
|
39
35
|
prerelease: false
|
40
36
|
version_requirements: !ruby/object:Gem::Requirement
|
41
|
-
none: false
|
42
37
|
requirements:
|
43
38
|
- - ~>
|
44
39
|
- !ruby/object:Gem::Version
|
45
|
-
version: '2.
|
40
|
+
version: '2.7'
|
46
41
|
- !ruby/object:Gem::Dependency
|
47
42
|
name: terminal-notifier
|
48
43
|
requirement: !ruby/object:Gem::Requirement
|
49
|
-
none: false
|
50
44
|
requirements:
|
51
45
|
- - ~>
|
52
46
|
- !ruby/object:Gem::Version
|
@@ -54,7 +48,6 @@ dependencies:
|
|
54
48
|
type: :runtime
|
55
49
|
prerelease: false
|
56
50
|
version_requirements: !ruby/object:Gem::Requirement
|
57
|
-
none: false
|
58
51
|
requirements:
|
59
52
|
- - ~>
|
60
53
|
- !ruby/object:Gem::Version
|
@@ -68,10 +61,10 @@ executables:
|
|
68
61
|
extensions: []
|
69
62
|
extra_rdoc_files: []
|
70
63
|
files:
|
64
|
+
- lib/titech_pubnet_auth.rb
|
71
65
|
- lib/titech_pubnet_auth/bin_routines.rb
|
72
66
|
- lib/titech_pubnet_auth/extensions.rb
|
73
67
|
- lib/titech_pubnet_auth/version.rb
|
74
|
-
- lib/titech_pubnet_auth.rb
|
75
68
|
- bin/titech-pubnet-auth
|
76
69
|
- bin/titech-pubnet-auth-daemon
|
77
70
|
- config/private.yml.example
|
@@ -81,27 +74,26 @@ files:
|
|
81
74
|
- titech_pubnet_auth.gemspec
|
82
75
|
homepage: http://for-titech.herokuapp.com
|
83
76
|
licenses: []
|
77
|
+
metadata: {}
|
84
78
|
post_install_message:
|
85
79
|
rdoc_options: []
|
86
80
|
require_paths:
|
87
81
|
- lib
|
88
82
|
required_ruby_version: !ruby/object:Gem::Requirement
|
89
|
-
none: false
|
90
83
|
requirements:
|
91
|
-
- -
|
84
|
+
- - '>='
|
92
85
|
- !ruby/object:Gem::Version
|
93
86
|
version: '0'
|
94
87
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
95
|
-
none: false
|
96
88
|
requirements:
|
97
|
-
- -
|
89
|
+
- - '>='
|
98
90
|
- !ruby/object:Gem::Version
|
99
91
|
version: '0'
|
100
92
|
requirements: []
|
101
93
|
rubyforge_project:
|
102
|
-
rubygems_version:
|
94
|
+
rubygems_version: 2.0.3
|
103
95
|
signing_key:
|
104
|
-
specification_version:
|
96
|
+
specification_version: 4
|
105
97
|
summary: This gem provides automatic authentication for titech-pubnet.
|
106
98
|
test_files: []
|
107
99
|
has_rdoc:
|