mirror of
https://github.com/azerothcore/mod-anticheat.git
synced 2026-01-12 16:48:37 +00:00
Upgrade module (#124)
This commit is contained in:
8
.editorconfig
Normal file
8
.editorconfig
Normal file
@@ -0,0 +1,8 @@
|
||||
[*]
|
||||
charset = utf-8
|
||||
indent_style = space
|
||||
indent_size = 4
|
||||
tab_width = 4
|
||||
insert_final_newline = true
|
||||
trim_trailing_whitespace = true
|
||||
max_line_length = 80
|
||||
105
.gitattributes
vendored
Normal file
105
.gitattributes
vendored
Normal file
@@ -0,0 +1,105 @@
|
||||
## AUTO-DETECT
|
||||
## Handle line endings automatically for files detected as
|
||||
## text and leave all files detected as binary untouched.
|
||||
## This will handle all files NOT defined below.
|
||||
* text=auto eol=lf
|
||||
|
||||
# Text
|
||||
*.conf text
|
||||
*.conf.dist text
|
||||
*.cmake text
|
||||
|
||||
## Scripts
|
||||
*.sh text
|
||||
*.fish text
|
||||
*.lua text
|
||||
|
||||
## SQL
|
||||
*.sql text
|
||||
|
||||
## C++
|
||||
*.c text
|
||||
*.cc text
|
||||
*.cxx text
|
||||
*.cpp text
|
||||
*.c++ text
|
||||
*.hpp text
|
||||
*.h text
|
||||
*.h++ text
|
||||
*.hh text
|
||||
|
||||
|
||||
## For documentation
|
||||
|
||||
# Documents
|
||||
*.doc diff=astextplain
|
||||
*.DOC diff=astextplain
|
||||
*.docx diff=astextplain
|
||||
*.DOCX diff=astextplain
|
||||
*.dot diff=astextplain
|
||||
*.DOT diff=astextplain
|
||||
*.pdf diff=astextplain
|
||||
*.PDF diff=astextplain
|
||||
*.rtf diff=astextplain
|
||||
*.RTF diff=astextplain
|
||||
|
||||
## DOCUMENTATION
|
||||
*.markdown text
|
||||
*.md text
|
||||
*.mdwn text
|
||||
*.mdown text
|
||||
*.mkd text
|
||||
*.mkdn text
|
||||
*.mdtxt text
|
||||
*.mdtext text
|
||||
*.txt text
|
||||
AUTHORS text
|
||||
CHANGELOG text
|
||||
CHANGES text
|
||||
CONTRIBUTING text
|
||||
COPYING text
|
||||
copyright text
|
||||
*COPYRIGHT* text
|
||||
INSTALL text
|
||||
license text
|
||||
LICENSE text
|
||||
NEWS text
|
||||
readme text
|
||||
*README* text
|
||||
TODO text
|
||||
|
||||
## GRAPHICS
|
||||
*.ai binary
|
||||
*.bmp binary
|
||||
*.eps binary
|
||||
*.gif binary
|
||||
*.ico binary
|
||||
*.jng binary
|
||||
*.jp2 binary
|
||||
*.jpg binary
|
||||
*.jpeg binary
|
||||
*.jpx binary
|
||||
*.jxr binary
|
||||
*.pdf binary
|
||||
*.png binary
|
||||
*.psb binary
|
||||
*.psd binary
|
||||
*.svg text
|
||||
*.svgz binary
|
||||
*.tif binary
|
||||
*.tiff binary
|
||||
*.wbmp binary
|
||||
*.webp binary
|
||||
|
||||
|
||||
## ARCHIVES
|
||||
*.7z binary
|
||||
*.gz binary
|
||||
*.jar binary
|
||||
*.rar binary
|
||||
*.tar binary
|
||||
*.zip binary
|
||||
|
||||
## EXECUTABLES
|
||||
*.exe binary
|
||||
*.pyc binary
|
||||
4
.github/README.md
vendored
4
.github/README.md
vendored
@@ -4,7 +4,9 @@
|
||||
|
||||
## Anticheat Module
|
||||
|
||||
- Latest build status with AzerothCore: [](https://github.com/azerothcore/mod-anticheat)
|
||||
- Latest build status with AzerothCore:
|
||||
|
||||
[](https://github.com/azerothcore/mod-anticheat)
|
||||
|
||||
This is a port of the PassiveAnticheat Script from lordpsyan's repo to [AzerothCore](http://www.azerothcore.org)
|
||||
|
||||
|
||||
19
.github/workflows/core_codestyle.yml
vendored
Normal file
19
.github/workflows/core_codestyle.yml
vendored
Normal file
@@ -0,0 +1,19 @@
|
||||
name: Codestyle Checks
|
||||
on:
|
||||
push:
|
||||
branches: [ master ]
|
||||
pull_request:
|
||||
branches: [ master ]
|
||||
|
||||
jobs:
|
||||
check-codestyle:
|
||||
strategy:
|
||||
fail-fast: false
|
||||
|
||||
runs-on: ubuntu-latest
|
||||
name: Check Codestyling
|
||||
steps:
|
||||
- uses: actions/checkout@v2
|
||||
|
||||
- name: Check Codestyling
|
||||
run: source ./apps/ci/ci-codestyle.sh
|
||||
2
LICENSE
2
LICENSE
@@ -1,6 +1,6 @@
|
||||
MIT License
|
||||
|
||||
Copyright (c) 2022 AzerothCore
|
||||
Copyright (c) 2023 AzerothCore
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
of this software and associated documentation files (the "Software"), to deal
|
||||
|
||||
0
apps/.gitkeep
Normal file
0
apps/.gitkeep
Normal file
0
apps/ci/.gitkeep
Normal file
0
apps/ci/.gitkeep
Normal file
40
apps/ci/ci-codestyle.sh
Normal file
40
apps/ci/ci-codestyle.sh
Normal file
@@ -0,0 +1,40 @@
|
||||
#!/bin/bash
|
||||
set -e
|
||||
|
||||
echo "Codestyle check script:"
|
||||
echo
|
||||
|
||||
declare -A singleLineRegexChecks=(
|
||||
["LOG_.+GetCounter"]="Use ObjectGuid::ToString().c_str() method instead of ObjectGuid::GetCounter() when logging. Check the lines above"
|
||||
["[[:blank:]]$"]="Remove whitespace at the end of the lines above"
|
||||
["\t"]="Replace tabs with 4 spaces in the lines above"
|
||||
)
|
||||
|
||||
for check in ${!singleLineRegexChecks[@]}; do
|
||||
echo " Checking RegEx: '${check}'"
|
||||
|
||||
if grep -P -r -I -n ${check} src; then
|
||||
echo
|
||||
echo "${singleLineRegexChecks[$check]}"
|
||||
exit 1
|
||||
fi
|
||||
done
|
||||
|
||||
declare -A multiLineRegexChecks=(
|
||||
["LOG_[^;]+GetCounter"]="Use ObjectGuid::ToString().c_str() method instead of ObjectGuid::GetCounter() when logging. Check the lines above"
|
||||
["\n\n\n"]="Multiple blank lines detected, keep only one. Check the files above"
|
||||
)
|
||||
|
||||
for check in ${!multiLineRegexChecks[@]}; do
|
||||
echo " Checking RegEx: '${check}'"
|
||||
|
||||
if grep -Pzo -r -I ${check} src; then
|
||||
echo
|
||||
echo
|
||||
echo "${multiLineRegexChecks[$check]}"
|
||||
exit 1
|
||||
fi
|
||||
done
|
||||
|
||||
echo
|
||||
echo "Everything looks good"
|
||||
0
conf/.gitkeep
Normal file
0
conf/.gitkeep
Normal file
@@ -1,12 +0,0 @@
|
||||
#!/usr/bin/env bash
|
||||
|
||||
## CUSTOM SQL - Important file used by the db_assembler.sh
|
||||
## Keep only the required variables (base sql files or updates, depending on the DB)
|
||||
|
||||
|
||||
## BASE SQL
|
||||
|
||||
DB_CHARACTERS_CUSTOM_PATHS+=(
|
||||
"$MOD_ANTICHEAT_ROOT/sql/characters/base/"
|
||||
)
|
||||
|
||||
0
data/.gitkeep
Normal file
0
data/.gitkeep
Normal file
47
data/sql/db-characters/base/charactersdb_anticheat.sql
Normal file
47
data/sql/db-characters/base/charactersdb_anticheat.sql
Normal file
@@ -0,0 +1,47 @@
|
||||
DROP TABLE IF EXISTS `daily_players_reports`;
|
||||
CREATE TABLE IF NOT EXISTS `daily_players_reports` (
|
||||
`guid` int(10) unsigned NOT NULL DEFAULT '0',
|
||||
`creation_time` int(10) unsigned NOT NULL DEFAULT '0',
|
||||
`average` float NOT NULL DEFAULT '0',
|
||||
`total_reports` bigint(20) unsigned NOT NULL DEFAULT '0',
|
||||
`speed_reports` bigint(20) unsigned NOT NULL DEFAULT '0',
|
||||
`fly_reports` bigint(20) unsigned NOT NULL DEFAULT '0',
|
||||
`jump_reports` bigint(20) unsigned NOT NULL DEFAULT '0',
|
||||
`waterwalk_reports` bigint(20) unsigned NOT NULL DEFAULT '0',
|
||||
`teleportplane_reports` bigint(20) unsigned NOT NULL DEFAULT '0',
|
||||
`climb_reports` bigint(20) unsigned NOT NULL DEFAULT '0',
|
||||
`teleport_reports` bigint(20) unsigned NOT NULL DEFAULT '0',
|
||||
`ignorecontrol_reports` bigint(20) unsigned NOT NULL DEFAULT '0',
|
||||
`zaxis_reports` bigint(20) unsigned NOT NULL DEFAULT '0',
|
||||
`antiswim_reports` bigint(20) unsigned NOT NULL DEFAULT '0',
|
||||
`gravity_reports` bigint(20) unsigned NOT NULL DEFAULT '0',
|
||||
`antiknockback_reports` bigint(20) unsigned NOT NULL DEFAULT '0',
|
||||
`no_fall_damage_reports` bigint(20) unsigned NOT NULL DEFAULT '0',
|
||||
`op_ack_hack_reports` bigint(20) unsigned NOT NULL DEFAULT '0',
|
||||
`counter_measures_reports` bigint(20) unsigned NOT NULL DEFAULT '0',
|
||||
PRIMARY KEY (`guid`)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
|
||||
|
||||
DROP TABLE IF EXISTS `players_reports_status`;
|
||||
CREATE TABLE IF NOT EXISTS `players_reports_status` (
|
||||
`guid` int(10) unsigned NOT NULL DEFAULT '0',
|
||||
`creation_time` int(10) unsigned NOT NULL DEFAULT '0',
|
||||
`average` float NOT NULL DEFAULT '0',
|
||||
`total_reports` bigint(20) unsigned NOT NULL DEFAULT '0',
|
||||
`speed_reports` bigint(20) unsigned NOT NULL DEFAULT '0',
|
||||
`fly_reports` bigint(20) unsigned NOT NULL DEFAULT '0',
|
||||
`jump_reports` bigint(20) unsigned NOT NULL DEFAULT '0',
|
||||
`waterwalk_reports` bigint(20) unsigned NOT NULL DEFAULT '0',
|
||||
`teleportplane_reports` bigint(20) unsigned NOT NULL DEFAULT '0',
|
||||
`climb_reports` bigint(20) unsigned NOT NULL DEFAULT '0',
|
||||
`teleport_reports` bigint(20) unsigned NOT NULL DEFAULT '0',
|
||||
`ignorecontrol_reports` bigint(20) unsigned NOT NULL DEFAULT '0',
|
||||
`zaxis_reports` bigint(20) unsigned NOT NULL DEFAULT '0',
|
||||
`antiswim_reports` bigint(20) unsigned NOT NULL DEFAULT '0',
|
||||
`gravity_reports` bigint(20) unsigned NOT NULL DEFAULT '0',
|
||||
`antiknockback_reports` bigint(20) unsigned NOT NULL DEFAULT '0',
|
||||
`no_fall_damage_reports` bigint(20) unsigned NOT NULL DEFAULT '0',
|
||||
`op_ack_hack_reports` bigint(20) unsigned NOT NULL DEFAULT '0',
|
||||
`counter_measures_reports` bigint(20) unsigned NOT NULL DEFAULT '0',
|
||||
PRIMARY KEY (`guid`)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
|
||||
0
data/sql/db-characters/updates/.gitkeep
Normal file
0
data/sql/db-characters/updates/.gitkeep
Normal file
@@ -1,43 +0,0 @@
|
||||
DROP TABLE IF EXISTS `daily_players_reports`;
|
||||
CREATE TABLE IF NOT EXISTS `daily_players_reports` (
|
||||
`guid` int unsigned NOT NULL DEFAULT 0,
|
||||
`creation_time` int unsigned NOT NULL DEFAULT 0,
|
||||
`average` float NOT NULL DEFAULT 0,
|
||||
`total_reports` bigint unsigned NOT NULL DEFAULT 0,
|
||||
`speed_reports` bigint unsigned NOT NULL DEFAULT 0,
|
||||
`fly_reports` bigint unsigned NOT NULL DEFAULT 0,
|
||||
`jump_reports` bigint unsigned NOT NULL DEFAULT 0,
|
||||
`waterwalk_reports` bigint unsigned NOT NULL DEFAULT 0,
|
||||
`teleportplane_reports` bigint unsigned NOT NULL DEFAULT 0,
|
||||
`climb_reports` bigint unsigned NOT NULL DEFAULT 0,
|
||||
`teleport_reports` bigint unsigned NOT NULL DEFAULT 0,
|
||||
`ignorecontrol_reports` bigint unsigned NOT NULL DEFAULT 0,
|
||||
`zaxis_reports` bigint unsigned NOT NULL DEFAULT 0,
|
||||
`antiswim_reports` bigint unsigned NOT NULL DEFAULT 0,
|
||||
`gravity_reports` bigint unsigned NOT NULL DEFAULT 0,
|
||||
`antiknockback_reports` bigint unsigned NOT NULL DEFAULT 0,
|
||||
`no_fall_damage_reports` bigint unsigned NOT NULL DEFAULT 0,
|
||||
PRIMARY KEY (`guid`)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
|
||||
|
||||
DROP TABLE IF EXISTS `players_reports_status`;
|
||||
CREATE TABLE IF NOT EXISTS `players_reports_status` (
|
||||
`guid` int unsigned NOT NULL DEFAULT 0,
|
||||
`creation_time` int unsigned NOT NULL DEFAULT 0,
|
||||
`average` float NOT NULL DEFAULT 0,
|
||||
`total_reports` bigint unsigned NOT NULL DEFAULT 0,
|
||||
`speed_reports` bigint unsigned NOT NULL DEFAULT 0,
|
||||
`fly_reports` bigint unsigned NOT NULL DEFAULT 0,
|
||||
`jump_reports` bigint unsigned NOT NULL DEFAULT 0,
|
||||
`waterwalk_reports` bigint unsigned NOT NULL DEFAULT 0,
|
||||
`teleportplane_reports` bigint unsigned NOT NULL DEFAULT 0,
|
||||
`climb_reports` bigint unsigned NOT NULL DEFAULT 0,
|
||||
`teleport_reports` bigint unsigned NOT NULL DEFAULT 0,
|
||||
`ignorecontrol_reports` bigint unsigned NOT NULL DEFAULT 0,
|
||||
`zaxis_reports` bigint unsigned NOT NULL DEFAULT 0,
|
||||
`antiswim_reports` bigint unsigned NOT NULL DEFAULT 0,
|
||||
`gravity_reports` bigint unsigned NOT NULL DEFAULT 0,
|
||||
`antiknockback_reports` bigint unsigned NOT NULL DEFAULT 0,
|
||||
`no_fall_damage_reports` bigint unsigned NOT NULL DEFAULT 0,
|
||||
PRIMARY KEY (`guid`)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
|
||||
@@ -1,38 +0,0 @@
|
||||
-- run on character db
|
||||
|
||||
DROP PROCEDURE IF EXISTS `updatemodanticheatdb`;
|
||||
DELIMITER //
|
||||
CREATE PROCEDURE updatemodanticheatdb()
|
||||
proc:BEGIN
|
||||
SELECT COUNT(*) INTO @COLEXISTS
|
||||
FROM information_schema.COLUMNS
|
||||
WHERE TABLE_SCHEMA = DATABASE() AND TABLE_NAME = 'daily_players_reports' AND COLUMN_NAME = 'no_fall_damage_reports';
|
||||
IF @COLEXISTS = 1 THEN LEAVE proc; END IF;
|
||||
START TRANSACTION;
|
||||
|
||||
ALTER TABLE `daily_players_reports`
|
||||
ADD COLUMN `no_fall_damage_reports` BIGINT UNSIGNED NOT NULL DEFAULT 0 AFTER `antiknockback_reports`;
|
||||
|
||||
END //
|
||||
DELIMITER ;
|
||||
|
||||
CALL updatemodanticheatdb();
|
||||
|
||||
DROP PROCEDURE IF EXISTS `updatemodanticheatdb`;
|
||||
DELIMITER //
|
||||
CREATE PROCEDURE updatemodanticheatdb()
|
||||
proc:BEGIN
|
||||
SELECT COUNT(*) INTO @COLEXISTS
|
||||
FROM information_schema.COLUMNS
|
||||
WHERE TABLE_SCHEMA = DATABASE() AND TABLE_NAME = 'players_reports_status' AND COLUMN_NAME = 'no_fall_damage_reports';
|
||||
IF @COLEXISTS = 1 THEN LEAVE proc; END IF;
|
||||
START TRANSACTION;
|
||||
|
||||
ALTER TABLE `players_reports_status`
|
||||
ADD COLUMN `no_fall_damage_reports` BIGINT UNSIGNED NOT NULL DEFAULT 0 AFTER `antiknockback_reports`;
|
||||
|
||||
END //
|
||||
DELIMITER ;
|
||||
|
||||
CALL updatemodanticheatdb();
|
||||
DROP PROCEDURE IF EXISTS `updatemodanticheatdb`;
|
||||
@@ -1,38 +0,0 @@
|
||||
-- run on Characters DB
|
||||
|
||||
DROP PROCEDURE IF EXISTS `updatemodanticheatdb`;
|
||||
DELIMITER //
|
||||
CREATE PROCEDURE updatemodanticheatdb()
|
||||
proc:BEGIN
|
||||
SELECT COUNT(*) INTO @COLEXISTS
|
||||
FROM information_schema.COLUMNS
|
||||
WHERE TABLE_SCHEMA = DATABASE() AND TABLE_NAME = 'daily_players_reports' AND COLUMN_NAME = 'op_ack_hack_reports';
|
||||
IF @COLEXISTS = 1 THEN LEAVE proc; END IF;
|
||||
START TRANSACTION;
|
||||
|
||||
ALTER TABLE `daily_players_reports`
|
||||
ADD COLUMN `op_ack_hack_reports` BIGINT UNSIGNED NOT NULL DEFAULT 0 AFTER `no_fall_damage_reports`;
|
||||
|
||||
END //
|
||||
DELIMITER ;
|
||||
|
||||
CALL updatemodanticheatdb();
|
||||
|
||||
DROP PROCEDURE IF EXISTS `updatemodanticheatdb`;
|
||||
DELIMITER //
|
||||
CREATE PROCEDURE updatemodanticheatdb()
|
||||
proc:BEGIN
|
||||
SELECT COUNT(*) INTO @COLEXISTS
|
||||
FROM information_schema.COLUMNS
|
||||
WHERE TABLE_SCHEMA = DATABASE() AND TABLE_NAME = 'players_reports_status' AND COLUMN_NAME = 'op_ack_hack_reports';
|
||||
IF @COLEXISTS = 1 THEN LEAVE proc; END IF;
|
||||
START TRANSACTION;
|
||||
|
||||
ALTER TABLE `players_reports_status`
|
||||
ADD COLUMN `op_ack_hack_reports` BIGINT UNSIGNED NOT NULL DEFAULT 0 AFTER `no_fall_damage_reports`;
|
||||
|
||||
END //
|
||||
DELIMITER ;
|
||||
|
||||
CALL updatemodanticheatdb();
|
||||
DROP PROCEDURE IF EXISTS `updatemodanticheatdb`;
|
||||
@@ -1,38 +0,0 @@
|
||||
-- run on Characters DB
|
||||
|
||||
DROP PROCEDURE IF EXISTS `updatemodanticheatdb`;
|
||||
DELIMITER //
|
||||
CREATE PROCEDURE updatemodanticheatdb()
|
||||
proc:BEGIN
|
||||
SELECT COUNT(*) INTO @COLEXISTS
|
||||
FROM information_schema.COLUMNS
|
||||
WHERE TABLE_SCHEMA = DATABASE() AND TABLE_NAME = 'daily_players_reports' AND COLUMN_NAME = 'counter_measures_reports';
|
||||
IF @COLEXISTS = 1 THEN LEAVE proc; END IF;
|
||||
START TRANSACTION;
|
||||
|
||||
ALTER TABLE `daily_players_reports`
|
||||
ADD COLUMN `counter_measures_reports` BIGINT UNSIGNED NOT NULL DEFAULT 0 AFTER `op_ack_hack_reports`;
|
||||
|
||||
END //
|
||||
DELIMITER ;
|
||||
|
||||
CALL updatemodanticheatdb();
|
||||
|
||||
DROP PROCEDURE IF EXISTS `updatemodanticheatdb`;
|
||||
DELIMITER //
|
||||
CREATE PROCEDURE updatemodanticheatdb()
|
||||
proc:BEGIN
|
||||
SELECT COUNT(*) INTO @COLEXISTS
|
||||
FROM information_schema.COLUMNS
|
||||
WHERE TABLE_SCHEMA = DATABASE() AND TABLE_NAME = 'players_reports_status' AND COLUMN_NAME = 'counter_measures_reports';
|
||||
IF @COLEXISTS = 1 THEN LEAVE proc; END IF;
|
||||
START TRANSACTION;
|
||||
|
||||
ALTER TABLE `players_reports_status`
|
||||
ADD COLUMN `counter_measures_reports` BIGINT UNSIGNED NOT NULL DEFAULT 0 AFTER `op_ack_hack_reports`;
|
||||
|
||||
END //
|
||||
DELIMITER ;
|
||||
|
||||
CALL updatemodanticheatdb();
|
||||
DROP PROCEDURE IF EXISTS `updatemodanticheatdb`;
|
||||
10
include.sh
10
include.sh
@@ -1,10 +0,0 @@
|
||||
#!/usr/bin/env bash
|
||||
|
||||
## GETS THE CURRENT MODULE ROOT DIRECTORY
|
||||
MOD_ANTICHEAT_ROOT="$( cd "$( dirname "${BASH_SOURCE[0]}" )/" && pwd )"
|
||||
|
||||
source "$MOD_ANTICHEAT_ROOT/conf/conf.sh.dist"
|
||||
|
||||
if [ -f "$MOD_ANTICHEAT_ROOT/conf/conf.sh" ]; then
|
||||
source "$MOD_ANTICHEAT_ROOT/conf/conf.sh"
|
||||
fi
|
||||
|
||||
Reference in New Issue
Block a user