hgweb: add allow_archive support to [web] section of hgrc
authorTK Soh <teekaysoh@yahoo.com>
Thu, 01 Jun 2006 10:02:24 -0500
changeset 2358 8819fc1dcf4b
parent 2357 4a7bdb1e8dc1
child 2359 a392eaa81f29
hgweb: add allow_archive support to [web] section of hgrc
doc/hgrc.5.txt
mercurial/hgweb/hgweb_mod.py
mercurial/hgweb/hgwebdir_mod.py
--- a/doc/hgrc.5.txt	Wed May 31 14:16:21 2006 -0700
+++ b/doc/hgrc.5.txt	Thu Jun 01 10:02:24 2006 -0500
@@ -362,15 +362,20 @@
     Where to output the access log. Default is stdout.
   address;;
     Interface address to bind to. Default is all.
+  allow_archive;;
+    List of archive format (bz2, gz, zip) allowed for downloading.
+    Default is empty.
   allowbz2;;
-    Whether to allow .tar.bz2 downloading of repo revisions. Default is false.
+    (DEPRECATED) Whether to allow .tar.bz2 downloading of repo revisions.
+    Default is false.
   allowgz;;
-    Whether to allow .tar.gz downloading of repo revisions. Default is false.
+    (DEPRECATED) Whether to allow .tar.gz downloading of repo revisions.
+    Default is false.
   allowpull;;
     Whether to allow pulling from the repository. Default is true.
   allowzip;;
-    Whether to allow .zip downloading of repo revisions. Default is false.
-    This feature creates temporary files.
+    (DEPRECATED) Whether to allow .zip downloading of repo revisions.
+    Default is false. This feature creates temporary files.
   baseurl;;
     Base URL to use when publishing URLs in other locations, so
     third-party tools like email notification hooks can construct URLs.
--- a/mercurial/hgweb/hgweb_mod.py	Wed May 31 14:16:21 2006 -0700
+++ b/mercurial/hgweb/hgweb_mod.py	Thu Jun 01 10:02:24 2006 -0500
@@ -48,8 +48,9 @@
             self.allowpull = self.repo.ui.configbool("web", "allowpull", True)
 
     def archivelist(self, nodeid):
+        al = self.repo.ui.config("web", "allow_archive", "").split()
         for i in self.archives:
-            if self.repo.ui.configbool("web", "allow" + i, False):
+            if i in al or self.repo.ui.configbool("web", "allow" + i, False):
                 yield {"type" : i, "node" : nodeid, "url": ""}
 
     def listfiles(self, files, mf):
@@ -803,8 +804,9 @@
         elif cmd == 'archive':
             changeset = self.repo.lookup(req.form['node'][0])
             type = req.form['type'][0]
-            if (type in self.archives and
-                self.repo.ui.configbool("web", "allow" + type, False)):
+            allowed = self.repo.ui.config("web", "allow_archive", "").split()
+            if (type in self.archives and (type in allowed or
+                self.repo.ui.configbool("web", "allow" + type, False))):
                 self.archive(req, changeset, type)
                 return
 
--- a/mercurial/hgweb/hgwebdir_mod.py	Wed May 31 14:16:21 2006 -0700
+++ b/mercurial/hgweb/hgwebdir_mod.py	Thu Jun 01 10:02:24 2006 -0500
@@ -58,8 +58,9 @@
                                              "footer": footer})
 
         def archivelist(ui, nodeid, url):
+            al = ui.config("web", "allow_archive", "").split()
             for i in ['zip', 'gz', 'bz2']:
-                if ui.configbool("web", "allow" + i, False):
+                if i in al or ui.configbool("web", "allow" + i, False):
                     yield {"type" : i, "node": nodeid, "url": url}
 
         def entries(sortcolumn="", descending=False, **map):