Skip to content

Commit fae50aa

Browse files
committed
feat(ssmtp-setup): create script to setup ssmtp configs on runtime close #1
1 parent d3c4647 commit fae50aa

File tree

3 files changed

+94
-1
lines changed

3 files changed

+94
-1
lines changed

spaceonfire/bin/sof-start

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -56,7 +56,7 @@ if [ ! -z "$SOF_PRESET" ]; then
5656
select-preset $SOF_PRESET
5757
fi
5858

59-
# TODO: setup ssmtp by env
59+
ssmtp-setup
6060

6161
# Prevent config files from being filled to infinity by force of stop and restart the container
6262
lastlinephpconf="$(grep "." /usr/local/etc/php-fpm.conf | tail -1)"

spaceonfire/bin/ssmtp-setup

Lines changed: 80 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,80 @@
1+
#!/usr/bin/env php
2+
<?php
3+
function setupSsmtpConf() {
4+
$ssmtp = $_ENV['SSMTP_URI'];
5+
6+
if (!$ssmtp) {
7+
echo 'SSMTP_URI env variable is empty. Skip ssmtp setup...' . "\n";
8+
exit(0);
9+
}
10+
11+
$ssmtp = parse_url($ssmtp);
12+
13+
if (!$ssmtp['scheme'] || !$ssmtp['host']) {
14+
echo 'Wrong URI format for SSMTP_URI!' . "\n";
15+
exit(1);
16+
}
17+
18+
$conf = [
19+
'FromLineOverride=YES',
20+
];
21+
22+
$conf[] = 'mailhub=' . $ssmtp['host'] . ($ssmtp['port'] ? ':' . $ssmtp['port'] : '');
23+
24+
if ($ssmtp['user']) {
25+
$conf[] = 'AuthUser=' . $ssmtp['user'];
26+
}
27+
28+
if ($ssmtp['pass']) {
29+
$conf[] = 'AuthPass=' . $ssmtp['pass'];
30+
}
31+
32+
if ($_ENV['DOMAIN']) {
33+
$conf[] = 'RewriteDomain=' . $_ENV['DOMAIN'];
34+
}
35+
36+
if ($_ENV['SSMTP_DEBUG']) {
37+
$conf[] = 'Debug=YES';
38+
}
39+
40+
if (strpos(strtolower($ssmtp['scheme']), 'tls') !== false) {
41+
$conf[] = 'UseTLS=YES';
42+
$conf[] = 'TLS_CA_File=/etc/ssl/certs/ca-certificates.crt';
43+
}
44+
45+
$conf = implode("\n", $conf);
46+
file_put_contents('/etc/ssmtp/ssmtp.conf', $conf, FILE_APPEND | LOCK_EX);
47+
}
48+
49+
function setupRevAliases() {
50+
if (!$_ENV['SSMTP_DEFAULT_FROM']) {
51+
echo 'SSMTP_DEFAULT_FROM env variable is empty. Skip ssmtp revaliases setup...' . "\n";
52+
exit(0);
53+
}
54+
55+
exec('cut -d: -f1 /etc/passwd', $users, $tmp);
56+
57+
if ($tmp !== 0) {
58+
echo 'Cannot get system users list';
59+
exit($tmp);
60+
}
61+
62+
unset($tmp);
63+
64+
$ssmtp = parse_url($_ENV['SSMTP_URI']);
65+
66+
$mailhub = $ssmtp['host'] . ($ssmtp['port'] ? ':' . $ssmtp['port'] : '');
67+
68+
$users = array_map(function ($user) use ($mailhub) {
69+
return $user . ':' . $_ENV['SSMTP_DEFAULT_FROM'] . ':' . $mailhub;
70+
}, $users);
71+
72+
file_put_contents(
73+
'/etc/ssmtp/revaliases',
74+
implode("\n", $users),
75+
FILE_APPEND | LOCK_EX
76+
);
77+
}
78+
79+
setupRevAliases();
80+
setupSsmtpConf();

test/basic/docker-compose.yml

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
version: '3'
2+
3+
services:
4+
test:
5+
build: ../../
6+
volumes:
7+
- ../../spaceonfire:/opt/spaceonfire:Z
8+
ports:
9+
- 8080:80
10+
environment:
11+
- RUN_SCRIPTS=1
12+
- PUID=1000
13+
- PAGER=more

0 commit comments

Comments
 (0)