alterator-xinetd-1.2/000075500000000000000000000000001114006511400146315ustar00rootroot00000000000000alterator-xinetd-1.2/Makefile000064400000000000000000000003731114006511400162740ustar00rootroot00000000000000NAME=xinetd DESCRIPTION="Xinetd Server" INSTALL=/usr/bin/install all: clean: install: install-module install-data include /usr/share/alterator/build/module.mak install-data: install -d $(sysconfdir)/alterator cp -a xinetd $(sysconfdir)/alterator alterator-xinetd-1.2/applications/000075500000000000000000000000001114006511400173175ustar00rootroot00000000000000alterator-xinetd-1.2/applications/xinetd.desktop000064400000000000000000000003451114006511400222070ustar00rootroot00000000000000[Desktop Entry] Encoding=UTF-8 Type=Application Categories=X-Alterator-Servers Icon=xinetd Terminal=false Name=Xinetd server Name[ru]=Сетевой суперсервер (xinetd) X-Alterator-URI=/xinetd X-Alterator-Help=xinetd alterator-xinetd-1.2/backend3/000075500000000000000000000000001114006511400163035ustar00rootroot00000000000000alterator-xinetd-1.2/backend3/xinetd000075500000000000000000000315251114006511400175320ustar00rootroot00000000000000#!/usr/bin/perl -w use strict; use Alterator::Backend3; # set translation domain $TEXTDOMAIN = "alterator-xinetd"; $DEBUG=0; # Данные из всех конфигурационных файлов (/etc/xinetd.d/*, /etc/xinetd.conf) # читаются в общую структуру данных (хэш по id сервиса). # Чтение происходит по первому запросу list (чтоб успел правильно выставиться # язык) # # id берется из параметра "id", или, если его нет, из названия сервиса. # Названия сервисов с разными id могут совпадать (и для udp и tcp версий # INTERNAL services обычно совпадают) - так удивительно сделано в xinetd. # Названия конф.файлов и то, сколько секций в них содержится - роли не играет # (раньше было не так). Секция default ищется только в /etc/xinetd.conf. # # Секция default записывается в общую структуру под id __common_settings__ # Вообще, default settings требуют дальнейшего изучения... # (Параметры default settings влияют на те секции, в которых эти параметры не # установлены. То есть, для секций надо различать понятия "не установлен" и # "пустая строка". Как это сделать - непонятно, даже на уровне интерфейса.) # # Пока сделал так, что пустые строки в конф.файл не записываются. Это больше # всего соответствует заявленному поведению "common settings используются для # тех сервисов, для которых соответствующие поля не установлены". Возможно, # стоит вообще убрать редактирование секции defaults - пользы от нее мало, # а путаница возможна... # # Для каждого сервиса хранится имя файла, в котором находится секция и # порядковый номер секции с таким именем в этом файле (для различия одноименных # секций). # # Польза от того, что все данные читаются сразу: # - хочется сделать "лампочки" с состоянием сервиса в списке, # а для этого так и так надо разбирать все файлы # - при чтении списка можно правильно обрабатывать id # - можно устраивать отдельные команды бакенду commit/reset... # # По команде list бекенд, ничего не перечитывая, быстро отдает список. # По команде read бакенд перечитывает только нужный файл # (Возможно, несколько секций!) и отдает соответствующую информацию # По команде write бакенд сохраняет информацию в структуру и перезаписывает # нужную секцию в нужном файле... # Команды commit/reset пока не делаю... my $SERVICE_PROG = "/sbin/service"; my $XINETD_DIR = "/etc/xinetd.d"; my $XINETD_CONF = "/etc/xinetd.conf"; #my $LOGFILE = "/var/log/configd.log"; #open LOG, $LOGFILE or warn "can't open $LOGFILE\n"; my @params_returned_by_list = ("label", "state"); my @params_returned_by_read = ("label", "cardlabel", "description", "user", "group", "server", "server_args", "rlimit_as", "instances", "per_source", "only_from", "state", "type"); my @params_for_read = ("user", "group", "server", "server_args", "rlimit_as", "instances", "per_source", "only_from", "disable", "id", "type"); my @params_for_write = ("user", "group", "server", "server_args", "rlimit_as", "instances", "per_source", "only_from", "disable"); my @params_for_write_defaults = ("instances", "per_source", "only_from"); my @params_for_read_defaults = ("instances", "per_source", "only_from"); # main data table my %data; # hash of hashes #sub debug{ # my $text = shift; # my $errno = shift; # printf LOG "%s $TEXTDOMAIN: $text: $errno\n", time; #} ### reading defaults section and putting data to %data sub read_defaults{ my $file = shift; my $is_in = 0; my %service_info = (); open CF, $file or warn "can't open $file\n"; foreach my $line (){ chomp($line); # outside defaults section if ($is_in == 0){ if ($line =~ /^\s*defaults/){ $is_in = 1; $service_info{name} = "__common_settings__"; $service_info{id} = "__common_settings__"; $service_info{label} = _("Common settings"); $service_info{cardlabel} = _("Common settings"); $service_info{file} = $file; $service_info{description} = _("These settings will be applied to services with undefined fields"); $service_info{state} = '#t'; $service_info{type} = '#f'; next; } } if (($is_in == 1 ) && ($line =~ /^\s*{/)) { foreach (@params_for_read_defaults){ $service_info{$_} = ""; } $is_in = 2; next; } # inside section if ($is_in == 2){ foreach (@params_for_read_defaults){ if ($line =~ /^\s*$_\s*=\s*(.*)$/){ $service_info{$_} = $1; } } if ($line =~ /^\s*}/) { # end of section $is_in = 0; $data{$service_info{id}} = {%service_info}; return; } } } } sub set_label{ my $info = shift; # ref to object hash my $label_prefix=""; $label_prefix = "+ " if $info->{disable} eq 'no'; $label_prefix = "-- " if $info->{disable} eq 'yes'; $info->{label} = $label_prefix . $info->{id}; $info->{cardlabel} = $info->{id}; } ### reading service sections and putting data to %data sub read_file{ my $file = shift; my $is_desc = 0; my $is_in = 0; my %service_info = (); my %counts = (); # numbers of sections with same name open CF, $file or warn "can't open $file\n"; foreach my $line (){ chomp($line); # outside service section if ($is_in == 0){ # reading description if ($line =~ /^#\s*description:\s*([^\\]*)(\\?)$/) { $service_info{description}=$1; if (defined $2){ $is_desc = 1; } # to be continued... else {$is_desc = 0; } next; } if (($is_desc == 1) && ($line =~ /^#\s*([^\\]*)(\\?)$/)) { $service_info{description}.=" $1"; if (defined $2){ $is_desc = 1; } # to be continued... else {$is_desc = 0; } next; } if ($line =~ /^\s*service\s+(\S+)\s*$/){ foreach (@params_for_read){ $service_info{$_} = ''; } $service_info{name} = $1; $service_info{id} = $1; if (!exists($counts{$1})) {$counts{$1}=1;} else {$counts{$1}++;} $service_info{num} = $counts{$1}; $is_in = 1; next; } } if (($is_in == 1 ) && ($line =~ /^\s*{/)) { $is_in = 2; next; } # inside service section if ($is_in == 2){ foreach (@params_for_read){ if ($line =~ /^\s*$_\s*=\s*(.*)$/){ $service_info{$_} = $1; } } if ($line =~ /^\s*}/) { # end of section $is_in = 0; $service_info{file} = $file; set_label(\%service_info); $service_info{state} = ($service_info{disable} eq 'no')? '#t':'#f'; $service_info{description} = '' unless exists($service_info{description}); my $dt="/etc/alterator/xinetd/$service_info{id}.desktop"; $service_info{description} = `alterator-dump-desktop -v lang="$LANGUAGE" -v out="Comment" "$dt"` if -f $dt; $service_info{type} = ($service_info{type} eq "INTERNAL")? '#t':'#f'; $data{$service_info{id}} = {%service_info}; %service_info = (); } } } close CF; } ### sub write_section{ my $id = shift; my $temp = `mktemp`; chomp($temp); my $file = $data{$id}->{file}; my $name = $data{$id}->{name}; my $num = $data{$id}->{num}; my $is_in=0; open CF, $file or write_error(_("Can't open file"), $file); open TEMP, "> $temp" or write_error(_("Can't open temporary file"), $temp); $data{$id}->{disable} = ($data{$id}->{state} eq '#t')? 'no':'yes'; # It can be more then one section with the same name # Let's find $num-th section with # name $name in $file foreach my $line (){ # outside service section if ($is_in == 0){ print TEMP $line; if ($line =~ /^\s*service\s*$name\s*$/){ $num--; $is_in = 1 if ($num == 0); } } if (($is_in == 1 ) && ($line =~ /^\s*{/)) { print TEMP $line; # writing down all changable params foreach (@params_for_write){ next if !exists($data{$id}->{$_}); next if $data{$id}->{$_} eq ""; print TEMP "\t$_\t=\t$data{$id}->{$_}\n"; } $is_in = 2; next; } # inside service section if ($is_in == 2){ # deleting old values my $del=0; foreach (@params_for_write){ next if !exists($data{$id}->{$_}) || !defined($data{$id}->{$_}); $del=1 if ($line =~ /^\s*$_\s*=\s*(.*)$/); } print TEMP $line unless $del; if ($line =~ /^\s*}/) { # end of section $is_in = 0; } } } close (CF); close (TEMP); # do not use rename! `mv $temp $file`; } sub write_defaults{ my $id = '__common_settings__'; my $temp = `mktemp`; my $file = $XINETD_CONF; my $name = $data{$id}->{name}; my $num = $data{$id}->{num}; my $is_in=0; open CF, $file or write_error(_("Can't open file"), $file); open TEMP, "> $temp" or write_error(_("Can't open temporary file"), $temp); # It can be more then one section with the same name # Let's find $num-th section with # name $name in $file foreach my $line (){ # outside service section if ($is_in == 0){ print TEMP $line; if ($line =~ /^\s*defaults/){ $num--; $is_in = 1 if ($num == 0); next; } } if (($is_in == 1 ) && ($line =~ /^\s*{/)) { print TEMP $line; # writing down all changable params foreach (@params_for_write_defaults){ next if $data{$id}->{$_} eq ""; print TEMP "\t$_\t=\t$data{$id}->$_\n"; } $is_in = 2; next; } # inside service section if ($is_in == 2){ # deleting old values my $del=0; foreach (@params_for_write_defaults){ $del=1 if ($line =~ /^\s*$_\s*=\s*(.*)$/); } print TEMP $line unless $del; if ($line =~ /^\s*}/) { # end of section $is_in = 0; } } } close (CF); close (TEMP); # do not use rename! `mv $temp $file`; } sub read_all_the_list{ # reading "default" section read_defaults($XINETD_CONF); # other enties - from /etc/xinetd.d/* open LS, "ls -1 $XINETD_DIR |" or warn "can't execute ls $XINETD_DIR\n"; foreach my $file (){ next if $file !~ /\/?(\S+)/; next if $file =~ /\.rpm/; read_file("$XINETD_DIR/$1"); } close LS; read_file($XINETD_CONF); } sub action_constraints{ write_plain('state (default #f)'); } sub action_list{ foreach my $id (sort keys %data){ my @alist; foreach (@params_returned_by_list){ push @alist, $_; push @alist, exists($data{$id}->{$_})? $data{$id}->{$_}:''; } write_auto_named_list($id, @alist); } } sub action_read{ my $params = shift; my $id = $params->{_objects}; if (exists $data{$id}){ #re-read data (only one file!) if ($id eq "__common_settings__"){ read_defaults($XINETD_CONF);} else {read_file($data{$id}->{file});} foreach (@params_returned_by_read){ my $v = exists($data{$id}->{$_})? $data{$id}->{$_}:''; write_auto_param($_, $v); } } } sub action_write{ my $params = shift; my $id = $params->{_objects}; if (exists $data{$id}){ foreach (@params_for_write){ $data{$id}->{$_} = $params->{$_} if exists($params->{$_}); } $data{$id}->{state} = $params->{state}; if ($id eq "__common_settings__"){ write_defaults();} else { write_section($id); set_label($data{$id}); } } else { write_error(_("Unknown service"), $id); } } my $have_list=0; sub on_message{ my $params = shift; read_all_the_list() unless $have_list; $have_list=1; return if (! defined $params->{action}); if ($params->{action} eq 'constraints') { action_constraints();} elsif ($params->{action} eq 'list') { action_list();} elsif ($params->{action} eq 'read') { action_read($params);} elsif ($params->{action} eq 'write') { action_write($params);} } message_loop(\&on_message); alterator-xinetd-1.2/help/000075500000000000000000000000001114006511400155615ustar00rootroot00000000000000alterator-xinetd-1.2/help/ru_RU/000075500000000000000000000000001114006511400166155ustar00rootroot00000000000000alterator-xinetd-1.2/help/ru_RU/xinetd.html000064400000000000000000000057361114006511400210110ustar00rootroot00000000000000 Службы xinetd

