# Copyright (c) 2018 Dreamacro
# 接管：不支持在此页面直接修改，请到全局设置页面进行修改

# port of HTTP
port: 7890 # 此项将被接管

# port of SOCKS5
socks-port: 7891 # 此项将被接管

# redir port for Linux and macOS
redir-port: 7892 # 此项将被接管

allow-lan: true # 此项将被接管为true

# Only applicable when setting allow-lan to true
# "*": bind all IP addresses
# 192.168.122.11: bind a single IPv4 address
# "[aaaa::a8aa:ff:fe09:57d8]": bind a single IPv6 address
bind-address: "*" # HTTP(S)\SOCKS5 监听地址，此项将被接管为all

# Rule / Global/ Direct (default is Rule)
mode: Rule # 此项将被接管

# set log level to stdout (default is info)
# info / warning / error / debug / silent
log-level: info # 此项将被接管

# A RESTful API for clash
external-controller: 0.0.0.0:9090 # 此项将被接管

# you can put the static web resource (such as clash-dashboard) to a directory, and clash would serve in `${API}/ui`
# input is a relative path to the configuration directory or an absolute path
external-ui: "/usr/share/openclash/dashboard" # 此项将被接管

# Secret for RESTful API (Optional)
secret: '123456' # 此项将被接管

# experimental feature
experimental:
  ignore-resolve-fail: true # ignore dns resolve fail, default value is true

# authentication of local SOCKS5/HTTP(S) server
authentication: # 此项将被接管
  - "user1:pass1"
  - "user2:pass2"

# # hosts, support wildcard (e.g. *.clash.dev Even *.foo.*.example.com)
# # static domain has a higher priority than wildcard domain (foo.example.com > *.example.com > .example.com)
# # +.foo.com equal .foo.com and foo.com
# hosts:
#   '*.clash.dev': 127.0.0.1
#   '.dev': 127.0.0.1
#   'alpha.clash.dev': '::1'
#   '+.foo.dev': 127.0.0.1

dns:  # 如订阅配置无包括此项的所有DNS设置，OpenClash将自动添加
  enable: true # set true to enable dns (default is false) # 此项将被接管为true
  ipv6: false # default is false # 此项将被接管
  listen: 0.0.0.0:53 # 端口为53时将被接管为7874
  enhanced-mode: redir-host # or fake-ip # 此项将被接管
  fake-ip-range: 198.18.0.1/16 # if you don't know what it is, don't change it # 此项将被接管
#  fake-ip-filter: # fake ip white domain list
#  - '*.lan'
#  - localhost.ptlogin2.qq.com
  nameserver:
  - 114.114.114.114
  - https://1.1.1.1/dns-query # dns over https
  fallback: # concurrent request with nameserver, fallback used when GEOIP country isn't CN
  - tcp://1.1.1.1
  fallback-filter:
    geoip: true # default
    ipcidr: # ips in these subnets will be considered polluted
      - 240.0.0.0/4
  
# 以上设置您可直接覆盖到配置文件,无需更改
# Openclash 不会对下方服务器设置进行任何更改，请确保设置正确

#proxy-providers: # 代理集设置，此部分与Proxy两者不能同时删除
#  pro:
#    type: http
#    path: ./proxy_provider/pro.yaml
#    url: https://xxx
#    interval: 3600
#    health-check:
#      enable: true
#      url: http://www.gstatic.com/generate_204
#      interval: 300
#  iplc:
#    type: file
#    path: ./proxy_provider/iplc.yaml
#    health-check:
#      enable: true
#      url: http://www.gstatic.com/generate_204
#      interval: 300
      
proxies: # 节点设置，此部分与proxy-provider两者不能同时删除

# shadowsocks
# The supported ciphers(encrypt methods):
#   aes-128-gcm aes-192-gcm aes-256-gcm
#   aes-128-cfb aes-192-cfb aes-256-cfb
#   aes-128-ctr aes-192-ctr aes-256-ctr
#   rc4-md5 chacha20-ietf xchacha20
#   chacha20-ietf-poly1305 xchacha20-ietf-poly1305
- name: "ss1"
  type: ss
  server: server
  port: 443
  cipher: chacha20-ietf-poly1305
  password: "password"
 # udp: true

# old obfs configuration remove after prerelease
- name: "ss2"
  type: ss
  server: server
  port: 443
  cipher: chacha20-ietf-poly1305
  password: "password"
  plugin: obfs
  plugin-opts:
    mode: tls # or http
    #  host: bing.com

- name: "ss3"
  type: ss
  server: server
  port: 443
  cipher: chacha20-ietf-poly1305
  password: "password"
  plugin: v2ray-plugin
  plugin-opts:
    mode: websocket # no QUIC now
   # tls: true # wss
   # skip-cert-verify: true
   # host: bing.com
   # path: "/"
   # headers:
   #    custom: value

