hotspotlogin 0.1.0 → 0.1.1

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/README.rdoc CHANGED
@@ -18,16 +18,15 @@ Installation:
18
18
 
19
19
  On the command-line:
20
20
 
21
- $ hotspotlogin_ctl.rb start|stop|run -- [options]
21
+ $ hotspotlogin.rb [options]
22
22
 
23
- where ‘start’ and ‘stop’ have obvious meanings, while ‘run’ makes the daemon
24
- run in foreground. Daemons gem documentation for more info.
23
+ ==== Options
25
24
 
26
- Or directly
25
+ --daemon daemonize
27
26
 
28
- $ hotspotlogin.rb [options]
27
+ --log log file (ignored when no --daemon)
29
28
 
30
- ==== Options
29
+ --pid pid file (ignored when no --daemon)
31
30
 
32
31
  --port [default 4990]
33
32
 
@@ -42,6 +41,10 @@ Or directly
42
41
  --conf <FILE> YAML configuration file, see examples/
43
42
 
44
43
  See also chilli.conf(5) manual page.
44
+
45
+ ==== Unix Signals
46
+
47
+ USR1 sync/update log file (flush buffered I/O)
45
48
 
46
49
  == LICENSE:
47
50
 
data/bin/hotspotlogin.rb CHANGED
@@ -1,6 +1,7 @@
1
1
  #!/usr/bin/env ruby
2
2
 
3
- $0 = 'hotspotlogin.rb'
3
+ # Don'use this hack, since it breaks /proc/<pid>/cmdline
4
+ # $0 = 'hotspotlogin.rb'
4
5
 
5
6
  require 'rubygems'
6
7
  require 'sinatra/base'
@@ -15,7 +16,26 @@ require File.expand_path(
15
16
  File.dirname(file) + "/../lib/hotspotlogin"
16
17
  )
17
18
 
18
- HotSpotLogin.config!
19
-
20
- HotSpotLogin::App.run!
19
+ config = HotSpotLogin.config!
21
20
 
21
+ if config['daemon']
22
+ pid = fork do
23
+ if config['log']
24
+ STDOUT.reopen(config['log'], 'a')
25
+ STDERR.reopen(config['log'], 'a')
26
+ Signal.trap('USR1') do
27
+ STDOUT.flush
28
+ STDERR.flush
29
+ end
30
+ end
31
+ HotSpotLogin::App.run!
32
+ FileUtils.rm config['pid'] if config['pid'] and File.exists? config['pid']
33
+ end
34
+ if config['pid'] =~ /\S/
35
+ File.open config['pid'], 'w' do |f|
36
+ f.write pid
37
+ end
38
+ end
39
+ else
40
+ HotSpotLogin::App.run!
41
+ end
@@ -16,6 +16,8 @@ module HotSpotLogin
16
16
  set :port, HotSpotLogin.config['port']
17
17
  set :logging, HotSpotLogin.config['log-http']
18
18
 
19
+ #set :run, false
20
+
19
21
  include ERB::Util # for html_escape...
20
22
 
21
23
  result, titel, headline, bodytext = '', '', '', ''
@@ -9,7 +9,10 @@ module HotSpotLogin
9
9
 
10
10
  def self.config; @@config; end
11
11
 
12
- def self.config=(h); @@config = h; end
12
+ def self.config=(h)
13
+ @@config = h
14
+ config_sinatra!
15
+ end
13
16
 
14
17
  # Parses command line and configuration file
15
18
  def self.config!
@@ -25,6 +28,18 @@ module HotSpotLogin
25
28
 
26
29
  # Command line switches override configuration file.
27
30
 
31
+ opts.on('--daemon', 'become a daemon') do
32
+ @@config['daemon'] = true
33
+ end
34
+
35
+ opts.on('--log FILE', 'log file (overwrite existing)') do |filename|
36
+ @@config['log'] = filename
37
+ end
38
+
39
+ opts.on('--pid FILE', 'pid file') do |filename|
40
+ @@config['pid'] = filename
41
+ end
42
+
28
43
  opts.on('--uamsecret PASS', 'as in chilli.conf(5)') do |uamsecret|
29
44
  @@config['uamsecret'] = uamsecret
30
45
  end
@@ -47,11 +62,17 @@ module HotSpotLogin
47
62
 
48
63
  end.parse!
49
64
 
50
- # Now, set the Sinatra App
65
+ self.config_sinatra!
66
+
67
+ return @@config
68
+ end
69
+
70
+ private
71
+
72
+ def self.config_sinatra!
51
73
  App.set :host, @@config['listen-address']
52
74
  App.set :port, @@config['port']
53
75
  App.set :logging, @@config['log-http']
54
-
55
76
  end
56
-
77
+
57
78
  end
@@ -1,6 +1,6 @@
1
1
  module HotSpotLogin
2
2
 
3
- VERSION = '0.1.0'
3
+ VERSION = '0.1.1'
4
4
 
5
5
  DEFAULT_CONFIG = {
6
6
  'listen-address' => '0.0.0.0',
metadata CHANGED
@@ -5,8 +5,8 @@ version: !ruby/object:Gem::Version
5
5
  segments:
6
6
  - 0
7
7
  - 1
8
- - 0
9
- version: 0.1.0
8
+ - 1
9
+ version: 0.1.1
10
10
  platform: ruby
11
11
  authors:
12
12
  - Guido De Rosa
@@ -29,23 +29,10 @@ dependencies:
29
29
  version: "0"
30
30
  type: :runtime
31
31
  version_requirements: *id001
32
- - !ruby/object:Gem::Dependency
33
- name: daemons
34
- prerelease: false
35
- requirement: &id002 !ruby/object:Gem::Requirement
36
- requirements:
37
- - - ">="
38
- - !ruby/object:Gem::Version
39
- segments:
40
- - 0
41
- version: "0"
42
- type: :runtime
43
- version_requirements: *id002
44
- description: Traditionally, a PHP or Perl/CGI web page has been used to login unauthenticated users to a Network Acces Controller like ChilliSpot; this hotspotlogin implementation is based on Ruby and Sinatra (the classy web framework).
32
+ description: Traditionally, a PHP or Perl/CGI web page has been used to login unauthenticated users to a Network Access Controller like ChilliSpot; this hotspotlogin implementation is based on Ruby and Sinatra (the classy web framework).
45
33
  email: guidoderosa@gmail.com
46
- executables:
47
- - hotspotlogin.rb
48
- - hotspotlogin_ctl.rb
34
+ executables: []
35
+
49
36
  extensions: []
50
37
 
51
38
  extra_rdoc_files:
@@ -57,7 +44,6 @@ files:
57
44
  - views/hotspotlogin.erb
58
45
  - views/404.erb
59
46
  - views/_login_form.erb
60
- - bin/hotspotlogin_ctl.rb
61
47
  - bin/hotspotlogin.rb
62
48
  - lib/hotspotlogin.rb
63
49
  - lib/hotspotlogin/constants.rb
@@ -1,13 +0,0 @@
1
- #!/usr/bin/env ruby
2
-
3
- require 'rubygems'
4
- require 'daemons'
5
-
6
- Daemons.run(
7
- "#{File.dirname __FILE__}/hotspotlogin.rb",
8
- {
9
- :dir_mode => :system
10
- }
11
- )
12
-
13
-