Patching FancyIndex Module NginX

Patching FancyIndex Module NginX

NginX sebenarnya sudah mempunyai module default untuk directory index, namun, ada module 3rd juga yang ditulis oleh Adrian Perez de Castro yang bikin directory index ini lebih menarik. Kalau dari dokumentasi yang ditulis oleh bang Adrian ini, kita juga bisa membuat desain template directory index sendiri.

Demo : http://www.antituhan.com/dev/nginx-modules/
How to install module :

./configure --add-module=../nginx-fancyindex-0.1_beta5

Patch : http://www.antituhan.com/dev/nginx-modules/extra-patch-ngx_http_fancyindex_module.txt

--- ../nginx-fancyindex-0.1_beta5/ngx_http_fancyindex_module.c.orig	2007-09-29 01:02:05.000000000 +0400
+++ ../nginx-fancyindex-0.1_beta5/ngx_http_fancyindex_module.c	2009-06-03 16:41:36.000000000 +0400
@@ -290,12 +290,12 @@
     ngx_http_fancyindex_entry_t *entry;

     off_t        length;
-    size_t       len, root, copy, allocated;
+    size_t       len, root, utf_len, allocated;
     u_char      *filename, *last, scale;
     ngx_tm_t     tm;
     ngx_array_t  entries;
     ngx_time_t  *tp;
-    ngx_uint_t   i;
+    ngx_uint_t   i, utf8;
     ngx_int_t    size;
     ngx_str_t    path;
     ngx_str_t    readme_path;
@@ -355,6 +355,15 @@
     filename = path.data;
     filename[path.len] = '/';

+    if (r->headers_out.charset.len == 5
+        && ngx_strncasecmp(r->headers_out.charset.data, (u_char *) "utf-8", 5)
+           == 0)
+    {
+        utf8 = 1;
+    } else {
+        utf8 = 0;
+    }
+
     /* Read directory entries and their associated information. */
     for (;;) {
         ngx_set_errno(0);
@@ -425,8 +434,8 @@
         entry->dir     = ngx_de_is_dir(&dir);
         entry->mtime   = ngx_de_mtime(&dir);
         entry->size    = ngx_de_size(&dir);
-        entry->utf_len = (r->utf8)
-            ?  ngx_utf_length(entry->name.data, entry->name.len)
+        entry->utf_len = utf8
+            ?  ngx_utf8_length(entry->name.data, entry->name.len)
             : len;
     }

@@ -563,12 +572,13 @@

         if (entry[i].name.len - len) {
             if (len > NGX_HTTP_FANCYINDEX_NAME_LEN) {
-                copy = NGX_HTTP_FANCYINDEX_NAME_LEN - 3 + 1;
+                utf_len = NGX_HTTP_FANCYINDEX_NAME_LEN - 3 + 1;
             } else {
-                copy = NGX_HTTP_FANCYINDEX_NAME_LEN + 1;
+                utf_len = NGX_HTTP_FANCYINDEX_NAME_LEN + 1;
             }

-            b->last = ngx_utf_cpystrn(b->last, entry[i].name.data, copy);
+            b->last = ngx_utf8_cpystrn(b->last, entry[i].name.data,
+                                       utf_len, entry[i].name.len + 1);
             last = b->last;

         } else {
  • No Related Post
tabs-top
  • No Related Post
bookmark bookmark bookmark bookmark bookmark bookmark bookmark bookmark bookmark bookmark bookmark bookmark
tabs-top

No Comments »

No comments yet.

RSS feed for comments on this post. TrackBack URL

Leave a comment