View RawView Code

Configuration Guide

Table of Contents

Overview

5q12's Indexer uses a JSON-based configuration system that controls all aspects of behavior, from file display to system performance. The configuration file is located at .indexer_files/config.json and must be created manually.

Quick Configuration

Enable high performance:
{"main": {"cache_type": "sqlite"}}
Disable downloads:
{"main": {"disable_file_downloads": true, "disable_folder_downloads": true}}
Show hidden files:
{"main": {"index_hidden": true}}

Configuration File Structure

{
  "version": "1.0",
  "main": {
    // Core system settings
  },
  "exclusions": {
    // Controls which file types are indexed (shown in listings)
  },
  "viewable_files": {
    // Controls which files can be viewed vs downloaded
  }
}

Main Settings

Performance Settings

Cache Type

{
  "main": {
    "cache_type": "sqlite"  // "sqlite" or "json"
  }
}
OptionPerformanceCompatibilityUse Case
sqliteHigh (5-10x faster)Requires SQLite3 extensionProduction, large directories
jsonStandardUniversalSimple setups, small directories

Icon Type

{
  "main": {
    "icon_type": "default"  // "default", "minimal", "emoji", "disabled"
  }
}
OptionDescriptionUse Case
defaultFull icon library with type-specific iconsStandard usage, visual file identification
minimalGeneric file/folder icons onlyBandwidth-limited environments
emojiUnicode emoji icons (📄/📁)No external resources, universal compatibility
disabledNo icons displayedText-only interfaces, accessibility
Icon behavior: All icons are stored and served locally from .indexer_files/icons/

Download Controls

File Downloads

{
  "main": {
    "disable_file_downloads": true,  // Removes the Download options from file action menus
    "disable_folder_downloads": true // Removes the Download options from folder action menus
  }
}
Use cases for disabling:

Display Controls

Hidden Files

{
  "main": {
    "index_hidden": true  // Show files starting with "."
  }
}
Hidden items include:

Index All (⚠️ Use with caution)

{
  "main": {
    "index_all": false  // Override all filtering when true
  }
}
When enabled, shows:

File Type Controls

Exclusions (Indexing)

Controls which file types appear in directory listings.

Common Programming Languages

{
  "exclusions": {
    "index_php": false,    // Hide PHP files
    "index_js": true,      // Show JavaScript files
    "index_py": true,      // Show Python files
    "index_java": true,    // Show Java files
    "index_cpp": true      // Show C++ files
  }
}

Documents and Media

{
  "exclusions": {
    "index_txt": true,     // Show text files
    "index_pdf": true,     // Show PDF documents
    "index_docx": true,    // Show Word documents
    "index_png": true,     // Show PNG images
    "index_mp4": true      // Show MP4 videos
  }
}

Security-Sensitive Files (Default: hidden)

{
  "exclusions": {
    "index_key": false,           // Hide cryptographic keys
    "index_secret": false,        // Hide secret files
    "index_passwd": false,        // Hide password files
    "index_authorized_keys": false // Hide SSH keys
  }
}

Viewable Files

Controls which files open in browser vs download.

Text and Code Files

{
  "viewable_files": {
    "view_php": true,      // View PHP source
    "view_js": true,       // View JavaScript
    "view_json": true,     // View JSON files
    "view_md": true        // View Markdown
  }
}

Media Files

{
  "viewable_files": {
    "view_png": true,      // View images in browser
    "view_mp4": true,      // View videos in browser
    "view_pdf": true       // View PDFs in browser
  }
}

Security Files (Default: download only)

{
  "viewable_files": {
    "view_exe": false,     // Download executables
    "view_key": false,     // Download keys
    "view_cert": false     // Download certificates
  }
}

Advanced Filtering

Deny List

Exclude specific files, folders, or patterns.

Basic Examples

{
  "main": {
    "deny_list": "logs, temp, admin, .git"
  }
}

Pattern Examples

{
  "main": {
    "deny_list": "uploads/.exe*, config/.env*, cache*, private/*"
  }
}
Pattern Types:

Allow List

Force inclusion, overriding other exclusions.

Override Examples

{
  "main": {
    "allow_list": "public*, docs/readme.txt, admin/debug.php"
  }
}

Priority System

  1. Conflicting rules (same path in both lists) → Both ignored
  2. Allow list → Takes priority over deny list
  3. Extension settings → Apply as defaults
  4. Fallback → Show by default

Configuration Examples

High-Security Environment

{
  "main": {
    "access_url": "https://example.net",
    "cache_type": "sqlite",
    "icon_type": "minimal",
    "disable_file_downloads": true,
    "disable_folder_downloads": true,
    "index_hidden": false,
    "deny_list": "logs, .git, .env*, config/secrets*, admin"
  },
  "exclusions": {
    "index_php": false,
    "index_key": false,
    "index_secret": false
  },
  "viewable_files": {
    "view_php": false,
    "view_key": false
  }
}

Development Environment

{
  "main": {
    "cache_type": "sqlite",
    "icon_type": "default",
    "index_hidden": true,
    "index_all": true,
    "allow_list": "src*, docs*, config/dev.json"
  },
  "exclusions": {
    "index_php": true,
    "index_js": true,
    "index_py": true
  },
  "viewable_files": {
    "view_php": true,
    "view_js": true,
    "view_py": true
  }
}

Public File Server

{
  "main": {
    "cache_type": "sqlite",
    "icon_type": "emoji",
    "deny_list": "admin, private, .htaccess, config"
  },
  "exclusions": {
    "index_php": false,
    "index_key": false
  },
  "viewable_files": {
    "view_pdf": true,
    "view_png": true,
    "view_mp4": true,
    "view_php": false
  }
}

Media Server

{
  "main": {
    "cache_type": "sqlite",
    "icon_type": "default",
    "deny_list": "system, config, logs"
  },
  "exclusions": {
    "index_png": true,
    "index_jpg": true,
    "index_mp4": true,
    "index_mp3": true,
    "index_pdf": true,
    "index_php": false
  },
  "viewable_files": {
    "view_png": true,
    "view_jpg": true,
    "view_mp4": true,
    "view_mp3": true,
    "view_pdf": true
  }
}

Troubleshooting Configuration

Configuration Not Applied

  1. Check JSON syntax
python -m json.tool .indexer_files/config.json
  1. Clear cache
rm -rf .indexer_files/index_cache/*
  1. Verify file permissions
ls -la .indexer_files/config.json

Performance Issues

  1. Enable SQLite caching
{"main": {"cache_type": "sqlite"}}
  1. Simplify deny/allow patterns
  2. Review extension settings

Security Concerns

  1. Verify sensitive files are excluded
  2. Check deny list effectiveness
  3. Review download permissions

Related Documentation: