diff options
author | Andrew Shadura <andrew@shadura.me> | 2015-08-20 15:58:26 +0200 |
---|---|---|
committer | Andrew Shadura <andrew@shadura.me> | 2015-08-20 15:58:26 +0200 |
commit | ff1408420159488a106492ccd11dd234967029b6 (patch) | |
tree | 473420cee1c5229a427ec4cafead1aa6c0a26800 /reconfigure/items/samba.py |
Imported Upstream version 0.1.29
Diffstat (limited to 'reconfigure/items/samba.py')
-rw-r--r-- | reconfigure/items/samba.py | 59 |
1 files changed, 59 insertions, 0 deletions
diff --git a/reconfigure/items/samba.py b/reconfigure/items/samba.py new file mode 100644 index 0000000..079da5e --- /dev/null +++ b/reconfigure/items/samba.py @@ -0,0 +1,59 @@ +from reconfigure.nodes import Node, PropertyNode +from reconfigure.items.bound import BoundData +from util import yn_getter, yn_setter + + +class SambaData (BoundData): + pass + + +class GlobalData (BoundData): + pass + + +class ShareData (BoundData): + fields = [ + 'comment', 'path', 'guest ok', 'browseable', 'create mask', 'directory mask', 'read only', + 'follow symlinks', 'wide links', + ] + defaults = [ + '', '', 'no', 'yes', '0744', '0755', 'yes', + 'yes', 'no', + ] + + def template(self): + return Node( + 'share', + *[PropertyNode(x, y) for x, y in zip(ShareData.fields, ShareData.defaults)] + ) + + +SambaData.bind_child('global', lambda x: x.get('global'), item_class=GlobalData) +SambaData.bind_collection('shares', selector=lambda x: x.name != 'global', item_class=ShareData) + + +GlobalData.bind_property('workgroup', 'workgroup', default='') +GlobalData.bind_property('server string', 'server_string', default='') +GlobalData.bind_property('interfaces', 'interfaces', default='') +GlobalData.bind_property( + 'bind interfaces only', 'bind_interfaces_only', default=True, + getter=yn_getter, setter=yn_setter) +GlobalData.bind_property('log file', 'log_file', default='') +GlobalData.bind_property('security', 'security', default='user') + +ShareData.bind_name('name') +ShareData.bind_property('path', 'path', default='') +ShareData.bind_property('comment', 'comment', default='') +ShareData.bind_property('create mask', 'create_mask', default='0744') +ShareData.bind_property('directory mask', 'directory_mask', default='0755') + +for x, y in [ + ('guest ok', False), + ('browseable', True), + ('read only', True), + ('follow symlinks', True), + ('wide links', False), +]: + ShareData.bind_property( + x, x.replace(' ', '_'), default=y, + getter=yn_getter, setter=yn_setter) |