Commit Graph
103 Commits
Author SHA1 Message Date
Shauren abfd29ab61 Core/WorldSession: Added research notes about CMSG_AUTH_SESSION values and reordered checks during login to always initialize encryption first to make sure the client can read failure packet 2014-08-21 18:18:13 +02:00
Shauren 36e32cc242 Core/NetworkIO: Restored opcode and size checks lost during ace->boost changes, fixes crashes caused by players sending invalid opcodes/too big packets 2014-08-19 19:32:06 +02:00
Shauren c741d2682a Core/NetworkIO: Prevent queueing more async operations when socket is already closed 2014-08-11 20:43:07 +02:00
leak 1a27ce1267 Core/NetworkIO: Restore networking related scripting hooks
Closes #12607
2014-08-11 17:40:43 +02:00
Shauren df11916ad5 Core/NetworkIO: Allow receiving packets bigger than buffer size and properly handle situations where not entire packet was read in one go
Core/Authserver: Restored authenticator functionality
2014-08-10 11:00:27 +02:00
DDuarte 43f868e55c Core/PacketLog: Save session ip and port information in saved packets
This data is put into the "optional data" part of each packet of the PKT 3.1 format
It will be used with WPP to debug some networking issues
2014-07-30 03:45:03 +01:00
joschiwald 04bb78f6c3 Scripts/OutdoorPvP: replaced some chat texts with proper defense messages 2014-07-29 23:45:34 +02:00
Shauren 7a888d03bd Core/Network: Fixed packets being properly received only by the first player when broadcasted to everyone
Closes #12675
2014-07-28 16:37:42 +02:00
Shauren 6f272ea5b7 Core/Network: Optimized packet sending by removing unneccessary memory copying 2014-07-27 17:46:46 +02:00
Shauren 26715795b4 Fixed gcc build 2014-07-27 01:26:03 +02:00
Shauren c1b1ba44ba Core/Network: Refactored socket code, moved common operations to base Socket class 2014-07-26 23:26:01 +02:00
DDuarte dcfa3bfa90 Core/Network: Fix build 2014-07-25 19:49:43 +01:00
DDuarte 4f1d247dfb Core/Network: Fix some possible exceptions on socket.close()
Ref #12634
2014-07-25 18:06:43 +01:00
DDuarte 0b75e38755 Core/Shared: Change rand32 to return uin32 instead of int32
Fixes a crash that happened when rand32 returned negative values.
Also updated some related comments that were outdated since we changed to SFMT.

Closes #12638
2014-07-25 15:00:40 +01:00
Shauren f1a41eabae Core/NetworkIO: Fixed boost::asio::async_write usage - packets will now be sent properly 2014-07-24 17:09:45 +02:00
leak 87db1ae44f Replaced try/catch by non-throwing socket.close() 2014-07-20 14:39:35 +02:00
leak b153e1a47f Fix terminate() being called on kicking a player (closing sockets twice is bad)
Also, Boost, why does your is_open() suck..
2014-07-19 21:59:17 +02:00
Shauren 57cf08f86e Core/Logging: Changed format of packet log file from .bin to .pkt and restored packet logging - PacketLogFile extension must now be .pkt to allow WowPacketParser to use it 2014-07-19 13:30:51 +02:00
Subv f6962f9c68 Fixed some compiler warnings 2014-07-13 16:40:31 -05:00
Subv 128217c4c4 Prevent the WorldSocket from being deleted when there's still an async write operation going on. 2014-07-10 16:01:11 -05:00
Subv e84ba172a7 Fixed a GCC internal error when compiling AsyncAcceptor 2014-07-10 13:36:54 -05:00
leak a738cd96dc Renamed WorldTcpSession back to WorldSocket 2014-07-07 22:03:41 +02:00
leak 7befb26625 Some groundwork for replacing the ACE based WorldSocket handling 2014-07-06 01:26:29 +02:00
Ascathor 6949735098 Core/Misc:
* Fix some codestyle, fix some typos

* Change CMakeLists for: Custom (can be uncommented), Events, World
** Custom is theoretically unchanged. You can, however, uncomment the glob_recurse that initializes every file within. This might be easier for beginners.

* Introducing the IP Based Action Log System:
** On several different actions, e.g. Login, Character Login, etc., a new entry is added
** Can be logged on and off in worldserver config
*** Disabled by default to prevent increased log db size for unknowing users.

* Add a new row to account table called 'last_attempt_ip'
** Lists the last ip trying to connect to the account

* Add a new type of HookScripts: AccountScript
** Includes: OnAccountLogin, OnFailedAccountLogin, OnEmailChange, OnFailedChange, OnPasswordChange, OnFailedPasswordChange

* Added new Hook to PlayerScripts: OnFailedPlayerDelete

