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.

Quick Configuration

Enable high performance:
{"main": {"cache_type": "sqlite"}}
Disable downloads:
{"main": {"disable_file_downloads": true, "disable_folder_downloads": true}}
Go offline:
{"main": {"disable_api": true, "local_icons": 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

Local Icons

{
  "main": {
    "local_icons": true  // true or false
  }
}
Benefits when enabled:

API Settings

Disable API

{
  "main": {
    "disable_api": true  // true or false
  }
}
When enabled:

Download Controls

File Downloads

{
  "main": {
    "disable_file_downloads": true,  // Removes "DL" buttons
    "disable_folder_downloads": true // Removes "ZIP" buttons
  }
}
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

{
  "version": "1.0",
  "main": {
    "cache_type": "sqlite",
    "local_icons": true,
    "disable_api": true,
    "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

{
  "version": "1.0",
  "main": {
    "cache_type": "sqlite",
    "index_hidden": 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

{
  "version": "1.0",
  "main": {
    "cache_type": "sqlite",
    "local_icons": true,
    "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

{
  "version": "1.0",
  "main": {
    "cache_type": "sqlite",
    "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
  }
}

Management & Updates

Automatic Updates

When enabled (disable_api: false): Update process:
  1. Version comparison
  2. Configuration download
  3. Merge with existing settings
  4. Automatic backup creation
  5. Rollback on failure

Manual Configuration

Best practices:
  1. Always backup before changes:
cp .indexer_files/config.json .indexer_files/config.json.backup
  1. Validate JSON syntax:
php -r "json_decode(file_get_contents('.indexer_files/config.json')); echo 'Valid';"
  1. Test changes incrementally
  2. Clear cache after major changes:
rm -rf .indexer_files/index_cache/*

Configuration Migration

The system automatically migrates:

Backup and Recovery

Automatic backups: Manual recovery:
# Restore from backup
cp .indexer_files/config.json.backup.2025-01-10_15-30-00 .indexer_files/config.json

# Reset to defaults
rm .indexer_files/config.json
# Access indexer to regenerate

Troubleshooting Configuration

Configuration Not Applied

  1. Check JSON syntax
  2. Clear cache
  3. Verify file permissions
  4. Check for automatic overwrites

Performance Issues

  1. Enable SQLite caching
  2. Simplify deny/allow patterns
  3. Review extension settings

Security Concerns

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

Related Documentation: