mercurial/hgweb.py
changeset 1646 8e9c203946ae
parent 1637 3b1b44b917f4
child 1649 beb7da710c8a
equal deleted inserted replaced
1645:c6ffedc4f11b 1646:8e9c203946ae
   799     # add tags to things
   799     # add tags to things
   800     # tags -> list of changesets corresponding to tags
   800     # tags -> list of changesets corresponding to tags
   801     # find tag, changeset, file
   801     # find tag, changeset, file
   802 
   802 
   803     def run(self, req=hgrequest()):
   803     def run(self, req=hgrequest()):
       
   804         def clean(path):
       
   805             p = os.path.normpath(path)
       
   806             if p[:2] == "..":
       
   807                 raise "suspicious path"
       
   808             return p
       
   809 
   804         def header(**map):
   810         def header(**map):
   805             yield self.t("header", **map)
   811             yield self.t("header", **map)
   806 
   812 
   807         def footer(**map):
   813         def footer(**map):
   808             yield self.t("footer", **map)
   814             yield self.t("footer", **map)
   879 
   885 
   880         elif req.form['cmd'][0] == 'changeset':
   886         elif req.form['cmd'][0] == 'changeset':
   881             req.write(self.changeset(req.form['node'][0]))
   887             req.write(self.changeset(req.form['node'][0]))
   882 
   888 
   883         elif req.form['cmd'][0] == 'manifest':
   889         elif req.form['cmd'][0] == 'manifest':
   884             req.write(self.manifest(req.form['manifest'][0], req.form['path'][0]))
   890             req.write(self.manifest(req.form['manifest'][0],
       
   891                                     clean(req.form['path'][0])))
   885 
   892 
   886         elif req.form['cmd'][0] == 'tags':
   893         elif req.form['cmd'][0] == 'tags':
   887             req.write(self.tags())
   894             req.write(self.tags())
   888 
   895 
   889         elif req.form['cmd'][0] == 'summary':
   896         elif req.form['cmd'][0] == 'summary':
   890             req.write(self.summary())
   897             req.write(self.summary())
   891 
   898 
   892         elif req.form['cmd'][0] == 'filediff':
   899         elif req.form['cmd'][0] == 'filediff':
   893             req.write(self.filediff(req.form['file'][0], req.form['node'][0]))
   900             req.write(self.filediff(clean(req.form['file'][0]),
       
   901                                     req.form['node'][0]))
   894 
   902 
   895         elif req.form['cmd'][0] == 'file':
   903         elif req.form['cmd'][0] == 'file':
   896             req.write(self.filerevision(req.form['file'][0], req.form['filenode'][0]))
   904             req.write(self.filerevision(clean(req.form['file'][0]),
       
   905                                         req.form['filenode'][0]))
   897 
   906 
   898         elif req.form['cmd'][0] == 'annotate':
   907         elif req.form['cmd'][0] == 'annotate':
   899             req.write(self.fileannotate(req.form['file'][0], req.form['filenode'][0]))
   908             req.write(self.fileannotate(clean(req.form['file'][0]),
       
   909                                         req.form['filenode'][0]))
   900 
   910 
   901         elif req.form['cmd'][0] == 'filelog':
   911         elif req.form['cmd'][0] == 'filelog':
   902             req.write(self.filelog(req.form['file'][0], req.form['filenode'][0]))
   912             req.write(self.filelog(clean(req.form['file'][0]),
       
   913                                    req.form['filenode'][0]))
   903 
   914 
   904         elif req.form['cmd'][0] == 'heads':
   915         elif req.form['cmd'][0] == 'heads':
   905             req.httphdr("application/mercurial-0.1")
   916             req.httphdr("application/mercurial-0.1")
   906             h = self.repo.heads()
   917             h = self.repo.heads()
   907             req.write(" ".join(map(hex, h)) + "\n")
   918             req.write(" ".join(map(hex, h)) + "\n")