From 40556b610adbfb24390f83c45faf903e885930f6 Mon Sep 17 00:00:00 2001 From: Evgeniy Kozhuhovskiy Date: Mon, 24 Oct 2005 14:04:37 +0000 Subject: [PATCH] added per-override run feature --- CHANGES.ugenk | 3 +++ TODO | 1 - docs/readme.txt | 11 ++++++++++- examples/bforce.subst | 15 ++++++++------- source/ChangeLog | 5 +++++ source/bforce/conf_proc.c | 7 +++++++ source/bforce/sess_call.c | 10 +++++++++- source/include/confread.h | 3 ++- 8 files changed, 44 insertions(+), 11 deletions(-) diff --git a/CHANGES.ugenk b/CHANGES.ugenk index 7478cae..4ea9c9e 100644 --- a/CHANGES.ugenk +++ b/CHANGES.ugenk @@ -47,3 +47,6 @@ 0.22.9 ====== + Changed version for compliance with *BSD ports + + Added possibility to run external program for each override and + hidden. See bforce.subst.sample for examples and + docs/readme.txt for details \ No newline at end of file diff --git a/TODO b/TODO index bcf7631..59935ee 100644 --- a/TODO +++ b/TODO @@ -2,7 +2,6 @@ "+" - feature - + per link dial_prefix option - sed detection in makefile + [io_modem.c] add random and smart algorythms selecting of tty. smart means (1) write time stat for every line and (2) evenly diff --git a/docs/readme.txt b/docs/readme.txt index 4cb73ff..00f3f7d 100644 --- a/docs/readme.txt +++ b/docs/readme.txt @@ -150,4 +150,13 @@ Escape character is '^]'. Искренне ваш... Igor Mitichev (2:6001/9.0) -3 мая 2005 г. 15:30 \ No newline at end of file +3 мая 2005 г. 15:30 + +Некоторые дополнения по-поводу новых фич +======================================== +override .. hidden +С версии 0.22.9 bforce научился запускать внешнюю программу для +каждого линка/его хиддена. Для чего это сделано? Единственно, что +мне приходит в голову - необходимость залочить модем/послать в +него строку иницализации. Но возможно, вы придумаете совершенно +иное применение этой фиче. \ No newline at end of file diff --git a/examples/bforce.subst b/examples/bforce.subst index 14a3071..187b25f 100644 --- a/examples/bforce.subst +++ b/examples/bforce.subst @@ -17,17 +17,18 @@ # Override 1:2/3 Phone Unpublished # # Happy -override 776:308/1 Ipaddr 192.168.1.1 Flags CM,IFC -override 776:308/1.1 Ipaddr 192.168.1.2 Flags CM,BINKP +#override 776:308/1 Ipaddr 192.168.1.1 Flags CM,IFC +#override 776:308/1.1 Ipaddr 192.168.1.2 Flags CM,BINKP # Estar -override 2:5020/758 Phone 961-2243 +#override 2:5020/758 Phone 961-2243 # Hard Core -override 2:5020/1398 Phone 700-0245 Worktime 00:00-07:00 +#override 2:5020/1398 Phone 700-0245 Worktime 00:00-07:00 # Stick's -override 2:5020/1682 Phone 308-5537 Worktime 23:30-07:00 - -override 2:5020/2120 Ipaddr 192.168.1.1 flags BINKP,CM +#override 2:5020/1682 Phone 308-5537 Worktime 23:30-07:00 +#override 2:5020/2120 Ipaddr 192.168.1.1 flags BINKP,CM +# Example how to run external script. +#override 2:4500/1 Phone 123-4567 run /usr/local/bin/sc45001.sh diff --git a/source/ChangeLog b/source/ChangeLog index 14b14ba..8fc29de 100644 --- a/source/ChangeLog +++ b/source/ChangeLog @@ -1,3 +1,8 @@ +2005-10-24 Evgeniy Kozhuhovskiy + + * bforce/sess_call.c (call_system): added possibility to run + external script for each line in override + 2005-09-03 Andrey Slusar * bforce/prot_emsi_misc.c (emsi_parsedat): correct time_t arg diff --git a/source/bforce/conf_proc.c b/source/bforce/conf_proc.c index 3fa4d44..95b8c4a 100644 --- a/source/bforce/conf_proc.c +++ b/source/bforce/conf_proc.c @@ -375,6 +375,13 @@ static int proc_override(s_override *dest, char *value) (*p)->sIpaddr = xstrcpy(arg); key = NULL; } + else if( strcasecmp(key, "run") == 0) + { + if( (*p)->run ) + free((*p)->run); + (*p)->run = xstrcpy(arg); + key = NULL; + } else if( strcasecmp(key, "worktime") == 0 ) { if( timevec_parse_list(&((*p)->worktime), arg) == -1 ) diff --git a/source/bforce/sess_call.c b/source/bforce/sess_call.c index beac548..b0ef1e4 100644 --- a/source/bforce/sess_call.c +++ b/source/bforce/sess_call.c @@ -538,7 +538,8 @@ int call_system_tcpip(void) int call_system(s_faddr addr, const s_bforce_opts *opts) { - int rc = 0; + int rc = 0; + int runrc = 0; char abuf[BF_MAXADDRSTR+1]; char *p_lockdir = NULL; char *errmsg = NULL; @@ -668,6 +669,13 @@ do_session: errmsg = "cannot lock address"; gotoexit(BFERR_SYSTEM_LOCKED); } + if( strlen(state.override.run) > 0 ) + { + if ( (runrc = system(state.override.run) != 0 )) + { + logerr("run script \"%s\" executed with non-zero return value", state.override.run); + } + } setproctitle("bforce calling %.32s, %.32s", ftn_addrstr(abuf, state.node.addr), state.node.phone); diff --git a/source/include/confread.h b/source/include/confread.h index a10ea7d..99827c8 100644 --- a/source/include/confread.h +++ b/source/include/confread.h @@ -141,7 +141,8 @@ typedef struct override { char *sPhone; char *sFlags; s_timevec worktime; - s_timevec freqtime; + s_timevec freqtime; + char *run; struct override *hidden; /* Hidden lines list */ } s_override;