Compare commits
29
Commits
0.26
..
5f10b52c77
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
5f10b52c77 | ||
|
|
55fc94a95b | ||
|
|
1667d8a800 | ||
|
|
5eced105c8 | ||
|
|
7486b9c141 | ||
|
|
2fbe1d3e54 | ||
|
|
fa8e081584 | ||
|
|
981d4f00b3 | ||
|
|
26ecb8b64c | ||
|
|
526338f720 | ||
|
|
06f48fe1c1 | ||
|
|
4767b57ec9 | ||
|
|
8892e3f740 | ||
|
|
21eeae69cc | ||
|
|
9799f977b9 | ||
|
|
727f7cfdf3 | ||
|
|
36747d9071 | ||
|
|
9fa59cacca | ||
|
|
b66dd2156c | ||
|
|
80275d30d3 | ||
|
|
a62ae3afca | ||
|
|
a9f98cdee9 | ||
|
|
10d30223d1 | ||
|
|
c5fc6e9245 | ||
|
|
29000cfdd7 | ||
|
|
de6ef3936b | ||
|
|
8db2ee4260 | ||
|
|
25081b1bae | ||
|
|
deaa8140f5 |
@@ -0,0 +1,28 @@
|
|||||||
|
name: Archlinux build
|
||||||
|
run-name: ${{ github.event.name}} building 🚀
|
||||||
|
on: [push]
|
||||||
|
jobs:
|
||||||
|
build:
|
||||||
|
runs-on: arch-latest
|
||||||
|
if: github.ref == 'refs/heads/zx'
|
||||||
|
steps:
|
||||||
|
- run: echo "🎉 The job was automatically triggered by a ${{ github.event.name }} event."
|
||||||
|
- run: echo "🐧 This job is now running on a ${{ runner.os }} server hosted by Gitea!"
|
||||||
|
- run: echo "🔎 The name of your branch is ${{ gitea.ref }} and your repository is ${{ gitea.repository }}."
|
||||||
|
- run: echo "💡 The ${{ gitea.repository }} repository has been cloned to the runner."
|
||||||
|
- run: echo "🖥️ The workflow is now ready to test your code on the runner."
|
||||||
|
- name: Checking environment
|
||||||
|
continue-on-error: true
|
||||||
|
run: printenv
|
||||||
|
- name: Installing prerequisites - update pacman
|
||||||
|
run: pacman -Sy
|
||||||
|
- name: Installing prerequisites - install git
|
||||||
|
run: pacman --disable-sandbox --noconfirm -v -S git
|
||||||
|
- name: Downloading
|
||||||
|
continue-on-error: true
|
||||||
|
run: useradd -d ${{ gitea.basedir }}/builder -g users -m builder
|
||||||
|
- run: su - builder -c pwd
|
||||||
|
- run: su - builder -c 'curl -O http://zxprj:3001/zx/bforce/raw/branch/zx/archlinux/bforce.install'
|
||||||
|
- run: su - builder -c 'curl -O http://zxprj:3001/zx/bforce/raw/branch/zx/archlinux/PKGBUILD'
|
||||||
|
- run: su - builder -c makepkg
|
||||||
|
- run: echo "🍏 This job's status is ${{ github.state }}."
|
||||||
@@ -0,0 +1,20 @@
|
|||||||
|
name: Gitea Actions Demo
|
||||||
|
run-name: $ is testing out Gitea Actions 🚀
|
||||||
|
on: [push]
|
||||||
|
jobs:
|
||||||
|
Explore-Gitea-Actions:
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
steps:
|
||||||
|
- run: echo "🎉 The job was automatically triggered by a ${{ gitea.event.name }} event."
|
||||||
|
- run: echo "🐧 This job is now running on a ${{ runner.os }} server hosted by Gitea!"
|
||||||
|
- run: echo "🔎 The name of your branch is ${{ gitea.ref }} and your repository is ${{ gitea.repository }}."
|
||||||
|
- name: Check out repository code
|
||||||
|
uses: actions/checkout@v4
|
||||||
|
- run: echo "💡 The ${{ gitea.repository }} repository has been cloned to the runner."
|
||||||
|
- run: echo "🖥️ The workflow is now ready to test your code on the runner."
|
||||||
|
- name: List files in the repository
|
||||||
|
run: |
|
||||||
|
ls ${{ gitea.basedir }} && pwd
|
||||||
|
- run: printenv
|
||||||
|
- run: echo "🍏 This job's status is ${{ gitea.job.status }}."
|
||||||
|
|
||||||
@@ -7,6 +7,3 @@ source/config.log
|
|||||||
source/config.status
|
source/config.status
|
||||||
source/include/config.h
|
source/include/config.h
|
||||||
bforce.geany
|
bforce.geany
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -273,3 +273,5 @@ Alexey Khromov (zx@zxalexis.ru)
|
|||||||
|
|
||||||
0.26
|
0.26
|
||||||
+ Fixed incorrect binkp protocol realization in unprotected sessions.
|
+ Fixed incorrect binkp protocol realization in unprotected sessions.
|
||||||
|
+ Fixed binkp override appliance in incoming handshake
|
||||||
|
|
||||||
|
|||||||
@@ -20,10 +20,14 @@ s_cval_entry *conf_first(bforce_config_keyword keyword)
|
|||||||
{
|
{
|
||||||
s_cval_entry *ptrl;
|
s_cval_entry *ptrl;
|
||||||
|
|
||||||
for( ptrl = bforce_config[keyword].data; ptrl; ptrl = ptrl->next )
|
DEB((D_CONFIG, "conf_first entry nr %d",(int16_t)keyword));
|
||||||
if( !ptrl->expr.expr || eventexpr(&ptrl->expr) )
|
|
||||||
return ptrl;
|
|
||||||
|
|
||||||
|
for( ptrl = bforce_config[keyword].data; ptrl; ptrl = ptrl->next )
|
||||||
|
if( !ptrl->expr.expr || eventexpr(&ptrl->expr) ) {
|
||||||
|
DEB((D_CONFIG, "conf_first ptrl found"));
|
||||||
|
return ptrl;
|
||||||
|
}
|
||||||
|
DEB((D_CONFIG, "conf_first ptrl not found"));
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -32,9 +36,11 @@ 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;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -91,7 +97,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;
|
||||||
|
|||||||
@@ -56,18 +56,25 @@ int nodelist_checkflag(const char *nodeflags, const char *flag)
|
|||||||
const char *searchbase = nodeflags;
|
const char *searchbase = nodeflags;
|
||||||
char *q;
|
char *q;
|
||||||
|
|
||||||
while( p = strstr(searchbase, flag) )
|
DEB((D_NODELIST, "nodelist: checking flag \"%s\" in flags \"%s\"", flag, nodeflags));
|
||||||
|
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) )
|
if( (q = strchr(p, ',')) == NULL || (q - p) == strlen(flag) ) {
|
||||||
|
DEB((D_NODELIST, "nodelist: found flag %s", flag));
|
||||||
return 0;
|
return 0;
|
||||||
if( (strchrnul(p, ':') - p) == strlen(flag) )
|
}
|
||||||
|
if( (strchrnul(p, ':') - p) == strlen(flag) ) {
|
||||||
|
DEB((D_NODELIST, "nodelist: found flag %s", flag));
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
searchbase = p + 1; // avoid finding again the same
|
searchbase = p + 1; // avoid finding again the same
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -717,14 +717,17 @@ 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
|
||||||
|
|
||||||
@@ -1217,13 +1220,16 @@ 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"));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -135,15 +135,17 @@ 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;
|
p = p->hidden;
|
||||||
++curline;
|
++curline;
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
if( p && curline == line )
|
if( p && curline == line )
|
||||||
{
|
{
|
||||||
|
|||||||
+115
-115
@@ -159,130 +159,130 @@ typedef struct filebox {
|
|||||||
} s_filebox;
|
} s_filebox;
|
||||||
|
|
||||||
typedef enum {
|
typedef enum {
|
||||||
cf_address,
|
cf_address, // 0
|
||||||
cf_amiga_outbound_directory,
|
cf_amiga_outbound_directory, // 1
|
||||||
cf_binkp_timeout,
|
cf_binkp_timeout, // 2
|
||||||
cf_daemon_circle,
|
cf_daemon_circle, // 3
|
||||||
cf_daemon_circle_crash,
|
cf_daemon_circle_crash, // 4
|
||||||
cf_daemon_circle_direct,
|
cf_daemon_circle_direct, // 5
|
||||||
cf_daemon_circle_immed,
|
cf_daemon_circle_immed, // 6
|
||||||
cf_daemon_circle_modem,
|
cf_daemon_circle_modem, // 7
|
||||||
cf_daemon_circle_normal,
|
cf_daemon_circle_normal, // 8
|
||||||
cf_daemon_circle_rescan,
|
cf_daemon_circle_rescan, // 9
|
||||||
cf_daemon_maxclients_modem,
|
cf_daemon_maxclients_modem, // 10
|
||||||
cf_daemon_maxclients_tcpip,
|
cf_daemon_maxclients_tcpip, // 11
|
||||||
cf_daemon_pid_file,
|
cf_daemon_pid_file, // 12
|
||||||
cf_delay_files_recv,
|
cf_delay_files_recv, // 13
|
||||||
cf_delay_files_send,
|
cf_delay_files_send, // 14
|
||||||
cf_disable_aka_matching,
|
cf_disable_aka_matching, // 15
|
||||||
cf_domain,
|
cf_domain, // 16
|
||||||
cf_emsi_FR_time,
|
cf_emsi_FR_time, // 17
|
||||||
cf_emsi_OH_time,
|
cf_emsi_OH_time, // 18
|
||||||
cf_emsi_slave_sends_nak,
|
cf_emsi_slave_sends_nak, // 19
|
||||||
cf_emsi_send_tz,
|
cf_emsi_send_tz, // 20
|
||||||
cf_emsi_send_time,
|
cf_emsi_send_time, // 21
|
||||||
cf_filebox,
|
cf_filebox, // 22
|
||||||
cf_filebox_directory,
|
cf_filebox_directory, // 23
|
||||||
cf_flags,
|
cf_flags, // 24
|
||||||
cf_flo_translate,
|
cf_flo_translate, // 25
|
||||||
cf_freq_alias_list,
|
cf_freq_alias_list, // 26
|
||||||
cf_freq_dir_list,
|
cf_freq_dir_list, // 27
|
||||||
cf_freq_ignore_masks,
|
cf_freq_ignore_masks, // 28
|
||||||
cf_freq_limit_number,
|
cf_freq_limit_number, // 29
|
||||||
cf_freq_limit_size,
|
cf_freq_limit_size, // 30
|
||||||
cf_freq_limit_time,
|
cf_freq_limit_time, // 31
|
||||||
cf_freq_min_speed,
|
cf_freq_min_speed, // 32
|
||||||
cf_freq_srif_command,
|
cf_freq_srif_command, // 33
|
||||||
cf_incnet_flag,
|
cf_incnet_flag, // 34
|
||||||
cf_incarc_flag,
|
cf_incarc_flag, // 35
|
||||||
cf_inctic_flag,
|
cf_inctic_flag, // 36
|
||||||
cf_incfile_flag,
|
cf_incfile_flag, // 37
|
||||||
cf_hide_our_aka,
|
cf_hide_our_aka, // 38
|
||||||
cf_history_file,
|
cf_history_file, // 39
|
||||||
cf_hydra_options,
|
cf_hydra_options, // 40
|
||||||
cf_hydra_mincps_recv,
|
cf_hydra_mincps_recv, // 41
|
||||||
cf_hydra_mincps_send,
|
cf_hydra_mincps_send, // 42
|
||||||
cf_hydra_tx_window,
|
cf_hydra_tx_window, // 43
|
||||||
cf_hydra_rx_window,
|
cf_hydra_rx_window, // 44
|
||||||
cf_inbound_directory,
|
cf_inbound_directory, // 45
|
||||||
cf_location,
|
cf_location, // 46
|
||||||
cf_log_file,
|
cf_log_file, // 47
|
||||||
cf_log_file_daemon,
|
cf_log_file_daemon, // 48
|
||||||
cf_max_speed,
|
cf_max_speed, // 49
|
||||||
cf_maxtries,
|
cf_maxtries, // 50
|
||||||
cf_maxtries_nodial,
|
cf_maxtries_nodial, // 51
|
||||||
cf_maxtries_noansw,
|
cf_maxtries_noansw, // 52
|
||||||
cf_maxtries_noconn,
|
cf_maxtries_noconn, // 53
|
||||||
cf_maxtries_hshake,
|
cf_maxtries_hshake, // 54
|
||||||
cf_maxtries_sessions,
|
cf_maxtries_sessions, // 55
|
||||||
cf_min_cps_recv,
|
cf_min_cps_recv, // 56
|
||||||
cf_min_cps_send,
|
cf_min_cps_send, // 57
|
||||||
cf_min_cps_time,
|
cf_min_cps_time, // 58
|
||||||
cf_min_free_space,
|
cf_min_free_space, // 59
|
||||||
cf_min_speed_in,
|
cf_min_speed_in, // 60
|
||||||
cf_min_speed_out,
|
cf_min_speed_out, // 61
|
||||||
cf_mode_netmail,
|
cf_mode_netmail, // 62
|
||||||
cf_mode_arcmail,
|
cf_mode_arcmail, // 63
|
||||||
cf_mode_request,
|
cf_mode_request, // 64
|
||||||
cf_mode_ticfile,
|
cf_mode_ticfile, // 65
|
||||||
cf_mode_default,
|
cf_mode_default, // 66
|
||||||
cf_modem_can_send_break,
|
cf_modem_can_send_break, // 67
|
||||||
cf_modem_dial_prefix,
|
cf_modem_dial_prefix, // 68
|
||||||
cf_modem_dial_suffix,
|
cf_modem_dial_suffix, // 69
|
||||||
cf_modem_dial_response,
|
cf_modem_dial_response, // 70
|
||||||
cf_modem_hangup_command,
|
cf_modem_hangup_command, // 71
|
||||||
cf_modem_port,
|
cf_modem_port, // 72
|
||||||
cf_modem_reset_command,
|
cf_modem_reset_command, // 73
|
||||||
cf_modem_stat_command,
|
cf_modem_stat_command, // 74
|
||||||
cf_nodelist,
|
cf_nodelist, // 75
|
||||||
cf_nodelist_directory,
|
cf_nodelist_directory, // 76
|
||||||
cf_nodial_flag,
|
cf_nodial_flag, // 77
|
||||||
cf_override,
|
cf_override, // 78
|
||||||
cf_options,
|
cf_options, // 79
|
||||||
cf_outbound_directory,
|
cf_outbound_directory, // 80
|
||||||
cf_password,
|
cf_password, // 81
|
||||||
cf_phone,
|
cf_phone, // 82
|
||||||
cf_phone_translate,
|
cf_phone_translate, // 83
|
||||||
cf_proto_order,
|
cf_proto_order, // 84
|
||||||
cf_recode_file_in,
|
cf_recode_file_in, // 85
|
||||||
cf_recode_file_out,
|
cf_recode_file_out, // 86
|
||||||
cf_recode_intro_in,
|
cf_recode_intro_in, // 87
|
||||||
cf_recv_buffer_size,
|
cf_recv_buffer_size, // 88
|
||||||
cf_rescan_delay,
|
cf_rescan_delay, // 89
|
||||||
cf_run_after_handshake,
|
cf_run_after_handshake, // 90
|
||||||
cf_run_after_session,
|
cf_run_after_session, // 91
|
||||||
cf_run_before_session,
|
cf_run_before_session, // 92
|
||||||
cf_session_limit_in,
|
cf_session_limit_in, // 93
|
||||||
cf_session_limit_out,
|
cf_session_limit_out, // 94
|
||||||
cf_skip_files_recv,
|
cf_skip_files_recv, // 95
|
||||||
cf_status_directory,
|
cf_status_directory, // 96
|
||||||
cf_system_name,
|
cf_system_name, // 97
|
||||||
cf_sysop_name,
|
cf_sysop_name, // 98
|
||||||
cf_uucp_lock_directory,
|
cf_uucp_lock_directory, // 99
|
||||||
cf_wait_carrier_in,
|
cf_wait_carrier_in, // 100
|
||||||
cf_wait_carrier_out,
|
cf_wait_carrier_out, // 101
|
||||||
cf_zmodem_mincps_recv,
|
cf_zmodem_mincps_recv, // 102
|
||||||
cf_zmodem_mincps_send,
|
cf_zmodem_mincps_send, // 103
|
||||||
cf_zmodem_send_dummy_pkt,
|
cf_zmodem_send_dummy_pkt, // 104
|
||||||
cf_zmodem_skip_by_pos,
|
cf_zmodem_skip_by_pos, // 105
|
||||||
cf_zmodem_start_block_size,
|
cf_zmodem_start_block_size, // 106
|
||||||
cf_zmodem_tx_window,
|
cf_zmodem_tx_window, // 107
|
||||||
cf_nomail_flag,
|
cf_nomail_flag, // 108
|
||||||
cf_bind_ip,
|
cf_bind_ip, // 109
|
||||||
cf_recieved_to_lower,
|
cf_recieved_to_lower, // 110
|
||||||
#ifdef USE_SYSLOG
|
#ifdef USE_SYSLOG
|
||||||
cf_syslog_facility,
|
cf_syslog_facility,
|
||||||
#endif
|
#endif
|
||||||
#ifdef DEBUG
|
#ifdef DEBUG
|
||||||
cf_debug_file,
|
cf_debug_file, // 111
|
||||||
cf_debug_level,
|
cf_debug_level, // 112
|
||||||
#endif
|
#endif
|
||||||
cf_split_inbound,
|
cf_split_inbound, // 113
|
||||||
#ifdef NETSPOOL
|
#ifdef NETSPOOL
|
||||||
cf_netspool_host,
|
cf_netspool_host,
|
||||||
cf_netspool_port,
|
cf_netspool_port,
|
||||||
#endif
|
#endif
|
||||||
cf_fidodnszone,
|
cf_fidodnszone, // 114
|
||||||
BFORCE_NUMBER_OF_KEYWORDS
|
BFORCE_NUMBER_OF_KEYWORDS
|
||||||
} bforce_config_keyword;
|
} bforce_config_keyword;
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user