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") |