45 lines
977 B
Python
Executable File
45 lines
977 B
Python
Executable File
#!/usr/bin/env python3
|
|
|
|
import sys
|
|
import magic
|
|
|
|
|
|
_ = r"""
|
|
reject file uploads by mimetype
|
|
|
|
dependencies (linux, macos):
|
|
python3 -m pip install --user -U python-magic
|
|
|
|
dependencies (windows):
|
|
python3 -m pip install --user -U python-magic-bin
|
|
|
|
example usage as global config:
|
|
--xau c,bin/hooks/reject-mimetype.py
|
|
|
|
example usage as a volflag (per-volume config):
|
|
-v srv/inc:inc:r:rw,ed:c,xau=c,bin/hooks/reject-mimetype.py
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
|
|
(share filesystem-path srv/inc as volume /inc,
|
|
readable by everyone, read-write for user 'ed',
|
|
running this plugin on all uploads with the params listed below)
|
|
|
|
parameters explained,
|
|
xau = execute after upload
|
|
c = check result, reject upload if error
|
|
"""
|
|
|
|
|
|
def main():
|
|
ok = ["image/jpeg", "image/png"]
|
|
|
|
mt = magic.from_file(sys.argv[1], mime=True)
|
|
|
|
print(mt)
|
|
|
|
sys.exit(1 if mt not in ok else 0)
|
|
|
|
|
|
if __name__ == "__main__":
|
|
main()
|