Skip to content
GitLab
Explore
Sign in
Register
Primary navigation
Search or go to…
Project
Synchronet
Manage
Activity
Members
Labels
Plan
Issues
Issue boards
Milestones
Wiki
Code
Merge requests
Repository
Branches
Commits
Tags
Repository graph
Compare revisions
Snippets
Build
Pipelines
Jobs
Pipeline schedules
Artifacts
Deploy
Releases
Package Registry
Container Registry
Model registry
Operate
Environments
Terraform modules
Monitor
Incidents
Analyze
Value stream analytics
Contributor analytics
CI/CD analytics
Repository analytics
Model experiments
Help
Help
Support
GitLab documentation
Compare GitLab plans
Community forum
Contribute to GitLab
Provide feedback
Keyboard shortcuts
?
Snippets
Groups
Projects
Show more breadcrumbs
Main
Synchronet
Commits
d8045a30
Commit
d8045a30
authored
1 year ago
by
Rob Swindell
Browse files
Options
Downloads
Patches
Plain Diff
Add Mail and Services server configuration settings
parent
9bf08c68
No related branches found
No related tags found
1 merge request
!463
MRC mods by Codefenix (2024-10-20)
Pipeline
#3983
passed
1 year ago
Stage: build
Changes
1
Pipelines
1
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
src/sbbs3/scfg/scfgsrvr.c
+239
-9
239 additions, 9 deletions
src/sbbs3/scfg/scfgsrvr.c
with
239 additions
and
9 deletions
src/sbbs3/scfg/scfgsrvr.c
+
239
−
9
View file @
d8045a30
...
...
@@ -121,7 +121,7 @@ static void global_cfg(void)
break
;
case
2
:
strListCombine
(
startup
.
interfaces
,
str
,
sizeof
(
str
),
", "
);
if
(
uifc
.
input
(
WIN_MID
|
WIN_SAV
,
0
,
0
,
"Inbound Network Interfaces"
,
str
,
sizeof
(
str
)
-
1
,
K_EDIT
)
>=
0
)
{
if
(
uifc
.
input
(
WIN_MID
|
WIN_SAV
,
0
,
0
,
"Inbound Network Interfaces
(IPv4/6)
"
,
str
,
sizeof
(
str
)
-
1
,
K_EDIT
)
>=
0
)
{
strListFree
(
&
startup
.
interfaces
);
strListSplitCopy
(
&
startup
.
interfaces
,
str
,
", "
);
uifc
.
changes
=
true
;
...
...
@@ -344,7 +344,7 @@ static void termsrvr_cfg(void)
break
;
case
6
:
strListCombine
(
startup
.
ssh_interfaces
,
str
,
sizeof
(
str
),
", "
);
if
(
uifc
.
input
(
WIN_MID
|
WIN_SAV
,
0
,
0
,
"SSH Network Interfaces"
,
str
,
sizeof
(
str
)
-
1
,
K_EDIT
)
>=
0
)
{
if
(
uifc
.
input
(
WIN_MID
|
WIN_SAV
,
0
,
0
,
"SSH Network Interfaces
(IPv4/6)
"
,
str
,
sizeof
(
str
)
-
1
,
K_EDIT
)
>=
0
)
{
strListFree
(
&
startup
.
ssh_interfaces
);
strListSplitCopy
(
&
startup
.
ssh_interfaces
,
str
,
", "
);
uifc
.
changes
=
true
;
...
...
@@ -365,7 +365,7 @@ static void termsrvr_cfg(void)
break
;
case
10
:
strListCombine
(
startup
.
telnet_interfaces
,
str
,
sizeof
(
str
),
", "
);
if
(
uifc
.
input
(
WIN_MID
|
WIN_SAV
,
0
,
0
,
"Telnet Network Interfaces"
,
str
,
sizeof
(
str
)
-
1
,
K_EDIT
)
>=
0
)
{
if
(
uifc
.
input
(
WIN_MID
|
WIN_SAV
,
0
,
0
,
"Telnet Network Interfaces
(IPv4/6)
"
,
str
,
sizeof
(
str
)
-
1
,
K_EDIT
)
>=
0
)
{
strListFree
(
&
startup
.
telnet_interfaces
);
strListSplitCopy
(
&
startup
.
telnet_interfaces
,
str
,
", "
);
uifc
.
changes
=
true
;
...
...
@@ -387,7 +387,7 @@ static void termsrvr_cfg(void)
break
;
case
15
:
strListCombine
(
startup
.
rlogin_interfaces
,
str
,
sizeof
(
str
),
", "
);
if
(
uifc
.
input
(
WIN_MID
|
WIN_SAV
,
0
,
0
,
"RLogin Network Interfaces"
,
str
,
sizeof
(
str
)
-
1
,
K_EDIT
)
>=
0
)
{
if
(
uifc
.
input
(
WIN_MID
|
WIN_SAV
,
0
,
0
,
"RLogin Network Interfaces
(IPv4/6)
"
,
str
,
sizeof
(
str
)
-
1
,
K_EDIT
)
>=
0
)
{
strListFree
(
&
startup
.
rlogin_interfaces
);
strListSplitCopy
(
&
startup
.
rlogin_interfaces
,
str
,
", "
);
uifc
.
changes
=
true
;
...
...
@@ -570,7 +570,7 @@ static void websrvr_cfg(void)
break
;
case
2
:
strListCombine
(
startup
.
interfaces
,
str
,
sizeof
(
str
),
", "
);
if
(
uifc
.
input
(
WIN_MID
|
WIN_SAV
,
0
,
0
,
"Network Interfaces"
,
str
,
sizeof
(
str
)
-
1
,
K_EDIT
)
>=
0
)
{
if
(
uifc
.
input
(
WIN_MID
|
WIN_SAV
,
0
,
0
,
"
HTTP
Network Interfaces
(IPv4/6)
"
,
str
,
sizeof
(
str
)
-
1
,
K_EDIT
)
>=
0
)
{
strListFree
(
&
startup
.
interfaces
);
strListSplitCopy
(
&
startup
.
interfaces
,
str
,
", "
);
uifc
.
changes
=
true
;
...
...
@@ -578,7 +578,7 @@ static void websrvr_cfg(void)
break
;
case
3
:
SAFEPRINTF
(
str
,
"%u"
,
startup
.
port
);
if
(
uifc
.
input
(
WIN_MID
|
WIN_SAV
,
0
,
0
,
"TCP Port"
,
str
,
5
,
K_NUMBER
|
K_EDIT
)
>
0
)
if
(
uifc
.
input
(
WIN_MID
|
WIN_SAV
,
0
,
0
,
"
HTTP
TCP Port"
,
str
,
5
,
K_NUMBER
|
K_EDIT
)
>
0
)
startup
.
port
=
atoi
(
str
);
break
;
case
4
:
...
...
@@ -586,7 +586,7 @@ static void websrvr_cfg(void)
break
;
case
5
:
strListCombine
(
startup
.
tls_interfaces
,
str
,
sizeof
(
str
),
", "
);
if
(
uifc
.
input
(
WIN_MID
|
WIN_SAV
,
0
,
0
,
"HTTP/TLS Network Interfaces"
,
str
,
sizeof
(
str
)
-
1
,
K_EDIT
)
>=
0
)
{
if
(
uifc
.
input
(
WIN_MID
|
WIN_SAV
,
0
,
0
,
"HTTP/TLS
(HTTPS)
Network Interfaces
(IPv4/6)
"
,
str
,
sizeof
(
str
)
-
1
,
K_EDIT
)
>=
0
)
{
strListFree
(
&
startup
.
tls_interfaces
);
strListSplitCopy
(
&
startup
.
tls_interfaces
,
str
,
", "
);
uifc
.
changes
=
true
;
...
...
@@ -801,7 +801,7 @@ static void ftpsrvr_cfg(void)
break
;
case
2
:
strListCombine
(
startup
.
interfaces
,
str
,
sizeof
(
str
),
", "
);
if
(
uifc
.
input
(
WIN_MID
|
WIN_SAV
,
0
,
0
,
"Network Interfaces"
,
str
,
sizeof
(
str
)
-
1
,
K_EDIT
)
>=
0
)
{
if
(
uifc
.
input
(
WIN_MID
|
WIN_SAV
,
0
,
0
,
"Network Interfaces
(IPv4/6)
"
,
str
,
sizeof
(
str
)
-
1
,
K_EDIT
)
>=
0
)
{
strListFree
(
&
startup
.
interfaces
);
strListSplitCopy
(
&
startup
.
interfaces
,
str
,
", "
);
uifc
.
changes
=
true
;
...
...
@@ -922,6 +922,7 @@ static void mailsrvr_cfg(void)
{
static
int
cur
,
bar
;
char
tmp
[
256
];
char
str
[
256
];
const
char
*
p
;
BOOL
enabled
=
FALSE
;
mail_startup_t
startup
=
{
0
};
...
...
@@ -983,7 +984,7 @@ static void mailsrvr_cfg(void)
p
=
"Silently Ignore"
;
else
if
(
startup
.
options
&
MAIL_OPT_DNSBL_BADUSER
)
p
=
"Refuse Mail"
;
else
if
(
startup
.
options
)
else
p
=
"Tag Mail"
;
sprintf
(
opt
[
i
++
],
"%-30s%s%s"
,
"Blacklisted Servers"
,
startup
.
options
&
MAIL_OPT_DNSBL_THROTTLE
?
"Throttle and "
:
""
,
p
);
sprintf
(
opt
[
i
++
],
"%-30s%s"
,
"Hash Blacklisted Messages"
,
startup
.
options
&
MAIL_OPT_DNSBL_SPAMHASH
?
"Yes"
:
"No"
);
...
...
@@ -1024,6 +1025,217 @@ static void mailsrvr_cfg(void)
enabled
=
!
enabled
;
uifc
.
changes
=
true
;
break
;
case
1
:
uifc
.
list
(
WIN_MID
|
WIN_SAV
,
0
,
0
,
0
,
&
startup
.
log_level
,
0
,
"Log Level"
,
iniLogLevelStringList
());
break
;
case
2
:
strListCombine
(
startup
.
interfaces
,
str
,
sizeof
(
str
),
", "
);
if
(
uifc
.
input
(
WIN_MID
|
WIN_SAV
,
0
,
0
,
"SMTP Network Interfaces (IPv4/6)"
,
str
,
sizeof
(
str
)
-
1
,
K_EDIT
)
>=
0
)
{
strListFree
(
&
startup
.
interfaces
);
strListSplitCopy
(
&
startup
.
interfaces
,
str
,
", "
);
uifc
.
changes
=
true
;
}
break
;
case
3
:
SAFEPRINTF
(
str
,
"%u"
,
startup
.
smtp_port
);
if
(
uifc
.
input
(
WIN_MID
|
WIN_SAV
,
0
,
0
,
"SMTP TCP Port"
,
str
,
5
,
K_NUMBER
|
K_EDIT
)
>
0
)
startup
.
smtp_port
=
atoi
(
str
);
break
;
case
4
:
startup
.
options
^=
MAIL_OPT_USE_SUBMISSION_PORT
;
break
;
case
5
:
SAFEPRINTF
(
str
,
"%u"
,
startup
.
submission_port
);
if
(
uifc
.
input
(
WIN_MID
|
WIN_SAV
,
0
,
0
,
"SMTP-Submission TCP Port"
,
str
,
5
,
K_NUMBER
|
K_EDIT
)
>
0
)
startup
.
submission_port
=
atoi
(
str
);
break
;
case
6
:
startup
.
options
^=
MAIL_OPT_TLS_SUBMISSION
;
break
;
case
7
:
SAFEPRINTF
(
str
,
"%u"
,
startup
.
submissions_port
);
if
(
uifc
.
input
(
WIN_MID
|
WIN_SAV
,
0
,
0
,
"SMTP-Submission/TLS TCP Port"
,
str
,
5
,
K_NUMBER
|
K_EDIT
)
>
0
)
startup
.
submissions_port
=
atoi
(
str
);
break
;
case
8
:
startup
.
options
^=
MAIL_OPT_ALLOW_POP3
;
break
;
case
9
:
strListCombine
(
startup
.
pop3_interfaces
,
str
,
sizeof
(
str
),
", "
);
if
(
uifc
.
input
(
WIN_MID
|
WIN_SAV
,
0
,
0
,
"POP3 Network Interfaces (IPv4/6)"
,
str
,
sizeof
(
str
)
-
1
,
K_EDIT
)
>=
0
)
{
strListFree
(
&
startup
.
pop3_interfaces
);
strListSplitCopy
(
&
startup
.
pop3_interfaces
,
str
,
", "
);
uifc
.
changes
=
true
;
}
break
;
case
10
:
SAFEPRINTF
(
str
,
"%u"
,
startup
.
pop3_port
);
if
(
uifc
.
input
(
WIN_MID
|
WIN_SAV
,
0
,
0
,
"POP3 TCP Port"
,
str
,
5
,
K_NUMBER
|
K_EDIT
)
>
0
)
startup
.
pop3_port
=
atoi
(
str
);
break
;
case
11
:
startup
.
options
^=
MAIL_OPT_TLS_POP3
;
break
;
case
12
:
SAFEPRINTF
(
str
,
"%u"
,
startup
.
pop3s_port
);
if
(
uifc
.
input
(
WIN_MID
|
WIN_SAV
,
0
,
0
,
"POP3/TLS TCP Port"
,
str
,
5
,
K_NUMBER
|
K_EDIT
)
>
0
)
startup
.
pop3s_port
=
atoi
(
str
);
break
;
case
13
:
SAFECOPY
(
str
,
maximum
(
startup
.
max_clients
));
if
(
uifc
.
input
(
WIN_MID
|
WIN_SAV
,
0
,
0
,
"Maximum Client Count (0=unlimited)"
,
str
,
10
,
K_EDIT
)
>
0
)
startup
.
max_clients
=
atoi
(
str
);
break
;
case
14
:
SAFECOPY
(
str
,
duration
(
startup
.
max_inactivity
,
false
));
if
(
uifc
.
input
(
WIN_MID
|
WIN_SAV
,
0
,
0
,
"Maximum Client Inactivity"
,
str
,
10
,
K_EDIT
)
>
0
)
startup
.
max_inactivity
=
parse_duration
(
str
);
break
;
case
15
:
SAFECOPY
(
str
,
maximum
(
startup
.
max_concurrent_connections
));
if
(
uifc
.
input
(
WIN_MID
|
WIN_SAV
,
0
,
0
,
"Maximum Concurrent (Unauthenticated) Connections"
,
str
,
10
,
K_EDIT
)
>
0
)
startup
.
max_concurrent_connections
=
atoi
(
str
);
break
;
case
16
:
SAFECOPY
(
str
,
maximum
(
startup
.
max_recipients
));
if
(
uifc
.
input
(
WIN_MID
|
WIN_SAV
,
0
,
0
,
"Maximum Recipients per Message"
,
str
,
10
,
K_EDIT
)
>
0
)
startup
.
max_recipients
=
atoi
(
str
);
break
;
case
17
:
SAFECOPY
(
str
,
maximum
(
startup
.
max_msgs_waiting
));
if
(
uifc
.
input
(
WIN_MID
|
WIN_SAV
,
0
,
0
,
"Maximum Messages Waiting per User"
,
str
,
10
,
K_EDIT
)
>
0
)
startup
.
max_msgs_waiting
=
atoi
(
str
);
break
;
case
18
:
byte_count_to_str
(
startup
.
max_msg_size
,
str
,
sizeof
(
str
));
if
(
uifc
.
input
(
WIN_MID
|
WIN_SAV
,
0
,
0
,
"Maximum Received Message Size (in bytes)"
,
str
,
10
,
K_EDIT
)
>
0
)
startup
.
max_msg_size
=
parse_byte_count
(
str
,
1
);
break
;
case
19
:
startup
.
options
^=
MAIL_OPT_ALLOW_RELAY
;
break
;
case
20
:
startup
.
options
^=
MAIL_OPT_ALLOW_SYSOP_ALIASES
;
break
;
case
21
:
startup
.
options
^=
MAIL_OPT_NO_NOTIFY
;
break
;
case
22
:
startup
.
options
^=
BBS_OPT_NO_HOST_LOOKUP
;
break
;
case
23
:
startup
.
options
^=
MAIL_OPT_DNSBL_CHKRECVHDRS
;
break
;
case
24
:
i
=
0
;
strcpy
(
opt
[
i
++
],
"Refuse Session"
);
strcpy
(
opt
[
i
++
],
"Silently Ignore"
);
strcpy
(
opt
[
i
++
],
"Refuse Mail"
);
strcpy
(
opt
[
i
++
],
"Tag Mail"
);
opt
[
i
][
0
]
=
'\0'
;
if
(
startup
.
options
&
MAIL_OPT_DNSBL_REFUSE
)
i
=
0
;
else
if
(
startup
.
options
&
MAIL_OPT_DNSBL_IGNORE
)
i
=
1
;
else
if
(
startup
.
options
&
MAIL_OPT_DNSBL_BADUSER
)
i
=
2
;
else
i
=
3
;
if
(
uifc
.
list
(
WIN_MID
|
WIN_SAV
,
0
,
0
,
0
,
&
i
,
0
,
"DNS-Blacklisted Servers"
,
opt
)
<
0
)
break
;
startup
.
options
&=
~
(
MAIL_OPT_DNSBL_REFUSE
|
MAIL_OPT_DNSBL_IGNORE
|
MAIL_OPT_DNSBL_BADUSER
);
switch
(
i
)
{
case
0
:
startup
.
options
|=
MAIL_OPT_DNSBL_REFUSE
;
break
;
case
1
:
startup
.
options
|=
MAIL_OPT_DNSBL_IGNORE
;
break
;
case
2
:
startup
.
options
|=
MAIL_OPT_DNSBL_BADUSER
;
}
i
=
startup
.
options
&
MAIL_OPT_DNSBL_THROTTLE
?
0
:
1
;
if
(
uifc
.
list
(
WIN_MID
|
WIN_SAV
,
0
,
0
,
0
,
&
i
,
0
,
"Throttle DNS-Blacklisted Servers"
,
uifcYesNoOpts
)
<
0
)
break
;
if
(
i
==
0
)
startup
.
options
|=
MAIL_OPT_DNSBL_THROTTLE
;
else
startup
.
options
&=
~
MAIL_OPT_DNSBL_THROTTLE
;
break
;
case
25
:
startup
.
options
^=
MAIL_OPT_DNSBL_SPAMHASH
;
break
;
case
26
:
startup
.
options
^=
MAIL_OPT_NO_AUTO_EXEMPT
;
break
;
case
27
:
startup
.
options
^=
MAIL_OPT_KILL_READ_SPAM
;
break
;
case
28
:
startup
.
options
^=
MAIL_OPT_NO_SENDMAIL
;
break
;
case
29
:
startup
.
options
^=
MAIL_OPT_RELAY_TX
;
break
;
case
30
:
uifc
.
input
(
WIN_MID
|
WIN_SAV
,
0
,
0
,
"Relay Server Address"
,
startup
.
relay_server
,
sizeof
(
startup
.
relay_server
)
-
1
,
K_EDIT
);
break
;
case
31
:
SAFEPRINTF
(
str
,
"%u"
,
startup
.
relay_port
);
if
(
uifc
.
input
(
WIN_MID
|
WIN_SAV
,
0
,
0
,
"Relay Server TCP Port"
,
str
,
5
,
K_NUMBER
|
K_EDIT
)
>
0
)
startup
.
relay_port
=
atoi
(
str
);
break
;
case
32
:
uifc
.
input
(
WIN_MID
|
WIN_SAV
,
0
,
0
,
"Relay Server Username"
,
startup
.
relay_user
,
sizeof
(
startup
.
relay_user
)
-
1
,
K_EDIT
);
break
;
case
33
:
uifc
.
input
(
WIN_MID
|
WIN_SAV
,
0
,
0
,
"Relay Server Password"
,
startup
.
relay_pass
,
sizeof
(
startup
.
relay_pass
)
-
1
,
K_EDIT
);
break
;
case
34
:
i
=
0
;
strcpy
(
opt
[
i
++
],
"Plain"
);
strcpy
(
opt
[
i
++
],
"Login"
);
strcpy
(
opt
[
i
++
],
"CRAM-MD5"
);
strcpy
(
opt
[
i
++
],
"None"
);
opt
[
i
][
0
]
=
'\0'
;
if
(
startup
.
options
&
MAIL_OPT_RELAY_AUTH_PLAIN
)
i
=
0
;
else
if
(
startup
.
options
&
MAIL_OPT_RELAY_AUTH_LOGIN
)
i
=
1
;
else
if
(
startup
.
options
&
MAIL_OPT_RELAY_AUTH_CRAM_MD5
)
i
=
2
;
else
i
=
3
;
if
(
uifc
.
list
(
WIN_MID
|
WIN_SAV
,
0
,
0
,
0
,
&
i
,
0
,
"Relay Server Authentication Method"
,
opt
)
<
0
)
break
;
startup
.
options
&=
~
(
MAIL_OPT_RELAY_AUTH_PLAIN
|
MAIL_OPT_RELAY_AUTH_LOGIN
|
MAIL_OPT_RELAY_AUTH_CRAM_MD5
);
switch
(
i
)
{
case
0
:
startup
.
options
|=
MAIL_OPT_RELAY_AUTH_PLAIN
;
break
;
case
1
:
startup
.
options
|=
MAIL_OPT_RELAY_AUTH_LOGIN
;
break
;
case
2
:
startup
.
options
|=
MAIL_OPT_RELAY_AUTH_CRAM_MD5
;
break
;
}
break
;
case
35
:
SAFEPRINTF
(
str
,
"%u"
,
startup
.
max_delivery_attempts
);
if
(
uifc
.
input
(
WIN_MID
|
WIN_SAV
,
0
,
0
,
"Maximum Number of SendMail Delivery Attempts"
,
str
,
5
,
K_NUMBER
|
K_EDIT
)
>
0
)
startup
.
max_delivery_attempts
=
atoi
(
str
);
break
;
case
36
:
SAFECOPY
(
str
,
duration
(
startup
.
rescan_frequency
,
false
));
if
(
uifc
.
input
(
WIN_MID
|
WIN_SAV
,
0
,
0
,
"MailBase Re-scan Interval"
,
str
,
5
,
K_EDIT
)
>
0
)
startup
.
rescan_frequency
=
parse_duration
(
str
);
break
;
case
37
:
SAFECOPY
(
str
,
duration
(
startup
.
connect_timeout
,
false
));
if
(
uifc
.
input
(
WIN_MID
|
WIN_SAV
,
0
,
0
,
"SendMail Connect Timeout"
,
str
,
5
,
K_EDIT
)
>
0
)
startup
.
connect_timeout
=
parse_duration
(
str
);
break
;
default:
if
(
memcmp
(
&
saved_startup
,
&
startup
,
sizeof
(
startup
))
!=
0
)
uifc
.
changes
=
true
;
...
...
@@ -1070,6 +1282,7 @@ static void services_cfg(void)
{
static
int
cur
,
bar
;
char
tmp
[
256
];
char
str
[
256
];
BOOL
enabled
=
FALSE
;
services_startup_t
startup
=
{
0
};
...
...
@@ -1117,6 +1330,23 @@ static void services_cfg(void)
enabled
=
!
enabled
;
uifc
.
changes
=
true
;
break
;
case
1
:
uifc
.
list
(
WIN_MID
|
WIN_SAV
,
0
,
0
,
0
,
&
startup
.
log_level
,
0
,
"Log Level"
,
iniLogLevelStringList
());
break
;
case
2
:
strListCombine
(
startup
.
interfaces
,
str
,
sizeof
(
str
),
", "
);
if
(
uifc
.
input
(
WIN_MID
|
WIN_SAV
,
0
,
0
,
"Network Interfaces (IPv4/6)"
,
str
,
sizeof
(
str
)
-
1
,
K_EDIT
)
>=
0
)
{
strListFree
(
&
startup
.
interfaces
);
strListSplitCopy
(
&
startup
.
interfaces
,
str
,
", "
);
uifc
.
changes
=
true
;
}
break
;
case
3
:
startup
.
options
^=
BBS_OPT_NO_HOST_LOOKUP
;
break
;
case
4
:
uifc
.
input
(
WIN_MID
|
WIN_SAV
,
0
,
0
,
"Services Configuration File"
,
startup
.
services_ini
,
sizeof
(
startup
.
services_ini
)
-
1
,
K_EDIT
);
break
;
default:
if
(
memcmp
(
&
saved_startup
,
&
startup
,
sizeof
(
startup
))
!=
0
)
uifc
.
changes
=
true
;
...
...
This diff is collapsed.
Click to expand it.
Preview
0%
Loading
Try again
or
attach a new file
.
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Save comment
Cancel
Please
register
or
sign in
to comment