# vmess
# cipher support auto/aes-128-gcm/chacha20-poly1305/none
- name: "vmess"
  type: vmess
  server: server
  port: 443
  uuid: uuid
  alterId: 32
  cipher: auto
 # udp: true
 # tls: true
 # skip-cert-verify: true
 # servername: example.com # priority over wss host
 # network: ws
 # ws-path: /path
 # ws-headers:
 #    Host: v2ray.com

- name: "vmess-http"
  type: vmess
  server: server
  port: 443
  uuid: uuid
  alterId: 32
  cipher: auto
 # udp: true
 # network: http
 # http-opts:
 #  # method: "GET"
 #  # path:
 #   #  - '/'
 #   #  - '/video'
 #  # headers:
 #   #  Connection:
 #    #   - keep-alive
    
# socks5
- name: "socks"
  type: socks5
  server: server
  port: 443
 # username: username
 # password: password
 # tls: true
 # skip-cert-verify: true
 # udp: true
# http
- name: "http"
  type: http
  server: server
  port: 443
 # username: username
 # password: password
 # tls: true # https
 # skip-cert-verify: true

# snell
- name: "snell"
  type: snell
  server: server
  port: 44046
  psk: yourpsk
 # obfs-opts:
 #    mode: http # or tls
 #    host: bing.com

# trojan
- name: "trojan"
  type: trojan
  server: server
  port: 443
  password: yourpsk
 # udp: true
 # sni: example.com # aka server name
 # alpn:
 #    - h2
 #    - http/1.1
 # skip-cert-verify: true
    
# Openclash 不会对下方策略组设置进行任何更改，请确保设置正确

proxy-groups: # 此参数必须保留,不能删除

# relay chains the proxies. proxies shall not contain a proxy-group. No UDP support.
# Traffic: clash <-> http <-> vmess <-> ss1 <-> ss2 <-> Internet
- name: "relay"
  type: relay
  proxies:
    - http
    - vmess
    - ss1
    - ss2

# url-test select which proxy will be used by benchmarking speed to a URL.
- name: "auto"
  type: url-test
  proxies:
    - ss1
    - ss2
    - vmess1
  url: 'http://www.gstatic.com/generate_204'
  interval: 300

# fallback select an available policy by priority. The availability is tested by accessing an URL, just like an auto url-test group.
- name: "fallback-auto"
  type: fallback
  proxies:
    - ss1
    - ss2
    - vmess1
  url: 'http://www.gstatic.com/generate_204'
  interval: 300

# load-balance: The request of the same eTLD will be dial on the same proxy.
- name: "load-balance"
  type: load-balance
  proxies:
    - ss1
    - ss2
    - vmess1
  url: 'http://www.gstatic.com/generate_204'
  interval: 300

# select is used for selecting proxy or proxy group
# you can use RESTful API to switch proxy, is recommended for use in GUI.
- name: Proxy
  type: select
  proxies:
    - ss1
    - ss2
    - vmess1
    - auto
  
- name: UseProvider
  type: select
  use:
    - provider1
  proxies:
    - Proxy
    - DIRECT

# https://lancellc.gitbook.io/clash/clash-config-file/rule-provider
#rule-providers:
#  name: # name of the provider
#    type: http # type of the provider, it can be a HTTP or a File
#    behavior: ipcidr # or domain
#    path: # where is the file, ./ relative to clash home
#    url: # only available when type is HTTP, where to download a file. You don't need to create a new file in local space.
#    interval: # auto-update interval, only available when type is HTTP

# https://lancellc.gitbook.io/clash/clash-config-file/script
#script:
#  code: |
#    def main(ctx, metadata):
#      ip = metadata["dst_ip"] = ctx.resolve_ip(metadata["host"])
#      if ip == "":
#        return "DIRECT"
#        
#      code = ctx.geoip(ip)
#      if code == "LAN" or code == "CN":
#        return "DIRECT"
#      
#      return "Proxy" # default policy for requests which are not matched by any other script
      
rules: # 此参数必须保留,不能删除
# 如果您将一直使用第三方规则，下方可以留空。
- DOMAIN-SUFFIX,google.com,auto
- DOMAIN-KEYWORD,google,auto
- DOMAIN,google.com,auto
- DOMAIN-SUFFIX,ad.com,REJECT
- IP-CIDR,127.0.0.0/8,DIRECT
# rename SOURCE-IP-CIDR and would remove after prerelease
- SRC-IP-CIDR,192.168.1.201/32,DIRECT
- GEOIP,CN,DIRECT
- DST-PORT,80,DIRECT
- SRC-PORT,7777,DIRECT
# or use rule with provider
- RULE-SET,name,Proxy
# FINAL would remove after prerelease
# you also can use `FINAL,Proxy` or `FINAL,,Proxy` now
- MATCH,auto