Compare commits
14
Commits
bcf0d456ee
..
0.25.2
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
51034e6e59 | ||
|
|
6235b78239 | ||
|
|
b3f2e1bfc6 | ||
|
|
75aececd6b | ||
|
|
7ad43e1e40 | ||
|
|
0663d62be8 | ||
|
|
ccf473515d | ||
|
|
de81a82f43 | ||
|
|
6ebf2fc7a3 | ||
|
|
2c58629de4 | ||
|
|
721fa8fdf1 | ||
|
|
fdbeb83ab6 | ||
|
|
deafdc34c7 | ||
|
|
7879eb0cdc |
+12
@@ -0,0 +1,12 @@
|
||||
*.o
|
||||
debian/Makefile
|
||||
source/Makefile
|
||||
source/bin/
|
||||
source/bforce/expression.c
|
||||
source/config.log
|
||||
source/config.status
|
||||
source/include/config.h
|
||||
bforce.geany
|
||||
|
||||
|
||||
|
||||
@@ -228,9 +228,32 @@ Alexey Khromov (zx@zxalexis.ru)
|
||||
+ Added pre-init debugging (primarily of config readout) to stderr by -v
|
||||
option. Vanished out errorful calls to "log" and "debug" before log and
|
||||
debug files initialization.
|
||||
+ As of bison is default yacc for (almost) every foss system - fix
|
||||
warning of yacc compliance (delete -y flag in Makefile.in)
|
||||
+ Fixed build on 64-bit systems (amd64 and aarch64)
|
||||
+ Initially added config options incpkt_flag and incbdl_flag to raise
|
||||
up flag-driven tosser manipulation
|
||||
|
||||
0.24.2
|
||||
+ Fixed environment variables while executing external programs
|
||||
on handshake or session end
|
||||
+ Fixed flags working on arcmail/netmail recieve
|
||||
|
||||
0.25
|
||||
+ EMSI handshake logic reworked to comply with EMSI-II std (FTSC-0088)
|
||||
+ New option: proto_order - dezired protocol order for outgoing calls
|
||||
in EMSI session handshake
|
||||
EMSI-II-compliance works as follows:
|
||||
* if both (caller and callee) expose EII flag - selected proto
|
||||
will be first in caller compat.options compatible with callee
|
||||
* if caller is EMSI-I-compliant and does not show EII flad -
|
||||
selection by callee internal order from compatible with caller
|
||||
+ Changed ifcico protocol port hardcoded to num and not name from
|
||||
/etc/services line (as of abscence of latter)
|
||||
+ Config example reworked to include new options
|
||||
+ New option: emsi_send_tz - to send TZUTC EMSI-handshake part.
|
||||
|
||||
0.25.1
|
||||
+ Added testing script for PSTN comms (tests folder).
|
||||
|
||||
0.25.2
|
||||
+ Adopted for outgoing IPv6 communication
|
||||
|
||||
|
||||
+26
-7
@@ -1,10 +1,10 @@
|
||||
В этом файле описывается процесс установки и настройки
|
||||
фидонет-совместимого мейлера bforce 0.22.8.ugenk1.
|
||||
фидонет-совместимого мейлера bforce 0.xx.
|
||||
|
||||
В данном документе приняты следующие обозначения:
|
||||
|
||||
<SRCDIR> - путь, куда вы распаковали тарболл с исходными
|
||||
текстами bforce 0.22.8.ugenk1 (далее bforce)
|
||||
текстами bforce 0.xx (далее bforce)
|
||||
Тарболл - файл с расширением tar.gz, или tar.bz2
|
||||
|
||||
|
||||
@@ -24,14 +24,14 @@ gmake
|
||||
|
||||
Распакуйте тарболл следующими командами:
|
||||
|
||||
gzip -d bforce-0.22.8.ugenk1.tar.gz
|
||||
gzip -d bforce-master.tar.gz
|
||||
или
|
||||
bzip2 -d bforce-0.22.8.ugenk1.tar.bz2
|
||||
bzip2 -d bforce-master.tar.bz2
|
||||
|
||||
tar -xvf bforce-0.22.8.ugenk1.tar
|
||||
tar -xvf bforce-master.tar
|
||||
|
||||
Перейдите в директорию bforce-0.22.8.ugenk1/source:
|
||||
cd <SRCDIR>/bforce-0.22.8.ugenk1/source
|
||||
Перейдите в директорию bforce/source:
|
||||
cd <SRCDIR>/bforce/source
|
||||
|
||||
Для создания Makefile, который наиболее подходит к вашей
|
||||
системе, наберите:
|
||||
@@ -76,6 +76,11 @@ gmake install
|
||||
Настройка
|
||||
=========
|
||||
|
||||
Рекомендуется установить системную переменную BFCONFIG,
|
||||
указывающую на местоположение конфигурации bforce.
|
||||
Проще всего через /etc/environment для общесистемной или
|
||||
.profile для переменной пользователя.
|
||||
|
||||
Для нормальной работы вам нужно отредактировать конфигурационные файлы
|
||||
bforce. По умолчанию они находятся в /usr/local/fido/etc и называются
|
||||
bforce.conf - основной конфигурационный файл bforce
|
||||
@@ -125,6 +130,19 @@ cat `which mgetty` |strings |grep FIDO |wc -l
|
||||
|
||||
где news - это пользователь, из-под которого у вас работает ftn-подсистема.
|
||||
|
||||
Bforce при ИСХОДЯЩИХ звонках использует файлы блокировки порта модема,
|
||||
при несовпадении каталога или невозможности создания файла
|
||||
mgetty сбросит модем во время звонка.
|
||||
Поэтому настоятельно рекомендуется проверить права на папку /var/lock
|
||||
и то, на какой ФС она расположенв.
|
||||
Современные системы имеют тенденцию к применению /var/lock как ссылки
|
||||
на /run/lock, а ФС /run монтируется и создается на tmpfs при каждой
|
||||
загрузке с помощью systemd-tempfiles.
|
||||
Для изменения поведения необходимо создать файл в /etc/tempfiles.d/,
|
||||
совпадающим (за исключением части имени -part) c именем файла в
|
||||
/usr/lib/systemd/systemd-tempfiles.d.
|
||||
Рабочий пример legacy-part.conf в папке contrib.
|
||||
|
||||
Совместная работа с inetd/xinetd
|
||||
================================
|
||||
К сожалению (или к счастью), bforce не умеет самостоятельно принимать входящие
|
||||
@@ -150,6 +168,7 @@ init.d/bforce - init-
|
||||
bfha - bforce history analyzer (bfha)
|
||||
bfha/README - bfha README
|
||||
bfha/bfha.pl - собственно, bfha
|
||||
legacy-part.conf - файл для донастройки прав на /run/lock в systemd
|
||||
u-srif - продвинутый freq-процессор
|
||||
u-srif/u-srif-index.py \ с поддержой отчетов,
|
||||
u-srif/u-srif-lookup.py \ ограничений,
|
||||
|
||||
@@ -0,0 +1,19 @@
|
||||
# This file is part of systemd.
|
||||
#
|
||||
# systemd is free software; you can redistribute it and/or modify it
|
||||
# under the terms of the GNU Lesser General Public License as published by
|
||||
# the Free Software Foundation; either version 2.1 of the License, or
|
||||
# (at your option) any later version.
|
||||
|
||||
# See tmpfiles.d(5) for details
|
||||
|
||||
# These files are considered legacy and are unnecessary on legacy-free
|
||||
# systems.
|
||||
|
||||
d /run/lock 0777 root lock -
|
||||
L /var/lock - - - - ../run/lock
|
||||
|
||||
# /run/lock/subsys is used for serializing SysV service execution, and
|
||||
# hence without use on SysV-less systems.
|
||||
|
||||
d /run/lock/subsys 0775 root lock -
|
||||
+32
-2
@@ -63,6 +63,12 @@ address 20:26/100.0@easynet
|
||||
#
|
||||
options NoDirZap NoJanus NoChat
|
||||
|
||||
# Protocol order for outgoing EMSI calls
|
||||
# Tolerant to Options (i.e. you can order all kind of protos
|
||||
# as of TZA,KER,JAN and SLK are not supported at all
|
||||
# Default: HYD,JAN,DZA,ZAP,ZMO,TZA,SLK,KER
|
||||
proto_order HYD,ZMO,ZAP,DZA,JAN,TZA,KER,SLK
|
||||
|
||||
#
|
||||
# Domain outbounds
|
||||
# Domain <domain_name> <outbound_dir> <zone>
|
||||
@@ -109,13 +115,13 @@ split_inbound yes
|
||||
#
|
||||
# Path to your 4D outbound (use zone as extension)
|
||||
#
|
||||
#outbound_directory /var/spool/fido/bt/out
|
||||
outbound_directory /var/spool/fido/bt/out
|
||||
|
||||
#
|
||||
# Path to your AmigaDos style 4D outbound.
|
||||
# (You can use all outbound styles at the same time)
|
||||
#
|
||||
amiga_outbound_directory /var/spool/fido/bt/out
|
||||
#amiga_outbound_directory /var/spool/fido/bt/out
|
||||
|
||||
#
|
||||
# Directory with your nodelists (for nodelist without full path)
|
||||
@@ -253,6 +259,10 @@ mode_request 100660
|
||||
# '~' 1 second delay
|
||||
# '`' 1/4 second delay
|
||||
|
||||
# Modem lock directory (/var/lock as in FHS-3.0
|
||||
# if you have it on tmpfs by systemd - read INSTALL.ru)
|
||||
# uucp_lock_directory /var/lock
|
||||
|
||||
#
|
||||
# Yor modem devices names (will use first not locked one)
|
||||
# ModemDev <device>[<:lock_speed>]
|
||||
@@ -342,6 +352,9 @@ max_speed 57600
|
||||
flags XW,V34B,IDC,LMD
|
||||
emsi_OH_time 22:00-07:30
|
||||
emsi_FR_time 22:30-05:30
|
||||
#emsi_send_tz no
|
||||
#emsi_send_time no
|
||||
|
||||
|
||||
#
|
||||
# Our receiver buffer size [bytes]
|
||||
@@ -442,6 +455,23 @@ skip_files_recv *.pif *.swp
|
||||
# setsid - run command in a new session
|
||||
# useshell - run command by calling a shell (/bin/sh)
|
||||
#
|
||||
# Bforce will make environment for external programs
|
||||
# which include these variables:
|
||||
# $REM_ADDR_FTN - remote ftn address
|
||||
# $REM_ADDR_INET - remote inet address
|
||||
# $LOC_ADDR_FTN - local ftn address
|
||||
# $LOC_ADDR_INET - local inet address
|
||||
# $PASSWORD - session password
|
||||
# $MAILER - remote mailer
|
||||
# $LOCATION - remote location
|
||||
# $SYSOP - remote SysOp name
|
||||
# $SYSTEM_NAME - remote station name
|
||||
# $PHONE - remote phone
|
||||
# $FLAGS - remote flags
|
||||
# $PROTECTED - password protected on both sides
|
||||
# $LISTED - present in nodelist
|
||||
# $INBOUND - current inbound path for this remote
|
||||
#
|
||||
#run_after_handshake [logout]/bin/echo "Hello, world!"
|
||||
#run_after_session [nowait,setsid]/usr/local/lib/ftp/run-in
|
||||
#
|
||||
|
||||
+1
-1
@@ -1 +1 @@
|
||||
0.24.1
|
||||
0.25.2
|
||||
|
||||
@@ -23,6 +23,8 @@
|
||||
/* PID of our child process (if use fork) */
|
||||
pid_t child_pid = 0;
|
||||
|
||||
char * mainenv[EXEC_MAX_NUM_ENVS+1];
|
||||
|
||||
const char *BFERR[] = {
|
||||
/* 00 */ "Successfull",
|
||||
/* 01 */ "Fatal error occured",
|
||||
@@ -253,6 +255,16 @@ int main(int argc, char *argv[], char *envp[])
|
||||
int rc = 0;
|
||||
int ch = 0;
|
||||
opts.runmode = MODE_UNDEFINED;
|
||||
int i = 0;
|
||||
|
||||
mainenv[0] = NULL;
|
||||
i=0;
|
||||
while (envp[i]) {
|
||||
mainenv[i] = malloc(strlen(envp[i])+2);
|
||||
strcpy(mainenv[i], envp[i]);
|
||||
mainenv[++i] = NULL;
|
||||
DEB((D_FREE, "Program ENV: %s\n", mainenv[(i-1)]));
|
||||
}
|
||||
|
||||
memset(&opts, '\0', sizeof(s_bforce_opts));
|
||||
|
||||
@@ -491,6 +503,13 @@ exit:
|
||||
deinit_conf();
|
||||
deinit_opts(&opts);
|
||||
|
||||
/* de-init sessenv */
|
||||
i=0;
|
||||
while(mainenv[i]) {
|
||||
DEB((D_FREE, "De-init session ENV: %s\n", mainenv[(i)]));
|
||||
free(mainenv[i++]);
|
||||
}
|
||||
|
||||
/* Shutdown logging services */
|
||||
if( log_isopened() ) log_close();
|
||||
DEB((D_FREE, "good exit"));
|
||||
|
||||
@@ -84,6 +84,8 @@ s_conf_entry bforce_config[BFORCE_NUMBER_OF_KEYWORDS+1] = {
|
||||
CONF_KEY(emsi_FR_time, CT_STRING),
|
||||
CONF_KEY(emsi_OH_time, CT_STRING),
|
||||
CONF_KEY(emsi_slave_sends_nak, CT_BOOLEAN),
|
||||
CONF_KEY(emsi_send_tz, CT_BOOLEAN),
|
||||
CONF_KEY(emsi_send_time, CT_BOOLEAN),
|
||||
CONF_KEY(filebox, CT_FILEBOX),
|
||||
CONF_KEY(filebox_directory, CT_PATH),
|
||||
CONF_KEY(flags, CT_STRING),
|
||||
@@ -144,6 +146,7 @@ s_conf_entry bforce_config[BFORCE_NUMBER_OF_KEYWORDS+1] = {
|
||||
CONF_KEY(password, CT_PASSWORD),
|
||||
CONF_KEY(phone, CT_STRING),
|
||||
CONF_KEY(phone_translate, CT_TRANSLATE),
|
||||
CONF_KEY(proto_order, CT_STRING),
|
||||
CONF_KEY(recode_file_in, CT_STRING),
|
||||
CONF_KEY(recode_file_out, CT_STRING),
|
||||
CONF_KEY(recode_intro_in, CT_STRING),
|
||||
|
||||
@@ -170,7 +170,7 @@ int conf_readconf(const char *confname, int inclevel, bool earlydbg)
|
||||
{
|
||||
if (earlydbg)
|
||||
fprintf(stderr,"BF-DEBUG: can't open config file \"%s\"\n", confname);
|
||||
return(PROC_RC_IGNORE);
|
||||
return(PROC_RC_ABORT);
|
||||
}
|
||||
if (earlydbg)
|
||||
fprintf(stderr,"BF-DEBUG: start reading config \"%s\"\n", confname);
|
||||
|
||||
@@ -161,7 +161,7 @@ static int daemon_sysentry_init(s_sysentry *sysent)
|
||||
strcpy(msg, "freqs holded");
|
||||
}
|
||||
|
||||
if( msg && *msg )
|
||||
if( *msg )
|
||||
log("QUEUE: add %s (%s)", ftn_addrstr(abuf, sysent->node.addr), msg);
|
||||
else
|
||||
log("QUEUE: add %s", ftn_addrstr(abuf, sysent->node.addr));
|
||||
@@ -194,7 +194,7 @@ static bool daemon_node_cancall_line(const s_node *node, const s_override *ovrd)
|
||||
if( modem_isgood_phone(ovrd->sPhone) )
|
||||
good_phone = TRUE;
|
||||
}
|
||||
else if( node && node->phone && *node->phone )
|
||||
else if( node && *node->phone )
|
||||
{
|
||||
if( modem_isgood_phone(node->phone) )
|
||||
good_phone = TRUE;
|
||||
|
||||
@@ -39,8 +39,8 @@ static s_modemport *daemon_getfree_port(const char *lockdir)
|
||||
|
||||
static int daemon_call_branch(s_sysentry *syst, const char *lockdir, s_modemport *port)
|
||||
{
|
||||
int rc = BFERR_NOERROR;
|
||||
char abuf[BF_MAXADDRSTR+1];
|
||||
//int rc = BFERR_NOERROR;
|
||||
//char abuf[BF_MAXADDRSTR+1];
|
||||
|
||||
/*
|
||||
* First of all restore the default signal handlers
|
||||
|
||||
@@ -68,7 +68,8 @@ int req_createsrif(char *sname, char *req, char *rsp)
|
||||
else
|
||||
fprintf(fp, "Sysop SysOp\n");
|
||||
|
||||
if( aptr = session_1remote_address() )
|
||||
aptr = session_1remote_address();
|
||||
if( aptr )
|
||||
fprintf(fp, "AKA %s\n", ftn_addrstr(abuf, *aptr));
|
||||
else
|
||||
return -1;
|
||||
|
||||
+74
-22
@@ -19,29 +19,50 @@
|
||||
|
||||
#define DEFAULT_PORT 60179 /* Birthday .. mother fucker :) */
|
||||
|
||||
struct addrinfo *ai = NULL;
|
||||
|
||||
static RETSIGTYPE tcpip_interrupt(int sig)
|
||||
{
|
||||
tty_abort = TRUE;
|
||||
log("terminating on signal %d", sig);
|
||||
(void)log("terminating on signal %d", sig);
|
||||
}
|
||||
|
||||
static RETSIGTYPE tcpip_brokenpipe(int sig)
|
||||
{
|
||||
tty_abort = TRUE;
|
||||
if( tty_online )
|
||||
log("connection closed");
|
||||
(void)log("connection closed");
|
||||
else
|
||||
log("terminating on signal %d", sig);
|
||||
(void)log("terminating on signal %d", sig);
|
||||
}
|
||||
|
||||
static int tcpip_connect2(struct sockaddr_in server)
|
||||
static int tcpip_connect2(struct addrinfo *ai)
|
||||
{
|
||||
int fd;
|
||||
int fd = -1;
|
||||
char hbuf[NI_MAXHOST], sbuf[NI_MAXSERV];
|
||||
|
||||
DEB((D_INFO, "tcpip_connect2: trying \"%s\" at port %d",
|
||||
inet_ntoa(server.sin_addr), (int)ntohs(server.sin_port)));
|
||||
struct addrinfo *rai;
|
||||
|
||||
if( (fd = socket(AF_INET, SOCK_STREAM, 0)) < 0 )
|
||||
for (rai = ai; rai != NULL; rai = rai->ai_next)
|
||||
{
|
||||
if (getnameinfo(rai->ai_addr, rai->ai_addrlen, hbuf, sizeof(hbuf), sbuf,
|
||||
sizeof(sbuf), NI_NUMERICHOST | NI_NUMERICSERV) == 0)
|
||||
DEB((D_INFO, "tcpip_connect2: trying host=%s, serv=%s", hbuf, sbuf));
|
||||
|
||||
fd = socket (rai->ai_family, rai->ai_socktype, rai->ai_protocol);
|
||||
|
||||
if ( fd == -1 )
|
||||
{
|
||||
DEB((D_INFO, "tcpip_connect2: socket error"));
|
||||
continue;
|
||||
}
|
||||
else break;
|
||||
|
||||
hbuf[0]='\0';
|
||||
sbuf[0]='\0';
|
||||
}
|
||||
DEB((D_INFO, "tcpip_connect2: socket success: %d", fd));
|
||||
if (fd < 0 )
|
||||
{
|
||||
logerr("can't create socket");
|
||||
return(1);
|
||||
@@ -84,9 +105,9 @@ static int tcpip_connect2(struct sockaddr_in server)
|
||||
clearerr(stdout);
|
||||
clearerr(stderr);
|
||||
|
||||
if( connect(0, (struct sockaddr*)&server, sizeof(server)) == -1 )
|
||||
if( connect(0, rai->ai_addr, rai->ai_addrlen) == -1 )
|
||||
{
|
||||
logerr("can't connect to %s", inet_ntoa(server.sin_addr));
|
||||
logerr("can't connect to %s", hbuf);
|
||||
close(0);
|
||||
close(1);
|
||||
close(2);
|
||||
@@ -99,8 +120,7 @@ static int tcpip_connect2(struct sockaddr_in server)
|
||||
return 1;
|
||||
}
|
||||
|
||||
log("TCP/IP connect to %s on port %d",
|
||||
inet_ntoa(server.sin_addr), (int)ntohs(server.sin_port));
|
||||
(void)log("TCP/IP connect success to %s on service %s", hbuf, sbuf);
|
||||
|
||||
return(0);
|
||||
}
|
||||
@@ -108,14 +128,23 @@ static int tcpip_connect2(struct sockaddr_in server)
|
||||
int tcpip_connect(const char *hostname, e_tcpmode tcpmode)
|
||||
{
|
||||
int rc = 0;
|
||||
struct hostent *he = NULL;
|
||||
struct servent *se = NULL;
|
||||
struct sockaddr_in server;
|
||||
//struct hostent *he = NULL;
|
||||
//struct servent *se = NULL;
|
||||
//struct sockaddr_in server;
|
||||
//struct sockaddr_storage server;
|
||||
|
||||
struct addrinfo *aisave = NULL;
|
||||
struct addrinfo aihints;
|
||||
int nameres = 0;
|
||||
|
||||
|
||||
char *host = xstrcpy(hostname);
|
||||
char *p = strrchr(host, ':');
|
||||
const char *port = NULL;
|
||||
|
||||
server.sin_family = AF_INET;
|
||||
|
||||
// AF_INET - only IPv4
|
||||
//server.sin_family = AF_INET;
|
||||
|
||||
if( p )
|
||||
{ *p++ = '\0'; port = p; }
|
||||
@@ -123,18 +152,34 @@ int tcpip_connect(const char *hostname, e_tcpmode tcpmode)
|
||||
port = "binkp";
|
||||
else if( tcpmode == TCPMODE_TELNET )
|
||||
port = "telnet";
|
||||
else /* Default service name is "fido" */
|
||||
port = "fido";
|
||||
else /* Can not rely on /etc/services - it is not well-known port */
|
||||
port = "60179";
|
||||
|
||||
// Do not need it
|
||||
/*
|
||||
if( ISDEC(port) )
|
||||
server.sin_port = htons(atoi(port));
|
||||
else if( (se = getservbyname(port, "tcp")) )
|
||||
server.sin_port = se->s_port;
|
||||
else
|
||||
{ log("invalid port or service name \"%s\"", port); rc = 1; }
|
||||
*/
|
||||
//if( rc == 0 )
|
||||
//{
|
||||
DEB((D_INFO, "tcpip_connect: port is %s", port));
|
||||
memset( &aihints, 0, sizeof( aihints) );
|
||||
aihints.ai_family = AF_UNSPEC;
|
||||
//aihints.ai_socktype = SOCK_STREAM;
|
||||
aihints.ai_protocol = IPPROTO_TCP;
|
||||
|
||||
if( rc == 0 )
|
||||
nameres = getaddrinfo ( host, port, &aihints, &ai );
|
||||
if ( nameres != 0 )
|
||||
{
|
||||
rc = 1;
|
||||
log("Resolver error for host %s, port %s: \"%s\".", host, port, gai_strerror(nameres));
|
||||
}
|
||||
// GetHostByName works with IPv4 only and *deprecated*
|
||||
/*
|
||||
if( (he = gethostbyname(host)) )
|
||||
{
|
||||
memcpy(&server.sin_addr, he->h_addr, he->h_length);
|
||||
@@ -159,12 +204,19 @@ int tcpip_connect(const char *hostname, e_tcpmode tcpmode)
|
||||
log("unknown error while resolving host \"%s\"", host);
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
} */
|
||||
//}
|
||||
|
||||
if( host ) { free(host); host = NULL; }
|
||||
DEB((D_INFO, "tcpip_connect: resolver got result!"));
|
||||
aisave = ai;
|
||||
|
||||
return rc ? rc : tcpip_connect2(server);
|
||||
if (rc == 0 )
|
||||
rc = tcpip_connect2(ai);
|
||||
|
||||
freeaddrinfo( aisave );
|
||||
|
||||
return rc;
|
||||
}
|
||||
|
||||
int tcpip_init(void)
|
||||
|
||||
@@ -77,7 +77,7 @@ static char *lock_getname(const char *lockdir, const s_modemport *modemport)
|
||||
|
||||
ASSERT(modemport != NULL);
|
||||
|
||||
if( lockdir && *lockdir )
|
||||
if( *lockdir )
|
||||
lckname = (char *)xstrcpy(lockdir);
|
||||
else
|
||||
lckname = (char *)xstrcpy(BFORCE_LOCK_DIR);
|
||||
@@ -314,7 +314,7 @@ int port_lock(const char *lockdir, const s_modemport *modemport)
|
||||
char *lckname;
|
||||
char *tmpname, *p_tmpname;
|
||||
|
||||
if( lockdir && *lockdir )
|
||||
if( *lockdir )
|
||||
tmpname = xstrcpy(lockdir);
|
||||
else
|
||||
tmpname = xstrcpy(BFORCE_LOCK_DIR);
|
||||
|
||||
@@ -307,7 +307,7 @@ int tty_putc(unsigned char ch, int timeout)
|
||||
|
||||
int tty_puts(const unsigned char *s, int timeout)
|
||||
{
|
||||
return tty_write_timeout(s, strlen(s), timeout);
|
||||
return tty_write_timeout(s, strlen((char *)s), timeout);
|
||||
}
|
||||
|
||||
int tty_getc(int timeout)
|
||||
|
||||
+10
-3
@@ -283,6 +283,8 @@ int logerr(const char *s, ...)
|
||||
|
||||
#ifdef USE_SYSLOG
|
||||
|
||||
bool slog_active = FALSE;
|
||||
|
||||
const char *log_getfilename(int whatfor)
|
||||
{
|
||||
const char *p = "/dev/null";
|
||||
@@ -291,22 +293,27 @@ const char *log_getfilename(int whatfor)
|
||||
|
||||
bool log_isopened(void)
|
||||
{
|
||||
return TRUE;
|
||||
return slog_active;
|
||||
}
|
||||
|
||||
int log_open(const char *logname, const char *ext, const char *tty)
|
||||
{
|
||||
char *p = "bforce";
|
||||
char *p = "bforce ";
|
||||
p = xstrcat(p, BF_VERSION);
|
||||
int fac = conf_number(cf_syslog_facility);
|
||||
if( tty && *tty )
|
||||
strncpy(p, tty, sizeof(p));
|
||||
openlog(p, LOG_PID, fac);
|
||||
slog_active = TRUE;
|
||||
return 0;
|
||||
}
|
||||
|
||||
int log_reopen(const char *logname, const char *ext, const char *tty)
|
||||
{
|
||||
return 0;
|
||||
if ( !slog_active ) {
|
||||
return (log_reopen(logname, ext, tty));
|
||||
} else
|
||||
return 0;
|
||||
}
|
||||
|
||||
int log_close(void)
|
||||
|
||||
@@ -73,9 +73,18 @@ int exec_options_parse(char *str)
|
||||
|
||||
void exec_options_init(s_exec_options *eopt)
|
||||
{
|
||||
int i = 0;
|
||||
|
||||
memset(eopt, '\0', sizeof(s_exec_options));
|
||||
eopt->umask = EXEC_DEFAULT_UMASK;
|
||||
eopt->envp[0] = NULL;
|
||||
|
||||
while(mainenv[i]) {
|
||||
DEB((D_FREE,"EXEC: Added ENV variable: %s\n", mainenv[i]));
|
||||
eopt->envp[i] = xmalloc(strlen(mainenv[i]) + 2);
|
||||
strcpy(eopt->envp[i],mainenv[i]);
|
||||
eopt->envp[++i] = NULL;
|
||||
}
|
||||
}
|
||||
|
||||
void exec_options_deinit(s_exec_options *eopt)
|
||||
|
||||
@@ -117,12 +117,13 @@ int binkp_loop(s_binkp_state *bstate) {
|
||||
|
||||
// session criterium handshake criterium
|
||||
while (!bstate->complete || bstate->waiting_got) {
|
||||
DEB((D_24554, "loop s: %d r: %d p: %d sp: %d", bstate->batchsendcomplete, bstate->batchreceivecomplete,
|
||||
DEB((D_24554, ">>> BinkP loop sendcpl: %d recvcpl: %d phase: %d subphase: %d", bstate->batchsendcomplete, bstate->batchreceivecomplete,
|
||||
bstate->phase, bstate->subphase));
|
||||
if (bstate->continuesend) {
|
||||
no_more_to_send = false;
|
||||
bstate->continuesend = false;
|
||||
}
|
||||
|
||||
if (have_to_write==0 && (!no_more_to_send || bstate->extracmd[0]!=-1)) {
|
||||
m = binkp_getforsend(bstate, writebuf+BINKP_HEADER, &block_type, &block_length);
|
||||
if(m==1 || m==3) {
|
||||
@@ -267,6 +268,7 @@ int binkp_loop(s_binkp_state *bstate) {
|
||||
have_to_write -= n;
|
||||
}
|
||||
}
|
||||
DEB((D_24554,"+++ BinkP Loop ended with rc=%d", bstate->rc));
|
||||
return bstate->rc;
|
||||
}
|
||||
|
||||
@@ -339,7 +341,7 @@ int binkp_getforsend(s_binkp_state *bstate, char *buf, int *block_type, unsigned
|
||||
int my_sf, wr_pos;
|
||||
int n; // read file
|
||||
if (bstate->extracmd[0]!=-1) {
|
||||
DEB((D_24554, "send command from receiver %d %s", bstate->extracmd[0], bstate->extracmd+1));
|
||||
DEB((D_24554, "Send cmd to remote %d %s", bstate->extracmd[0], bstate->extracmd+1));
|
||||
buf[0] = bstate->extracmd[0];
|
||||
strcpy(buf+1, bstate->extracmd+1);
|
||||
*block_type = BINKP_BLK_CMD;
|
||||
@@ -625,7 +627,7 @@ case 4:
|
||||
return 1;
|
||||
|
||||
case 5:
|
||||
DEB((D_24554, "nothing to send"));
|
||||
DEB((D_24554, "BinkP_GetForSend: nothing to send"));
|
||||
return 2;
|
||||
|
||||
|
||||
@@ -804,7 +806,7 @@ case 0:
|
||||
bstate->frs = frs_data;
|
||||
return 1;
|
||||
}
|
||||
DEB((D_24554, "making M_GET to skip downloaded part"));
|
||||
DEB((D_24554, "making M_GET to skip downloaded part, file: %s, size %ld, time %ld, mode 0",recvfi.fn,recvfi.sz, recvfi.tm ));
|
||||
bstate->extracmd[0] = BPMSG_GET;
|
||||
sprintf(bstate->extracmd+1, "%s %ld %ld %ld",
|
||||
bstate->pi->recv->net_name, (long)bstate->pi->recv->bytes_total,
|
||||
|
||||
@@ -45,7 +45,7 @@ int binkp_parsfinfo(const char *str, s_bpfinfo *fi, bool with_offset)
|
||||
return -1;
|
||||
}
|
||||
DEB((D_24554, "info to parse: %s", str));
|
||||
r = sscanf(str, with_offset? "%s %d %d %d": "%s %d %d", &fi->fn, &fi->sz, &fi->tm, &fi->offs);
|
||||
r = sscanf(str, with_offset? "%s %ld %ld %ld": "%s %ld %ld", &fi->fn, &fi->sz, &fi->tm, &fi->offs);
|
||||
chkslash = fi->fn;
|
||||
while (1) {
|
||||
chkslash = strchr(chkslash, '/');
|
||||
|
||||
@@ -860,6 +860,8 @@ int p_rx_fopen(s_protinfo *pi, char *fn, size_t sz, time_t tm, mode_t mode)
|
||||
size_t minfree = 0;
|
||||
size_t needed_bytes_total = 0;
|
||||
|
||||
DEB((D_FREE, "P_RX_FOPEN: File: %s, Size: %ld", fn, sz));
|
||||
|
||||
/*
|
||||
* Check. May be we are receiving this file allready
|
||||
*/
|
||||
|
||||
@@ -598,6 +598,8 @@ void emsi_set_sysinfo(s_emsi *emsi, s_emsi *remote_emsi, int hrc,
|
||||
s_cval_entry *addr_ptr;
|
||||
s_cval_entry *hide_ptr;
|
||||
s_faddr *primary = NULL;
|
||||
char xdt[EMSI_MAXXDATETIME+1];
|
||||
time_t xtm;
|
||||
|
||||
const long options = conf_options(cf_options);
|
||||
const long speed = conf_number(cf_max_speed);
|
||||
@@ -737,6 +739,10 @@ void emsi_set_sysinfo(s_emsi *emsi, s_emsi *remote_emsi, int hrc,
|
||||
{ emsi->compcodes.JAN = 1; }
|
||||
if( (options & OPTIONS_NO_HYDRA) != OPTIONS_NO_HYDRA )
|
||||
{ emsi->compcodes.HYD = 1; }
|
||||
DEB((D_HSHAKE,"Generated compcodes for caller: NCP:%x.ZMO:%x.ZAP:%x.DZA:%x.JAN:%x.HYD:%x.KER:%x.SLK:%x.TZA:%x",
|
||||
emsi->compcodes.NCP, emsi->compcodes.ZMO, emsi->compcodes.ZAP,
|
||||
emsi->compcodes.DZA, emsi->compcodes.JAN, emsi->compcodes.HYD,
|
||||
emsi->compcodes.KER, emsi->compcodes.SLK, emsi->compcodes.TZA));
|
||||
}
|
||||
else
|
||||
{
|
||||
@@ -813,6 +819,22 @@ void emsi_set_sysinfo(s_emsi *emsi, s_emsi *remote_emsi, int hrc,
|
||||
strnxcpy(emsi->flags, p_flags ? p_flags : "MO", sizeof(emsi->flags));
|
||||
}
|
||||
|
||||
/* ----------------------------------------------------------------- */
|
||||
/* Data for {TZUTC} and {XDATETIME} field */
|
||||
/* ----------------------------------------------------------------- */
|
||||
|
||||
if ( conf_boolean(cf_emsi_send_tz) ) {
|
||||
emsi->have_tzutc = 1;
|
||||
emsi->tzutc = (int)(time_gmtoffset());
|
||||
}
|
||||
|
||||
if ( conf_boolean(cf_emsi_send_time) ) {
|
||||
emsi->have_xdatetime = 1;
|
||||
|
||||
strnxcpy(xdt,time_string_format(xdt, EMSI_MAXXDATETIME, "%d.%m.%Y %H:%M:%S %z", xtm),EMSI_MAXXDATETIME);
|
||||
strnxcpy(emsi->xdatetime, xdt, sizeof(emsi->xdatetime));
|
||||
}
|
||||
|
||||
/* ----------------------------------------------------------------- */
|
||||
/* Data for {OHFR} field */
|
||||
/* ----------------------------------------------------------------- */
|
||||
|
||||
@@ -134,6 +134,7 @@ int emsi_incoming(s_handshake_protocol *THIS)
|
||||
int rc = HRC_OK;
|
||||
s_emsi *remote_emsi = NULL;
|
||||
s_emsi *local_emsi = NULL;
|
||||
char *p = NULL;
|
||||
|
||||
ASSERT(THIS);
|
||||
ASSERT(THIS->remote_data);
|
||||
@@ -198,18 +199,46 @@ int emsi_incoming(s_handshake_protocol *THIS)
|
||||
|
||||
/*
|
||||
* Set protocol that we will use
|
||||
* EMSI-II compatible as of v0.25
|
||||
*/
|
||||
if( remote_emsi->compcodes.HYD && !(options & OPTIONS_NO_HYDRA) )
|
||||
THIS->protocol = PROT_HYDRA;
|
||||
else if( remote_emsi->compcodes.ZAP && !(options & OPTIONS_NO_ZEDZAP) )
|
||||
THIS->protocol = PROT_ZEDZAP;
|
||||
else if( remote_emsi->compcodes.ZMO && !(options & OPTIONS_NO_ZMODEM) )
|
||||
THIS->protocol = PROT_ZMODEM;
|
||||
else /* NCP */
|
||||
{
|
||||
if ( remote_emsi->compcodes.EII ) {
|
||||
/* EMSI-II relies on protocol order sent by CALLER
|
||||
* we must agree on first matching protocol
|
||||
*/
|
||||
p = xstrcpy( remote_emsi->proto_order );
|
||||
THIS->protocol = PROT_NOPROT;
|
||||
rc = HRC_NO_PROTOS;
|
||||
for ( p = strtok( p, "," ); p ; p=strtok( NULL, "," ) ) {
|
||||
if ( !strcmp(p, "ZMO") && !(options & OPTIONS_NO_ZMODEM)) {
|
||||
if ( THIS->protocol == PROT_NOPROT ) THIS->protocol = PROT_ZMODEM;
|
||||
}
|
||||
if ( !strcmp(p, "HYD") && !(options & OPTIONS_NO_HYDRA)) {
|
||||
if ( THIS->protocol == PROT_NOPROT ) THIS->protocol = PROT_HYDRA;
|
||||
}
|
||||
if ( !strcmp(p, "ZAP") && !(options & OPTIONS_NO_ZEDZAP)) {
|
||||
if ( THIS->protocol == PROT_NOPROT ) THIS->protocol = PROT_ZEDZAP;
|
||||
}
|
||||
if ( !strcmp(p, "DZA") && !(options & OPTIONS_NO_DIRZAP)) {
|
||||
if ( THIS->protocol == PROT_NOPROT ) THIS->protocol = PROT_DIRZAP;
|
||||
}
|
||||
/* if ( !strcmp(p, "JAN") && !(options & OPTIONS_NO_JANUS)) {
|
||||
if ( THIS->protocol == PROT_NOPROT ) THIS->protocol = PROT_JANUS;
|
||||
} */
|
||||
}
|
||||
|
||||
} else {
|
||||
/* EMSI-I relies on our self order, not the CALLER's */
|
||||
if( remote_emsi->compcodes.HYD && !(options & OPTIONS_NO_HYDRA) )
|
||||
THIS->protocol = PROT_HYDRA;
|
||||
else if( remote_emsi->compcodes.ZAP && !(options & OPTIONS_NO_ZEDZAP) )
|
||||
THIS->protocol = PROT_ZEDZAP;
|
||||
else if( remote_emsi->compcodes.ZMO && !(options & OPTIONS_NO_ZMODEM) )
|
||||
THIS->protocol = PROT_ZMODEM;
|
||||
else /* NCP */
|
||||
{
|
||||
THIS->protocol = PROT_NOPROT;
|
||||
}
|
||||
}
|
||||
if ( THIS->protocol == PROT_NOPROT ) rc = HRC_NO_PROTOS;
|
||||
|
||||
/*
|
||||
* Check EMSI flags and set corresponding local HOLD flags
|
||||
|
||||
+160
-12
@@ -103,6 +103,10 @@ char *emsi_createdat(s_emsi *emsi)
|
||||
char *tmp = NULL;
|
||||
char buf[100];
|
||||
char abuf[BF_MAXADDRSTR+1];
|
||||
char *p_order = NULL;
|
||||
char *ord = NULL;
|
||||
|
||||
|
||||
|
||||
tmp = (char *)xstrcpy("**EMSI_DAT0000");
|
||||
|
||||
@@ -179,14 +183,79 @@ char *emsi_createdat(s_emsi *emsi)
|
||||
tmp = add_char(tmp, '}');
|
||||
}
|
||||
|
||||
/* compatibility_codes */
|
||||
/* compatibility_codes (EMSI behavior as FTS-0088) */
|
||||
tmp = add_char(tmp, '{');
|
||||
if( emsi->compcodes.NCP ) tmp = add_str(tmp, "NCP,");
|
||||
if( emsi->compcodes.ZMO ) tmp = add_str(tmp, "ZMO,");
|
||||
if( emsi->compcodes.ZAP ) tmp = add_str(tmp, "ZAP,");
|
||||
if( emsi->compcodes.DZA ) tmp = add_str(tmp, "DZA,");
|
||||
if( emsi->compcodes.JAN ) tmp = add_str(tmp, "JAN,");
|
||||
if( emsi->compcodes.HYD ) tmp = add_str(tmp, "HYD,");
|
||||
|
||||
p_order = conf_string(cf_proto_order);
|
||||
|
||||
if ( !p_order ) {
|
||||
if( emsi->compcodes.HYD ) tmp = add_str(tmp, "HYD,");
|
||||
if( emsi->compcodes.JAN ) tmp = add_str(tmp, "JAN,");
|
||||
if( emsi->compcodes.DZA ) tmp = add_str(tmp, "DZA,");
|
||||
if( emsi->compcodes.ZAP ) tmp = add_str(tmp, "ZAP,");
|
||||
if( emsi->compcodes.ZMO ) tmp = add_str(tmp, "ZMO,");
|
||||
if( emsi->compcodes.TZA ) tmp = add_str(tmp, "TZA,");
|
||||
if( emsi->compcodes.SLK ) tmp = add_str(tmp, "SLK,");
|
||||
if( emsi->compcodes.KER ) tmp = add_str(tmp, "KER,");
|
||||
if( emsi->compcodes.NCP ) tmp = add_str(tmp, "NCP,");
|
||||
} else {
|
||||
ord = xmalloc(4);
|
||||
DEB((D_HSHAKE,"Protocol order found: %s", p_order));
|
||||
ord = strncpy(ord, p_order,3);
|
||||
ord[3] = '\0';
|
||||
DEB((D_HSHAKE,"Protocol order chunk: %s", ord));
|
||||
if ( ord == NULL )
|
||||
DEB((D_HSHAKE,"EMSI create order error"));
|
||||
if ( !strcmp(ord,"HYD") )
|
||||
if ( emsi->compcodes.HYD) tmp = add_str(tmp, "HYD,");
|
||||
if ( !strcmp(ord,"JAN") )
|
||||
if ( emsi->compcodes.JAN) tmp = add_str(tmp, "JAN,");
|
||||
if ( !strcmp(ord,"DZA") )
|
||||
if ( emsi->compcodes.DZA) tmp = add_str(tmp, "DZA,");
|
||||
if ( !strcmp(ord,"ZAP") )
|
||||
if ( emsi->compcodes.ZAP) tmp = add_str(tmp, "ZAP,");
|
||||
if ( !strcmp(ord,"ZMO") )
|
||||
if ( emsi->compcodes.ZMO) tmp = add_str(tmp, "ZMO,");
|
||||
if ( !strcmp(ord,"TZA") )
|
||||
if ( emsi->compcodes.TZA) tmp = add_str(tmp, "TZA,");
|
||||
if ( !strcmp(ord,"SLK") )
|
||||
if ( emsi->compcodes.SLK) tmp = add_str(tmp, "SLK,");
|
||||
if ( !strcmp(ord,"KER") )
|
||||
if ( emsi->compcodes.KER) tmp = add_str(tmp, "KER,");
|
||||
if ( !strcmp(ord,"NCP") )
|
||||
if ( emsi->compcodes.NCP) tmp = add_str(tmp, "NCP,");
|
||||
p_order = strchr(p_order, ',');
|
||||
if ( p_order ) p_order = p_order+1; /* skip ',' */
|
||||
while ( p_order ) {
|
||||
ord = strncpy(ord, p_order,3);
|
||||
ord[3] = '\0';
|
||||
DEB((D_HSHAKE,"Protocol order chunk: %s", ord));
|
||||
if ( ord == NULL )
|
||||
DEB((D_HSHAKE,"EMSI create order error"));
|
||||
if ( !strcmp(ord,"HYD") )
|
||||
if ( emsi->compcodes.HYD) tmp = add_str(tmp, "HYD,");
|
||||
if ( !strcmp(ord,"JAN") )
|
||||
if ( emsi->compcodes.JAN) tmp = add_str(tmp, "JAN,");
|
||||
if ( !strcmp(ord,"DZA") )
|
||||
if ( emsi->compcodes.DZA) tmp = add_str(tmp, "DZA,");
|
||||
if ( !strcmp(ord,"ZAP") )
|
||||
if ( emsi->compcodes.ZAP) tmp = add_str(tmp, "ZAP,");
|
||||
if ( !strcmp(ord,"ZMO") )
|
||||
if ( emsi->compcodes.ZMO) tmp = add_str(tmp, "ZMO,");
|
||||
if ( !strcmp(ord,"TZA") )
|
||||
if ( emsi->compcodes.TZA) tmp = add_str(tmp, "TZA,");
|
||||
if ( !strcmp(ord,"SLK") )
|
||||
if ( emsi->compcodes.SLK) tmp = add_str(tmp, "SLK,");
|
||||
if ( !strcmp(ord,"KER") )
|
||||
if ( emsi->compcodes.KER) tmp = add_str(tmp, "KER,");
|
||||
if ( !strcmp(ord,"NCP") )
|
||||
if ( emsi->compcodes.NCP) tmp = add_str(tmp, "NCP,");
|
||||
p_order = strchr(p_order, ',');
|
||||
if ( p_order ) p_order = p_order+1; /* skip ',' */
|
||||
}
|
||||
free(ord);
|
||||
}
|
||||
|
||||
if( emsi->compcodes.FRQ ) tmp = add_str(tmp, "FRQ,");
|
||||
if( emsi->compcodes.NRQ ) tmp = add_str(tmp, "NRQ,");
|
||||
if( emsi->compcodes.ARC ) tmp = add_str(tmp, "ARC,");
|
||||
@@ -325,10 +394,15 @@ char *emsi_createdat(s_emsi *emsi)
|
||||
|
||||
tmp = add_char(tmp, '{');
|
||||
tmp = add_char(tmp, '[');
|
||||
sprintf(buf, "+%04d", emsi->tzutc);
|
||||
tmp = add_str(tmp, buf);
|
||||
/* BUGGY */
|
||||
// sprintf(buf, "+%04d", emsi->tzutc);
|
||||
ord = xmalloc(6);
|
||||
ord = xstrcpy(time_string_gmtoffset(ord));
|
||||
ord[5] = '\0';
|
||||
tmp = add_str(tmp, ord);
|
||||
tmp = add_char(tmp, ']');
|
||||
tmp = add_char(tmp, '}');
|
||||
free(ord);
|
||||
}
|
||||
|
||||
/* {XDATE} indentifier.. What's the fucking invention :-/
|
||||
@@ -450,6 +524,8 @@ int emsi_parsedat(char *emsi_dat, s_emsi *emsi)
|
||||
{
|
||||
int i;
|
||||
char *tmp, *p, *q, *n;
|
||||
unsigned int tzh, tzm,tzn ;
|
||||
char *tzc, *otmp;
|
||||
|
||||
while( (tmp=get_field(&emsi_dat, '{', '}')) != NULL )
|
||||
{
|
||||
@@ -525,13 +601,64 @@ int emsi_parsedat(char *emsi_dat, s_emsi *emsi)
|
||||
/* compatibility codes */
|
||||
if( (p=get_field(&emsi_dat, '{', '}')) == NULL ) return(1);
|
||||
DEB((D_HSHAKE, "parse_emsidat: compatibility codes: %s", p));
|
||||
emsi->proto_order[0] = '\0';
|
||||
|
||||
for( p = strtok(p, ","); p; p=strtok(NULL, ",") )
|
||||
{
|
||||
if( !strcmp(p, "ZMO") ) emsi->compcodes.ZMO = 1;
|
||||
/* if( !strcmp(p, "ZMO") ) emsi->compcodes.ZMO = 1;
|
||||
else if( !strcmp(p, "ZAP") ) emsi->compcodes.ZAP = 1;
|
||||
else if( !strcmp(p, "DZA") ) emsi->compcodes.DZA = 1;
|
||||
else if( !strcmp(p, "JAN") ) emsi->compcodes.JAN = 1;
|
||||
else if( !strcmp(p, "HYD") ) emsi->compcodes.HYD = 1;
|
||||
*/
|
||||
if ( !strcmp(p, "ZMO") ) {
|
||||
emsi->compcodes.ZMO = 1;
|
||||
otmp = strcat(emsi->proto_order,"ZMO,");
|
||||
strcpy(emsi->proto_order, otmp);
|
||||
DEB((D_HSHAKE,"Parse_emsidat: ordered proto added: %s", otmp));
|
||||
}
|
||||
else if ( !strcmp(p, "ZAP") ) {
|
||||
emsi->compcodes.ZAP = 1;
|
||||
otmp = strcat(emsi->proto_order,"ZAP,");
|
||||
strcpy(emsi->proto_order, otmp);
|
||||
DEB((D_HSHAKE,"Parse_emsidat: ordered proto added: %s", otmp));
|
||||
}
|
||||
else if ( !strcmp(p, "DZA") ) {
|
||||
emsi->compcodes.DZA = 1;
|
||||
otmp = strcat(emsi->proto_order,"DZA,");
|
||||
strcpy(emsi->proto_order, otmp);
|
||||
DEB((D_HSHAKE,"Parse_emsidat: ordered proto added: %s", otmp));
|
||||
}
|
||||
else if ( !strcmp(p, "JAN") ) {
|
||||
emsi->compcodes.JAN = 1;
|
||||
otmp = strcat(emsi->proto_order,"JAN,");
|
||||
strcpy(emsi->proto_order, otmp);
|
||||
DEB((D_HSHAKE,"Parse_emsidat: ordered proto added: %s", otmp));
|
||||
}
|
||||
else if ( !strcmp(p, "HYD") ) {
|
||||
emsi->compcodes.HYD = 1;
|
||||
otmp = strcat(emsi->proto_order,"HYD,");
|
||||
strcpy(emsi->proto_order, otmp);
|
||||
DEB((D_HSHAKE,"Parse_emsidat: ordered proto added: %s", otmp));
|
||||
}
|
||||
else if ( !strcmp(p, "KER") ) {
|
||||
emsi->compcodes.KER = 1;
|
||||
otmp = strcat(emsi->proto_order,"KER,");
|
||||
strcpy(emsi->proto_order, otmp);
|
||||
DEB((D_HSHAKE,"Parse_emsidat: ordered proto added: %s", otmp));
|
||||
}
|
||||
else if ( !strcmp(p, "TZA") ) {
|
||||
emsi->compcodes.TZA = 1;
|
||||
otmp = strcat(emsi->proto_order,"TZA,");
|
||||
strcpy(emsi->proto_order, otmp);
|
||||
DEB((D_HSHAKE,"Parse_emsidat: ordered proto added: %s", otmp));
|
||||
}
|
||||
else if ( !strcmp(p, "SLK") ) {
|
||||
emsi->compcodes.SLK = 1;
|
||||
otmp = strcat(emsi->proto_order,"SLK,");
|
||||
strcpy(emsi->proto_order, otmp);
|
||||
DEB((D_HSHAKE,"Parse_emsidat: ordered proto added: %s", otmp));
|
||||
}
|
||||
else if( !strcmp(p, "NCP") ) emsi->compcodes.NCP = 1;
|
||||
else if( !strcmp(p, "NRQ") ) emsi->compcodes.NRQ = 1;
|
||||
else if( !strcmp(p, "ARC") ) emsi->compcodes.ARC = 1;
|
||||
@@ -542,6 +669,9 @@ int emsi_parsedat(char *emsi_dat, s_emsi *emsi)
|
||||
else if( !strcmp(p, "BBS") ) emsi->compcodes.BBS = 1;
|
||||
else if( !strcmp(p, "HFR") ) emsi->compcodes.HFR = 1;
|
||||
}
|
||||
/* Delete last comma from order list */
|
||||
emsi->proto_order[strlen(emsi->proto_order)-1] = '\0';
|
||||
DEB((D_HSHAKE,"Ordered compcodes: %s",emsi->proto_order));
|
||||
|
||||
/* mailer information */
|
||||
if( (p=get_field(&emsi_dat, '{', '}')) == NULL ) return(1);
|
||||
@@ -646,13 +776,31 @@ int emsi_parsedat(char *emsi_dat, s_emsi *emsi)
|
||||
}
|
||||
else if( strcmp(tmp, "TZUTC") == 0 )
|
||||
{
|
||||
emsi->have_tzutc = 1;
|
||||
|
||||
if( (p=get_field(&emsi_dat, '{', '}')) == NULL ) return(1);
|
||||
if( (p=get_field(&p, '[', ']')) == NULL ) return(1);
|
||||
/* Parse EMSI TZUTC in fmt (+|-)HHMM */
|
||||
if( *p ) {
|
||||
tzc = malloc(2);
|
||||
DEB((D_HSHAKE, "Got TZUTC=%s for parsing", p));
|
||||
tzn = sscanf( p, "%1c%02u%02u", tzc, &tzh, &tzm);
|
||||
tzc[1] = '\0';
|
||||
if ( tzn == 3) {
|
||||
DEB((D_HSHAKE, "Got TZC=%s , H=%u, M=%u", tzc, tzh,tzm));
|
||||
emsi->have_tzutc = 1;
|
||||
if ( strcmp(tzc, "-") == 0 ) {
|
||||
emsi->tzutc = -(tzh*60 + tzm);
|
||||
} else {
|
||||
emsi->tzutc = tzh*60 + tzm;
|
||||
}
|
||||
} else {
|
||||
DEB((D_HSHAKE,"TZUTC value not parsed!"));
|
||||
}
|
||||
free(tzc);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
DEB((D_HSHAKE, "Step - no known EMSI-part - got %s", tmp));
|
||||
strnxcat(emsi->addons, "{", sizeof(emsi->addons));
|
||||
strnxcat(emsi->addons, tmp, sizeof(emsi->addons));
|
||||
strnxcat(emsi->addons, "}", sizeof(emsi->addons));
|
||||
|
||||
@@ -71,6 +71,7 @@ int answ_system(e_session type, char *connstr, int inetd)
|
||||
|
||||
if( inetd )
|
||||
{
|
||||
log("Answering TCPIP call...");
|
||||
if( connstr && *connstr )
|
||||
state.connstr = (char*)xstrcpy(connstr);
|
||||
else if( getpeername(0, (struct sockaddr*)&client, &clientlen) == -1 )
|
||||
@@ -116,9 +117,10 @@ int answ_system(e_session type, char *connstr, int inetd)
|
||||
port_carrier(0, TRUE);
|
||||
|
||||
rc = session();
|
||||
|
||||
if( (inetd != 0) && (state.inet = FALSE) )
|
||||
log("Session ended up, rc=%d, inetd=%d", rc, inetd);
|
||||
if( ( !inetd ) )
|
||||
{
|
||||
log("Deactivating modem port");
|
||||
port_deinit(0, &oldtio);
|
||||
port_close();
|
||||
}
|
||||
|
||||
@@ -145,6 +145,7 @@ char *file_name_makesafe(char *filename)
|
||||
char *file_getname(char *filename)
|
||||
{
|
||||
char *p = strrchr(filename, '/');
|
||||
DEB((D_FREE, "File_getname: %s", (p ? p + 1 : filename) ));
|
||||
return p ? p + 1 : filename;
|
||||
}
|
||||
|
||||
|
||||
+12
-9
@@ -173,18 +173,20 @@ long time_gmtoffset(void)
|
||||
time_t tt = time(NULL);
|
||||
struct tm local = *localtime(&tt);
|
||||
struct tm gmt = *gmtime(&tt);
|
||||
long tz = gmt.tm_yday - local.tm_yday;
|
||||
long tz = 0; /* = local.tm_yday - gmt.tm_yday;
|
||||
|
||||
if( tz > 1 )
|
||||
tz = -24;
|
||||
else if( tz < -1 )
|
||||
tz = 24;
|
||||
tz = +24;
|
||||
else
|
||||
tz *= 24;
|
||||
tz *= 24; */
|
||||
|
||||
tz += gmt.tm_hour - local.tm_hour;
|
||||
/*tz += gmt.tm_hour - local.tm_hour;
|
||||
tz *= 60;
|
||||
tz += gmt.tm_min - local.tm_min;
|
||||
tz += gmt.tm_min - local.tm_min;*/
|
||||
|
||||
tz = (gmt.tm_hour*60+gmt.tm_min) - (local.tm_hour*60+local.tm_min);
|
||||
|
||||
return tz;
|
||||
}
|
||||
@@ -200,12 +202,13 @@ long time_gmtoffset(void)
|
||||
*/
|
||||
char *time_string_gmtoffset(char *buffer)
|
||||
{
|
||||
long tz = time_gmtoffset();
|
||||
long tz = -time_gmtoffset();
|
||||
char sign = (tz > 0)?'+':'-';
|
||||
int hour = tz/60;
|
||||
int mint = tz%60;
|
||||
tz = abs(tz);
|
||||
unsigned int hour = tz/60;
|
||||
unsigned int mint = tz%60;
|
||||
|
||||
sprintf(buffer, "%c%02d%02d", sign, hour, mint);
|
||||
sprintf(buffer, "%c%02u%02u", sign, hour, mint);
|
||||
|
||||
return buffer;
|
||||
}
|
||||
|
||||
@@ -181,6 +181,8 @@ typedef struct {
|
||||
*/
|
||||
extern const char *BFERR[];
|
||||
|
||||
extern char * mainenv[];
|
||||
|
||||
int daemon_run(const char *confname, const char *incname, bool quit);
|
||||
|
||||
#endif
|
||||
|
||||
@@ -179,6 +179,8 @@ typedef enum {
|
||||
cf_emsi_FR_time,
|
||||
cf_emsi_OH_time,
|
||||
cf_emsi_slave_sends_nak,
|
||||
cf_emsi_send_tz,
|
||||
cf_emsi_send_time,
|
||||
cf_filebox,
|
||||
cf_filebox_directory,
|
||||
cf_flags,
|
||||
@@ -239,6 +241,7 @@ typedef enum {
|
||||
cf_password,
|
||||
cf_phone,
|
||||
cf_phone_translate,
|
||||
cf_proto_order,
|
||||
cf_recode_file_in,
|
||||
cf_recode_file_out,
|
||||
cf_recode_intro_in,
|
||||
|
||||
+1
-1
@@ -19,7 +19,7 @@
|
||||
#define EXEC_OPT_LOGOUT 0x04
|
||||
#define EXEC_OPT_USESHELL 0x08
|
||||
|
||||
#define EXEC_MAX_NUM_ENVS 40
|
||||
#define EXEC_MAX_NUM_ENVS 4095
|
||||
#define EXEC_MAX_NUM_ARGS 20
|
||||
#define EXEC_DEFAULT_UMASK ~(S_IRUSR|S_IWUSR);
|
||||
|
||||
|
||||
@@ -116,7 +116,10 @@ struct compcodes
|
||||
ZAP:1, /* ZedZap (Zmodem variant) */
|
||||
DZA:1, /* DirectZAP (Zmodem variant) */
|
||||
JAN:1, /* Janus */
|
||||
HYD:1; /* Hydra */
|
||||
HYD:1, /* Hydra */
|
||||
KER:1, /* Kermit, not supported */
|
||||
SLK:1, /* SEALink, not supported */
|
||||
TZA:1; /* TrapDoor DirectZAP, not supported */
|
||||
|
||||
UINT16 FRQ:1, /* The system will accept and process FREQs */
|
||||
NRQ:1, /* No file requests accepted by this system */
|
||||
@@ -148,6 +151,7 @@ struct emsi
|
||||
char passwd[EMSI_MAXPASSWD+1];
|
||||
s_linkcodes linkcodes; /* XXn linkcodes contained in eaddr */
|
||||
s_compcodes compcodes;
|
||||
char proto_order[EMSI_MAXADDONS+1];
|
||||
char m_pid[EMSI_MAXMPID+1];
|
||||
char m_name[EMSI_MAXMNAME+1];
|
||||
char m_ver[EMSI_MAXMVER+1];
|
||||
|
||||
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
@@ -0,0 +1,199 @@
|
||||
address 99:1/1@testzone
|
||||
options NoDirZap NoJanus NoChat
|
||||
proto_order ZMO,ZAP,HYD,SLK,KER,DZA,JAN,TZA
|
||||
#domain medianet /var/spool/ftn/medianet/ 776
|
||||
#domain schoolnet /var/spool/ftn/schoolnet/ 461
|
||||
log_file %TESTZONE%/logsA/bf-log
|
||||
debug_file %TESTZONE%/logsA/bf-debug
|
||||
debug_level modem hshake event freq prot
|
||||
nodial_flag %TESTZONE%/etc/nodial
|
||||
inbound_directory (Protected) %TESTZONE%/inboundA
|
||||
inbound_directory %TESTZONE%/inbound-unsecureA
|
||||
# incnet_flag %TESTZONE%/flags/toss
|
||||
# incarc_flag %TESTZONE%/flags/toss
|
||||
outbound_directory %TESTZONE%/outboundA
|
||||
#amiga_outbound_directory /var/spool/fido/bt/out
|
||||
nodelist_directory %TESTZONE%/nodelist
|
||||
status_directory %TESTZONE%/logsA
|
||||
history_file %TESTZONE%/historyA
|
||||
#min_speed_in 1200
|
||||
#min_speed_out 1200
|
||||
#session_limit_in 1800
|
||||
#session_limit_out 1800
|
||||
#min_cps_time 120
|
||||
# min_cps_recv (2:5020/1398) 2100
|
||||
# min_cps_recv (2:5020/1682) 3000
|
||||
# min_cps_recv (2:5020/1811) 1400
|
||||
zmodem_mincps_recv 300 15
|
||||
zmodem_mincps_recv 1200 90
|
||||
zmodem_mincps_recv 2400 120
|
||||
zmodem_mincps_recv 4800 240
|
||||
zmodem_mincps_recv 7200 360
|
||||
zmodem_mincps_recv 9600 480
|
||||
zmodem_mincps_recv 12000 600
|
||||
zmodem_mincps_recv 14400 720
|
||||
zmodem_mincps_recv 16800 840
|
||||
zmodem_mincps_recv 19200 960
|
||||
zmodem_mincps_recv 21600 1080
|
||||
zmodem_mincps_recv 23600 1180
|
||||
zmodem_mincps_recv 24000 1200
|
||||
zmodem_mincps_recv 26400 1320
|
||||
zmodem_mincps_recv 28800 1440
|
||||
zmodem_mincps_recv 31200 1600
|
||||
zmodem_mincps_recv 33600 1700
|
||||
|
||||
zmodem_mincps_send 300 15
|
||||
zmodem_mincps_send 1200 90
|
||||
zmodem_mincps_send 2400 120
|
||||
zmodem_mincps_send 4800 240
|
||||
zmodem_mincps_send 7200 360
|
||||
zmodem_mincps_send 9600 480
|
||||
zmodem_mincps_send 12000 600
|
||||
zmodem_mincps_send 14400 720
|
||||
zmodem_mincps_send 16800 840
|
||||
zmodem_mincps_send 19200 960
|
||||
zmodem_mincps_send 21600 1080
|
||||
zmodem_mincps_send 23600 1180
|
||||
zmodem_mincps_send 24000 1200
|
||||
zmodem_mincps_send 26400 1320
|
||||
zmodem_mincps_send 28800 1440
|
||||
zmodem_mincps_send 31200 1600
|
||||
zmodem_mincps_send 33600 1700
|
||||
|
||||
hydra_mincps_recv 300 15
|
||||
hydra_mincps_recv 1200 90
|
||||
hydra_mincps_recv 2400 120
|
||||
hydra_mincps_recv 4800 240
|
||||
hydra_mincps_recv 7200 360
|
||||
hydra_mincps_recv 9600 480
|
||||
hydra_mincps_recv 12000 600
|
||||
hydra_mincps_recv 14400 720
|
||||
hydra_mincps_recv 16800 840
|
||||
hydra_mincps_recv 19200 960
|
||||
hydra_mincps_recv 21600 1080
|
||||
hydra_mincps_recv 23600 1180
|
||||
hydra_mincps_recv 24000 1200
|
||||
hydra_mincps_recv 26400 1320
|
||||
hydra_mincps_recv 28800 1440
|
||||
hydra_mincps_recv 31200 1600
|
||||
hydra_mincps_recv 33600 1700
|
||||
|
||||
hydra_mincps_send 300 15
|
||||
hydra_mincps_send 1200 90
|
||||
hydra_mincps_send 2400 120
|
||||
hydra_mincps_send 4800 240
|
||||
hydra_mincps_send 7200 360
|
||||
hydra_mincps_send 9600 480
|
||||
hydra_mincps_send 12000 600
|
||||
hydra_mincps_send 14400 720
|
||||
hydra_mincps_send 16800 840
|
||||
hydra_mincps_send 19200 960
|
||||
hydra_mincps_send 21600 1080
|
||||
hydra_mincps_send 23600 1180
|
||||
hydra_mincps_send 24000 1200
|
||||
hydra_mincps_send 26400 1320
|
||||
hydra_mincps_send 28800 1440
|
||||
hydra_mincps_send 31200 1600
|
||||
hydra_mincps_send 33600 1700
|
||||
#
|
||||
mode_default 100666
|
||||
mode_arcmail 100666
|
||||
mode_netmail 100666
|
||||
mode_request 100666
|
||||
|
||||
#modem_port /dev/ttyUSB0:57600
|
||||
modem_reset_command ATE0M0|
|
||||
modem_dial_prefix ATDT
|
||||
modem_dial_suffix |
|
||||
modem_hangup_command v~^~ATH0|
|
||||
#modem_stat_command AT%S|
|
||||
#modem_stat_command AT|
|
||||
modem_stat_command AT&V1|
|
||||
modem_dial_response "CONNECT" connect
|
||||
modem_dial_response "BUSY" busy
|
||||
modem_dial_response "NO CARRIER" nocarrier
|
||||
modem_dial_response "NO DIAL" nodialTone
|
||||
modem_dial_response "NO ANSWER" noanswer
|
||||
modem_dial_response "VOICE" noanswer
|
||||
modem_dial_response "ERROR" error
|
||||
|
||||
nodelist NODELIST.999 *:*/*.0
|
||||
|
||||
#nodelist 450_256.pnt 2:450/256.*
|
||||
#nodelist easynet.ndl 20:26/*.0
|
||||
#nodelist *:*/*.*
|
||||
|
||||
phone_translate 7-813-78
|
||||
phone_translate 7- 8
|
||||
#phone_translate 375- 8
|
||||
|
||||
system_name TestZoneA
|
||||
location TestZone
|
||||
sysop_name TestZoneA User
|
||||
phone -Unpublished-
|
||||
max_speed 9600
|
||||
emsi_OH_time 00:00-24:00
|
||||
emsi_FR_time 00:00-24:00
|
||||
emsi_send_tz yes
|
||||
emsi_send_time yes
|
||||
|
||||
recv_buffer_size 65536
|
||||
|
||||
wait_carrier_out 120
|
||||
|
||||
#freq_srif_command /usr/local/lib/u-srif/u-srif
|
||||
freq_alias_list %TESTZONE%/freq.aliases
|
||||
freq_dir_list %TESTZONE%/freq.dirs
|
||||
freq_limit_number 10
|
||||
|
||||
freq_limit_size 6000000
|
||||
freq_limit_time 1200
|
||||
freq_ignore_masks \\* \\*.\\* \\*.zip \\*.rar \\*.exe \\*.mp3 \\*.avi \\*.mp4 \\*.tgz
|
||||
#zmodem_skip_by_pos yes
|
||||
zmodem_send_dummy_pkt no
|
||||
#zmodem_start_block_size 512
|
||||
#zmodem_tx_window 32768
|
||||
skip_files_recv *.pif *.swp
|
||||
#delay_files_recv !%arcmail !%netmail # We will refuse all except mail
|
||||
#delay_files_send !%netmail # We will send only netmail
|
||||
#delay_files_recv (2:450/102) !%netmail
|
||||
#min_free_space 20000
|
||||
#recode_file_out /usr/local/fido/etc/koi82alt.tbl
|
||||
#recode_file_in /usr/local/fido/etc/alt2koi8.tbl
|
||||
|
||||
#run_after_handshake [logout]/bin/echo "Hello, world!"
|
||||
#run_after_session [nowait,setsid]/usr/local/lib/ftp/run-in
|
||||
#run_after_handshake [setsid,useshell,logout]/usr/bin/nlookup $REM_ADDR_FTN
|
||||
#run_after_session [logout,useshell]/usr/bin/hpt toss && /usr/bin/hpt link && /usr/bin/htick toss
|
||||
#run_after_handshake [setsid,useshell,logout]/usr/bin/nlookup $REM_ADDR_FTN
|
||||
#filebox_directory /var/spool/fido/bt/fbox
|
||||
|
||||
#filebox /var/spool/ftn/fbox/adb 2:5020/2120.1 hold
|
||||
#filebox /var/spool/ftn/fbox/pvc 2:5020/2091 normal
|
||||
#flo_translate C:\\fido\\spool\\outbound /var/spool/ftn/out
|
||||
#flo_translate \\ /
|
||||
|
||||
maxtries 200 Undialable # Be carefull.. =)
|
||||
maxtries_noansw 5 Hold 7200 # Call two hours later
|
||||
maxtries_noconn 40 Hold 10800 # Don't call 3 hours
|
||||
maxtries_hshake 10 Hold 86400 # 1 day delay
|
||||
maxtries_sessions 10 Hold 3600 # Don't annoy uplinks
|
||||
maxtries_nodial 1 Hold 1200 # Call 20 min later
|
||||
|
||||
daemon_circle_modem 40
|
||||
daemon_circle_rescan 60
|
||||
daemon_circle_normal 80
|
||||
daemon_circle_direct 40
|
||||
daemon_circle_crash 20
|
||||
daemon_circle_immed 10
|
||||
daemon_maxclients_tcpip 2
|
||||
daemon_maxclients_modem 1
|
||||
daemon_pid_file /var/run/bforce.pid
|
||||
|
||||
#syslog_facility 64
|
||||
#nomail_flag /home/zx/fido/ftnroot/flags/nomail
|
||||
#run_before_session /usr/local/bin/call_inet.sh
|
||||
|
||||
recieved_to_lower yes
|
||||
|
||||
# That's all!
|
||||
@@ -0,0 +1,202 @@
|
||||
address 99:1/1@testzone
|
||||
options NoDirZap NoJanus NoChat
|
||||
#proto_order ZMO,ZAP,HYD,SLK,KER,DZA,JAN,TZA
|
||||
proto_order %PROTO%
|
||||
#domain medianet /var/spool/ftn/medianet/ 776
|
||||
#domain schoolnet /var/spool/ftn/schoolnet/ 461
|
||||
log_file %TESTZONE%/logsA/bf-log
|
||||
debug_file %TESTZONE%/logsA/bf-debug
|
||||
debug_level modem hshake event freq
|
||||
nodial_flag %TESTZONE%/etc/nodial
|
||||
inbound_directory (Protected) %TESTZONE%/inboundA
|
||||
inbound_directory %TESTZONE%/inbound-unsecureA
|
||||
# incnet_flag %TESTZONE%/flags/toss
|
||||
# incarc_flag %TESTZONE%/flags/toss
|
||||
outbound_directory %TESTZONE%/outboundA
|
||||
#amiga_outbound_directory /var/spool/fido/bt/out
|
||||
nodelist_directory %TESTZONE%/nodelist
|
||||
status_directory %TESTZONE%/logsA
|
||||
history_file %TESTZONE%/logsA/history
|
||||
|
||||
password 99:1/2 testpwd1
|
||||
#min_speed_in 1200
|
||||
#min_speed_out 1200
|
||||
#session_limit_in 1800
|
||||
#session_limit_out 1800
|
||||
#min_cps_time 120
|
||||
# min_cps_recv (2:5020/1398) 2100
|
||||
# min_cps_recv (2:5020/1682) 3000
|
||||
# min_cps_recv (2:5020/1811) 1400
|
||||
zmodem_mincps_recv 300 15
|
||||
zmodem_mincps_recv 1200 90
|
||||
zmodem_mincps_recv 2400 120
|
||||
zmodem_mincps_recv 4800 240
|
||||
zmodem_mincps_recv 7200 360
|
||||
zmodem_mincps_recv 9600 480
|
||||
zmodem_mincps_recv 12000 600
|
||||
zmodem_mincps_recv 14400 720
|
||||
zmodem_mincps_recv 16800 840
|
||||
zmodem_mincps_recv 19200 960
|
||||
zmodem_mincps_recv 21600 1080
|
||||
zmodem_mincps_recv 23600 1180
|
||||
zmodem_mincps_recv 24000 1200
|
||||
zmodem_mincps_recv 26400 1320
|
||||
zmodem_mincps_recv 28800 1440
|
||||
zmodem_mincps_recv 31200 1600
|
||||
zmodem_mincps_recv 33600 1700
|
||||
|
||||
zmodem_mincps_send 300 15
|
||||
zmodem_mincps_send 1200 90
|
||||
zmodem_mincps_send 2400 120
|
||||
zmodem_mincps_send 4800 240
|
||||
zmodem_mincps_send 7200 360
|
||||
zmodem_mincps_send 9600 480
|
||||
zmodem_mincps_send 12000 600
|
||||
zmodem_mincps_send 14400 720
|
||||
zmodem_mincps_send 16800 840
|
||||
zmodem_mincps_send 19200 960
|
||||
zmodem_mincps_send 21600 1080
|
||||
zmodem_mincps_send 23600 1180
|
||||
zmodem_mincps_send 24000 1200
|
||||
zmodem_mincps_send 26400 1320
|
||||
zmodem_mincps_send 28800 1440
|
||||
zmodem_mincps_send 31200 1600
|
||||
zmodem_mincps_send 33600 1700
|
||||
|
||||
hydra_mincps_recv 300 15
|
||||
hydra_mincps_recv 1200 90
|
||||
hydra_mincps_recv 2400 120
|
||||
hydra_mincps_recv 4800 240
|
||||
hydra_mincps_recv 7200 360
|
||||
hydra_mincps_recv 9600 480
|
||||
hydra_mincps_recv 12000 600
|
||||
hydra_mincps_recv 14400 720
|
||||
hydra_mincps_recv 16800 840
|
||||
hydra_mincps_recv 19200 960
|
||||
hydra_mincps_recv 21600 1080
|
||||
hydra_mincps_recv 23600 1180
|
||||
hydra_mincps_recv 24000 1200
|
||||
hydra_mincps_recv 26400 1320
|
||||
hydra_mincps_recv 28800 1440
|
||||
hydra_mincps_recv 31200 1600
|
||||
hydra_mincps_recv 33600 1700
|
||||
|
||||
hydra_mincps_send 300 15
|
||||
hydra_mincps_send 1200 90
|
||||
hydra_mincps_send 2400 120
|
||||
hydra_mincps_send 4800 240
|
||||
hydra_mincps_send 7200 360
|
||||
hydra_mincps_send 9600 480
|
||||
hydra_mincps_send 12000 600
|
||||
hydra_mincps_send 14400 720
|
||||
hydra_mincps_send 16800 840
|
||||
hydra_mincps_send 19200 960
|
||||
hydra_mincps_send 21600 1080
|
||||
hydra_mincps_send 23600 1180
|
||||
hydra_mincps_send 24000 1200
|
||||
hydra_mincps_send 26400 1320
|
||||
hydra_mincps_send 28800 1440
|
||||
hydra_mincps_send 31200 1600
|
||||
hydra_mincps_send 33600 1700
|
||||
#
|
||||
mode_default 100666
|
||||
mode_arcmail 100666
|
||||
mode_netmail 100666
|
||||
mode_request 100666
|
||||
|
||||
#modem_port /dev/ttyUSB0:57600
|
||||
modem_reset_command ATE0M0|
|
||||
modem_dial_prefix ATDT
|
||||
modem_dial_suffix |
|
||||
modem_hangup_command v~^~ATH0|
|
||||
#modem_stat_command AT%S|
|
||||
#modem_stat_command AT|
|
||||
modem_stat_command AT&V1|
|
||||
modem_dial_response "CONNECT" connect
|
||||
modem_dial_response "BUSY" busy
|
||||
modem_dial_response "NO CARRIER" nocarrier
|
||||
modem_dial_response "NO DIAL" nodialTone
|
||||
modem_dial_response "NO ANSWER" noanswer
|
||||
modem_dial_response "VOICE" noanswer
|
||||
modem_dial_response "ERROR" error
|
||||
|
||||
nodelist NODELIST.999 *:*/*.0
|
||||
|
||||
#nodelist 450_256.pnt 2:450/256.*
|
||||
#nodelist easynet.ndl 20:26/*.0
|
||||
#nodelist *:*/*.*
|
||||
|
||||
phone_translate 7-813-78
|
||||
phone_translate 7- 8
|
||||
#phone_translate 375- 8
|
||||
|
||||
system_name TestZoneA
|
||||
location TestZone
|
||||
sysop_name TestZoneA User
|
||||
phone -Unpublished-
|
||||
max_speed 9600
|
||||
emsi_OH_time 00:00-24:00
|
||||
emsi_FR_time 00:00-24:00
|
||||
emsi_send_tz yes
|
||||
emsi_send_time yes
|
||||
|
||||
recv_buffer_size 65536
|
||||
|
||||
wait_carrier_out 120
|
||||
|
||||
#freq_srif_command /usr/local/lib/u-srif/u-srif
|
||||
freq_alias_list %TESTZONE%/etc/freq.aliases
|
||||
freq_dir_list %TESTZONE%/etc/freq.dirs
|
||||
freq_limit_number 10
|
||||
|
||||
freq_limit_size 6000000
|
||||
freq_limit_time 1200
|
||||
freq_ignore_masks \\* \\*.\\* \\*.zip \\*.rar \\*.exe \\*.mp3 \\*.avi \\*.mp4 \\*.tgz
|
||||
#zmodem_skip_by_pos yes
|
||||
zmodem_send_dummy_pkt no
|
||||
#zmodem_start_block_size 512
|
||||
#zmodem_tx_window 32768
|
||||
skip_files_recv *.pif *.swp
|
||||
#delay_files_recv !%arcmail !%netmail # We will refuse all except mail
|
||||
#delay_files_send !%netmail # We will send only netmail
|
||||
#delay_files_recv (2:450/102) !%netmail
|
||||
#min_free_space 20000
|
||||
#recode_file_out /usr/local/fido/etc/koi82alt.tbl
|
||||
#recode_file_in /usr/local/fido/etc/alt2koi8.tbl
|
||||
|
||||
#run_after_handshake [logout]/bin/echo "Hello, world!"
|
||||
#run_after_session [nowait,setsid]/usr/local/lib/ftp/run-in
|
||||
#run_after_handshake [setsid,useshell,logout]/usr/bin/nlookup $REM_ADDR_FTN
|
||||
#run_after_session [logout,useshell]/usr/bin/hpt toss && /usr/bin/hpt link && /usr/bin/htick toss
|
||||
#run_after_handshake [setsid,useshell,logout]/usr/bin/nlookup $REM_ADDR_FTN
|
||||
#filebox_directory /var/spool/fido/bt/fbox
|
||||
|
||||
#filebox /var/spool/ftn/fbox/adb 2:5020/2120.1 hold
|
||||
#filebox /var/spool/ftn/fbox/pvc 2:5020/2091 normal
|
||||
#flo_translate C:\\fido\\spool\\outbound /var/spool/ftn/out
|
||||
#flo_translate \\ /
|
||||
|
||||
maxtries 200 Undialable # Be carefull.. =)
|
||||
maxtries_noansw 5 Hold 7200 # Call two hours later
|
||||
maxtries_noconn 40 Hold 10800 # Don't call 3 hours
|
||||
maxtries_hshake 10 Hold 86400 # 1 day delay
|
||||
maxtries_sessions 10 Hold 3600 # Don't annoy uplinks
|
||||
maxtries_nodial 1 Hold 1200 # Call 20 min later
|
||||
|
||||
daemon_circle_modem 40
|
||||
daemon_circle_rescan 60
|
||||
daemon_circle_normal 80
|
||||
daemon_circle_direct 40
|
||||
daemon_circle_crash 20
|
||||
daemon_circle_immed 10
|
||||
daemon_maxclients_tcpip 2
|
||||
daemon_maxclients_modem 1
|
||||
daemon_pid_file %TESTZONE%/run/bforceA.pid
|
||||
|
||||
#syslog_facility 64
|
||||
#nomail_flag /home/zx/fido/ftnroot/flags/nomail
|
||||
#run_before_session /usr/local/bin/call_inet.sh
|
||||
|
||||
recieved_to_lower yes
|
||||
|
||||
# That's all!
|
||||
@@ -0,0 +1,202 @@
|
||||
address 99:1/2@testzone
|
||||
options NoDirZap NoJanus NoChat
|
||||
#proto_order ZMO,ZAP,HYD,SLK,KER,DZA,JAN,TZA
|
||||
proto_order %PROTO%
|
||||
#domain medianet /var/spool/ftn/medianet/ 776
|
||||
#domain schoolnet /var/spool/ftn/schoolnet/ 461
|
||||
log_file %TESTZONE%/logsB/bf-log
|
||||
debug_file %TESTZONE%/logsB/bf-debug
|
||||
debug_level modem hshake event freq
|
||||
nodial_flag %TESTZONE%/etc/nodial
|
||||
inbound_directory (Protected) %TESTZONE%/inboundB
|
||||
inbound_directory %TESTZONE%/inbound-unsecureB
|
||||
# incnet_flag %TESTZONE%/flags/toss
|
||||
# incarc_flag %TESTZONE%/flags/toss
|
||||
outbound_directory %TESTZONE%/outboundB
|
||||
#amiga_outbound_directory /var/spool/fido/bt/out
|
||||
nodelist_directory %TESTZONE%/nodelist
|
||||
status_directory %TESTZONE%/logsB
|
||||
history_file %TESTZONE%/logsB/history
|
||||
|
||||
password 99:1/1 testpwd1
|
||||
#min_speed_in 1200
|
||||
#min_speed_out 1200
|
||||
#session_limit_in 1800
|
||||
#session_limit_out 1800
|
||||
#min_cps_time 120
|
||||
# min_cps_recv (2:5020/1398) 2100
|
||||
# min_cps_recv (2:5020/1682) 3000
|
||||
# min_cps_recv (2:5020/1811) 1400
|
||||
zmodem_mincps_recv 300 15
|
||||
zmodem_mincps_recv 1200 90
|
||||
zmodem_mincps_recv 2400 120
|
||||
zmodem_mincps_recv 4800 240
|
||||
zmodem_mincps_recv 7200 360
|
||||
zmodem_mincps_recv 9600 480
|
||||
zmodem_mincps_recv 12000 600
|
||||
zmodem_mincps_recv 14400 720
|
||||
zmodem_mincps_recv 16800 840
|
||||
zmodem_mincps_recv 19200 960
|
||||
zmodem_mincps_recv 21600 1080
|
||||
zmodem_mincps_recv 23600 1180
|
||||
zmodem_mincps_recv 24000 1200
|
||||
zmodem_mincps_recv 26400 1320
|
||||
zmodem_mincps_recv 28800 1440
|
||||
zmodem_mincps_recv 31200 1600
|
||||
zmodem_mincps_recv 33600 1700
|
||||
|
||||
zmodem_mincps_send 300 15
|
||||
zmodem_mincps_send 1200 90
|
||||
zmodem_mincps_send 2400 120
|
||||
zmodem_mincps_send 4800 240
|
||||
zmodem_mincps_send 7200 360
|
||||
zmodem_mincps_send 9600 480
|
||||
zmodem_mincps_send 12000 600
|
||||
zmodem_mincps_send 14400 720
|
||||
zmodem_mincps_send 16800 840
|
||||
zmodem_mincps_send 19200 960
|
||||
zmodem_mincps_send 21600 1080
|
||||
zmodem_mincps_send 23600 1180
|
||||
zmodem_mincps_send 24000 1200
|
||||
zmodem_mincps_send 26400 1320
|
||||
zmodem_mincps_send 28800 1440
|
||||
zmodem_mincps_send 31200 1600
|
||||
zmodem_mincps_send 33600 1700
|
||||
|
||||
hydra_mincps_recv 300 15
|
||||
hydra_mincps_recv 1200 90
|
||||
hydra_mincps_recv 2400 120
|
||||
hydra_mincps_recv 4800 240
|
||||
hydra_mincps_recv 7200 360
|
||||
hydra_mincps_recv 9600 480
|
||||
hydra_mincps_recv 12000 600
|
||||
hydra_mincps_recv 14400 720
|
||||
hydra_mincps_recv 16800 840
|
||||
hydra_mincps_recv 19200 960
|
||||
hydra_mincps_recv 21600 1080
|
||||
hydra_mincps_recv 23600 1180
|
||||
hydra_mincps_recv 24000 1200
|
||||
hydra_mincps_recv 26400 1320
|
||||
hydra_mincps_recv 28800 1440
|
||||
hydra_mincps_recv 31200 1600
|
||||
hydra_mincps_recv 33600 1700
|
||||
|
||||
hydra_mincps_send 300 15
|
||||
hydra_mincps_send 1200 90
|
||||
hydra_mincps_send 2400 120
|
||||
hydra_mincps_send 4800 240
|
||||
hydra_mincps_send 7200 360
|
||||
hydra_mincps_send 9600 480
|
||||
hydra_mincps_send 12000 600
|
||||
hydra_mincps_send 14400 720
|
||||
hydra_mincps_send 16800 840
|
||||
hydra_mincps_send 19200 960
|
||||
hydra_mincps_send 21600 1080
|
||||
hydra_mincps_send 23600 1180
|
||||
hydra_mincps_send 24000 1200
|
||||
hydra_mincps_send 26400 1320
|
||||
hydra_mincps_send 28800 1440
|
||||
hydra_mincps_send 31200 1600
|
||||
hydra_mincps_send 33600 1700
|
||||
#
|
||||
mode_default 100666
|
||||
mode_arcmail 100666
|
||||
mode_netmail 100666
|
||||
mode_request 100666
|
||||
|
||||
#modem_port /dev/ttyUSB0:57600
|
||||
modem_reset_command ATE0M0|
|
||||
modem_dial_prefix ATDT
|
||||
modem_dial_suffix |
|
||||
modem_hangup_command v~^~ATH0|
|
||||
#modem_stat_command AT%S|
|
||||
#modem_stat_command AT|
|
||||
modem_stat_command AT&V1|
|
||||
modem_dial_response "CONNECT" connect
|
||||
modem_dial_response "BUSY" busy
|
||||
modem_dial_response "NO CARRIER" nocarrier
|
||||
modem_dial_response "NO DIAL" nodialTone
|
||||
modem_dial_response "NO ANSWER" noanswer
|
||||
modem_dial_response "VOICE" noanswer
|
||||
modem_dial_response "ERROR" error
|
||||
|
||||
nodelist NODELIST.999 *:*/*.0
|
||||
|
||||
#nodelist 450_256.pnt 2:450/256.*
|
||||
#nodelist easynet.ndl 20:26/*.0
|
||||
#nodelist *:*/*.*
|
||||
|
||||
phone_translate 7-813-78
|
||||
phone_translate 7- 8
|
||||
#phone_translate 375- 8
|
||||
|
||||
system_name TestZoneB
|
||||
location TestZone
|
||||
sysop_name TestZoneB User
|
||||
phone -Unpublished-
|
||||
max_speed 9600
|
||||
emsi_OH_time 00:00-24:00
|
||||
emsi_FR_time 00:00-24:00
|
||||
emsi_send_tz yes
|
||||
emsi_send_time yes
|
||||
|
||||
recv_buffer_size 65536
|
||||
|
||||
wait_carrier_out 120
|
||||
|
||||
#freq_srif_command /usr/local/lib/u-srif/u-srif
|
||||
freq_alias_list %TESTZONE%/etc/freq.aliases
|
||||
freq_dir_list %TESTZONE%/etc/freq.dirs
|
||||
freq_limit_number 10
|
||||
|
||||
freq_limit_size 6000000
|
||||
freq_limit_time 1200
|
||||
freq_ignore_masks \\* \\*.\\* \\*.zip \\*.rar \\*.exe \\*.mp3 \\*.avi \\*.mp4 \\*.tgz
|
||||
#zmodem_skip_by_pos yes
|
||||
zmodem_send_dummy_pkt no
|
||||
#zmodem_start_block_size 512
|
||||
#zmodem_tx_window 32768
|
||||
skip_files_recv *.pif *.swp
|
||||
#delay_files_recv !%arcmail !%netmail # We will refuse all except mail
|
||||
#delay_files_send !%netmail # We will send only netmail
|
||||
#delay_files_recv (2:450/102) !%netmail
|
||||
#min_free_space 20000
|
||||
#recode_file_out /usr/local/fido/etc/koi82alt.tbl
|
||||
#recode_file_in /usr/local/fido/etc/alt2koi8.tbl
|
||||
|
||||
#run_after_handshake [logout]/bin/echo "Hello, world!"
|
||||
#run_after_session [nowait,setsid]/usr/local/lib/ftp/run-in
|
||||
#run_after_handshake [setsid,useshell,logout]/usr/bin/nlookup $REM_ADDR_FTN
|
||||
#run_after_session [logout,useshell]/usr/bin/hpt toss && /usr/bin/hpt link && /usr/bin/htick toss
|
||||
#run_after_handshake [setsid,useshell,logout]/usr/bin/nlookup $REM_ADDR_FTN
|
||||
#filebox_directory /var/spool/fido/bt/fbox
|
||||
|
||||
#filebox /var/spool/ftn/fbox/adb 2:5020/2120.1 hold
|
||||
#filebox /var/spool/ftn/fbox/pvc 2:5020/2091 normal
|
||||
#flo_translate C:\\fido\\spool\\outbound /var/spool/ftn/out
|
||||
#flo_translate \\ /
|
||||
|
||||
maxtries 200 Undialable # Be carefull.. =)
|
||||
maxtries_noansw 5 Hold 7200 # Call two hours later
|
||||
maxtries_noconn 40 Hold 10800 # Don't call 3 hours
|
||||
maxtries_hshake 10 Hold 86400 # 1 day delay
|
||||
maxtries_sessions 10 Hold 3600 # Don't annoy uplinks
|
||||
maxtries_nodial 1 Hold 1200 # Call 20 min later
|
||||
|
||||
daemon_circle_modem 40
|
||||
daemon_circle_rescan 60
|
||||
daemon_circle_normal 80
|
||||
daemon_circle_direct 40
|
||||
daemon_circle_crash 20
|
||||
daemon_circle_immed 10
|
||||
daemon_maxclients_tcpip 2
|
||||
daemon_maxclients_modem 1
|
||||
daemon_pid_file %TESTZONE%/run/bforceB.pid
|
||||
|
||||
#syslog_facility 64
|
||||
#nomail_flag /home/zx/fido/ftnroot/flags/nomail
|
||||
#run_before_session /usr/local/bin/call_inet.sh
|
||||
|
||||
recieved_to_lower yes
|
||||
|
||||
# That's all!
|
||||
Executable
+6
@@ -0,0 +1,6 @@
|
||||
#!/bin/bash
|
||||
|
||||
txt2pkt -nf "TestZone UserB" -xf "99:1/1" -xt "99:1/2" -t "Binkleyforce testzone" -o "fido.zxalexis.ru" -s "Test Message from TestNodeA to TestNodeB" -d ./msgAtoB ./testtextA.cp866
|
||||
txt2pkt -nf "TestZone UserA" -xf "99:1/2" -xt "99:1/1" -t "Binkleyforce testzone" -o "fido.zxalexis.ru" -s "Test Message from TestNodeB to TestNodeA" -d ./msgBtoA ./testtextB.cp866
|
||||
|
||||
|
||||
Binary file not shown.
Binary file not shown.
@@ -0,0 +1,50 @@
|
||||
‚®â, ¢¥ï«®:
|
||||
|
||||
‡¢¥§¤ë ®âà ¦ «¨áì ¢ ¥ñ £« § å. � ìè¥, ¥é¥ ¬¥áïæ § ¤ ¨å ¥ ¡ë«® ¢¨¤® ¢ ç¥à⥠£®à®¤ . ‘¢¥â ä® à¥© ¨ ᬮ£ § £«ãè «¨ ¨å á« ¡®¥ ¬¥àæ ¨¥. ‚ᥠ¨§¬¥¨«®áì. ˆ ®¤¨¬ ¨§ ¥¬®£¨å ¯«îᮢ á«®¦¨¢è¥©áï á¨âã æ¨¨ ¡ë«® ¬¥àæ ¨¥ §¢¥§¤ ¢ ¥ñ £« § å, ¨ ¢®§¤ãå, ª ¦¥âáï áâ « ç¨é¥. “ ¢á¥å ã á ª®£¤ â® ¡ë« à ¡®â , ¨ ¡ë« ¤®¬. “ ¥ª®â®àëå ¡ë«¨ ¤¥â¨. “ ‹¥ë ¡ë« ¤®çª . Ž à ¡®â « ¡ ଥ让, ¯® ¢¥ç¥à ¬ ¯®¤à ¡ âë¢ « ¢ "ª«ã¡¥ § ª®¬áâ¢". �®¯à®áâã £®¢®àï - ¡ë« ¯à®áâ¨âã⪮©. ’¥¯¥àì ¥© 㦥 ¥ ¯à¨å®¤¨âáï ¥§¤¨âì ¯® ¥§ ª®¬ë¬ ª«¨¥â ¬, ª ¦¤ë© à § ¯¥à¥¤ ¤¢¥àìî ª¢ àâ¨àë ªà¥áâ¨âìáï, ¨ ¬®«¨âìáï, çâ® ¡ë ¢á¥ ¯à®è«® ª ª ¤®. �⮠⮦¥ ¯«îá. �® ⥯¥àì ã ¥ñ ¥â ¤®çª¨. Ž ¯®â¥àï« áì ¢ ¯¥à¢ë¥ ¤¨, ª ª ⮫쪮 ¢á¥ íâ® ç¨ «®áì.
|
||||
‹¥ ¡ë« " ¢ë§®¢¥", ª®£¤ ¨á祧«® í«¥ªâà¨ç¥á⢮. �¨ªâ® ¥é¥ ¥ § «, çâ® íâ® á¥à쥧®. Œ®¡¨«ì ï á¢ï§ì ¥ à ¡®â « , £®à®¤ ¯®£à㧨«áï ¢® âì¬ã § ®ª ¬¨ ®¤ ª®¬ ⮩ ª¢ àâ¨àë, ¢ ª®â®à®© ¢®§¡ã¦¤¥ë© ¬ã¦ç¨ ª®ç « ¢ ¯à¥§¥à¢ ⨢, ‹¥ áç¨â « ᥪã¤ë ¤® ®ç¥à¥¤®£® ¢ë§®¢ . Ž ¥ ¬®£« ª ª ®¡ëç® ¯à¨ïâì ¤ãè, ¨ ¢ë§¢ âì â ªá¨, ¨ ¯®á«¥ ®á®§ ¨ï í⮣®, ¯à®áâ® ç « ®¤¥¢ âìáï. �¥«ì¥ ¯® ¯à¨¢ë窥 ¡ë«® á«®¦¥® ®¤®© ªã窮© à冷¬ á ªà®¢ âìî. Œã¦ç¨ , ¨¬ï ª®â®à®£® ® ¥ § å®â¥« § ¯®¬¨ âì ᪠§ « ¥© ᯠᨡ® ¨ ®âªàë« ¤¢¥àì, çâ® â® ¯à®¢®àç ¢ ¯®á«¥¤®ª "¤®«¡ ëå í«¥ªâਪ®¢"...
|
||||
‹¥¥ ¡ë«® ®ç¥ì ¯à¨ïâ® ¢ë©â¨ ᢥ¦¨© ¢®§¤ãå, ¯®á«¥ ¯à®¯ å襩 ¯¥à¥£ ஬ ª®¬ âã誨. Ž è« ¯® â¥¬ë¬ ã«¨æ ¬ £®à®¤ , è« "¡ §ã" ¯¥èª®¬, ¨ íâ ¥¯à®£«ï¤ ï âì¬ ¢®ªà㣠¤«ï ¥ñ ᥩç á ¡ë« ®âà ¦¥¨¥¬ ¢ãâ॥£® á®áâ®ï¨ï, ¨ ¯®í⮬㠮 á« ¦¤ « áì í⮩ ¯à®£ã«ª®©. Ž ¥é¥ ¥ § « , çâ® í«¥ªâà¨ç¥á⢮ ¨ ¢®¤®á ¡¦¥¨¥ 㦥 ¥ ¢®ááâ ®¢ïâ. Ž ¥ ¬®£« ¯®¤ã¬ âì, çâ® ç¥à¥§ âਠç á ¥ñ ¯ï⨫¥âïï ¤®çª , ¨á¯ã£ ¢è¨áì ⥬®âë ¨ ®¤¨®ç¥á⢠, ¢ë©¤¥â ¨§ ª¢ àâ¨àë, ¨ ¯à®¯ ¤¥â ¢á¥£¤ . Ž ¥é¥ ¥ § « , çâ® ¥ñ ¯®¨áª¨ ¡ã¤ãâ ¡¥á¯®«¥§ë ¨ ®¯ áë... Ž ¯à®áâ® è« ¯® 㫨æ¥.
|
||||
|
||||
‘¥©ç á ¬ë á⮨¬ ª®«ì殬, à¥è ¥¬ çâ® ¤¥« âì. „¬¨â਩ ˆ¢ ®¢¨ç á«¥¢ ®â ¬¥ï, ¤¯«¥¥ ‘ 讪, ‹¥ ¨ „¨¬ . � ᪠¬¥©ª¥ ¥¤ «¥ª® ᨤïâ ‹¥à ¨ Ž«ï. ‹¨æ ¢® â쬥 ¥«¥ à §«¨ç¨¬ë. “ ¬ã¦ç¨ - ¯®ªàëâë é¥â¨®©, ã ¤¥¢ã襪 ®áã㫨áì ¨ ãáâ «¨..
|
||||
- � Š¨à®¢ ï á«ëè « ¢ëáâ५ë. ’㤠¨¤â¨ ¡¥á¯®«¥§®. - „¬¨â਩ ˆ¢ ®¢¨ç ¡ë«  ¯ã£ .
|
||||
- „ ¨ªâ® ⥡ï â㤠¥ § áâ ¢«ï¥â ¨¤â¨! - ᪠§ « ‘ 讪.
|
||||
- „ , ® ¬ 㦮 ¤®áâ âì ¥é¥ ¥¤ë. - ®â¢¥â¨« ï.
|
||||
“«¨æë £®à®¤ ¡ë«¨ ¯ãáâë ⮫쪮 á ¢¨¤ã. � á ¬®¬ ¤¥«¥ - ¢ ç¥àëå £« §¨æ å §¤ ¨© î⨫¨áì ãæ¥«¥¢è¨¥. €£à¥áᨢë¥, ®§«®¡«¥ë¥, £®â®¢ë¥ ¢á¥. ‹î¤¨ ªã窮¢ «¨áì ¯® á«ãç ©®¬ã ¯à¨§ ªã. ’ ª ¨ è £à㯯 ®¡à §®¢ « áì á«ãç ©®. ޤ®¬ã ᥩç á ¥ ¢ë¦¨âì. �® ¯à®¡«¥¬ ¢ ⮬, çâ® ¬ë ¥ ¤®¢¥à﫨 ¤à㣨¬. Š ª ¢¯à®ç¥¬ ¨ ®¨ ¬. “ á ¥é¥ ¡ë« ¥¤ , ¥ñ å¢ â¨«® ¡ë ¥¤¥«î ¬ ªá¨¬ã¬.
|
||||
- Šâ® ¨¡ãâì á«¥¤¨« § í⨬ ¤®¬®¬? - ï 㪠§ « ¤®¬ 20, ª®à¯ãá 1 ¯® ‹¥¨£à ¤áª®© ¡¥à¥¦®©. �â® ¡ë« ¯ïâ¨íâ ¦ª , ¨ ® £®à¥« . ƒ®à¥« 㦥 ¤ ¢®. ˆ§ ®¤®£® ¯®¤ê¥§¤ ¯®áâ®ï® ¢ «¨« ¤ë¬. —¥àë©, £ãá⮩. �® ¢á¯®«®å®¢ ¯« ¬¥¨ ¥ ¡ë«® ¢¨¤®.
|
||||
- Ÿ á«¥¤¨« , ¨ªâ® ¥ ¢å®¤¨«. Š®¬ã 㦥 íâ® £®àï饥 ¯¥ª«®? - ‹¥à ¯®¤ « £®«®á ᮠ᪠¬¥©ª¨.
|
||||
- �®©¤¥¬ â㤠. - ‘ 讪 ¥ á¯à 訢 «, ® ¯à®áâ® ª®áâ â¨à®¢ « ä ªâ.
|
||||
�¨ªâ® ¥ ᯮਫ. ‚ᥠ®ç¥ì ãáâ «¨. ˆ ¨¤¥ï ®¡è à¨âì £®àï騩 ¤®¬ ¢á¥¬ ¯®ª § « áì ¯à ¢¨«ì®©. Œë ¯¥à¥¤¥à㫨 § ⢮àë, ¯à®¢¥à¨«¨ £à âë, ¨ ¯®è«¨.
|
||||
|
||||
„¬¨â਩ ˆ¢ ®¢¨ç ¡ë« ãç¨â¥«¥¬ ¢ â¥å¨ªã¬¥. ‚ â®â ¤¥ì ® ¯à¨è¥« ¤®¬®©, ªªãà â® à ááâ ¢¨« ¢á¥ ¯à®¤ãªâë ¢ 宫®¤¨«ì¨ª, ª®â®àë¥ ¯à¨¥á ¢ á㬪¥. � áá⥫¨« ᪠â¥àâì á⮫¥. „®áâ « äã¦¥à ¨§ á⥮£® èª ä . �冷¬ ¯®«®¦¨« ¡«î¤æ¥ á १ ë¬ áë஬. �ãâ뫪㠢¨ "Œ¥à«®", ªà¥¯ª®¥ ¯®«ãá« ¤ª®¥. ‚›ª«î稫 ᢥâ. ‚ª«î稫 ⥫¥¢¨§®à. � «¨« ¯®«ë© ä㦥à. Ž ¯à¨£®â®¢¨«áï ¯à®¢¥á⨠®ç¥à¥¤®© ¯à¨ïâë© ¢¥ç¥à ¢ ¯®«®¬ ®¤¨®ç¥á⢥.
|
||||
—¥à¥§ ¥¤¥«î ¯®á«¥ ⮣® ª ª á«ã稫 áì ª â áâà®ä ® 㦥 «¥£ª® १ « «î¤¥© ®¦®¬, ª®â®àë¬ ª®£¤ ⮠१ « áëà. Ž ã¦¥ «¥£ª® ¯¨« ¢®¤ªã, ¨ § ¡ë« §¢ ¨¥ «î¡¨¬®© ⥫¥¯¥à¥¤ ç¨. € ª®¬ ¤ "‡¥¨â", § ª®â®àãî ® ª®£¤ â® ¡®«¥« - ¤«ï ¥£® áâ « 祬 â® ¬¨ä¨ç¥áª¨¬, ¨§ ¤à㣮£® ¬¨à . ˆ â¥å «î¤¥©, ª®â®àë¬ ® áâ ¢¨« ª®£¤ â® ®æ¥ª¨ ¢ ª« áá¥, ® 㡨¢ « ¥ § ¤ã¬ë¢ ïáì. ˆ ¤ ¦¥ á ª ª¨¬ ⮠㤮¢®«ìá⢨¥¬ ¨ á ¥ª®â®à®© ¤®«¥© á ¬®®â¤ ç¨ ¨ ᬥª «ª¨...
|
||||
|
||||
ˆ ª®¥ç® ¦¥ ¨à®¨¨. �¥§ ¥ñ ᥩç á ¥ ¯à®¦¨âì. ‚ ¯®¤ê¥§¤¥ ¯ïâ¨íâ ¦ª¨ ¥á«® á¬à ¤®¬. Œë ¡ëáâà® ®¤¥«¨ ¬ à«¥¢ë¥ ¯®¢ï§ª¨. ‘¯ã᪠¢¨§, ¯®¤¢ «, ¯à¥¢à é¥ë© ¢ ᪫ ¤ ¯à®¤ãªâ®¢®£® ¬ £ §¨ . �â® ¨ ¥áâì è æ¥«ì. „¨¬ , ¤¥à¦ ¯¨á⮫¥â £®â®¢¥ ¢áâ « ®â ¤¢¥à¨ á«¥¢ . ‘ 讪 á¯à ¢ . �ã ¬¥ 㦮 ¡ë«® ¢§«®¬ âì ¦¥«¥§ãî ¤¢¥àì. Š ¦¤ë© ¨§ á ⥯¥àì áâ « ¢ í⮬ á¯¥æ¨ «¨á⮬. Ÿ ¥ áâ « ¯®¤¡¨à âì ª«îç. Ÿ à §à廊« ®¡®©¬ã ᢮¥£® "¬ ª ஢ " ¢®ªà㣠§ ¬ª . „¬¨â਩ ˆ¢ ®¢¨ç, ¨â¥««¨£¥â® ¯à¨«®¦¨«áï ®£®© ¯® ¤¢¥à¨ ¨ ¯¥à¢ë© ¢®à¢ «áï ¢ ¯®¬¥é¥¨¥. �®ª ï ¯¥à¥§ àï¦ « ®¡®©¬ã, ï 㦥 ãá«ëè « ¢ëáâ५ë. Œë ¤¥©á⢮¢ «¨ ¡ëáâà® ¨ ¡¥§¦ «®áâ®. „¥¢ã誨 áâ®ï«¨ á à㦨. ˆ¬ ®â¤ «¨ áâ àë© ª « 訪®¢, ¢á直© á«ãç ©.
|
||||
|
||||
‹¥à •®â¥« ¯à®áâ® ¯®¤®£à¥âì ¢®¤ã, çâ® ¡ë ¢ë¯¨âì £®àï祣® ç î. ‚¯¥à¢ë¥, á¯ãáâï ¤¢ ¤ï ª ª ®âª«î稫¨ í«¥ªâà¨ç¥á⢮, ® ®áâ®à®¦® ¢ëè« ã«¨æã. ‚ ®ª® ® ¢¨¤¥« , ª ª ¢® ¤¢®à¥ ¤®¬ «î¤¨ à §®¦£«¨ ª®áâ¥à. �ë« ®á¥ì, ¯®£®¤ ¥ à ¤®¢ « ⥯«®¬, ¨ à ááç¨âë¢ âì ¡ë«® ®á®¡® ¥ çâ®. …ñ áã¯à㣠¡ë« ¢ ª®¬ ¤¨à®¢ª¥ ¢ �¨â¥à¥, ¨ ® ¥ å®â¥« ¨ç¥£® ¡¥§ ¥£® ¯à¥¤¯à¨¨¬ âì, ¯®ª ® ¥ ¢¥à¥âáï. ‘®á¥¤ª , ¯®¦¨« ï ¦¥é¨ , ¡ë« ¥¤¨áâ¢¥ë¬ ç¥«®¢¥ª®¬, á ª¥¬ ® ®¡é « áì ¢ íâ® ¢à¥¬ï. Ž à á᪠§ « ¥©, çâ® í«¥ªâà¨ç¥á⢮ ¯®ç¨¨âì ¯®ª ¥ 㤠¥âáï. —â® ¯® ¥¯®ïâë¬ ¯à¨ç¨ ¬ ¥ à ¡®â îâ ¤ ¦¥ £¥¥à â®àë ¢ ¢â®¬®¡¨«ïå. ˆ çâ® ¢à®¤¥ ¡ë íâ® ¯à®¡«¥¬ ¥ ⮫쪮 ¢ Œ®ç¥£®à᪥, ® ¨ ¢® ¢á¥© ¬ãଠ᪮© ®¡« áâ¨.
|
||||
‚ ¯¥à¢ë© ¤¥ì, ¯® ã«¨æ ¬ 室¨«¨ ¬¨«¨æ¥©áª¨¥ ¯ âà㫨, £à®¬ª® £®¢®à¨«¨ çâ® ¡ë ¢á¥ ᮡ«î¤ «¨ ᯮª®©á⢨¥. —â® ¯¨â ¨¥ ¡ã¤¥â ᪮஠¢®ááâ ®¢«¥® ¨ ¥â ¯à¨ç¨ ¤«ï ¯ ¨ª¨. “â஬ ¯à®è¥« ¥é¥ ®¤¨ ¯ âàã«ì, ® ®£« ᨫ ¨ä®à¬ æ¨î ® ¥áª®«ìª¨å ¯ãªâ å ᪮ன ¯®¬®é¨, à §¢¥àãâëå ¢ £®à®¤¥. � æ¥âà «ì®© ¯«®é ¤¨, ã«¨æ¥ Š«¨¬¥â쥢 , ‹¥¨£à ¤áª®© ¡¥à¥¦®©, Œ®ç¥, ¨ ã«¨æ¥ �।®¢ . ’ ¬ ¬®¦® ¯®«ãç¨âì ¥¤ã ¨ ¢®¤ã. �¥ª®â®àë¥ «î¤¨ ¢á¥ â ª¨ ¯®¤¤ «¨áì ¯ ¨ª¥. Žá®¡¥® â¥, ª®â®àë¥ å®¤¨«¨ á ¬ «®«¥â¨¬¨ ¤¥â쬨. ލ âॡ®¢ «¨ ®â ¯ âàã«¥© ¯®«®© ¨ä®¬ 樨 ¨ ¢¥«¨ á¥¡ï ®ç¥ì ¥á¯®ª®©®. ‚á«¥¤á⢨¨ 祣® ¥ª®â®àë¥ ¡ë«¨ à¥á⮢ ë ¨ ¯®¬¥é¥ë ¯®¤ à¥áâ.
|
||||
‹¥à ¢ëè« á ª áâàî«¥© ¢®¤ë ¢® ¤¢®à. ‘®á¥¤¨ ¡¥§ ¯à®¬¥¤«¥¨ï 㪠§ «¨ áâ àë¥ ª 祫¨, ¯®¤ ª®â®à묨 £®à¥« ®£®ì, ¨ ¢¨á¥«® ¥é¥ ¥áª®«ìª® ª®â¥«ª®¢. ‹¥à ¯®¢¥á¨« ᢮©.
|
||||
‹¨æ 㠫© ¢®ªà㣠ª®áâà , ¨å ¡ë«® ®ª®«® 50-⨠祫®¢¥ª. �뫨 ¯à殮ë. ƒ« § ã ¬®£¨å ¢®§¡ã¦¤¥® £®à¥«¨. Šâ® â® ¤ ¦¥ èã⨫. ’¨è¨ã ¨ ¬¥àë© £®¬® £®«®á®¢ ¨®£¤ ¯à¥àë¢ « £à®¬ª¨© ᬥå.
|
||||
‹¥à ¯®£®¢®à¨« ¥¬®£® á á®á¥¤ï¬¨. �¨ªâ® ¥ § «, çâ® á«ã稫®áì...
|
||||
|
||||
�¥¯«®å®. ލ ¢á¥ ᯠ«¨. Ž¡®è«®áì ¡¥§ ®á«®¦¥¨©. ’®«ìª® ®¤¨ ¨§ ¨å ¯ëâ «áï ®¡®à®ïâìáï. Œ «ì稪, «¥â 15-â¨, ¥ ¡®«ìè¥... ¯®¤ï« ¢â®¬ â „¨¬ã. €¢â®¬ â ¡ë« ¯à¥¤®åà ¨â¥«¥, ¨ ¯®ª ¬ «ì稪 ¤¥« « ¯®¯ë⪨ ¯®ïâì, ¯®ç¥¬ã ¥ à ¡®â ¥â á¯ã᪮¢®© ªàî箪 - „¨¬ ¢ë¥á ¥¬ã ¬®§£¨ ¯à®â¨¢®¯®«®¦ãî á⥪ã. �ë«® ¥é¥ ¯ïâì 祫®¢¥ª ¢ ¯®¤¢ «¥. ’ਠ¤¥¢ã誨 ¨ ¤¢®¥ ¬ã¦ç¨. ‚á¥å § áâ५«¨«¨ ¡¥§ ®á®¡ëå ¯à®¡«¥¬. Œë ¯®§¢ «¨ ¤¥¢ã襪. ‹¥ ¨ ‹¥à ç «¨ 㡨à âì âàã¯ë ¢ ®¤ã ª®¬ âã. Ž«ï ®áâ « áì 㠢室 , á ª « 讬 £®â®¢¥. ‚ᥠ®áâ «ìë¥ ®æ¥¨¢ «¨ § ¯ áë ¯à®¢¨ â . Š®á¥à¢ë. ‘ã娥 ¯ ª¥âë á « ¯è®©. Ÿé¨ª¨ á «¨¬® ¤®¬, ¬¨¥à «ª . ’ãâ ¡ë«® ¯à¨£®¤®© ¥¤ë ¤¢ ¬¥áïæ , ¥á«¨ à ááç¨âë¢ âì è¥áâ¥àëå. �஡«¥¬ ¡ë« ⮫쪮 ¢ ⮬, £¤¥ ¢á¥ íâ® á¯àïâ âì.
|
||||
- �«ïâì! - ‹¥à ¯®¤áª®«ì§ã« áì ¨ 㯠« âà㯠¬ «ì稪 á ¯à®áâ५¥®© ¡ 誮©.
|
||||
- ’ ¬ ¬®§£¨ ¯®«ã, âë ç¥ ¥ ¢¨¤¥« ? - ‹¥ á¬¥ï« áì...
|
||||
- ’ë à ìè¥ ¥ ¬®£« ᪠§ âì? - ¨ ‹¥à ⮦¥ à áá¬¥ï« áì...
|
||||
- ’ ª, ¯®¤à㣨 è ¡ è ¢¥á¥«ìî, ¡«ïâì, ¥á«¨ ¢ ¬ § ïâìáï ¥ç¥¬ - ¯¨§¤ã©â¥ áî¤ , ï ¢ ¬ ᥩç á § £àã¦ã ï騪 ¬¨!!! - Ÿ ¡ë« ¥ ¢ áâ஥¨¨ èãâ¨âì.
|
||||
- �ã ¨ á㪠âë Œ ªá...
|
||||
- „ ¯®è¥« ® åã©! - ¯®¤¤¥à¦ « ‹¥à ...
|
||||
- �¥ ¯¨§¤¥âì! ‚ᥬ áî¤ åã©!!!!
|
||||
|
||||
‹¥ ᨤ¥« ¢â®¡ãᮩ ®áâ ®¢ª¥ ¯à®â¨¢ ¬®¥£® ¤®¬ . Ž â¨å® ¯« ª « , ®¡å¢ ⨢ à㪠¬¨ £®«®¢ã. “¦¥ ¥¤¥«î ï ¨ç¥£® £®àï祣® ¥ ¥«. ‡ ¯ áë ¯à®¤ãªâ®¢ ª®ç¨«¨áì, 㫨æë ®¯ãá⥫¨. ˆ «¨èì ¥¬®£¨¥ ¯à®å®¦¨¥ è â «¨áì ¯® £®à®¤ã ª ª §®¬¡¨, á«®¢® ¨ç¥£® ¯¥à¥¤ ᮡ®© ¥ ¢¨¤¥«¨. ލ 諨 ª à §¤ â®çë¬ ¯ãªâ ¬. �® á«ãå ¬ - â ¬ 㦥 ç «¨áì ¡¥á¯®à浪¨. �¥ª®â®àë¥ ¤®¬ £®à¥«¨.
|
||||
Œ¥ ¤®¥«® 室¨âì, ¬¥ ¡ë«® ®¤¨®ª®. Ÿ ᥫ à冷¬ á ¥©.
|
||||
- Š ª ¤¥« ?
|
||||
- Ÿ ¥ ¬®£ã ©â¨ á¢®î ¤®çì. - ‹¥ £®¢®à¨« ¢ ¯ãáâ®âã ¯¥à¥¤ ᮡ®©.
|
||||
- Š ª ¥ñ §®¢ãâ? - ï ¯®¯ëâ «áï § ¯®«¨âì íâã ¯ãáâ®âã.
|
||||
- „ è .
|
||||
- —â® âë ᮡ¨à ¥èìáï ¤¥« âì?
|
||||
- Ÿ å®çã ã©â¨ ¢á«¥¤ § ¥©.. - ¥ñ á«®¢ ¯à¥àë¢ «¨áì áâ® ¬¨ ¨ ¯« 祬.
|
||||
- �®è«¨ § ¬®©.
|
||||
|
||||
Œë ¥¯«®å® ¯®¦¨¢¨«¨áì. ‚áî ¯à¨£®¤ãî ¥¤ã ã¥á«¨ á ᮡ®©. �¥áª®«ìª® ¢â®¬ ⮢ ¨ ¡®¥¯à¨¯ ᮢ. “¤ ç . Žâªã¤ ¢ £®à®¤¥ ®ª § «®áì á⮫쪮 ®à㦨ï? �®ç¥¬ã ⥯¥àì ¬ë ¡®¨¬áï ᮫¥ç®£® ᢥâ ? •®«¥à ª®á¨â «î¤¥© ¨ ¦¨¢®âëå. � 㫨æ å, ¢® ¤¢®à å ¢¨¤ë âàã¯ë «î¤¥©, ¤¥â¥©... ލ ¯®ªãá ë ᮡ ª ¬¨. ލ à á¯à®áâà ïîâ ¥¢ë®á¨¬ãî ¢®ì. ‹î¤¨ 㬨à îâ ¢¥§ ¯®. Žâ ¡®«¥§¥©. ®â ¯ã«¨, ¢ë¯ã饮© ¢ ᯨã. Žâ ®¦ , ª®â®àë© ª®£¤ ⮠१ « áëà, ⥯¥àì ०¥â 祫®¢¥ç¥áªãî ¯«®âì. ƒ®á¯®¤ì § ¤ã¬ « £«®¡ «ìãî ç¨áâªã. �â® ¥ ଠ£¥¤¤®. ‚릨¢è¨¥ ¨ ãá⠢訥. ‹î¤¨, ¯®å®¦¨¥ ¡®«ìè¥ §¢¥à¥©. —¥«®¢¥ç¥á⢮ ¢ í⮬ £®à®¤¥ ¯¥à¥áâ «® áãé¥á⢮¢ âì. ‚ë¡à âìáï ¨§ ¥£® ¥à¥ «® - â¥, ªâ® ¯ëâ «áï § ¬¥à§«¨ ¢ ¤®à®£¥. ˆ«¨ ¡ë«¨ 㡨âë. …¤¨áâ¢¥ë© ¢ë室 - 㡨¢ âì, £à ¡¨âì, ¢ë¦¨¢ âì. „¥à¦ âìáï £à㯯 ¬¨. „®¢¥àïâì «î¤ï¬, ª®â®àë¥ à冷¬, ® ⮫쪮 ª®£¤ âë ®á®§ ¥èì, çâ® ®¨ 㦤 îâáï ¢ ⥡¥. ’®â, ªâ® ¥ 㦥 - ¡ã¤¥â 㡨â. �¥¤¥«î § ¤, è ⮢ à¨éì, ¬®© ¤à㣠¤¥âá⢠, ‚®¢ ... ® § ¡®«¥« 宫¥à®©. Š ª ⮫쪮 ¬ë íâ® ¯®ï«¨ - ¬ë á¢ï§ «¨ ¥ã à㪨 ¨ ®£¨, ®â¥á«¨ ®¡®ç¨ã, ¨ ï ¯ãá⨫ ¥¬ã ¯ã«î ¢ «®¡.
|
||||
|
||||
Ž ¢á¯®¬¨ « ¤¨, ª®£¤ §¢¥§¤ ¥ ¡ë«® ¢¨¤®. € §¢¥§¤ë ®âà ¦ «¨áì ¢ ¥ñ £« § å. Œë ¢á¥ ¡ë«¨ ¤à㣨¬¨. ’¥¯¥àì ï ¢¨¦ã çâ® ® áç á⫨¢ . Ž ¯®â¥àï« à¥¡¥ª . Ž ã¡¨¢ « , ¡ë« ᢨ¤¥â¥«¥¬ ⮣®, ª ª 㡨¢ «¨ ¥ñ ¤àã§¥©. Ž á¬¨à¨« áì á ⥬, ç⮠㦥 ¨ª®£¤ ¥ ¡ã¤¥â ¢ ¥ñ ¦¨§¨ ⥯«®£® ¤ãè , ª®ä¥, £®àï祩 ¬ ¬¨®© ¯®å«¥¡ª¨. ‹¥ . ˆ ï å®çã à §¤¥«¨âì ⢮¥ áç áâì¥. ’ë ¯®§¢®«ï¥èì ¬¥ â¥¡ï ®¡ïâì. ’ë 㦥 ¥ ¤ã¬ ¥èì ® ¦¥á⮪®á⨠¦¨§¨, § áâ ¢¨¢è¥© ¨¤â¨ â¥¡ï ¯ ¥«ì. ’ë ¤®¢®«ì . ’¢®ï ¬¥áâì ᢥà訫 áì. ’®à¦¥á⢮ ¡ëâ¨ï á⮨«® ¯®â¥à¨ ¤¥¢®çª¨, ª®â®àãî âë «î¡¨« . ’¥¯¥àì ¬ë á« ¢¨¬ ¡®£ § â®, çâ® ® ¤ « ¬ íâ®â ¬®¬¥â áç áâìï. ’¥¯¥àì ¬ë ¢¥à¨¬ ¢ ¥£®. ’¥¯¥àì ¬ë ¥ áãé¥áâ¢ã¥¬. Œë ¦¨¢¥¬. Œë ¢á¥ ¯®â¥à﫨 ¤¥¢á⢥®áâì. Œë ¯®«ã稫¨ ®¯ëâ. � á ¨§®á¨«®¢ « £®á¯®¤ì ¡®£! �® ¯®ç¥¬ã ¦¥ ¬ë ᥩç á â ª áç á⫨¢ë????
|
||||
|
||||
@@ -0,0 +1,184 @@
|
||||
— ª �€‹€�ˆŠ
|
||||
Šˆ˜Šˆ
|
||||
|
||||
‚¤®å¨â¥.
|
||||
|
||||
� ¡¥à¨â¥ ª ª ¬®¦® ¡®«ìè¥ ¢®§¤ãå .
|
||||
|
||||
�â ¨áâ®à¨ï § ¨¬ ¥â ஢® á⮫쪮 ¢à¥¬¥¨, ᪮«ìª® ¢ë ¬®¦¥â¥ § ¤¥à¦ âì ¤ëå ¨¥, ¨ ¥é¥ çãâì-çãâì. ’ ª çâ® á«ãè ©â¥ ª ª ¬®¦® ᪮॥.
|
||||
|
||||
ޤ¨ ¬®© ¤àã£, ª®£¤ ¥¬ã ¡ë«® 13 «¥â, ãá«ëè « ® ¯¥££¨£¥ . �¥££¨£ íâ® ¯ àï âà å îâ ¢ § ¤¨æã ¨áªãáâ¢¥ë¬ ç«¥®¬. �® á«ãå ¬, ¥á«¨ á⨬㫨஢ âì ¯à®áâ âã ¤®áâ â®ç® ᨫì®, ¬®¦® ¤®¡¨âìáï ¬®¦¥á⢠ïàª¨å ®à£ §¬®¢ ¡¥§ ¯®¬®é¨ àãª. ‚ ¢®§à á⥠13 «¥â íâ®â ¤à㣠¡ë« ¬ «¥ìª¨¬ ᥪáã «ìë¬ ¬ ì类¬. Ž ¢¥ç® ®¢ë¥ ¯ã⨠¯®«ãç¥¨ï ®ç¥à¥¤®£® ®à£ §¬ . Ž ¨¤¥â ¢ á㯥ଠથâ, çâ®¡ë ªã¯¨âì ¬®àª®¢ì ¨ ¢ §¥«¨. —â®¡ë ¯à®¢¥á⨠¥¡®«ì讥 ¥§ ¢¨á¨¬®¥ à áá«¥¤®¢ ¨¥. ’®£¤ ® ¢¤à㣠¯à¥¤áâ ¢«ï¥â ᥡ¥, ª ª ¢á¥ íâ® ¡ã¤¥â ¢ë£«ï¤¥âì ã ª ááë ¢ á㯥ଠથâ¥, ®¤¨®ª ï ¬®àª®¢ì ¨ ¡ ®çª ¢ §¥«¨ ¯®¤¢¨¦®© «¥â¥ ª ááë. ˆ ¢á¥ ᬮâàïâ. ‚ᥠ¯®¨¬ îâ, çâ® ¯ à¥ì à¥è¨« ¯®¤ à¨âì ᥡ¥ § ¬¥ç ⥫ìë© ¢¥ç¥à.
|
||||
|
||||
ˆâ ª, ¬®© ¤à㣠¯®ªã¯ ¥â ¬®«®ª® ¨ ï©æ ¨ á å à ¨ ¬®àª®¢ì, ¢á¥ ¨£à¥¤¨¥âë ¤«ï ¬®àª®¢®£® ¯¨à®£ . ˆ ¢ §¥«¨.
|
||||
|
||||
Š ª ¡ã¤â® ¤®¬ ® á®¡à «áï § áããâì ᥡ¥ ¢ § ¤¨æã ¬®àª®¢ë© ¯¨à®£.
|
||||
|
||||
„®¬ ® ¢ë१ ¥â £àã¡®¢ âë© ¬®àª®¢ë© ç«¥. Ž ®¡¬ §ë¢ ¥â ¥£® ¢ §¥«¨®¬ ¨ ãá¥à¤® § á®¢ë¢ ¥â ¥£® ᥡ¥ ¢ § ¤¨æã. �¨ç¥£® ¥ ¯à®¨á室¨â. �¨ª ª®£® ®à£ §¬ . �¨ç¥£® ¥ ¯à®¨á室¨â ªà®¬¥ ⮣®, çâ® § ¤¨æ ¡®«¨â.
|
||||
|
||||
’ãâ ¥£® ¬ âì §®¢¥â ¥£® 㦨 âì. ˆ¤¨ áî¤ , ¯®à ¥áâì, £®¢®à¨â ® .
|
||||
|
||||
Ž ¢ëâ ᪨¢ ¥â ¬®àª®¢ì ¨§ § ¤¨æë ¨ ¯àïç¥â ᪮«ì§ªãî, £àï§ãî ¬®àª®¢ì ¯®¤ ªà®¢ âìî á।¨ £àï§®£® ¡¥«ìï.
|
||||
|
||||
�®ã¦¨ ¢, ® ¨¤¥â § ¬®àª®¢ìî, ® ¥¥ â ¬ ¥â. �®ª ® 㦨 «, ¬ âì § ¡à « ¥£® £àï§®¥ ¡¥«ì¥, çâ®¡ë ¯®áâ¨à âì. Ž ¥ ¬®£« ¥ § ¬¥â¨âì ¬®àª®¢ì, âé â¥«ì® ®áâà㣠ãî ªãå®ë¬ ®¦®¬, ¡¥«áâïéãî ®â ᬠ§ª¨, ¢®îçãî.
|
||||
|
||||
‘«¥¤ãî騥 ¬¥áïæë íâ®â ¬®© ¤à㣠¦¨¢¥â ª ª ¯®¤ ç¥à®© âã祩. Ž ®¦¨¤ ¥â ¢ëïá¥¨ï ®â®è¥¨©. �® í⮣® ¥ ¯à®¨á室¨â. �¨ª®£¤ . „ ¦¥ ª®£¤ ® ¢ëà®á, íâ ¬®àª®¢ì ¥§à¨¬® ¢¨á « ¤ ª ¦¤ë¬ ஦¤¥á⢥᪨¬ 㦨®¬, ¤ ª ¦¤ë¬ ᥬ¥©ë¬ ¯à §¤¨ª®¬. Š ¦¤ ï ¯ áå , ª®£¤ ¥£® ᮡáâ¢¥ë¥ ¤¥â¨, ¢ãª¨ ¥£® த¨â¥«¥©, ¨éãâ á¯àïâ ë¥ ¯ áå «ìë¥ ï©æ , íâ ¬®àª®¢ì ¢¨á ¥â ¤ ¨¬¨ ¢á¥¬¨.
|
||||
|
||||
‘«¨èª®¬ ®â¢à â¨â¥«ì®, çâ®¡ë ¨¬¥âì §¢ ¨¥.
|
||||
|
||||
“ äà æã§®¢ ¥áâì ¢ëà ¦¥¨¥: íä䥪⠫¥áâ¨æë . �®-äà æã§áª¨ Esprit d Escalier, íá¯à¨ ¤ í᪠«ì¥. Ž® ®â®á¨âáï ª ¬®¬¥âã, ª®£¤ âë 室¨èì ¯à ¢¨«ìë© ®â¢¥â, ® 㦥 ¯®§¤®. � ¯à¨¬¥à, ¢¥ç¥à¨ª¥ â¥¡ï ªâ®-â® ®áª®à¡«ï¥â. ’ë ¤®«¦¥ ª ª-â® ®â¢¥â¨âì. Š®£¤ â¥¡ï ¢á¥ á¬®âà¨â, ª®£¤ ⥡ï íâ® ¤ ¢¨â, âë £®¢®à¨èì çâ®-â® ¥ã¡¥¤¨â¥«ì®¥. �® ¢¥¤ì ¯®â®¬ âë ã室¨èì á ¢¥ç¥à¨ª¨.
|
||||
|
||||
ˆ ¨¬¥® ¢ â®â ¬®¬¥â, ª®£¤ ç¨ ¥èì á¯ã᪠âìáï ¯® «¥áâ¨æ¥ ¢¤à㣠®, ç㤮. ’¥¡¥ ¯à¨å®¤¨â ¢ £®«®¢ã ¨¤¥ «ìë© ®â¢¥â. ˆ íâ® ®ª®ç ⥫쮥 㨦¥¨¥.
|
||||
|
||||
‚®â çâ® â ª®¥ íä䥪⠫¥áâ¨æë
|
||||
|
||||
�஡«¥¬ ¢ ⮬, çâ® ¤ ¦¥ ã äà æã§®¢ ¥â §¢ ¨© ¤«ï ¥ª®â®àëå £«ã¯®á⥩, ª®â®àë¥ ¬ë ¤¥« ¥¬ ¯®¤ ¢«¨ï¨¥¬ ¬®¬¥â . ‚ᥠíâ¨ è¨ £«ã¯ë¥, ®âç ïë¥ ¤¥©áâ¢¨ï ¨ ¯®áâ㯪¨.
|
||||
|
||||
�¥ª®â®àë¥ ¯®áâ㯪¨ ᫨誮¬ ¨§ª¨, çâ®¡ë ¨¬¥âì §¢ ¨¥. ‘«¨¦ª®¬ ¨§ª¨, çâ®¡ë ¨å ®¡á㦤 âì.
|
||||
|
||||
‘¥©ç á ¬®£¨¥ ¤¥â᪨¥ ¯á¨å®«®£¨ ¨ ¯¥¤ £®£¨ £®¢®àïâ, ¡®«ìè ï ç áâì ¯®¤à®á⪮¢ëå á ¬®ã¡¨©á⢠¯à®¨á室¨â ¢ १ã«ìâ ⥠® ¨§¬ , ª®£¤ ¯®¤à®á⮪ ¯à¨¤ã訢 ¥â á¥¡ï ¤«ï ®áâà®âë ®éã饨©. �à¨å®¤ïâ த¨â¥«¨ ¨ 室ïâ ॡ¥ª ¢ á⥮¬ èª ä¥ ¢ ᢮¥© ᯠ«ì¥ á ¯®«®â¥æ¥¬, ¯à¨¢ï§ ë¬ ª ¯¥à¥ª« ¤¨¥ ¤«ï ¢¥è «®ª. Œ¥à⢮£®. ‘ ¬¥à⢮© ᯥମ© ¯®¢áî¤ã. Š®¥ç®, த¨â¥«¨ ¯à¨¡¨à îâáï. � ¤¥¢ îâ âà㯠èâ ë. ‘â à îâáï ᤥ« âì â ª, ç⮡ë íâ® ¢ë£«ï¤¥«® «ãçè¥. ‘â à îâáï, ¯® ªà ©¥© ¬¥à¥. Ž¡ë箥 ¥áç á⮥ ¯®¤à®á⪮¢®¥ á ¬®ã¡¨©á⢮.
|
||||
|
||||
„à㣮© ¬®© 誮«ìë© ¤àã£, ã ¥£® ¡à â á«ã¦¨« ¢ ¢®¥®¬ ä«®â¥, íâ®â ¡à â à á᪠§ «, çâ® ¯ ਠ�«¨¦¥¬ ‚®á⮪¥ § ¨¬ îâáï ® ¨§¬®¬ ᮢᥬ ¥ â ª, ª ª ¬ë. �à â á«ã¦¨« ¢ ª ª®©-â® ¢¥à¡«î¦ì¥© áâà ¥, £¤¥ àëª å ¯à®¤ ¢ «®áì ¥çâ®, ¯®å®¦¥¥ ¯à¨ç㤫¨¢ë© ®¦ ¤«ï ®âªàë¢ ¨ï ¯¨á¥¬. ’®ª¨© áâ¥à¦¥ì ¨§ ¡à®§ë ¨«¨ á¥à¥¡à , ¤«¨®© ¯à¨¬¥à® á « ¤®ì á è ਪ®¬ ª®æ¥ ¨ ªà ᨢ®© १®© à㪮ï⪮©, ª ª ã ª¨¦ « . �â®â ¡à â-¬®àïª à á᪠§ «, ª ª ¯®á«¥ ⮣®, ª ª ç«¥ ¢áâ ¥â, à ¡ë ¢âëª îâ íâ®â áâ¥à¦¥ì ᥡ¥ ¢ ç«¥ ¢áî ¤«¨ã. �®â®¬ ®¨ ¤à®ç â, ¯®ª áâ¥à¦¥ì ¢ãâà¨, ¨ ®â í⮣® «¤ãçè¥ ª®ç îâ. ‘¨«ì¥¥.
|
||||
|
||||
€ ¥é¥ íâ®â ¡à â ¥§¤¨â ¯® ¢á¥¬ã ¬¨àã, ¨ ¯à¨áë« ¥â äà æã§áª¨¥ äà §ë. �ãá᪨¥ äà §ë. �®«¥§ë¥ ¯®¤áª §ª¨.
|
||||
|
||||
�®á«¥ í⮣® ¢ ®¤¨ ¯à¥ªà áë© ¤¥ì ¬®© ¤à㣠¥ ¯à¨å®¤¨â ¢ 誮«ã. ‚¥ç¥à®¬ ® §¢®¨â ¨ ¯à®á¨â ¬¥ï ¯®«ãç âì ¥£® ¤®¬ 訨 à ¡®âë, ¯ àã ¥¤¥«ì. �®â®¬ã çâ® ® ¢ ¡®«ì¨æ¥.
|
||||
|
||||
Ž ¢ ®¤®© ª®¬ ⥠ᮠáâ ਪ ¬¨, ª®â®àë¬ à¥¦ãâ ª¨èª¨. Ž à á᪠§ë¢ ¥â, çâ® ¢ ¯ « ⥠⮫쪮 ®¤¨ ⥫¥¢¨§®à. —â® ¥£® «¨ç®¥ ¯à®áâà á⢮ ®£®à®¦¥® ¢á¥£® «¨èì § ¢¥áª®©. —⮠த¨â¥«¨ ª ¥¬ã ¥ ¯à¨å®¤ïâ. �® ⥫¥ä®ã ® à á᪠§ë¢ ¥â, ç⮠த¨â¥«¨ £®â®¢ë 㡨âì áâ à襣® ¡à â , ª®â®àë© á«ã¦¨â ¢ ¢®¥®¬ ä«®â¥.
|
||||
|
||||
�® ⥫¥ä®ã íâ®â ¯ æ ¬¥ à á᪠§ë¢ ¥â, çâ® ª 㥠® «¨èì ¥¬®£® ¢ë¯¨«. —â® ¢ «ï«áï ªà®¢ ⨠¢ ᢮¥© ª®¬ â¥. —â® ® § ¦¥£ ᢥçªã ¨ «¥¨¢® ¯à®á¬ âਢ « áâ àë¥ ¯®à®¦ãà «ë, ᮡ¨à ïáì ¯®¤à®ç¨âì. �â® ¯®á«¥ ⮣®, ª ª ® ¯à®ç¨â « ¯¨á쬮 ¡à â . ‘ ⥬ ¯®«¥§ë¬ á¯®á®¡ë¬ ¯à¨¥¬®¬ ® ¨§¬ . � æ ®£«ï¤ë¢ ¥âáï ¢ ¯®¨áª å 祣®-¨¡ã¤ì, çâ® ¬®¦® ¨á¯®«ì§®¢ âì ¤«ï í⮩ 楫¨. ˜ ਪ®¢ ï àãçª á«¨èª®¬ ⮫áâ ï. Š à ¤ è ⮦¥ ᫨誮¬ ⮫áâë© ª ⮬㠦¥ £àã¡ë©. � ᢥ窥 ¯®â¥ª ¢®áª ⮪¨©, £« ¤¨© áâ¥à¦¥ì ¨§ ¢®áª , ª®â®àë© ¢¯®«¥ ¬®£ ¡ë ¯®¤®©â¨. � æ ®£â¥¬ ®âª®¢ëਢ ¥â ¤«¨ë© ⮪¨© á⮫¡¨ª ¢®áª ¨ âà¥â ¬¥¦¤ã « ¤®ï¬¨. „«¨ë© ¨ ⮪¨© ¨ £« ¤ª¨©.
|
||||
|
||||
�ìïë© ¨ ¢®§¡ã¦¤¥ë©, ® ¢áâ ¢«ï¥â ¢®áª®¢ë© áâ¥à¦¥ì ᥡ¥ ¢ ¯¥à¥æ, ¢á¥ £«ã¡¦¥ ¨ £«ã¡¦¥ ¢ ª «. — áâì áâ¥à¦ï ®áâ ¥âáï â®àç âì á à㦨, ¨ ® ç¨ ¥â.
|
||||
|
||||
„ ¦¥ ᥩç á ® £®¢®à¨â, çâ® à ¡ë ç¥à⮢᪨ ã¬ë¥ ॡïâ . ލ ¯à¨¤ã¬ «¨ ᮢᥬ ¤à㣮© ® ¨§¬. � à¥ì «¥¦¨â ᯨ¥, ¨ ¢á¥ ¯®«ãç ¥âáï â ª ªàãâ®, çâ® ® § ¡ë¢ ¥â ¯à® ¢®áª. …¬ã ®áâ ¥âáï ¤¥àãâì ¢á¥£® ®¤¨ à §, çâ®¡ë ª®ç¨âì, ª®£¤ ®ª §ë¢ ¥âáï, çâ® ¢®áª ¡®«ìè¥ ¥ â®àç¨â àã¦ã.
|
||||
|
||||
�â®â ⮪¨© ¢®áª®¢ë© á¥à¦¥ì, ® ¯à®¢ «¨«áï ¢ãâàì. ‘®¢á¥¬ ¢ãâàì, ¤® ª®æ . ’ ª £«ã¡®ª®, çâ® ® ¥ ¬®¦¥â ¥£® é㯠âì ¤ ¦¥ ¢ á ¬®¬ ç «¥ ª « .
|
||||
|
||||
ˆ§ ªãå¨ ¬ âì §®¢¥â ¥£® 㦨 âì. ˆ¤¨ áî¤ , ᥩç á ¦¥ £®¢®à¨â ® . �â®â ¯ à¥ì á ¢®áª®¬ ¨ ¯ à¥ì á ¬®àª®¢ìî ᮢᥬ ¥ ¯®å®¦¨ ¤à㣠¤à㣠, ® ¬ë ¢á¥ ¦¨¢¥¬ ¯à¨¬¥à® ®¤¨ ª®¢®.
|
||||
|
||||
ˆ ¯®á«¥ 㦨 ã ¯ àï ç¨ ¥â ¡®«¥âì ¦¨¢®â. �â® ¢®áª, ¨ ® à¥è ¥â, çâ® ¢®áª ¢á¥ à ¢® à á⠥⠨ ¢ë©¤¥â ¢¬¥áâ¥ á ¬®ç®©. ’¥¯¥àì ã ¥£® ¡®«¨â ¥é¥ ¨ ᯨ . �®«ïâ ¯®çª¨. Ž ¥ ¬®¦¥â à á¯àﬨâìáï.
|
||||
|
||||
‚ᥠíâ® ® à á᪠§ë¢ ¥â ¯® ⥫¥ä®ã á ¡®«ì¨ç®© ª®©ª¨, ¢¤ «¥ª¥ á«ëè¨âáï §¢ãª £®£ ¨ ॢ ⮫¯ë. ‘¯®àâ¨¢ë© ¬ âç.
|
||||
|
||||
�¥â£¥ ¯®ª §ë¢ ¥â ¯à ¢¤ã, çâ®-⮠⮪®¥ ¨ ¤«¨®¥, ᮣã⮥ ¢¤¢®¥ ¢ ¥£® ¬®ç¥¢®¬ ¯ã§ëà¥. �â ¤«¨ ï, ⮪ ï ¡ãª¢ V ᮡ¨à ¥â ᥡ¥ ¢á¥ ¬¨¥à «ë ¨§ ¥£® ¬®ç¨. Ž áâ ®¢¨âáï â®«é¥ ¨ £àã¡¥¥, ¯®ªàë¢ ¥âáï ªà¨áâ «« ¬¨ ª «ìæ¨ï, ¡®«â ¥âáï â㤠-áî¤ , æ à ¯ ï ¥¦ãî ®¡®«®çªã ¬®ç¥¢®£® ¯ã§ëàï, ¥ ¤ ¢ ï ¬®ç¥ ¢ë©â¨ àã¦ã. …£® ¯®çª¨ ¯¥à¥£à㦥ë. ’® ¥¬®£®¥, çâ® ¢ë⥪ ¥â ¨§ ¥£® ç«¥ ªà ᮥ ®â ªà®¢¨.
|
||||
|
||||
‘⮨⠯ à¥ì ï ¥£® ᥬìï, ¨ ᬮâàïâ ç¥à®-¡¥«ë© ᨬ®ª, à冷¬ ¤®ªâ®à ¨ ¬¥¤á¥áâàë, ¨ ¡ãª¢ V á¨ï¥â ¡¥«ë¬ ᢥ⮬ ã ¢á¥å ¢¨¤ã, ¨ ¥¬ã ¯à¨å®¤¨âáï ᪠§ âì ¯à ¢¤ã. Ž â®¬, ª ª ª®ç îâ à ¡ë. Ž ç¥¬ ¥¬ã ¯¨á « áâ à訩 ¡à â, ª®â®àë© á«ã¦¨â ¢®¥®¬ ä«®â¥.
|
||||
|
||||
�àאַ ᥩç á, ¯® ⥫¥ä®ã, ® ç¨ ¥â ¯« ª âì.
|
||||
|
||||
�®¤¨â¥«¨ § ¯« ⨫¨ § ®¯¥à æ¨î ¤¥ì£ ¬¨, ®â«®¦¥ë¬¨ ¥£® ®¡à §®¢ ¨¥ ¢ ª®««¥¤¦¥. ޤ £«ã¯®áâì, ¨ ® 㦥 ¨ª®£¤ ¥ áâ ¥â îà¨á⮬.
|
||||
|
||||
‚¥é¨ ¢ãâਠ⥡ï. ’ë ¢ãâਠ¢¥é¥©. ‘¢¥çª ¢ ç«¥¥ ¨«¨ â¢®ï £®«®¢ ¢ ¯¥â«¥ ¬ë § «¨, çâ® ¢¥àë© á¯®á®¡ ¦¨âì ᥡ¥ £¥¬®àë.
|
||||
|
||||
Œ®¨ £¥¬®àë ç «¨áì ¨§-§ ¦¥¬ç㦮£® ëàï¨ï , ª ª ï íâ® §ë¢ « ï ¤à®ç¨« ¯®¤ ¢®¤®©, ®¤®¬ ¤ëå ¨¨, á¨¤ï ¤¥ த¨â¥«ì᪮£® ¡ áᥩ ¢ á ¬®© £«ã¡®ª®© ¥£® ç áâ¨. ‚¤®å㢠¢®§¤ãå , ï ¡ëáâà® ëàï« ¨ áâ¢ « á ¥¡ï ¯« ¢ª¨. Ž¡ëç® ï ᨤ¥« ¤¥ ¢ â¥ç¥¨¥ ¤¢ãå, âà¥å, ç¥âëà¥å ¬¨ãâ.
|
||||
|
||||
’®«ìª® ¨§-§ ᢮¥£® ® ¨§¬ ï 㤨¢¨â¥«ìë¬ ®¡à §®¬ à §¢¨« ᯮᮡ®á⨠᢮¨å «¥£ª¨å. …᫨ ï ®áâ ¢ «áï ®¤¨, ª®£¤ ¢¥áì ¤®¬ ®áâ ¢ «áï ¢ ¬®¥¬ à ᯮà殮¨¨, ï ®¡ëç® § ¨¬ «áï í⨬ ¢¥áì ¤¥ì. ˆ ¯®á«¥ ⮣®, ª ª ï ¢ëª ç¨¢ « ¨§ ᥡï íâã èâãªã, ᯥà¬ã ® ¡®«â « áì ¢ ¢®¤¥ ¡®«ì訬¨ ¦¨à묨, ¬®«®ç®-¡¥«ë¬¨ ª®¬ª ¬¨.
|
||||
|
||||
�®á«¥ í⮣® ᮢ ¡ë«® ëà逸, ç⮡ë ᮡà âì í⨠ª®¬ª¨ ¨ ¢ëâ¥à¥âì ¨å ® ¯®«®â¥æ¥. �®í⮬ã ï ¨ §ë¢ « íâ® ¦¥¬çã¦ë¬ ëà逸¬. „ ¦¥ å®âï ¢®¤ ¡ë« å«®à¨à®¢ ï, ï ¥ ¬®£ ¥ ¡¥á¯®ª®¨âìáï ® á¥áâà¥. ˆ«¨, 㯠ᨠ¡®¦¥, ® ¬ ¬¥.
|
||||
|
||||
�â® ¡ë« ¬®© á ¬ë© ¡®«ì让 ¢ ¦¨§¨ áâà å: ¬®ï á¥áâà -¤¥¢âᢥ¨æ ¤ã¬ ¥â çâ® ® ¯à®á⮠⮫á⥥â, ¯®â®¬ ஦ ¥â ¤¢ã壮«®¢®£® ॡ¥ª -®«¨£®äॠ. ˆ ®¡¥ £®«®¢ë ¢ë«¨âë© ï. Ÿ, ®â¥æ ¨ ®¤®¢à¥¬¥® ¤ï¤ï.
|
||||
|
||||
�® ®¡ëç® á ⮡© á«ãç ¥âáï ᮢᥬ ¥ â®, ® 祬 âë ¡¥á¯®ª®¨èìáï.
|
||||
|
||||
‹ãç訬 ¬®¬¥â®¬ ¦¥¬ç㦮£® ëàï¨ï ¡ë«® ᫨¢®¥ ®â¢¥àá⨥ ¡ áᥩ á 䨫ìâ஬ ¨ á®á®¬ ¤«ï ®âª 稢 ¨ï ¢®¤ë. ‘ ¬ë© ª ©ä ¡ë« ¢ ⮬, ç⮡ë áâ é¨âì á ᥡï âàãáë ¨ á¥áâì ¥£®.
|
||||
|
||||
Š ª £®¢®àïâ äà æã§ë à §¢¥ å®âì ª®¬ã-â® ¥ à ¢¨âáï, ª®£¤ ¥£® § ¤¨æã ¢ë«¨§ë¢ îâ? ޤ ª® ¨®£¤ âë ¯à®áâ® ® ¨àãî騩 ¯®¤à®á⮪ ¨ ¢¤à㣠宯! ¨ ⥡¥ 㦥 ¨ª®£¤ ¥ áâ âì îà¨á⮬.
|
||||
|
||||
ޤ ¦¤ë ï ᨦ㠤¥ ¡ áᥩ , ¨ ¤® ¬®© ¢®«¨á⮥ ¢®¤ï®¥ ¥¡®, ¢®á¥¬ì äã⮢ ᢥ⫮-£®«ã¡®© ¢®¤ë ¤ ¬®¥© £®«®¢®©. ‚ ¬¨à¥ æ à¨â â¨è¨ , § ¨áª«î票¥¬ ¯ã«ìá ¢ ¬®¨å ãè å. Œ®¨ ¦¥«âë¥ ¯®«®á âë¥ ¯« ¢ª¨ ®¡¬®â ë ¢®ªà㣠襨 ¢á直© á«ãç ©: ¢¤ã࣠§ £«ï¥â á®á¥¤, § ª®¬ë© ¨«¨, ¯à¨¬¥à, 䨧àãª, ¦¥« î騩 ¯®¨â¥à¥á®¢ âìáï ¯®ç¥¬ã ï ¯à®¯ãá⨫ äãâ¡®«ìãî â२஢ªã. ‘â ¡¨«ì®¥ á®áã饥 â¥ç¥¨¥ ᫨¢®£® ®â¢¥àáâ¨ï « ᪠¥â ¬®î ª®¦ã ¨ ï ¢¥àçã ᢮¥© ª®áâ«ï¢®© ¡«¥¤®© § ¤¨æ¥©, çâ®¡ë ¯®©¬ âì íâ® ®éã饨¥.
|
||||
|
||||
“ ¬¥ï ¥é¥ ¤®áâ â®ç® ¢®§¤ãå ¢ «¥£ª¨å, ¨ à㪠ᦨ¬ ¥â ç«¥. �®¤¨â¥«¨ à ¡®â¥, á¥áâà § ïâ¨ïå ¡ «¥â®© 誮«ë. „® ¯à¨å®¤ ¯à¥¤ª®¢ ®áâ ¥âáï ¥é¥ ¥áª®«ìª® ç ᮢ. Œ®ï à㪠¯à¨¡«¨¦ ¥â ¨ ¯à¨¡«¨¦ ¥â ®à£ §¬. Ÿ ®áâ ¢«¨¢ îáì, ¢ë¨à¨¢ î, çâ®¡ë ¢¤®åãâì ¢®§¤ãå , ¨ ëàïî ®¡à â®, çâ®¡ë ¯à®¤®«¦¨âì.
|
||||
|
||||
Ÿ ¤¥« î í⮠ᮢ ¨ ᮢ .
|
||||
|
||||
‚®§¬®¦®, ¯®í⮬㠤¥¢ã誨 â ª «î¡ïâ ᨤ¥âì ã â¥¡ï «¨æ¥. Žéã饨¥ ¢á áë¢ ¨ï ª ª ¬¨¥â, ª®â®àë© ¨ª®£¤ ¥ ª®ç ¥âáï. Š®£¤ ¬®© ç«¥ á⮨â, ¢®¤ ®¡«¨§ë¢ îâ ¬®î § ¤¨æã, ¬¥ ¥ 㦥 ¢®§¤ãå. ‘ ®£«ãè î騬 á¥à¤æ¥¡¨¥¨¥¬ ¢ ãè å, ï ®áâ îáì ¯®¤ ¢®¤®© ¤® â¥å ¯®à, ¯®ª ¯¥à¥¤ £« § ¬¨ ¥ ¯®ï¢«ï¥âï ன ¬ «¥ìª¨å ïàª¨å §¢¥§¤®ç¥ª. Ÿ ¢ë¯àשׂïî ®£¨, ®¡à ⮩ áâ®à®© ª®«¥¥© ª á îáì ¡¥ââ®®£® ¤ ¡ áᥩ . � «ìæë àãª å ¨ ®£ å 㦥 ¯®á¨¥«¨ ¨ ᬮà騫¨áì ®â ¤®«£®£® ¯à¥¡ë¢ ¨ï ¢ ¢®¤¥.
|
||||
|
||||
ˆ âãâ ï ¯®§¢®«ïî í⮬ã á«ãç¨âìáï. ‚ ¢®¤¥ ¯®ï¢«ïîâáï ¡®«ì訥 ¡¥«ë¥ ª®¬ª¨. †¥¬ç㦨ë.
|
||||
|
||||
’¥¯¥àì ¬¥ 㦥 ¢®§¤ãå. �® ª®£¤ ï ¯ëâ îáì ®â⮫ªãâìáï ®â ¤ , ï ¥ ¬®£ã. Ÿ ¥ ¬®£ã ¯®¤®£ãâì ¯®¤ á¥¡ï ®£¨. Œ®ï § ¤¨æ § áâàï« .
|
||||
|
||||
‚à ç¨ áª®à®© ¯®¬®é¨ ¬®£ãâ à á᪠§ âì, çâ® ª ¦¤ë© £®¤ ®ª®«® 150 祫®¢¥ª § áâॢ ¥â ¯®¤®¡ë¬ ®¡à §®¬, ¯à¨á®á ¢è¨áì ª á®áã, ®âª 稢 î饬㠢®¤ã ¨§ ¡ áᥩ . ˆ«¨ á®á ¥ ®â¯ã᪠¥â ¨å § ¤¨æë ¨«¨ § â¢ ¥â ¨å ¤«¨ë¥ ¢®«®áë, ¨ ®¨ § å«¥¡ë¢ îâáï. �®«ìè¨á⢮ íâ¨å á«ãç ¥¢ ¯à®¨á室¨â ¢ ”«®à¨¤¥.
|
||||
|
||||
�¨ªâ® ®¡ í⮬ ¥ £®¢®à¨â. „ ¦¥ äà æã§ë ¥ £®¢®àïâ ® ¥ª®â®àëå ¢¥é å.
|
||||
|
||||
ˆ§¢¥à㢠®£¨, ¬¥ 㤠¥âáï ᮣãâì ¥¥ ¢ ª®«¥¥ ¨ ®¯¥à¥âìáï ¢ ¤®, ï ¯®«®¢¨ã ¢áâ î ¨ çã¢áâ¢ãî, ª ª çâ®-â® âï¥â ¬¥ï § ãá. �®¤áã㢠¯® á¥¡ï ¢â®àãî ®£ã, ï ®ââ «ª¨¢ îáì ®â ¤ . Ÿ ᢮¡®¤® ¡®«â îáì ¨ «ï£ îáì ¢ ¢®¤¥, ¥ § ¤¥¢ ï ¡¥â® , ® ¨ ¥ ¢á¯«ë¢ î.
|
||||
|
||||
�àëª ïáì ¨§® ¢á¥å ᨫ, £à¥¡ï ®¡®¨¬¨ à㪠¬¨, ï ¯®«¯ã⨠ª ¢®§¤ãåã, ® ¡®«â îáì ®¤®¬ ¨ ⮬ ¦¥ ¬¥áâ¥. ‘â㪠á¥à¤æ ¢ ãè å áâ ®¢¨âáï £à®¬ç¥ ¨ ç é¥.
|
||||
|
||||
Ÿ ¨§¢®à 稢 îáì ¨ ®£«ï¤ë¢ îáì, ᪢®§ì ¬¨à¨ ¤ë ïàª¨å §¢¥§¤®ç¥ª ¢ £« § å, ® â® çâ® ï ¢¨¦ã, ¥ ¯®¤¤ ¥âáï ¯®¨¬ ¨î. Š ª ï-⮠⮫áâ ï ¢¥à¥¢ª , ᨥ¢ â® ¡«¥¤ ï, á ¯à®¦¨«ª ¬¨, âï¥âáï ®â ᫨¢®£® ®â¢¥àáâ¨ï ª ¬®¥© § ¤¨æ¥ ¨ ¥ ®â¯ã᪠¥â ¬¥ï. ˆ§ ¥ª®â®àëå ¯à®¦¨«®ª á®ç¨âáï ªà®¢ì, « ï ªà®¢ì, ª®â®à ï £«ã¡¨¥ ª ¦¥âáï ç¥à®©, ® áâà㪠¬¨ ¯®ï¢«ï¥âáï ¨§ ¬ «¥ìª¨å à §à뢮¢ ¢ ¡«¥¤®© ª®¦¥ í⮩ §¬¥¨. �⨠áâà㪨 ¯®á⥯¥® à áâ®àïîâáï ¢ ¢®¤¥; ¢ãâਠ§¬¥¨, ¯®¤ ¥¥ ⮪®© ¡¥«¥á®© ª®¦¥©, ¢¨¤¥îâáï ª®¬ª¨ ¯®«®¢¨ã ¯¥à¥¢ ८© ¥¤ë.
|
||||
|
||||
’®£¤ ï ç¨ î ¯®¨¬ âì. Š ª®¥-â® ¦ã⪮¥ ¬®à᪮¥ ç㤮¢¨é¥, ¬®àáª ï §¬¥ï, ⢠àì, ¨ à §ã ¥ ¢¨¤¥¢è ï ᮫¥ç®£® ᢥâ , ¯àïâ « áì ¢ ª «¨§ 樨 ¨ ¯®¤¦¨¤ « ¬®¬¥â , çâ®¡ë ¢æ¥¯¨âìáï ¬¥ ¢ § ¤¨æã.
|
||||
|
||||
Ÿ ç¨ î «ï£ âì ¨ ¯¨ âì íâã §¬¥î, ¥¥ ᪮«ì§ªãî १¨®¢ãî ª®¦ã á í⨬¨ ¢¥ ¬¨, ¨ ¬¥ ª ¦¥âáï, çâ® ï á㬥« ¢ëâïãâì ¥¥ ¨§ ᫨¢®£® ®â¢¥àáâ¨ï ¥é¥ ¥¬®£®. ’¥¯¥àì ® ¤«¨®© ¯à¨¬¥à® á ¬®î ®£ã, ® ¢á¥ à ¢® ªà¥¯ª® ¤¥à¦¨âáï § ¬®© ãá. Ÿ ¯¨ î ¥é¥, ¨ ¯®¤¨¬ îáì ¤î©¬, ¤î©¬ ¡«¨¦¥ ª ¯®¢¥àå®áâ¨. •®âï ï çã¢áâ¢ãî, çâ® §¬¥ï ¢á¥ ¥é¥ ¤¥à¦¨âáï § ¬®î ¤ëàªã, ï ¥é¥ ¤î©¬ ¡«¨¦¥ ª ᯠᥨî.
|
||||
|
||||
‚ãâਠ§¬¥¨ ¢¨¤¥îâáï ªãá®çª¨ ªãªãàã§ë ¨ ®à¥å®¢. ‚¨¤¥¥âáï ¯à®¤®«£®¢ â ï ®à ¦¥¢ ï ª ¯áã« . �â® ª ª®©-â® ¬ã«ì⨢¨â ¬¨, ¨§ â¥å, çâ® ¤ ¥â ¬¥ ¯ ¯ , ç⮡ë ï ¡à « ¬ëè¥çãî ¬ ááã. —⮡ë ï ¯®¯ « ¢ äãâ¡®«ìãî ª®¬ ¤ã ¨ ¯®«ãç « ¤®¯®«¨â¥«ìãî á⨯¥¤¨î. Š ¯áã« á ®¡®£ é¥ë¬ ¦¥«¥§®¬ ¨ ¬¨®ª¨á«®â ¬¨.
|
||||
|
||||
Ÿ ¢¨¦ã íâã â ¡«¥âªã, ª®â®à ï ¤®«¦ ᯠá⨠¬®î ¦¨§ì.
|
||||
|
||||
�â® ¥ §¬¥ï. �â® ¬®© ª¨è¥ç¨ª, ¬®ï ¯àï¬ ï ª¨èª , ª®â®à ï ¢ë¢ «¨« áì ¨§ ¬¥ï. ’®, çâ® ¢à ç¨ §ë¢ îâ ¢ë¯ ¤¥¨¥¬ ¯àאַ© ª¨èª¨ . Œ®¨ ª¨èª¨ § âïã«® ¢ ᫨¢®¥ ®â¢¥àá⨥.
|
||||
|
||||
‚à ç¨ áª®à®© ¯®¬®é¨ ¬®£ãâ à á᪠§ âì ¢ ¬, çâ® á®á ¤«ï ®âª 窨 ¢®¤ë ¨§ ¡ áᥩ ¯à®¯ã᪠¥â ç¥à¥§ ᥡï 80 £ ««®®¢ ¢®¤ë ¢ ¬¨ãâã. —â® ¯® ¢¥áã à ¢ï¥âáï 400 äãâ ¬. �®«ìè ï ¯à®¡«¥¬ ªà®¥âáï ¢ ⮬, çâ® ª®æë ¢ãâਠá ᮥ¤¨¥ë, ¨ ⢮© ãá íâ® ¤ «ì¨© ª®¥æ ⢮¥£® àâ . …᫨ ï ¯®§¢®«î, ¨ á®á ¡ã¤¥â ¯à®¤®«¦ âì ®âª ç¨¢ âì ¢®¤ã ¢ëâ¢ âì ¨§ ¬¥ï ¢ãâ८á⨠® ¢ ª®æ¥ ª®æ®¢ § á®á¥â ¨ ¬®© ï§ëª. �।áâ ¢ì⥠ᥡ¥, çâ® ¢ë ¢ëáà «¨ ¨§ ᥡï 400 äã⮢, ¨ ¢ë ¯®©¬¥â¥, çâ® íâ® ¢á¥ à ¢® çâ® â¥¡ï ¢ë¢¥à㫨 ¨§ ªã.
|
||||
|
||||
Œ®£ã ¢ á ®¡à ¤®¢ âì ⥬, çâ® ª¨èª¨ ¥ çã¢áâ¢ãîâ ¡®«¨. �® ªà ©¥© ¬¥à¥ ¥ â ª, ª ª è ª®¦ . ’®, çâ® ¬ë ¯¥à¥¢ ਢ ¥¬, ¢à ç¨ §ë¢ îâ 䥪 «ì묨 ¬ áá ¬¨. ‚ ¢¥à奩 ç á⨠ª¨èª¨ ï ¢¨¦ã ¦¨¤ªãî ¬ ááã, ¢ ª®â®à®© ¯« ¢ îâ §¥à ªãªãàã§ë, à 娧 ¨ ªà㣫ïè¨ §¥«¥®£® £®à®èª .
|
||||
|
||||
ˆ ¢®â ¢®ªà㣠¬¥ï ¯« ¢ ¥â ¢¥áì íâ®â á㯠¨§ ªà®¢¨ ¨ ªãªãàã§ë, ¤¥àì¬ ¨ ᯥà¬ë ¨ à å¨á . �à¨ç¥¬ ¤ ¦¥ ª®£¤ ¨§ ¬¥ï ¢ëâ¢ îâáï ¬®¨ ª¨èª¨, ¨ ï ¤¥à¦ãáì § â®, çâ® ®áâ «®áì, ¤ ¦¥ ⮣¤ ¬®¥ £« ¢®¥ ¦¥« ¨¥ å®âì ª ª-¨¡ã¤ì âïãâì ¯« ¢ª¨.
|
||||
|
||||
�¥ ¤ © �®£ ¯à¥¤ª¨ 㢨¤ïâ ¬®© ç«¥.
|
||||
|
||||
ޤ®© à㪮© ï ᦨ¬ î á¢®î ª¨èªã ¢ ªã« ª¥, ¤à㣮© ᤥࣨ¢ î ᢮¨ ¦¥«âë¥ ¯®«®á âë¥ ¯« ¢ª¨ á 襨. �® âïãâì ¨å ¢á¥ à ¢® ¥¢®§¬®¦®.
|
||||
|
||||
…᫨ ¢ë å®â¨â¥ § âì, ª ª ¢ è¨ ª¨èª¨ ¢ë£«ï¤ïâ ®éã¯ì, ªã¯¨â¥ ¯à¥§¥à¢ ⨢, ᤥ« ë© ¨§ ¡ à ì¨å ª¨è®ª [1 - ‚ ‘˜€ ¯à®¤ îâáï ¯à¥§¥à¢ ⨢ë, ᤥ« ë¥ ¨§ ª¨è®ª ¦¨¢®âëå, å®âï ¨å ¤¥¦®áâì áç¨â ¥âáï £®à §¤® ¨¦¥ ®¡ëçëå. (�ਬ¥ç ¨¥ ¯¥à¥¢®¤ç¨ª )]. ‚®§ì¬¨â¥ ¥£®, à ᪠⠩â¥. � ¯®«¨â¥ ¥£® à å¨á®¢ë¬ ¬ á«®¬. Ž¡¬ ¦ì⥠¥£® ¢ §¥«¨®¬ ¨ ¯®â¨áª ©â¥ ¯®¤ ¢®¤®©. �®â®¬, ¯®¯ëâ ©â¥áì à §®à¢ âì ¥£®. � ¯®¯®« ¬. Ž á«¨èª®¬ ¯à®çë© ¨ í« áâ¨çë©. Ž â ª®© ᪮«ì§ª¨©, çâ® § ¥£® ¥¢®§¬®¦® ª ª á«¥¤ã¥â ãå¢ â¨âìáï.
|
||||
|
||||
�१¥à¢ ⨢ ¨§ ¡ à ì¨å ª¨è®ª íâ® â®â ¦¥ áâ àë© ¤®¡àë© ª¨è¥ç¨ª 祫®¢¥ª .
|
||||
|
||||
‚ë ¢¨¤¨â¥, ª 祬ã ï ¢¥¤ã.
|
||||
|
||||
‘⮨⠮â¯ãáâ¨âì ᥪã¤ã ¨ ã ¬¥ï ¡®«ìè¥ ¥â ª¨è®ª.
|
||||
|
||||
‘⮨⠯®¯«ëâì ¢¥àå, ª ¢®§¤ãåã ¨ ã ¬¥ï ¡®«ìè¥ ¥â ª¨è®ª.
|
||||
|
||||
‘⮨⠮⪠§ âìáï ¯«ëâì ¢¥àå ¨ ï ã⮯«¥¨ª.
|
||||
|
||||
�â® ¢ë¡®à 㬥à¥âì ᥩç á ¨«¨ ¬¨ãâã ¯®§¦¥, 祬 ᥩç á.
|
||||
|
||||
Œ®¨ ¯à¥¤ª¨ ¢¥àãâáï á à ¡®âë ¨ ©¤ãâ ¡®«ì让 £®«ë© í¬¡à¨®, áªàîç¥ë© ¨ á¤ã¢è¨©áï. �« ¢ î騩 ¢ ¬ã⮩ ¢®¤¥ ¡ áᥩ § ¤¥¬ ¤¢®à¥. ‘த¨¢è¨©áï á ¡ áᥩ®¬ ç¥à¥§ ¯ã¯®¢¨ã § ¯ãâ ëå ª¨è®ª ¨ ¢¥. �®« ï ¯à®â¨¢®¯®«®¦®áâì ¯ àî, á«ãç ©® 㤠¢¨¢è¥¬ãáï ¢® ¢à¥¬ï ® ¨§¬ ¢ á⥮¬ èª äã. ˆ íâ® ¨å ॡ¥®ª, ª®â®à®£® ®¨ ¯à¨¢¥§«¨ ¨§ த¤®¬ 13 «¥â § ¤. �¥¡¥®ª, ª®â®àë©, ª ª ®¨ ¤¥ï¤¨áì, ¤®«¦¥ ¡ë« ¯®¯ áâì ¢ äãâ¡®«ìãî ª®¬ ¤ã ¨ ¯®«ãç âì ¤®¯®«¨â¥«ìãî á⨯¥¤¨î ¨ ¯®«ãç¨âì á⥯¥ì ¬ £¨áâà . �¥¡¥®ª, ª®â®àë© § ¡®â¨«áï ¡ë ® ¨å, ª®£¤ ®¨ á®áâ àïâáï. ‚ᥠ¨å ¤¥¦¤ë ¨ ¬¥çâë. ‚ ¡ áᥩ¥, £®«ë© ¨ ¬¥àâ¢ë©. ˆ ¢®ªà㣠¥£® ¡®«ì訥 ¬®«®ç®-¡¥«ë¥ ª®¬ìï ᯥà¬ë.
|
||||
|
||||
Œ®¦¥â, â ª. € ¬®¦¥â, ¬®¨ ¯à¥¤ª¨ ©¤ãâ ¬¥ï, § ¢¥àã⮣® ¢ ®ªà®¢ ¢«¥®¥ ¯®«®â¥æ¥, ᢠ«¨¢è¥£®áï ¡¥§ á®§ ¨ï ¯ã⨠ª ⥫¥ä®ã á ࢠ묨 ®è¬¥âª ¬¨ ª¨è®ª, ¡®«â î騬¨áï ¨§-¯®¤ ¦¥«âëå ¯®«®á âëå ¯« ¢®ª.
|
||||
|
||||
’®, ® 祬 ¥ £®¢®àïâ ¤ ¦¥ äà æã§ë.
|
||||
|
||||
‘â à訩 ¡à â ¢ ¢®¥®-¬®à᪮¬ 䫮⥠ã稫 á ®¤®© å®à®è¥© ¯®á«®¢¨æ¥. �ãá᪮© ¯®á«®¢¨æ¥. �®á«®¢¨æ ® ⮬, çâ® ¬ë, ¬¥à¨ª æë, §ë¢ ¥¬ íâ® ¬¥ 㦮, ª ª ¤ëઠ¢ £®«®¢¥ . �ãá᪨¥ £®¢®àïâ: Œ¥ í⮠㦮, ª ª §ã¡ë ¢ § ¤¨æ¥ .
|
||||
|
||||
Mnye etoh nadoh kahk zoobee v zadnetze. [2 - �ãááª ï ¯®á«®¢¨æ ¯¥à¥¤ « ⨨楩 ¢ â®ç®á⨠⠪, ª ª ¢ ®à¨£¨ «¥. (�ਬ¥ç ¨¥ ¯¥à¥¢®¤ç¨ª )]
|
||||
|
||||
�⨠¨áâ®à¨¨ ¯à® â®, ª ª ¯®¯ ¢è¨¥ ¢ ª ¯ª §¢¥à¨ ®â£àë§ îâ ᥡ¥ ®£ã. —â® ¦¥, «î¡®© ª®©®â à á᪠¦¥â ¢ ¬, çâ® ¯ à ¬¨ãâ ¡®«¨ ç¥à⮢᪨ ªàãç¥ á¬¥àâ¨.
|
||||
|
||||
—¥àâ, ¤ ¦¥ ¥á«¨ âë àãá᪨©, ¨®£¤ ¬®¦¥â áâ㯨âì ¬®¬¥â, ª®£¤ âë § å®ç¥èì ¨¬¥âì §ã¡ë ¢ ⮬ á ¬®¬ ¬¥áâ¥.
|
||||
|
||||
€ ¥á«¨ ¨å ¥â, ⥡¥ ¯à¨å®¤¨âáï ᤥ« âì ¢®â çâ® ¨§¢¥àãâìáï. ’ë æ¥¯«ï¥èì «®ªâ¥¬ á¥¡ï § ª®«¥ªã ¨ âï¥èì á¢®î ®£ã ª «¨æã. ’ë £àë§¥èì ¨ ªãá ¥èì ᮡá⢥ãî § ¤¨æã. “ â¥¡ï ª®ç¨«áï ¢®§¤ãå, ¨ âë ®â£àë§¥èì ¢á¥, ç⮠㣮¤®, çâ®¡ë ¢¤®åãâì ¥£® ¥é¥ à §.
|
||||
|
||||
Ž¡ í⮬ ¥ à §£®¢ ਢ îâ á ¤¥¢ã誮© ¯¥à¢®¬ ᢨ¤ ¨¨. �® ªà ©¥© ¬¥à¥, ¥á«¨ ¯à®é ¨¥ âë ¤¥¥èìáï ¥¥ ¯®æ¥«®¢ âì.
|
||||
|
||||
…᫨ ï ᪠¦ã ¢ ¬, ª ª®¢® íâ® ¡ë«® ¢ªãá, ¢ë ¡ë ¨ª®£¤ ¡®«ìè¥ ¥ áâ «¨ ¡ë ¥áâì ª «ì¬ ஢ ¨ ®á쬨®£®¢, ¨ª®£¤ .
|
||||
|
||||
’à㤮 ᪠§ âì, çâ® ¯®ª § «®áì ¬®¨ ¯à¥¤ª ¬ ¡®«¥¥ ®¬¥à§¨â¥«ìë¬ ª ª ï ¯®¯ « ¢ «®¢ãèªã ¨«¨ ª ª ï ¨§ ¥¥ ¢ëࢠ«áï. Š®£¤ ¬¥ï ¢ë¯¨á «¨ ¨§ ¡®«ì¨æë, ¬ ¬ ᪠§ « : ‘뮪, âë ¥ § «, ç⮠⢮ਫ. ’ë ¡ë« ¢ 讪¥ . € ¯®â®¬ ® ã稫 áì ¢ à¨âì ï©æ ¡¥§ ᪮à«ã¯ë ï©æ® à §¡¨¢ ¥âáï ¢ ª¨¯ïéãî ᮫¥ãî ¢®¤ã. [3 - ‚ ८¥ ï©æ® ¡¥§ ᪮à«ã¯ë (poached egg, ¯®-àãá᪨ ï©æ®-¯ è®â ) ¨§¢¥áâ® ¢ ¥¢à®¯¥©áª®© ªãå¥, ® ¯®ç⨠¥¨§¢¥áâ® ¢ àãá᪮© ªãå¥, ¯®í⮬ã ï ªà ⪮ ãâ®ç¨« ¢ ⥪áâ¥, çâ® íâ® â ª®¥. ‘®«¥ ï ¢®¤ ¤®¢®¤¨âáï ¤® ª¨¯¥¨ï ¨ à §¬¥è¨¢ ¥âáï â ª, çâ®¡ë ¯®«ã稫áï ¢®¤®¢®à®â. ’ã¤ à §¡¨¢ ¥âáï ï©æ® (¬®¦® ¤¢ ¨«¨ âà¨), ª ª ᪮¢®à®¤ªã, ª®£¤ ¤¥« ¥âáï £« §ãìï. —¥à¥§ ¬¨ãâã ¢®¤ ᫨¢ ¥âáï ç¥à¥§ á¨â®. ‚ १ã«ìâ ⥠¯®«ãç ¥âï ®ç¥ì ¥¦®¥, «¥£ª® ¯¥à¥¢ ਢ ¥¬®¥ ¡«î¤ . (�ਬ¥ç ¨¥ ¯¥à¥¢®¤ç¨ª )]
|
||||
|
||||
ˆâ¥à¥á®, ¢á¥ í⨠«î¤¨ ®¨ ¬¥ï ¦ «¥«¨ ¨«¨ ¨á¯ëâë¢ «¨ ®â¢à 饨¥?
|
||||
|
||||
Ÿ å®çã íâ® § âì â ª ¦¥, ª ª ï å®çã ¨¬¥âì §ã¡ë ¢ ᢮¥© § ¤¨æ¥.
|
||||
|
||||
‘¥©ç á «î¤¨ ¯®áâ®ï® £®¢®àïâ ¬¥, çâ® ï ᫨誮¬ å㤮©. Š®£¤ ¬¥ï ¯à¨£« è îâ 㦨 ï ®âª §ë¢ îáì ¯à¨£®â®¢«¥®¥ ¨¬¨ ¦ મ¥, ®¨ 㤨¢«ïîâáï ¨ ç¨ î⠥ࢨç âì. † ८¥ ¬ïá® ¬¥ï 㡨¢ ¥â. ‡ ¯¥ç¥ ï ¢¥âç¨ . ‹î¡ ï ¥¤ , ª®â®àãî ¥«ì§ï ¯¥à¥¢ à¨âì § ¯ àã ç ᮢ, ¢ë室¨â ¨§ ¬¥ï ª ª ¥¤ . ’ãè¥ ï ä ᮫ì, ªãá®çª¨ àë¡ë. Ÿ ¢áâ î á ã¨â § ¨ â ¬ ®¨ ¢ «ïîâáï. Š ª ¡ë«¨.
|
||||
|
||||
�®á«¥ à ¤¨ª «ì®© ®¯¥à 樨 ¯® 㪮à 稢 ¨î ª¨è¥ç¨ª , ¯¥à¥¢ ਢ âì ¬ïá® áâ ®¢¨âáï ¥¬®£® âà㤮. “ ¡®«ìè¨á⢠¨§ ¢ á ¯ïâì äã⮢ ª¨è¥ç¨ª . Ÿ áç á⫨¢ ¨¬¥âì ᢮¨ è¥áâì ¤î©¬®¢. ’ ª çâ® ï â ª ¨ ¥ ¯®«ã稫 äãâ¡®«ìãî á⨯¥¤¨î. �¨ª®£¤ ¥ áâ « ¬ £¨áâ஬ ª ª¨å-«¨¡® ãª. Ž¡ ¬®¨å ¤à㣠¯ æ ᮠᢥ窮© ¨ ¯ æ á ¬®àª®¢ìî ®¨ ®¡ ¢ëà®á«¨, ¢ë諨 ¢ «î¤¨, ® ï â ª ¨ ¥ ¯à¨¡ ¢¨« ¨ ®¤®£® äãâ á â¥å ¯®à, ª ª ¬¥ ¨á¯®«¨«®áì 13.
|
||||
|
||||
„àã£ ï ¯à®¡«¥¬ ¡ë« ¢ ⮬, çâ® ¯à¥¤ª ¬ ¯à¨è«®áì ¢ë«®¦¨âì ®£à®¬ë¥ ¤¥ì£¨ § â®â á ¬ë© ¡ áᥩ. ‚ ª®æ¥ ª®æ®¢ ¯ ¯ ᪠§ « ¢®¤®¯à®¢®¤ç¨ªã, çâ® íâ® ¡ë« ᮡ ª . � è ᮡ ª ᢠ«¨« áì ¢ ¡ áᥩ ¨ ãâ®ã« . ’à㯠§ âïã«® ¢ ᫨¢®¥ ®â¢¥àá⨥. „ ¦¥ ª®£¤ ¢®¤®¯à®¢®¤ç¨ª à §®¡à « á®á ¨ ¢ë㤨« ¨§ ¥£® ¡«¥¤ãî १¨®¯®¤®¡ãî ª¨èªã, ¢®¤ï¨áâë© ªã᮪ ª¨è¥ç¨ª á ¡®«ì让 ®à ¦¥¢®© ¢¨â ¬¨®© â ¡«¥âª®© ¢ãâà¨, ¤ ¦¥ ⮣¤ ¬®© ¯ ¯ ᪠§ « íâ ç¥à⮢ ¡¥§¬®§£« ï ᮡ ª .
|
||||
|
||||
„ ¦¥ ¨§ ®ª ᢮¥© ª®¬ âë ï á«ëè «, ª ª ¯ ¯ ᪠§ «: �âã ᮡ ªã ¥«ì§ï ¡ë«® ®áâ ¢¨âì ¡¥§ ¯à¨á¬®âà ¨ ᥪã¤ã .
|
||||
|
||||
€ ¯®â®¬ ã á¥áâàë ¡ë« § ¤¥à¦ª ¬¥áïçëå.
|
||||
|
||||
„ ¦¥ ¯®á«¥ ⮣®, ª ª ¢ ¡ áᥩ¥ ᬥ¨«¨ ¢®¤ã, ¤ ¦¥ ¯®á«¥ ⮣®, ¬ë ¯à®¤ «¨ ¤®¬ ¨ ¯¥à¥¥å «¨, ¯®á«¥ ¡®àâ á¥áâàë, ¤ ¦¥ ⮣¤ ¬®¨ ¯à¥¤ª¨ ¨ à §ã í⮣® ¥ 㯮¬¨ «¨.
|
||||
|
||||
�¨ª®£¤ . �â® è ¥¢¨¤¨¬ ï ¬®àª®¢ì.
|
||||
|
||||
€ ¢ë. ‚ë ¬®¦¥â¥ ⥯¥àì ᤥ« âì ¯®«ë© ¢¤®å.
|
||||
|
||||
Ÿ ¨ ¤® á¨å ¯®à ¥ ¬®£ã.
|
||||
Executable
+102
@@ -0,0 +1,102 @@
|
||||
#!/bin/bash
|
||||
|
||||
# Making tests of BForce
|
||||
CURDIR=$(pwd)
|
||||
BFBIN=$(pwd)/../source/bin/bforce
|
||||
|
||||
function prepconfig() {
|
||||
echo "Preparing configs with $1 as protocol..."
|
||||
cp ${CURDIR}/configs/bforceA.conf ${CURDIR}/etc/bforceA.conf
|
||||
sed -i -e "s/%PROTO%/$1/" ${CURDIR}/etc/bforceA.conf
|
||||
sed -i -e "s#%TESTZONE%#${CURDIR}#" ${CURDIR}/etc/bforceA.conf
|
||||
|
||||
cp ${CURDIR}/configs/bforceB.conf ${CURDIR}/etc/bforceB.conf
|
||||
sed -i -e "s/%PROTO%/$1/" ${CURDIR}/etc/bforceB.conf
|
||||
sed -i -e "s#%TESTZONE%#${CURDIR}#" ${CURDIR}/etc/bforceB.conf
|
||||
|
||||
cp ${CURDIR}/configs/00010002.cut ${CURDIR}/outboundA/00010002.cut
|
||||
cp ${CURDIR}/configs/00010001.cut ${CURDIR}/outboundB/00010001.cut
|
||||
}
|
||||
|
||||
function testcomm() {
|
||||
rm -rf ${CURDIR}/inboundA/*
|
||||
rm -rf ${CURDIR}/inboundB/*
|
||||
|
||||
mkfifo ${CURDIR}/bforceAtoB
|
||||
mkfifo ${CURDIR}/bforceBtoA
|
||||
|
||||
BFCFGA=${CURDIR}/etc/bforceA.conf
|
||||
BFCFGB=${CURDIR}/etc/bforceB.conf
|
||||
|
||||
# Works for Linux
|
||||
|
||||
BFCONFIG=${BFCFGA}
|
||||
BFCONFIG=${BFCFGA} ${BFBIN} -o 99:1/2 > ${CURDIR}/bforceAtoB < ${CURDIR}/bforceBtoA &
|
||||
#
|
||||
|
||||
BFCONFIG=${BFCFGB}
|
||||
BFCONFIG=${BFCFGB} ${BFBIN} -S"CONNECT 9600" auto < ${CURDIR}/bforceAtoB > ${CURDIR}/bforceBtoA
|
||||
|
||||
# For [Free]BSD it need to be replaced - pipes are bidirectional:
|
||||
# ./ping <&1 | ./pong >&0
|
||||
|
||||
rm ${CURDIR}/{bforceAtoB,bforceBtoA}
|
||||
|
||||
## WE MUST CHECK THAT INBOUND ARE FULL!!! ##
|
||||
FCNTA=$( find ${CURDIR}/inboundA -name *.pkt | wc -l )
|
||||
FCNTB=$( find ${CURDIR}/inboundB -name *.pkt | wc -l )
|
||||
DIFFA=$( diff ${CURDIR}/inboundA/*.pkt ${CURDIR}/configs/00010001.cut && echo $? )
|
||||
DIFFB=$( diff ${CURDIR}/inboundB/*.pkt ${CURDIR}/configs/00010002.cut && echo $? )
|
||||
|
||||
if [[ "${DIFFA}" -eq "0" ]] && [[ "${FCNTA}" -eq "1" ]]
|
||||
then
|
||||
if [[ "${DIFFB}" -eq "0" ]] && [[ "${FCNTB}" -eq "1" ]]
|
||||
then
|
||||
echo "....Result: OK"
|
||||
else
|
||||
echo "....Failed DiffB"
|
||||
fi
|
||||
else
|
||||
echo "....Failed DiffA"
|
||||
fi
|
||||
|
||||
cat ${CURDIR}/logsA/bf-debug >> ${CURDIR}/debugA.log
|
||||
cat ${CURDIR}/logsB/bf-debug >> ${CURDIR}/debugB.log
|
||||
}
|
||||
|
||||
if [[ ! -d "${CURDIR}/inboundA" ]]
|
||||
then
|
||||
echo "All clear to begin"
|
||||
else
|
||||
echo "Dir exists!"
|
||||
rm -rf {etc,inboundA,inboundB,inbound-unsecureA,inbound-unsecureB,logsA,logsB,outboundA,outboundB}
|
||||
fi
|
||||
mkdir -p "${CURDIR}"/{etc,inbound-unsecureA,inbound-unsecureB,inboundA,inboundB,logsA,logsB,outboundA,outboundB}
|
||||
|
||||
if [[ ! -f "${BFBIN}" ]]
|
||||
then
|
||||
# No executable to test!
|
||||
echo "No executable to run! Aborting..."
|
||||
else
|
||||
# All doing here
|
||||
echo "Bforce executable found"
|
||||
|
||||
prepconfig "ZMO"
|
||||
echo -n "--> Running ZMO test..."
|
||||
testcomm
|
||||
|
||||
prepconfig "ZAP"
|
||||
echo -n "--> Running ZAP test..."
|
||||
testcomm
|
||||
|
||||
prepconfig "HYD"
|
||||
echo -n "--> Running Hydra test..."
|
||||
testcomm
|
||||
|
||||
# TODO: make binkd test over netcat possibly
|
||||
|
||||
fi
|
||||
|
||||
|
||||
|
||||
rm -rf {etc,inboundA,inboundB,inbound-unsecureA,inbound-unsecureB,logsA,logsB,outboundA,outboundB}
|
||||
Reference in New Issue
Block a user