18 self.quiet = self.verbose = self.debugflag = self.traceback = False |
18 self.quiet = self.verbose = self.debugflag = self.traceback = False |
19 self.interactive = self.report_untrusted = True |
19 self.interactive = self.report_untrusted = True |
20 self.overlay = config.config() |
20 self.overlay = config.config() |
21 self.cdata = config.config() |
21 self.cdata = config.config() |
22 self.ucdata = config.config() |
22 self.ucdata = config.config() |
23 self.trusted_users = {} |
23 self._trustusers = {} |
24 self.trusted_groups = {} |
24 self._trustgroups = {} |
25 |
25 |
26 if src: |
26 if src: |
27 self.cdata = src.cdata.copy() |
27 self.cdata = src.cdata.copy() |
28 self.ucdata = src.ucdata.copy() |
28 self.ucdata = src.ucdata.copy() |
29 self.overlay = src.overlay.copy() |
29 self.overlay = src.overlay.copy() |
30 self.trusted_users = src.trusted_users.copy() |
30 self._trustusers = src._trustusers.copy() |
31 self.trusted_groups = src.trusted_groups.copy() |
31 self._trustgroups = src._trustgroups.copy() |
32 self.fixconfig() |
32 self.fixconfig() |
33 else: |
33 else: |
34 # we always trust global config files |
34 # we always trust global config files |
35 for f in util.rcpath(): |
35 for f in util.rcpath(): |
36 self.readconfig(f, trust=True) |
36 self.readconfig(f, trust=True) |
52 def _is_trusted(self, fp, f): |
52 def _is_trusted(self, fp, f): |
53 st = util.fstat(fp) |
53 st = util.fstat(fp) |
54 if util.isowner(fp, st): |
54 if util.isowner(fp, st): |
55 return True |
55 return True |
56 |
56 |
57 tusers = self.trusted_users |
57 tusers, tgroups = self._trustusers, self._trustgroups |
58 tgroups = self.trusted_groups |
|
59 if '*' in tusers or '*' in tgroups: |
58 if '*' in tusers or '*' in tgroups: |
60 return True |
59 return True |
61 |
60 |
62 user = util.username(st.st_uid) |
61 user = util.username(st.st_uid) |
63 group = util.groupname(st.st_gid) |
62 group = util.groupname(st.st_gid) |
116 self.interactive = self.configbool("ui", "interactive", self.isatty()) |
115 self.interactive = self.configbool("ui", "interactive", self.isatty()) |
117 self.traceback = self.configbool('ui', 'traceback', False) |
116 self.traceback = self.configbool('ui', 'traceback', False) |
118 |
117 |
119 # update trust information |
118 # update trust information |
120 for user in self.configlist('trusted', 'users'): |
119 for user in self.configlist('trusted', 'users'): |
121 self.trusted_users[user] = 1 |
120 self._trustusers[user] = 1 |
122 for group in self.configlist('trusted', 'groups'): |
121 for group in self.configlist('trusted', 'groups'): |
123 self.trusted_groups[group] = 1 |
122 self._trustgroups[group] = 1 |
124 |
123 |
125 def setconfig(self, section, name, value): |
124 def setconfig(self, section, name, value): |
126 for cdata in (self.overlay, self.cdata, self.ucdata): |
125 for cdata in (self.overlay, self.cdata, self.ucdata): |
127 cdata.set(section, name, value) |
126 cdata.set(section, name, value) |
128 self.fixconfig() |
127 self.fixconfig() |