Compare commits
No commits in common. "22fa90589b0d49601241ac5da9847476d514c2e5" and "78aac4f18cbfaf44e750da2afc75f13926ca3ca4" have entirely different histories.
22fa90589b
...
78aac4f18c
@ -6,9 +6,8 @@ on:
|
|||||||
if: ${{ github.ref }} == 'refs/head/master'
|
if: ${{ github.ref }} == 'refs/head/master'
|
||||||
jobs:
|
jobs:
|
||||||
build-alt:
|
build-alt:
|
||||||
## runs-on: alt-latest
|
runs-on: alt-latest
|
||||||
container:
|
|
||||||
image: prj.zxalexis.ru/zx/alt-rpmbuild
|
|
||||||
branches:
|
branches:
|
||||||
- 'master'
|
- 'master'
|
||||||
|
|
||||||
@ -18,12 +17,12 @@ jobs:
|
|||||||
run: printenv
|
run: printenv
|
||||||
- name: Installing prerequisites - update apt
|
- name: Installing prerequisites - update apt
|
||||||
run: apt-get update
|
run: apt-get update
|
||||||
## - name: Installing prerequisites - install nodejs for actions & git
|
- name: Installing prerequisites - install nodejs for actions & git
|
||||||
## run: apt-get install -y git nodejs su
|
run: apt-get install -y git nodejs su
|
||||||
## - name: Installing build environment
|
- name: Installing build environment
|
||||||
## continue-on-error: true
|
continue-on-error: true
|
||||||
## run: |
|
run: |
|
||||||
## apt-get install -y gcc rpm-build rpmlint make python gear hasher fakeroot patch rpmdevtools
|
apt-get install -y gcc rpm-build rpmlint make python gear hasher fakeroot patch rpmdevtools
|
||||||
- name: Installing needed software
|
- name: Installing needed software
|
||||||
run: apt-get install -y bison tcl
|
run: apt-get install -y bison tcl
|
||||||
- name: Adding build user
|
- name: Adding build user
|
||||||
@ -54,7 +53,7 @@ jobs:
|
|||||||
su - builder -c 'rpmbuild -bb /builder/bforce.spec --define "_topdir /builder/rpmbuild"'
|
su - builder -c 'rpmbuild -bb /builder/bforce.spec --define "_topdir /builder/rpmbuild"'
|
||||||
- name: Constructing artifact name and version
|
- name: Constructing artifact name and version
|
||||||
run: |
|
run: |
|
||||||
echo "BFORCE_VERLONG=$(cat ${{ env.GITHUB_WORKSPACE }}/source/.version)-$(date +%Y%m%d)" >> $GITHUB_ENV
|
echo "BFORCE_VERLONG=$(cat ${{ env.GITHUB_WORKSPACE }}/source/.version)-$(date +%Y%M%d)" >> $GITHUB_ENV
|
||||||
- name: Retrieving artifact files
|
- name: Retrieving artifact files
|
||||||
run: mkdir bforce && cp /builder/rpmbuild/RPMS/x86_64/bforce-*.rpm bforce
|
run: mkdir bforce && cp /builder/rpmbuild/RPMS/x86_64/bforce-*.rpm bforce
|
||||||
- name: Try to upload artifacts bin
|
- name: Try to upload artifacts bin
|
||||||
|
@ -32,7 +32,7 @@ jobs:
|
|||||||
su - builder -c "ls -la"
|
su - builder -c "ls -la"
|
||||||
- name: Constructing artifact name and version
|
- name: Constructing artifact name and version
|
||||||
run: |
|
run: |
|
||||||
echo "BFORCE_VER=$(cat /builder/src/bforce/source/.version)-$(date +%Y%m%d)" >> $GITHUB_ENV
|
echo "BFORCE_VER=$(cat /builder/src/bforce/source/.version)-$(date +%Y%M%d)" >> $GITHUB_ENV
|
||||||
- name: Retrieving artifact files
|
- name: Retrieving artifact files
|
||||||
run: mkdir bforce && cp /builder/bforce-*.pkg.tar.zst bforce
|
run: mkdir bforce && cp /builder/bforce-*.pkg.tar.zst bforce
|
||||||
- name: Try to upload artifacts
|
- name: Try to upload artifacts
|
||||||
@ -40,40 +40,3 @@ jobs:
|
|||||||
with:
|
with:
|
||||||
name: bforce-${{ env.BFORCE_VER }}-Arch
|
name: bforce-${{ env.BFORCE_VER }}-Arch
|
||||||
path: bforce
|
path: bforce
|
||||||
make-test:
|
|
||||||
runs-on: arch-latest
|
|
||||||
|
|
||||||
branches:
|
|
||||||
- 'master'
|
|
||||||
|
|
||||||
steps:
|
|
||||||
- name: Checking environment
|
|
||||||
continue-on-error: true
|
|
||||||
run: printenv
|
|
||||||
- name: Installing prerequisites - update pacman
|
|
||||||
run: pacman -Sy
|
|
||||||
- name: Installing prerequisites - install nodejs for actions & git
|
|
||||||
run: pacman --disable-sandbox --noconfirm -v -S git nodejs socat
|
|
||||||
- name: Downloading source tree
|
|
||||||
continue-on-error: false
|
|
||||||
uses: actions/checkout@v3
|
|
||||||
- name: Constructing artifact name and version
|
|
||||||
run: |
|
|
||||||
echo "BFORCE_VER=$(cat ${{ github.workspace }}/source/.version)-$(date +%Y%m%d)" >> $GITHUB_ENV
|
|
||||||
- uses: actions/download-artifact@v3
|
|
||||||
with:
|
|
||||||
name: bforce-${{ env.BFORCE_VER }}-Arch
|
|
||||||
- name: Display structure of downloaded files
|
|
||||||
run: ls -R
|
|
||||||
- name: Installing archlinux package
|
|
||||||
run: |
|
|
||||||
ls -la
|
|
||||||
pacman --noconfirm -v -U bforce-*.pkg.tar.zst
|
|
||||||
cd ${{ github.workspace }}/tests
|
|
||||||
echo '-----------------------------------------'
|
|
||||||
ls -la
|
|
||||||
- name: Testing package in clean environment
|
|
||||||
run: |
|
|
||||||
cd ${{ github.workspace }}/tests
|
|
||||||
echo '------------>>> TESTING <<<--------------'
|
|
||||||
BFBIN=/usr/bin/bforce ./mktests.sh
|
|
||||||
|
@ -29,7 +29,7 @@ jobs:
|
|||||||
uses: actions/checkout@v4
|
uses: actions/checkout@v4
|
||||||
- name: Getting version info
|
- name: Getting version info
|
||||||
run: |
|
run: |
|
||||||
echo "BFORCE_VER=$(cat ${{ env.GITHUB_WORKSPACE }}/source/.version)-$(date +%Y%m%d)" >> $GITHUB_ENV
|
echo "BFORCE_VER=$(cat ${{ env.GITHUB_WORKSPACE }}/source/.version)-$(date +%Y%M%d)" >> $GITHUB_ENV
|
||||||
- name: Building package
|
- name: Building package
|
||||||
continue-on-error: false
|
continue-on-error: false
|
||||||
run: |
|
run: |
|
||||||
|
7
CHANGES
7
CHANGES
@ -279,10 +279,3 @@ Alexey Khromov (zx@zxalexis.ru)
|
|||||||
+ Fixed binkp stuck on overrides in config
|
+ Fixed binkp stuck on overrides in config
|
||||||
+ ReDebianized
|
+ ReDebianized
|
||||||
+ Added CI automation: builds for Archlinux and Ubuntu
|
+ Added CI automation: builds for Archlinux and Ubuntu
|
||||||
|
|
||||||
0.26.2
|
|
||||||
+ Added tests with socat and integrate it with CI
|
|
||||||
+ Fixed some minor lint errors by PVS-Studio
|
|
||||||
+ Fixed RPM spec-file to make builds for AltLinux
|
|
||||||
+ Added fail2ban filter to contrib
|
|
||||||
+ Fixed node/point-lists indexing and parsing for points listed
|
|
||||||
|
33
INSTALL
33
INSTALL
@ -1,35 +1,4 @@
|
|||||||
Prerequisites
|
Basic Installation
|
||||||
====================
|
|
||||||
|
|
||||||
C compiler (GCC in linux and clang in BSD will work well)
|
|
||||||
make
|
|
||||||
yacc or it's GNU's recreation named bison
|
|
||||||
Tcl optional for a couple of scripts
|
|
||||||
|
|
||||||
Installing with packages
|
|
||||||
=
|
|
||||||
|
|
||||||
Debian-based systesms (Debian, *buntu, Mint, Astra)
|
|
||||||
====================
|
|
||||||
|
|
||||||
Install build system for packaging:
|
|
||||||
|
|
||||||
apt install build-essential fakeroot devscripts debhelper pkg-config
|
|
||||||
apt install bison tcl
|
|
||||||
|
|
||||||
Use debuild to make deb-s:
|
|
||||||
|
|
||||||
cd <SRCDIR>/debian
|
|
||||||
debuild -us -uc -b
|
|
||||||
|
|
||||||
RPM-based systems (RHEL, CentOS, Altlinux, SimplyLinux, RedOS)
|
|
||||||
=====================
|
|
||||||
|
|
||||||
mkdir -p ./rpmbuild/{RPMS,BUILD}
|
|
||||||
rpmbuild -bb <SRCDIR>/rpm/bforce.spec --define "_topdir $( pwd )/rpmbuild" --define "_builddir <SRCDIR>/source"
|
|
||||||
|
|
||||||
|
|
||||||
Manual Installation
|
|
||||||
==================
|
==================
|
||||||
|
|
||||||
These are generic installation instructions.
|
These are generic installation instructions.
|
||||||
|
37
INSTALL.ru
37
INSTALL.ru
@ -3,42 +3,21 @@
|
|||||||
|
|
||||||
В данном документе приняты следующие обозначения:
|
В данном документе приняты следующие обозначения:
|
||||||
|
|
||||||
<SRCDIR> - путь, куда вы распаковали тарболл с исходными текстами
|
<SRCDIR> - путь, куда вы распаковали тарболл с исходными
|
||||||
bforce 0.xx (далее bforce)
|
текстами bforce 0.xx (далее bforce)
|
||||||
Тарболл - файл с расширением tar.gz, или tar.bz2
|
Тарболл - файл с расширением tar.gz, или tar.bz2
|
||||||
|
|
||||||
|
|
||||||
Требования к системе
|
Требования к системе
|
||||||
====================
|
====================
|
||||||
|
|
||||||
Для компиляции bforce вам потребуется компилятор с языка С,
|
Для компиляции bforce вам потребуется компилятор (для
|
||||||
так же GNU make (make для линукс, gmake для bsd) и yacc (в linux -
|
gnu/bsd-систем gcc), так же GNU make (make для линукс,
|
||||||
bison). Опционально - tcl
|
gmake для bsd).
|
||||||
|
|
||||||
Создание пакета
|
Обратитесь к документации по вашей системе того, что бы
|
||||||
=
|
узнать как установить вышеперечисленное программное обеспечение.
|
||||||
|
|
||||||
Debian-based системы (Debian, *buntu, Mint, Astra)
|
|
||||||
====================
|
|
||||||
|
|
||||||
Установка программ и набора скриптов для сборки пакетов:
|
|
||||||
|
|
||||||
apt install build-essential fakeroot devscripts debhelper pkg-config
|
|
||||||
apt install bison tcl
|
|
||||||
|
|
||||||
Для создания пакета из скачанных исходников достаточно воспользоваться
|
|
||||||
командой debuild:
|
|
||||||
|
|
||||||
cd <SRCDIR>/debian
|
|
||||||
debuild -us -uc -b
|
|
||||||
|
|
||||||
RPM-based системы (RHEL, CentOS, Altlinux, SimplyLinux, RedOS)
|
|
||||||
=====================
|
|
||||||
|
|
||||||
mkdir -p ./rpmbuild/{RPMS,BUILD}
|
|
||||||
rpmbuild -bb <SRCDIR>/rpm/bforce.spec --define "_topdir $( pwd )/rpmbuild" --define "_builddir <SRCDIR>/source"
|
|
||||||
|
|
||||||
Установка вручную
|
|
||||||
=
|
|
||||||
|
|
||||||
Процесс компиляции
|
Процесс компиляции
|
||||||
==================
|
==================
|
||||||
|
@ -1,25 +0,0 @@
|
|||||||
# Fail2Ban filter for bforce bf-log.tcpip log file
|
|
||||||
# Detecting unauthorized access
|
|
||||||
# Typically logged in /var/log/bforce/bf-debug
|
|
||||||
|
|
||||||
# Apr 10 17:34:20 [944134] TCP/IP connect from 72.138.46.4 on port 5590
|
|
||||||
# Apr 10 17:34:21 [944134] Session ended up, rc=21, inetd=1
|
|
||||||
# Apr 10 17:34:21 [944134] session rc = 21 ("Cannot handshake with remote")
|
|
||||||
# Apr 10 17:34:21 [944135] Answering TCPIP call...
|
|
||||||
# Apr 10 17:34:21 [944135] TCP/IP connect from 72.138.46.4 on port 7714
|
|
||||||
# Apr 10 17:34:21 [944135] Session ended up, rc=21, inetd=1
|
|
||||||
# Apr 10 17:34:21 [944135] session rc = 21 ("Cannot handshake with remote")
|
|
||||||
|
|
||||||
[INCLUDES]
|
|
||||||
|
|
||||||
# Read common prefixes. If any customizations available -- read them from
|
|
||||||
# common.local
|
|
||||||
before = common.conf
|
|
||||||
|
|
||||||
[Init]
|
|
||||||
maxlines = 5
|
|
||||||
|
|
||||||
[Definition]
|
|
||||||
prefregex = \[<F-MLFID>\d+</F-MLFID>\] TCP/IP connect from <HOST> on port \d+$
|
|
||||||
failregex = session rc \= 21
|
|
||||||
ignoreregex =
|
|
@ -1,8 +0,0 @@
|
|||||||
[bforce]
|
|
||||||
enabled = true
|
|
||||||
port = 24554,60179
|
|
||||||
filter = bforce
|
|
||||||
logpath = /opt/fidonms/logs/bf-log.tcpip
|
|
||||||
maxretry = 5
|
|
||||||
findtime = 60
|
|
||||||
bantime = 600
|
|
@ -6,7 +6,7 @@ Type=forking
|
|||||||
PIDFile=/tmp/bforce.pid
|
PIDFile=/tmp/bforce.pid
|
||||||
User=fido
|
User=fido
|
||||||
Group=fido
|
Group=fido
|
||||||
ExecStart=/usr/bin/bforce -d -C /etc/bforce/bforce.conf
|
ExecStart=/usr/bin/bforce -d -C /opt/fidonms/etc/bforce.conf
|
||||||
ExecStop=/usr/bin/bforce -q
|
ExecStop=/usr/bin/bforce -q
|
||||||
|
|
||||||
[Install]
|
[Install]
|
||||||
|
@ -9,5 +9,5 @@ service binkp
|
|||||||
wait = no
|
wait = no
|
||||||
user = fido
|
user = fido
|
||||||
server = /usr/bin/bforce
|
server = /usr/bin/bforce
|
||||||
server_args = -C /etc/bforce/bforce.conf -i binkp
|
server_args = -C /opt/fidonms/etc/bforce.conf -i binkp
|
||||||
}
|
}
|
||||||
|
@ -9,5 +9,5 @@ service ifc
|
|||||||
wait = no
|
wait = no
|
||||||
user = fido
|
user = fido
|
||||||
server = /usr/bin/bforce
|
server = /usr/bin/bforce
|
||||||
server_args = -C /etc/bforce/bforce.conf -i auto
|
server_args = -C /opt/fidonms/etc/bforce.conf -i auto
|
||||||
}
|
}
|
0
source/Makefile.am → debian/Makefile.am
vendored
0
source/Makefile.am → debian/Makefile.am
vendored
263
debian/Makefile.in
vendored
Normal file
263
debian/Makefile.in
vendored
Normal file
@ -0,0 +1,263 @@
|
|||||||
|
# Makefile.in generated by automake 1.8.3 from Makefile.am.
|
||||||
|
# @configure_input@
|
||||||
|
|
||||||
|
# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
|
||||||
|
# 2003, 2004 Free Software Foundation, Inc.
|
||||||
|
# This Makefile.in is free software; the Free Software Foundation
|
||||||
|
# gives unlimited permission to copy and/or distribute it,
|
||||||
|
# with or without modifications, as long as this notice is preserved.
|
||||||
|
|
||||||
|
# This program is distributed in the hope that it will be useful,
|
||||||
|
# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
|
||||||
|
# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
|
||||||
|
# PARTICULAR PURPOSE.
|
||||||
|
|
||||||
|
@SET_MAKE@
|
||||||
|
srcdir = @srcdir@
|
||||||
|
top_srcdir = @top_srcdir@
|
||||||
|
VPATH = @srcdir@
|
||||||
|
pkgdatadir = $(datadir)/@PACKAGE@
|
||||||
|
pkglibdir = $(libdir)/@PACKAGE@
|
||||||
|
pkgincludedir = $(includedir)/@PACKAGE@
|
||||||
|
top_builddir = ..
|
||||||
|
am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
|
||||||
|
INSTALL = @INSTALL@
|
||||||
|
install_sh_DATA = $(install_sh) -c -m 644
|
||||||
|
install_sh_PROGRAM = $(install_sh) -c
|
||||||
|
install_sh_SCRIPT = $(install_sh) -c
|
||||||
|
INSTALL_HEADER = $(INSTALL_DATA)
|
||||||
|
transform = $(program_transform_name)
|
||||||
|
NORMAL_INSTALL = :
|
||||||
|
PRE_INSTALL = :
|
||||||
|
POST_INSTALL = :
|
||||||
|
NORMAL_UNINSTALL = :
|
||||||
|
PRE_UNINSTALL = :
|
||||||
|
POST_UNINSTALL = :
|
||||||
|
build_triplet = @build@
|
||||||
|
host_triplet = @host@
|
||||||
|
target_triplet = @target@
|
||||||
|
subdir = ../debian
|
||||||
|
DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in
|
||||||
|
am__aclocal_m4_deps = $(top_srcdir)/configure.in
|
||||||
|
am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES)
|
||||||
|
mkinstalldirs = $(mkdir_p)
|
||||||
|
CONFIG_HEADER = $(top_builddir)/include/config.h
|
||||||
|
CONFIG_CLEAN_FILES =
|
||||||
|
SOURCES =
|
||||||
|
DIST_SOURCES =
|
||||||
|
DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
|
||||||
|
CC = @CC@
|
||||||
|
CFLAGS = @CFLAGS@
|
||||||
|
CPP = @CPP@
|
||||||
|
CPPFLAGS = @CPPFLAGS@
|
||||||
|
DEFS = @DEFS@
|
||||||
|
ECHO_C = @ECHO_C@
|
||||||
|
ECHO_N = @ECHO_N@
|
||||||
|
ECHO_T = @ECHO_T@
|
||||||
|
EGREP = @EGREP@
|
||||||
|
EXEEXT = @EXEEXT@
|
||||||
|
GROUP = @GROUP@
|
||||||
|
INSTALL_DATA = @INSTALL_DATA@
|
||||||
|
INSTALL_PROGRAM = @INSTALL_PROGRAM@
|
||||||
|
INSTALL_SCRIPT = @INSTALL_SCRIPT@
|
||||||
|
LDFLAGS = @LDFLAGS@
|
||||||
|
LIBOBJS = @LIBOBJS@
|
||||||
|
LIBS = @LIBS@
|
||||||
|
LTLIBOBJS = @LTLIBOBJS@
|
||||||
|
OBJEXT = @OBJEXT@
|
||||||
|
OWNER = @OWNER@
|
||||||
|
PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
|
||||||
|
PACKAGE_NAME = @PACKAGE_NAME@
|
||||||
|
PACKAGE_STRING = @PACKAGE_STRING@
|
||||||
|
PACKAGE_TARNAME = @PACKAGE_TARNAME@
|
||||||
|
PACKAGE_VERSION = @PACKAGE_VERSION@
|
||||||
|
PATH_SEPARATOR = @PATH_SEPARATOR@
|
||||||
|
SHELL = @SHELL@
|
||||||
|
YACC = @YACC@
|
||||||
|
ac_ct_CC = @ac_ct_CC@
|
||||||
|
bindir = @bindir@
|
||||||
|
build = @build@
|
||||||
|
build_alias = @build_alias@
|
||||||
|
build_cpu = @build_cpu@
|
||||||
|
build_os = @build_os@
|
||||||
|
build_vendor = @build_vendor@
|
||||||
|
datadir = @datadir@
|
||||||
|
exec_prefix = @exec_prefix@
|
||||||
|
host = @host@
|
||||||
|
host_alias = @host_alias@
|
||||||
|
host_cpu = @host_cpu@
|
||||||
|
host_os = @host_os@
|
||||||
|
host_vendor = @host_vendor@
|
||||||
|
includedir = @includedir@
|
||||||
|
infodir = @infodir@
|
||||||
|
libdir = @libdir@
|
||||||
|
libexecdir = @libexecdir@
|
||||||
|
localstatedir = @localstatedir@
|
||||||
|
mandir = @mandir@
|
||||||
|
oldincludedir = @oldincludedir@
|
||||||
|
prefix = @prefix@
|
||||||
|
program_transform_name = @program_transform_name@
|
||||||
|
sbindir = @sbindir@
|
||||||
|
sharedstatedir = @sharedstatedir@
|
||||||
|
sysconfdir = @sysconfdir@
|
||||||
|
target = @target@
|
||||||
|
target_alias = @target_alias@
|
||||||
|
target_cpu = @target_cpu@
|
||||||
|
target_os = @target_os@
|
||||||
|
target_vendor = @target_vendor@
|
||||||
|
|
||||||
|
# $Id$
|
||||||
|
EXTRA_DIST = copyright changelog rules conffiles \
|
||||||
|
control dirs init.d
|
||||||
|
|
||||||
|
all: all-am
|
||||||
|
|
||||||
|
.SUFFIXES:
|
||||||
|
$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps)
|
||||||
|
@for dep in $?; do \
|
||||||
|
case '$(am__configure_deps)' in \
|
||||||
|
*$$dep*) \
|
||||||
|
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \
|
||||||
|
&& exit 0; \
|
||||||
|
exit 1;; \
|
||||||
|
esac; \
|
||||||
|
done; \
|
||||||
|
echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu ../debian/Makefile'; \
|
||||||
|
cd $(top_srcdir) && \
|
||||||
|
$(AUTOMAKE) --gnu ../debian/Makefile
|
||||||
|
.PRECIOUS: Makefile
|
||||||
|
Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
|
||||||
|
@case '$?' in \
|
||||||
|
*config.status*) \
|
||||||
|
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
|
||||||
|
*) \
|
||||||
|
echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
|
||||||
|
cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
|
||||||
|
esac;
|
||||||
|
|
||||||
|
$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
|
||||||
|
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
|
||||||
|
|
||||||
|
$(top_srcdir)/configure: $(am__configure_deps)
|
||||||
|
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
|
||||||
|
uninstall-info-am:
|
||||||
|
tags: TAGS
|
||||||
|
TAGS:
|
||||||
|
|
||||||
|
ctags: CTAGS
|
||||||
|
CTAGS:
|
||||||
|
|
||||||
|
|
||||||
|
distdir: $(DISTFILES)
|
||||||
|
@srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \
|
||||||
|
topsrcdirstrip=`echo "$(top_srcdir)" | sed 's|.|.|g'`; \
|
||||||
|
list='$(DISTFILES)'; for file in $$list; do \
|
||||||
|
case $$file in \
|
||||||
|
$(srcdir)/*) file=`echo "$$file" | sed "s|^$$srcdirstrip/||"`;; \
|
||||||
|
$(top_srcdir)/*) file=`echo "$$file" | sed "s|^$$topsrcdirstrip/|$(top_builddir)/|"`;; \
|
||||||
|
esac; \
|
||||||
|
if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
|
||||||
|
dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \
|
||||||
|
if test "$$dir" != "$$file" && test "$$dir" != "."; then \
|
||||||
|
dir="/$$dir"; \
|
||||||
|
$(mkdir_p) "$(distdir)$$dir"; \
|
||||||
|
else \
|
||||||
|
dir=''; \
|
||||||
|
fi; \
|
||||||
|
if test -d $$d/$$file; then \
|
||||||
|
if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
|
||||||
|
cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \
|
||||||
|
fi; \
|
||||||
|
cp -pR $$d/$$file $(distdir)$$dir || exit 1; \
|
||||||
|
else \
|
||||||
|
test -f $(distdir)/$$file \
|
||||||
|
|| cp -p $$d/$$file $(distdir)/$$file \
|
||||||
|
|| exit 1; \
|
||||||
|
fi; \
|
||||||
|
done
|
||||||
|
check-am: all-am
|
||||||
|
check: check-am
|
||||||
|
all-am: Makefile
|
||||||
|
installdirs:
|
||||||
|
install: install-am
|
||||||
|
install-exec: install-exec-am
|
||||||
|
install-data: install-data-am
|
||||||
|
uninstall: uninstall-am
|
||||||
|
|
||||||
|
install-am: all-am
|
||||||
|
@$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
|
||||||
|
|
||||||
|
installcheck: installcheck-am
|
||||||
|
install-strip:
|
||||||
|
$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
|
||||||
|
install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
|
||||||
|
`test -z '$(STRIP)' || \
|
||||||
|
echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
|
||||||
|
mostlyclean-generic:
|
||||||
|
|
||||||
|
clean-generic:
|
||||||
|
|
||||||
|
distclean-generic:
|
||||||
|
-rm -f $(CONFIG_CLEAN_FILES)
|
||||||
|
|
||||||
|
maintainer-clean-generic:
|
||||||
|
@echo "This command is intended for maintainers to use"
|
||||||
|
@echo "it deletes files that may require special tools to rebuild."
|
||||||
|
clean: clean-am
|
||||||
|
|
||||||
|
clean-am: clean-generic mostlyclean-am
|
||||||
|
|
||||||
|
distclean: distclean-am
|
||||||
|
-rm -f Makefile
|
||||||
|
distclean-am: clean-am distclean-generic
|
||||||
|
|
||||||
|
dvi: dvi-am
|
||||||
|
|
||||||
|
dvi-am:
|
||||||
|
|
||||||
|
html: html-am
|
||||||
|
|
||||||
|
info: info-am
|
||||||
|
|
||||||
|
info-am:
|
||||||
|
|
||||||
|
install-data-am:
|
||||||
|
|
||||||
|
install-exec-am:
|
||||||
|
|
||||||
|
install-info: install-info-am
|
||||||
|
|
||||||
|
install-man:
|
||||||
|
|
||||||
|
installcheck-am:
|
||||||
|
|
||||||
|
maintainer-clean: maintainer-clean-am
|
||||||
|
-rm -f Makefile
|
||||||
|
maintainer-clean-am: distclean-am maintainer-clean-generic
|
||||||
|
|
||||||
|
mostlyclean: mostlyclean-am
|
||||||
|
|
||||||
|
mostlyclean-am: mostlyclean-generic
|
||||||
|
|
||||||
|
pdf: pdf-am
|
||||||
|
|
||||||
|
pdf-am:
|
||||||
|
|
||||||
|
ps: ps-am
|
||||||
|
|
||||||
|
ps-am:
|
||||||
|
|
||||||
|
uninstall-am: uninstall-info-am
|
||||||
|
|
||||||
|
.PHONY: all all-am check check-am clean clean-generic distclean \
|
||||||
|
distclean-generic distdir dvi dvi-am html html-am info info-am \
|
||||||
|
install install-am install-data install-data-am install-exec \
|
||||||
|
install-exec-am install-info install-info-am install-man \
|
||||||
|
install-strip installcheck installcheck-am installdirs \
|
||||||
|
maintainer-clean maintainer-clean-generic mostlyclean \
|
||||||
|
mostlyclean-generic pdf pdf-am ps ps-am uninstall uninstall-am \
|
||||||
|
uninstall-info-am
|
||||||
|
|
||||||
|
# Tell versions [3.59,3.63) of GNU make to not export all variables.
|
||||||
|
# Otherwise a system limit (for SysV at least) may be exceeded.
|
||||||
|
.NOEXPORT:
|
6
debian/README.Debian
vendored
Normal file
6
debian/README.Debian
vendored
Normal file
@ -0,0 +1,6 @@
|
|||||||
|
bforce for Debian
|
||||||
|
-----------------
|
||||||
|
|
||||||
|
See CHANGES.ugenk
|
||||||
|
|
||||||
|
-- Evgeniy Kozhuhovskiy <e.kozhuhovskiy@gmail.com>, Thu Feb 10 23:54:48 2005
|
7
debian/changelog
vendored
7
debian/changelog
vendored
@ -1,10 +1,3 @@
|
|||||||
bforce (0.26.2) UNRELEASED; urgency=medium
|
|
||||||
|
|
||||||
* Added tests to CI actions
|
|
||||||
* Fixed nodelist indexing for points handling
|
|
||||||
|
|
||||||
-- Alexey Khromov <zx@zxalexis.ru> Sat, 19 Apr 2025 07:43:54 +0300
|
|
||||||
|
|
||||||
bforce (0.26.1) UNRELEASED; urgency=medium
|
bforce (0.26.1) UNRELEASED; urgency=medium
|
||||||
|
|
||||||
* Fixed for ubuntu/debian builds and CI actions
|
* Fixed for ubuntu/debian builds and CI actions
|
||||||
|
@ -2,7 +2,7 @@
|
|||||||
.SH NAME
|
.SH NAME
|
||||||
bfindex \- nodelist compiler for bforce
|
bfindex \- nodelist compiler for bforce
|
||||||
.SH SYNOPSYS
|
.SH SYNOPSYS
|
||||||
\fBbfindex [-fh] [-C\fIconfig\fB]\fR
|
\fBbfindex [-fh]\fR
|
||||||
|
|
||||||
.SH DESCRIPTION
|
.SH DESCRIPTION
|
||||||
\fBbfindex\fP is a nodelist compiler for BinkleyForce FTN mailer.
|
\fBbfindex\fP is a nodelist compiler for BinkleyForce FTN mailer.
|
||||||
|
@ -2,7 +2,7 @@
|
|||||||
.SH NAME
|
.SH NAME
|
||||||
bfstat \- binkley style outbound statistic
|
bfstat \- binkley style outbound statistic
|
||||||
.SH SYNOPSYS
|
.SH SYNOPSYS
|
||||||
\fBbfstat [-afhprst] [-n \fInumber\fB] [-C\fIconfig\fB]\fR
|
\fBbfstat [-afhprst] [-n \fInumber\fB]\fR
|
||||||
.SH DESCRIPTION
|
.SH DESCRIPTION
|
||||||
\fBbfstat\fP help you to see your outbound statistic in human readable
|
\fBbfstat\fP help you to see your outbound statistic in human readable
|
||||||
form.
|
form.
|
||||||
|
@ -2,7 +2,7 @@
|
|||||||
.SH NAME
|
.SH NAME
|
||||||
Bnlookup \- Nodelist search tool for bforce
|
Bnlookup \- Nodelist search tool for bforce
|
||||||
.SH SYNOPSYS
|
.SH SYNOPSYS
|
||||||
\fBnlookup [-rh] [-C\fIconfig\fB]\fR
|
\fBnlookup [-rh]\fR
|
||||||
|
|
||||||
.SH DESCRIPTION
|
.SH DESCRIPTION
|
||||||
\fBnlookup\fP is a nodelist search tool for BinkleyForce FTN mailer.
|
\fBnlookup\fP is a nodelist search tool for BinkleyForce FTN mailer.
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
Summary: Bforce, Fidonet mailer
|
Summary: Bforce, Fidonet mailer
|
||||||
Name: bforce
|
Name: bforce
|
||||||
Version: 0.26.2
|
Version: 0.26.1
|
||||||
Release: %{_vendor}.1
|
Release: %{_vendor}.1
|
||||||
Copyright: GPL
|
Copyright: GPL
|
||||||
Group: Fidonet/mailer
|
Group: Fidonet/mailer
|
||||||
@ -31,7 +31,6 @@ mkdir -p $RPM_BUILD_ROOT/etc/bforce
|
|||||||
mkdir -p $RPM_BUILD_ROOT/usr/bin
|
mkdir -p $RPM_BUILD_ROOT/usr/bin
|
||||||
mkdir -p $RPM_BUILD_ROOT/usr/sbin
|
mkdir -p $RPM_BUILD_ROOT/usr/sbin
|
||||||
mkdir -p $RPM_BUILD_ROOT/usr/share/man/man1
|
mkdir -p $RPM_BUILD_ROOT/usr/share/man/man1
|
||||||
mkdir -p $RPM_BUILD_ROOT/usr/lib/systemd/system/
|
|
||||||
mkdir -p $RPM_BUILD_ROOT/var/log/bforce
|
mkdir -p $RPM_BUILD_ROOT/var/log/bforce
|
||||||
mkdir -p $RPM_BUILD_ROOT/var/spool/fido/bt/pin
|
mkdir -p $RPM_BUILD_ROOT/var/spool/fido/bt/pin
|
||||||
mkdir -p $RPM_BUILD_ROOT/var/spool/fido/bt/in
|
mkdir -p $RPM_BUILD_ROOT/var/spool/fido/bt/in
|
||||||
@ -50,7 +49,6 @@ install %{_builddir}/%{name}/examples/bforce.subst $RPM_BUILD_ROOT/etc/bforce/bf
|
|||||||
install %{_builddir}/%{name}/examples/freq.aliases $RPM_BUILD_ROOT/etc/bforce/freq.aliases.sample
|
install %{_builddir}/%{name}/examples/freq.aliases $RPM_BUILD_ROOT/etc/bforce/freq.aliases.sample
|
||||||
install %{_builddir}/%{name}/examples/freq.dirs $RPM_BUILD_ROOT/etc/bforce/freq.dirs.sample
|
install %{_builddir}/%{name}/examples/freq.dirs $RPM_BUILD_ROOT/etc/bforce/freq.dirs.sample
|
||||||
install %{_builddir}/%{name}/contrib/outman $RPM_BUILD_ROOT/usr/bin/outman
|
install %{_builddir}/%{name}/contrib/outman $RPM_BUILD_ROOT/usr/bin/outman
|
||||||
install %{_builddir}/%{name}/contrib/systemd/bforce.service $RPM_BUILD_ROOT/usr/lib/systemd/system/bforce.service
|
|
||||||
cp %{_builddir}/%{name}/man/*.1 $RPM_BUILD_ROOT/usr/share/man/man1/
|
cp %{_builddir}/%{name}/man/*.1 $RPM_BUILD_ROOT/usr/share/man/man1/
|
||||||
cp %{_builddir}/%{name}/{README.md,CHANGES,COPYING,INSTALL,INSTALL.ru,SYSLOG,TODO} $RPM_BUILD_ROOT/$RPM_DOC_DIR/$RPM_PACKAGE_NAME-$RPM_PACKAGE_VERSION/
|
cp %{_builddir}/%{name}/{README.md,CHANGES,COPYING,INSTALL,INSTALL.ru,SYSLOG,TODO} $RPM_BUILD_ROOT/$RPM_DOC_DIR/$RPM_PACKAGE_NAME-$RPM_PACKAGE_VERSION/
|
||||||
|
|
||||||
|
@ -1 +1 @@
|
|||||||
0.26.2
|
0.26.1
|
||||||
|
@ -28,8 +28,7 @@ CONFDIR = @sysconfdir@
|
|||||||
BINDIR = @bindir@
|
BINDIR = @bindir@
|
||||||
LOGDIR = @LOGDIR@
|
LOGDIR = @LOGDIR@
|
||||||
SPOOLDIR = @SPOOLDIR@
|
SPOOLDIR = @SPOOLDIR@
|
||||||
MANDIR = /usr/share/man/man1
|
MANDIR = @MANDIR@
|
||||||
SYSTEMDDIR = /var/lib/systemd/system
|
|
||||||
|
|
||||||
DAEMON_LOGFILE = $(LOGDIR)/bf-daemon
|
DAEMON_LOGFILE = $(LOGDIR)/bf-daemon
|
||||||
BFORCE_LOGFILE = $(LOGDIR)/bf-log
|
BFORCE_LOGFILE = $(LOGDIR)/bf-log
|
||||||
@ -209,7 +208,6 @@ install-man:
|
|||||||
|
|
||||||
install-contrib:
|
install-contrib:
|
||||||
$(INSTALL_PROGRAM) -o $(OWNER) -g $(GROUP) $(CONTRIBDIR)/outman $(BINDIR)/outman
|
$(INSTALL_PROGRAM) -o $(OWNER) -g $(GROUP) $(CONTRIBDIR)/outman $(BINDIR)/outman
|
||||||
$(INSTALL_DATA) -o $(OWNER) -g $(GROUP) $(CONTRIBDIR)/systemd/bforce.service $(SYSTEMDDIR)/bforce.service
|
|
||||||
@echo "Please, edit $(BINDIR)/outman"
|
@echo "Please, edit $(BINDIR)/outman"
|
||||||
|
|
||||||
install: install-bin install-config install-man
|
install: install-bin install-config install-man
|
||||||
|
@ -259,16 +259,12 @@ int main(int argc, char *argv[], char *envp[])
|
|||||||
|
|
||||||
mainenv[0] = NULL;
|
mainenv[0] = NULL;
|
||||||
i=0;
|
i=0;
|
||||||
if ( envp[0] ) {
|
|
||||||
while (envp[i]) {
|
while (envp[i]) {
|
||||||
mainenv[i] = malloc(strlen(envp[i])+2);
|
mainenv[i] = malloc(strlen(envp[i])+2);
|
||||||
if ( mainenv[i] ) {
|
|
||||||
strcpy(mainenv[i], envp[i]);
|
strcpy(mainenv[i], envp[i]);
|
||||||
mainenv[++i] = NULL;
|
mainenv[++i] = NULL;
|
||||||
DEB((D_FREE, "Program ENV: %s\n", mainenv[(i-1)]));
|
DEB((D_FREE, "Program ENV: %s\n", mainenv[(i-1)]));
|
||||||
}
|
}
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
memset(&opts, '\0', sizeof(s_bforce_opts));
|
memset(&opts, '\0', sizeof(s_bforce_opts));
|
||||||
|
|
||||||
|
@ -662,7 +662,7 @@ static int proc_domain(s_domain *dest, char *value)
|
|||||||
if( p_path[strlen(p_path)-1] == DIRSEPCHR )
|
if( p_path[strlen(p_path)-1] == DIRSEPCHR )
|
||||||
dest->path = xstrcpy(p_path);
|
dest->path = xstrcpy(p_path);
|
||||||
else
|
else
|
||||||
dest->path = string_concat(p_path, DIRSEPSTR, '\0');
|
dest->path = string_concat(p_path, DIRSEPSTR, NULL);
|
||||||
return(PROC_RC_OK);
|
return(PROC_RC_OK);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
@ -751,7 +751,7 @@ static int proc_path(s_string *dest, char *value)
|
|||||||
if( value[strlen(value)-1] == DIRSEPCHR )
|
if( value[strlen(value)-1] == DIRSEPCHR )
|
||||||
dest->str = xstrcpy(value);
|
dest->str = xstrcpy(value);
|
||||||
else
|
else
|
||||||
dest->str = string_concat(value, DIRSEPSTR, '\0');
|
dest->str = string_concat(value, DIRSEPSTR, NULL);
|
||||||
|
|
||||||
return(PROC_RC_OK);
|
return(PROC_RC_OK);
|
||||||
}
|
}
|
||||||
@ -1004,7 +1004,7 @@ static int proc_filebox(s_filebox *dest, char *value)
|
|||||||
if( p_path[strlen(p_path)-1] == DIRSEPCHR )
|
if( p_path[strlen(p_path)-1] == DIRSEPCHR )
|
||||||
dest->path = xstrcpy(p_path);
|
dest->path = xstrcpy(p_path);
|
||||||
else
|
else
|
||||||
dest->path = string_concat(p_path, DIRSEPSTR, '\0');
|
dest->path = string_concat(p_path, DIRSEPSTR, NULL);
|
||||||
dest->flavor = flavor;
|
dest->flavor = flavor;
|
||||||
return rc;
|
return rc;
|
||||||
}
|
}
|
||||||
|
@ -1035,7 +1035,7 @@ int daemon_run(const char *confname, const char *incname, bool quit)
|
|||||||
/*
|
/*
|
||||||
* Check rescan timer
|
* Check rescan timer
|
||||||
*/
|
*/
|
||||||
if( timer_expired(timer_rescan) )
|
if( !timer_running(timer_rescan) || timer_expired(timer_rescan) )
|
||||||
{
|
{
|
||||||
(void)daemon_rescan_sysqueue(&daemon_sys_queue,
|
(void)daemon_rescan_sysqueue(&daemon_sys_queue,
|
||||||
daemon_queues);
|
daemon_queues);
|
||||||
@ -1045,7 +1045,7 @@ int daemon_run(const char *confname, const char *incname, bool quit)
|
|||||||
/*
|
/*
|
||||||
* Check alive timer
|
* Check alive timer
|
||||||
*/
|
*/
|
||||||
if( timer_expired(timer_alive) )
|
if( !timer_running(timer_alive) || timer_expired(timer_alive) )
|
||||||
{
|
{
|
||||||
daemon_alive_message(&daemon_sys_queue);
|
daemon_alive_message(&daemon_sys_queue);
|
||||||
timer_set(&timer_alive, DAEMON_ALIVE_TIMER);
|
timer_set(&timer_alive, DAEMON_ALIVE_TIMER);
|
||||||
|
@ -955,7 +955,7 @@ yydestruct (char *yymsg,
|
|||||||
{
|
{
|
||||||
YY_USE (yyvaluep);
|
YY_USE (yyvaluep);
|
||||||
if (!yymsg)
|
if (!yymsg)
|
||||||
yymsg = "Deleting"; // cppcheck_suppress uselessAssignmentPtrArg
|
yymsg = "Deleting";
|
||||||
YY_SYMBOL_PRINT (yymsg, yykind, yyvaluep, yylocationp);
|
YY_SYMBOL_PRINT (yymsg, yykind, yyvaluep, yylocationp);
|
||||||
|
|
||||||
YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
|
YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
|
||||||
@ -1067,9 +1067,8 @@ yysetstate:
|
|||||||
data in use in that stack, in bytes. This used to be a
|
data in use in that stack, in bytes. This used to be a
|
||||||
conditional around just the two extra args, but that might
|
conditional around just the two extra args, but that might
|
||||||
be undefined if yyoverflow is a macro. */
|
be undefined if yyoverflow is a macro. */
|
||||||
|
|
||||||
yyoverflow (YY_("memory exhausted"),
|
yyoverflow (YY_("memory exhausted"),
|
||||||
&yyss1, yysize * YYSIZEOF (*yyssp), // cppcheck_suppress syntaxError
|
&yyss1, yysize * YYSIZEOF (*yyssp),
|
||||||
&yyvs1, yysize * YYSIZEOF (*yyvsp),
|
&yyvs1, yysize * YYSIZEOF (*yyvsp),
|
||||||
&yyls1, yysize * YYSIZEOF (*yylsp),
|
&yyls1, yysize * YYSIZEOF (*yylsp),
|
||||||
&yystacksize);
|
&yystacksize);
|
||||||
@ -1089,7 +1088,7 @@ yysetstate:
|
|||||||
yy_state_t *yyss1 = yyss;
|
yy_state_t *yyss1 = yyss;
|
||||||
union yyalloc *yyptr =
|
union yyalloc *yyptr =
|
||||||
YY_CAST (union yyalloc *,
|
YY_CAST (union yyalloc *,
|
||||||
YYSTACK_ALLOC (YY_CAST (YYSIZE_T, YYSTACK_BYTES (yystacksize)))); // cppcheck_suppress sizeofwithnumericparameter
|
YYSTACK_ALLOC (YY_CAST (YYSIZE_T, YYSTACK_BYTES (yystacksize))));
|
||||||
if (! yyptr)
|
if (! yyptr)
|
||||||
YYNOMEM;
|
YYNOMEM;
|
||||||
YYSTACK_RELOCATE (yyss_alloc, yyss);
|
YYSTACK_RELOCATE (yyss_alloc, yyss);
|
||||||
@ -1781,14 +1780,7 @@ static int expr_check_mailer(const char *str)
|
|||||||
|
|
||||||
static int expr_check_addr(const char *str)
|
static int expr_check_addr(const char *str)
|
||||||
{
|
{
|
||||||
s_faddr addr = {
|
s_faddr addr;
|
||||||
.inetform = false,
|
|
||||||
.zone = 0,
|
|
||||||
.net = 0,
|
|
||||||
.node = 0,
|
|
||||||
.point = 0,
|
|
||||||
.domain = '\0' };
|
|
||||||
|
|
||||||
#ifdef DEBUG
|
#ifdef DEBUG
|
||||||
char abuf1[BF_MAXADDRSTR+1];
|
char abuf1[BF_MAXADDRSTR+1];
|
||||||
char abuf2[BF_MAXADDRSTR+1];
|
char abuf2[BF_MAXADDRSTR+1];
|
||||||
|
@ -360,13 +360,7 @@ static int expr_check_mailer(const char *str)
|
|||||||
|
|
||||||
static int expr_check_addr(const char *str)
|
static int expr_check_addr(const char *str)
|
||||||
{
|
{
|
||||||
s_faddr addr = {
|
s_faddr addr = { 0, 0, 0, 0, 0, '\0' };
|
||||||
.inetform = false,
|
|
||||||
.zone = 0,
|
|
||||||
.net = 0,
|
|
||||||
.node = 0,
|
|
||||||
.point = 0,
|
|
||||||
.domain = '\0' };
|
|
||||||
|
|
||||||
#ifdef DEBUG
|
#ifdef DEBUG
|
||||||
char abuf1[BF_MAXADDRSTR+1];
|
char abuf1[BF_MAXADDRSTR+1];
|
||||||
|
@ -200,18 +200,9 @@ static void req_proc_ext(s_freq *freq, char *reqname)
|
|||||||
char srfname[L_tmpnam+5];
|
char srfname[L_tmpnam+5];
|
||||||
char rspname[L_tmpnam+5];
|
char rspname[L_tmpnam+5];
|
||||||
char *comline = NULL;
|
char *comline = NULL;
|
||||||
char *chunk;
|
|
||||||
|
|
||||||
chunk = xmalloc(L_tmpnam+1);
|
if( tmpnam(srfname) )
|
||||||
if ( chunk )
|
|
||||||
{
|
{
|
||||||
getrandname(chunk, L_tmpnam);
|
|
||||||
chunk[L_tmpnam]='\0';
|
|
||||||
strnxcpy(srfname, chunk, L_tmpnam);
|
|
||||||
free(chunk);
|
|
||||||
|
|
||||||
//if( tmpnam(srfname) )
|
|
||||||
//{
|
|
||||||
strncpy(rspname, srfname, L_tmpnam+4);
|
strncpy(rspname, srfname, L_tmpnam+4);
|
||||||
rspname[L_tmpnam+4] = '\0';
|
rspname[L_tmpnam+4] = '\0';
|
||||||
strcat(srfname, ".srf");
|
strcat(srfname, ".srf");
|
||||||
|
@ -116,7 +116,7 @@ static pid_t lock_read_pid(const char *lckname)
|
|||||||
if( len == sizeof(pid) || sscanf(buf, "%d", &pid) != 1 || pid == 0 )
|
if( len == sizeof(pid) || sscanf(buf, "%d", &pid) != 1 || pid == 0 )
|
||||||
{
|
{
|
||||||
/* We found binary lock file? */
|
/* We found binary lock file? */
|
||||||
pid = *((u_int *)buf);
|
pid = *((int *)buf);
|
||||||
#ifndef LOCK_BINARY
|
#ifndef LOCK_BINARY
|
||||||
log("warning: found binary lock file %s", lckname);
|
log("warning: found binary lock file %s", lckname);
|
||||||
#endif
|
#endif
|
||||||
@ -197,15 +197,12 @@ static int lock_create(const char *lckname, const char *tmpname)
|
|||||||
int rc, fd;
|
int rc, fd;
|
||||||
int tries;
|
int tries;
|
||||||
|
|
||||||
|
|
||||||
#ifdef LOCK_BINARY
|
#ifdef LOCK_BINARY
|
||||||
pid_t pid;
|
pid_t pid;
|
||||||
#else
|
#else
|
||||||
char buf[32];
|
char buf[32];
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
ASSERT(lckname != NULL && tmpname != NULL);
|
ASSERT(lckname != NULL && tmpname != NULL);
|
||||||
|
|
||||||
if( (fd = open(tmpname, O_CREAT | O_RDWR, 0644)) < 0 )
|
if( (fd = open(tmpname, O_CREAT | O_RDWR, 0644)) < 0 )
|
||||||
@ -302,6 +299,7 @@ int port_checklock(const char *lockdir, const s_modemport *modemport)
|
|||||||
|
|
||||||
rc = lock_check(lckname);
|
rc = lock_check(lckname);
|
||||||
|
|
||||||
|
if( lckname )
|
||||||
free(lckname);
|
free(lckname);
|
||||||
|
|
||||||
return rc;
|
return rc;
|
||||||
@ -314,24 +312,20 @@ int port_lock(const char *lockdir, const s_modemport *modemport)
|
|||||||
{
|
{
|
||||||
int rc;
|
int rc;
|
||||||
char *lckname;
|
char *lckname;
|
||||||
char *tmpname, *p_tmpname, *chunk;
|
char *tmpname, *p_tmpname;
|
||||||
|
|
||||||
if( *lockdir )
|
if( *lockdir )
|
||||||
tmpname = xstrcpy(lockdir);
|
tmpname = xstrcpy(lockdir);
|
||||||
else
|
else
|
||||||
tmpname = xstrcpy(BFORCE_LOCK_DIR);
|
tmpname = xstrcpy(BFORCE_LOCK_DIR);
|
||||||
|
|
||||||
//tmpname = xstrcat(tmpname, "bfXXXXXX");
|
tmpname = xstrcat(tmpname, "bfXXXXXX");
|
||||||
|
|
||||||
chunk = xmalloc(7);
|
if( (p_tmpname = mktemp(tmpname)) == NULL )
|
||||||
getrandname(chunk,6);
|
{
|
||||||
p_tmpname = string_concat(tmpname, "bf", chunk, '\0');
|
logerr("can't generate unique file name from \"%s\"", tmpname);
|
||||||
|
free(tmpname); return 1;
|
||||||
//if( (p_tmpname = mktemp(tmpname)) == NULL )
|
}
|
||||||
//{
|
|
||||||
// logerr("can't generate unique file name from \"%s\"", tmpname);
|
|
||||||
// free(tmpname); return 1;
|
|
||||||
//}
|
|
||||||
|
|
||||||
if( (lckname = lock_getname(lockdir, modemport)) == NULL )
|
if( (lckname = lock_getname(lockdir, modemport)) == NULL )
|
||||||
{
|
{
|
||||||
@ -346,6 +340,7 @@ int port_lock(const char *lockdir, const s_modemport *modemport)
|
|||||||
|
|
||||||
if( tmpname )
|
if( tmpname )
|
||||||
free(tmpname);
|
free(tmpname);
|
||||||
|
if( lckname )
|
||||||
free(lckname);
|
free(lckname);
|
||||||
|
|
||||||
return rc;
|
return rc;
|
||||||
|
@ -58,7 +58,6 @@ struct debuglevel {
|
|||||||
{ "Daemon", D_DAEMON },
|
{ "Daemon", D_DAEMON },
|
||||||
{ "Free", D_FREE },
|
{ "Free", D_FREE },
|
||||||
{ "24554", D_24554 },
|
{ "24554", D_24554 },
|
||||||
{ "Index", D_INDEX },
|
|
||||||
// { "Daemon", D_DAEMON },
|
// { "Daemon", D_DAEMON },
|
||||||
{ "Full", D_FULL },
|
{ "Full", D_FULL },
|
||||||
{ NULL, 0 }
|
{ NULL, 0 }
|
||||||
@ -145,7 +144,7 @@ int log_close(void)
|
|||||||
|
|
||||||
ASSERT(log_fp);
|
ASSERT(log_fp);
|
||||||
|
|
||||||
if( log_fp != NULL )
|
if( log_fp )
|
||||||
{
|
{
|
||||||
rc = fclose(log_fp);
|
rc = fclose(log_fp);
|
||||||
DEB((D_INFO,"Closing log file."));
|
DEB((D_INFO,"Closing log file."));
|
||||||
@ -544,7 +543,7 @@ void debug(unsigned long what, const char *str, ...)
|
|||||||
debug_open();
|
debug_open();
|
||||||
}
|
}
|
||||||
|
|
||||||
if( debug_fp != NULL )
|
if( debug_fp )
|
||||||
{
|
{
|
||||||
fprintf(debug_fp, "%s ", time_string_log(buf, sizeof(buf), 0));
|
fprintf(debug_fp, "%s ", time_string_log(buf, sizeof(buf), 0));
|
||||||
va_start(args, str);
|
va_start(args, str);
|
||||||
|
@ -243,8 +243,7 @@ void netspool_acknowledge(s_netspool_state *state)
|
|||||||
|
|
||||||
void netspool_end(s_netspool_state *state)
|
void netspool_end(s_netspool_state *state)
|
||||||
{
|
{
|
||||||
int i;
|
sendstr(state->socket, "END satisfied");
|
||||||
i = sendstr(state->socket, "END satisfied");
|
|
||||||
close(state->socket);
|
close(state->socket);
|
||||||
state->state = NS_NOTINIT;
|
state->state = NS_NOTINIT;
|
||||||
}
|
}
|
||||||
|
@ -198,54 +198,6 @@ int nodelist_parse_Txy(s_node *node, const char *xy)
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
/*****************************************************************************
|
|
||||||
* Pointlist string parser
|
|
||||||
*
|
|
||||||
* Arguments:
|
|
||||||
* node put here all obtained information
|
|
||||||
* str pointer to the nodelist string
|
|
||||||
*
|
|
||||||
* Return value:
|
|
||||||
* zero value if string was parsed successfuly, and non-zero if wasn't
|
|
||||||
*/
|
|
||||||
int nodelist_parsepoint(s_node *node, char *str)
|
|
||||||
{
|
|
||||||
char *argv[NODELIST_POSFLAGS+1];
|
|
||||||
char *p;
|
|
||||||
int cnt;
|
|
||||||
|
|
||||||
DEB((D_NODELIST,"nodelist: parsepoint %s", str));
|
|
||||||
|
|
||||||
cnt = string_parse(argv, NODELIST_POSFLAGS+1, str, ',');
|
|
||||||
if( cnt < NODELIST_POSFLAGS-1 )
|
|
||||||
return -1;
|
|
||||||
DEB((D_NODELIST,"nodelist: parsepoint OK: %d", cnt));
|
|
||||||
strnxcpy(node->name, argv[NODELIST_POSNAME], sizeof(node->name));
|
|
||||||
DEB((D_NODELIST,"nodelist: parsepoint sys: %s", node->name));
|
|
||||||
strnxcpy(node->location, argv[NODELIST_POSLOCATION], sizeof(node->location));
|
|
||||||
DEB((D_NODELIST,"nodelist: parsepoint loc: %s", node->location));
|
|
||||||
strnxcpy(node->sysop, argv[NODELIST_POSSYSOP], sizeof(node->sysop));
|
|
||||||
DEB((D_NODELIST,"nodelist: parsepoint zyz: %s", node->sysop));
|
|
||||||
strnxcpy(node->phone, argv[NODELIST_POSPHONE], sizeof(node->phone));
|
|
||||||
DEB((D_NODELIST,"nodelist: parsepoint pho: %s", node->phone));
|
|
||||||
if (argv[NODELIST_POSFLAGS])
|
|
||||||
strnxcpy(node->flags, argv[NODELIST_POSFLAGS], sizeof(node->flags));
|
|
||||||
DEB((D_NODELIST,"nodelist: parsepoint fl: %s", node->flags));
|
|
||||||
if (argv[NODELIST_POSSPEED])
|
|
||||||
node->speed = atoi(argv[NODELIST_POSSPEED]);
|
|
||||||
DEB((D_NODELIST, "nodelist: Parsed common values SYS: %s, ZYZ: %s, LOC: %s, PHONE: %s", node->name, node->sysop, node->location, node->phone));
|
|
||||||
/*
|
|
||||||
* Replace all '_' by space character
|
|
||||||
*/
|
|
||||||
string_replchar(node->name, '_', ' ');
|
|
||||||
string_replchar(node->location, '_', ' ');
|
|
||||||
string_replchar(node->sysop, '_', ' ');
|
|
||||||
node->keyword = KEYWORD_POINT;
|
|
||||||
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/*****************************************************************************
|
/*****************************************************************************
|
||||||
* Nodelist string parser
|
* Nodelist string parser
|
||||||
*
|
*
|
||||||
@ -260,7 +212,7 @@ int nodelist_parsestring(s_node *node, char *str)
|
|||||||
{
|
{
|
||||||
char *argv[NODELIST_POSFLAGS+1];
|
char *argv[NODELIST_POSFLAGS+1];
|
||||||
char *p;
|
char *p;
|
||||||
DEB((D_NODELIST,"nodelist: parsestring %s", str));
|
|
||||||
if( string_parse(argv, NODELIST_POSFLAGS+1, str, ',') != NODELIST_POSFLAGS+1 )
|
if( string_parse(argv, NODELIST_POSFLAGS+1, str, ',') != NODELIST_POSFLAGS+1 )
|
||||||
return -1;
|
return -1;
|
||||||
|
|
||||||
@ -719,7 +671,6 @@ int nodelist_lookup_string(char *buffer, size_t buflen, s_faddr addr)
|
|||||||
*/
|
*/
|
||||||
for( ptrl = conf_first(cf_nodelist); ptrl; ptrl = conf_next(ptrl) )
|
for( ptrl = conf_first(cf_nodelist); ptrl; ptrl = conf_next(ptrl) )
|
||||||
{
|
{
|
||||||
DEB((D_NODELIST,"nl_lookup_string: using %s",ptrl->d.falist.what));
|
|
||||||
if( ftn_addrcomp_mask(addr, ptrl->d.falist.addr) == 0 )
|
if( ftn_addrcomp_mask(addr, ptrl->d.falist.addr) == 0 )
|
||||||
{
|
{
|
||||||
if( (nlp = nodelist_open(ndldir, ptrl->d.falist.what, NODELIST_READ)) )
|
if( (nlp = nodelist_open(ndldir, ptrl->d.falist.what, NODELIST_READ)) )
|
||||||
@ -750,25 +701,11 @@ int nodelist_lookup(s_node *node, s_faddr addr)
|
|||||||
if( nodelist_lookup_string(buf, sizeof(buf), addr) == 0 )
|
if( nodelist_lookup_string(buf, sizeof(buf), addr) == 0 )
|
||||||
{
|
{
|
||||||
node->listed = TRUE;
|
node->listed = TRUE;
|
||||||
if (addr.point == 0)
|
|
||||||
{
|
|
||||||
if( nodelist_parsestring(node, buf) == -1 )
|
if( nodelist_parsestring(node, buf) == -1 )
|
||||||
{
|
{
|
||||||
DEB((D_NODELIST,"invalid nodelist string for address %s",
|
|
||||||
ftn_addrstr(abuf, addr)));
|
|
||||||
log("invalid nodelist string for address %s",
|
log("invalid nodelist string for address %s",
|
||||||
ftn_addrstr(abuf, addr));
|
ftn_addrstr(abuf, addr));
|
||||||
}
|
}
|
||||||
} else {
|
|
||||||
if ( nodelist_parsepoint(node, buf) == -1 )
|
|
||||||
{
|
|
||||||
DEB((D_NODELIST,"invalid nodelist string for address %s",
|
|
||||||
ftn_addrstr(abuf, addr)));
|
|
||||||
log("invalid nodelist string for address %s",
|
|
||||||
ftn_addrstr(abuf, addr));
|
|
||||||
}
|
|
||||||
node->addr = addr;
|
|
||||||
}
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -156,7 +156,7 @@ int exec_redirect_descriptor(int desc, const char *fname, int flags)
|
|||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
return 0; //cppcheck-suppress resourceLeak
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
int exec_command(s_exec_options *eopt)
|
int exec_command(s_exec_options *eopt)
|
||||||
|
@ -46,7 +46,7 @@ char *out_getname_4d(s_faddr addr)
|
|||||||
else
|
else
|
||||||
sprintf(buf, "%04x%04x.pnt/%08x", addr.net, addr.node, addr.point);
|
sprintf(buf, "%04x%04x.pnt/%08x", addr.net, addr.node, addr.point);
|
||||||
|
|
||||||
dest = string_concat(p_outbound, buf, '\0');
|
dest = string_concat(p_outbound, buf, NULL);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
@ -55,7 +55,7 @@ char *out_getname_4d(s_faddr addr)
|
|||||||
else
|
else
|
||||||
sprintf(buf, ".%03x/%04x%04x.pnt/%08x", addr.zone, addr.net, addr.node, addr.point);
|
sprintf(buf, ".%03x/%04x%04x.pnt/%08x", addr.zone, addr.net, addr.node, addr.point);
|
||||||
|
|
||||||
dest = string_concat(out_root, out_main, buf, '\0');
|
dest = string_concat(out_root, out_main, buf, NULL);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -83,7 +83,7 @@ char *out_getname_domain(s_faddr addr)
|
|||||||
else
|
else
|
||||||
sprintf(buf, "%04x%04x.pnt/%08x", addr.net, addr.node, addr.point);
|
sprintf(buf, "%04x%04x.pnt/%08x", addr.net, addr.node, addr.point);
|
||||||
|
|
||||||
dest = string_concat(cfptr->d.domain.path, buf, '\0');
|
dest = string_concat(cfptr->d.domain.path, buf, NULL);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -102,7 +102,7 @@ char *out_getname_amiga(s_faddr addr)
|
|||||||
if( p_amigaoutbound && *p_amigaoutbound )
|
if( p_amigaoutbound && *p_amigaoutbound )
|
||||||
{
|
{
|
||||||
sprintf(buf, "%d.%d.%d.%d", addr.zone, addr.net, addr.node, addr.point);
|
sprintf(buf, "%d.%d.%d.%d", addr.zone, addr.net, addr.node, addr.point);
|
||||||
dest = string_concat(p_amigaoutbound, buf, '\0');
|
dest = string_concat(p_amigaoutbound, buf, NULL);
|
||||||
}
|
}
|
||||||
|
|
||||||
return dest;
|
return dest;
|
||||||
|
@ -155,7 +155,7 @@ static int out_scan_bso_dir(s_outbound_callback_data *callback,
|
|||||||
|
|
||||||
if( alst || !fa_list )
|
if( alst || !fa_list )
|
||||||
{
|
{
|
||||||
p = string_concat(path, dirent->d_name, "/", '\0');
|
p = string_concat(path, dirent->d_name, "/", NULL);
|
||||||
out_scan_bso_dir(callback, fa_list, addr, p, 1);
|
out_scan_bso_dir(callback, fa_list, addr, p, 1);
|
||||||
if( p ) { free(p); p = NULL; }
|
if( p ) { free(p); p = NULL; }
|
||||||
}
|
}
|
||||||
@ -178,7 +178,7 @@ static int out_scan_bso_dir(s_outbound_callback_data *callback,
|
|||||||
|
|
||||||
if( alst || !fa_list )
|
if( alst || !fa_list )
|
||||||
{
|
{
|
||||||
callback->path = string_concat(path, dirent->d_name, '\0');
|
callback->path = string_concat(path, dirent->d_name, NULL);
|
||||||
callback->addr = *addr;
|
callback->addr = *addr;
|
||||||
callback->type = OUTB_TYPE_BSO;
|
callback->type = OUTB_TYPE_BSO;
|
||||||
callback->flavor = -1;
|
callback->flavor = -1;
|
||||||
@ -250,7 +250,7 @@ static int out_scan_bso(s_outbound_callback_data *callback,
|
|||||||
|
|
||||||
if( alst || mailfor == NULL )
|
if( alst || mailfor == NULL )
|
||||||
{
|
{
|
||||||
newpath = string_concat(out_root, dirent->d_name, "/", '\0');
|
newpath = string_concat(out_root, dirent->d_name, "/", NULL);
|
||||||
out_scan_bso_dir(callback, mailfor, &addr, newpath, 0);
|
out_scan_bso_dir(callback, mailfor, &addr, newpath, 0);
|
||||||
free(newpath);
|
free(newpath);
|
||||||
}
|
}
|
||||||
@ -296,7 +296,7 @@ static int out_scan_fbox_dir(s_outbound_callback_data *callback,
|
|||||||
|
|
||||||
while( (dirent = readdir(dir)) )
|
while( (dirent = readdir(dir)) )
|
||||||
{
|
{
|
||||||
callback->path = string_concat(path, dirent->d_name, '\0');
|
callback->path = string_concat(path, dirent->d_name, NULL);
|
||||||
if( is_regfile(callback->path) )
|
if( is_regfile(callback->path) )
|
||||||
{
|
{
|
||||||
callback->addr = addr;
|
callback->addr = addr;
|
||||||
@ -340,7 +340,7 @@ static int out_scan_lbox(s_outbound_callback_data *callback,
|
|||||||
alst = alst->next );
|
alst = alst->next );
|
||||||
if( alst )
|
if( alst )
|
||||||
{
|
{
|
||||||
newpath = string_concat(path, dirent->d_name, "/", '\0');
|
newpath = string_concat(path, dirent->d_name, "/", NULL);
|
||||||
(void)out_scan_fbox_dir(callback, newpath, addr, FLAVOR_HOLD);
|
(void)out_scan_fbox_dir(callback, newpath, addr, FLAVOR_HOLD);
|
||||||
free(newpath);
|
free(newpath);
|
||||||
}
|
}
|
||||||
@ -348,7 +348,7 @@ static int out_scan_lbox(s_outbound_callback_data *callback,
|
|||||||
else
|
else
|
||||||
{
|
{
|
||||||
/* Scan all fileboxes */
|
/* Scan all fileboxes */
|
||||||
newpath = string_concat(path, dirent->d_name, "/", '\0');
|
newpath = string_concat(path, dirent->d_name, "/", NULL);
|
||||||
(void)out_scan_fbox_dir(callback, newpath, addr, FLAVOR_HOLD);
|
(void)out_scan_fbox_dir(callback, newpath, addr, FLAVOR_HOLD);
|
||||||
free(newpath);
|
free(newpath);
|
||||||
}
|
}
|
||||||
@ -424,7 +424,7 @@ static int out_scan_aso(s_outbound_callback_data *callback,
|
|||||||
|
|
||||||
if( alst || !mailfor )
|
if( alst || !mailfor )
|
||||||
{
|
{
|
||||||
callback->path = string_concat(path, dirent->d_name, '\0');
|
callback->path = string_concat(path, dirent->d_name, NULL);
|
||||||
callback->addr = addr;
|
callback->addr = addr;
|
||||||
callback->type = OUTB_TYPE_ASO;
|
callback->type = OUTB_TYPE_ASO;
|
||||||
callback->flavor = -1;
|
callback->flavor = -1;
|
||||||
|
@ -469,10 +469,8 @@ case 2:
|
|||||||
|
|
||||||
case 3: // send password on outgoing or pw confirmation on incoming
|
case 3: // send password on outgoing or pw confirmation on incoming
|
||||||
// special empty password is sent if there is no password for the remote addr
|
// special empty password is sent if there is no password for the remote addr
|
||||||
if (bstate->mode==bmode_incoming_handshake)
|
if (bstate->mode==bmode_incoming_handshake) {
|
||||||
{
|
if (bstate->password_received) {
|
||||||
if (bstate->password_received)
|
|
||||||
{
|
|
||||||
DEB((D_24554, "send OK, password verified"));
|
DEB((D_24554, "send OK, password verified"));
|
||||||
buf[0] = BPMSG_OK;
|
buf[0] = BPMSG_OK;
|
||||||
*block_type = BINKP_BLK_CMD;
|
*block_type = BINKP_BLK_CMD;
|
||||||
@ -483,10 +481,8 @@ case 3: // send password on outgoing or pw confirmation on incoming
|
|||||||
DEB((D_24554, "waiting for password from remote"));
|
DEB((D_24554, "waiting for password from remote"));
|
||||||
return 0; // nothing to send
|
return 0; // nothing to send
|
||||||
}
|
}
|
||||||
else
|
else if (bstate->mode==bmode_outgoing_handshake) {
|
||||||
{
|
if (!bstate->address_established) {
|
||||||
if (!bstate->address_established)
|
|
||||||
{
|
|
||||||
DEB((D_24554, "address not received still"));
|
DEB((D_24554, "address not received still"));
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
@ -495,42 +491,35 @@ case 3: // send password on outgoing or pw confirmation on incoming
|
|||||||
buf[0] = BPMSG_PWD;
|
buf[0] = BPMSG_PWD;
|
||||||
*block_type = BINKP_BLK_CMD;
|
*block_type = BINKP_BLK_CMD;
|
||||||
|
|
||||||
if( bstate->local_data->passwd[0] == '\0' )
|
if( bstate->local_data->passwd[0] == '\0' ) {
|
||||||
{
|
|
||||||
*block_length = 1 + sprintf(buf+1, "-");
|
*block_length = 1 + sprintf(buf+1, "-");
|
||||||
}
|
}
|
||||||
else
|
else if( bstate->remote_data->options & BINKP_OPT_MD5 ) {
|
||||||
if( bstate->remote_data->options & BINKP_OPT_MD5 )
|
|
||||||
{
|
|
||||||
char digest_bin[16];
|
char digest_bin[16];
|
||||||
char digest_hex[33];
|
char digest_hex[33];
|
||||||
|
|
||||||
if(bstate->remote_data->challenge_length==0)
|
if(bstate->remote_data->challenge_length==0) {
|
||||||
{
|
|
||||||
DEB((D_24554, "waiting for challenge"));
|
DEB((D_24554, "waiting for challenge"));
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
md5_cram_get(bstate->local_data->passwd, bstate->remote_data->challenge,
|
||||||
md5_cram_get(bstate->local_data->passwd,
|
bstate->remote_data->challenge_length, digest_bin);
|
||||||
bstate->remote_data->challenge,
|
|
||||||
bstate->remote_data->challenge_length,
|
|
||||||
digest_bin);
|
|
||||||
|
|
||||||
/* Encode digest to the hex string */
|
/* Encode digest to the hex string */
|
||||||
string_bin_to_hex(digest_hex, digest_bin, 16);
|
string_bin_to_hex(digest_hex, digest_bin, 16);
|
||||||
|
|
||||||
*block_length = 1 + sprintf(buf+1,
|
*block_length = 1 + sprintf(buf+1, "CRAM-MD5-%s", digest_hex);
|
||||||
"CRAM-MD5-%s", digest_hex);
|
|
||||||
}
|
}
|
||||||
else
|
else {
|
||||||
{
|
|
||||||
*block_length = 1 + sprintf(buf+1, "%s", bstate->local_data->passwd);
|
*block_length = 1 + sprintf(buf+1, "%s", bstate->local_data->passwd);
|
||||||
}
|
}
|
||||||
bstate->phase += 1;
|
bstate->phase += 1;
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
else {
|
||||||
|
log("impossible mode");
|
||||||
return -1;
|
return -1;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
case 4:
|
case 4:
|
||||||
@ -604,7 +593,7 @@ else if (bstate->mode == bmode_transfer) {
|
|||||||
case 1: //send M_FILE - M_GET forcibly sets this phase. M_GET must open needed file
|
case 1: //send M_FILE - M_GET forcibly sets this phase. M_GET must open needed file
|
||||||
DEB((D_24554, "send M_FILE"));
|
DEB((D_24554, "send M_FILE"));
|
||||||
buf[0] = BPMSG_FILE;
|
buf[0] = BPMSG_FILE;
|
||||||
*block_length = 1+sprintf(buf+1, "%s %zu %lu 0", bstate->pi->send->net_name,
|
*block_length = 1+sprintf(buf+1, "%s %ld %ld 0", bstate->pi->send->net_name,
|
||||||
bstate->pi->send->bytes_total, bstate->pi->send->mod_time);
|
bstate->pi->send->bytes_total, bstate->pi->send->mod_time);
|
||||||
DEB((D_24554, "M_FILE: %s", buf+1));
|
DEB((D_24554, "M_FILE: %s", buf+1));
|
||||||
*block_type = BINKP_BLK_CMD;
|
*block_type = BINKP_BLK_CMD;
|
||||||
@ -710,11 +699,12 @@ case BPMSG_ADR: /* List of addresses */
|
|||||||
if (bstate->address_established) {
|
if (bstate->address_established) {
|
||||||
PROTO_ERROR("remote tries to change address");
|
PROTO_ERROR("remote tries to change address");
|
||||||
}
|
}
|
||||||
if( bstate->extracmd[0] != (char)0xFF ) return 0; // suspend !!!
|
if( bstate->extracmd[0] != (char)-1 ) return 0; // suspend !!!
|
||||||
binkp_process_ADR(buf+1);
|
binkp_process_ADR(buf+1);
|
||||||
|
|
||||||
if( !state.n_remoteaddr ) {
|
if( !state.n_remoteaddr ) {
|
||||||
log("error: remote did not supplied any addresses");
|
log("error: remote did not supplied any addresses");
|
||||||
|
if( bstate->extracmd[0] != (char)-1 ) return 0; // suspend
|
||||||
bstate->extracmd[0] = BPMSG_BSY;
|
bstate->extracmd[0] = BPMSG_BSY;
|
||||||
strcpy(bstate->extracmd+1, "No addresses was presented");
|
strcpy(bstate->extracmd+1, "No addresses was presented");
|
||||||
bstate->extraislast = true;
|
bstate->extraislast = true;
|
||||||
@ -793,7 +783,7 @@ case BPMSG_PWD: /* Session password */
|
|||||||
// lock addresses
|
// lock addresses
|
||||||
if( session_addrs_lock(state.remoteaddrs, state.n_remoteaddr) ) {
|
if( session_addrs_lock(state.remoteaddrs, state.n_remoteaddr) ) {
|
||||||
log("error locking addresses of the remote");
|
log("error locking addresses of the remote");
|
||||||
if( bstate->extracmd[0] != (char)0xFF ) return 0; // suspend if extra is occupied
|
if( bstate->extracmd[0] != (char)-1 ) return 0; // suspend if extra is occupied
|
||||||
bstate->extracmd[0] = BPMSG_BSY;
|
bstate->extracmd[0] = BPMSG_BSY;
|
||||||
strcpy(bstate->extracmd+1, "All addresses are busy");
|
strcpy(bstate->extracmd+1, "All addresses are busy");
|
||||||
bstate->extraislast = true;
|
bstate->extraislast = true;
|
||||||
@ -833,7 +823,7 @@ case BPMSG_FILE: /* File information */
|
|||||||
DEB((D_24554, "no, skipping; TODO: accept it"));
|
DEB((D_24554, "no, skipping; TODO: accept it"));
|
||||||
if( bstate->extracmd[0] != (char)-1 ) return 0;
|
if( bstate->extracmd[0] != (char)-1 ) return 0;
|
||||||
bstate->extracmd[0] = BPMSG_SKIP;
|
bstate->extracmd[0] = BPMSG_SKIP;
|
||||||
sprintf(bstate->extracmd+1, "%s %zu %lu %zu", recvfi.fn, recvfi.sz, recvfi.tm, recvfi.offs);
|
sprintf(bstate->extracmd+1, "%s %ld %ld %ld", recvfi.fn, recvfi.sz, recvfi.tm, recvfi.offs);
|
||||||
bstate->extraislast = false;
|
bstate->extraislast = false;
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
@ -880,7 +870,7 @@ case 2:
|
|||||||
default:
|
default:
|
||||||
PROTO_ERROR("p_rx_fopen_error");
|
PROTO_ERROR("p_rx_fopen_error");
|
||||||
}
|
}
|
||||||
// PROTO_ERROR("never should get here");
|
PROTO_ERROR("never should get here");
|
||||||
|
|
||||||
case BPMSG_OK: /* Password was acknowleged (data ignored) */
|
case BPMSG_OK: /* Password was acknowleged (data ignored) */
|
||||||
DEB((D_24554, "received M_OK len=%d", block_length));
|
DEB((D_24554, "received M_OK len=%d", block_length));
|
||||||
@ -889,7 +879,7 @@ case BPMSG_OK: /* Password was acknowleged (data ignored) */
|
|||||||
}
|
}
|
||||||
if (session_addrs_lock(state.remoteaddrs, state.n_remoteaddr)) {
|
if (session_addrs_lock(state.remoteaddrs, state.n_remoteaddr)) {
|
||||||
log("error: unable to lock");
|
log("error: unable to lock");
|
||||||
if (bstate->extracmd[0]!= (char)0xFF) return 0;
|
if (bstate->extracmd[0]!= (char)-1) return 0;
|
||||||
bstate->extracmd[0] = BPMSG_BSY;
|
bstate->extracmd[0] = BPMSG_BSY;
|
||||||
strcpy(bstate->extracmd+1, "All addresses are busy");
|
strcpy(bstate->extracmd+1, "All addresses are busy");
|
||||||
bstate->extraislast = true;
|
bstate->extraislast = true;
|
||||||
@ -999,7 +989,7 @@ case BPMSG_GET: /* Get a file from offset */
|
|||||||
}
|
}
|
||||||
DEB((D_24554, "M_GET file %s size %d time %d offset %d", getfi.fn, getfi.sz, getfi.tm, getfi.offs));
|
DEB((D_24554, "M_GET file %s size %d time %d offset %d", getfi.fn, getfi.sz, getfi.tm, getfi.offs));
|
||||||
|
|
||||||
if (bstate->extracmd[0] != (char)0xFF) return 0;
|
if (bstate->extracmd[0] != (char)-1) return 0;
|
||||||
|
|
||||||
if (bstate->pi->send) if (p_compfinfo(bstate->pi->send, getfi.fn, getfi.sz, getfi.tm)==0) {
|
if (bstate->pi->send) if (p_compfinfo(bstate->pi->send, getfi.fn, getfi.sz, getfi.tm)==0) {
|
||||||
DEB((D_24554, "M_GET for currently transmitted file"));
|
DEB((D_24554, "M_GET for currently transmitted file"));
|
||||||
@ -1089,7 +1079,7 @@ case BINKP_BLK_DATA:
|
|||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (bstate->extracmd[0] != (char)0xFF) return 0;
|
if (bstate->extracmd[0] != (char)-1) return 0;
|
||||||
|
|
||||||
long int n;
|
long int n;
|
||||||
n = p_rx_writefile(buf, block_length, bstate->pi);
|
n = p_rx_writefile(buf, block_length, bstate->pi);
|
||||||
|
@ -296,8 +296,8 @@ get_next_file:
|
|||||||
pi->send_left_num -= 1;
|
pi->send_left_num -= 1;
|
||||||
pi->send_left_size -= ptrl->size;
|
pi->send_left_size -= ptrl->size;
|
||||||
|
|
||||||
//if( pi->send_left_size < 0 )
|
if( pi->send_left_size < 0 )
|
||||||
// pi->send_left_size = 0;
|
pi->send_left_size = 0;
|
||||||
if( pi->send_left_num < 0 )
|
if( pi->send_left_num < 0 )
|
||||||
pi->send_left_num = 0;
|
pi->send_left_num = 0;
|
||||||
|
|
||||||
@ -1053,7 +1053,7 @@ int p_rx_fopen(s_protinfo *pi, char *fn, size_t sz, time_t tm, mode_t mode)
|
|||||||
/*
|
/*
|
||||||
* Check, there is enough space in our inbound
|
* Check, there is enough space in our inbound
|
||||||
*/
|
*/
|
||||||
if ( strcmp(openmode, "a") == 0 ) needed_bytes_total = minfree + pi->recv->bytes_total - pi->recv->bytes_skipped;
|
if (openmode == "a") needed_bytes_total = minfree + pi->recv->bytes_total - pi->recv->bytes_skipped;
|
||||||
else needed_bytes_total = minfree + pi->recv->bytes_total;
|
else needed_bytes_total = minfree + pi->recv->bytes_total;
|
||||||
|
|
||||||
if( minfree > 0 && getfreespace(state.inbound) < needed_bytes_total )
|
if( minfree > 0 && getfreespace(state.inbound) < needed_bytes_total )
|
||||||
|
@ -449,8 +449,8 @@ static int sm_rx_waitseq(s_rx_emsidat *d)
|
|||||||
static int sm_rx_getdat(s_rx_emsidat *d)
|
static int sm_rx_getdat(s_rx_emsidat *d)
|
||||||
{
|
{
|
||||||
int rc = 0;
|
int rc = 0;
|
||||||
u_int pos = 0;
|
int pos = 0;
|
||||||
u_int emsi_len = 0;
|
int emsi_len = 0;
|
||||||
short unsigned ourcrc;
|
short unsigned ourcrc;
|
||||||
short unsigned remcrc;
|
short unsigned remcrc;
|
||||||
char *emsi_dat = NULL;
|
char *emsi_dat = NULL;
|
||||||
@ -599,7 +599,7 @@ void emsi_set_sysinfo(s_emsi *emsi, s_emsi *remote_emsi, int hrc,
|
|||||||
s_cval_entry *hide_ptr;
|
s_cval_entry *hide_ptr;
|
||||||
s_faddr *primary = NULL;
|
s_faddr *primary = NULL;
|
||||||
char xdt[EMSI_MAXXDATETIME+1];
|
char xdt[EMSI_MAXXDATETIME+1];
|
||||||
time_t xtm = 0;
|
time_t xtm;
|
||||||
|
|
||||||
const long options = conf_options(cf_options);
|
const long options = conf_options(cf_options);
|
||||||
const long speed = conf_number(cf_max_speed);
|
const long speed = conf_number(cf_max_speed);
|
||||||
|
@ -65,7 +65,7 @@ static char *add_str(char *source, const char *add)
|
|||||||
{
|
{
|
||||||
len += 2;
|
len += 2;
|
||||||
dest = (char *)xrealloc(dest, len);
|
dest = (char *)xrealloc(dest, len);
|
||||||
sprintf(&dest[pos], "\\%02hhu", *(unsigned char*)add);
|
sprintf(&dest[pos], "\\%02hd", *(unsigned char*)add);
|
||||||
add += 1;
|
add += 1;
|
||||||
pos += 3;
|
pos += 3;
|
||||||
}
|
}
|
||||||
@ -200,12 +200,12 @@ char *emsi_createdat(s_emsi *emsi)
|
|||||||
if( emsi->compcodes.NCP ) tmp = add_str(tmp, "NCP,");
|
if( emsi->compcodes.NCP ) tmp = add_str(tmp, "NCP,");
|
||||||
} else {
|
} else {
|
||||||
ord = xmalloc(4);
|
ord = xmalloc(4);
|
||||||
if (ord)
|
|
||||||
{
|
|
||||||
DEB((D_HSHAKE,"Protocol order found: %s", p_order));
|
DEB((D_HSHAKE,"Protocol order found: %s", p_order));
|
||||||
ord = strncpy(ord, p_order,3);
|
ord = strncpy(ord, p_order,3);
|
||||||
ord[3] = '\0';
|
ord[3] = '\0';
|
||||||
DEB((D_HSHAKE,"Protocol order chunk: %s", ord));
|
DEB((D_HSHAKE,"Protocol order chunk: %s", ord));
|
||||||
|
if ( ord == NULL )
|
||||||
|
DEB((D_HSHAKE,"EMSI create order error"));
|
||||||
if ( !strcmp(ord,"HYD") )
|
if ( !strcmp(ord,"HYD") )
|
||||||
if ( emsi->compcodes.HYD) tmp = add_str(tmp, "HYD,");
|
if ( emsi->compcodes.HYD) tmp = add_str(tmp, "HYD,");
|
||||||
if ( !strcmp(ord,"JAN") )
|
if ( !strcmp(ord,"JAN") )
|
||||||
@ -230,6 +230,8 @@ char *emsi_createdat(s_emsi *emsi)
|
|||||||
ord = strncpy(ord, p_order,3);
|
ord = strncpy(ord, p_order,3);
|
||||||
ord[3] = '\0';
|
ord[3] = '\0';
|
||||||
DEB((D_HSHAKE,"Protocol order chunk: %s", ord));
|
DEB((D_HSHAKE,"Protocol order chunk: %s", ord));
|
||||||
|
if ( ord == NULL )
|
||||||
|
DEB((D_HSHAKE,"EMSI create order error"));
|
||||||
if ( !strcmp(ord,"HYD") )
|
if ( !strcmp(ord,"HYD") )
|
||||||
if ( emsi->compcodes.HYD) tmp = add_str(tmp, "HYD,");
|
if ( emsi->compcodes.HYD) tmp = add_str(tmp, "HYD,");
|
||||||
if ( !strcmp(ord,"JAN") )
|
if ( !strcmp(ord,"JAN") )
|
||||||
@ -253,7 +255,6 @@ char *emsi_createdat(s_emsi *emsi)
|
|||||||
}
|
}
|
||||||
free(ord);
|
free(ord);
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
if( emsi->compcodes.FRQ ) tmp = add_str(tmp, "FRQ,");
|
if( emsi->compcodes.FRQ ) tmp = add_str(tmp, "FRQ,");
|
||||||
if( emsi->compcodes.NRQ ) tmp = add_str(tmp, "NRQ,");
|
if( emsi->compcodes.NRQ ) tmp = add_str(tmp, "NRQ,");
|
||||||
@ -451,7 +452,7 @@ char *emsi_createdat(s_emsi *emsi)
|
|||||||
static char *get_field(char **str, char from, char to)
|
static char *get_field(char **str, char from, char to)
|
||||||
{
|
{
|
||||||
char *dst, *src, *dest = NULL;
|
char *dst, *src, *dest = NULL;
|
||||||
u_int ch;
|
int ch;
|
||||||
|
|
||||||
src = *str;
|
src = *str;
|
||||||
|
|
||||||
@ -554,7 +555,7 @@ int emsi_parsedat(char *emsi_dat, s_emsi *emsi)
|
|||||||
|
|
||||||
/* password */
|
/* password */
|
||||||
if( (p=get_field(&emsi_dat, '{', '}')) == NULL ) return(1);
|
if( (p=get_field(&emsi_dat, '{', '}')) == NULL ) return(1);
|
||||||
if( *p ) strnxcpy(emsi->passwd, p, sizeof(emsi->passwd));
|
if( p && *p ) strnxcpy(emsi->passwd, p, sizeof(emsi->passwd));
|
||||||
|
|
||||||
/* link codes */
|
/* link codes */
|
||||||
if( (p=get_field(&emsi_dat, '{', '}')) == NULL ) return(1);
|
if( (p=get_field(&emsi_dat, '{', '}')) == NULL ) return(1);
|
||||||
@ -669,22 +670,21 @@ int emsi_parsedat(char *emsi_dat, s_emsi *emsi)
|
|||||||
else if( !strcmp(p, "HFR") ) emsi->compcodes.HFR = 1;
|
else if( !strcmp(p, "HFR") ) emsi->compcodes.HFR = 1;
|
||||||
}
|
}
|
||||||
/* Delete last comma from order list */
|
/* Delete last comma from order list */
|
||||||
if (strlen(emsi->proto_order) > 0)
|
|
||||||
emsi->proto_order[strlen(emsi->proto_order)-1] = '\0';
|
emsi->proto_order[strlen(emsi->proto_order)-1] = '\0';
|
||||||
DEB((D_HSHAKE,"Ordered compcodes: %s",emsi->proto_order));
|
DEB((D_HSHAKE,"Ordered compcodes: %s",emsi->proto_order));
|
||||||
|
|
||||||
/* mailer information */
|
/* mailer information */
|
||||||
if( (p=get_field(&emsi_dat, '{', '}')) == NULL ) return(1);
|
if( (p=get_field(&emsi_dat, '{', '}')) == NULL ) return(1);
|
||||||
if( *p ) strnxcpy(emsi->m_pid, p, sizeof(emsi->m_pid));
|
if( p && *p ) strnxcpy(emsi->m_pid, p, sizeof(emsi->m_pid));
|
||||||
|
|
||||||
if( (p=get_field(&emsi_dat, '{', '}')) == NULL ) return(1);
|
if( (p=get_field(&emsi_dat, '{', '}')) == NULL ) return(1);
|
||||||
if( *p ) strnxcpy(emsi->m_name, p, sizeof(emsi->m_name));
|
if( p && *p ) strnxcpy(emsi->m_name, p, sizeof(emsi->m_name));
|
||||||
|
|
||||||
if( (p=get_field(&emsi_dat, '{', '}')) == NULL ) return(1);
|
if( (p=get_field(&emsi_dat, '{', '}')) == NULL ) return(1);
|
||||||
if( *p ) strnxcpy(emsi->m_ver, p, sizeof(emsi->m_ver));
|
if( p && *p ) strnxcpy(emsi->m_ver, p, sizeof(emsi->m_ver));
|
||||||
|
|
||||||
if( (p=get_field(&emsi_dat, '{', '}')) == NULL ) return(1);
|
if( (p=get_field(&emsi_dat, '{', '}')) == NULL ) return(1);
|
||||||
if( *p ) strnxcpy(emsi->m_reg, p, sizeof(emsi->m_reg));;
|
if( p && *p ) strnxcpy(emsi->m_reg, p, sizeof(emsi->m_reg));;
|
||||||
}
|
}
|
||||||
else if( strcmp(tmp, "IDENT") == 0 )
|
else if( strcmp(tmp, "IDENT") == 0 )
|
||||||
{
|
{
|
||||||
@ -692,17 +692,17 @@ int emsi_parsedat(char *emsi_dat, s_emsi *emsi)
|
|||||||
|
|
||||||
if( (tmp=get_field(&emsi_dat, '{', '}')) == NULL ) return(1);
|
if( (tmp=get_field(&emsi_dat, '{', '}')) == NULL ) return(1);
|
||||||
if( (p=get_field(&tmp, '[', ']')) == NULL ) return(1);
|
if( (p=get_field(&tmp, '[', ']')) == NULL ) return(1);
|
||||||
if( *p ) strnxcpy(emsi->sname, p, sizeof(emsi->sname));
|
if( p && *p ) strnxcpy(emsi->sname, p, sizeof(emsi->sname));
|
||||||
if( (p=get_field(&tmp, '[', ']')) == NULL ) return(1);
|
if( (p=get_field(&tmp, '[', ']')) == NULL ) return(1);
|
||||||
if( *p ) strnxcpy(emsi->location, p, sizeof(emsi->location));
|
if( p && *p ) strnxcpy(emsi->location, p, sizeof(emsi->location));
|
||||||
if( (p=get_field(&tmp, '[', ']')) == NULL ) return(1);
|
if( (p=get_field(&tmp, '[', ']')) == NULL ) return(1);
|
||||||
if( *p ) strnxcpy(emsi->sysop, p, sizeof(emsi->sysop));
|
if( p && *p ) strnxcpy(emsi->sysop, p, sizeof(emsi->sysop));
|
||||||
if( (p=get_field(&tmp, '[', ']')) == NULL ) return(1);
|
if( (p=get_field(&tmp, '[', ']')) == NULL ) return(1);
|
||||||
if( *p ) strnxcpy(emsi->phone, p, sizeof(emsi->phone));;
|
if( p && *p ) strnxcpy(emsi->phone, p, sizeof(emsi->phone));;
|
||||||
if( (p=get_field(&tmp, '[', ']')) == NULL ) return(1);
|
if( (p=get_field(&tmp, '[', ']')) == NULL ) return(1);
|
||||||
if( *p ) sscanf(p, "%d", &emsi->speed);
|
if( p && *p ) sscanf(p, "%d", &emsi->speed);
|
||||||
if( (p=get_field(&tmp, '[', ']')) == NULL ) return(1);
|
if( (p=get_field(&tmp, '[', ']')) == NULL ) return(1);
|
||||||
if( *p ) strnxcpy(emsi->flags, p, sizeof(emsi->flags));
|
if( p && *p ) strnxcpy(emsi->flags, p, sizeof(emsi->flags));
|
||||||
}
|
}
|
||||||
else if( strcmp(tmp, "TRX#") == 0 )
|
else if( strcmp(tmp, "TRX#") == 0 )
|
||||||
{
|
{
|
||||||
@ -720,9 +720,9 @@ int emsi_parsedat(char *emsi_dat, s_emsi *emsi)
|
|||||||
else if( strcmp(tmp, "TRAF") == 0 )
|
else if( strcmp(tmp, "TRAF") == 0 )
|
||||||
{
|
{
|
||||||
if( (p=get_field(&emsi_dat, '{', '}')) == NULL ) return(1);
|
if( (p=get_field(&emsi_dat, '{', '}')) == NULL ) return(1);
|
||||||
if( *p )
|
if( p && *p )
|
||||||
{
|
{
|
||||||
if( sscanf(p, "%08zX %08zX", &emsi->netmail_size, &emsi->arcmail_size) == 2 )
|
if( sscanf(p, "%08X %08X", &emsi->netmail_size, &emsi->arcmail_size) == 2 )
|
||||||
{
|
{
|
||||||
emsi->have_traf = 1;
|
emsi->have_traf = 1;
|
||||||
}
|
}
|
||||||
@ -736,9 +736,9 @@ int emsi_parsedat(char *emsi_dat, s_emsi *emsi)
|
|||||||
{
|
{
|
||||||
if( (p=get_field(&emsi_dat, '{', '}')) == NULL ) return(1);
|
if( (p=get_field(&emsi_dat, '{', '}')) == NULL ) return(1);
|
||||||
if( (p=get_field(&p, '[', ']')) == NULL ) return(1);
|
if( (p=get_field(&p, '[', ']')) == NULL ) return(1);
|
||||||
if( *p )
|
if( p && *p )
|
||||||
{
|
{
|
||||||
if( sscanf(p, "%08zX", &emsi->files_size) == 1 )
|
if( sscanf(p, "%08X", &emsi->files_size) == 1 )
|
||||||
{
|
{
|
||||||
emsi->have_moh = 1;
|
emsi->have_moh = 1;
|
||||||
}
|
}
|
||||||
@ -781,8 +781,6 @@ int emsi_parsedat(char *emsi_dat, s_emsi *emsi)
|
|||||||
/* Parse EMSI TZUTC in fmt (+|-)HHMM */
|
/* Parse EMSI TZUTC in fmt (+|-)HHMM */
|
||||||
if( *p ) {
|
if( *p ) {
|
||||||
tzc = malloc(2);
|
tzc = malloc(2);
|
||||||
if (tzc)
|
|
||||||
{
|
|
||||||
DEB((D_HSHAKE, "Got TZUTC=%s for parsing", p));
|
DEB((D_HSHAKE, "Got TZUTC=%s for parsing", p));
|
||||||
tzn = sscanf( p, "%1c%02u%02u", tzc, &tzh, &tzm);
|
tzn = sscanf( p, "%1c%02u%02u", tzc, &tzh, &tzm);
|
||||||
tzc[1] = '\0';
|
tzc[1] = '\0';
|
||||||
@ -800,7 +798,6 @@ int emsi_parsedat(char *emsi_dat, s_emsi *emsi)
|
|||||||
free(tzc);
|
free(tzc);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
DEB((D_HSHAKE, "Step - no known EMSI-part - got %s", tmp));
|
DEB((D_HSHAKE, "Step - no known EMSI-part - got %s", tmp));
|
||||||
@ -881,7 +878,7 @@ void emsi_logdat(s_emsi *emsi)
|
|||||||
if( emsi->compcodes.HFR )
|
if( emsi->compcodes.HFR )
|
||||||
strcat(flags, "HFR,");
|
strcat(flags, "HFR,");
|
||||||
|
|
||||||
if( *flags && (strlen(flags) > 0) )
|
if( *flags )
|
||||||
{
|
{
|
||||||
flags[strlen(flags)-1] = '\0';
|
flags[strlen(flags)-1] = '\0';
|
||||||
log(" Options : %s", flags);
|
log(" Options : %s", flags);
|
||||||
@ -922,7 +919,7 @@ void emsi_logdat(s_emsi *emsi)
|
|||||||
if( emsi->have_emsi )
|
if( emsi->have_emsi )
|
||||||
{
|
{
|
||||||
if( emsi->m_name[0] || emsi->m_pid[0]
|
if( emsi->m_name[0] || emsi->m_pid[0]
|
||||||
|| emsi->m_ver[0] || emsi->m_reg[0] )
|
|| emsi->m_ver[0] || emsi->m_reg )
|
||||||
{
|
{
|
||||||
log(" Mailer : %s [%s] %s/%s",
|
log(" Mailer : %s [%s] %s/%s",
|
||||||
emsi->m_name[0] ? string_printable(emsi->m_name) : "?",
|
emsi->m_name[0] ? string_printable(emsi->m_name) : "?",
|
||||||
|
@ -100,8 +100,7 @@ char *hydra_pkttype_names[] =
|
|||||||
"HPKT_EOFACK",
|
"HPKT_EOFACK",
|
||||||
"HPKT_END",
|
"HPKT_END",
|
||||||
"HPKT_IDLE",
|
"HPKT_IDLE",
|
||||||
"HPKT_DEVDATA",
|
"HPKT_DEVDATA"
|
||||||
"HPKT_DEVDACK"
|
|
||||||
};
|
};
|
||||||
|
|
||||||
char *hydra_char_names[] =
|
char *hydra_char_names[] =
|
||||||
@ -1050,8 +1049,8 @@ static int hydra_parse_init(s_hydrainfo *hi, char *pkt, size_t pktlen)
|
|||||||
if( appinf && canopt && desopt && window && prefix )
|
if( appinf && canopt && desopt && window && prefix )
|
||||||
{
|
{
|
||||||
char buf[256];
|
char buf[256];
|
||||||
unsigned long txwindow = 0UL;
|
long txwindow = 0L;
|
||||||
unsigned long rxwindow = 0UL;
|
long rxwindow = 0L;
|
||||||
|
|
||||||
DEB((D_PROT, "hydra: revtime = \"%s\"", time_string_long(buf, sizeof(buf), revtime)));
|
DEB((D_PROT, "hydra: revtime = \"%s\"", time_string_long(buf, sizeof(buf), revtime)));
|
||||||
DEB((D_PROT, "hydra: appinf = \"%s\"", appinf));
|
DEB((D_PROT, "hydra: appinf = \"%s\"", appinf));
|
||||||
@ -1549,9 +1548,7 @@ int hydra_batch(s_hydrainfo *hi, s_protinfo *pi)
|
|||||||
/*
|
/*
|
||||||
* Check current CPS, session time limits, etc.
|
* Check current CPS, session time limits, etc.
|
||||||
*/
|
*/
|
||||||
rc = p_info(pi, 1);
|
if( (rc = p_info(pi, 1)) ) gotoexit(rc);
|
||||||
|
|
||||||
if( rc != PRC_NOERROR ) gotoexit(rc);
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Send/receive as much data as possible, but without delays
|
* Send/receive as much data as possible, but without delays
|
||||||
@ -1640,7 +1637,7 @@ int hydra_batch(s_hydrainfo *hi, s_protinfo *pi)
|
|||||||
char *p;
|
char *p;
|
||||||
|
|
||||||
/* Get file modification time and size */
|
/* Get file modification time and size */
|
||||||
sscanf(hi->ibuf, "%08lx%08zx%*08zx%*08zx%*08zx",
|
sscanf(hi->ibuf, "%08lx%08x%*08x%*08x%*08x",
|
||||||
(unsigned long *)&modtime, &filesize);
|
(unsigned long *)&modtime, &filesize);
|
||||||
|
|
||||||
/* Convert local time -> UTC */
|
/* Convert local time -> UTC */
|
||||||
|
@ -85,12 +85,13 @@ static void yoohoo_put_hello(char *buffer, s_yoohoo_sysinfo *myhello)
|
|||||||
* Add domain after the end of 'Node name'
|
* Add domain after the end of 'Node name'
|
||||||
* TODO: check it for buffer overflows %-I
|
* TODO: check it for buffer overflows %-I
|
||||||
*/
|
*/
|
||||||
if( state.n_localaddr > 0 && *state.localaddrs[0].addr.domain )
|
if( state.n_localaddr > 0 && state.localaddrs[0].addr.domain
|
||||||
|
&& *state.localaddrs[0].addr.domain )
|
||||||
{
|
{
|
||||||
char *q;
|
char *q;
|
||||||
if( strlen(myhello->system) + strlen(state.localaddrs[0].addr.domain) > 57 )
|
if( strlen(myhello->system) + strlen(state.localaddrs[0].addr.domain) > 57 )
|
||||||
{
|
{
|
||||||
if( strlen(state.localaddrs[0].addr.domain) < 60 ) //PVS-Suppress V547
|
if( strlen(state.localaddrs[0].addr.domain) < 60 )
|
||||||
q = p + (60 - strlen(state.localaddrs[0].addr.domain));
|
q = p + (60 - strlen(state.localaddrs[0].addr.domain));
|
||||||
else
|
else
|
||||||
q = p;
|
q = p;
|
||||||
|
@ -67,7 +67,7 @@ static const char *FrameTypes[] =
|
|||||||
"ZCOMMAND",
|
"ZCOMMAND",
|
||||||
"ZSTDERR",
|
"ZSTDERR",
|
||||||
"Unused"
|
"Unused"
|
||||||
#define FRTYPES 20 /* Total number of frame types in this array */
|
#define FRTYPES 22 /* Total number of frame types in this array */
|
||||||
/* not including psuedo negative entries */
|
/* not including psuedo negative entries */
|
||||||
};
|
};
|
||||||
#endif
|
#endif
|
||||||
|
@ -548,7 +548,7 @@ static int zmodem_proc_ZFILE(s_protinfo *pi, char *blkptr, size_t blklen)
|
|||||||
fileiptr = blkptr + strlen(blkptr) + 1;
|
fileiptr = blkptr + strlen(blkptr) + 1;
|
||||||
|
|
||||||
if( fileiptr >= (blkptr + blklen) ||
|
if( fileiptr >= (blkptr + blklen) ||
|
||||||
sscanf(fileiptr, "%zu%lo", &filesize, (unsigned long *)&filetime) < 1 )
|
sscanf(fileiptr, "%d%lo", &filesize, (unsigned long *)&filetime) < 1 )
|
||||||
{
|
{
|
||||||
log("zmodem: got invalid ZFILE packet");
|
log("zmodem: got invalid ZFILE packet");
|
||||||
return 1;
|
return 1;
|
||||||
|
@ -47,18 +47,14 @@ static void zmodem_add_empty_packet(s_protinfo *pi)
|
|||||||
s_filelist **ptrl;
|
s_filelist **ptrl;
|
||||||
s_packet pkt;
|
s_packet pkt;
|
||||||
char tmpname[] = "/tmp/bfXXXXXX";
|
char tmpname[] = "/tmp/bfXXXXXX";
|
||||||
char *chunk;
|
|
||||||
char *p_tmpname;
|
char *p_tmpname;
|
||||||
|
|
||||||
chunk = xmalloc(7);
|
if( (p_tmpname = mktemp(tmpname)) == NULL )
|
||||||
if (!chunk) {
|
{
|
||||||
logerr("cannot generate temp. file name for packet");
|
logerr("cannot generate temp. file name for packet from \"%s\"", tmpname);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
getrandname(chunk, 6);
|
|
||||||
p_tmpname = string_concat("/tmp/bf", chunk, '\0');
|
|
||||||
|
|
||||||
free(chunk);
|
|
||||||
memset(&pkt, '\0', sizeof(s_packet));
|
memset(&pkt, '\0', sizeof(s_packet));
|
||||||
|
|
||||||
pkt.dest = state.node.addr;
|
pkt.dest = state.node.addr;
|
||||||
|
@ -210,7 +210,7 @@ int call_system_quiet(const char *connstr, bool inet)
|
|||||||
if( (exec_cmd = conf_string(cf_run_before_session)) != NULL )
|
if( (exec_cmd = conf_string(cf_run_before_session)) != NULL )
|
||||||
{
|
{
|
||||||
exec_result = system(exec_cmd);
|
exec_result = system(exec_cmd);
|
||||||
if( exec_result == 0 )
|
if( exec_result = 0 )
|
||||||
log("external application %s executed with zero return code (%i)", exec_cmd, exec_result);
|
log("external application %s executed with zero return code (%i)", exec_cmd, exec_result);
|
||||||
else
|
else
|
||||||
logerr("external application %s executed with non-zero return code %i", exec_cmd, exec_result);
|
logerr("external application %s executed with non-zero return code %i", exec_cmd, exec_result);
|
||||||
@ -378,7 +378,7 @@ int call_system_modem(void)
|
|||||||
|
|
||||||
log("calling with modem %s (%s, %s)",
|
log("calling with modem %s (%s, %s)",
|
||||||
ftn_addrstr(abuf, state.node.addr),
|
ftn_addrstr(abuf, state.node.addr),
|
||||||
( *state.node.name) ? state.node.name : "<none>",
|
(state.node.name && *state.node.name) ? state.node.name : "<none>",
|
||||||
string_printable(dialstring));
|
string_printable(dialstring));
|
||||||
|
|
||||||
/*
|
/*
|
||||||
@ -519,15 +519,15 @@ case CALL_TCPIP_TELNET:
|
|||||||
state.session = SESSION_UNKNOWN;
|
state.session = SESSION_UNKNOWN;
|
||||||
target = xstrcpy("ITN");
|
target = xstrcpy("ITN");
|
||||||
break;
|
break;
|
||||||
default:
|
defalt:
|
||||||
log("invalid protocol for TCP/IP module");
|
log("invalid protocol for TCP/IP module");
|
||||||
return BFERR_FATALERROR;
|
return BFERR_FATALERROR;
|
||||||
}
|
}
|
||||||
|
|
||||||
log("calling with internet %s (%s, %s)",
|
log("calling with internet %s (%s, %s)",
|
||||||
ftn_addrstr(abuf, state.node.addr),
|
ftn_addrstr(abuf, state.node.addr),
|
||||||
(*state.node.name ) ? state.node.name : "<none>",
|
(state.node.name && *state.node.name ) ? state.node.name : "<none>",
|
||||||
( *state.node.host) ? state.node.host : "<none>");
|
(state.node.host && *state.node.host) ? state.node.host : "<none>");
|
||||||
|
|
||||||
memset(abuf, '\0', BF_MAXADDRSTR+1);
|
memset(abuf, '\0', BF_MAXADDRSTR+1);
|
||||||
pbuf = xmalloc(1024);
|
pbuf = xmalloc(1024);
|
||||||
@ -536,7 +536,7 @@ default:
|
|||||||
if ( ! resflg )
|
if ( ! resflg )
|
||||||
{
|
{
|
||||||
|
|
||||||
const char *p = string_casestr(pbuf, target);
|
char *p = string_casestr(pbuf, target);
|
||||||
|
|
||||||
if ( p )
|
if ( p )
|
||||||
{
|
{
|
||||||
@ -568,7 +568,7 @@ default:
|
|||||||
|
|
||||||
|
|
||||||
if( (rc = tcpip_connect(pbuf, state.tcpmode)) == 0
|
if( (rc = tcpip_connect(pbuf, state.tcpmode)) == 0
|
||||||
&& ( (rc = tcpip_init()) == 0) )
|
&& (rc = tcpip_init() == 0) )
|
||||||
{
|
{
|
||||||
TTYSTATUS(1);
|
TTYSTATUS(1);
|
||||||
rc = session();
|
rc = session();
|
||||||
@ -862,7 +862,7 @@ int call_system(s_faddr addr, const s_bforce_opts *opts)
|
|||||||
}
|
}
|
||||||
if( NULL != state.override.run && strlen(state.override.run) > 0 )
|
if( NULL != state.override.run && strlen(state.override.run) > 0 )
|
||||||
{
|
{
|
||||||
if ( (runrc = system(state.override.run)) != 0 )
|
if ( (runrc = system(state.override.run) != 0 ))
|
||||||
{
|
{
|
||||||
logerr("run script \"%s\" executed with non-zero return value", state.override.run);
|
logerr("run script \"%s\" executed with non-zero return value", state.override.run);
|
||||||
}
|
}
|
||||||
@ -872,7 +872,7 @@ int call_system(s_faddr addr, const s_bforce_opts *opts)
|
|||||||
// try allowed methods and break if rc == 0
|
// try allowed methods and break if rc == 0
|
||||||
rc = -1;
|
rc = -1;
|
||||||
|
|
||||||
if( call_mayuse & CALL_STDIO )
|
if( rc && (call_mayuse & CALL_STDIO) )
|
||||||
{
|
{
|
||||||
DEB((D_EVENT,"sess_call: calling stdio"));
|
DEB((D_EVENT,"sess_call: calling stdio"));
|
||||||
rc = call_system_quiet(opts->connect, opts->inetd);
|
rc = call_system_quiet(opts->connect, opts->inetd);
|
||||||
|
@ -58,11 +58,11 @@ static char *session_stat_get_stsfile(s_faddr *addr, int linenum)
|
|||||||
addr->zone, addr->net,
|
addr->zone, addr->net,
|
||||||
addr->node, addr->point);
|
addr->node, addr->point);
|
||||||
else
|
else
|
||||||
sprintf(buf, "%u.%u.%u.%u-%d.sts",
|
sprintf(buf, "%u.%u.%u.%u-%u.sts",
|
||||||
addr->zone, addr->net,
|
addr->zone, addr->net,
|
||||||
addr->node, addr->point, linenum);
|
addr->node, addr->point, linenum);
|
||||||
|
|
||||||
yield = string_concat(p_stsdir, buf, '\0');
|
yield = string_concat(p_stsdir, buf, NULL);
|
||||||
}
|
}
|
||||||
|
|
||||||
return yield;
|
return yield;
|
||||||
|
@ -109,22 +109,6 @@ int file_lock_wait(FILE *fp, bool exclusive)
|
|||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
void getrandname(char * buf, u_int size)
|
|
||||||
{
|
|
||||||
srand((unsigned int)time(NULL));
|
|
||||||
char c;
|
|
||||||
int i;
|
|
||||||
for (i = 0; i<size; i++)
|
|
||||||
{
|
|
||||||
c = rand();
|
|
||||||
// Only ASCII 0..9A..Z
|
|
||||||
while ( (c > 90) || (c < 48) || ( ( c > 57) && ( c < 65 ) ) )
|
|
||||||
c = rand();
|
|
||||||
buf[i] = c;
|
|
||||||
}
|
|
||||||
buf[size]='\0';
|
|
||||||
}
|
|
||||||
|
|
||||||
bool file_name_issafe(int ch)
|
bool file_name_issafe(int ch)
|
||||||
{
|
{
|
||||||
if( ch == '!' ) return TRUE;
|
if( ch == '!' ) return TRUE;
|
||||||
@ -167,22 +151,12 @@ char *file_getname(char *filename)
|
|||||||
|
|
||||||
char *file_gettmp(void)
|
char *file_gettmp(void)
|
||||||
{
|
{
|
||||||
char *chunk = xmalloc(7);
|
char *tmp = xstrcpy("/tmp/bforce-XXXXXX");
|
||||||
char *res = NULL;
|
char *res = mktemp(tmp);
|
||||||
if (chunk)
|
|
||||||
{
|
|
||||||
getrandname(chunk,6);
|
|
||||||
chunk[6] = '\0';
|
|
||||||
|
|
||||||
char *tmp = xstrcpy("/tmp/bforce-");
|
|
||||||
|
|
||||||
res = string_concat(tmp, chunk, '\0');
|
|
||||||
|
|
||||||
if( chunk )
|
|
||||||
free(chunk);
|
|
||||||
if( !res )
|
if( !res )
|
||||||
free(tmp);
|
free(tmp);
|
||||||
}
|
|
||||||
return res;
|
return res;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -152,13 +152,7 @@ int plock_link(const char *lockname, const char *tmpname)
|
|||||||
int plock_create(const char *lockname)
|
int plock_create(const char *lockname)
|
||||||
{
|
{
|
||||||
int rc;
|
int rc;
|
||||||
char *tmpname, *p, *chunk;
|
char *tmpname, *p;
|
||||||
chunk = xmalloc(7);
|
|
||||||
if (!chunk) {
|
|
||||||
logerr("can't generate unique file name from \"%s\"", tmpname);
|
|
||||||
DEB((D_FREE, "plock freed"));
|
|
||||||
return PLOCK_ERROR;
|
|
||||||
}
|
|
||||||
|
|
||||||
ASSERT(lockname != NULL);
|
ASSERT(lockname != NULL);
|
||||||
|
|
||||||
@ -172,10 +166,16 @@ int plock_create(const char *lockname)
|
|||||||
DEB((D_FREE, "plock freed"));
|
DEB((D_FREE, "plock freed"));
|
||||||
return PLOCK_ERROR;
|
return PLOCK_ERROR;
|
||||||
}
|
}
|
||||||
tmpname = xstrcat(tmpname, "bforce-");
|
tmpname = xstrcat(tmpname, "bforce-XXXXXX");
|
||||||
|
|
||||||
getrandname(chunk,6);
|
if( (p = mktemp(tmpname)) == NULL )
|
||||||
p = string_concat(tmpname,chunk,'\0');
|
{
|
||||||
|
logerr("can't generate unique file name from \"%s\"", tmpname);
|
||||||
|
DEB((D_FREE, "plock free"));
|
||||||
|
free(tmpname);
|
||||||
|
DEB((D_FREE, "plock freed"));
|
||||||
|
return PLOCK_ERROR;
|
||||||
|
}
|
||||||
|
|
||||||
if( (rc = plock_write(p)) == PLOCK_OK )
|
if( (rc = plock_write(p)) == PLOCK_OK )
|
||||||
rc = plock_link(lockname, p);
|
rc = plock_link(lockname, p);
|
||||||
|
@ -598,8 +598,6 @@ int string_parse(char **dest, int items, char *str, int separator)
|
|||||||
{
|
{
|
||||||
int count = 0;
|
int count = 0;
|
||||||
char *p = str;
|
char *p = str;
|
||||||
//if ( *((unsigned char *)p) == separator )
|
|
||||||
// p++;
|
|
||||||
|
|
||||||
dest[count++] = str;
|
dest[count++] = str;
|
||||||
|
|
||||||
@ -608,7 +606,6 @@ int string_parse(char **dest, int items, char *str, int separator)
|
|||||||
if( *((unsigned char *)p) == separator )
|
if( *((unsigned char *)p) == separator )
|
||||||
{
|
{
|
||||||
*p++ = '\0';
|
*p++ = '\0';
|
||||||
// DEB((D_INDEX,"Parsed string: %s", dest[count]));
|
|
||||||
dest[count++] = p;
|
dest[count++] = p;
|
||||||
} else
|
} else
|
||||||
++p;
|
++p;
|
||||||
|
@ -29,12 +29,11 @@ bool eventexpr(s_expr *expr)
|
|||||||
static void usage(void)
|
static void usage(void)
|
||||||
{
|
{
|
||||||
printf_usage("nodelist compiler",
|
printf_usage("nodelist compiler",
|
||||||
"usage: bfindex [-fh] [-C config]\n"
|
"usage: bfindex [-fh]\n"
|
||||||
"\n"
|
"\n"
|
||||||
"options:\n"
|
"options:\n"
|
||||||
" -f force nodelist compiling\n"
|
" -f force nodelist compiling\n"
|
||||||
" -h show this help message\n"
|
" -h show this help message\n"
|
||||||
" -C config use config\n"
|
|
||||||
"\n"
|
"\n"
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
@ -43,7 +42,6 @@ static int nodelist_makeindex(s_nodelist *nlp, s_faddr addr)
|
|||||||
{
|
{
|
||||||
s_bni bni;
|
s_bni bni;
|
||||||
char buf[1024];
|
char buf[1024];
|
||||||
bool modepoint = FALSE;
|
|
||||||
long countnodes = 0L;
|
long countnodes = 0L;
|
||||||
long countlines = 0L;
|
long countlines = 0L;
|
||||||
enum nodelist_keyword keyword;
|
enum nodelist_keyword keyword;
|
||||||
@ -54,9 +52,6 @@ static int nodelist_makeindex(s_nodelist *nlp, s_faddr addr)
|
|||||||
bni.node = addr.node;
|
bni.node = addr.node;
|
||||||
bni.point = addr.point;
|
bni.point = addr.point;
|
||||||
|
|
||||||
DEB((D_INDEX, "Start create index for addr: %u:%u/%u.%u", bni.zone,
|
|
||||||
bni.net, bni.node, bni.point));
|
|
||||||
|
|
||||||
if( nodelist_createheader(nlp) == -1 )
|
if( nodelist_createheader(nlp) == -1 )
|
||||||
{
|
{
|
||||||
log("cannot create nodelist index header");
|
log("cannot create nodelist index header");
|
||||||
@ -85,16 +80,13 @@ static int nodelist_makeindex(s_nodelist *nlp, s_faddr addr)
|
|||||||
|
|
||||||
if( (p = strchr(buf, ',')) )
|
if( (p = strchr(buf, ',')) )
|
||||||
{
|
{
|
||||||
//DEB((D_INDEX, "index: parse comma: %s", p ));
|
|
||||||
*p++ = '\0';
|
*p++ = '\0';
|
||||||
if( (q = strchr(p, ',')) ) *q = '\0';
|
if( (q = strchr(p, ',')) ) *q = '\0';
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if( p == NULL || *p == '\0' )
|
if( p == NULL || *p == '\0' )
|
||||||
{
|
{
|
||||||
log("incorrect nodelist line %ld: Short line", countlines);
|
log("incorrect nodelist line %ld: Short line", countlines);
|
||||||
DEB((D_INDEX,"incorrect nodelist line %ld: Short line", countlines));
|
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -102,28 +94,20 @@ static int nodelist_makeindex(s_nodelist *nlp, s_faddr addr)
|
|||||||
{
|
{
|
||||||
log("incorrect nodelist line %d: Bad keyword \"%s\"",
|
log("incorrect nodelist line %d: Bad keyword \"%s\"",
|
||||||
countlines, buf);
|
countlines, buf);
|
||||||
DEB((D_INDEX,"incorrect nodelist line %d: Bad keyword \"%s\"",
|
|
||||||
countlines, buf));
|
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
//DEB((D_INDEX,"index: keyword=%d", keyword));
|
|
||||||
if( keyword == KEYWORD_BOSS )
|
if( keyword == KEYWORD_BOSS )
|
||||||
{
|
{
|
||||||
s_faddr tmpaddr;
|
s_faddr tmpaddr;
|
||||||
|
|
||||||
if( ftn_addrparse(&tmpaddr, p, FALSE) )
|
if( ftn_addrparse(&tmpaddr, p, FALSE) )
|
||||||
{
|
{
|
||||||
DEB((D_INDEX,"incorrect nodelist line %ld: Bad boss address \"%s\"",
|
|
||||||
countlines, p));
|
|
||||||
log("incorrect nodelist line %ld: Bad boss address \"%s\"",
|
log("incorrect nodelist line %ld: Bad boss address \"%s\"",
|
||||||
countlines, p);
|
countlines, p);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
DEB((D_INDEX,"index: parsing Boss %u:%u/%u.0",
|
|
||||||
tmpaddr.zone, tmpaddr.net, tmpaddr.node));
|
|
||||||
if (addr.point == -1 )
|
|
||||||
modepoint = true;
|
|
||||||
bni.zone = tmpaddr.zone;
|
bni.zone = tmpaddr.zone;
|
||||||
bni.net = tmpaddr.net;
|
bni.net = tmpaddr.net;
|
||||||
bni.node = tmpaddr.node;
|
bni.node = tmpaddr.node;
|
||||||
@ -147,49 +131,36 @@ static int nodelist_makeindex(s_nodelist *nlp, s_faddr addr)
|
|||||||
bni.node = 0;
|
bni.node = 0;
|
||||||
bni.point = 0;
|
bni.point = 0;
|
||||||
bni.hub = 0;
|
bni.hub = 0;
|
||||||
modepoint = false;
|
|
||||||
break;
|
break;
|
||||||
case KEYWORD_REGION:
|
case KEYWORD_REGION:
|
||||||
bni.net = value;
|
bni.net = value;
|
||||||
bni.node = 0;
|
bni.node = 0;
|
||||||
bni.point = 0;
|
bni.point = 0;
|
||||||
bni.hub = 0;
|
bni.hub = 0;
|
||||||
modepoint = false;
|
|
||||||
break;
|
break;
|
||||||
case KEYWORD_HOST:
|
case KEYWORD_HOST:
|
||||||
bni.net = value;
|
bni.net = value;
|
||||||
bni.node = 0;
|
bni.node = 0;
|
||||||
bni.point = 0;
|
bni.point = 0;
|
||||||
bni.hub = 0;
|
bni.hub = 0;
|
||||||
modepoint = false;
|
|
||||||
break;
|
break;
|
||||||
case KEYWORD_HUB:
|
case KEYWORD_HUB:
|
||||||
bni.node = value;
|
bni.node = value;
|
||||||
bni.point = 0;
|
bni.point = 0;
|
||||||
bni.hub = value;
|
bni.hub = value;
|
||||||
modepoint = false;
|
|
||||||
break;
|
break;
|
||||||
case KEYWORD_EMPTY:
|
case KEYWORD_EMPTY:
|
||||||
if (modepoint)
|
|
||||||
{
|
|
||||||
//DEB((D_INDEX,"found empty value=%u",value ));
|
|
||||||
bni.point = value;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
case KEYWORD_PVT:
|
case KEYWORD_PVT:
|
||||||
case KEYWORD_HOLD:
|
case KEYWORD_HOLD:
|
||||||
case KEYWORD_DOWN:
|
case KEYWORD_DOWN:
|
||||||
bni.node = value;
|
bni.node = value;
|
||||||
bni.point = 0;
|
bni.point = 0;
|
||||||
modepoint = false;
|
|
||||||
break;
|
break;
|
||||||
case KEYWORD_POINT:
|
case KEYWORD_POINT:
|
||||||
DEB((D_INDEX,"index: kw point"));
|
|
||||||
bni.point = value;
|
bni.point = value;
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
ASSERT_MSG();
|
ASSERT_MSG();
|
||||||
DEB((D_INDEX,"index: default assert"));
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if( nodelist_putindex(nlp, &bni) == -1 )
|
if( nodelist_putindex(nlp, &bni) == -1 )
|
||||||
@ -211,12 +182,10 @@ int main(int argc, char *argv[])
|
|||||||
{
|
{
|
||||||
s_cval_entry *cfptr;
|
s_cval_entry *cfptr;
|
||||||
char *nodelistdir = NULL;
|
char *nodelistdir = NULL;
|
||||||
char *confname = NULL;
|
|
||||||
time_t starttime = 0L;
|
time_t starttime = 0L;
|
||||||
bool forcecompile = FALSE;
|
bool forcecompile = FALSE;
|
||||||
long countnodes = 0L;
|
long countnodes = 0L;
|
||||||
char c;
|
char c;
|
||||||
int rc = 0;
|
|
||||||
|
|
||||||
/* Initialise random number generation */
|
/* Initialise random number generation */
|
||||||
(void)srand((unsigned)time(0));
|
(void)srand((unsigned)time(0));
|
||||||
@ -224,7 +193,7 @@ int main(int argc, char *argv[])
|
|||||||
(void)setlocale(LC_ALL, "");
|
(void)setlocale(LC_ALL, "");
|
||||||
/* Set our name (for logging only) */
|
/* Set our name (for logging only) */
|
||||||
|
|
||||||
while( (c = getopt(argc, argv, "hfC:")) != (char)-1 )
|
while( (c = getopt(argc, argv, "hf")) != (char)-1 )
|
||||||
{
|
{
|
||||||
switch( c ) {
|
switch( c ) {
|
||||||
case 'f':
|
case 'f':
|
||||||
@ -233,10 +202,6 @@ int main(int argc, char *argv[])
|
|||||||
case 'h':
|
case 'h':
|
||||||
usage();
|
usage();
|
||||||
exit(0);
|
exit(0);
|
||||||
case 'C':
|
|
||||||
if( confname || !optarg ) { usage(); exit(5); }
|
|
||||||
confname = (char *)xstrcpy(optarg);
|
|
||||||
break;
|
|
||||||
default:
|
default:
|
||||||
usage();
|
usage();
|
||||||
exit(5);
|
exit(5);
|
||||||
@ -244,14 +209,8 @@ int main(int argc, char *argv[])
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if( confname && *confname )
|
if( conf_readconf(conf_getconfname(), 0, false) )
|
||||||
rc = conf_readconf(confname, 0, false);
|
|
||||||
else
|
|
||||||
rc = conf_readconf(conf_getconfname(), 0, false);
|
|
||||||
|
|
||||||
if( rc )
|
|
||||||
{
|
{
|
||||||
log("Can not find config");
|
|
||||||
exit(1);
|
exit(1);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -44,7 +44,7 @@ bool eventexpr(s_expr *expr)
|
|||||||
static void usage(void)
|
static void usage(void)
|
||||||
{
|
{
|
||||||
printf_usage("outbound viewer",
|
printf_usage("outbound viewer",
|
||||||
"usage: bfstat [-C config] [-afhprst] [-n<number>]\n"
|
"usage: bfstat [-afhprst] [-n<number>]\n"
|
||||||
"\n"
|
"\n"
|
||||||
"options:\n"
|
"options:\n"
|
||||||
" -a sort by FTN address (default)\n"
|
" -a sort by FTN address (default)\n"
|
||||||
@ -56,7 +56,6 @@ static void usage(void)
|
|||||||
" -r reverse order while sorting\n"
|
" -r reverse order while sorting\n"
|
||||||
" -s sort by total files size\n"
|
" -s sort by total files size\n"
|
||||||
" -t disable total sizes printing\n"
|
" -t disable total sizes printing\n"
|
||||||
" -C config use config file\n"
|
|
||||||
"\n"
|
"\n"
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
@ -249,10 +248,8 @@ int main(int argc, char *argv[])
|
|||||||
s_opts opts;
|
s_opts opts;
|
||||||
s_sysqueue queue;
|
s_sysqueue queue;
|
||||||
s_outbound_callback_data ocb;
|
s_outbound_callback_data ocb;
|
||||||
char *confname = NULL;
|
|
||||||
char c;
|
char c;
|
||||||
int i;
|
int i;
|
||||||
int rc = 0;
|
|
||||||
|
|
||||||
bfstat_opts_default(&opts);
|
bfstat_opts_default(&opts);
|
||||||
|
|
||||||
@ -291,10 +288,6 @@ int main(int argc, char *argv[])
|
|||||||
if( ISDEC(optarg) )
|
if( ISDEC(optarg) )
|
||||||
opts.nodeslimit = atoi(optarg);
|
opts.nodeslimit = atoi(optarg);
|
||||||
break;
|
break;
|
||||||
case 'C':
|
|
||||||
if( confname || !optarg ) { usage(); exit(BFERR_FATALERROR); }
|
|
||||||
confname = (char *)xstrcpy(optarg);
|
|
||||||
break;
|
|
||||||
default:
|
default:
|
||||||
usage();
|
usage();
|
||||||
exit(1);
|
exit(1);
|
||||||
@ -308,16 +301,8 @@ int main(int argc, char *argv[])
|
|||||||
/* Initialise current locale */
|
/* Initialise current locale */
|
||||||
(void)setlocale(LC_ALL, "");
|
(void)setlocale(LC_ALL, "");
|
||||||
|
|
||||||
if( confname && *confname )
|
if( conf_readconf(conf_getconfname(), 0, false) )
|
||||||
rc = conf_readconf(confname, 0, false);
|
exit(1);
|
||||||
else
|
|
||||||
rc = conf_readconf(conf_getconfname(), 0, false);
|
|
||||||
|
|
||||||
if( rc )
|
|
||||||
{
|
|
||||||
log("Can not find config");
|
|
||||||
exit(BFERR_FATALERROR);
|
|
||||||
}
|
|
||||||
|
|
||||||
memset(&ocb, '\0', sizeof(s_outbound_callback_data));
|
memset(&ocb, '\0', sizeof(s_outbound_callback_data));
|
||||||
ocb.callback = out_handle_sysqueue;
|
ocb.callback = out_handle_sysqueue;
|
||||||
|
@ -28,13 +28,12 @@ bool eventexpr(s_expr *expr)
|
|||||||
static void usage(void)
|
static void usage(void)
|
||||||
{
|
{
|
||||||
printf_usage("nodelist lookup utility",
|
printf_usage("nodelist lookup utility",
|
||||||
"usage: nlookup [-C config] [-rmh] <address>\n"
|
"usage: nlookup [-rmh] <address>\n"
|
||||||
"\n"
|
"\n"
|
||||||
"options:\n"
|
"options:\n"
|
||||||
" -r show nodelist string\n"
|
" -r show nodelist string\n"
|
||||||
" -m show email address\n"
|
" -m show email address\n"
|
||||||
" -h show this help message\n"
|
" -h show this help message\n"
|
||||||
" -C config use config file\n"
|
|
||||||
"\n"
|
"\n"
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
@ -83,7 +82,7 @@ void print_nodeinfo(const s_node *node)
|
|||||||
timevec_check(&node->worktime, now) ? "false" : "true");
|
timevec_check(&node->worktime, now) ? "false" : "true");
|
||||||
}
|
}
|
||||||
|
|
||||||
if( (node->keyword != KEYWORD_POINT) && node->sysop && *node->sysop && strcmp(node->sysop, "<none>") )
|
if( node->sysop && *node->sysop && strcmp(node->sysop, "<none>") )
|
||||||
{
|
{
|
||||||
char username[BNI_MAXSYSOP+1];
|
char username[BNI_MAXSYSOP+1];
|
||||||
|
|
||||||
@ -128,8 +127,6 @@ int main(int argc, char *argv[])
|
|||||||
s_node node;
|
s_node node;
|
||||||
s_faddr addr;
|
s_faddr addr;
|
||||||
char ch;
|
char ch;
|
||||||
int rc = 0;
|
|
||||||
char *confname = NULL;
|
|
||||||
bool rawstring = FALSE;
|
bool rawstring = FALSE;
|
||||||
bool emailaddr = FALSE;
|
bool emailaddr = FALSE;
|
||||||
|
|
||||||
@ -138,7 +135,7 @@ int main(int argc, char *argv[])
|
|||||||
/* Initialise current locale */
|
/* Initialise current locale */
|
||||||
(void)setlocale(LC_ALL, "");
|
(void)setlocale(LC_ALL, "");
|
||||||
|
|
||||||
while( (ch=getopt(argc, argv, "hdrmC:")) != (char)-1 )
|
while( (ch=getopt(argc, argv, "hrm")) != (char)-1 )
|
||||||
{
|
{
|
||||||
switch( ch ) {
|
switch( ch ) {
|
||||||
case 'h':
|
case 'h':
|
||||||
@ -150,10 +147,6 @@ int main(int argc, char *argv[])
|
|||||||
case 'm':
|
case 'm':
|
||||||
emailaddr = TRUE;
|
emailaddr = TRUE;
|
||||||
break;
|
break;
|
||||||
case 'C':
|
|
||||||
if( confname || !optarg ) { usage(); exit(BFERR_FATALERROR); }
|
|
||||||
confname = (char *)xstrcpy(optarg);
|
|
||||||
break;
|
|
||||||
default:
|
default:
|
||||||
usage();
|
usage();
|
||||||
exit(BFERR_FATALERROR);
|
exit(BFERR_FATALERROR);
|
||||||
@ -166,18 +159,8 @@ int main(int argc, char *argv[])
|
|||||||
exit(BFERR_FATALERROR);
|
exit(BFERR_FATALERROR);
|
||||||
}
|
}
|
||||||
|
|
||||||
if( confname && *confname )
|
if( conf_readconf(conf_getconfname(), 0, false) )
|
||||||
rc = conf_readconf(confname, 0, false);
|
|
||||||
else
|
|
||||||
rc = conf_readconf(conf_getconfname(), 0, false);
|
|
||||||
|
|
||||||
if( rc )
|
|
||||||
{
|
|
||||||
DEB((D_NODELIST,"nlookup: Can not find config"));
|
|
||||||
exit(BFERR_FATALERROR);
|
exit(BFERR_FATALERROR);
|
||||||
}
|
|
||||||
|
|
||||||
DEB((D_NODELIST,"Starting nlookup"));
|
|
||||||
|
|
||||||
if( rawstring )
|
if( rawstring )
|
||||||
{
|
{
|
||||||
@ -188,17 +171,11 @@ int main(int argc, char *argv[])
|
|||||||
}
|
}
|
||||||
else if( nodelist_lookup(&node, addr) == 0 )
|
else if( nodelist_lookup(&node, addr) == 0 )
|
||||||
{
|
{
|
||||||
if (addr.point == 0) {
|
|
||||||
if( emailaddr )
|
if( emailaddr )
|
||||||
print_nodemail(&node);
|
print_nodemail(&node);
|
||||||
else
|
else
|
||||||
print_nodeinfo(&node);
|
print_nodeinfo(&node);
|
||||||
}
|
}
|
||||||
else
|
|
||||||
{
|
|
||||||
print_nodeinfo(&node);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
deinit_conf();
|
deinit_conf();
|
||||||
|
|
||||||
|
11
source/configure
vendored
11
source/configure
vendored
@ -580,12 +580,12 @@ MAKEFLAGS=
|
|||||||
# Identity of this package.
|
# Identity of this package.
|
||||||
PACKAGE_NAME='bforce'
|
PACKAGE_NAME='bforce'
|
||||||
PACKAGE_TARNAME='bforce'
|
PACKAGE_TARNAME='bforce'
|
||||||
PACKAGE_VERSION='0.26.2'
|
PACKAGE_VERSION='0.24.1'
|
||||||
PACKAGE_STRING='bforce 0.26.2'
|
PACKAGE_STRING='bforce 0.24.1'
|
||||||
PACKAGE_BUGREPORT='zx@zxalexis.ru'
|
PACKAGE_BUGREPORT='zx@zxalexis.ru'
|
||||||
PACKAGE_URL='https://prj.zxalexis.ru/gitea/zx/bforce.git'
|
PACKAGE_URL='https://prj.zxalexis.ru/gitea/zx/bforce.git'
|
||||||
|
|
||||||
ac_default_prefix=/usr
|
ac_default_prefix=/usr/local/fido
|
||||||
# Factoring default headers for most tests.
|
# Factoring default headers for most tests.
|
||||||
ac_includes_default="\
|
ac_includes_default="\
|
||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
@ -1436,7 +1436,7 @@ fi
|
|||||||
test -n "$ac_init_help" && exit $ac_status
|
test -n "$ac_init_help" && exit $ac_status
|
||||||
if $ac_init_version; then
|
if $ac_init_version; then
|
||||||
cat <<\_ACEOF
|
cat <<\_ACEOF
|
||||||
bforce configure 0.26
|
bforce configure 0.24
|
||||||
generated by GNU Autoconf 2.69
|
generated by GNU Autoconf 2.69
|
||||||
|
|
||||||
Copyright (C) 2012 Free Software Foundation, Inc.
|
Copyright (C) 2012 Free Software Foundation, Inc.
|
||||||
@ -5792,7 +5792,7 @@ if test -n "$ac_unrecognized_opts" && test "$enable_option_checking" != no; then
|
|||||||
$as_echo "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2;}
|
$as_echo "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2;}
|
||||||
fi
|
fi
|
||||||
|
|
||||||
ac_config_files="$ac_config_files"
|
ac_config_files="$ac_config_files ../debian/Makefile"
|
||||||
|
|
||||||
cat >confcache <<\_ACEOF
|
cat >confcache <<\_ACEOF
|
||||||
# This file is a shell script that caches the results of configure
|
# This file is a shell script that caches the results of configure
|
||||||
@ -6486,6 +6486,7 @@ do
|
|||||||
case $ac_config_target in
|
case $ac_config_target in
|
||||||
"include/config.h") CONFIG_HEADERS="$CONFIG_HEADERS include/config.h" ;;
|
"include/config.h") CONFIG_HEADERS="$CONFIG_HEADERS include/config.h" ;;
|
||||||
"Makefile") CONFIG_FILES="$CONFIG_FILES Makefile" ;;
|
"Makefile") CONFIG_FILES="$CONFIG_FILES Makefile" ;;
|
||||||
|
"../debian/Makefile") CONFIG_FILES="$CONFIG_FILES ../debian/Makefile" ;;
|
||||||
|
|
||||||
*) as_fn_error $? "invalid argument: \`$ac_config_target'" "$LINENO" 5;;
|
*) as_fn_error $? "invalid argument: \`$ac_config_target'" "$LINENO" 5;;
|
||||||
esac
|
esac
|
||||||
|
@ -3,7 +3,7 @@ dnl
|
|||||||
dnl $Id$
|
dnl $Id$
|
||||||
dnl
|
dnl
|
||||||
#AC_INIT(bforce/bforce.c)
|
#AC_INIT(bforce/bforce.c)
|
||||||
AC_INIT([bforce],[0.26.2],[zx@zxalexis.ru])
|
AC_INIT([bforce],[0.26.1],[zx@zxalexis.ru])
|
||||||
AC_CONFIG_HEADER(include/config.h)
|
AC_CONFIG_HEADER(include/config.h)
|
||||||
AC_CANONICAL_SYSTEM
|
AC_CANONICAL_SYSTEM
|
||||||
dnl # Minimum Autoconf version required.
|
dnl # Minimum Autoconf version required.
|
||||||
|
@ -48,7 +48,6 @@ enum { LOG_FILE_DAEMON, LOG_FILE_SESSION, LOG_FILE_DEBUG, LOG_FILE_HISTORY };
|
|||||||
#define D_DAEMON 0x0001000L
|
#define D_DAEMON 0x0001000L
|
||||||
#define D_24554 0x0002000L
|
#define D_24554 0x0002000L
|
||||||
#define D_FREE 0x0004000L
|
#define D_FREE 0x0004000L
|
||||||
#define D_INDEX 0x0008000L
|
|
||||||
#define D_FULL 0xfffffffL
|
#define D_FULL 0xfffffffL
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
@ -159,7 +159,6 @@ s_node;
|
|||||||
|
|
||||||
int nodelist_checkflag(const char *nodeflags, const char *flag);
|
int nodelist_checkflag(const char *nodeflags, const char *flag);
|
||||||
int nodelist_keywordval(const char *keyword);
|
int nodelist_keywordval(const char *keyword);
|
||||||
int nodelist_parsepoint(s_node *node, char *str);
|
|
||||||
int nodelist_parsestring(s_node *node, char *str);
|
int nodelist_parsestring(s_node *node, char *str);
|
||||||
s_nodelist *nodelist_open(const char *dir, char *name, int mode);
|
s_nodelist *nodelist_open(const char *dir, char *name, int mode);
|
||||||
int nodelist_checkheader(s_nodelist *nlp);
|
int nodelist_checkheader(s_nodelist *nlp);
|
||||||
|
@ -78,7 +78,7 @@ typedef struct {
|
|||||||
} s_session_passwd;
|
} s_session_passwd;
|
||||||
|
|
||||||
typedef struct sendopts {
|
typedef struct sendopts {
|
||||||
unsigned int fnc:1, /* Convert outgoing file names to 8+3 format */
|
int fnc:1, /* Convert outgoing file names to 8+3 format */
|
||||||
holdreq:1, /* Hold .REQ files? (file requests) */
|
holdreq:1, /* Hold .REQ files? (file requests) */
|
||||||
holdhold:1, /* Hold files with HOLD flavor? */
|
holdhold:1, /* Hold files with HOLD flavor? */
|
||||||
holdfiles:1, /* Hold all files except netmail + arcmail */
|
holdfiles:1, /* Hold all files except netmail + arcmail */
|
||||||
|
@ -46,10 +46,10 @@ enum day
|
|||||||
|
|
||||||
typedef struct faddr {
|
typedef struct faddr {
|
||||||
bool inetform; /* Is address in domain form? */
|
bool inetform; /* Is address in domain form? */
|
||||||
u_int zone; /* -1 value means any?! */
|
int zone; /* -1 value means any?! */
|
||||||
u_int net;
|
int net;
|
||||||
u_int node;
|
int node;
|
||||||
u_int point;
|
int point;
|
||||||
char domain[BF_MAXDOMAIN+1];
|
char domain[BF_MAXDOMAIN+1];
|
||||||
} s_faddr;
|
} s_faddr;
|
||||||
|
|
||||||
@ -83,7 +83,7 @@ typedef struct message {
|
|||||||
typedef struct packet {
|
typedef struct packet {
|
||||||
s_faddr orig;
|
s_faddr orig;
|
||||||
s_faddr dest;
|
s_faddr dest;
|
||||||
u_int baud;
|
int baud;
|
||||||
char password[8+1];
|
char password[8+1];
|
||||||
s_message *msgs;
|
s_message *msgs;
|
||||||
int n_msgs;
|
int n_msgs;
|
||||||
@ -161,7 +161,6 @@ bool is_regfile(const char *filename);
|
|||||||
int directory_create(const char *dirname, mode_t access_mode);
|
int directory_create(const char *dirname, mode_t access_mode);
|
||||||
FILE *file_open(const char *path, const char *mode);
|
FILE *file_open(const char *path, const char *mode);
|
||||||
int file_close(FILE *stream);
|
int file_close(FILE *stream);
|
||||||
void getrandname(char * buf, u_int size);
|
|
||||||
|
|
||||||
/* u_ftn.c */
|
/* u_ftn.c */
|
||||||
int ftn_addrparse(s_faddr *addr, const char *s, bool wildcard);
|
int ftn_addrparse(s_faddr *addr, const char *s, bool wildcard);
|
||||||
|
@ -6,7 +6,7 @@ proto_order %PROTO%
|
|||||||
#domain schoolnet /var/spool/ftn/schoolnet/ 461
|
#domain schoolnet /var/spool/ftn/schoolnet/ 461
|
||||||
log_file %TESTZONE%/logsA/bf-log
|
log_file %TESTZONE%/logsA/bf-log
|
||||||
debug_file %TESTZONE%/logsA/bf-debug
|
debug_file %TESTZONE%/logsA/bf-debug
|
||||||
debug_level info modem hshake event prot outbound override
|
debug_level modem hshake event freq
|
||||||
nodial_flag %TESTZONE%/etc/nodial
|
nodial_flag %TESTZONE%/etc/nodial
|
||||||
inbound_directory (Protected) %TESTZONE%/inboundA
|
inbound_directory (Protected) %TESTZONE%/inboundA
|
||||||
inbound_directory %TESTZONE%/inbound-unsecureA
|
inbound_directory %TESTZONE%/inbound-unsecureA
|
||||||
@ -19,7 +19,6 @@ status_directory %TESTZONE%/logsA
|
|||||||
history_file %TESTZONE%/logsA/history
|
history_file %TESTZONE%/logsA/history
|
||||||
|
|
||||||
password 99:1/2 testpwd1
|
password 99:1/2 testpwd1
|
||||||
override 99:1/2 flags INA:localhost,IFC:59999,IBN:59999
|
|
||||||
#min_speed_in 1200
|
#min_speed_in 1200
|
||||||
#min_speed_out 1200
|
#min_speed_out 1200
|
||||||
#session_limit_in 1800
|
#session_limit_in 1800
|
||||||
|
@ -6,7 +6,7 @@ proto_order %PROTO%
|
|||||||
#domain schoolnet /var/spool/ftn/schoolnet/ 461
|
#domain schoolnet /var/spool/ftn/schoolnet/ 461
|
||||||
log_file %TESTZONE%/logsB/bf-log
|
log_file %TESTZONE%/logsB/bf-log
|
||||||
debug_file %TESTZONE%/logsB/bf-debug
|
debug_file %TESTZONE%/logsB/bf-debug
|
||||||
debug_level info modem hshake event prot outbound override
|
debug_level modem hshake event freq
|
||||||
nodial_flag %TESTZONE%/etc/nodial
|
nodial_flag %TESTZONE%/etc/nodial
|
||||||
inbound_directory (Protected) %TESTZONE%/inboundB
|
inbound_directory (Protected) %TESTZONE%/inboundB
|
||||||
inbound_directory %TESTZONE%/inbound-unsecureB
|
inbound_directory %TESTZONE%/inbound-unsecureB
|
||||||
@ -19,7 +19,6 @@ status_directory %TESTZONE%/logsB
|
|||||||
history_file %TESTZONE%/logsB/history
|
history_file %TESTZONE%/logsB/history
|
||||||
|
|
||||||
password 99:1/1 testpwd1
|
password 99:1/1 testpwd1
|
||||||
override 99:1/1 flags INA:localhost,IFC:59999,IBN:59999
|
|
||||||
#min_speed_in 1200
|
#min_speed_in 1200
|
||||||
#min_speed_out 1200
|
#min_speed_out 1200
|
||||||
#session_limit_in 1800
|
#session_limit_in 1800
|
||||||
|
0
tests/configs/genpkt.sh
Normal file → Executable file
0
tests/configs/genpkt.sh
Normal file → Executable file
159
tests/mktests.sh
159
tests/mktests.sh
@ -1,93 +1,52 @@
|
|||||||
#!/usr/bin/env bash
|
#!/bin/bash
|
||||||
|
|
||||||
# Making tests of BForce
|
# Making tests of BForce
|
||||||
CURDIR="${CURDIR:-$(pwd)}"
|
CURDIR=$(pwd)
|
||||||
BFBIN=${BFBIN:-$(pwd)/../source/bin/bforce}
|
BFBIN=$(pwd)/../source/bin/bforce
|
||||||
SOCATCMD=${SOCATCMD:-$(which socat)}
|
|
||||||
|
|
||||||
function prepconfig() {
|
function prepconfig() {
|
||||||
echo "Preparing configs with $1 as protocol..."
|
echo "Preparing configs with $1 as protocol..."
|
||||||
if [[ ! -d "${CURDIR}/ftntest" ]] ;
|
cp ${CURDIR}/configs/bforceA.conf ${CURDIR}/etc/bforceA.conf
|
||||||
then
|
sed -i -e "s/%PROTO%/$1/" ${CURDIR}/etc/bforceA.conf
|
||||||
echo -n "(o_O) "
|
sed -i -e "s#%TESTZONE%#${CURDIR}#" ${CURDIR}/etc/bforceA.conf
|
||||||
else
|
|
||||||
echo "Dir exists!"
|
|
||||||
rm -rf ${CURDIR}/ftntest/{etc,inboundA,inboundB,inbound-unsecureA,inbound-unsecureB,logsA,logsB,outboundA,outboundB}
|
|
||||||
fi
|
|
||||||
|
|
||||||
mkdir -p "${CURDIR}"/ftntest/{etc,inbound-unsecureA,inbound-unsecureB,inboundA,inboundB,logsA,logsB,outboundA,outboundB}
|
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 -f ${CURDIR}/configs/bforceA.conf ${CURDIR}/ftntest/etc/bforceA.conf
|
cp ${CURDIR}/configs/00010002.cut ${CURDIR}/outboundA/00010002.cut
|
||||||
sed -i -e "s/%PROTO%/$1/" ${CURDIR}/ftntest/etc/bforceA.conf
|
cp ${CURDIR}/configs/00010001.cut ${CURDIR}/outboundB/00010001.cut
|
||||||
sed -i -e "s#%TESTZONE%#${CURDIR}/ftntest#" ${CURDIR}/ftntest/etc/bforceA.conf
|
|
||||||
|
|
||||||
cp -f ${CURDIR}/configs/bforceB.conf ${CURDIR}/ftntest/etc/bforceB.conf
|
|
||||||
sed -i -e "s/%PROTO%/$1/" ${CURDIR}/ftntest/etc/bforceB.conf
|
|
||||||
sed -i -e "s#%TESTZONE%#${CURDIR}/ftntest#" ${CURDIR}/ftntest/etc/bforceB.conf
|
|
||||||
|
|
||||||
cp -f ${CURDIR}/configs/00010002.cut ${CURDIR}/ftntest/outboundA/00010002.cut
|
|
||||||
cp -f ${CURDIR}/configs/00010001.cut ${CURDIR}/ftntest/outboundB/00010001.cut
|
|
||||||
}
|
}
|
||||||
|
|
||||||
function testcomm() {
|
function testcomm() {
|
||||||
rm -rf ${CURDIR}/ftntest/inboundA/*
|
rm -rf ${CURDIR}/inboundA/*
|
||||||
rm -rf ${CURDIR}/ftntest/inboundB/*
|
rm -rf ${CURDIR}/inboundB/*
|
||||||
echo " over ${1}"
|
|
||||||
# for V1 and V2
|
|
||||||
#mkfifo ${CURDIR}/bforceAtoB
|
|
||||||
#mkfifo ${CURDIR}/bforceBtoA
|
|
||||||
|
|
||||||
BFCFGA=${CURDIR}/ftntest/etc/bforceA.conf
|
mkfifo ${CURDIR}/bforceAtoB
|
||||||
BFCFGB=${CURDIR}/ftntest/etc/bforceB.conf
|
mkfifo ${CURDIR}/bforceBtoA
|
||||||
|
|
||||||
|
BFCFGA=${CURDIR}/etc/bforceA.conf
|
||||||
|
BFCFGB=${CURDIR}/etc/bforceB.conf
|
||||||
|
|
||||||
# Works for Linux
|
# Works for Linux
|
||||||
# Variant 1
|
|
||||||
#BFCONFIG=${BFCFGA}
|
BFCONFIG=${BFCFGA}
|
||||||
#BFCONFIG=${BFCFGA} ${BFBIN} -o 99:1/2 > ${CURDIR}/bforceAtoB < ${CURDIR}/bforceBtoA &
|
BFCONFIG=${BFCFGA} ${BFBIN} -o 99:1/2 > ${CURDIR}/bforceAtoB < ${CURDIR}/bforceBtoA &
|
||||||
#
|
#
|
||||||
|
|
||||||
#BFCONFIG=${BFCFGB}
|
BFCONFIG=${BFCFGB}
|
||||||
#BFCONFIG=${BFCFGB} ${BFBIN} -S"CONNECT 9600" auto < ${CURDIR}/bforceAtoB > ${CURDIR}/bforceBtoA
|
BFCONFIG=${BFCFGB} ${BFBIN} -S"CONNECT 9600" auto < ${CURDIR}/bforceAtoB > ${CURDIR}/bforceBtoA
|
||||||
|
|
||||||
# Variant 2
|
|
||||||
#${CURDIR}/runbfA.sh ${BFBIN} ${BFCFGA} > ${CURDIR}/bforceAtoB < ${CURDIR}/bforceBtoA &
|
|
||||||
#${CURDIR}/runbfB.sh ${BFBIN} ${BFCFGB} < ${CURDIR}/bforceAtoB > ${CURDIR}/bforceBtoA
|
|
||||||
|
|
||||||
# Variant 3 works with sockets and pipes - not pty
|
|
||||||
case ${1} in
|
|
||||||
"PSTN")
|
|
||||||
socat -ly -Wlock EXEC:"${CURDIR}/runbfB.sh ${BFBIN} ${BFCFGB}" EXEC:"${CURDIR}/runbfA.sh ${BFBIN} ${BFCFGA}"
|
|
||||||
sleep 2
|
|
||||||
;;
|
|
||||||
"IFC")
|
|
||||||
${CURDIR}/runbfC.sh ${BFBIN} ${BFCFGA} &
|
|
||||||
socat -ly -Wlock TCP4-LISTEN:59999 EXEC:"${CURDIR}/runbfD.sh ${BFBIN} ${BFCFGB}"
|
|
||||||
sleep 2
|
|
||||||
;;
|
|
||||||
"BKP")
|
|
||||||
${CURDIR}/runbfE.sh ${BFBIN} ${BFCFGA} &
|
|
||||||
socat -ly -Wlock TCP4-LISTEN:59999 EXEC:"${CURDIR}/runbfF.sh ${BFBIN} ${BFCFGB}"
|
|
||||||
sleep 2
|
|
||||||
;;
|
|
||||||
esac
|
|
||||||
# For [Free]BSD it need to be replaced - pipes are bidirectional:
|
# For [Free]BSD it need to be replaced - pipes are bidirectional:
|
||||||
|
|
||||||
# ./ping <&1 | ./pong >&0
|
# ./ping <&1 | ./pong >&0
|
||||||
|
|
||||||
# for V1 and V2
|
rm ${CURDIR}/{bforceAtoB,bforceBtoA}
|
||||||
#rm ${CURDIR}/{bforceAtoB,bforceBtoA}
|
|
||||||
|
|
||||||
## WE MUST CHECK THAT INBOUND ARE FULL!!! ##
|
## WE MUST CHECK THAT INBOUND ARE FULL!!! ##
|
||||||
FCNTA=$( find ${CURDIR}/ftntest/inboundA -name *.pkt | wc -l )
|
FCNTA=$( find ${CURDIR}/inboundA -name *.pkt | wc -l )
|
||||||
FCNTB=$( find ${CURDIR}/ftntest/inboundB -name *.pkt | wc -l )
|
FCNTB=$( find ${CURDIR}/inboundB -name *.pkt | wc -l )
|
||||||
if [[ "${FCNTA}" -eq "1" ]]
|
DIFFA=$( diff ${CURDIR}/inboundA/*.pkt ${CURDIR}/configs/00010001.cut && echo $? )
|
||||||
then
|
DIFFB=$( diff ${CURDIR}/inboundB/*.pkt ${CURDIR}/configs/00010002.cut && echo $? )
|
||||||
DIFFA=$( diff ${CURDIR}/ftntest/inboundA/*.pkt ${CURDIR}/configs/00010001.cut && echo $? )
|
|
||||||
fi
|
|
||||||
if [[ "${FCNTB}" -eq "1" ]]
|
|
||||||
then
|
|
||||||
DIFFB=$( diff ${CURDIR}/ftntest/inboundB/*.pkt ${CURDIR}/configs/00010002.cut && echo $? )
|
|
||||||
fi
|
|
||||||
|
|
||||||
if [[ "${DIFFA}" -eq "0" ]] && [[ "${FCNTA}" -eq "1" ]]
|
if [[ "${DIFFA}" -eq "0" ]] && [[ "${FCNTA}" -eq "1" ]]
|
||||||
then
|
then
|
||||||
@ -96,76 +55,48 @@ function testcomm() {
|
|||||||
echo "....Result: OK"
|
echo "....Result: OK"
|
||||||
else
|
else
|
||||||
echo "....Failed DiffB"
|
echo "....Failed DiffB"
|
||||||
RES=2
|
|
||||||
fi
|
fi
|
||||||
else
|
else
|
||||||
echo "....Failed DiffA"
|
echo "....Failed DiffA"
|
||||||
RES=1
|
|
||||||
fi
|
fi
|
||||||
|
|
||||||
if [[ -f ${CURDIR}/ftntest/logsA/bf-debug ]]
|
cat ${CURDIR}/logsA/bf-debug >> ${CURDIR}/debugA.log
|
||||||
then
|
cat ${CURDIR}/logsB/bf-debug >> ${CURDIR}/debugB.log
|
||||||
cat ${CURDIR}/ftntest/logsA/bf-debug >> ${CURDIR}/debugA.log
|
|
||||||
fi
|
|
||||||
if [[ -f ${CURDIR}/ftntest/logsB/bf-debug ]]
|
|
||||||
then
|
|
||||||
cat ${CURDIR}/ftntest/logsB/bf-debug >> ${CURDIR}/debugB.log
|
|
||||||
fi
|
|
||||||
|
|
||||||
rm -rf ${CURDIR}/ftntest
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
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}" ]]
|
if [[ ! -f "${BFBIN}" ]]
|
||||||
then
|
then
|
||||||
# No executable to test!
|
# No executable to test!
|
||||||
echo "No executable to run! Aborting..."
|
echo "No executable to run! Aborting..."
|
||||||
exit -1
|
|
||||||
else
|
else
|
||||||
|
|
||||||
if [[ ! -f "${SOCATCMD}" ]]
|
|
||||||
then
|
|
||||||
# No socat
|
|
||||||
echo "No socat cmd! Aborting..."
|
|
||||||
exit -1
|
|
||||||
fi
|
|
||||||
# All doing here
|
# All doing here
|
||||||
echo "Bforce executable found: ${BFBIN}"
|
echo "Bforce executable found"
|
||||||
RES=0
|
|
||||||
|
|
||||||
prepconfig "ZMO"
|
prepconfig "ZMO"
|
||||||
echo -n "--> Running ZMO test..."
|
echo -n "--> Running ZMO test..."
|
||||||
testcomm "PSTN"
|
testcomm
|
||||||
|
|
||||||
prepconfig "ZAP"
|
prepconfig "ZAP"
|
||||||
echo -n "--> Running ZAP test..."
|
echo -n "--> Running ZAP test..."
|
||||||
testcomm "PSTN"
|
testcomm
|
||||||
|
|
||||||
prepconfig "HYD"
|
prepconfig "HYD"
|
||||||
echo -n "--> Running Hydra test..."
|
echo -n "--> Running Hydra test..."
|
||||||
testcomm "PSTN"
|
testcomm
|
||||||
|
|
||||||
prepconfig "ZMO"
|
|
||||||
echo -n "--> Running ZMO test..."
|
|
||||||
testcomm "IFC"
|
|
||||||
|
|
||||||
prepconfig "ZAP"
|
|
||||||
echo -n "--> Running ZAP test..."
|
|
||||||
testcomm "IFC"
|
|
||||||
|
|
||||||
prepconfig "HYD"
|
|
||||||
echo -n "--> Running HYD test..."
|
|
||||||
testcomm "IFC"
|
|
||||||
|
|
||||||
prepconfig "ZMO"
|
|
||||||
echo -n "--> Running BINKP test..."
|
|
||||||
testcomm "BKP"
|
|
||||||
|
|
||||||
# TODO: make binkd test over netcat possibly
|
# TODO: make binkd test over netcat possibly
|
||||||
|
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# rm -rf ${CURDIR}/ftntest/{etc,inboundA,inboundB,inbound-unsecureA,inbound-unsecureB,logsA,logsB,outboundA,outboundB}
|
|
||||||
rm -rf ${CURDIR}/ftntest
|
|
||||||
# printf $RES
|
rm -rf {etc,inboundA,inboundB,inbound-unsecureA,inbound-unsecureB,logsA,logsB,outboundA,outboundB}
|
||||||
exit ${RES}
|
|
||||||
|
@ -1,3 +0,0 @@
|
|||||||
#!/usr/bin/env bash
|
|
||||||
BFCONFIG=${2} ${1} -C ${2} -o 99:1/2
|
|
||||||
|
|
@ -1,2 +0,0 @@
|
|||||||
#!/usr/bin/env bash
|
|
||||||
BFCONFIG=${2} ${1} -C ${2} -S"CONNECT 9600" -i auto
|
|
@ -1,2 +0,0 @@
|
|||||||
#!/usr/bin/env bash
|
|
||||||
BFCONFIG=${2} ${1} -C ${2} -a 127.0.0.1:59999 -u ifcico 99:1/2
|
|
@ -1,2 +0,0 @@
|
|||||||
#!/usr/bin/env bash
|
|
||||||
BFCONFIG=${2} ${1} -C ${2} -S"" -i auto
|
|
@ -1,2 +0,0 @@
|
|||||||
#!/usr/bin/env bash
|
|
||||||
BFCONFIG=${2} ${1} -C ${2} -a 127.0.0.1:59999 -u binkp 99:1/2
|
|
@ -1,2 +0,0 @@
|
|||||||
#!/usr/bin/env bash
|
|
||||||
BFCONFIG=${2} ${1} -C ${2} -i binkp
|
|
Loading…
x
Reference in New Issue
Block a user