Службы xinetd

Xinetd (демон Интернет-служб) принимает соединения на заданных портах и запускает соответствующие службы. В отличие от серверов, стартующих при загрузке системы и бездействующих в ожидании запросов, xinetd представляет собой только один процесс, чем экономит системные ресурсы.

Общие настройки (суммарное количество запущенных процессов, число процессов, обслуживающих каждого клиента и список допустимых адресов, с которых принимаются соединения) применяются ко всем службам, для которых соответствующие поля не заполнены. Если список допустимых адресов пуст, соединения будут приниматься со всех адресов.

Состояние службы определяет, будет ли обслуживаться соответствующий порт или нет.

Настройки каждого сервера содержат также имя псевдо-пользователя и псевдо-группы, от имени которых будет запущен процесс, путь к исполняемому файлу сервера и его аргументы. Лимит адресного пространства сервера может быть неограничен ("UNLIMITED") или числом с суффиксом "K" (килобайт), "M" (мегабайт) или без суффикса.

Если не включён ни один из сервисов, xinetd не запускается. После настройки пройдите по ссылке "Запустить, остановить или перезапустить xinetd" и запустите его.

Внимание! Новые настройки вступают в силу только после перезапуска службы. Осуществить это можно, воспользовавшись модулем «Системные службы».

