Skip to content
GitLab
Menu
Projects
Groups
Snippets
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
Menu
Open sidebar
wizards
mffzoom
Commits
1adb5df1
Commit
1adb5df1
authored
Apr 23, 2022
by
Martin Mareš
Browse files
Added a Sieve filter for automatic processing of login codes
parent
5991fa72
Changes
2
Hide whitespace changes
Inline
Side-by-side
code/README
0 → 100644
View file @
1adb5df1
Copy zoom-code to /usr/local/lib/dovecot/sieve-pipe/, so that it can be
executed by Sieve.
Set up Sieve to pipe e-mail with the right subject to this filter.
code/zoom-code
0 → 100755
View file @
1adb5df1
#!/usr/bin/python3
# Sieve pipe handler for processing Zoom login codes
import
email
import
email.policy
import
os
import
re
import
subprocess
import
sys
import
syslog
from
tempfile
import
NamedTemporaryFile
def
fail
(
msg
):
syslog
.
syslog
(
syslog
.
LOG_ERR
,
msg
)
sys
.
exit
(
0
)
def
mumble
(
msg
):
syslog
.
syslog
(
syslog
.
LOG_INFO
,
msg
)
def
main
():
msg
=
email
.
message_from_file
(
sys
.
stdin
,
policy
=
email
.
policy
.
default
)
to
=
msg
.
get
(
'To'
,
""
)
m
=
re
.
match
(
'(zoom(-m)?-[0-9]{1,2})@'
,
to
)
if
not
m
:
fail
(
'Cannot determine recipient account'
)
user
=
m
[
1
]
body
=
msg
.
get_body
()
body_ct
=
body
.
get_content_type
()
if
body_ct
==
'text/html'
:
tmpf
=
NamedTemporaryFile
(
mode
=
'w'
)
tmpf
.
write
(
body
.
get_content
())
tmpf
.
flush
()
res
=
subprocess
.
run
([
'/usr/bin/lynx'
,
'-force_html'
,
'-nolist'
,
'-display_charset=utf-8'
,
'-dump'
,
tmpf
.
name
],
stdout
=
subprocess
.
PIPE
,
text
=
True
)
if
res
.
returncode
!=
0
:
fail
(
f
'Subprocess failed with return code
{
res
.
returncode
}
'
)
out
=
res
.
stdout
else
:
out
=
body
.
get_content
()
os
.
umask
(
0o022
)
with
open
(
f
"/srv/mffzoom/code/www/
{
user
}
.txt"
,
"w"
)
as
f
:
f
.
write
(
out
)
try
:
syslog
.
openlog
(
'zoom-code'
)
main
()
mumble
(
'Login code stored'
)
except
Exception
as
e
:
fail
(
str
(
e
))
Write
Preview
Supports
Markdown
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment