runit-man 1.4.9 → 1.5.0
Sign up to get free protection for your applications and to get access to all the features.
- data/i18n/en.yml +7 -0
- data/i18n/ru.yml +6 -0
- data/lib/runit-man/app.rb +31 -0
- data/lib/runit-man/helpers.rb +8 -0
- data/lib/runit-man/runner.rb +5 -0
- data/views/_services.erb +5 -0
- data/views/view_file.erb +10 -0
- metadata +5 -4
data/i18n/en.yml
CHANGED
data/i18n/ru.yml
CHANGED
data/lib/runit-man/app.rb
CHANGED
@@ -81,6 +81,29 @@ class RunitMan < Sinatra::Base
|
|
81
81
|
data[:text]
|
82
82
|
end
|
83
83
|
|
84
|
+
get '/view' do
|
85
|
+
if !request.GET.has_key?('file')
|
86
|
+
return not_found
|
87
|
+
end
|
88
|
+
f = request.GET['file']
|
89
|
+
return not_found unless files_to_view.include?(f)
|
90
|
+
@scripts = []
|
91
|
+
@title = t.runit.view_file.title(h(f), h(host_name))
|
92
|
+
erb :view_file, :locals => {
|
93
|
+
:name => f,
|
94
|
+
:text => IO.read(f)
|
95
|
+
}
|
96
|
+
end
|
97
|
+
|
98
|
+
get '/view.txt' do
|
99
|
+
if !request.GET.has_key?('file')
|
100
|
+
return not_found
|
101
|
+
end
|
102
|
+
f = request.GET['file']
|
103
|
+
return not_found unless files_to_view.include?(f)
|
104
|
+
IO.read(f)
|
105
|
+
end
|
106
|
+
|
84
107
|
def log_action(name, text)
|
85
108
|
env = request.env
|
86
109
|
addr = env.include?('X_REAL_IP') ? env['X_REAL_IP'] : env['REMOTE_ADDR']
|
@@ -112,6 +135,14 @@ class RunitMan < Sinatra::Base
|
|
112
135
|
do_cmd("ln -sf #{File.join(RunitMan.all_services_directory, 'runit-man')} #{File.join(RunitMan.active_services_directory, 'runit-man')}")
|
113
136
|
end
|
114
137
|
|
138
|
+
def enable_view_of(file_location)
|
139
|
+
files_to_view << File.expand_path(file_location, '/')
|
140
|
+
end
|
141
|
+
|
142
|
+
def files_to_view
|
143
|
+
@files_to_view ||= []
|
144
|
+
end
|
145
|
+
|
115
146
|
private
|
116
147
|
def do_cmd(command)
|
117
148
|
system(command) or raise "Cannot execute #{command}"
|
data/lib/runit-man/helpers.rb
CHANGED
@@ -26,6 +26,14 @@ module Helpers
|
|
26
26
|
ServiceInfo.all
|
27
27
|
end
|
28
28
|
|
29
|
+
def files_to_view
|
30
|
+
RunitMan.files_to_view.map do |f|
|
31
|
+
File.symlink?(f) ? File.expand_path(File.readlink(f), File.dirname(f)) : f
|
32
|
+
end.select do |f|
|
33
|
+
File.readable?(f)
|
34
|
+
end.uniq.sort
|
35
|
+
end
|
36
|
+
|
29
37
|
def service_action(name, action, label)
|
30
38
|
partial :service_action, :locals => {
|
31
39
|
:name => name,
|
data/lib/runit-man/runner.rb
CHANGED
@@ -5,11 +5,16 @@ RunitMan.set :active_services_directory, '/etc/service'
|
|
5
5
|
RunitMan.set :all_services_directory, '/etc/sv'
|
6
6
|
|
7
7
|
OptionParser.new { |op|
|
8
|
+
op.separator 'Server options:'
|
8
9
|
op.on('-s server') { |val| RunitMan.set :server, val }
|
9
10
|
op.on('-p port') { |val| RunitMan.set :port, val.to_i }
|
10
11
|
op.on('-b addr') { |val| RunitMan.set :bind, val } if RunitMan.respond_to?(:bind)
|
12
|
+
op.separator 'runit options:'
|
11
13
|
op.on('-a active_services_directory (/etc/service by default)') { |val| RunitMan.set :active_services_directory, val }
|
12
14
|
op.on('-f all_services_directory (/etc/sv by default)') { |val| RunitMan.set :all_services_directory, val }
|
15
|
+
op.separator 'View options:'
|
16
|
+
op.on('-v file_location', 'Enables view of specified file through runit-man') { |val| RunitMan.enable_view_of(val) }
|
17
|
+
op.separator 'Configuration options:'
|
13
18
|
op.on_tail('-r', '--register', 'Register as runit service') do
|
14
19
|
RunitMan.register_as_runit_service
|
15
20
|
exit
|
data/views/_services.erb
CHANGED
data/views/view_file.erb
ADDED
@@ -0,0 +1,10 @@
|
|
1
|
+
<% content_for :content do %>
|
2
|
+
<%= t.runit.view_file.header(h(name), h(host_name)) %> | <a href="/view.txt?file=<% h(name) %>"><%= t.runit.view_file.raw %></a>
|
3
|
+
|
4
|
+
<pre><%= h(text) %></pre>
|
5
|
+
<% end %>
|
6
|
+
<% content_for :footer do %>
|
7
|
+
<p>
|
8
|
+
<%= t.runit.view_file.updated(Time.now.utc) %> <a href="javascript:;" rel="nofollow" onclick="window.location.reload()"><%= t.view_file.reload %></a>
|
9
|
+
</p>
|
10
|
+
<% end %>
|
metadata
CHANGED
@@ -4,9 +4,9 @@ version: !ruby/object:Gem::Version
|
|
4
4
|
prerelease: false
|
5
5
|
segments:
|
6
6
|
- 1
|
7
|
-
-
|
8
|
-
-
|
9
|
-
version: 1.
|
7
|
+
- 5
|
8
|
+
- 0
|
9
|
+
version: 1.5.0
|
10
10
|
platform: ruby
|
11
11
|
authors:
|
12
12
|
- Akzhan Abdulin
|
@@ -14,7 +14,7 @@ autorequire:
|
|
14
14
|
bindir: bin
|
15
15
|
cert_chain: []
|
16
16
|
|
17
|
-
date: 2010-04-
|
17
|
+
date: 2010-04-09 00:00:00 +04:00
|
18
18
|
default_executable:
|
19
19
|
dependencies:
|
20
20
|
- !ruby/object:Gem::Dependency
|
@@ -147,6 +147,7 @@ files:
|
|
147
147
|
- public/css/tripoli.type.css
|
148
148
|
- views/log.erb
|
149
149
|
- views/layout.erb
|
150
|
+
- views/view_file.erb
|
150
151
|
- views/index.erb
|
151
152
|
- views/_services.erb
|
152
153
|
- views/_service_action.erb
|