runit-man 1.10.3 → 1.11.0
Sign up to get free protection for your applications and to get access to all the features.
- data/i18n/en.yml +93 -70
- data/i18n/ru.yml +98 -72
- data/lib/runit-man/app.rb +53 -6
- data/lib/runit-man/helpers.rb +15 -4
- data/lib/runit-man/service_info.rb +2 -8
- data/lib/runit-man/utils.rb +5 -0
- data/lib/runit-man/version.rb +1 -1
- data/views/_service_info.erubis +10 -10
- data/views/_services.erubis +8 -8
- data/views/index.erubis +3 -3
- data/views/layout.erubis +2 -2
- data/views/log.erubis +3 -3
- data/views/log_downloads.erubis +7 -7
- data/views/view_file.erubis +2 -2
- metadata +11 -11
data/i18n/en.yml
CHANGED
@@ -1,72 +1,95 @@
|
|
1
|
-
|
2
|
-
|
3
|
-
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
|
51
|
-
|
52
|
-
|
53
|
-
|
54
|
-
|
1
|
+
en:
|
2
|
+
runit:
|
3
|
+
label: runit web management tool
|
4
|
+
title: "%{p1} - %{p2}"
|
5
|
+
header: "%{p1}: %{p2}"
|
6
|
+
error: Error encountered while accessing resource
|
7
|
+
loading: "Please wait while loading…"
|
8
|
+
footer: "State of services updated automatically every %{sec} seconds."
|
9
|
+
services:
|
10
|
+
table:
|
11
|
+
caption: Services
|
12
|
+
headers:
|
13
|
+
pid: PID
|
14
|
+
name: Name
|
15
|
+
uptime: Uptime (s)
|
16
|
+
stat: Status
|
17
|
+
actions: Actions
|
18
|
+
log_file: Log file
|
19
|
+
values:
|
20
|
+
log_hint: Open tail 100 lines of %{name} service log in new window
|
21
|
+
log_absent: Absent
|
22
|
+
files_to_view: Files
|
23
|
+
urls_to_views: Urls
|
24
|
+
footer: Updated at %{time}
|
25
|
+
subst:
|
26
|
+
inactive: <span class="inactive">inactive</span>
|
27
|
+
down: <span class="down">down<span>
|
28
|
+
finish: <span class="down">finish<span>
|
29
|
+
run: <span class="run">run<span>
|
30
|
+
up: <span class="run">up<span>
|
31
|
+
actions:
|
32
|
+
start: Start
|
33
|
+
stop: Stop
|
34
|
+
restart: Restart
|
35
|
+
switch_down: Deactivate
|
36
|
+
switch_up: Activate
|
37
|
+
signals:
|
38
|
+
t: TERM
|
39
|
+
k: KILL
|
40
|
+
i: INT
|
41
|
+
1: USR1
|
42
|
+
2: USR2
|
43
|
+
a: ALARM
|
44
|
+
q: QUIT
|
45
|
+
x: EXIT
|
46
|
+
p: PAUSE
|
47
|
+
c: CONT
|
48
|
+
h: HUP
|
49
|
+
o: ONCE
|
50
|
+
log:
|
51
|
+
title: "Tail @{count} lines of service @{name} log - @{host}"
|
52
|
+
header: "Tail @{count} lines of service <strong>@{name}</strong> log: @{host} (<code>@{log_location}}</code>)"
|
53
|
+
counts: "Show @{count} lines of log"
|
54
|
+
updated: "Page updated at @{time}"
|
55
|
+
reload: Reload
|
56
|
+
raw: Raw
|
57
|
+
downloads: Log downloads
|
58
|
+
download: Download
|
59
|
+
modified: Last modified
|
60
|
+
file_name: File name
|
61
|
+
file_size: File size
|
62
|
+
about_utc: All times for log files are represented in UTC.
|
63
|
+
b: b
|
64
|
+
Kb: Kb
|
65
|
+
Mb: Mb
|
66
|
+
Gb: Gb
|
67
|
+
view_file:
|
55
68
|
raw: Raw
|
56
|
-
|
57
|
-
|
58
|
-
|
59
|
-
|
60
|
-
|
61
|
-
|
62
|
-
|
63
|
-
|
64
|
-
|
65
|
-
|
66
|
-
|
67
|
-
|
68
|
-
|
69
|
-
|
70
|
-
|
71
|
-
|
69
|
+
title: 'File %{file} on %{host}'
|
70
|
+
header: 'View %{file} file on %{host}'
|
71
|
+
updated: "Page updated at %{time}"
|
72
|
+
reload: Reload
|
73
|
+
|
74
|
+
date:
|
75
|
+
formats:
|
76
|
+
default: "%Y-%m-%d"
|
77
|
+
short: "%b %d"
|
78
|
+
long: "%B %d, %Y"
|
79
|
+
|
80
|
+
day_names: [Sunday, Monday, Tuesday, Wednesday, Thursday, Friday, Saturday]
|
81
|
+
abbr_day_names: [Sun, Mon, Tue, Wed, Thu, Fri, Sat]
|
82
|
+
|
83
|
+
month_names: [~, January, February, March, April, May, June, July, August, September, October, November, December]
|
84
|
+
abbr_month_names: [~, Jan, Feb, Mar, Apr, May, Jun, Jul, Aug, Sep, Oct, Nov, Dec]
|
85
|
+
order:
|
86
|
+
- :year
|
87
|
+
- :month
|
88
|
+
- :day
|
89
|
+
|
90
|
+
time:
|
91
|
+
formats:
|
92
|
+
default: "%Y-%m-%d %H:%M"
|
93
|
+
am: "am"
|
94
|
+
pm: "pm"
|
72
95
|
|
data/i18n/ru.yml
CHANGED
@@ -1,73 +1,99 @@
|
|
1
|
-
|
2
|
-
|
3
|
-
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
|
51
|
-
|
52
|
-
|
53
|
-
|
54
|
-
|
55
|
-
|
56
|
-
|
1
|
+
ru:
|
2
|
+
runit:
|
3
|
+
label: runit - управляющий web-интерфейс
|
4
|
+
title: "%{p1} - %{p2}"
|
5
|
+
header: "%{p1}: %{p2}"
|
6
|
+
error: Ошибка обращения к ресурсу
|
7
|
+
loading: "Идёт загрузка…"
|
8
|
+
footer: "Состояние сервисов обновляется автоматически каждые %{sec} секунд."
|
9
|
+
services:
|
10
|
+
table:
|
11
|
+
caption: Сервисы
|
12
|
+
headers:
|
13
|
+
pid: PID
|
14
|
+
name: Название
|
15
|
+
uptime: "Время исполнения (сек.)"
|
16
|
+
stat: Состояние
|
17
|
+
actions: Действия
|
18
|
+
log_file: Лог
|
19
|
+
values:
|
20
|
+
log_hint: Отрыть последние 100 строк лога сервиса %{name} в новом окне
|
21
|
+
log_absent: Отсутствует
|
22
|
+
files_to_view: Файлы
|
23
|
+
urls_to_view: Ссылки
|
24
|
+
footer: Обновлено %{time}
|
25
|
+
subst:
|
26
|
+
inactive: <span class="inactive">неактивен</span>
|
27
|
+
down: <span class="down">остановлен</span>
|
28
|
+
finish: <span class="down">останавливается</span>
|
29
|
+
run: <span class="run">работает</span>
|
30
|
+
up: <span class="run">поднятие</span>
|
31
|
+
got: получен
|
32
|
+
want: ожидается
|
33
|
+
actions:
|
34
|
+
start: Запустить
|
35
|
+
stop: Остановить
|
36
|
+
restart: Перезапустить
|
37
|
+
switch_down: Выключить
|
38
|
+
switch_up: Включить
|
39
|
+
signals:
|
40
|
+
t: TERM
|
41
|
+
k: KILL
|
42
|
+
i: INT
|
43
|
+
1: USR1
|
44
|
+
2: USR2
|
45
|
+
a: ALARM
|
46
|
+
q: QUIT
|
47
|
+
x: EXIT
|
48
|
+
p: PAUSE
|
49
|
+
c: CONT
|
50
|
+
h: HUP
|
51
|
+
o: ONCE
|
52
|
+
log:
|
53
|
+
title: "Последние %{count} строк лога сервиса %{name} - %{log_location}"
|
54
|
+
header: "Последние %{count} строк лога сервиса <strong>%{name}</strong>: %{host} (<code>%{log_location}</code>)"
|
55
|
+
counts: "Показать %{count} строк лога"
|
56
|
+
updated: "Страница обновлена %{time}"
|
57
|
+
reload: Обновить страницу
|
58
|
+
raw: Текст
|
59
|
+
downloads: Загрузка логов
|
60
|
+
download: Скачать
|
61
|
+
modified: Последнее изменение
|
62
|
+
file_name: Имя файла
|
63
|
+
file_size: Размер файла
|
64
|
+
about_utc: Все времена для файлов представлены в формате UTC.
|
65
|
+
b: б
|
66
|
+
Kb: Кб
|
67
|
+
Mb: Мб
|
68
|
+
Gb: Гб
|
69
|
+
view_file:
|
57
70
|
raw: Текст
|
58
|
-
|
59
|
-
|
60
|
-
|
61
|
-
|
62
|
-
|
63
|
-
|
64
|
-
|
65
|
-
|
66
|
-
|
67
|
-
|
68
|
-
|
69
|
-
|
70
|
-
|
71
|
-
|
72
|
-
|
73
|
-
|
71
|
+
title: 'Файл %{name} на %{host}'
|
72
|
+
header: 'Просмотр файла %{name} на %{host}'
|
73
|
+
updated: "Страница обновлена %{time}"
|
74
|
+
reload: Обновить страницу
|
75
|
+
|
76
|
+
date:
|
77
|
+
formats:
|
78
|
+
default: "%d.%m.%Y"
|
79
|
+
short: "%d %b"
|
80
|
+
long: "%d %B %Y"
|
81
|
+
|
82
|
+
day_names: [воскресенье, понедельник, вторник, среда, четверг, пятница, суббота]
|
83
|
+
standalone_day_names: [Воскресенье, Понедельник, Вторник, Среда, Четверг, Пятница, Суббота]
|
84
|
+
abbr_day_names: [Вс, Пн, Вт, Ср, Чт, Пт, Сб]
|
85
|
+
|
86
|
+
month_names: [~, января, февраля, марта, апреля, мая, июня, июля, августа, сентября, октября, ноября, декабря]
|
87
|
+
# see russian gem for info on "standalone" day names
|
88
|
+
standalone_month_names: [~, Январь, Февраль, Март, Апрель, Май, Июнь, Июль, Август, Сентябрь, Октябрь, Ноябрь, Декабрь]
|
89
|
+
abbr_month_names: [~, янв., февр., марта, апр., мая, июня, июля, авг., сент., окт., нояб., дек.]
|
90
|
+
standalone_abbr_month_names: [~, янв., февр., март, апр., май, июнь, июль, авг., сент., окт., нояб., дек.]
|
91
|
+
|
92
|
+
order: [ :day, :month, :year ]
|
93
|
+
|
94
|
+
time:
|
95
|
+
formats:
|
96
|
+
default: "%d.%m.%Y %H:%M"
|
97
|
+
am: "утра"
|
98
|
+
pm: "вечера"
|
99
|
+
|
data/lib/runit-man/app.rb
CHANGED
@@ -1,8 +1,8 @@
|
|
1
1
|
require 'fileutils'
|
2
2
|
require 'yajl'
|
3
3
|
require 'erubis'
|
4
|
+
require 'i18n'
|
4
5
|
require 'sinatra/base'
|
5
|
-
require 'sinatra/r18n'
|
6
6
|
require 'runit-man/helpers'
|
7
7
|
require 'runit-man/version'
|
8
8
|
|
@@ -21,8 +21,6 @@ class RunitMan < Sinatra::Base
|
|
21
21
|
:json => 'application/json'
|
22
22
|
}.freeze
|
23
23
|
|
24
|
-
R18n::Filters.on :variables
|
25
|
-
|
26
24
|
set :environment, :production
|
27
25
|
set :static, true
|
28
26
|
set :logging, true
|
@@ -30,12 +28,29 @@ class RunitMan < Sinatra::Base
|
|
30
28
|
set :raise_errors, false
|
31
29
|
set :root, GEM_FOLDER
|
32
30
|
|
33
|
-
register Sinatra::R18n
|
34
|
-
|
35
31
|
helpers do
|
36
32
|
include Helpers
|
37
33
|
end
|
38
34
|
|
35
|
+
def self.i18n_location
|
36
|
+
File.join(GEM_FOLDER, 'i18n')
|
37
|
+
end
|
38
|
+
|
39
|
+
def self.setup_i18n_files
|
40
|
+
files = []
|
41
|
+
Dir.glob("#{i18n_location}/*.yml") do |full_path|
|
42
|
+
next unless File.file?(full_path)
|
43
|
+
files << full_path
|
44
|
+
end
|
45
|
+
I18n.load_path = files
|
46
|
+
I18n.reload!
|
47
|
+
nil
|
48
|
+
end
|
49
|
+
|
50
|
+
configure do
|
51
|
+
RunitMan.setup_i18n_files
|
52
|
+
end
|
53
|
+
|
39
54
|
before do
|
40
55
|
@scripts = []
|
41
56
|
base_content_type = CONTENT_TYPES.keys.detect do |t|
|
@@ -46,6 +61,38 @@ class RunitMan < Sinatra::Base
|
|
46
61
|
'X-Powered-By' => 'runit-man',
|
47
62
|
'X-Version' => RunitMan::VERSION
|
48
63
|
})
|
64
|
+
parse_language(request.env['HTTP_ACCEPT_LANGUAGE'])
|
65
|
+
end
|
66
|
+
|
67
|
+
|
68
|
+
def setup_i18n(locales)
|
69
|
+
locales.each do |locale|
|
70
|
+
if I18n.available_locales.include?(locale)
|
71
|
+
I18n.locale = locale
|
72
|
+
break
|
73
|
+
end
|
74
|
+
end
|
75
|
+
end
|
76
|
+
|
77
|
+
def parse_language(header)
|
78
|
+
weighted_locales = []
|
79
|
+
if header
|
80
|
+
header.split(',').each do |s|
|
81
|
+
if s =~ /^(.+)\;q\=(\d(?:\.\d)?)$/
|
82
|
+
weighted_locales << { :locale => $1.to_sym, :weight => $2.to_f }
|
83
|
+
else
|
84
|
+
weighted_locales << { :locale => s.to_sym, :weight => 1.0 }
|
85
|
+
end
|
86
|
+
end
|
87
|
+
end
|
88
|
+
weighted_locales << { :locale => :en, :weight => 0.0 }
|
89
|
+
if weighted_locales.length >= 2
|
90
|
+
weighted_locales.sort! do |a, b|
|
91
|
+
b[:weight] <=> a[:weight]
|
92
|
+
end
|
93
|
+
end
|
94
|
+
locales = weighted_locales.map { |wl| wl[:locale] }
|
95
|
+
setup_i18n(locales)
|
49
96
|
end
|
50
97
|
|
51
98
|
get '/' do
|
@@ -79,7 +126,7 @@ class RunitMan < Sinatra::Base
|
|
79
126
|
get %r[^/([^/]+)/log(?:/(\d+))?/?$] do |name, count|
|
80
127
|
data = log_of_service(name, count)
|
81
128
|
return not_found if data.nil?
|
82
|
-
@title = t
|
129
|
+
@title = t('runit.services.log.title', :name => h(name), :host => h(host_name), :count => h(count), :log_location => h(data[:log_location]))
|
83
130
|
erubis :log, :locals => data
|
84
131
|
end
|
85
132
|
|
data/lib/runit-man/helpers.rb
CHANGED
@@ -2,6 +2,7 @@ require 'runit-man/service_info'
|
|
2
2
|
require 'runit-man/partials'
|
3
3
|
require 'runit-man/utils'
|
4
4
|
require 'sinatra/content_for2'
|
5
|
+
require 'i18n'
|
5
6
|
|
6
7
|
module Helpers
|
7
8
|
include Rack::Utils
|
@@ -14,6 +15,11 @@ module Helpers
|
|
14
15
|
def host_name
|
15
16
|
Utils.host_name
|
16
17
|
end
|
18
|
+
|
19
|
+
|
20
|
+
def t(*args)
|
21
|
+
Utils.t(*args)
|
22
|
+
end
|
17
23
|
|
18
24
|
def service_infos
|
19
25
|
ServiceInfo.all
|
@@ -62,7 +68,7 @@ module Helpers
|
|
62
68
|
end
|
63
69
|
|
64
70
|
def log_downloads_link(name)
|
65
|
-
"<a target=\"_blank\" href=\"/#{h(name)}/log-downloads\/\">#{h(t
|
71
|
+
"<a target=\"_blank\" href=\"/#{h(name)}/log-downloads\/\">#{h(t('runit.services.log.downloads'))}…</a>"
|
66
72
|
end
|
67
73
|
|
68
74
|
def even_or_odd
|
@@ -89,13 +95,18 @@ module Helpers
|
|
89
95
|
suffix = 'Kb'
|
90
96
|
end
|
91
97
|
bytes = ((bytes * 100 + 0.5).to_i.to_f / 100)
|
92
|
-
"#{sign}#{bytes}#{t
|
98
|
+
"#{sign}#{bytes}#{t("runit.services.log.#{suffix}")}"
|
93
99
|
end
|
94
100
|
|
95
101
|
def stat_subst(s)
|
96
102
|
s.split(/\s/).map do |s|
|
97
|
-
if s =~ /(\w+)/
|
98
|
-
|
103
|
+
if s =~ /(\w+)/
|
104
|
+
word = $1
|
105
|
+
if t("runit.services.table.subst.#{word}") !~ /translation missing/
|
106
|
+
s.sub(word, t("runit.services.table.subst.#{word}"))
|
107
|
+
else
|
108
|
+
s
|
109
|
+
end
|
99
110
|
else
|
100
111
|
s
|
101
112
|
end
|
@@ -5,8 +5,6 @@ require 'runit-man/utils'
|
|
5
5
|
class ServiceInfo
|
6
6
|
SPECIAL_LOG_FILES = %w(lock config state newstate).freeze
|
7
7
|
|
8
|
-
include R18n::Helpers
|
9
|
-
|
10
8
|
attr_reader :name
|
11
9
|
|
12
10
|
def initialize(a_name)
|
@@ -109,11 +107,6 @@ class ServiceInfo
|
|
109
107
|
File.expand_path(file_name, dir_name)
|
110
108
|
end
|
111
109
|
|
112
|
-
# Localizes time and replaces some localized characters with more file system friendly characters
|
113
|
-
def fl(time)
|
114
|
-
l(time).gsub(/[\:\s]/, '-').gsub(/[\\\/]/, '.')
|
115
|
-
end
|
116
|
-
|
117
110
|
def log_files
|
118
111
|
r = []
|
119
112
|
dir_name = File.dirname(log_file_location)
|
@@ -122,7 +115,8 @@ class ServiceInfo
|
|
122
115
|
next if SPECIAL_LOG_FILES.include?(name)
|
123
116
|
full_name = File.expand_path(name, dir_name)
|
124
117
|
stats = File.stat(full_name)
|
125
|
-
label = "#{Utils.host_name}-#{self.name}-#{
|
118
|
+
label = "#{Utils.host_name}-#{self.name}-#{I18n.l(stats.atime.utc)}-#{I18n.l(stats.mtime.utc)}.log"
|
119
|
+
label = label.gsub(/[\:\s\,]/, '-').gsub(/[\\\/]/, '.')
|
126
120
|
r << {
|
127
121
|
:name => name,
|
128
122
|
:label => label,
|
data/lib/runit-man/utils.rb
CHANGED
data/lib/runit-man/version.rb
CHANGED
data/views/_service_info.erubis
CHANGED
@@ -8,41 +8,41 @@ need_second_row = !service_info.files_to_view.empty? || !service_info.urls_to_vi
|
|
8
8
|
<td><%= stat_subst(service_info.stat) %></td>
|
9
9
|
<td>
|
10
10
|
<% if service_info.active? %>
|
11
|
-
<%= service_action service_info.name, :restart, t
|
12
|
-
<%= service_action service_info.name, :down, t
|
13
|
-
<%= service_action service_info.name, :up, t
|
11
|
+
<%= service_action service_info.name, :restart, t('runit.services.table.actions.restart'), !service_info.down? %>
|
12
|
+
<%= service_action service_info.name, :down, t('runit.services.table.actions.stop'), !service_info.down? %>
|
13
|
+
<%= service_action service_info.name, :up, t('runit.services.table.actions.start'), service_info.down? %>
|
14
14
|
<% unless service_info.down? %>
|
15
15
|
<% service_info.allowed_signals.each do |signal| %>
|
16
|
-
<%= service_signal service_info.name, signal, t
|
16
|
+
<%= service_signal service_info.name, signal, t("runit.services.table.signals.#{signal}") %>
|
17
17
|
<% end %>
|
18
18
|
<% end %>
|
19
19
|
<% if service_info.switchable? %>
|
20
|
-
<%= service_action service_info.name, :switch_down, t
|
20
|
+
<%= service_action service_info.name, :switch_down, t('runit.services.table.actions.switch_down') %>
|
21
21
|
<% end %>
|
22
22
|
<% else %>
|
23
23
|
<% if service_info.switchable? %>
|
24
|
-
<%= service_action service_info.name, :switch_up, t
|
24
|
+
<%= service_action service_info.name, :switch_up, t('runit.services.table.actions.switch_up') %>
|
25
25
|
<% end %>
|
26
26
|
<% end %>
|
27
27
|
</td>
|
28
28
|
<td>
|
29
29
|
<% if service_info.logged? %>
|
30
|
-
<%= log_link(service_info.name, :hint => t
|
30
|
+
<%= log_link(service_info.name, :hint => t('runit.services.table.values.log_hint', service_info.name), :blank => true, :title => service_info.log_file_location) %>
|
31
31
|
<%= log_downloads_link(service_info.name) %>
|
32
32
|
<% else %>
|
33
|
-
<%= t
|
33
|
+
<%= t('runit.services.table.values.log_absent') %>
|
34
34
|
<% end %>
|
35
35
|
</td>
|
36
36
|
</tr>
|
37
37
|
<% if need_second_row %><tr><td colspan="5">
|
38
38
|
<% unless service_info.files_to_view.empty? %>
|
39
|
-
<%= h(t
|
39
|
+
<%= h(t('runit.services.table.values.files_to_view')) %>:
|
40
40
|
<% service_info.files_to_view.each do |f| %>
|
41
41
|
<a href="/view?file=<%= h(f) %>"><%= h(f) %></a>
|
42
42
|
<% end %>
|
43
43
|
<% end %>
|
44
44
|
<% unless service_info.urls_to_view.empty? %>
|
45
|
-
<%= h(t
|
45
|
+
<%= h(t('runit.services.table.values.urls_to_view')) %>:
|
46
46
|
<% service_info.urls_to_view.each do |url| %>
|
47
47
|
<a href="<%= h(url) %>"><%= h(url) %></a>
|
48
48
|
<% end %>
|
data/views/_services.erubis
CHANGED
@@ -1,18 +1,18 @@
|
|
1
1
|
<table>
|
2
|
-
<caption><%= h(t
|
2
|
+
<caption><%= h(t('runit.services.table.caption')) %></caption>
|
3
3
|
<thead>
|
4
4
|
<tr>
|
5
|
-
<th><%= h(t
|
6
|
-
<th><%= h(t
|
7
|
-
<th><%= h(t
|
8
|
-
<th><%= h(t
|
9
|
-
<th><%= h(t
|
10
|
-
<th><%= h(t
|
5
|
+
<th><%= h(t('runit.services.table.headers.pid')) %></th>
|
6
|
+
<th><%= h(t('runit.services.table.headers.name')) %></th>
|
7
|
+
<th><%= h(t('runit.services.table.headers.uptime')) %></th>
|
8
|
+
<th><%= h(t('runit.services.table.headers.stat')) %></th>
|
9
|
+
<th><%= h(t('runit.services.table.headers.actions')) %></th>
|
10
|
+
<th><%= h(t('runit.services.table.headers.log_file')) %></th>
|
11
11
|
</tr>
|
12
12
|
</thead>
|
13
13
|
<tfoot>
|
14
14
|
<tr>
|
15
|
-
<td colspan="6"><%= t
|
15
|
+
<td colspan="6"><%= t('runit.services.table.footer', :time => h(Time.now.utc)) %></td>
|
16
16
|
</tr>
|
17
17
|
</tfoot>
|
18
18
|
<tbody>
|
data/views/index.erubis
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
<% content_for :content do %>
|
2
2
|
<div id="error" class="error">
|
3
|
-
<%= h(t
|
3
|
+
<%= h(t('runit.error', :err => '<span id="url"></span>')) %>.
|
4
4
|
</div>
|
5
5
|
<div id="services">
|
6
|
-
<%= t
|
6
|
+
<%= t('runit.loading') %>
|
7
7
|
</div>
|
8
8
|
<% end %>
|
9
9
|
<% content_for :footer do %>
|
10
10
|
<p>
|
11
|
-
<%= t
|
11
|
+
<%= t('runit.footer', :sec => '<span id="service-refresh-interval">?</span>') %>
|
12
12
|
</p>
|
13
13
|
<% end %>
|
14
14
|
<% @scripts << 'runit-man' %>
|
data/views/layout.erubis
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
<html>
|
2
2
|
<head>
|
3
|
-
<title><%= h(t
|
3
|
+
<title><%= h(t('runit.title', :p1 => @title, :p2 => t('runit.label'))) %></title>
|
4
4
|
<link href="/css/tripoli.simple.css" type="text/css" rel="stylesheet" />
|
5
5
|
<link href="/css/tripoli.visual.css" type="text/css" rel="stylesheet" />
|
6
6
|
<link href="/css/tripoli.type.css" type="text/css" rel="stylesheet" />
|
@@ -11,7 +11,7 @@
|
|
11
11
|
<div id="container">
|
12
12
|
<div id="header">
|
13
13
|
<div class="content">
|
14
|
-
<strong><%= h(t
|
14
|
+
<strong><%= h(t('runit.header', :p1 => host_name, :p2 => t('runit.label'))) %></strong>
|
15
15
|
</div>
|
16
16
|
</div>
|
17
17
|
|
data/views/log.erubis
CHANGED
@@ -1,8 +1,8 @@
|
|
1
1
|
<% content_for :content do %>
|
2
|
-
<%= t
|
2
|
+
<%= t('runit.services.log.header', :name => h(name), :host => h(host_name), :count => h(count), :log_location => h(log_location)) %> | <%= log_link(name, :count => count, :title => t('runit.services.log.raw'), :raw => true) %>
|
3
3
|
|
4
4
|
<p>
|
5
|
-
<%= t
|
5
|
+
<%= t('runit.services.log.counts', :count => [100, 250, 500, 1000, 5000].map { |n| log_link(name, :count => n, :title => n) }.join(' ')) %>
|
6
6
|
<%= log_downloads_link(name) %>
|
7
7
|
|
8
8
|
</p>
|
@@ -10,6 +10,6 @@
|
|
10
10
|
<% end %>
|
11
11
|
<% content_for :footer do %>
|
12
12
|
<p>
|
13
|
-
<%= t
|
13
|
+
<%= t('runit.services.log.updated', :time => I18n.l(Time.now.utc)) %> <a href="javascript:;" rel="nofollow" onclick="window.location.reload()"><%= t('runit.services.log.reload') %></a>
|
14
14
|
</p>
|
15
15
|
<% end %>
|
data/views/log_downloads.erubis
CHANGED
@@ -1,27 +1,27 @@
|
|
1
1
|
<% content_for :content do %>
|
2
2
|
<h2><%= h(name) %></h2>
|
3
|
-
<h3><%= h(t
|
3
|
+
<h3><%= h(t('runit.services.log.downloads')) %></h3>
|
4
4
|
<table>
|
5
5
|
<thead>
|
6
6
|
<tr>
|
7
|
-
<th><%= h(t
|
8
|
-
<th><%= h(t
|
9
|
-
<th><%= h(t
|
7
|
+
<th><%= h(t('runit.services.log.modified')) %></th>
|
8
|
+
<th><%= h(t('runit.services.log.file_name')) %></th>
|
9
|
+
<th><%= h(t('runit.services.log.file_size')) %></th>
|
10
10
|
<th></th>
|
11
11
|
</tr>
|
12
12
|
</thead>
|
13
13
|
<tfoot>
|
14
14
|
<tr>
|
15
|
-
<td colspan="4"><%= h(t
|
15
|
+
<td colspan="4"><%= h(t('runit.services.log.about_utc')) %></td>
|
16
16
|
</tr>
|
17
17
|
</tfoot>
|
18
18
|
<tbody>
|
19
19
|
<% files.each do |f| %>
|
20
20
|
<tr class="<%= even_or_odd ? 'even' : 'odd' %>">
|
21
|
-
<td
|
21
|
+
<td><%= h(I18n.l(f[:modified])) %></td>
|
22
22
|
<td><%= h(f[:label]) %></td>
|
23
23
|
<td title="<%= h(f[:size]) %>"><%= h(human_bytes(f[:size])) %></td>
|
24
|
-
<td><a href="/<%= h(name) %>/log-download/<%= h(f[:name]) %>"><%= h(t
|
24
|
+
<td><a href="/<%= h(name) %>/log-download/<%= h(f[:name]) %>"><%= h(t('runit.services.log.download')) %>…</a></td>
|
25
25
|
</tr>
|
26
26
|
<% end %>
|
27
27
|
</tbody>
|
data/views/view_file.erubis
CHANGED
@@ -1,10 +1,10 @@
|
|
1
1
|
<% content_for :content do %>
|
2
|
-
<%= t
|
2
|
+
<%= t('runit.view_file.header', :name =>h(name), :host => h(host_name)) %> | <a href="/view.txt?file=<%= h(name) %>"><%= t('runit.view_file.raw') %></a>
|
3
3
|
|
4
4
|
<pre><%= h(text) %></pre>
|
5
5
|
<% end %>
|
6
6
|
<% content_for :footer do %>
|
7
7
|
<p>
|
8
|
-
<%= t
|
8
|
+
<%= t('runit.view_file.updated', :time => Time.now.utc) %> <a href="javascript:;" rel="nofollow" onclick="window.location.reload()"><%= t('runit.view_file.reload') %></a>
|
9
9
|
</p>
|
10
10
|
<% end %>
|
metadata
CHANGED
@@ -1,13 +1,13 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: runit-man
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
hash:
|
5
|
-
prerelease:
|
4
|
+
hash: 59
|
5
|
+
prerelease: false
|
6
6
|
segments:
|
7
7
|
- 1
|
8
|
-
-
|
9
|
-
-
|
10
|
-
version: 1.
|
8
|
+
- 11
|
9
|
+
- 0
|
10
|
+
version: 1.11.0
|
11
11
|
platform: ruby
|
12
12
|
authors:
|
13
13
|
- Akzhan Abdulin
|
@@ -15,7 +15,7 @@ autorequire:
|
|
15
15
|
bindir: bin
|
16
16
|
cert_chain: []
|
17
17
|
|
18
|
-
date: 2011-02-
|
18
|
+
date: 2011-02-18 00:00:00 +03:00
|
19
19
|
default_executable:
|
20
20
|
dependencies:
|
21
21
|
- !ruby/object:Gem::Dependency
|
@@ -78,7 +78,7 @@ dependencies:
|
|
78
78
|
type: :runtime
|
79
79
|
version_requirements: *id004
|
80
80
|
- !ruby/object:Gem::Dependency
|
81
|
-
name:
|
81
|
+
name: i18n
|
82
82
|
prerelease: false
|
83
83
|
requirement: &id005 !ruby/object:Gem::Requirement
|
84
84
|
none: false
|
@@ -88,9 +88,9 @@ dependencies:
|
|
88
88
|
hash: 11
|
89
89
|
segments:
|
90
90
|
- 0
|
91
|
-
-
|
92
|
-
-
|
93
|
-
version: 0.
|
91
|
+
- 5
|
92
|
+
- 0
|
93
|
+
version: 0.5.0
|
94
94
|
type: :runtime
|
95
95
|
version_requirements: *id005
|
96
96
|
- !ruby/object:Gem::Dependency
|
@@ -224,7 +224,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
224
224
|
requirements:
|
225
225
|
- none
|
226
226
|
rubyforge_project:
|
227
|
-
rubygems_version: 1.
|
227
|
+
rubygems_version: 1.3.7
|
228
228
|
signing_key:
|
229
229
|
specification_version: 3
|
230
230
|
summary: Runit web management tool.
|