pam: use a pam object method instead of pam module function
[cascardo/ipsilon.git] / ipsilon / tools / files.py
1 # Copyright (C) 2014 Ipsilon project Contributors, for license see COPYING
2
3 import os
4 import pwd
5 from string import Template
6
7
8 def fix_user_dirs(path, user=None, mode=0700):
9     pw = None
10     if user:
11         pw = pwd.getpwnam(user)
12     for t in os.walk(path, topdown=False):
13         root, files = t[0], t[2]
14         for name in files:
15             target = os.path.join(root, name)
16             if pw:
17                 os.chown(target, pw.pw_uid, pw.pw_gid)
18             os.chmod(target, mode & 0666)
19         if pw:
20             os.chown(root, pw.pw_uid, pw.pw_gid)
21         os.chmod(root, mode)
22
23
24 def write_from_template(destfile, template, opts):
25     with open(template) as f:
26         t = Template(f.read())
27     text = t.substitute(**opts)
28     with open(destfile, 'w+') as f:
29         f.write(text)