mailinabox/setup/options-dialog.py

61 lines
2.0 KiB
Python

#!/usr/bin/env python
# encoding: utf-8
import npyscreen
import sys
import os
class TestApp(npyscreen.NPSApp):
def main(self):
# These lines create the form and populate it with widgets.
# A fairly complex screen in only 8 or so lines of code - a line for each control.
npyscreen.setTheme(npyscreen.Themes.BlackOnWhiteTheme)
form = npyscreen.Form(name = "Mail-in-a-Box Options",)
postgrey_text = form.add(
npyscreen.TitleFixedText,
name="POSTGREY",
value="Should Postgrey be used to greylist messages?",
editable=False
)
form.add(npyscreen.FixedText)
postgrey_text = form.add(
npyscreen.MultiLineEditable,
name="POSTSRSD",
value="The PostSRSd daemon performs return path rewriting using the SRS protocol.\n"
"Not that all messages, including locally delivered mail will have their return\n"
"paths rewritten",
max_height=4,
editable=False
)
form.add(npyscreen.FixedText)
options = form.add(
npyscreen.TitleMultiSelect,
max_height=-2,
value = [
int(os.getenv('POSTGREY', 1)),
int(os.getenv('POSTSRSD', 0)),
int(os.getenv('POLICY_SPF', 0))
],
name="Options",
values= ["POSTGREY","POSTSRSD","POLICY_SPF"],
scroll_exit=True
)
# This lets the user interact with the Form.
form.edit()
with open('_options.sh', 'w') as output:
print('POSTGREY=%i' % (1 if 0 in options.value else 0), file=output)
print('POSTSRSD=%i' % (1 if 1 in options.value else 0), file=output)
print('POLICY_SPF=%i' % (1 if 2 in options.value else 0), file=output)
# print(npyscreen.ThemeManager.default_colors, file=output)
if __name__ == "__main__":
App = TestApp()
App.run()