aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMikhail Redko <ovitnez@gmail.com>2017-10-13 23:26:53 +0300
committerShauren <shauren.trinity@gmail.com>2020-12-31 23:23:50 +0100
commit7625bd960ebc4fab970fb27072aececf9e936e2f (patch)
tree47a85995e1deb073c507d4a826e0027ad96f22fc
parente75c75023a8152babf178b7ae651d76349e9c39c (diff)
Core/WorldSession: Add RBAC permission for skipping idle connection check (#20595)
(cherry picked from commit 558382ed6d87942603fa309b16a30e64d07bb305)
-rw-r--r--sql/base/auth_database.sql3
-rw-r--r--sql/updates/auth/master/2017_10_13_00_auth.sql7
-rw-r--r--src/server/game/Accounts/RBAC.h2
-rw-r--r--src/server/game/Server/WorldSession.cpp2
4 files changed, 12 insertions, 2 deletions
diff --git a/sql/base/auth_database.sql b/sql/base/auth_database.sql
index cde9da4ba19..1f80a8648b2 100644
--- a/sql/base/auth_database.sql
+++ b/sql/base/auth_database.sql
@@ -821,6 +821,7 @@ INSERT INTO `rbac_linked_permissions` VALUES
(195,24),
(195,49),
(195,199),
+(196,7),
(196,10),
(196,200),
(196,201),
@@ -1437,6 +1438,7 @@ INSERT INTO `rbac_permissions` VALUES
(4,'Join Random Battleground'),
(5,'Join Arenas'),
(6,'Join Dungeon Finder'),
+(7,'Skip idle connection check'),
(10,'Use character templates'),
(11,'Log GM trades'),
(12,'Skip character creation demon hunter min level check'),
@@ -2322,6 +2324,7 @@ INSERT INTO `updates` VALUES
('2017_08_04_00_auth.sql','2E994A704C64FECE3CE0883ED0CAC5E5A0E3A36C','ARCHIVED','2017-08-04 23:46:32',0),
('2017_08_13_00_auth_2016_09_22_00_auth.sql','70047954E3556BFA430ADD5680EF8797F74A4B9E','ARCHIVED','2017-08-13 12:00:00',0),
('2017_09_22_00_auth.sql','9313CCE80A18212E6F0C78D83316DE8582AE8084','ARCHIVED','2017-09-22 18:05:17',0),
+('2017_10_13_00_auth.sql','87674E0D166AC60E3725B445714427892E42C6FE','ARCHIVED','2017-10-13 00:00:00',0),
('2017_11_11_01_auth.sql','0D6EDB6B2FC8B9FBDF11ECD79B4B8E943328B6A9','ARCHIVED','2017-11-11 18:49:45',0),
('2017_12_30_00_auth.sql','F360E9555AC68E28834E3FF807E4E37A090EF363','ARCHIVED','2017-12-30 00:23:32',0),
('2017_12_30_01_auth.sql','1E11C78BA6D1D8E8CED7423DF92D1D197D6061EE','ARCHIVED','2017-12-30 23:00:00',0),
diff --git a/sql/updates/auth/master/2017_10_13_00_auth.sql b/sql/updates/auth/master/2017_10_13_00_auth.sql
new file mode 100644
index 00000000000..145714e9564
--- /dev/null
+++ b/sql/updates/auth/master/2017_10_13_00_auth.sql
@@ -0,0 +1,7 @@
+DELETE FROM `rbac_permissions` WHERE `id`=7;
+INSERT INTO `rbac_permissions` (`id`,`name`) VALUES
+(7, 'Skip idle connection check');
+
+DELETE FROM `rbac_linked_permissions` WHERE `linkedId`=7;
+INSERT INTO `rbac_linked_permissions` (`id`,`linkedId`) VALUES
+(196,7);
diff --git a/src/server/game/Accounts/RBAC.h b/src/server/game/Accounts/RBAC.h
index c486dd4846d..5fd86fdf04d 100644
--- a/src/server/game/Accounts/RBAC.h
+++ b/src/server/game/Accounts/RBAC.h
@@ -57,7 +57,7 @@ enum RBACPermissions
RBAC_PERM_JOIN_RANDOM_BG = 4,
RBAC_PERM_JOIN_ARENAS = 5,
RBAC_PERM_JOIN_DUNGEON_FINDER = 6,
- // 7 - reuse
+ RBAC_PERM_IGNORE_IDLE_CONNECTION = 7,
// 8 - reuse
// 9 - reuse
RBAC_PERM_USE_CHARACTER_TEMPLATES = 10,
diff --git a/src/server/game/Server/WorldSession.cpp b/src/server/game/Server/WorldSession.cpp
index a9bb542d0ca..93f31f53cd9 100644
--- a/src/server/game/Server/WorldSession.cpp
+++ b/src/server/game/Server/WorldSession.cpp
@@ -329,7 +329,7 @@ bool WorldSession::Update(uint32 diff, PacketFilter& updater)
///- Before we process anything:
/// If necessary, kick the player because the client didn't send anything for too long
/// (or they've been idling in character select)
- if (IsConnectionIdle())
+ if (IsConnectionIdle() && !HasPermission(rbac::RBAC_PERM_IGNORE_IDLE_CONNECTION))
m_Socket[CONNECTION_TYPE_REALM]->CloseSocket();
///- Retrieve packets from the receive queue and call the appropriate handlers