Merge pull request #39 from TPXP/add_show_path
Add the 'show_path' configuration directivepull/42/head
						commit
						ba8b4ece63
					
				
							
								
								
									
										13
									
								
								README.rst
								
								
								
								
							
							
						
						
									
										13
									
								
								README.rst
								
								
								
								
							|  | @ -176,6 +176,19 @@ fancyindex_header | ||||||
| .. note:: Using this directive needs the ngx_http_addition_module_ built | .. note:: Using this directive needs the ngx_http_addition_module_ built | ||||||
|    into Nginx. |    into Nginx. | ||||||
| 
 | 
 | ||||||
|  | fancyindex_show_path | ||||||
|  | ~~~~~~~~~~~~~~~~~ | ||||||
|  | :Syntax: *fancyindex_show_path* [*on* | *off*] | ||||||
|  | :Default: fancyindex_show_path on | ||||||
|  | :Context: http, server, location | ||||||
|  | :Description: | ||||||
|  |   Whether to output or not the path and the closing </h1> tag after the header. | ||||||
|  |   This is useful when you want to handle the path displaying with a PHP script | ||||||
|  |   for example. | ||||||
|  | 
 | ||||||
|  | .. warning:: This directive can be turned off only if a custom header is provided | ||||||
|  |    using fancyindex_header. | ||||||
|  | 
 | ||||||
| fancyindex_ignore | fancyindex_ignore | ||||||
| ~~~~~~~~~~~~~~~~~ | ~~~~~~~~~~~~~~~~~ | ||||||
| :Syntax: *fancyindex_ignore string1 [string2 [... stringN]]* | :Syntax: *fancyindex_ignore string1 [string2 [... stringN]]* | ||||||
|  |  | ||||||
|  | @ -152,6 +152,7 @@ typedef struct { | ||||||
|     ngx_flag_t exact_size;   /**< Sizes are sent always in bytes. */ |     ngx_flag_t exact_size;   /**< Sizes are sent always in bytes. */ | ||||||
|     ngx_uint_t name_length;  /**< Maximum length of file names in bytes. */ |     ngx_uint_t name_length;  /**< Maximum length of file names in bytes. */ | ||||||
|     ngx_flag_t hide_symlinks;/**< Hide symbolic links in listings. */ |     ngx_flag_t hide_symlinks;/**< Hide symbolic links in listings. */ | ||||||
|  |     ngx_flag_t show_path;    /**< Whether to display or not the path + '</h1>' after the header */ | ||||||
| 
 | 
 | ||||||
|     ngx_str_t  header;       /**< File name for header, or empty if none. */ |     ngx_str_t  header;       /**< File name for header, or empty if none. */ | ||||||
|     ngx_str_t  footer;       /**< File name for footer, or empty if none. */ |     ngx_str_t  footer;       /**< File name for footer, or empty if none. */ | ||||||
|  | @ -339,6 +340,13 @@ static ngx_command_t  ngx_http_fancyindex_commands[] = { | ||||||
|       offsetof(ngx_http_fancyindex_loc_conf_t, hide_symlinks), |       offsetof(ngx_http_fancyindex_loc_conf_t, hide_symlinks), | ||||||
|       NULL }, |       NULL }, | ||||||
| 
 | 
 | ||||||
|  |     { ngx_string("fancyindex_show_path"), | ||||||
|  |       NGX_HTTP_MAIN_CONF|NGX_HTTP_SRV_CONF|NGX_HTTP_LOC_CONF|NGX_CONF_FLAG, | ||||||
|  |       ngx_conf_set_flag_slot, | ||||||
|  |       NGX_HTTP_LOC_CONF_OFFSET, | ||||||
|  |       offsetof(ngx_http_fancyindex_loc_conf_t, show_path), | ||||||
|  |       NULL }, | ||||||
|  | 
 | ||||||
