runit-man 1.10.3 → 1.11.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.
- 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.
|