Commit Graph

26 Commits

Author SHA1 Message Date
Eric Barr
7b2c3a85c7 Update README.md 2016-10-02 15:13:45 -07:00
apathy
050b2c1499 Add missing include 2016-07-27 10:48:18 -07:00
apathy
833a01517b Set no-write-strings for clang and gcc 2016-07-27 10:48:12 -07:00
apathy
a4d1ece511 Only attempt to use libc++ on darwin based environment (osx) 2016-07-27 10:47:48 -07:00
apathy
068e640745 Removed double listing of config option 2016-07-26 23:32:02 -07:00
Eric Barr
71eafc96aa Merge pull request #6 from apathyboy/bind_to_ip
Added an option that allows the stationchat to bind to its config add…
2016-07-26 23:11:47 -07:00
apathy
e4cf73c5ef Added an option that allows the stationchat to bind to its config address instead of the default option of binding to any interface 2016-07-26 23:03:29 -07:00
apathy
c1e1d892c4 Added MIT license to project v1.0.0 2016-07-26 20:00:40 -07:00
apathy
f9676d2e62 Added a default, empty database to be placed in a default location to make setup and running a simple process. 2016-07-26 20:00:39 -07:00
apathy
e760c7ebd8 Corrected travis badge url 2016-07-26 20:00:39 -07:00
apathy
2d4ddee956 Split into library and application code to prepare for future stationapi based apps 2016-07-26 20:00:38 -07:00
apathy
05c07dc3c3 Updated readme file 2016-07-26 20:00:38 -07:00
apathy
6ae0cc8960 No need to remove the avatars from the room like this, it doesn't make a difference in terms of client side functionality and it serves no utility purpose 2016-07-26 20:00:37 -07:00
apathy
4cc237fe31 Updated this to say just that it is an exceptional situation as not all exceptions thrown are errors, they are just exceptional situations (ie, not the success path). 2016-07-26 20:00:37 -07:00
apathy
161b9562e4 In GNUC environments make use of backtrace function from glibc.
Using _GNUC_ wrapper, if needed I can added in a more robust configure time check for the specific header, but that seemed overkill for just this check.
2016-07-26 20:00:37 -07:00
apathy
4239e694f6 Fixed a potential situation where the list of rooms returned for an avatar could potentially contain a dangling pointer. 2016-07-26 20:00:36 -07:00
apathy
f4a1be0367 Combined protocol implementations as they are really just a collection of small functions that pass off the real work to services
Speeds up compile times
2016-07-26 20:00:36 -07:00
apathy
926be7b07a It helps to return the list after its been built :P 2016-07-26 20:00:35 -07:00
apathy
af7c89153f Fix room messages 2016-07-26 20:00:35 -07:00
apathy
8ebded720c Use https to prevent hanging waiting for accepting ssh fingerprint 2016-07-26 20:00:35 -07:00
apathy
592f503094 Fix for failing builds 2016-07-26 20:00:34 -07:00
apathy
8be5eafe41 When sending RoomMessages, exclude the id's for any avatar's that may be ignoring the sender 2016-07-26 20:00:34 -07:00
apathy
a377a48ecb Ignore messages if the srcAvatar is on destAvatar's ignore list. 2016-07-26 20:00:33 -07:00
apathy
98f2a8cac7 Fix compiler warning about returns on all code paths 2016-07-26 20:00:33 -07:00
apathy
4af4a8ca16 Add messages regarding whether udplibrary has been detected or not 2016-07-26 20:00:33 -07:00
apathy
68b60ccb8b Initial project commit
Added udplibrary - consider making this an external dependency

Add basic application loop and a ServiceContainer class.

Added basic registrar service

Clang format

Rename RegistrarService to RegistrarNode

Add serialization helpers

Process GetChatServer message

Add tools for streaming binary data to output

Move Connection management into NodeClient

Refactored NodeClient to be the layer between the application and the udp library that handles tasks specific to translating from one system to the other

Abstracted common bits of the node class out to a reusable base for the gateway as well.

Added stub classes for gateway node and clients

Add missing OnTick call

Added SetApiVersion handler and related messages

Use :: to prevent the overload selected by argument dependent lookup from being used

Enable C++14 building on gcc/clang

Add missing header

Iterator returned by remove_if should not be a ref

Added start of ChatAvatarService

Add serialization support directly for strongly typed enums

Make sending message calls more concise

Add stubs for getting avatars from the online list and from persistent storage

Add SQLite3 dependency

Fixed variable name regression in last commit

Make param for SendMessage const

Tweak network message logging

Removed ServiceContainer, each Node instance serves as its own "service container"

Remove unused file

Open database connection in GatewayNode to pass to services that might need it.

GetPersistedAvatarByNameAndAddress implemented

Refactored class to return boost::optional from "Find" member functions.

Move result codes enum to its own header as it will be included in other locations.

Handle LoginAvatar messages

Added missing include

Fixed compile error on gcc

Use optional avatar arguments for network messages where an avatar might not exist due to an error

Added simple sql script for creating the necessary table structure.

Move init_database.sql to extras

Add a travis-ci file

Added newline to end of file

Changed min required cmake version

Modern C++ compiler support on travis-ci

