mirror-cache 0.1.0

A customizable reverse proxy with cache
port: 9001
metrics_port: 9001
log_level: trace

redis:
  url: redis://localhost:3001

sled:
  metadata_path: cache/test/sled_metadata

rules:
  # PyPI index
  - path: "pypi/simple"
    upstream: "https://pypi.org/simple"
    rewrite:
      - from: "https://files.pythonhosted.org/"
        to: "http://localhost:9001/pypi/"
    policy: "policy_ttl"
    options:
      content_type: "text/html"

  # PyPI packages
  - path: "pypi/packages/"
    upstream: "https://files.pythonhosted.org/packages/"
    policy: "policy_lru"

  # Anaconda index [main]
  - path: 'anaconda/pkgs/main/(.*repodata.json(.bz2)?)'
    upstream: "https://repo.anaconda.com/pkgs/main/$1"
    policy: "policy_ttl"
  # Anaconda packages [main]
  - path: "anaconda/pkgs/main"
    upstream: "https://repo.anaconda.com/pkgs/main"
    policy: "policy_lru"

  # Anaconda cloud index
  - path: 'anaconda/cloud/(.*repodata.json(.bz2)?)'
    upstream: "https://conda.anaconda.org/$1"
    policy: "policy_ttl"
  # Anaconda cloud packages
  - path: "anaconda/cloud/"
    upstream: "https://conda.anaconda.org/"
    policy: "policy_lru_anaconda"

policies:
  - name: policy_ttl
    type: TTL
    metadata_db: redis
    storage: in-mem
    path: "cache/ttl"
    timeout: 3
  - name: policy_lru
    type: LRU
    metadata_db: sled
    storage: local-fs
    size: 1073741824
    path: "cache/lru"
  - name: policy_lru_anaconda
    type: LRU
    metadata_db: redis
    storage: local-fs
    size: 1073741824
    path: "cache/lru"
  - name: policy_ubuntu
    type: LRU
    metadata_db: sled
    storage: local-fs
    size: 0x2000000 # 32M
    path: cache/ubuntu

storages:
  - name: local-fs
    type: FS
    config:
      Fs:
        path: "cache"
  - name: in-mem
    type: MEM
    config: Mem