Package: v2conf
V2ConfV2Conf helps you build V2Ray configuration files automatically and evaluate and modify configuration rules based on outbound performance.Installation & Runningsudoapt-getinstallpipx&&pipxinstall--pythonpython3.9v2conf;sudo$(whichv2conf)/home/ubuntu/confs-n10--no-geoip--country-code'IR'--jalali--log-file/home/ubuntu/v2conf.logRecommended Usagesudo$(whichv2conf)/home/ubuntu/confs-n10-s900--timeout-penalty15--ema8,2--no-geoip--country-code'IR'--log-levelerror--jalali-w"https://dl-cdn.alpinelinux.org/alpine/v3.17/releases/x86/alpine-minirootfs-3.17.1-x86.tar.gz"--log-file/home/ubuntu/v2conf.logWith these flags and settings, V2Conf will download the selected file every 15 minutes (900 / 60 = 15) 10 times for each outbound.V2Conf will print logs in Jalali date times in/home/ubuntu/v2conf.logandstdoutsimultaneously and it will exclude IPs for Iran. (useful for domestic Iranian VPSs)--timeout-penalty 15makes the program to consider a failed test as a test with 15 seconds latency and based on exponential moving average of last8evaluations (past 2 hours) and weighting more importance on recent evaluations (2times for every new evaluation) choose the best outbound and route all data within that.--log-level errorindicates thatV2Raylog level will beerror.For using it withxrayyou can specify-c /usr/local/etc/xray/config.jsonand-p xrayflags.\DetailsV2Conf expects a directory with this structure from you:confs/
├──inbounds# an "inbounds" directory│└──main_entry.json
├──outbounds# an "outbounds" directory│├──blocked.json
│├──direct.json
│├──trojan_h2.json
│├──trojan_ws_cloudflare.json
│├──vless_h2.json
│└──vless_ws_cloudflare.json
└──rules# a "rules" directory├──ir.json└──private.jsonwhere each inbound, outbound or rule should be saved as a json file (*.json).
e.g.main_entry.json:{"port":6060,"protocol":"trojan","settings":{"clients":...andall configs must have a tag!P.S.: Thanks toTusharV2Conf now supports JSON5 format for configs.Usageusage: v2conf [-h] [-c CONFIG_FILE] [-p PROCESS_NAME] [--country-code COUNTRY_CODE] [--no-geoip] [-t TIMEOUT] [-w WEBSITE] [-n NUM_OF_TRIES] [--timeout-penalty TIMEOUT_PENALTY] [--ema EMA] [-s SLEEP_TIME]
                   [-l {debug,info,warning,error,none}] [-q | --log-file LOG_FILE] [--jalali] [--stats] [--stats-port STATS_PORT] [--sys-only | --users-only] [-v]
                   [path_conf_dir]

positional arguments:
  path_conf_dir         Select configuration directory, default is $PWD.

optional arguments:
  -h, --help            show this help message and exit
  -c CONFIG_FILE, --config-file CONFIG_FILE
                        Select configuration file, default is '/usr/local/etc/v2ray/config.json'.
  -p PROCESS_NAME, --process-name PROCESS_NAME
                        Select the process name, default is 'v2ray'. If you are using 'xray' set it here and in the custom config file path in '-c' flag.
  --country-code COUNTRY_CODE
                        Exclude a country from the list of IPs to be routed; default is 'IR'. (ISO 3166-1 alpha-2)
  --no-geoip            Instead of using V2Ray GeoIP database, downloading IPs from 'ripe.net' (more recent IPs but may slow V2Ray)
  -t TIMEOUT, --timeout TIMEOUT
                        Set the timeout for checking the health of proxies, default is 15 seconds.
  -w WEBSITE, --website WEBSITE
                        Set the website to be used for checking the health of proxies, default is 'https://facebook.com'.
  -n NUM_OF_TRIES, --num-of-tries NUM_OF_TRIES
                        Set the number of tries for checking the health of proxies, default is 10.
  --timeout-penalty TIMEOUT_PENALTY
                        Converting timeouts to latency by this factor (in seconds), DISABLED by default.
  --ema EMA             Instead of choosing OutBound based on latest evaluation, rank based on exponential moving average of last Nth tests and smoothing variable. (e.g. --ema 10,2.5) DISABLED by default.
  -s SLEEP_TIME, --sleep-time SLEEP_TIME
                        Set the sleep time between each checkup, default is 1,800s. (in seconds)
  -l {debug,info,warning,error,none}, --log-level {debug,info,warning,error,none}
                        Set the V2Ray log level, default is 'warning'.
  -q, --quiet           No log file (V2Conf). (printing to stdout anyway)
  --log-file LOG_FILE   Path for V2Conf log file. default is '$PWD/V2Conf.log'
  --jalali              Use Jalali datetime for V2Conf logging
  --stats               Activating traffic statistics
  --stats-port STATS_PORT
                        Set the port for statistics API. Default is: 10085
  --sys-only            Only system traffic statistics
  --users-only          Only users traffic statistics
  -v, --version         Show version and exit.

Written by: Mahyar Mahdavi <Mahyar@Mahyar24.com>. License: GNU GPLv3. Source Code: <https://github.com/mahyar24/V2Conf>. Reporting Bugs and PRs are welcomed. :)More ToolsCheck out these Gist files for more tools:V2Ray-Traffic- a script for monitoring V2Ray traffic.V2Ray-Abnormal- a script for monitoring V2Ray abnormal IP connections.V2Ray-Abnormal-Polars- a script for monitoring V2Ray abnormal IP connections implemented with Polars.V2Ray-IP-GeoLocation- a script for checking IP GeoLocations of users.ContributingPull requests are welcome. For major changes, please open an issue first to discuss what you would like to change.Contact me:OSS@Mahyar24.com:)LicenseGNU GPLv3