gts 0.1.2 → 0.1.3
Sign up to get free protection for your applications and to get access to all the features.
- data/bin/gts +16 -3
- data/lib/gts.rb +38 -6
- data/lib/gts/abstract_gps_tracker_handler.rb +2 -1
- data/lib/gts/command_parser.rb +1 -1
- data/lib/gts/commands/dump_command.rb +6 -1
- data/lib/gts/version.rb +1 -1
- metadata +1 -1
data/bin/gts
CHANGED
@@ -19,13 +19,18 @@ opt_parser = OptionParser.new do |opt|
|
|
19
19
|
options[:port] = port
|
20
20
|
end
|
21
21
|
|
22
|
+
opt.on("-o","--output FILENAME","output file name; if given csv file with captured data is created") do |filename|
|
23
|
+
options[:output_file] = filename
|
24
|
+
end
|
25
|
+
|
26
|
+
opt.on("-l", "--logfile FILENAME", "file for writing logs. If omitted, logs are written to STDOUT.") do |filename|
|
27
|
+
options[:log_file] = filename
|
28
|
+
end
|
29
|
+
|
22
30
|
opt.on("-d","--daemon","run in daemon mode?") do
|
23
31
|
options[:daemon] = true
|
24
32
|
end
|
25
33
|
|
26
|
-
opt.on("-o","--output FILENAME","output file name; if given csv file with captured data is created") do |filename|
|
27
|
-
options[:output_file] = filename
|
28
|
-
end
|
29
34
|
|
30
35
|
opt.on("-x","--debug","show debugging information") do
|
31
36
|
options[:debug] = true
|
@@ -40,16 +45,24 @@ end
|
|
40
45
|
|
41
46
|
opt_parser.parse!
|
42
47
|
|
48
|
+
if options[:log_file]
|
49
|
+
Gts.set_log_filename options[:log_file]
|
50
|
+
end
|
51
|
+
|
43
52
|
puts "Starting GTS #{Gts::VERSION} on address #{options[:address]} and port #{options[:port]}"
|
44
53
|
if options[:debug]
|
45
54
|
Gts.set_log_level :debug
|
46
55
|
puts "Debugging level logs enabled!"
|
47
56
|
end
|
57
|
+
|
48
58
|
puts "Known devices: " + Gts.registered_handlers.map{|k,v| [k] }.join(", ")
|
49
59
|
|
50
60
|
Signal.trap("INT") { Gts::Server.stop! }
|
51
61
|
Signal.trap("TERM") { Gts::Server.stop! }
|
52
62
|
|
53
63
|
Gts.server = Gts::Server
|
64
|
+
if options[:daemon]
|
65
|
+
Gts.daemonize
|
66
|
+
end
|
54
67
|
Gts.storage = Gts::RedisStorage.new(:host => "0.0.0.0", :port => 6379) # we use just this one so far, TODO should be configurable
|
55
68
|
Gts.server.start!(:address => options[:address], :port => options[:port], :output_file => options[:output_file])
|
data/lib/gts.rb
CHANGED
@@ -1,4 +1,5 @@
|
|
1
1
|
require "logger"
|
2
|
+
require "fileutils"
|
2
3
|
|
3
4
|
module Gts
|
4
5
|
|
@@ -35,16 +36,29 @@ module Gts
|
|
35
36
|
begin
|
36
37
|
@@logger
|
37
38
|
rescue
|
38
|
-
|
39
|
-
@@logger.datetime_format = "%d.%m.%Y %H:%M:%S"
|
40
|
-
@@logger.formatter = proc do |severity, datetime, progname, msg|
|
41
|
-
"#{datetime} #{severity}: #{msg}\n"
|
42
|
-
end
|
43
|
-
@@logger.level = log_level
|
39
|
+
set_logger
|
44
40
|
@@logger
|
45
41
|
end
|
46
42
|
end
|
47
43
|
|
44
|
+
def self.set_logger
|
45
|
+
@@logger = Logger.new(log_filename)
|
46
|
+
@@logger.datetime_format = "%d.%m.%Y %H:%M:%S"
|
47
|
+
@@logger.formatter = proc do |severity, datetime, progname, msg|
|
48
|
+
"#{datetime} #{severity}: #{msg}\n"
|
49
|
+
end
|
50
|
+
@@logger.level = log_level
|
51
|
+
end
|
52
|
+
|
53
|
+
def self.set_log_filename(filename)
|
54
|
+
@@log_filename = File.expand_path(filename)
|
55
|
+
FileUtils.touch filename
|
56
|
+
end
|
57
|
+
|
58
|
+
def self.log_filename
|
59
|
+
@@log_filename
|
60
|
+
end
|
61
|
+
|
48
62
|
def self.server=(server_instance)
|
49
63
|
@@server = server_instance
|
50
64
|
end
|
@@ -61,6 +75,24 @@ module Gts
|
|
61
75
|
@@storage
|
62
76
|
end
|
63
77
|
|
78
|
+
def self.daemonize
|
79
|
+
if RUBY_VERSION < "1.9"
|
80
|
+
exit if fork
|
81
|
+
Process.setsid
|
82
|
+
exit if fork
|
83
|
+
Dir.chdir "/"
|
84
|
+
STDIN.reopen "/dev/null"
|
85
|
+
STDERR.reopen ("/dev/null"), "a"
|
86
|
+
else
|
87
|
+
orig_stdout = STDOUT.clone
|
88
|
+
Process.daemon
|
89
|
+
STDOUT.reopen orig_stdout
|
90
|
+
end
|
91
|
+
puts "Running in background with PID #{Process.pid}"
|
92
|
+
STDOUT.reopen ("/dev/null"), "a"
|
93
|
+
set_logger # reopen logger, just to make sure
|
94
|
+
end
|
95
|
+
|
64
96
|
end
|
65
97
|
|
66
98
|
require "gts/version"
|
data/lib/gts/command_parser.rb
CHANGED
@@ -8,7 +8,12 @@ module Gts
|
|
8
8
|
Gts::Command.register :dump, self, "Dumps captured GPS data from tracking devices into json"
|
9
9
|
|
10
10
|
def execute
|
11
|
-
Gts.storage.dump
|
11
|
+
dump = Gts.storage.dump
|
12
|
+
if dump
|
13
|
+
dump.map{|l| JSON.parse(l) }.to_json
|
14
|
+
else
|
15
|
+
[].to_json
|
16
|
+
end
|
12
17
|
end
|
13
18
|
|
14
19
|
end
|
data/lib/gts/version.rb
CHANGED