* Added new variables to PlayerScripts: OnPlayerDelete
2014-06-13 16:25:11 +02:00
Vincent_Michael 20004050bc Update copyright note for 2014.
Happy new year.
2014-01-01 00:07:53 +01:00
Spp 94e2b9332a Core/Logging: Remove LOG_FILTER_XXX defines with it's value (remember logger names are case-sensitive) 2013-11-08 10:50:51 +01:00
Spp cfaea769bc Core/RBAC: Move RBAC code to namespace rbac 2013-09-27 13:35:45 +02:00
jackpoz 2cca3982d4 Core/Movement: Port Ascent r1637 http://sourceforge.net/p/ascentemubackup/code/1637/ to TrinityCore
Port some movement packet fixes, taking into account client/server connection lag.
Credits to original author, check http://sourceforge.net/p/ascentemubackup/code/1637/ for more details.
MOVEMENT_PACKET_TIME_DELAY default value is currently set to 0, feel free to set it to different values and report feedback.
2013-09-26 20:09:50 +02:00
jackpoz f23b5fb96d Core/Socket: Fix race condition in WorldSocket
ReactorRunnable::svc() checks the status of WorldSockets while WorldRunnable::run() updates them, causing a race condition.

Helgrind log:
Possible data race during write of size 8 at 0x49961810 by thread #9
Locks held: 1, at address 0x4367A620
   at 0x51781F7: ACE_Message_Block::copy(char const*, unsigned long) (Message_Block.inl:372)
   by 0x15D048F: WorldSocket::SendPacket(WorldPacket const&) (WorldSocket.cpp:180)
   by 0x141C45E: WorldSession::SendPacket(WorldPacket const*) (WorldSession.cpp:223)
   by 0x15C49C4: WorldSession::SendAuthResponse(unsigned char, bool, unsigned int) (AuthHandler.cpp:37)
   by 0x14DA71C: World::AddSession_(WorldSession*) (World.cpp:278)
   by 0x14E601E: World::UpdateSessions(unsigned int) (World.cpp:2617)
   by 0x14E3E67: World::Update(unsigned int) (World.cpp:1986)
   by 0x100EAFA: WorldRunnable::run() (WorldRunnable.cpp:60)
   by 0x163A626: ACE_Based::Thread::ThreadTask(void*) (Threading.cpp:186)
   by 0x518F555: ACE_OS_Thread_Adapter::invoke() (OS_Thread_Adapter.cpp:103)
   by 0x4C2B5AD: mythread_wrapper (hg_intercepts.c:219)
   by 0x61DAB4F: start_thread (pthread_create.c:304)

This conflicts with a previous read of size 8 by thread #14
Locks held: none
   at 0x1008414: ACE_Message_Block::length() const (Message_Block.inl:131)
   by 0x15D1207: WorldSocket::Update() (WorldSocket.cpp:448)
   by 0x1427CA3: ReactorRunnable::svc() (WorldSocketMgr.cpp:177)
   by 0x51CBB16: ACE_Task_Base::svc_run(void*) (Task.cpp:271)
   by 0x51CD3BC: ACE_Thread_Adapter::invoke_i() (Thread_Adapter.cpp:161)
   by 0x51CD4D4: ACE_Thread_Adapter::invoke() (Thread_Adapter.cpp:96)
   by 0x4C2B5AD: mythread_wrapper (hg_intercepts.c:219)
   by 0x61DAB4F: start_thread (pthread_create.c:304)

Address 0x49961810 is 16 bytes inside a block of size 80 alloc'd
   at 0x4C286BB: operator new(unsigned long, std::nothrow_t const&) (vg_replace_malloc.c:316)
   by 0x15D0818: WorldSocket::open(void*) (WorldSocket.cpp:237)
   by 0x1429560: ACE_Acceptor<WorldSocket, ACE_SOCK_Acceptor>::activate_svc_handler(WorldSocket*) (Acceptor.cpp:347)
   by 0x142916D: ACE_Acceptor<WorldSocket, ACE_SOCK_Acceptor>::handle_input(int) (Acceptor.cpp:429)
   by 0x515F48D: ACE_Dev_Poll_Reactor::dispatch_io_event(ACE_Dev_Poll_Reactor::Token_Guard&) (Dev_Poll_Reactor.inl:86)
   by 0x5161653: ACE_Dev_Poll_Reactor::handle_events(ACE_Time_Value*) (Dev_Poll_Reactor.cpp:1015)
   by 0x51ACCFC: ACE_Reactor::run_reactor_event_loop(ACE_Time_Value&, int (*)(ACE_Reactor*)) (Reactor.cpp:267)
   by 0x1427C57: ReactorRunnable::svc() (WorldSocketMgr.cpp:170)
   by 0x51CBB16: ACE_Task_Base::svc_run(void*) (Task.cpp:271)
   by 0x51CD3BC: ACE_Thread_Adapter::invoke_i() (Thread_Adapter.cpp:161)
   by 0x51CD4D4: ACE_Thread_Adapter::invoke() (Thread_Adapter.cpp:96)
   by 0x4C2B5AD: mythread_wrapper (hg_intercepts.c:219)
