├── files ├── steam_appid.txt ├── plugins.ini ├── dproto_i386.so ├── mapcycle.txt ├── liblist.gam ├── maps.ini ├── server.cfg └── dproto.cfg ├── maps ├── 35hp_2.bsp ├── aim_map.bsp ├── fy_snow.bsp ├── awp_india.bsp ├── fy_pool_day.bsp └── de_dust2_2x2.bsp ├── .travis.yml ├── hlds_run.sh ├── README.md ├── tests └── smoke.py ├── Makefile ├── Dockerfile └── LICENSE /files/steam_appid.txt: -------------------------------------------------------------------------------- 1 | 10 2 | -------------------------------------------------------------------------------- /maps/35hp_2.bsp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/artem-panchenko/counter-strike-docker/HEAD/maps/35hp_2.bsp -------------------------------------------------------------------------------- /files/plugins.ini: -------------------------------------------------------------------------------- 1 | linux addons/amxmodx/dlls/amxmodx_mm_i386.so 2 | linux addons/dproto/dproto_i386.so 3 | -------------------------------------------------------------------------------- /maps/aim_map.bsp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/artem-panchenko/counter-strike-docker/HEAD/maps/aim_map.bsp -------------------------------------------------------------------------------- /maps/fy_snow.bsp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/artem-panchenko/counter-strike-docker/HEAD/maps/fy_snow.bsp -------------------------------------------------------------------------------- /files/dproto_i386.so: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/artem-panchenko/counter-strike-docker/HEAD/files/dproto_i386.so -------------------------------------------------------------------------------- /maps/awp_india.bsp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/artem-panchenko/counter-strike-docker/HEAD/maps/awp_india.bsp -------------------------------------------------------------------------------- /maps/fy_pool_day.bsp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/artem-panchenko/counter-strike-docker/HEAD/maps/fy_pool_day.bsp -------------------------------------------------------------------------------- /maps/de_dust2_2x2.bsp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/artem-panchenko/counter-strike-docker/HEAD/maps/de_dust2_2x2.bsp -------------------------------------------------------------------------------- /files/mapcycle.txt: -------------------------------------------------------------------------------- 1 | cs_assault 2 | de_dust2 3 | de_inferno 4 | de_nuke 5 | de_train 6 | de_dust2_2x2 7 | fy_pool_day 8 | fy_snow 9 | awp_india 10 | aim_map -------------------------------------------------------------------------------- /files/liblist.gam: -------------------------------------------------------------------------------- 1 | game "Counter-Strike" 2 | url_info "www.counter-strike.net" 3 | url_dl "" 4 | version "1.6" 5 | size "184000000" 6 | svonly "0" 7 | secure "1" 8 | type "multiplayer_only" 9 | cldll "1" 10 | hlversion "1111" 11 | nomodels "1" 12 | nohimodel "1" 13 | mpentity "info_player_start" 14 | gamedll_linux "addons/metamod/dlls/metamod_i386.so" 15 | trainmap "tr_1" 16 | edicts "1800" -------------------------------------------------------------------------------- /files/maps.ini: -------------------------------------------------------------------------------- 1 | ; Maps configuration file 2 | ; File location: $moddir/addons/amxmodx/configs/maps.ini 3 | ; To use with Maps Menu plugin 4 | 5 | ; Add in your mod's maps here 6 | ; Delete this file to use mapcycle.txt 7 | 8 | cs_assault 9 | cs_estate 10 | cs_italy 11 | cs_militia 12 | cs_office 13 | de_aztec 14 | de_cbble 15 | de_dust 16 | de_dust2 17 | de_inferno 18 | de_nuke 19 | de_train 20 | de_dust2_2x2 21 | fy_pool_day 22 | fy_snow 23 | awp_india 24 | aim_map 25 | 35hp_2 -------------------------------------------------------------------------------- /.travis.yml: -------------------------------------------------------------------------------- 1 | language: python 2 | sudo: required 3 | services: 4 | - docker 5 | script: 6 | - make build 7 | - make test 8 | after_success: 9 | - docker login -u="${DOCKER_USERNAME}" -p="${DOCKER_PASSWORD}" 10 | - if [ "${TRAVIS_PULL_REQUEST_BRANCH}" ]; then 11 | DOCKER_PUBLISH_TAG="${TRAVIS_PULL_REQUEST_BRANCH}" make publish; 12 | elif [ "${TRAVIS_TAG}" ]; then 13 | DOCKER_PUBLISH_TAG="${TRAVIS_TAG}" make publish; 14 | DOCKER_PUBLISH_TAG=latest make publish; 15 | else 16 | DOCKER_PUBLISH_TAG="${TRAVIS_BRANCH}" make publish; 17 | fi 18 | -------------------------------------------------------------------------------- /hlds_run.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | 3 | set -axe 4 | 5 | CONFIG_FILE="/opt/hlds/startup.cfg" 6 | 7 | if [ -r "${CONFIG_FILE}" ]; then 8 | # TODO: make config save/restore mechanism more solid 9 | set +e 10 | # shellcheck source=/dev/null 11 | source "${CONFIG_FILE}" 12 | set -e 13 | fi 14 | 15 | EXTRA_OPTIONS=( "$@" ) 16 | 17 | EXECUTABLE="/opt/hlds/hlds_run" 18 | GAME="${GAME:-cstrike}" 19 | MAXPLAYERS="${MAXPLAYERS:-32}" 20 | START_MAP="${START_MAP:-de_dust2}" 21 | SERVER_NAME="${SERVER_NAME:-Counter-Strike 1.6 Server}" 22 | 23 | OPTIONS=( "-game" "${GAME}" "+maxplayers" "${MAXPLAYERS}" "+map" "${START_MAP}" "+hostname" "\"${SERVER_NAME}\"") 24 | 25 | if [ -z "${RESTART_ON_FAIL}" ]; then 26 | OPTIONS+=('-norestart') 27 | fi 28 | 29 | if [ -n "${ADMIN_STEAM}" ]; then 30 | echo "\"STEAM_${ADMIN_STEAM}\" \"\" \"abcdefghijklmnopqrstu\" \"ce\"" >> "/opt/hlds/cstrike/addons/amxmodx/configs/users.ini" 31 | fi 32 | 33 | set > "${CONFIG_FILE}" 34 | 35 | exec "${EXECUTABLE}" "${OPTIONS[@]}" "${EXTRA_OPTIONS[@]}" 36 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | [![Build Status](https://travis-ci.org/artem-panchenko/counter-strike-docker.svg?branch=master)](https://travis-ci.org/artem-panchenko/counter-strike-docker) 2 | [![License Apache 2.0](https://goo.gl/joRzTI)](https://github.com/artem-panchenko/counter-strike-docker/blob/master/LICENSE) 3 | 4 | ![Half-Life Logo](http://files.gamebanana.com/img/ico/sprays/51f5acee815f0.png) 5 | 6 | # Docker image for Half-Life Dedicated Server 7 | 8 | ### Build an image: 9 | 10 | ``` 11 | $ make build 12 | ``` 13 | 14 | ### Create and start new Counter-Strike 1.6 server: 15 | 16 | ``` 17 | $ docker run -d -p 27020:27015/udp -e START_MAP=de_inferno -e ADMIN_STEAM=0:1:1234566 -e SERVER_NAME="My Server" --name cs hlds:alpha 18 | ``` 19 | 20 | ### Stop the server: 21 | 22 | ``` 23 | docker stop cs 24 | ``` 25 | 26 | ### Start existing (stopped) server: 27 | 28 | ``` 29 | docker start cs 30 | ``` 31 | 32 | ### Remove the server: 33 | 34 | ``` 35 | docker rm cs 36 | ``` 37 | 38 | ### Use image from [Docker Hub](https://hub.docker.com/r/hlds/server/): 39 | 40 | ``` 41 | $ docker run -d -p 27020:27015/udp -e START_MAP=de_inferno -e ADMIN_STEAM=0:1:1234566 -e SERVER_NAME="My Server" --name cs hlds/server:alpha +log 42 | ``` -------------------------------------------------------------------------------- /tests/smoke.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env python 2 | 3 | from __future__ import print_function 4 | 5 | import os 6 | import re 7 | import socket 8 | 9 | 10 | address = os.environ.get('HLDS_ADDRESS', '127.0.0.1') 11 | port = int(os.environ.get('HLDS_PORT', 27111)) 12 | 13 | server_name = os.environ.get('HLDS_NAME', 'Test auto') 14 | map_name = os.environ.get('HLDS_MAP', 'de_dust2') 15 | game_name = os.environ.get('HLDS_GAME', 'Counter-Strike') 16 | 17 | sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM) 18 | sock.settimeout(3) 19 | 20 | request_data = 'ffffffff54536f7572636520456e67696e6520517565727900' 21 | retries = 10 22 | request_bytes = bytearray(request_data.decode('hex')) 23 | 24 | while retries: 25 | retries -= 1 26 | try: 27 | sock.sendto(request_bytes, (address, port)) 28 | response_data, remote_addr = sock.recvfrom(1024) 29 | except socket.timeout: 30 | if not retries: 31 | raise socket.timeout('Nothing was received from HLDS') 32 | 33 | match = re.match('.*{0}.*{1}.*{2}.*'.format(server_name, 34 | map_name, 35 | game_name), 36 | response_data) 37 | 38 | assert match, ("Server discovery test failed!" 39 | "Recieved : {0}").format(response_data) 40 | print("SUCCESS!") 41 | -------------------------------------------------------------------------------- /files/server.cfg: -------------------------------------------------------------------------------- 1 | #hostname "NAMEYOURSERVER" 2 | #sv_name "NAMESERVER" 3 | #sv_password "SERVERPASSWORD" 4 | #rcon_password "YOURRCON" 5 | maxplayers "32" 6 | mp_autocrosshair "0" 7 | mp_autokick "0" 8 | mp_autoteambalance "0" 9 | mp_buytime "0.25" 10 | mp_c4timer "35" 11 | mp_chattime "5" 12 | mp_consistency "1" 13 | mp_decals "300" 14 | mp_fadetoblack "0" 15 | mp_flashlight "1" 16 | mp_footsteps "1" 17 | mp_forcecamera "2" 18 | mp_forcechasecam "2" 19 | mp_freezetime "3" 20 | mp_friendlyfire "1" 21 | mp_hostagepenalty "0" 22 | mp_kickpercent "1" 23 | mp_limitteams "0" 24 | mp_logdetail "3" 25 | mp_logecho "1" 26 | mp_logfile "1" 27 | mp_logmessages "1" 28 | mp_mapvoteratio "1" 29 | mp_maxrounds "0" 30 | mp_playerid "1" 31 | mp_roundtime "1.75" 32 | mp_startmoney "800" 33 | mp_timelimit "0" 34 | mp_tkpunish "0" 35 | mp_winlimit "0" 36 | allow_spectators "1" 37 | decalfrequency "60" 38 | edgefriction "2" 39 | host_framerate "0" 40 | log on 41 | pausable "1" 42 | pingboost "3" 43 | sys_ticrate "400" 44 | ex_interp "0.01" 45 | sv_accelerate "5" 46 | sv_aim "0" 47 | sv_airaccelerate "10" 48 | sv_airmove "1" 49 | sv_allowdownload "1" 50 | sv_allowupload "0" 51 | sv_alltalk "0" 52 | sv_cheats "0" 53 | sv_clienttrace "1" 54 | sv_clipmode "0" 55 | sv_friction "4" 56 | sv_gravity "800" 57 | sv_maxrate "25000" 58 | sv_minrate "2500" 59 | sv_maxupdaterate "101" 60 | sv_minupdaterate "20" 61 | sv_maxspeed "320" 62 | sv_maxunlag "0.5" 63 | sv_proxies "2" 64 | sv_restartround "0" 65 | sv_send_logos "0" 66 | sv_send_resources "1" 67 | sv_stepsize "18" 68 | sv_stopspeed "75" 69 | sv_timeout "65" 70 | sv_voiceenable "1" 71 | sv_wateraccelerate "10" 72 | sv_wateramp "0" 73 | sv_waterfriction "1" 74 | sv_unlag "1" 75 | sv_unlagsamples "1" 76 | sv_unlagpush "0" -------------------------------------------------------------------------------- /Makefile: -------------------------------------------------------------------------------- 1 | 2 | # Build options 3 | IMAGE_NAME?="hlds" 4 | IMAGE_TAG?="alpha" 5 | 6 | STEAM_USER?="anonymous" 7 | STEAM_PASSWORD?="" 8 | 9 | DOCKER_NO_CACHE?="false" 10 | 11 | # Publish options 12 | DOCKER_PUBLISH_NAME?="hlds/server" 13 | DOCKER_PUBLISH_TAG?=$(IMAGE_TAG) 14 | 15 | # Test tools 16 | SHELLCHECK_IMAGE?="koalaman/shellcheck:v0.4.6" 17 | TEST_CONTAINER_NAME?="test_hlds_auto" 18 | TEST_CONTAINER_PORT?="27111" 19 | HLDS_NAME?="Test auto" 20 | HLDS_MAP?="de_dust2" 21 | 22 | .PHONY: build 23 | build: 24 | docker build -f Dockerfile --no-cache=$(DOCKER_NO_CACHE) \ 25 | -t $(IMAGE_NAME):$(IMAGE_TAG) \ 26 | --build-arg steam_user=$(STEAM_USER) \ 27 | --build-arg steam_password=$(STEAM_PASSWORD) . 28 | 29 | .PHONY: test 30 | test: shellcheck test-smoke test-clean 31 | 32 | .PHONY: shellcheck 33 | shellcheck: 34 | docker run --rm -v $(PWD):/code \ 35 | --entrypoint sh $(SHELLCHECK_IMAGE) -c \ 36 | "find /code/ -type f -name '*.sh' | xargs shellcheck" 37 | 38 | .PHONY: test-start-server 39 | test-start-server: 40 | $(MAKE) test-stop-server 41 | docker run -d -p $(TEST_CONTAINER_PORT):27015/udp \ 42 | -e START_MAP=$(HLDS_MAP) -e SERVER_NAME=$(HLDS_NAME) \ 43 | --name $(TEST_CONTAINER_NAME) $(IMAGE_NAME):$(IMAGE_TAG) 44 | 45 | .PHONY: test-stop-server 46 | test-stop-server: 47 | -docker rm -f $(TEST_CONTAINER_NAME) 48 | 49 | .PHONY: test-smoke 50 | test-smoke: test-start-server 51 | tests/smoke.py 52 | 53 | .PHONY: test-clean 54 | test-clean: test-stop-server 55 | 56 | .PHONY: clean 57 | clean: test-clean 58 | -docker rmi $(IMAGE_NAME):$(IMAGE_TAG) 59 | 60 | .PHONY: publish 61 | publish: 62 | docker tag $(IMAGE_NAME):$(IMAGE_TAG) $(DOCKER_PUBLISH_NAME):$(DOCKER_PUBLISH_TAG) 63 | docker push $(DOCKER_PUBLISH_NAME):$(DOCKER_PUBLISH_TAG) 64 | -------------------------------------------------------------------------------- /Dockerfile: -------------------------------------------------------------------------------- 1 | FROM debian:jessie 2 | 3 | LABEL maintainer "Artem Panchenko " 4 | 5 | ARG steam_user=anonymous 6 | ARG steam_password= 7 | ARG metamod_version=1.20 8 | ARG amxmod_version=1.8.2 9 | 10 | RUN apt update && apt install -y lib32gcc1 curl 11 | 12 | # Install SteamCMD 13 | RUN mkdir -p /opt/steam && cd /opt/steam && \ 14 | curl -sqL "https://steamcdn-a.akamaihd.net/client/installer/steamcmd_linux.tar.gz" | tar zxvf - 15 | 16 | # Install HLDS 17 | RUN mkdir -p /opt/hlds 18 | # Workaround for "app_update 90" bug, see https://forums.alliedmods.net/showthread.php?p=2518786 19 | RUN /opt/steam/steamcmd.sh +login $steam_user $steam_password +force_install_dir /opt/hlds +app_update 90 validate +quit 20 | RUN /opt/steam/steamcmd.sh +login $steam_user $steam_password +force_install_dir /opt/hlds +app_update 70 validate +quit || : 21 | RUN /opt/steam/steamcmd.sh +login $steam_user $steam_password +force_install_dir /opt/hlds +app_update 10 validate +quit || : 22 | RUN /opt/steam/steamcmd.sh +login $steam_user $steam_password +force_install_dir /opt/hlds +app_update 90 validate +quit 23 | RUN mkdir -p ~/.steam && ln -s /opt/hlds ~/.steam/sdk32 24 | RUN ln -s /opt/steam/ /opt/hlds/steamcmd 25 | ADD files/steam_appid.txt /opt/hlds/steam_appid.txt 26 | ADD hlds_run.sh /bin/hlds_run.sh 27 | 28 | # Add default config 29 | ADD files/server.cfg /opt/hlds/cstrike/server.cfg 30 | 31 | # Add maps 32 | ADD maps/* /opt/hlds/cstrike/maps/ 33 | ADD files/mapcycle.txt /opt/hlds/cstrike/mapcycle.txt 34 | 35 | # Install metamod 36 | RUN mkdir -p /opt/hlds/cstrike/addons/metamod/dlls 37 | RUN curl -sqL "http://prdownloads.sourceforge.net/metamod/metamod-$metamod_version-linux.tar.gz?download" | tar -C /opt/hlds/cstrike/addons/metamod/dlls -zxvf - 38 | ADD files/liblist.gam /opt/hlds/cstrike/liblist.gam 39 | # Remove this line if you aren't going to install/use amxmodx and dproto 40 | ADD files/plugins.ini /opt/hlds/cstrike/addons/metamod/plugins.ini 41 | 42 | # Install dproto 43 | RUN mkdir -p /opt/hlds/cstrike/addons/dproto 44 | ADD files/dproto_i386.so /opt/hlds/cstrike/addons/dproto/dproto_i386.so 45 | ADD files/dproto.cfg /opt/hlds/cstrike/dproto.cfg 46 | 47 | # Install AMX mod X 48 | RUN curl -sqL "http://www.amxmodx.org/release/amxmodx-$amxmod_version-base-linux.tar.gz" | tar -C /opt/hlds/cstrike/ -zxvf - 49 | RUN curl -sqL "http://www.amxmodx.org/release/amxmodx-$amxmod_version-cstrike-linux.tar.gz" | tar -C /opt/hlds/cstrike/ -zxvf - 50 | ADD files/maps.ini /opt/hlds/cstrike/addons/amxmodx/configs/maps.ini 51 | 52 | # Cleanup 53 | RUN apt remove -y curl 54 | 55 | WORKDIR /opt/hlds 56 | 57 | ENTRYPOINT ["/bin/hlds_run.sh"] 58 | -------------------------------------------------------------------------------- /files/dproto.cfg: -------------------------------------------------------------------------------- 1 | # ======================================================== 2 | # DPROTO CONFIGURATION 3 | # ======================================================== 4 | 5 | # 6 | # General rule for modifying this file: 7 | # DONT CHANGE ANYTHING IF YOU DONT KNOW WHAT IT MEANS! 8 | # 9 | 10 | 11 | # ======================================================== 12 | # AUTHID MANAGEMENT 13 | # ======================================================== 14 | 15 | # ClientID types (for cid_* options) 16 | # 1: Real (or generated by HW) steam (STEAM_xx:xx:xx) 17 | # 2: Real (or generated by HW) valve (VALVE_xx:xx:xx) 18 | # 3: STEAM_ by IP 19 | # 4: VALVE_ by IP 20 | # 5: Deprecated - client will be rejected 21 | # 6: reserved for future use 22 | # 7: HLTV 23 | # 8: STEAM_ID_LAN 24 | # 9: STEAM_ID_PENDING 25 | # 10: VALVE_ID_LAN 26 | # 11: VALVE_ID_PENDING 27 | # 12: STEAM_666:88:666 28 | 29 | # Use these options to set authid's for clients 30 | 31 | # for HLTV (default is HLTV [7]) 32 | cid_HLTV = 7 33 | 34 | # for p.47 clients that do not support unique id generation (default is VALVE_ by IP [4]) 35 | cid_NoSteam47 = 4 36 | 37 | # for p.48 clients that do not support unique id generation (default is VALVE_ by IP [4]) 38 | cid_NoSteam48 = 4 39 | 40 | # For Legit Steam clients (default is real STEAM_xx:xx:xx [1]) 41 | cid_Steam = 1 42 | 43 | # Client recognized as pending when they sucessfully authorized, but did not get steam id 44 | # REMARK: Actually, it got steamid, but it is useless (STEAM_0:0:0 for example) 45 | # default is STEAM_ID_PENDING [9] 46 | cid_SteamPending = 9 47 | 48 | # For players having revEmu ( >= 9.74) on client-side: 49 | # default is real STEAM_xx:xx:xx [1] 50 | cid_RevEmu = 1 51 | 52 | # For players having RevEmu 2013 on client-side: 53 | # default is real STEAM_xx:xx:xx [1] 54 | cid_RevEmu2013 = 1 55 | 56 | # For players having SteamClient 2009 / revEmu > 9.82 on client-side: 57 | # default is real STEAM_xx:xx:xx [1] 58 | cid_SC2009 = 1 59 | 60 | # For players having old revEmu on client-side: 61 | # default is real STEAM_xx:xx:xx [1] 62 | cid_OldRevEmu = 1 63 | 64 | # For players having hCupa's SteamEmu on client-side: 65 | # default is real STEAM_xx:xx:xx [1] 66 | cid_SteamEmu = 1 67 | 68 | # For players having AVSMP (Cracked Steam) on client-side: 69 | # default is real STEAM_xx:xx:xx [1] 70 | cid_AVSMP = 1 71 | 72 | # For SETTI ServerScanner 73 | # default is STEAM_xx:xx:xx generated by IP [3] 74 | cid_Setti = 3 75 | 76 | # For SXEI Clients 77 | # default is real STEAM_xx:xx:xx [1] 78 | cid_SXEI = 1 79 | 80 | # EnableSXEIdGeneration (0 / 1) 81 | # Turns on steamid generation based on info sent by sXeI client 82 | # Enable this only if you have sXeI server installed! 83 | EnableSXEIdGeneration = 0 84 | 85 | # SC2009_RevCompatMode (0 / 1) 86 | # Enable fix to make steamids generated for SC2009 compatible with revEmu 87 | SC2009_RevCompatMode = 1 88 | 89 | # SteamEmuCompatMode (0 / 1) 90 | # An analog for eSTEAMATiON's EnforceSteamEmuCompatIDMode option. 91 | # Affects only Old RevEmu and SteamEmu emulators. 92 | SteamEmuCompatMode = 1 93 | 94 | # OldEstCompatMode (0 / 1) 95 | # Enables/Disables fix for steamids generated by eST in 0.3.1 version. 96 | # Set this to 1 if you want to make steamids generated by eST as in < 0.3.0 versions. 97 | OldEstCompatMode = 0 98 | 99 | # SteamIdHashSalt (string) 100 | # Salt string for SteamIDs hashing. Irreversibly changes SteamIDs. Applies only to SteamIDs generated by emulators. 101 | # Should be more than 16 chars length. If string is empty, hashing is not applied. 102 | SteamIdHashSalt = 103 | 104 | # IPGen_Prefix1 (int) 105 | # STEAM_a:b:c 106 | # first prefix (a) for authids generated by IP 107 | IPGen_Prefix1 = 0 108 | 109 | # IPGen_Prefix2 (int) 110 | # STEAM_a:b:c 111 | # second prefix (b) for authids generated by IP 112 | IPGen_Prefix2 = 4 113 | 114 | # Native_Prefix1 (int) 115 | # STEAM_a:b:c 116 | # first prefix (a) for authids generated by native auth method (Steam) 117 | Native_Prefix1 = 0; 118 | 119 | # RevEmu_Prefix1 (int) 120 | # STEAM_a:b:c 121 | # first prefix (a) for authids generated by Steamclient 2009 122 | SC2009_Prefix1 = 0; 123 | 124 | # RevEmu_Prefix1 (int) 125 | # STEAM_a:b:c 126 | # first prefix (a) for authids generated by RevEmu 127 | RevEmu_Prefix1 = 0; 128 | 129 | # RevEmu2013_Prefix1 (int) 130 | # STEAM_a:b:c 131 | # first prefix (a) for authids generated by RevEmu2013 132 | RevEmu2013_Prefix1 = 0; 133 | 134 | # OldRevEmu_Prefix1 (int) 135 | # STEAM_a:b:c 136 | # first prefix (a) for authids generated by old RevEmu 137 | OldRevEmu_Prefix1 = 0; 138 | 139 | # SteamEmu_Prefix1 (int) 140 | # STEAM_a:b:c 141 | # first prefix (a) for authids generated by SteamEmu 142 | SteamEmu_Prefix1 = 0; 143 | 144 | # SteamEmu_Prefix1 (int) 145 | # STEAM_a:b:c 146 | # first prefix (a) for authids assigned for AVSMP Clients (Cracked steam) 147 | AVSMP_Prefix1 = 0; 148 | 149 | # Setti_Prefix1 (int) 150 | # STEAM_a:b:c 151 | # first prefix (a) for authids assigned for Setti server scanner 152 | Setti_Prefix1 = 0; 153 | 154 | # SXEI_Prefix1 (int) 155 | # STEAM_a:b:c 156 | # first prefix (a) for authids assigned for sXeI clients 157 | SXEI_Prefix1 = 0; 158 | 159 | 160 | # Note that banid will use steamid WITHOUT any prefixes! 161 | 162 | 163 | # ======================================================== 164 | # ATTACKS SUPRESSION 165 | # ======================================================== 166 | 167 | # FakePlayers_AntiReconnect (0/1) 168 | # Enables detection of fakeplayers that reconnects quickly (every < 10 seconds) 169 | # before fake players checks have completed. 170 | # Default is 1 (ON). 171 | FakePlayers_AntiReconnect = 1 172 | 173 | # FakePlayers_BanTime (minutes) 174 | # Dproto will ban IP spamming fakeplayers for time (in minutes) specified in this variable 175 | # Default is 120 minutes. 176 | # Use 0 for permanent ban. 177 | # Use negative vaules to disable ban (fake players will only be kicked). 178 | FakePlayers_BanTime = 120 179 | 180 | # Exploits_CheckDownloads (0/1) 181 | # Enable checking of requested download files against precached resources. 182 | # Default is 1 (ON). 183 | Exploits_CheckDownloads = 1 184 | 185 | # Exploits_DisableUploads (0/1) 186 | # Disable file uploads (not customizations) to the server. 187 | # Default is 1 (ON). 188 | Exploits_DisableUploads = 1 189 | 190 | 191 | # ======================================================== 192 | # OTHER STUFF 193 | # ======================================================== 194 | 195 | # LoggingMode: 196 | # 0 = None 197 | # 1 = Console 198 | # 2 = Log Files 199 | # 3 = Both 200 | LoggingMode = 2 201 | 202 | # ThreatsLoggingMode (0/1) 203 | # Enable logging of threats details. 204 | # Default is 0 (OFF). 205 | ThreatsLoggingMode = 0 206 | 207 | # DisableNativeAuth (0/1) 208 | # Disables valve/steam auth system. 209 | # For p.47 Based: Server will not connect to auth servers. 210 | # For All: Server will not call authorization functions. 211 | # This is a fix for startup freeze for old (p.47) servers. 212 | DisableNativeAuth = 0 213 | 214 | # ServerInfoAnswerType (0/1/2) 215 | # Sets server answer type for query requests 216 | # 0 = New style (Source Engine) 217 | # 1 = Old Style (Fix favorites list for p.47 clients) 218 | # 2 = Hybrid mode (Old Style sent first) 219 | # Default is 0 (Source Engine). 220 | ServerInfoAnswerType = 0 221 | 222 | # Game_Name (string) 223 | # Sets game name displayed for clients 224 | # If Game_Name is empty, native game name will be used 225 | Game_Name = 226 | 227 | # Enables fix for proper player id displaying on HLStats server monitoring 228 | # Enable this only if you have HLStats 229 | HLStatsPlayerIdFix = 0 230 | 231 | # Enables spreading of user setinfo topcolor and bottomcolor settings. 232 | # Disable this if mod doesn't support coloring of player models. 233 | SpreadUserInfoColors = 1 234 | 235 | # ExportVersion (0/1) 236 | # Enables/Disables exporting of dp_version cvar 237 | # 1 = dp_version cvar will be exported to server rules. It will be visible in server monitoring tools (like HLSW) 238 | # 0 = dp_version cvar will not be exported to server rules. 239 | ExportVersion = 1 240 | 241 | # HLTVExcept_IP (ip addr) 242 | # HLTV from this IP will be able to join the server even if cid_HLTV is set to 5 (deprecated) 243 | HLTVExcept_IP = 127.0.0.1 244 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | Apache License 2 | Version 2.0, January 2004 3 | http://www.apache.org/licenses/ 4 | 5 | TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION 6 | 7 | 1. Definitions. 8 | 9 | "License" shall mean the terms and conditions for use, reproduction, 10 | and distribution as defined by Sections 1 through 9 of this document. 11 | 12 | "Licensor" shall mean the copyright owner or entity authorized by 13 | the copyright owner that is granting the License. 14 | 15 | "Legal Entity" shall mean the union of the acting entity and all 16 | other entities that control, are controlled by, or are under common 17 | control with that entity. For the purposes of this definition, 18 | "control" means (i) the power, direct or indirect, to cause the 19 | direction or management of such entity, whether by contract or 20 | otherwise, or (ii) ownership of fifty percent (50%) or more of the 21 | outstanding shares, or (iii) beneficial ownership of such entity. 22 | 23 | "You" (or "Your") shall mean an individual or Legal Entity 24 | exercising permissions granted by this License. 25 | 26 | "Source" form shall mean the preferred form for making modifications, 27 | including but not limited to software source code, documentation 28 | source, and configuration files. 29 | 30 | "Object" form shall mean any form resulting from mechanical 31 | transformation or translation of a Source form, including but 32 | not limited to compiled object code, generated documentation, 33 | and conversions to other media types. 34 | 35 | "Work" shall mean the work of authorship, whether in Source or 36 | Object form, made available under the License, as indicated by a 37 | copyright notice that is included in or attached to the work 38 | (an example is provided in the Appendix below). 39 | 40 | "Derivative Works" shall mean any work, whether in Source or Object 41 | form, that is based on (or derived from) the Work and for which the 42 | editorial revisions, annotations, elaborations, or other modifications 43 | represent, as a whole, an original work of authorship. For the purposes 44 | of this License, Derivative Works shall not include works that remain 45 | separable from, or merely link (or bind by name) to the interfaces of, 46 | the Work and Derivative Works thereof. 47 | 48 | "Contribution" shall mean any work of authorship, including 49 | the original version of the Work and any modifications or additions 50 | to that Work or Derivative Works thereof, that is intentionally 51 | submitted to Licensor for inclusion in the Work by the copyright owner 52 | or by an individual or Legal Entity authorized to submit on behalf of 53 | the copyright owner. For the purposes of this definition, "submitted" 54 | means any form of electronic, verbal, or written communication sent 55 | to the Licensor or its representatives, including but not limited to 56 | communication on electronic mailing lists, source code control systems, 57 | and issue tracking systems that are managed by, or on behalf of, the 58 | Licensor for the purpose of discussing and improving the Work, but 59 | excluding communication that is conspicuously marked or otherwise 60 | designated in writing by the copyright owner as "Not a Contribution." 61 | 62 | "Contributor" shall mean Licensor and any individual or Legal Entity 63 | on behalf of whom a Contribution has been received by Licensor and 64 | subsequently incorporated within the Work. 65 | 66 | 2. Grant of Copyright License. Subject to the terms and conditions of 67 | this License, each Contributor hereby grants to You a perpetual, 68 | worldwide, non-exclusive, no-charge, royalty-free, irrevocable 69 | copyright license to reproduce, prepare Derivative Works of, 70 | publicly display, publicly perform, sublicense, and distribute the 71 | Work and such Derivative Works in Source or Object form. 72 | 73 | 3. Grant of Patent License. Subject to the terms and conditions of 74 | this License, each Contributor hereby grants to You a perpetual, 75 | worldwide, non-exclusive, no-charge, royalty-free, irrevocable 76 | (except as stated in this section) patent license to make, have made, 77 | use, offer to sell, sell, import, and otherwise transfer the Work, 78 | where such license applies only to those patent claims licensable 79 | by such Contributor that are necessarily infringed by their 80 | Contribution(s) alone or by combination of their Contribution(s) 81 | with the Work to which such Contribution(s) was submitted. If You 82 | institute patent litigation against any entity (including a 83 | cross-claim or counterclaim in a lawsuit) alleging that the Work 84 | or a Contribution incorporated within the Work constitutes direct 85 | or contributory patent infringement, then any patent licenses 86 | granted to You under this License for that Work shall terminate 87 | as of the date such litigation is filed. 88 | 89 | 4. Redistribution. You may reproduce and distribute copies of the 90 | Work or Derivative Works thereof in any medium, with or without 91 | modifications, and in Source or Object form, provided that You 92 | meet the following conditions: 93 | 94 | (a) You must give any other recipients of the Work or 95 | Derivative Works a copy of this License; and 96 | 97 | (b) You must cause any modified files to carry prominent notices 98 | stating that You changed the files; and 99 | 100 | (c) You must retain, in the Source form of any Derivative Works 101 | that You distribute, all copyright, patent, trademark, and 102 | attribution notices from the Source form of the Work, 103 | excluding those notices that do not pertain to any part of 104 | the Derivative Works; and 105 | 106 | (d) If the Work includes a "NOTICE" text file as part of its 107 | distribution, then any Derivative Works that You distribute must 108 | include a readable copy of the attribution notices contained 109 | within such NOTICE file, excluding those notices that do not 110 | pertain to any part of the Derivative Works, in at least one 111 | of the following places: within a NOTICE text file distributed 112 | as part of the Derivative Works; within the Source form or 113 | documentation, if provided along with the Derivative Works; or, 114 | within a display generated by the Derivative Works, if and 115 | wherever such third-party notices normally appear. The contents 116 | of the NOTICE file are for informational purposes only and 117 | do not modify the License. You may add Your own attribution 118 | notices within Derivative Works that You distribute, alongside 119 | or as an addendum to the NOTICE text from the Work, provided 120 | that such additional attribution notices cannot be construed 121 | as modifying the License. 122 | 123 | You may add Your own copyright statement to Your modifications and 124 | may provide additional or different license terms and conditions 125 | for use, reproduction, or distribution of Your modifications, or 126 | for any such Derivative Works as a whole, provided Your use, 127 | reproduction, and distribution of the Work otherwise complies with 128 | the conditions stated in this License. 129 | 130 | 5. Submission of Contributions. Unless You explicitly state otherwise, 131 | any Contribution intentionally submitted for inclusion in the Work 132 | by You to the Licensor shall be under the terms and conditions of 133 | this License, without any additional terms or conditions. 134 | Notwithstanding the above, nothing herein shall supersede or modify 135 | the terms of any separate license agreement you may have executed 136 | with Licensor regarding such Contributions. 137 | 138 | 6. Trademarks. This License does not grant permission to use the trade 139 | names, trademarks, service marks, or product names of the Licensor, 140 | except as required for reasonable and customary use in describing the 141 | origin of the Work and reproducing the content of the NOTICE file. 142 | 143 | 7. Disclaimer of Warranty. Unless required by applicable law or 144 | agreed to in writing, Licensor provides the Work (and each 145 | Contributor provides its Contributions) on an "AS IS" BASIS, 146 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or 147 | implied, including, without limitation, any warranties or conditions 148 | of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A 149 | PARTICULAR PURPOSE. You are solely responsible for determining the 150 | appropriateness of using or redistributing the Work and assume any 151 | risks associated with Your exercise of permissions under this License. 152 | 153 | 8. Limitation of Liability. In no event and under no legal theory, 154 | whether in tort (including negligence), contract, or otherwise, 155 | unless required by applicable law (such as deliberate and grossly 156 | negligent acts) or agreed to in writing, shall any Contributor be 157 | liable to You for damages, including any direct, indirect, special, 158 | incidental, or consequential damages of any character arising as a 159 | result of this License or out of the use or inability to use the 160 | Work (including but not limited to damages for loss of goodwill, 161 | work stoppage, computer failure or malfunction, or any and all 162 | other commercial damages or losses), even if such Contributor 163 | has been advised of the possibility of such damages. 164 | 165 | 9. Accepting Warranty or Additional Liability. While redistributing 166 | the Work or Derivative Works thereof, You may choose to offer, 167 | and charge a fee for, acceptance of support, warranty, indemnity, 168 | or other liability obligations and/or rights consistent with this 169 | License. However, in accepting such obligations, You may act only 170 | on Your own behalf and on Your sole responsibility, not on behalf 171 | of any other Contributor, and only if You agree to indemnify, 172 | defend, and hold each Contributor harmless for any liability 173 | incurred by, or claims asserted against, such Contributor by reason 174 | of your accepting any such warranty or additional liability. 175 | 176 | END OF TERMS AND CONDITIONS 177 | 178 | APPENDIX: How to apply the Apache License to your work. 179 | 180 | To apply the Apache License to your work, attach the following 181 | boilerplate notice, with the fields enclosed by brackets "{}" 182 | replaced with your own identifying information. (Don't include 183 | the brackets!) The text should be enclosed in the appropriate 184 | comment syntax for the file format. We also recommend that a 185 | file or class name and description of purpose be included on the 186 | same "printed page" as the copyright notice for easier 187 | identification within third-party archives. 188 | 189 | Copyright {yyyy} {name of copyright owner} 190 | 191 | Licensed under the Apache License, Version 2.0 (the "License"); 192 | you may not use this file except in compliance with the License. 193 | You may obtain a copy of the License at 194 | 195 | http://www.apache.org/licenses/LICENSE-2.0 196 | 197 | Unless required by applicable law or agreed to in writing, software 198 | distributed under the License is distributed on an "AS IS" BASIS, 199 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 200 | See the License for the specific language governing permissions and 201 | limitations under the License. 202 | --------------------------------------------------------------------------------