alterator-xinetd-1.2/ 0000755 0000000 0000000 00000000000 11140065114 0014631 5 ustar 00root root 0000000 0000000 alterator-xinetd-1.2/Makefile 0000644 0000000 0000000 00000000373 11140065114 0016274 0 ustar 00root root 0000000 0000000 NAME=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/ 0000755 0000000 0000000 00000000000 11140065114 0017317 5 ustar 00root root 0000000 0000000 alterator-xinetd-1.2/applications/xinetd.desktop 0000644 0000000 0000000 00000000345 11140065114 0022207 0 ustar 00root root 0000000 0000000 [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/ 0000755 0000000 0000000 00000000000 11140065114 0016303 5 ustar 00root root 0000000 0000000 alterator-xinetd-1.2/backend3/xinetd 0000755 0000000 0000000 00000031525 11140065114 0017532 0 ustar 00root root 0000000 0000000 #!/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/ 0000755 0000000 0000000 00000000000 11140065114 0015561 5 ustar 00root root 0000000 0000000 alterator-xinetd-1.2/help/ru_RU/ 0000755 0000000 0000000 00000000000 11140065114 0016615 5 ustar 00root root 0000000 0000000 alterator-xinetd-1.2/help/ru_RU/xinetd.html 0000644 0000000 0000000 00000005736 11140065114 0021011 0 ustar 00root root 0000000 0000000
Службы xinetd
Службы xinetd
Xinetd (демон Интернет-служб) принимает соединения на заданных портах и
запускает соответствующие службы. В отличие от серверов, стартующих при
загрузке системы и бездействующих в ожидании запросов, xinetd представляет
собой только один процесс, чем экономит системные ресурсы.
Общие настройки (суммарное количество запущенных процессов,
число процессов, обслуживающих каждого клиента и список допустимых
адресов, с которых принимаются соединения) применяются ко всем
службам, для которых соответствующие поля не заполнены. Если список
допустимых адресов пуст, соединения будут приниматься со всех адресов.
Состояние службы определяет, будет ли обслуживаться
соответствующий порт или нет.
Настройки каждого сервера содержат также имя псевдо-пользователя
и псевдо-группы, от имени которых будет запущен процесс, путь к
исполняемому файлу сервера и его аргументы. Лимит
адресного пространства сервера может быть неограничен
("UNLIMITED") или числом с суффиксом "K" (килобайт),
"M" (мегабайт) или без суффикса.
Если не включён ни один из сервисов, xinetd не запускается. После
настройки пройдите по ссылке "Запустить, остановить или перезапустить
xinetd" и запустите его.
Внимание! Новые настройки вступают в силу только после перезапуска
службы. Осуществить это можно, воспользовавшись модулем «Системные
службы».
alterator-xinetd-1.2/po/ 0000755 0000000 0000000 00000000000 11140065114 0015247 5 ustar 00root root 0000000 0000000 alterator-xinetd-1.2/po/alterator-xinetd.pot 0000644 0000000 0000000 00000004676 11140065114 0021276 0 ustar 00root root 0000000 0000000 # 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.po 0000644 0000000 0000000 00000006235 11140065114 0016623 0 ustar 00root root 0000000 0000000 # 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.po 0000644 0000000 0000000 00000007433 11140065114 0016244 0 ustar 00root root 0000000 0000000 # 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.po 0000644 0000000 0000000 00000006717 11140065114 0016241 0 ustar 00root root 0000000 0000000 # 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/ 0000755 0000000 0000000 00000000000 11140065114 0016627 5 ustar 00root root 0000000 0000000 alterator-xinetd-1.2/templates/xinetd/ 0000755 0000000 0000000 00000000000 11140065114 0020122 5 ustar 00root root 0000000 0000000 alterator-xinetd-1.2/templates/xinetd/index.html 0000644 0000000 0000000 00000010737 11140065114 0022127 0 ustar 00root root 0000000 0000000
alterator-xinetd-1.2/ui/ 0000755 0000000 0000000 00000000000 11140065114 0015246 5 ustar 00root root 0000000 0000000 alterator-xinetd-1.2/ui/xinetd/ 0000755 0000000 0000000 00000000000 11140065114 0016541 5 ustar 00root root 0000000 0000000 alterator-xinetd-1.2/ui/xinetd/index.scm 0000644 0000000 0000000 00000014347 11140065114 0020365 0 ustar 00root root 0000000 0000000 (document:surround "/std/base")
(document:insert "/std/functions")
; Comments:
; -- labels are not used in the list, use names + change name of common settings object
;;;
;; making rows for listbox
(define (make-row cmd)
(let ((obj (woo-get-option cmd 'name)))
(if (string=? obj "__common_settings__")
(cons (_ "Common settings") "")
(cons obj (if (woo-get-option cmd 'state) "on" "off")))))
(define (curr-obj)
(let ((obj (main-listbox-id text)))
(if (string=? obj (_ "Common settings"))
"__common_settings__"
obj)))
;; write down all settings via backend
(define (apply-to-backend url)
(changed? value #f)
(woo-write (string-append "/xinetd/" url)
'state (state-id value)
'user (user-id text)
'group (group-id text)
'server (server-id text)
'server_args (server_args-id text)
'rlimit_as (rlimit_as-id text)
'instances (instances-id text)
'per_source (per_source-id text)
'only_from (only_from-id text) ))
;; reset all settings using data from backend
(define (reset-from-backend url)
(changed? value #f)
(let ((data (woo-read-first (string-append "/xinetd/" url))))
(internal? value (woo-get-option data 'type))
(label-id text (string-append "" (main-listbox-id text)
(if (internal? value)
(string-append " (" (_"internal service") ")")
"") "" ))
(description-id text (woo-get-option data 'description))
(state-id value (woo-get-option data 'state))
(user-id text (woo-get-option data 'user))
(group-id text (woo-get-option data 'group))
(server-id text (woo-get-option data 'server))
(server_args-id text (woo-get-option data 'server_args))
(rlimit_as-id text (woo-get-option data 'rlimit_as))
(instances-id text (woo-get-option data 'instances))
(per_source-id text (woo-get-option data 'per_source))
(only_from-id text (woo-get-option data 'only_from))
))
(define (reset-list)
(let ((cur (main-listbox-id current)))
(main-listbox-id
rows (map make-row (woo-list "/xinetd"))
current cur)))
(define (apply-and-reset backend)
(apply-to-backend backend)
(reset-from-backend backend)
(reset-list))
;;
(define (make-cb label)
(checkbox label (when toggled (changed? value #t))))
;; making widgets
(document:id internal? (checkbox value #f visibility #f name "internal?"))
(document:id common? (checkbox value #t visibility #f name "common?"))
(document:id changed? (checkbox value #f visibility #f))
(document:id old-obj (edit value "" visibility #f))
(splitbox columns "30;70"
(document:id main-listbox-id (listbox
header (vector (_ "Services"))
current 0
(when selected
(if (changed? value)
(if (eq? 'yes (document:popup-question (_"There are unsaved changes in the service settings. Do you want to apply these changes?") 'yes 'no))
(apply-and-reset (old-obj value))
(reset-from-backend (old-obj value))))
(reset-from-backend (curr-obj))
(common? value (string=? (curr-obj) "__common_settings__"))
(update-effect)
(old-obj value (curr-obj)))))
(groupbox ""
(document:id label-id (label ""))
(document:id description-id (textbox "" alterability #f))
(gridbox columns "0;100"
(spacer)
(document:id state-id
(checkbox (_ "Enable service") name "state-id"
;(when toggled (changed? value #t))
))
(label text (_ "User:") align "right" name "user-id")
(document:id user-id
(edit "" name "user-id" (when changed (changed? value #t))))
(label text (_ "Group:") align "right" name "group-id")
(document:id group-id
(edit "" name "group-id" (when changed (changed? value #t))))
(label text (_ "Server:") align "right" name "server-id")
(document:id server-id
(edit "" name "server-id" (when changed (changed? value #t))))
(label text (_ "Server args:") align "right" name "server_args-id")
(document:id server_args-id
(edit "" name "server_args-id" (when changed (changed? value #t))))
(label text (_ "Rlimit as:") align "right" name "rlimit_as-id")
(document:id rlimit_as-id
(edit "" name "rlimit_as-id" (when changed (changed? value #t))))
(label text (_ "Instances:") align "right" name "instances-id")
(document:id instances-id
(edit "" name "instances-id" (when changed (changed? value #t))))
(label text (_ "Per source:") align "right" name "per_source-id")
(document:id per_source-id
(edit "" name "per_source-id" (when changed (changed? value #t))))
(label text (_ "Only from:") align "right" name "only_from-id")
(document:id only_from-id
(edit "" name "only_from-id" (when changed (changed? value #t))))
(label(_ "This dialog changes only configuration file for xinetd. You must restart running xinetd to make it reread new configuration.") text-wrap #t colspan 2 )
(spacer)
(gridbox columns "0;0;100"
(button (_ "Apply") (when clicked (apply-and-reset (curr-obj))))
(button (_ "Reset") (when clicked (reset-from-backend (curr-obj))))
(spacer)
))))
(document:root (when loaded
(reset-list)
(reset-from-backend (curr-obj))
(old-obj value (curr-obj))
(init-effect)
))
(effect-hide "state-id" "common?" #t)
(effect-hide "user-id" "common?" #t)
(effect-hide "group-id" "common?" #t)
(effect-hide "server-id" "common?" #t)
(effect-hide "server_args-id" "common?" #t)
(effect-hide "rlimit_as-id" "common?" #t)
(effect-disable "user-id" "state-id" #f)
(effect-disable "group-id" "state-id" #f)
(effect-disable "server-id" "state-id" #f)
(effect-disable "server_args-id" "state-id" #f)
(effect-disable "rlimit_as-id" "state-id" #f)
(effect-disable "instances-id" "state-id" #f)
(effect-disable "per_source-id" "state-id" #f)
(effect-disable "only_from-id" "state-id" #f)
(effect-hide "user-id" "internal?" #t)
(effect-hide "group-id" "internal?" #t)
(effect-hide "server-id" "internal?" #t)
(effect-hide "server_args-id" "internal?" #t)
(effect-show "internal_label-id" "internal?" #t)
alterator-xinetd-1.2/xinetd/ 0000755 0000000 0000000 00000000000 11140065114 0016124 5 ustar 00root root 0000000 0000000 alterator-xinetd-1.2/xinetd/chargen-dgram.desktop 0000644 0000000 0000000 00000000103 11140065114 0022210 0 ustar 00root root 0000000 0000000 [Desktop Entry]
Comment=A chargen server. This is the udp version.
alterator-xinetd-1.2/xinetd/chargen-stream.desktop 0000644 0000000 0000000 00000000103 11140065114 0022411 0 ustar 00root root 0000000 0000000 [Desktop Entry]
Comment=A chargen server. This is the tcp version.
alterator-xinetd-1.2/xinetd/daytime-dgram.desktop 0000644 0000000 0000000 00000000103 11140065114 0022235 0 ustar 00root root 0000000 0000000 [Desktop Entry]
Comment=A daytime server. This is the udp version.
alterator-xinetd-1.2/xinetd/daytime-stream.desktop 0000644 0000000 0000000 00000000103 11140065114 0022436 0 ustar 00root root 0000000 0000000 [Desktop Entry]
Comment=A daytime server. This is the tcp version.
alterator-xinetd-1.2/xinetd/discard-dgram.desktop 0000644 0000000 0000000 00000000103 11140065114 0022212 0 ustar 00root root 0000000 0000000 [Desktop Entry]
Comment=A discard server. This is the udp version.
alterator-xinetd-1.2/xinetd/discard-stream.desktop 0000644 0000000 0000000 00000000103 11140065114 0022413 0 ustar 00root root 0000000 0000000 [Desktop Entry]
Comment=A discard server. This is the tcp version.
alterator-xinetd-1.2/xinetd/echo-dgram.desktop 0000644 0000000 0000000 00000000101 11140065114 0021515 0 ustar 00root root 0000000 0000000 [Desktop Entry]
Comment=An echo server. This is the udp version.
alterator-xinetd-1.2/xinetd/echo-stream.desktop 0000644 0000000 0000000 00000000101 11140065114 0021716 0 ustar 00root root 0000000 0000000 [Desktop Entry]
Comment=An echo server. This is the tcp version.
alterator-xinetd-1.2/xinetd/ftp.desktop 0000644 0000000 0000000 00000000114 11140065114 0020304 0 ustar 00root root 0000000 0000000 [Desktop Entry]
Comment=The vsftpd FTP server.
Comment[ru]=FTP-сервер
alterator-xinetd-1.2/xinetd/git.desktop 0000644 0000000 0000000 00000000203 11140065114 0020275 0 ustar 00root root 0000000 0000000 [Desktop Entry]
Comment=The git server offers access to git repositories.
Comment[ru]=Доступ к репозитариям GIT
alterator-xinetd-1.2/xinetd/printer.desktop 0000644 0000000 0000000 00000000312 11140065114 0021176 0 ustar 00root root 0000000 0000000 [Desktop Entry]
Comment=The cups-lpd mini daemon enable cups accepting jobs from a remote LPD client
Comment[ru]=Печать через CUPS заданий от удаленных LPD-клиентов
alterator-xinetd-1.2/xinetd/time-dgram.desktop 0000644 0000000 0000000 00000000111 11140065114 0021536 0 ustar 00root root 0000000 0000000 [Desktop Entry]
Comment=An RFC 868 time server. This is the udp version.
alterator-xinetd-1.2/xinetd/time-stream.desktop 0000644 0000000 0000000 00000000111 11140065114 0021737 0 ustar 00root root 0000000 0000000 [Desktop Entry]
Comment=An RFC 868 time server. This is the tcp version.