3 Commits
Author SHA1 Message Date
zx 88900cd0da Minor fix 2024-10-12 23:09:44 +03:00
zx d3cf780026 Added binkp_waitaka option
Initial daemon mode nodelist change detection and restart
2024-10-12 21:19:24 +03:00
zx 21b7d8b2a8 Added binkp_waitaka option
Initial daemon mode nodelist change detection and restart
2024-10-12 21:14:28 +03:00
36 changed files with 301 additions and 587 deletions
View File
-42
View File
@@ -1,42 +0,0 @@
name: Archlinux build
run-name: Deploy to ${{ inputs.deploy_target }} by @${{ github.actor }} 🚀
on:
- push
- workflow_dispatch
jobs:
build-arch:
runs-on: arch-latest
if: ${{ github.ref }} == 'refs/head/master'
branches:
- 'master'
- 'zx'
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
- name: Adding user builder
continue-on-error: true
run: useradd -d /builder -g users -m builder
- name: Downloading PKGBUILD
run: |
su - builder -c "curl -O http://zxprj:3001/zx/bforce/raw/branch/${GITHUB_REF_NAME}/archlinux/bforce.install"
su - builder -c "curl -o PKGBUILD http://zxprj:3001/zx/bforce/raw/branch/${GITHUB_REF_NAME}/archlinux/PKGBUILD.ci"
- name: Building archlinux package
run: |
su -w GITHUB_SHA,GITHUB_REF_NAME,GITHUB_REF_TYPE - builder -c makepkg
su - builder -c "ls -la"
- name: Constructing artifact name and version
run: |
echo "BFORCE_VER=$(cat /builder/src/bforce/source/.version)-$(date +%Y%M%d)" >> $GITHUB_ENV
- name: Retrieving artifact files
run: mkdir bforce && cp /builder/bforce-r*.pkg.tar.zst bforce
- name: Try to upload artifacts
uses: actions/upload-artifact@v3
with:
name: bforce-${{ env.BFORCE_VER }}-Arch
path: bforce
-50
View File
@@ -1,50 +0,0 @@
name: Debian build
run-name: Deploy to ${{ inputs.deploy_target }} by @${{ github.actor }} 🚀
on: [push]
jobs:
build-ubuntu:
runs-on: ubuntu-latest
branches:
- 'master'
- 'zx'
steps:
- name: Checking environment
continue-on-error: true
run: printenv
- name: Installing build-essentials
continue-on-error: false
run: |
apt update
apt install -y build-essential fakeroot devscripts debhelper pkg-config --no-install-recommends
- name: Installing dependencies
continue-on-error: false
run: |
echo '---- bison ----'
apt install -y bison
echo '---- tcl ------'
apt install -y tcl
- name: Cloning source
uses: actions/checkout@v4
- name: Getting version info
run: |
echo "BFORCE_VER=$(cat ${{ env.GITHUB_WORKSPACE }}/source/.version)-$(date +%Y%M%d)" >> $GITHUB_ENV
- name: Building package
continue-on-error: false
run: |
pwd
echo '---------------------'
cd ${GITHUB_WORKSPACE}/debian
ls -l
debuild -us -uc -b
echo '---build complete---'
ls -l ${{ env.GITHUB_WORKSPACE }}/../
- name: Collecting artifacts
run: |
mkdir -pv ${{ env.GITHUB_WORKSPACE }}/artifacts
mv -v ${{ env.GITHUB_WORKSPACE }}/../*.deb ${{ env.GITHUB_WORKSPACE }}/artifacts/
- name: Try to upload artifacts
uses: actions/upload-artifact@v3
with:
name: bforce-${{ env.BFORCE_VER }}-Ubuntu
path: ${{ env.GITHUB_WORKSPACE }}/artifacts/bforce*.deb
- run: echo "This job's over"
+3
View File
@@ -7,3 +7,6 @@ source/config.log
source/config.status source/config.status
source/include/config.h source/include/config.h
bforce.geany bforce.geany
+4 -8
View File
@@ -268,14 +268,10 @@ Alexey Khromov (zx@zxalexis.ru)
+ Added systemd and xinetd service files to contrib folder + Added systemd and xinetd service files to contrib folder
+ Fixed flag files creation + Fixed flag files creation
+ Added flags for TIC files (inctic_flag) and files (incfile_flag) + Added flags for TIC files (inctic_flag) and files (incfile_flag)
+ Fixed nodelist index creation + Fixed nodelist index creation for root nodes
+ Added support for TCP port description in IBN/IFC/ITN flags + Added support for TCP port description in IBN/IFC/ITN flags
0.26 0.26
+ Fixed incorrect binkp protocol realization in unprotected sessions. + Added option binkp_waitaka - wait on caller AKA on incoming sessions
+ Fixed binkp override appliance in incoming handshake and switch self AKA with the hideAKA config
+ Initial nodelist change detection for daemon mode
0.26.1
+ Fixed binkp stuck on overrides in config
+ ReDebianized
+ Added CI automation: builds for Archlinux and Ubuntu
+1 -1
View File
@@ -46,7 +46,7 @@ The simplest way to compile this package is:
Compilers and Options Compilers and Options
===================== =====================
Some systems require unusual options for compilation or linking that Some systems require unusual options for compilation or linking that
the `configure' script does not know about. You can give `configure' the `configure' script does not know about. You can give `configure'
initial values for variables by setting them in the environment. Using initial values for variables by setting them in the environment. Using
+1 -3
View File
@@ -1,5 +1,3 @@
![zx branch](https://prj.zxalexis.ru/gitea/zx/bforce/actions/workflows/arch.yaml/badge.svg?branch=zx)
BinkleyForce FTN mailer BinkleyForce FTN mailer
----------------------- -----------------------
@@ -58,4 +56,4 @@ Copyright <br>
> (c) 2007-2008 Sergey Babitch<br> > (c) 2007-2008 Sergey Babitch<br>
> (c) 2011-2014 Sergey Dorofeev<br> > (c) 2011-2014 Sergey Dorofeev<br>
> (c) 2014 Alexander Skovpen<br> > (c) 2014 Alexander Skovpen<br>
> (c) 2024-2025 Alexey Khromov<br> > (c) 2024 Alexey Khromov<br>
+5 -6
View File
@@ -1,19 +1,20 @@
pkgname=bforce pkgname=bforce
pkgver=r235.a1c93b8 _gitname=binkleyforce
pkgver=r197.ad1776c
pkgrel=1 pkgrel=1
pkgdesc="binkleyforce FTN mailer" pkgdesc="binkleyforce FTN mailer"
arch=('i686' 'x86_64' 'aarch64') arch=('i686' 'x86_64' 'aarch64')
url="https://prj.zxalexis.ru/gitea/zx/bforce/" url="http://binkleyforce.sourceforge.net/"
license=('GPL2') license=('GPL2')
source=( source=(
"${pkgname}::git+https://prj.zxalexis.ru/gitea/zx/bforce.git" "${pkgname}::git+https://github.com/zotrix/binkleyforce.git"
) )
makedepends=('git' 'gcc' 'make' 'glibc') makedepends=('git' 'gcc' 'make' 'glibc')
provides=('bforce') provides=('bforce')
build() { build() {
cd "${srcdir}/${pkgname}/source" cd "${srcdir}/${pkgname}/source"
./configure --prefix=/ --disable-syslog --with-owner=fido --with-group=uucp ./configure --prefix=/
make make
} }
@@ -33,7 +34,6 @@ package() {
mkdir -p ${pkgdir}/usr/bin mkdir -p ${pkgdir}/usr/bin
mkdir -p ${pkgdir}/usr/local/bin mkdir -p ${pkgdir}/usr/local/bin
mkdir -p ${pkgdir}/usr/share/doc/bforce mkdir -p ${pkgdir}/usr/share/doc/bforce
mkdir -p ${pkgdir}/usr/share/man/man1
mkdir -p ${pkgdir}/var/log/bforce mkdir -p ${pkgdir}/var/log/bforce
mkdir -p ${pkgdir}/var/spool/bforce mkdir -p ${pkgdir}/var/spool/bforce
mkdir -p ${pkgdir}/var/spool/bforce/bt/in mkdir -p ${pkgdir}/var/spool/bforce/bt/in
@@ -45,7 +45,6 @@ package() {
/usr/bin/install -c ${srcdir}/${pkgname}/source/bin/bfindex ${pkgdir}/usr/bin/bfindex /usr/bin/install -c ${srcdir}/${pkgname}/source/bin/bfindex ${pkgdir}/usr/bin/bfindex
/usr/bin/install -c ${srcdir}/${pkgname}/source/bin/bfstat ${pkgdir}/usr/bin/bfstat /usr/bin/install -c ${srcdir}/${pkgname}/source/bin/bfstat ${pkgdir}/usr/bin/bfstat
/usr/bin/install -c ${srcdir}/${pkgname}/source/bin/nlookup ${pkgdir}/usr/bin/nlookup /usr/bin/install -c ${srcdir}/${pkgname}/source/bin/nlookup ${pkgdir}/usr/bin/nlookup
/usr/bin/install -c ${srcdir}/${pkgname}/man/*.1 ${pkgdir}/usr/share/man/man1/
/usr/bin/install -c -m 644 ${srcdir}/${pkgname}/examples/bforce.conf ${pkgdir}/etc/bforce.conf.sample /usr/bin/install -c -m 644 ${srcdir}/${pkgname}/examples/bforce.conf ${pkgdir}/etc/bforce.conf.sample
/usr/bin/install -c -m 644 ${srcdir}/${pkgname}/examples/bforce.subst ${pkgdir}/etc/bforce.subst.sample /usr/bin/install -c -m 644 ${srcdir}/${pkgname}/examples/bforce.subst ${pkgdir}/etc/bforce.subst.sample
/usr/bin/install -c -m 644 ${srcdir}/${pkgname}/examples/bforce.passwd ${pkgdir}/etc/bforce.passwd.sample /usr/bin/install -c -m 644 ${srcdir}/${pkgname}/examples/bforce.passwd ${pkgdir}/etc/bforce.passwd.sample
-60
View File
@@ -1,60 +0,0 @@
pkgname=bforce
pkgver=r235.a1c93b8
pkgrel=1
pkgdesc="binkleyforce FTN mailer"
arch=('i686' 'x86_64' 'aarch64')
url="https://prj.zxalexis.ru/gitea/zx/bforce/"
license=('GPL2')
source=(
"${pkgname}::git+https://prj.zxalexis.ru/gitea/${GITHUB_REF_NAME}/bforce.git"
)
makedepends=('git' 'gcc' 'make' 'glibc')
provides=('bforce')
build() {
cd "${srcdir}/${pkgname}/source"
./configure --prefix=/ --disable-syslog --with-owner=fido --with-group=uucp
make
}
prepare() {
cd "${pkgname}"
git checkout "${GITHUB_SHA}"
printf "$( pwd )\n"
}
pkgver() {
cd "$pkgname"
printf "r%s.%s.%s" "$(git rev-list --count ${GITHUB_SHA})" "$(git rev-parse --short ${GITHUB_SHA})" "${GITHUB_REF_NAME}"
}
package() {
cd ${pkgdir}
mkdir -p ${pkgdir}/etc
mkdir -p ${pkgdir}/usr/bin
mkdir -p ${pkgdir}/usr/local/bin
mkdir -p ${pkgdir}/usr/share/doc/bforce
mkdir -p ${pkgdir}/usr/share/man/man1
mkdir -p ${pkgdir}/var/log/bforce
mkdir -p ${pkgdir}/var/spool/bforce
mkdir -p ${pkgdir}/var/spool/bforce/bt/in
mkdir -p ${pkgdir}/var/spool/bforce/bt/pin
mkdir -p ${pkgdir}/var/spool/bforce/bt/out
mkdir -p ${pkgdir}/var/spool/bforce/ndl
mkdir -p ${pkgdir}/var/spool/bforce/bforce
/usr/bin/install -c ${srcdir}/${pkgname}/source/bin/bforce ${pkgdir}/usr/bin/bforce
/usr/bin/install -c ${srcdir}/${pkgname}/source/bin/bfindex ${pkgdir}/usr/bin/bfindex
/usr/bin/install -c ${srcdir}/${pkgname}/source/bin/bfstat ${pkgdir}/usr/bin/bfstat
/usr/bin/install -c ${srcdir}/${pkgname}/source/bin/nlookup ${pkgdir}/usr/bin/nlookup
/usr/bin/install -c ${srcdir}/${pkgname}/man/*.1 ${pkgdir}/usr/share/man/man1/
/usr/bin/install -c -m 644 ${srcdir}/${pkgname}/examples/bforce.conf ${pkgdir}/etc/bforce.conf.sample
/usr/bin/install -c -m 644 ${srcdir}/${pkgname}/examples/bforce.subst ${pkgdir}/etc/bforce.subst.sample
/usr/bin/install -c -m 644 ${srcdir}/${pkgname}/examples/bforce.passwd ${pkgdir}/etc/bforce.passwd.sample
/usr/bin/install -c -m 644 ${srcdir}/${pkgname}/examples/freq.aliases ${pkgdir}/etc/freq.aliases.sample
/usr/bin/install -c -m 644 ${srcdir}/${pkgname}/examples/freq.dirs ${pkgdir}/etc/freq.dirs.sample
/usr/bin/install -c ${srcdir}/${pkgname}/contrib/outman ${pkgdir}/usr/local/bin/outman
echo "Please, edit /usr/local/bin/outman"
cp ${srcdir}/${pkgname}/docs/* ${pkgdir}/usr/share/doc/bforce/
}
sha256sums=('SKIP')
+3 -3
View File
@@ -10,10 +10,10 @@
# These files are considered legacy and are unnecessary on legacy-free # These files are considered legacy and are unnecessary on legacy-free
# systems. # systems.
z /run/lock 0777 root lock - d /run/lock 0777 root lock -
z /var/lock 0777 root lock - ../run/lock L /var/lock - - - - ../run/lock
# /run/lock/subsys is used for serializing SysV service execution, and # /run/lock/subsys is used for serializing SysV service execution, and
# hence without use on SysV-less systems. # hence without use on SysV-less systems.
z /run/lock/subsys 0775 root lock - d /run/lock/subsys 0775 root lock -
View File
View File
View File
-12
View File
@@ -1,15 +1,3 @@
bforce (0.26.1) UNRELEASED; urgency=medium
* Fixed for ubuntu/debian builds and CI actions
-- Alexey Khromov <zx@zxalexis.ru> Sun, 13 Apr 2025 20:06:54 +0300
bforce (0.26) UNRELEASED; urgency=medium
* Fixed for IPv6 and build on amd64 and aarch64 platforms
-- Alexey Khromov <zx@zxalexis.ru> Sun, 13 Apr 2025 12:53:54 +0000
bforce (0.22.9-3) unstable; urgency=low bforce (0.22.9-3) unstable; urgency=low
* fixes in init.d script * fixes in init.d script
+1 -1
View File
@@ -1 +1 @@
3 4
+6
View File
@@ -0,0 +1,6 @@
/etc/bforce/bforce.conf
/etc/bforce/bforce.subst
/etc/bforce/bforce.passwd
/etc/bforce/freq.dirs
/etc/bforce/freq.aliases
+2 -2
View File
@@ -1,13 +1,13 @@
Source: bforce Source: bforce
Section: net Section: net
Priority: optional Priority: optional
Maintainer: Alexey Khromov <zx@zxalexis.ru> Maintainer: Evgeniy Kozhuhovskiy <e.kozhuhovskiy@gmail.com>
Build-Depends: debhelper (>> 3.0.0), bison (>> 1.0.0) Build-Depends: debhelper (>> 3.0.0), bison (>> 1.0.0)
Standards-Version: 3.5.10 Standards-Version: 3.5.10
Package: bforce Package: bforce
Architecture: any Architecture: any
Depends: ${shlibs:Depends}, tclsh:any Depends: ${shlibs:Depends}
Description: Binkey Force FTN mailer Description: Binkey Force FTN mailer
FTN mailer is a program that transmit files (netmail and echomail) FTN mailer is a program that transmit files (netmail and echomail)
between your FTN node and other. between your FTN node and other.
Vendored
-1
View File
@@ -1,6 +1,5 @@
usr/bin usr/bin
usr/lib/bforce usr/lib/bforce
usr/lib/systemd/system
etc/bforce etc/bforce
etc/default etc/default
etc/default/bforce etc/default/bforce
Vendored
+7 -3
View File
@@ -1,5 +1,9 @@
README.md README
README.kst
README.ugenk
TODO TODO
CHANGES
CHANGES.kst
CHANGES.ugenk
INSTALL INSTALL
INSTALL.ru INSTALL.ru
SYSLOG
View File
View File
+9 -9
View File
@@ -26,15 +26,15 @@ set -e
case "$1" in case "$1" in
configure) configure)
# if ! grep -s news /etc/group >/dev/null 2>&1; then if ! grep -s news /etc/group >/dev/null 2>&1; then
# addgroup --system news addgroup --system news
# fi fi
#
# if ! id uucp >/dev/null 2>&1; then if ! id uucp >/dev/null 2>&1; then
# adduser --system --disabled-password uucp adduser --system --disabled-password uucp
# chsh -s /bin/sh uucp chsh -s /bin/sh uucp
# adduser uucp dialout adduser uucp dialout
# fi fi
;; ;;
abort-upgrade|abort-remove|abort-deconfigure) abort-upgrade|abort-remove|abort-deconfigure)
+7 -6
View File
@@ -6,7 +6,8 @@
#export DH_VERBOSE=1 #export DH_VERBOSE=1
# This is the debhelper compatibility version to use. # This is the debhelper compatibility version to use.
export DH_COMPAT=11 export DH_COMPAT=3
PACKAGE = bforce PACKAGE = bforce
@@ -48,7 +49,7 @@ clean:
rm -f build-stamp configure-stamp rm -f build-stamp configure-stamp
# Add here commands to clean up after the build process. # Add here commands to clean up after the build process.
# -$(MAKE) -C source clean -$(MAKE) -C source clean
dh_clean dh_clean
rm -f source/config.cache source/include/config.h source/config.log\ rm -f source/config.cache source/include/config.h source/config.log\
source/config.status source/Makefile source/config.status source/Makefile
@@ -56,7 +57,7 @@ clean:
install: build install: build
dh_testdir dh_testdir
dh_testroot dh_testroot
dh_prep dh_clean -k
dh_installdirs dh_installdirs
# Add here commands to install the package into debian/bforce. # Add here commands to install the package into debian/bforce.
@@ -73,7 +74,7 @@ install: build
/usr/bin/install -c -m 600 -o $(USER) -g $(GROUP) examples/bforce.passwd $(CURDIR)/debian/bforce/etc/bforce/bforce.passwd /usr/bin/install -c -m 600 -o $(USER) -g $(GROUP) examples/bforce.passwd $(CURDIR)/debian/bforce/etc/bforce/bforce.passwd
/usr/bin/install -c -m 644 -o $(USER) -g $(GROUP) examples/freq.aliases $(CURDIR)/debian/bforce/etc/bforce/freq.aliases /usr/bin/install -c -m 644 -o $(USER) -g $(GROUP) examples/freq.aliases $(CURDIR)/debian/bforce/etc/bforce/freq.aliases
/usr/bin/install -c -m 644 -o $(USER) -g $(GROUP) examples/freq.dirs $(CURDIR)/debian/bforce/etc/bforce/freq.dirs /usr/bin/install -c -m 644 -o $(USER) -g $(GROUP) examples/freq.dirs $(CURDIR)/debian/bforce/etc/bforce/freq.dirs
/usr/bin/install -c -m 660 contrib/systemd/bforce.service $(CURDIR)/debian/bforce/usr/lib/systemd/system/bforce.service
/usr/bin/install $(CURDIR)/debian/bfha.def $(CURDIR)/debian/bforce/etc/default/bforce/bfha /usr/bin/install $(CURDIR)/debian/bfha.def $(CURDIR)/debian/bforce/etc/default/bforce/bfha
/usr/bin/install $(CURDIR)/contrib/bfha/bfha-debian.pl $(CURDIR)/debian/bforce/usr/lib/bforce/bfha.pl /usr/bin/install $(CURDIR)/contrib/bfha/bfha-debian.pl $(CURDIR)/debian/bforce/usr/lib/bforce/bfha.pl
@@ -91,8 +92,8 @@ binary-arch: build install
# dh_installlogrotate # dh_installlogrotate
dh_installinit dh_installinit
# dh_installcron # dh_installcron
dh_installman $(CURDIR)/man/bfindex.1 $(CURDIR)/man/bforce.1 \ dh_installman $(CURDIR)/debian/bfindex.1 $(CURDIR)/debian/bforce.1 \
$(CURDIR)/man/bfstat.1 $(CURDIR)/man/nlookup.1 $(CURDIR)/man/outman.1 $(CURDIR)/debian/bfstat.1 $(CURDIR)/debian/nlookup.1
# dh_installinfo # dh_installinfo
dh_installchangelogs CHANGES dh_installchangelogs CHANGES
dh_link dh_link
+3 -3
View File
@@ -1,7 +1,7 @@
Summary: Bforce, Fidonet mailer Summary: Bforce, Fidonet mailer
Name: bforce Name: bforce
Version: 0.26.1 Version: 0.22.8
Release: 0 Release: ugenk4
Copyright: GPL Copyright: GPL
Group: Fidonet/mailer Group: Fidonet/mailer
Source0: bforce-%{version}.%{release}.tar.gz Source0: bforce-%{version}.%{release}.tar.gz
@@ -56,7 +56,7 @@ rm -rf $RPM_BUILD_ROOT
%attr(550,uucp,news) /usr/bin/bfstat %attr(550,uucp,news) /usr/bin/bfstat
%attr(550,uucp,news) /usr/bin/nlookup %attr(550,uucp,news) /usr/bin/nlookup
%attr(550,uucp,news) /usr/bin/outman %attr(550,uucp,news) /usr/bin/outman
%attr(644,root,root) /usr/share/doc/bforce/* %attr(644,root,root) /usr/share/doc/bforce-0.22.8/*
%dir %attr(770,uucp,news) /var/log/bforce %dir %attr(770,uucp,news) /var/log/bforce
%dir %attr(770,uucp,news) /var/spool/fido/ndl %dir %attr(770,uucp,news) /var/spool/fido/ndl
%attr(775,uucp,news) /var/spool/fido/bt %attr(775,uucp,news) /var/spool/fido/bt
+1 -1
View File
@@ -1 +1 @@
0.26.1 0.26
-138
View File
@@ -1,138 +0,0 @@
2006-10-27 Evgeniy Kozhuhovskiy <ugenk@mgts.by>
* bforce/nodelist.c (nodelist_open): some fixes
2006-02-05 Evgeniy Kozhuhovskiy <e.kozhuhovskiy@gmail.com>
* bforce/logger.c: trying to fix broken syslog.
2006-01-04 Evgeniy Kozhuhovskiy <e.kozhuhovskiy@gmail.com>
* bforce/daemon_call.c (daemon_call_branch): if phone ==
00-00-000000, we call via ip
2005-10-24 Evgeniy Kozhuhovskiy <ugenk@mgts.by>
* bforce/sess_call.c (call_system): added possibility to run
external script for each line in override
2005-09-03 Andrey Slusar <anray@users.sourceforge.net>
* bforce/prot_emsi_misc.c (emsi_parsedat): correct time_t arg
size.
* bforce/prot_zmrecv.c (zmodem_proc_ZFILE): correct time_t arg
size.
2005-09-03 Evgeniy Kozhuhovskiy <e.kozhuhovskiy@gmail.com>
* bforce/prot_hydra.c: added patch to fix problems while sending
files from ?lo on hydra, by anray
2005-06-23 Evgeniy Kozhuhovskiy <e.kozhuhovskiy@gmail.com>
* bforce/prot_emsi.c (sm_rx_waitseq): reviewed code for buggy-emsi option
* configure.in: added --disable-buggy-emsi option for stupid mailers
2005-06-05 Evgeniy Kozhuhovskiy <e.kozhuhovskiy@gmail.com>
* configure.in: added logdir and spooldir to ./configure
(thnx to max boyarov)
2005-06-03 Evgeniy Kozhuhovskiy <e.kozhuhovskiy@generation-p.com>
* configure.in: fixed warnings under *bsd (removed sys/mount.h
from the list of checking headers)
* configure.in: syslog disabled by default
2005-05-08 Evgeniy Kozhuhovskiy <e.kozhuhovskiy@generation-p.com>
* bfutil/nlookup.c (print_nodeinfo): added "Type" entry to the
nlookup output
2005-05-08 Evgeniy Kozhuhovskiy <e.kozhuhovskiy@generation-p.com>
* configure.in: Some changes
* configure.in: Now default prefix is /usr/local/fido (as in fidogate)
2005-03-26 Evgeniy Kozhuhovskiy <e.kozhuhovskiy@generation-p.com>
* bforce/nodelist.c (nodelist_open): fixed compilation with gcc-2.95
2005-03-22 Evgeniy Kozhuhovskiy <e.kozhuhovskiy@gmail.com>
* INSTALL.ru: added some information
2005-02-21 Evgeniy Kozhuhovskiy <e.kozhuhovskiy@generation-p.com>
* bforce/sess_answ.c (answ_system): fixed deiniting of tcpip port
2005-02-20 Evgeniy Kozhuhovskiy <e.kozhuhovskiy@generation-p.com>
* bforce/sess_answ.c (answ_system): fixed bug with loggin inbound
tcpip sessions
* bforce/logger.c (log_getfilename): fixed possible bug
2005-02-17 Evgeniy Kozhuhovskiy <e.kozhuhovskiy@generation-p.com>
* configure.in: fixed --with-owner and --with-group
2005-02-16 Evgeniy Kozhuhovskiy <e.kozhuhovskiy@gmail.com>
* bforce/prot_emsi.c (sm_rx_waitseq): fixed unexpected emsi
sequence
2005-02-13 Evgeniy Kozhuhovskiy <e.kozhuhovskiy@gmail.com>
* bforce/sess_call.c (call_system_quiet): added run_before_session
2005-02-12 Evgeniy Kozhuhovskiy <e.kozhuhovskiy@gmail.com>
* outman: added bso support
2005-02-10 Evgeniy Kozhuhovskiy <e.kozhuhovskiy@gmail.com>
* bforce.conf: added nodelist mask examples
2005-02-09 Evgeniy Kozhuhovskiy <e.kozhuhovskiy@gmail.com>
* bforce/nodelist.c (nodelist_open): fixed stupid memory leak.
2005-01-16 Evgeniy Kozhuhovskiy <e.kozhuhovskiy@gmail.com>
* bforce/nodelist.c (nodelist_open): fixed mask detection
* bforce/nodelist.c (nodelist_open): added tmpseekdir, contains
full path to currently seeked nodelist
2005-01-12 Andrey Slusar <anray@users.sourceforge.net>
* Makefile.in (installdirs): fix compiling when use a bsd
chown.
* Makefile.in (bforce/expression.c): fix compiling when use
a bsd make.
2005-01-12 Evgeniy Kozhuhovskiy <e.kozhuhovskiy@generation-p.com>
* bforce/nodelist.c (nodelist_open): rewritten logic
* bforce/logger.c (log): fixed working with --enable-syslog
* include/logger.h: fixed some warnings
2005-01-11 Evgeniy Kozhuhovskiy <e.kozhuhovskiy@generation-p.com>
* bforce/nodelist.c (nodelist_open): fixed warnings
2005-01-11 Andrey Slusar <anray@users.sourceforge.net>
* Makefile.in (CFLAGS): added -fno-builtin.
* bforce/nodelist.c (nodelist_checkheader): small fixes.
2005-01-10 Evgeniy Kozhuhovskiy <e.kozhuhovskiy@generation-p.com>
* bforce/nodelist.c (nodelist_open): added mask detection.
+5 -11
View File
@@ -19,15 +19,11 @@
s_cval_entry *conf_first(bforce_config_keyword keyword) s_cval_entry *conf_first(bforce_config_keyword keyword)
{ {
s_cval_entry *ptrl; s_cval_entry *ptrl;
DEB((D_CONFIG, "conf_first entry nr %d",(int16_t)keyword));
for( ptrl = bforce_config[keyword].data; ptrl; ptrl = ptrl->next ) for( ptrl = bforce_config[keyword].data; ptrl; ptrl = ptrl->next )
if( !ptrl->expr.expr || eventexpr(&ptrl->expr) ) { if( !ptrl->expr.expr || eventexpr(&ptrl->expr) )
DEB((D_CONFIG, "conf_first ptrl found"));
return ptrl; return ptrl;
}
DEB((D_CONFIG, "conf_first ptrl not found"));
return NULL; return NULL;
} }
@@ -36,11 +32,9 @@ s_cval_entry *conf_next(s_cval_entry *ptrl)
ASSERT(ptrl); ASSERT(ptrl);
for( ptrl = ptrl->next; ptrl; ptrl = ptrl->next ) for( ptrl = ptrl->next; ptrl; ptrl = ptrl->next )
if( !ptrl->expr.expr || eventexpr(&ptrl->expr) ) { if( !ptrl->expr.expr || eventexpr(&ptrl->expr) )
DEB((D_CONFIG, "conf_next ptrl found"));
return ptrl; return ptrl;
}
DEB((D_CONFIG, "conf_next ptrl not found"));
return NULL; return NULL;
} }
@@ -97,7 +91,7 @@ long conf_number(bforce_config_keyword keyword)
s_override *conf_override(bforce_config_keyword keyword, s_faddr addr) s_override *conf_override(bforce_config_keyword keyword, s_faddr addr)
{ {
s_cval_entry *ptrl; s_cval_entry *ptrl;
DEB((D_CONFIG, "conf_override entry"));
for( ptrl = conf_first(keyword); ptrl; ptrl = conf_next(ptrl) ) for( ptrl = conf_first(keyword); ptrl; ptrl = conf_next(ptrl) )
if( !ftn_addrcomp(ptrl->d.override.addr, addr) ) if( !ftn_addrcomp(ptrl->d.override.addr, addr) )
return &ptrl->d.override; return &ptrl->d.override;
+1
View File
@@ -67,6 +67,7 @@ s_conf_entry bforce_config[BFORCE_NUMBER_OF_KEYWORDS+1] = {
CONF_KEY(address, CT_ADDRESS), CONF_KEY(address, CT_ADDRESS),
CONF_KEY(amiga_outbound_directory, CT_PATH), CONF_KEY(amiga_outbound_directory, CT_PATH),
CONF_KEY(binkp_timeout, CT_NUMBER), CONF_KEY(binkp_timeout, CT_NUMBER),
CONF_KEY(binkp_waitaka, CT_BOOLEAN),
CONF_KEY(daemon_circle, CT_NUMBER), CONF_KEY(daemon_circle, CT_NUMBER),
CONF_KEY(daemon_circle_crash, CT_NUMBER), CONF_KEY(daemon_circle_crash, CT_NUMBER),
CONF_KEY(daemon_circle_direct, CT_NUMBER), CONF_KEY(daemon_circle_direct, CT_NUMBER),
+30 -2
View File
@@ -112,6 +112,7 @@ static RETSIGTYPE daemon_sighandler(int signum)
static int daemon_sysentry_init(s_sysentry *sysent) static int daemon_sysentry_init(s_sysentry *sysent)
{ {
int res = -1;
s_override *p; s_override *p;
char msg[64] = ""; char msg[64] = "";
char abuf[BF_MAXADDRSTR+1]; char abuf[BF_MAXADDRSTR+1];
@@ -120,8 +121,13 @@ static int daemon_sysentry_init(s_sysentry *sysent)
(void)session_stat_get(&sysent->stat, &sysent->node.addr); (void)session_stat_get(&sysent->stat, &sysent->node.addr);
/* Lookup node in nodelist */ /* Lookup node in nodelist */
(void)nodelist_lookup(&sysent->node, sysent->node.addr); res = nodelist_lookup(&sysent->node, sysent->node.addr);
if (res == -1) {
log("QUEUE: nodelist error for %s", ftn_addrstr(abuf, sysent->node.addr));
log("QUEUE: try to re-read config!");
}
/* Set overrides */ /* Set overrides */
if( (p = conf_override(cf_override, sysent->node.addr)) ) if( (p = conf_override(cf_override, sysent->node.addr)) )
{ {
@@ -1034,6 +1040,28 @@ int daemon_run(const char *confname, const char *incname, bool quit)
*/ */
if( !timer_running(timer_rescan) || timer_expired(timer_rescan) ) if( !timer_running(timer_rescan) || timer_expired(timer_rescan) )
{ {
//Check the presence of nodelist index.
s_faddr locaddr;
char * wcard;
s_node * mynode;
wcard = xstrcpy('\0');
DEB((D_DAEMON,"daemon: chk nodelist"));
if (!ftn_addrparse(&locaddr, conf_string(cf_address), wcard) )
{
//Check the presence of nodelist index.
if (!nodelist_lookup(mynode, locaddr)) {
// All OK
DEB((D_DAEMON,"daemon: chk nodelist OK"));
} else {
// All NOT OK
DEB((D_DAEMON,"daemon: chk nodelist FAILED"));
dmstate = DM_Restart;
break;
}
}
// End checkpresense
(void)daemon_rescan_sysqueue(&daemon_sys_queue, (void)daemon_rescan_sysqueue(&daemon_sys_queue,
daemon_queues); daemon_queues);
timer_set(&timer_rescan, circle_rescan); timer_set(&timer_rescan, circle_rescan);
+10 -17
View File
@@ -56,24 +56,17 @@ int nodelist_checkflag(const char *nodeflags, const char *flag)
const char *searchbase = nodeflags; const char *searchbase = nodeflags;
char *q; char *q;
DEB((D_NODELIST, "nodelist: checking flag \"%s\" in flags \"%s\"", flag, nodeflags)); while( p = strstr(searchbase, flag) )
if ( nodeflags ) { {
while( p = strcasestr(searchbase, flag) ) // p - found flag if( p == searchbase || *(p-1) == ',' )
{ {
if( (p == searchbase) || (p != searchbase && *(p-1) == ',') ) if( (q = strchr(p, ',')) == NULL || (q - p) == strlen(flag) )
{ return 0;
if( (q = strchr(p, ',')) == NULL || (q - p) == strlen(flag) ) { if( (strchrnul(p, ':') - p) == strlen(flag) )
DEB((D_NODELIST, "nodelist: found flag %s", flag)); return 0;
return 0;
}
if( (strchrnul(p, ':') - p) == strlen(flag) ) {
DEB((D_NODELIST, "nodelist: found flag %s", flag));
return 0;
}
}
searchbase = p + 1; // avoid finding again the same
} }
searchbase = p + 1; // avoid finding again the same
} }
return 1; return 1;
@@ -579,7 +572,7 @@ int nodelist_close(s_nodelist *nlp)
logerr("cannot close nodelist index \"%s\"", nlp->name_index); logerr("cannot close nodelist index \"%s\"", nlp->name_index);
rc = 1; rc = 1;
} }
memset(nlp,'\0',sizeof(s_nodelist));
free(nlp); free(nlp);
return rc; return rc;
+75 -79
View File
@@ -95,12 +95,12 @@ int binkp_loop(s_binkp_state *bstate) {
bstate->emptyloop = 0; bstate->emptyloop = 0;
bstate->continuesend = false; bstate->continuesend = false;
uint16_t read_pos=0; unsigned short read_pos=0;
uint16_t read_blklen=0; unsigned short read_blklen=0;
uint16_t want_read=BINKP_HEADER; unsigned short want_read=BINKP_HEADER;
uint16_t write_pos=0; unsigned short write_pos=0;
uint16_t have_to_write=0; unsigned short have_to_write=0;
int n, m; int n, m;
bool no_more_to_send = false; bool no_more_to_send = false;
@@ -140,7 +140,6 @@ int binkp_loop(s_binkp_state *bstate) {
return PRC_ERROR; return PRC_ERROR;
} }
writebuf[1] = block_length&0xff; writebuf[1] = block_length&0xff;
// TODO: FIX unprotected mode
if (bstate->mode==bmode_transfer && bstate->remote_data->options&BINKP_OPT_CRYPT) if (bstate->mode==bmode_transfer && bstate->remote_data->options&BINKP_OPT_CRYPT)
encrypt_buf(writebuf, have_to_write, bstate->remote_data->keys_out); encrypt_buf(writebuf, have_to_write, bstate->remote_data->keys_out);
} }
@@ -210,19 +209,15 @@ int binkp_loop(s_binkp_state *bstate) {
log("read: remote socket shutdown"); log("read: remote socket shutdown");
return PRC_REMOTEABORTED; return PRC_REMOTEABORTED;
} }
// TODO: FIX unprotected mode if (bstate->mode==bmode_transfer && bstate->remote_data->options & BINKP_OPT_CRYPT)
if (bstate->mode==bmode_transfer && bstate->remote_data->options & BINKP_OPT_CRYPT) {
decrypt_buf(readbuf+read_pos, n, bstate->remote_data->keys_in); decrypt_buf(readbuf+read_pos, n, bstate->remote_data->keys_in);
} else {
DEB((D_24554,"binkp: not encripted transfer"));
};
DEB((D_24554, "got %d bytes", n)); DEB((D_24554, "got %d bytes", n));
want_read -= n; want_read -= n;
read_pos += n; read_pos += n;
if (read_pos == BINKP_HEADER) { if (read_pos == BINKP_HEADER) {
// have read header, want read body // have read header, want read body
DEB((D_24554, "it should be 0: %d", want_read)); DEB((D_24554, "it should be 0: %d", want_read));
want_read = ((uint16_t)(readbuf[0]&0x7F)<<8) | (uint16_t)readbuf[1]; want_read = ((unsigned short)(readbuf[0]&0x7F)<<8) | readbuf[1];
DEB((D_24554, "got block header, block length %u", want_read)); DEB((D_24554, "got block header, block length %u", want_read));
} // no else here: if want_read may be zero here for zero length block } // no else here: if want_read may be zero here for zero length block
} }
@@ -233,7 +228,6 @@ int binkp_loop(s_binkp_state *bstate) {
block_length = read_pos - BINKP_HEADER; block_length = read_pos - BINKP_HEADER;
DEB((D_24554, "binkp: complete block is received %d %hu", block_type, block_length)); DEB((D_24554, "binkp: complete block is received %d %hu", block_type, block_length));
m = binkp_doreceiveblock(bstate, readbuf+BINKP_HEADER, block_type, block_length); m = binkp_doreceiveblock(bstate, readbuf+BINKP_HEADER, block_type, block_length);
DEB((D_24554, "binkp: dorecieveblock result is %d", m));
if(m==1) { if(m==1) {
DEB((D_24554, "block is successfully accepted")); DEB((D_24554, "block is successfully accepted"));
read_pos = 0; read_pos = 0;
@@ -345,6 +339,8 @@ int binkp_transfer(s_binkp_sysinfo *local_data, s_binkp_sysinfo *remote_data, s_
int binkp_getforsend(s_binkp_state *bstate, char *buf, int *block_type, unsigned short *block_length) int binkp_getforsend(s_binkp_state *bstate, char *buf, int *block_type, unsigned short *block_length)
{ {
int my_sf, wr_pos; int my_sf, wr_pos;
s_faddr *bestaddr;
int n; // read file int n; // read file
if (bstate->extracmd[0]!=(char)-1) { if (bstate->extracmd[0]!=(char)-1) {
DEB((D_24554, "Send cmd to remote %d %s", bstate->extracmd[0], bstate->extracmd+1)); DEB((D_24554, "Send cmd to remote %d %s", bstate->extracmd[0], bstate->extracmd+1));
@@ -425,7 +421,6 @@ case 7:
// seems not to remove files from inbound until successful session end is enough to eliminate dupes // seems not to remove files from inbound until successful session end is enough to eliminate dupes
// if (!nodelist_checkflag (state.node.flags, "ND")) // if (!nodelist_checkflag (state.node.flags, "ND"))
// strcat(buf+1, " ND"); // strcat(buf+1, " ND");
// TODO: add GZ BZ2 and maybe EXTCMD
*block_length = 1 + strlen(buf+1); *block_length = 1 + strlen(buf+1);
DEB((D_24554, "send M_NUL %s", buf+1)); DEB((D_24554, "send M_NUL %s", buf+1));
return 1; return 1;
@@ -441,31 +436,63 @@ case 7:
// p // p
case 2: case 2:
DEB((D_24554, "send address")); DEB((D_24554, "WaitAKA: phase 2, mode=%d, waitaka %d, address_est %d",bstate->mode, cf_binkp_waitaka, bstate->address_established));
if ( (bstate->mode==bmode_incoming_handshake) && (conf_boolean(cf_binkp_waitaka)) && (!(bstate->address_established)) )
{
DEB((D_24554, "send address paused - waitaka option present"));
return 0;
}
else
{
DEB((D_24554, "Send address - begin"));
bstate->phase += 1; bstate->phase += 1;
buf[0] = BPMSG_ADR; buf[0] = BPMSG_ADR;
wr_pos = 1; wr_pos = 1;
int i; if (conf_boolean(cf_binkp_waitaka))
for( i = 0; i < state.n_localaddr; i++ ) {
{ // Sending bestAKA:
if (i) wr_pos += sprintf(buf+wr_pos, " "); DEB((D_24554, "Binkp - getting best aka - waitaka option present"));
if (state.localaddrs[i].addr.point) { bestaddr = session_get_bestaka(state.remoteaddrs[0].addr);
wr_pos += sprintf(buf+wr_pos, "%d:%d/%d.%d@%s", if (bestaddr->point) {
state.localaddrs[i].addr.zone, state.localaddrs[i].addr.net, wr_pos += sprintf(buf+wr_pos, "%d:%d/%d.%d@%s",
state.localaddrs[i].addr.node, state.localaddrs[i].addr.point, bestaddr->zone, bestaddr->net,
state.localaddrs[i].addr.domain); bestaddr->node, bestaddr->point,
} bestaddr->domain);
else { }
wr_pos += sprintf(buf+wr_pos, "%d:%d/%d@%s", else {
wr_pos += sprintf(buf+wr_pos, "%d:%d/%d@%s",
bestaddr->zone, bestaddr->net,
bestaddr->node,
bestaddr->domain);
}
}
else
{
// Sending all adresses:
int i;
for( i = 0; i < state.n_localaddr; i++ )
{
if (i) wr_pos += sprintf(buf+wr_pos, " ");
if (state.localaddrs[i].addr.point) {
wr_pos += sprintf(buf+wr_pos, "%d:%d/%d.%d@%s",
state.localaddrs[i].addr.zone, state.localaddrs[i].addr.net,
state.localaddrs[i].addr.node, state.localaddrs[i].addr.point,
state.localaddrs[i].addr.domain);
}
else {
wr_pos += sprintf(buf+wr_pos, "%d:%d/%d@%s",
state.localaddrs[i].addr.zone, state.localaddrs[i].addr.net, state.localaddrs[i].addr.zone, state.localaddrs[i].addr.net,
state.localaddrs[i].addr.node, state.localaddrs[i].addr.node,
state.localaddrs[i].addr.domain); state.localaddrs[i].addr.domain);
} }
}
}
*block_type = BINKP_BLK_CMD;
*block_length = wr_pos;
DEB((D_24554, "send address: %s", buf+1));
return 1;
} }
*block_type = BINKP_BLK_CMD;
*block_length = wr_pos;
DEB((D_24554, "send address: %s", buf+1));
return 1;
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
@@ -523,48 +550,28 @@ case 3: // send password on outgoing or pw confirmation on incoming
case 4: case 4:
;
char pbuf[32];
int pwset = 0;
if (bstate->mode==bmode_incoming_handshake) { if (bstate->mode==bmode_incoming_handshake) {
char * p; int i = 0;
DEB((D_24554, "incoming handshake is complete")); DEB((D_24554, "incoming handshake is complete"));
bstate->complete = true; bstate->complete = true;
char *p;
char pbuf[32];
for (i=0;i<state.n_remoteaddr;i++) for (i=0;i<state.n_remoteaddr;i++)
if( !session_get_password(state.remoteaddrs[i].addr, pbuf, sizeof(pbuf)) ){ if( !session_get_password(state.remoteaddrs[i].addr, pbuf, sizeof(pbuf)) ){
pwset = 1; init_keys(bstate->remote_data->keys_in, pbuf?pbuf:"-");
init_keys(bstate->remote_data->keys_in, pbuf[0]?pbuf:"-");
init_keys(bstate->remote_data->keys_out, "-"); init_keys(bstate->remote_data->keys_out, "-");
for (p=pbuf[0]?pbuf:"-"; *p; p++) for (p=pbuf?pbuf:"-"; *p; p++)
update_keys(bstate->remote_data->keys_out, (int)*p); update_keys(bstate->remote_data->keys_out, (int)*p);
} }
//TODO: FIX incoming options
} }
else { else {
//TODO: Fix outgoing options
DEB((D_24554, "outgoing handshake: everything is sent")); DEB((D_24554, "outgoing handshake: everything is sent"));
for (i=0;i<state.n_remoteaddr;i++)
if( !session_get_password(state.remoteaddrs[i].addr, pbuf, sizeof(pbuf)) ){
pwset = 1;
}
} }
// We have password-protected link. Remote options are already set,
// Now we determine how to CRYPT or not to CRYPT our file transfer
// Our CRYPT flag is always sent, so if the other side have CRYPT
// and link is password is set - The CRYPT must be
// Literally: if we have no pass -> drop the CRYPT flag
if ( !pwset ) {
DEB((D_24554, "binkp handshake: password NOT set, dropping CRYPT"));
bstate->remote_data->options &= !BINKP_OPT_CRYPT;
}
return 2; return 2;
} }
} }
else if (bstate->mode == bmode_transfer) { else if (bstate->mode == bmode_transfer) {
switch (bstate->phase) { switch (bstate->phase) {
send_next_file: send_next_file:
@@ -679,10 +686,7 @@ bstate->extracmd[0] = BPMSG_ERR; strcpy(bstate->extracmd+1, msg); bstate->extrai
int binkp_doreceiveblock(s_binkp_state *bstate, char *buf, int block_type, unsigned short block_length) int binkp_doreceiveblock(s_binkp_state *bstate, char *buf, int block_type, unsigned short block_length)
{ {
DEB((D_24554, "dorecieveblock_type: %d", block_type));
DEB((D_24554, "dorecieveblock_bytes: %x %x %x %x", buf[0], buf[1], buf[2], buf[3]));
switch (block_type) { switch (block_type) {
case BINKP_BLK_CMD: case BINKP_BLK_CMD:
if (block_length<1) { if (block_length<1) {
PROTO_ERROR("Zero length command received") PROTO_ERROR("Zero length command received")
@@ -718,17 +722,14 @@ case BPMSG_ADR: /* List of addresses */
bstate->extraislast = false; bstate->extraislast = false;
sprintf(bstate->extracmd+1,"OPT MB CRYPT"); sprintf(bstate->extracmd+1,"OPT MB CRYPT");
s_override ovr; s_override ovr;
DEB((D_24554, "process adr overrides"));
for(i = 0; i < state.n_remoteaddr; i++) { for(i = 0; i < state.n_remoteaddr; i++) {
ovr.sFlags = ""; ovr.sFlags = "";
override_get (&ovr, state.remoteaddrs[i].addr, 0); override_get (&ovr, state.remoteaddrs[i].addr, 0);
DEB((D_24554, "got adr overrides"));
if (nodelist_checkflag (ovr.sFlags, "NR")==0) { if (nodelist_checkflag (ovr.sFlags, "NR")==0) {
strcat (bstate->extracmd+1, " NR"); strcat (bstate->extracmd+1, " NR");
break; break;
} }
} }
DEB((D_24554, "process adr overrides"));
} }
// further use extracmd only for errors // further use extracmd only for errors
@@ -955,10 +956,10 @@ got_skip:
check_that_all_files_are_confirmed: check_that_all_files_are_confirmed:
{ {
int j; int i;
for (j = 0; j < bstate->pi->n_sentfiles; j++) { for (i = 0; i < bstate->pi->n_sentfiles; i++) {
if (bstate->pi->sentfiles[i].status == FSTAT_WAITACK) { if (bstate->pi->sentfiles[i].status == FSTAT_WAITACK) {
DEB((D_24554, "sent file %d waits for acknowlede", j)); DEB((D_24554, "sent file %d waits for acknowlede", i));
return 1; return 1;
} }
} }
@@ -1157,7 +1158,7 @@ default:
void binkp_process_NUL(s_binkp_sysinfo *remote_data, char *buffer) void binkp_process_NUL(s_binkp_sysinfo *remote_data, char *buffer)
{ {
char *p, *q;
if( strncmp(buffer, "SYS ", 4) == 0 ) if( strncmp(buffer, "SYS ", 4) == 0 )
strnxcpy(remote_data->systname, buffer+4, sizeof(remote_data->systname)); strnxcpy(remote_data->systname, buffer+4, sizeof(remote_data->systname));
@@ -1180,16 +1181,14 @@ void binkp_process_NUL(s_binkp_sysinfo *remote_data, char *buffer)
} }
else else
strnxcpy(remote_data->opt, buffer+4, sizeof(remote_data->opt)); strnxcpy(remote_data->opt, buffer+4, sizeof(remote_data->opt));
DEB((D_24554,"Process OPT"));
binkp_parse_options(remote_data, buffer+4); binkp_parse_options(remote_data, buffer+4);
} }
else if( strncmp(buffer, "VER ", 4) == 0 ) else if( strncmp(buffer, "VER ", 4) == 0 )
{ {
char *p;
/* <mailer> [<protocol>/<vermaj>.<vermin>] */ /* <mailer> [<protocol>/<vermaj>.<vermin>] */
if( (p = strchr(buffer+4, ' ')) ) if( (p = strchr(buffer+4, ' ')) )
{ {
char *q;
strnxcpy(remote_data->progname, buffer+4, strnxcpy(remote_data->progname, buffer+4,
MIN(sizeof(remote_data->progname), p - (buffer+4) + 1)); MIN(sizeof(remote_data->progname), p - (buffer+4) + 1));
++p; ++p;
@@ -1223,16 +1222,13 @@ void binkp_process_ADR(char *buffer)
{ {
s_faddr addr; s_faddr addr;
char *p, *q; char *p, *q;
DEB((D_24554, "process ADR: %s", buffer));
for( p = string_token(buffer, &q, NULL, 0); p; p = string_token(NULL, &q, NULL, 0) ) for( p = string_token(buffer, &q, NULL, 0); p; p = string_token(NULL, &q, NULL, 0) )
{ {
DEB((D_24554, "binkp_process_ADR got token \"%s\" ",p ));
if( ftn_addrparse(&addr, p, FALSE) ) if( ftn_addrparse(&addr, p, FALSE) )
log("BinkP got unparsable address \"%s\"", string_printable(p)); log("BinkP got unparsable address \"%s\"", string_printable(p));
else { else
session_addrs_add(&state.remoteaddrs, &state.n_remoteaddr, addr); session_addrs_add(&state.remoteaddrs, &state.n_remoteaddr, addr);
DEB((D_24554, "process ADR complete"));
}
} }
} }
+1 -1
View File
@@ -304,7 +304,7 @@ void binkp_set_sysinfo(s_binkp_sysinfo *binkp, s_faddr *remote_addr, bool caller
void binkp_parse_options(s_binkp_sysinfo *binkp, char *options) void binkp_parse_options(s_binkp_sysinfo *binkp, char *options)
{ {
char *p, *n; char *p, *n;
DEB((D_24554,"binkp: parse_options: %s", options));
for( p = string_token(options, &n, NULL, 0); p; for( p = string_token(options, &n, NULL, 0); p;
p = string_token(NULL, &n, NULL, 0) ) p = string_token(NULL, &n, NULL, 0) )
{ {
+2 -3
View File
@@ -481,7 +481,7 @@ int call_system_tcpip(int callwith) // only TCPIP values
char abuf[BF_MAXADDRSTR+1]; char abuf[BF_MAXADDRSTR+1];
int rc = BFERR_NOERROR; int rc = BFERR_NOERROR;
char * pbuf; char * pbuf;
char * target = 0; char * target;
int resflg; int resflg;
/* /*
* Set verbal line name to "tcpip" value * Set verbal line name to "tcpip" value
@@ -536,13 +536,12 @@ defalt:
if ( ! resflg ) if ( ! resflg )
{ {
char *p = string_casestr(pbuf, target); char *p = strcasestr(pbuf, target);
if ( p ) if ( p )
{ {
target = strchr(p, ','); target = strchr(p, ',');
if ( target ) target[0] = '\0'; if ( target ) target[0] = '\0';
target = 0;
target = strrchr(p, ':'); target = strrchr(p, ':');
if ( target ) { if ( target ) {
target++; target++;
+5 -7
View File
@@ -135,16 +135,14 @@ int override_get(s_override *dest, s_faddr addr, int line)
{ {
s_override *p; s_override *p;
int curline = 0; int curline = 0;
p = conf_override(cf_override, addr); p = conf_override(cf_override, addr);
curline = 0; curline = 0;
if (line > 0) while( p && curline < line )
{ {
while( p && curline < line ) p = p->hidden;
{ ++curline;
p = p->hidden;
++curline;
}
} }
if( p && curline == line ) if( p && curline == line )
@@ -154,7 +152,7 @@ int override_get(s_override *dest, s_faddr addr, int line)
} }
else if( line == 0 ) else if( line == 0 )
return 0; return 0;
else else
return 1; return 1;
} }
+1 -1
View File
@@ -264,7 +264,7 @@ int session_check_addr(s_faddr addr)
int session_get_password(s_faddr addr, char *buffer, size_t buflen) int session_get_password(s_faddr addr, char *buffer, size_t buflen)
{ {
s_cval_entry *pwd_ptr; s_cval_entry *pwd_ptr;
buffer[0]='\0';
for( pwd_ptr = conf_first(cf_password); pwd_ptr; for( pwd_ptr = conf_first(cf_password); pwd_ptr;
pwd_ptr = conf_next(pwd_ptr) ) pwd_ptr = conf_next(pwd_ptr) )
{ {
+118 -117
View File
@@ -141,8 +141,8 @@ typedef struct override {
char *sPhone; char *sPhone;
char *sFlags; char *sFlags;
s_timevec worktime; s_timevec worktime;
s_timevec freqtime; s_timevec freqtime;
char *run; char *run;
struct override *hidden; /* Hidden lines list */ struct override *hidden; /* Hidden lines list */
} s_override; } s_override;
@@ -159,130 +159,131 @@ typedef struct filebox {
} s_filebox; } s_filebox;
typedef enum { typedef enum {
cf_address, // 0 cf_address,
cf_amiga_outbound_directory, // 1 cf_amiga_outbound_directory,
cf_binkp_timeout, // 2 cf_binkp_timeout,
cf_daemon_circle, // 3 cf_binkp_waitaka,
cf_daemon_circle_crash, // 4 cf_daemon_circle,
cf_daemon_circle_direct, // 5 cf_daemon_circle_crash,
cf_daemon_circle_immed, // 6 cf_daemon_circle_direct,
cf_daemon_circle_modem, // 7 cf_daemon_circle_immed,
cf_daemon_circle_normal, // 8 cf_daemon_circle_modem,
cf_daemon_circle_rescan, // 9 cf_daemon_circle_normal,
cf_daemon_maxclients_modem, // 10 cf_daemon_circle_rescan,
cf_daemon_maxclients_tcpip, // 11 cf_daemon_maxclients_modem,
cf_daemon_pid_file, // 12 cf_daemon_maxclients_tcpip,
cf_delay_files_recv, // 13 cf_daemon_pid_file,
cf_delay_files_send, // 14 cf_delay_files_recv,
cf_disable_aka_matching, // 15 cf_delay_files_send,
cf_domain, // 16 cf_disable_aka_matching,
cf_emsi_FR_time, // 17 cf_domain,
cf_emsi_OH_time, // 18 cf_emsi_FR_time,
cf_emsi_slave_sends_nak, // 19 cf_emsi_OH_time,
cf_emsi_send_tz, // 20 cf_emsi_slave_sends_nak,
cf_emsi_send_time, // 21 cf_emsi_send_tz,
cf_filebox, // 22 cf_emsi_send_time,
cf_filebox_directory, // 23 cf_filebox,
cf_flags, // 24 cf_filebox_directory,
cf_flo_translate, // 25 cf_flags,
cf_freq_alias_list, // 26 cf_flo_translate,
cf_freq_dir_list, // 27 cf_freq_alias_list,
cf_freq_ignore_masks, // 28 cf_freq_dir_list,
cf_freq_limit_number, // 29 cf_freq_ignore_masks,
cf_freq_limit_size, // 30 cf_freq_limit_number,
cf_freq_limit_time, // 31 cf_freq_limit_size,
cf_freq_min_speed, // 32 cf_freq_limit_time,
cf_freq_srif_command, // 33 cf_freq_min_speed,
cf_incnet_flag, // 34 cf_freq_srif_command,
cf_incarc_flag, // 35 cf_incnet_flag,
cf_inctic_flag, // 36 cf_incarc_flag,
cf_incfile_flag, // 37 cf_inctic_flag,
cf_hide_our_aka, // 38 cf_incfile_flag,
cf_history_file, // 39 cf_hide_our_aka,
cf_hydra_options, // 40 cf_history_file,
cf_hydra_mincps_recv, // 41 cf_hydra_options,
cf_hydra_mincps_send, // 42 cf_hydra_mincps_recv,
cf_hydra_tx_window, // 43 cf_hydra_mincps_send,
cf_hydra_rx_window, // 44 cf_hydra_tx_window,
cf_inbound_directory, // 45 cf_hydra_rx_window,
cf_location, // 46 cf_inbound_directory,
cf_log_file, // 47 cf_location,
cf_log_file_daemon, // 48 cf_log_file,
cf_max_speed, // 49 cf_log_file_daemon,
cf_maxtries, // 50 cf_max_speed,
cf_maxtries_nodial, // 51 cf_maxtries,
cf_maxtries_noansw, // 52 cf_maxtries_nodial,
cf_maxtries_noconn, // 53 cf_maxtries_noansw,
cf_maxtries_hshake, // 54 cf_maxtries_noconn,
cf_maxtries_sessions, // 55 cf_maxtries_hshake,
cf_min_cps_recv, // 56 cf_maxtries_sessions,
cf_min_cps_send, // 57 cf_min_cps_recv,
cf_min_cps_time, // 58 cf_min_cps_send,
cf_min_free_space, // 59 cf_min_cps_time,
cf_min_speed_in, // 60 cf_min_free_space,
cf_min_speed_out, // 61 cf_min_speed_in,
cf_mode_netmail, // 62 cf_min_speed_out,
cf_mode_arcmail, // 63 cf_mode_netmail,
cf_mode_request, // 64 cf_mode_arcmail,
cf_mode_ticfile, // 65 cf_mode_request,
cf_mode_default, // 66 cf_mode_ticfile,
cf_modem_can_send_break, // 67 cf_mode_default,
cf_modem_dial_prefix, // 68 cf_modem_can_send_break,
cf_modem_dial_suffix, // 69 cf_modem_dial_prefix,
cf_modem_dial_response, // 70 cf_modem_dial_suffix,
cf_modem_hangup_command, // 71 cf_modem_dial_response,
cf_modem_port, // 72 cf_modem_hangup_command,
cf_modem_reset_command, // 73 cf_modem_port,
cf_modem_stat_command, // 74 cf_modem_reset_command,
cf_nodelist, // 75 cf_modem_stat_command,
cf_nodelist_directory, // 76 cf_nodelist,
cf_nodial_flag, // 77 cf_nodelist_directory,
cf_override, // 78 cf_nodial_flag,
cf_options, // 79 cf_override,
cf_outbound_directory, // 80 cf_options,
cf_password, // 81 cf_outbound_directory,
cf_phone, // 82 cf_password,
cf_phone_translate, // 83 cf_phone,
cf_proto_order, // 84 cf_phone_translate,
cf_recode_file_in, // 85 cf_proto_order,
cf_recode_file_out, // 86 cf_recode_file_in,
cf_recode_intro_in, // 87 cf_recode_file_out,
cf_recv_buffer_size, // 88 cf_recode_intro_in,
cf_rescan_delay, // 89 cf_recv_buffer_size,
cf_run_after_handshake, // 90 cf_rescan_delay,
cf_run_after_session, // 91 cf_run_after_handshake,
cf_run_before_session, // 92 cf_run_after_session,
cf_session_limit_in, // 93 cf_run_before_session,
cf_session_limit_out, // 94 cf_session_limit_in,
cf_skip_files_recv, // 95 cf_session_limit_out,
cf_status_directory, // 96 cf_skip_files_recv,
cf_system_name, // 97 cf_status_directory,
cf_sysop_name, // 98 cf_system_name,
cf_uucp_lock_directory, // 99 cf_sysop_name,
cf_wait_carrier_in, // 100 cf_uucp_lock_directory,
cf_wait_carrier_out, // 101 cf_wait_carrier_in,
cf_zmodem_mincps_recv, // 102 cf_wait_carrier_out,
cf_zmodem_mincps_send, // 103 cf_zmodem_mincps_recv,
cf_zmodem_send_dummy_pkt, // 104 cf_zmodem_mincps_send,
cf_zmodem_skip_by_pos, // 105 cf_zmodem_send_dummy_pkt,
cf_zmodem_start_block_size, // 106 cf_zmodem_skip_by_pos,
cf_zmodem_tx_window, // 107 cf_zmodem_start_block_size,
cf_nomail_flag, // 108 cf_zmodem_tx_window,
cf_bind_ip, // 109 cf_nomail_flag,
cf_recieved_to_lower, // 110 cf_bind_ip,
cf_recieved_to_lower,
#ifdef USE_SYSLOG #ifdef USE_SYSLOG
cf_syslog_facility, cf_syslog_facility,
#endif #endif
#ifdef DEBUG #ifdef DEBUG
cf_debug_file, // 111 cf_debug_file,
cf_debug_level, // 112 cf_debug_level,
#endif #endif
cf_split_inbound, // 113 cf_split_inbound,
#ifdef NETSPOOL #ifdef NETSPOOL
cf_netspool_host, cf_netspool_host,
cf_netspool_port, cf_netspool_port,
#endif #endif
cf_fidodnszone, // 114 cf_fidodnszone,
BFORCE_NUMBER_OF_KEYWORDS BFORCE_NUMBER_OF_KEYWORDS
} bforce_config_keyword; } bforce_config_keyword;