2013-09-01 21:32:34 +02:00
QAston 2a3370929d Fix BigNumber::AsByteArray function by returning Auto_Ptr.
Remove mutex from BigNumber class - it didn't do what it was advertised to do - consider using the "locked" array outside of the function in which it was "locked".
2013-08-18 17:44:03 +02:00
Spp d1677b2db0 Core/Logging: Performance-related tweaks to logging system
All sLog->out* functions (except outCommand atm) are replaced with TC_LOG_* macros.
    Memleak fix
2013-05-13 15:07:36 +02:00
Spp e99dd15915 Core/RBAC: Create new permission 'Skip over-speed ping check' 2013-02-25 15:48:18 +01:00
Nay 42e660e2a2 Core/Sockets: Always try to send MSG_NOSIGNAL in peer().send()
Fixes RASocket::authenticate crash

"MSG_NOSIGNAL:
If you send() to a remote host which is no longer recv()ing, you'll typically get the signal SIGPIPE. Adding this flag prevents that signal from being raised."

Closes #5040
Thanks to @derex for the hint
2013-02-11 02:59:37 +00:00
Shauren b6e56e42ea Core/Auth: Reverted part of fb43a92cc2 - session key is still needed after logging in to be able to switch realms 2013-02-08 01:03:56 +01:00
Shauren fb43a92cc2 Core/Accounts: sessionkey field in account table is only a temporary storage to pass data from authserver to worldserver and should only be used as such. Clearing sessionkey from database after a successful login to prevent possible exploits. 2013-02-07 16:15:23 +01:00
Aokromes 6d8a69d640 Merge pull request #9099 from Bezo/mutenew
Add Mute reason and mute by to the db so you can get this info from the ...
2013-02-04 06:55:26 -08:00
Spp b980aff83e Core: Implement Role based Access Control
- This system will give more control of actions an account can perform.

System defines:
- Permissions to perform some action
- Roles: a set of permissions that have some relation
- Groups: a set of roles that have some relation

Operations:
- Grant: Assign and allow
- Deny: Assign and do not allow
- Revoke: Remove

Precedence to know if something can be done: Grant, Deny. That means, if you are granted some action by a role but you have denied the permission, the action can not be done.

Some Rules:
- Groups can only have roles
- Roles can only have permissions
- An account can be assigned granted and denied roles. Permissions inherited from roles are granted if roles is granted and denied if roles is denied
- An account can be assigned granted and denied permissions
- An account can have multiple groups, roles and permissions
- An account can not have same role granted and denied at same time
- An acconnt can not have same permission granted and denied at same time
- Id 0 can not be used to define a group, role or permission

Added some permissions as a sample of use (Instant Logout, Skip Queue, Join BGs, Join DF) and some permissions as a workaround to commands till command system is modified to use RBAC
2013-02-04 09:04:33 +01:00
Bezo 760d62e934 Add Mute reason and mute by to the db so you can get this info from the db with the pinfo command when player get muted.
old LOGIN_UPD_MUTE_TIME change to LOGIN_UPD_MUTE_TIME_LOGIN due the use of it when character login to world.
2013-01-30 13:09:41 +02:00
Spp cc605e0605 Core/Misc: Minor cosmetic changes here and there 2013-01-24 16:57:35 +01:00
Spp 927062f61f Core/Misc: Some changes to reduce differences with 4.3.4 branch + some cosmetic changes 2013-01-16 11:17:14 +01:00
Vincent_Michael cc65aba789 Update copyright note for 2013.
Happy new year.
2013-01-01 00:41:01 +01:00
Spp 2251d1bfae Core/Misc: Set mode 0644 for files 2012-11-27 13:03:12 +01:00
Spp a79065b12e Typo Fix :D 2012-11-23 12:54:44 +01:00
Spp 0c4e8c8dc2 Core/Network: Enable trace loggers for packet send and receive (just account + opcodeName, opcodeId) 2012-11-23 12:36:18 +01:00
Spp b99c347747 Core: Remove Player.h dependency from all the possible headers 2012-11-17 05:18:37 +01:00
Shauren 85f5a189de Core/Warden: Add minimal verification of OS used by client for warden module loading 2012-11-12 00:31:08 +01:00
Spp 9fbc4c0ae2 Core/Misc: reduced amount of string memory allocations (Step II) 2012-10-24 15:34:48 +02:00
Spp 013fb1f4d9 Core/Misc: reduced amount of string memory allocations (Step I) 2012-10-24 15:34:48 +02:00
Spp 984493108b Core/Logging: Fix incorrect error level for some warden messages
Core/Logging: Fix incorrect filter type for many network messages
Core/Logging: Use OPCODE filter type for network messages related to wrong packets
2012-08-21 22:12:55 +02:00
Spp 13aa00d5f2 Core/Logging: Restore dumping packets in binary format 2012-08-17 10:36:48 +02:00