59 lines
		
	
	
	
		
			1.5 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
			
		
		
	
	
			59 lines
		
	
	
	
		
			1.5 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
from shlex import quote
 | 
						|
 | 
						|
files = {
 | 
						|
    '/etc/samba/smb.conf': {
 | 
						|
        'content_type': 'mako',
 | 
						|
        'context': {
 | 
						|
            'shares': {
 | 
						|
                name: {
 | 
						|
                    'comment': name,
 | 
						|
                    'path': f'/var/lib/samba/usershares/{name}',
 | 
						|
                    'valid users': name,
 | 
						|
                    'public': 'no',
 | 
						|
                    'writable': 'yes',
 | 
						|
                    'browsable': 'yes',
 | 
						|
                }
 | 
						|
                    for name, conf in node.metadata.get('samba/shares').items()
 | 
						|
            },
 | 
						|
        },
 | 
						|
        'needs': [
 | 
						|
            'pkg_apt:samba',
 | 
						|
        ],
 | 
						|
        'triggers': [
 | 
						|
            'svc_systemd:smbd.service:restart',
 | 
						|
        ],
 | 
						|
    },
 | 
						|
}
 | 
						|
 | 
						|
directories = {
 | 
						|
    '/var/lib/samba/usershares': {
 | 
						|
        'mode': '1751',
 | 
						|
    },
 | 
						|
}
 | 
						|
 | 
						|
 | 
						|
svc_systemd = {
 | 
						|
    'smbd.service': {},
 | 
						|
}
 | 
						|
 | 
						|
for name, conf in node.metadata.get('samba/shares').items():
 | 
						|
    quoted_password = quote(str(conf['password']))
 | 
						|
    actions[f'samba_password_{name}'] = {
 | 
						|
        'command': f"(echo {quoted_password}; echo {quoted_password}) | smbpasswd -s -a {name}",
 | 
						|
        'unless': f"echo {quoted_password} | smbclient -U {name} //localhost/{name} -c 'ls'",
 | 
						|
        'needs': [
 | 
						|
            f'user:{name}',
 | 
						|
            'svc_systemd:smbd.service:restart',
 | 
						|
        ],
 | 
						|
    }
 | 
						|
 | 
						|
    directories[f'/var/lib/samba/usershares/{name}'] = {
 | 
						|
        'owner': name,
 | 
						|
        'group': name,
 | 
						|
        'needs': [
 | 
						|
            f"zfs_dataset:{node.metadata.get('zfs/storage_classes/hdd')}/samba/{name}",
 | 
						|
        ],
 | 
						|
    }
 | 
						|
 | 
						|
 | 
						|
# TTMx36kcLbdkdgOqvxjlX03tLCjgeyXq
 |