alterator-xinetd-1.2/po/000075500000000000000000000000001114006511400152475ustar00rootroot00000000000000alterator-xinetd-1.2/po/alterator-xinetd.pot000064400000000000000000000046761114006511400212760ustar00rootroot00000000000000# SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. # FIRST AUTHOR , YEAR. # #, fuzzy msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2009-01-27 17:57+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=CHARSET\n" "Content-Transfer-Encoding: 8bit\n" #: standard input:1 msgid "Xinetd server" msgstr "" #: standard input:1 ui/xinetd/index.scm:87 msgid "Services" msgstr "" #: standard input:2 msgid "Select" msgstr "" #: standard input:3 ui/xinetd/index.scm:46 msgid "internal service" msgstr "" #: standard input:4 msgid "State" msgstr "" #: standard input:5 ui/xinetd/index.scm:112 msgid "User:" msgstr "" #: standard input:6 ui/xinetd/index.scm:116 msgid "Group:" msgstr "" #: standard input:7 ui/xinetd/index.scm:120 msgid "Server:" msgstr "" #: standard input:8 ui/xinetd/index.scm:124 msgid "Server args:" msgstr "" #: standard input:9 ui/xinetd/index.scm:128 msgid "Rlimit as:" msgstr "" #: standard input:10 ui/xinetd/index.scm:132 msgid "Instances:" msgstr "" #: standard input:11 ui/xinetd/index.scm:136 msgid "Per source:" msgstr "" #: standard input:12 ui/xinetd/index.scm:140 msgid "Only from:" msgstr "" #: standard input:13 ui/xinetd/index.scm:144 msgid "" "This dialog changes only configuration file for xinetd. You must restart " "running xinetd to make it reread new configuration." msgstr "" #: standard input:14 msgid "Start, stop or restart xinetd..." msgstr "" #: standard input:15 ui/xinetd/index.scm:149 msgid "Apply" msgstr "" #: backend3/xinetd:108 backend3/xinetd:109 ui/xinetd/index.scm:13 #: ui/xinetd/index.scm:18 msgid "Common settings" msgstr "" #: backend3/xinetd:112 msgid "These settings will be applied to services with undefined fields" msgstr "" #: backend3/xinetd:242 backend3/xinetd:306 msgid "Can't open file" msgstr "" #: backend3/xinetd:243 backend3/xinetd:307 msgid "Can't open temporary file" msgstr "" #: backend3/xinetd:424 msgid "Unknown service" msgstr "" #: ui/xinetd/index.scm:91 msgid "" "There are unsaved changes in the service settings. Do you want to apply " "these changes?" msgstr "" #: ui/xinetd/index.scm:108 msgid "Enable service" msgstr "" #: ui/xinetd/index.scm:150 msgid "Reset" msgstr "" alterator-xinetd-1.2/po/pt_BR.po000064400000000000000000000062351114006511400166230ustar00rootroot00000000000000# SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. # FIRST AUTHOR , YEAR. # msgid "" msgstr "" "Project-Id-Version: Alterator\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2009-01-27 17:57+0300\n" "PO-Revision-Date: 2008-12-02 22:29-0300\n" "Last-Translator: Fernando Martini \n" "Language-Team: pt_BR \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=utf-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Poedit-Language: Portuguese\n" "X-Poedit-Country: BRAZIL\n" "X-Poedit-SourceCharset: utf-8\n" "X-Poedit-Basepath: pt_BR\n" #: standard input:1 msgid "Xinetd server" msgstr "Servidor XINetD " #: standard input:1 ui/xinetd/index.scm:87 msgid "Services" msgstr "Serviços" #: standard input:2 msgid "Select" msgstr "" #: standard input:3 ui/xinetd/index.scm:46 msgid "internal service" msgstr "Serviço Interno" #: standard input:4 msgid "State" msgstr "" #: standard input:5 ui/xinetd/index.scm:112 msgid "User:" msgstr "Usuário:" #: standard input:6 ui/xinetd/index.scm:116 msgid "Group:" msgstr "Grupo:" #: standard input:7 ui/xinetd/index.scm:120 msgid "Server:" msgstr "Servidor:" #: standard input:8 ui/xinetd/index.scm:124 msgid "Server args:" msgstr "Argumentos de Servidor" #: standard input:9 ui/xinetd/index.scm:128 msgid "Rlimit as:" msgstr "RLimit como:" #: standard input:10 ui/xinetd/index.scm:132 msgid "Instances:" msgstr "Casos:" #: standard input:11 ui/xinetd/index.scm:136 msgid "Per source:" msgstr "por segundo:" #: standard input:12 ui/xinetd/index.scm:140 msgid "Only from:" msgstr "Apenas de:" #: standard input:13 ui/xinetd/index.scm:144 msgid "" "This dialog changes only configuration file for xinetd. You must restart " "running xinetd to make it reread new configuration." msgstr "" "Este diálogo só muda arquivo de configuração do xinetd. Você deve reiniciar " "executando o xinetd para torná-lo reli nova configuração." #: standard input:14 msgid "Start, stop or restart xinetd..." msgstr "" #: standard input:15 ui/xinetd/index.scm:149 msgid "Apply" msgstr "Aplicar" #: backend3/xinetd:108 backend3/xinetd:109 ui/xinetd/index.scm:13 #: ui/xinetd/index.scm:18 msgid "Common settings" msgstr "Configurações Comuns" #: backend3/xinetd:112 msgid "These settings will be applied to services with undefined fields" msgstr "Estas definições serão aplicadas aos serviços com campos indefinido" #: backend3/xinetd:242 backend3/xinetd:306 msgid "Can't open file" msgstr "Não pode abrir o arquivo" #: backend3/xinetd:243 backend3/xinetd:307 msgid "Can't open temporary file" msgstr "Não foi possível abrir o arquivo temporário" #: backend3/xinetd:424 msgid "Unknown service" msgstr "Serviço Desconhecido" #: ui/xinetd/index.scm:91 msgid "" "There are unsaved changes in the service settings. Do you want to apply " "these changes?" msgstr "" "Lá estão as alterações não salvas as definições de serviço. Deseja aplicar " "estas mudanças?" #: ui/xinetd/index.scm:108 msgid "Enable service" msgstr "Habilitar serviço" #: ui/xinetd/index.scm:150 msgid "Reset" msgstr "Resetar" alterator-xinetd-1.2/po/ru.po000064400000000000000000000074331114006511400162440ustar00rootroot00000000000000# SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. # # Andrey Cherepanov , 2008. msgid "" msgstr "" "Project-Id-Version: ru\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2009-01-27 17:57+0300\n" "PO-Revision-Date: 2008-09-01 18:01+0400\n" "Last-Translator: Andrey Cherepanov \n" "Language-Team: Russian \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Generator: KBabel 1.11.4\n" "Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%" "10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n" #: standard input:1 msgid "Xinetd server" msgstr "Службы xinetd" #: standard input:1 ui/xinetd/index.scm:87 msgid "Services" msgstr "Службы" #: standard input:2 msgid "Select" msgstr "Выбрать" #: standard input:3 ui/xinetd/index.scm:46 msgid "internal service" msgstr "встроенный сервис" #: standard input:4 msgid "State" msgstr "Состояние" #: standard input:5 ui/xinetd/index.scm:112 msgid "User:" msgstr "Пользователь:" #: standard input:6 ui/xinetd/index.scm:116 msgid "Group:" msgstr "Группа:" #: standard input:7 ui/xinetd/index.scm:120 msgid "Server:" msgstr "Сервер:" #: standard input:8 ui/xinetd/index.scm:124 msgid "Server args:" msgstr "Аргументы сервера:" #: standard input:9 ui/xinetd/index.scm:128 msgid "Rlimit as:" msgstr "Ограничения адресного пространства:" #: standard input:10 ui/xinetd/index.scm:132 msgid "Instances:" msgstr "Количество процессов:" #: standard input:11 ui/xinetd/index.scm:136 msgid "Per source:" msgstr "На каждого клиента:" #: standard input:12 ui/xinetd/index.scm:140 msgid "Only from:" msgstr "Только с адресов:" #: standard input:13 ui/xinetd/index.scm:144 msgid "" "This dialog changes only configuration file for xinetd. You must restart " "running xinetd to make it reread new configuration." msgstr "" "Этот диалог меняет конфигурационный файл для xinetd. Чтобы изменения " "повлияли на работающую службу xinetd — перезапустите её." #: standard input:14 msgid "Start, stop or restart xinetd..." msgstr "Запустить, остановить или перезапустить xinetd..." #: standard input:15 ui/xinetd/index.scm:149 msgid "Apply" msgstr "Применить" #: backend3/xinetd:108 backend3/xinetd:109 ui/xinetd/index.scm:13 #: ui/xinetd/index.scm:18 msgid "Common settings" msgstr "Общие настройки" #: backend3/xinetd:112 msgid "These settings will be applied to services with undefined fields" msgstr "" "Данные настройки будут применены к службам для которых соответствующие поля " "не определены" #: backend3/xinetd:242 backend3/xinetd:306 msgid "Can't open file" msgstr "Ошибка открытия файла" #: backend3/xinetd:243 backend3/xinetd:307 msgid "Can't open temporary file" msgstr "Ошибка создания временного файла" #: backend3/xinetd:424 msgid "Unknown service" msgstr "Неизвестная служба" #: ui/xinetd/index.scm:91 msgid "" "There are unsaved changes in the service settings. Do you want to apply " "these changes?" msgstr "" "В настройках сервиса произошли изменения. Хотите ли вы сохранить эти " "настройки?" #: ui/xinetd/index.scm:108 msgid "Enable service" msgstr "Включить сервис" #: ui/xinetd/index.scm:150 msgid "Reset" msgstr "Вернуть" alterator-xinetd-1.2/po/uk.po000064400000000000000000000067171114006511400162410ustar00rootroot00000000000000# This file is distributed under the same license as the PACKAGE package. # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER. # Michael Shigorin , 2007. # Wad Mashckoff , 2007. # msgid "" msgstr "" "Project-Id-Version: uk\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2009-01-27 17:57+0300\n" "PO-Revision-Date: 2007-09-27 18:26+0400\n" "Last-Translator: Wad Mashckoff \n" "Language-Team: Ukrainian \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Generator: KBabel 1.10.1\n" #: standard input:1 msgid "Xinetd server" msgstr "xinetd-сервер" #: standard input:1 ui/xinetd/index.scm:87 msgid "Services" msgstr "Служби" #: standard input:2 msgid "Select" msgstr "Вибрати" #: standard input:3 ui/xinetd/index.scm:46 msgid "internal service" msgstr "вбудована служба" #: standard input:4 msgid "State" msgstr "Стан" #: standard input:5 ui/xinetd/index.scm:112 msgid "User:" msgstr "Користувач:" #: standard input:6 ui/xinetd/index.scm:116 msgid "Group:" msgstr "Група:" #: standard input:7 ui/xinetd/index.scm:120 msgid "Server:" msgstr "Сервер:" #: standard input:8 ui/xinetd/index.scm:124 msgid "Server args:" msgstr "Аргументи сервера:" #: standard input:9 ui/xinetd/index.scm:128 msgid "Rlimit as:" msgstr "rlimit:" #: standard input:10 ui/xinetd/index.scm:132 msgid "Instances:" msgstr "Екземплярів:" #: standard input:11 ui/xinetd/index.scm:136 msgid "Per source:" msgstr "На одну адресу:" #: standard input:12 ui/xinetd/index.scm:140 msgid "Only from:" msgstr "Тільки з:" #: standard input:13 ui/xinetd/index.scm:144 msgid "" "This dialog changes only configuration file for xinetd. You must restart " "running xinetd to make it reread new configuration." msgstr "" "Цей діалог тільки змінює конфіґураційний файл xinetd.Ви маєте перезапустити " "xinetd, щоб зміни було враховано." #: standard input:14 msgid "Start, stop or restart xinetd..." msgstr "Запустити, зупинити або перевантажити xinetd..." #: standard input:15 ui/xinetd/index.scm:149 msgid "Apply" msgstr "Застосувати" #: backend3/xinetd:108 backend3/xinetd:109 ui/xinetd/index.scm:13 #: ui/xinetd/index.scm:18 msgid "Common settings" msgstr "Спільні налаштування" #: backend3/xinetd:112 msgid "These settings will be applied to services with undefined fields" msgstr "Ці налаштування буде застосовано до сервісів із невизначеними полями" #: backend3/xinetd:242 backend3/xinetd:306 msgid "Can't open file" msgstr "Неможливо відкрити файл" #: backend3/xinetd:243 backend3/xinetd:307 msgid "Can't open temporary file" msgstr "неможливо відкрити тимчасовий файл" #: backend3/xinetd:424 msgid "Unknown service" msgstr "Невідома служба" #: ui/xinetd/index.scm:91 msgid "" "There are unsaved changes in the service settings. Do you want to apply " "these changes?" msgstr "Зміни у налаштуваннях сервісу не збережено. Застосувати їх?" #: ui/xinetd/index.scm:108 msgid "Enable service" msgstr "Увімкнути службу" #: ui/xinetd/index.scm:150 msgid "Reset" msgstr "Скинути" alterator-xinetd-1.2/templates/000075500000000000000000000000001114006511400166275ustar00rootroot00000000000000alterator-xinetd-1.2/templates/xinetd/000075500000000000000000000000001114006511400201225ustar00rootroot00000000000000alterator-xinetd-1.2/templates/xinetd/index.html000064400000000000000000000107371114006511400221270ustar00rootroot00000000000000