diff options
| -rw-r--r-- | cgit.c | 2 | ||||
| -rw-r--r-- | cgit.h | 1 | ||||
| -rw-r--r-- | cgitrc.5.txt | 7 | ||||
| -rw-r--r-- | scan-tree.c | 4 |
4 files changed, 14 insertions, 0 deletions
| @@ -121,6 +121,8 @@ void config_cb(const char *name, const char *value) | |||
| 121 | ctx.cfg.logo_link = xstrdup(value); | 121 | ctx.cfg.logo_link = xstrdup(value); |
| 122 | else if (!strcmp(name, "module-link")) | 122 | else if (!strcmp(name, "module-link")) |
| 123 | ctx.cfg.module_link = xstrdup(value); | 123 | ctx.cfg.module_link = xstrdup(value); |
| 124 | else if (!strcmp(name, "strict-export")) | ||
| 125 | ctx.cfg.strict_export = xstrdup(value); | ||
| 124 | else if (!strcmp(name, "virtual-root")) { | 126 | else if (!strcmp(name, "virtual-root")) { |
| 125 | ctx.cfg.virtual_root = trim_end(value, '/'); | 127 | ctx.cfg.virtual_root = trim_end(value, '/'); |
| 126 | if (!ctx.cfg.virtual_root && (!strcmp(value, "/"))) | 128 | if (!ctx.cfg.virtual_root && (!strcmp(value, "/"))) |
| @@ -176,6 +176,7 @@ struct cgit_config { | |||
| 176 | char *script_name; | 176 | char *script_name; |
| 177 | char *section; | 177 | char *section; |
| 178 | char *virtual_root; | 178 | char *virtual_root; |
| 179 | char *strict_export; | ||
| 179 | int cache_size; | 180 | int cache_size; |
| 180 | int cache_dynamic_ttl; | 181 | int cache_dynamic_ttl; |
| 181 | int cache_max_create_time; | 182 | int cache_max_create_time; |
diff --git a/cgitrc.5.txt b/cgitrc.5.txt index ce78d41..75b6584 100644 --- a/cgitrc.5.txt +++ b/cgitrc.5.txt | |||
| @@ -317,6 +317,13 @@ summary-tags:: | |||
| 317 | Specifies the number of tags to display in the repository "summary" | 317 | Specifies the number of tags to display in the repository "summary" |
| 318 | view. Default value: "10". | 318 | view. Default value: "10". |
| 319 | 319 | ||
| 320 | strict-export:: | ||
| 321 | Filename which, if specified, needs to be present within the repository | ||
| 322 | for cgit to allow access to that repository. This can be used to emulate | ||
| 323 | gitweb's EXPORT_OK and STRICT_EXPORT functionality and limit cgit's | ||
| 324 | repositories to match those exported by git-daemon. This option MUST come | ||
| 325 | before 'scan-path'. | ||
| 326 | |||
| 320 | virtual-root:: | 327 | virtual-root:: |
| 321 | Url which, if specified, will be used as root for all cgit links. It | 328 | Url which, if specified, will be used as root for all cgit links. It |
| 322 | will also cause cgit to generate 'virtual urls', i.e. urls like | 329 | will also cause cgit to generate 'virtual urls', i.e. urls like |
diff --git a/scan-tree.c b/scan-tree.c index b5b50f3..a0e09ce 100644 --- a/scan-tree.c +++ b/scan-tree.c | |||
| @@ -81,6 +81,10 @@ static void add_repo(const char *base, const char *path, repo_config_fn fn) | |||
| 81 | path, strerror(errno), errno); | 81 | path, strerror(errno), errno); |
| 82 | return; | 82 | return; |
| 83 | } | 83 | } |
| 84 | |||
| 85 | if (ctx.cfg.strict_export && stat(fmt("%s/%s", path, ctx.cfg.strict_export), &st)) | ||
| 86 | return; | ||
| 87 | |||
| 84 | if (!stat(fmt("%s/noweb", path), &st)) | 88 | if (!stat(fmt("%s/noweb", path), &st)) |
| 85 | return; | 89 | return; |
| 86 | 90 | ||