Disable clang for now (issue on travis-ci end)

Missed disabling the llvm toolchain

Add the travis-ci build badge to the README, which also serves as the project landing page

Added a notes on the dependencies for swgchat and simple build instructions.

Added ChatRoom and related service class for managing rooms.

Added GetRoomSummaries request/response messages and related handler.

Added create table statement for room data

Load chat room data from persistent storage

Support room creation and persistence

Minor tweaks to room address handling

Added GetRoom request/response messages and handler

Added EnterRoom request/response and handler

Build the application configuration from command line, config file or both. Command line settings take precidence over those in the config file.

Adds dependency on boost::program_options

Use trusty

Reset state when servers reconnect

Added logger support via easyloggingpp, a header-only logger.

Updated places that were using cout for logging to use the logger.

Moved all external code to an "externals" directory.

Renamed SendMessage to prevent pita clashes when windows headers get included.

Create verbose logs with unique filenames on each run.

Moved the logger_config option to a commandline only option

Added LOGOUTAVATAR request/response messages and handler

Added SETAVATARATTRIBUTES request/response messages and handler

Added stub classes for persistent message handling

Added GETPERSISTENTHEADERS request message and handler stub

Add a table for persistent message storage

Add handler for GetPersistentHeaders

Add messages and handlers for sending/getting/updating persistent messages

Fix isset check for avatar

Adding initial Contact management

Added support for friend/ignore list management

Add a response callback message to notify recipients of mail they have a new message

Remove the ContactService, manage friends/ignore list within the related avatar

Send FRIENDLOGIN update messages

Removed contact.hpp header, fixed cyclic dependency with ChatAvatar

Send updates on avatar logout

Only send non-deleted message headers.

Send update messages to the appropriately connected server.

fix compile issue in currently unused template

Added instant message support

Testing travis-ci with clang once more as the llvm apt repo is now back online

Uncommented clang-3.7 package

Adding libc++ and libc++abi packages

Disabling clang building for now, will need to devise a solution for building the boost dependency with clang as well before enabling again

Added implementations for a number of room related messages.

Handle add/remove banned - will add persistence for the banned/admin/moderator lists shortly

Handle room chat. Initial work on room moderation/attribute management

Added support for destroying rooms

Message sending tweaks

Prevent sending redundant messages to a game server that has already
received the update.

Implement the leave room handler

Added add/remove moderator handlers

Added descriptive comment for this member func

Specified unique columns and foreign keys

Handle storing moderator/banned lists

Cleanup of the EnterRoom handler

Avatar that creates a room is also a moderator

Restructure projects for testing

Moved all code not relating to the app lifetime to a library so it can
be easily linked to for testing

In addition, the initial setup for tests using the Catch library was
created

Add a general handler to orchestrate the request/response process. This pulls all the duplicate code for setup/teardown/message handling leaving the message handlers to be simpler and easier to take in.

Moving each request/response/handler set to its own compilation unit to make it easier to find and read them.

Moved LogoutAvatar to its own compilation unit

Moved CreateRoom to its own compilation unit

Moved DestroyRoom to its own compilation unit

Moved SendInstantMessage to own compilation unit

Also added a basic info log for each incoming request received.

Moved SendRoomMessage to its own compilation unit

Moved AddFriend handling to its own compilation unit

Moved RemoveFriend handling to its own compilation unit

Moved FriendStatus handling to its own compilation unit

Moved AddIgnore handling to its own compilation unit

Moved RemoveIgnore to its own compilation unit

Moved EnterRoom handling to its own compilation unit

Moved LeaveRoom handling to its own compilation unit

Move AddModerator to its own compilation unit

Moved RemoveModerator to its own compilation unit

Moved add/remove banned handlers to own compilation unit

Move Add/Remove invite handlers to own compilation unit

Move GetRoom handler to own compilation unit

Moved GetRoomSummaries handler to own compilation unit

Moved persistent message handlers to own compilation unit

Moved IgnoreStatus to own compilation unit

Move SetApiVersion handler to own compilation unit

Moved GetAnyAvatar and SetAvatarAttributes handlers to own compilation units

Moving remaining messages to own compilation units

Moved request/response enums to the ChatEnum header

Fix typename issue

Fixed source grouping helper

Load up a  galaxies rooms when system user logs in

Use stringstreams vs static array

As more rooms and more players are added, the buffer holding the
serialized data needs to be able to expand accordingly, this fix
addresses that

throw appropriate exceptions from the message service

ChatAvatar tracks rooms they are in now

LogoutAvatar now removes avatar from all rooms they are joined to currently.

Add appropriate checks for managing the room

String version of error codes are now logged instead of just integer codes

Implement kick avatar

Fixes potential crash when the vector of rooms is resized (could invalidate pointers into the container)

fix for persistent message oob storage

Support for destroying avatars

Fixed unsigned/signed mismatch

Support failoverreloginavatar

Replace wstring usage (which has a base type of wchar_t that is OS specific) with u16string which has a base type of uchar16_t that is guaranteed to be 16bit, exactly the size needed by the SOE protocol.

Fix issue with streaming u16string types

Remove udplibrary source from codebase

Ignore the udplibrary dir if it exists
2016-07-26 19:58:52 -07:00