|     { ngx_string("fancyindex_time_format"), |     { ngx_string("fancyindex_time_format"), | ||||||
|       NGX_HTTP_MAIN_CONF|NGX_HTTP_SRV_CONF|NGX_HTTP_LOC_CONF|NGX_CONF_FLAG, |       NGX_HTTP_MAIN_CONF|NGX_HTTP_SRV_CONF|NGX_HTTP_LOC_CONF|NGX_CONF_FLAG, | ||||||
|       ngx_conf_set_str_slot, |       ngx_conf_set_str_slot, | ||||||
|  | @ -711,13 +719,21 @@ make_content_buf( | ||||||
|     /*
 |     /*
 | ||||||
|      * Calculate needed buffer length. |      * Calculate needed buffer length. | ||||||
|      */ |      */ | ||||||
|     len = r->uri.len |     if (alcf->show_path) | ||||||
|         + ngx_sizeof_ssz(t05_body2) |         len = r->uri.len | ||||||
|         + ngx_sizeof_ssz(t06_list1) |           + ngx_sizeof_ssz(t05_body2) | ||||||
|         + ngx_sizeof_ssz(t_parentdir_entry) |           + ngx_sizeof_ssz(t06_list1) | ||||||
|         + ngx_sizeof_ssz(t07_list2) |           + ngx_sizeof_ssz(t_parentdir_entry) | ||||||
|         + ngx_fancyindex_timefmt_calc_size (&alcf->time_format) * entries.nelts |           + ngx_sizeof_ssz(t07_list2) | ||||||
|         ; |           + ngx_fancyindex_timefmt_calc_size (&alcf->time_format) * entries.nelts | ||||||
|  |           ; | ||||||
|  |    else | ||||||
|  |         len = r->uri.len | ||||||
|  |           + ngx_sizeof_ssz(t06_list1) | ||||||
|  |           + ngx_sizeof_ssz(t_parentdir_entry) | ||||||
|  |           + ngx_sizeof_ssz(t07_list2) | ||||||
|  |           + ngx_fancyindex_timefmt_calc_size (&alcf->time_format) * entries.nelts | ||||||
|  |           ; | ||||||
| 
 | 
 | ||||||
|     /*
 |     /*
 | ||||||
|      * If we are a the root of the webserver (URI =  "/" --> length of 1), |      * If we are a the root of the webserver (URI =  "/" --> length of 1), | ||||||
|  | @ -845,8 +861,13 @@ make_content_buf( | ||||||
|                   sort_cmp_func); |                   sort_cmp_func); | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|     b->last = ngx_cpymem_str(b->last, r->uri); |     /* Display the path, if needed */ | ||||||
|     b->last = ngx_cpymem_ssz(b->last, t05_body2); |     if (alcf->show_path){ | ||||||
|  |         b->last = ngx_cpymem_str(b->last, r->uri); | ||||||
|  |         b->last = ngx_cpymem_ssz(b->last, t05_body2); | ||||||
|  |     } | ||||||
|  | 
 | ||||||
|  |     /* Open the <table> tag */ | ||||||
|     b->last = ngx_cpymem_ssz(b->last, t06_list1); |     b->last = ngx_cpymem_ssz(b->last, t06_list1); | ||||||
| 
 | 
 | ||||||
|     tp = ngx_timeofday(); |     tp = ngx_timeofday(); | ||||||
|  | @ -1319,6 +1340,7 @@ ngx_http_fancyindex_create_loc_conf(ngx_conf_t *cf) | ||||||
|     conf->exact_size    = NGX_CONF_UNSET; |     conf->exact_size    = NGX_CONF_UNSET; | ||||||
|     conf->ignore        = NGX_CONF_UNSET_PTR; |     conf->ignore        = NGX_CONF_UNSET_PTR; | ||||||
|     conf->hide_symlinks = NGX_CONF_UNSET; |     conf->hide_symlinks = NGX_CONF_UNSET; | ||||||
|  |     conf->show_path     = NGX_CONF_UNSET; | ||||||
| 
 | 
 | ||||||
|     return conf; |     return conf; | ||||||
| } | } | ||||||
|  | @ -1336,6 +1358,7 @@ ngx_http_fancyindex_merge_loc_conf(ngx_conf_t *cf, void *parent, void *child) | ||||||
|     ngx_conf_merge_uint_value(conf->default_sort, prev->default_sort, NGX_HTTP_FANCYINDEX_SORT_CRITERION_NAME); |     ngx_conf_merge_uint_value(conf->default_sort, prev->default_sort, NGX_HTTP_FANCYINDEX_SORT_CRITERION_NAME); | ||||||
|     ngx_conf_merge_value(conf->localtime, prev->localtime, 0); |     ngx_conf_merge_value(conf->localtime, prev->localtime, 0); | ||||||
|     ngx_conf_merge_value(conf->exact_size, prev->exact_size, 1); |     ngx_conf_merge_value(conf->exact_size, prev->exact_size, 1); | ||||||
|  |     ngx_conf_merge_value(conf->show_path, prev->show_path, 1); | ||||||
|     ngx_conf_merge_uint_value(conf->name_length, prev->name_length, 50); |     ngx_conf_merge_uint_value(conf->name_length, prev->name_length, 50); | ||||||
| 
 | 
 | ||||||
|     ngx_conf_merge_str_value(conf->header, prev->header, ""); |     ngx_conf_merge_str_value(conf->header, prev->header, ""); | ||||||
|  | @ -1346,6 +1369,13 @@ ngx_http_fancyindex_merge_loc_conf(ngx_conf_t *cf, void *parent, void *child) | ||||||
|     ngx_conf_merge_ptr_value(conf->ignore, prev->ignore, NULL); |     ngx_conf_merge_ptr_value(conf->ignore, prev->ignore, NULL); | ||||||
|     ngx_conf_merge_value(conf->hide_symlinks, prev->hide_symlinks, 0); |     ngx_conf_merge_value(conf->hide_symlinks, prev->hide_symlinks, 0); | ||||||
| 
 | 
 | ||||||
|  |     /* Just make sure we haven't disabled the show_path directive without providing a custom header */ | ||||||
|  |     if (conf->show_path == 0 && conf->header.len == 0) | ||||||
|  |     { | ||||||
|  |         ngx_conf_log_error(NGX_LOG_EMERG, cf, 0, "FancyIndex : cannot set show_path to off without providing a custom header !"); | ||||||
|  |         return NGX_CONF_ERROR; | ||||||
|  |     } | ||||||
|  | 
 | ||||||
|     return NGX_CONF_OK; |     return NGX_CONF_OK; | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
|  |  | ||||||
		Loading…
	
		Reference in New Issue
	
	 Adrian Perez
						Adrian Perez