Commit Graph

377 Commits

Author SHA1 Message Date
Colin McDonald f04ee19b6c Remove note regarding audit log / punishment / grant / ip ban lookups 2016-07-13 19:36:40 -04:00
Colin McDonald 131e255116 Change public reason used on imported punishments 2016-07-13 19:36:01 -04:00
Colin McDonald 24a73f72cf Add the ability to rollback created punishments via the audit log 2016-07-13 19:35:35 -04:00
Colin McDonald 2502f4a1b2 Add user session integration. We still need to add routes that require auth in our session handler 2016-07-12 21:56:28 -04:00
Colin McDonald f42f714863 Add logging with log4j. Completes #40 2016-07-11 23:54:21 -04:00
Colin McDonald 38dec65bf9 Add ip ban dumps. Adds #39 2016-07-11 23:05:00 -04:00
Colin McDonald 8e85914d64 Change default values in GETDumpsType.java to be immutable versions 2016-07-11 22:56:30 -04:00
Colin McDonald e65686f339 Make queries made as part of punishment, ip ban, grant, and audit log lookups use UuidUtils.parseUuid to accept uuids without dashes 2016-07-11 22:54:28 -04:00
Colin McDonald 254d5336bf Don't require removedBy field when deleting grants, ip bans, and punishments 2016-07-11 22:53:31 -04:00
Colin McDonald e48a0c1736 Add audit log todo 2016-07-11 21:50:37 -04:00
Colin McDonald 1f3d01b4e2 Remove debug from MaxMind util 2016-07-11 18:39:20 -04:00
Colin McDonald d2dcd8c3e1 Add default permissions 2016-07-11 18:39:07 -04:00
Colin McDonald b9c9a3f9bc Change default log level back to error 2016-07-11 18:38:48 -04:00
Colin McDonald 536de6d8b2 Make all save and delete methods on models use void callbacks (instead of exposing Mongo's internal result) 2016-07-10 16:15:29 -04:00
Colin McDonald ecaf008f66 Properly register POST /users/:userId/confirmPhone 2016-07-10 15:49:29 -04:00
Colin McDonald 5e44d53216 Fix naming of some path parameters 2016-07-10 15:48:51 -04:00
Colin McDonald 45a706e0d7 Encode and then decode GET /metrics response to fix serialization issue with Vertx's JsonObject 2016-07-10 15:43:29 -04:00
Colin McDonald 529bf25daf Replace 3 line BlockingCallback pattern with 1 line SyncUtils#runBlocking lambda pattern 2016-07-10 15:42:42 -04:00
Colin McDonald 6319f944bb Optimize imports 2016-07-10 14:20:29 -04:00
Colin McDonald 07e1090445 Modify User#findByPhone to search for usages in both confirmed numbers and pending numbers 2016-07-10 14:20:16 -04:00
Colin McDonald f84f8635a2 Finish Zang telephone linking (hopefully!). Completes #27 2016-07-10 14:17:18 -04:00
Colin McDonald 0071291236 Move body handler up in the route order to fix stack traces we were having 2016-07-10 13:12:31 -04:00
Colin McDonald 752c2cae96 Add debug to MaxMind circuit breaker 2016-07-10 13:12:01 -04:00
Colin McDonald 6e4169c6ad Add formatted timestamps to API logs 2016-07-10 13:11:45 -04:00
Colin McDonald e4a574852a Add support for reading the http keystore path + keystore password from our config file 2016-07-10 12:50:04 -04:00
Colin McDonald 5aa0827d18 Change default log level to warn 2016-07-10 12:45:41 -04:00
Colin McDonald b6f987e75a Readd metrics integration with Librato (and small redis metrics) 2016-07-10 12:45:13 -04:00
Colin McDonald a61ad36151 Add commented line with code to return relative time in responses 2016-07-10 12:18:33 -04:00
Colin McDonald 53aa9ce368 Remove debug code from main class, use vertx's timeout handler instead of our debugging version 2016-07-10 12:18:07 -04:00
Colin McDonald f0d8256f07 Add MaxMind circuit breaker. Finishes #38 2016-07-10 12:17:03 -04:00
Colin McDonald 53a56401e0 Change POST /grants|ipBans|punishments to use `expiresIn` (a relative field in seconds) instead of `expiresAt` (absolute time) 2016-07-10 11:48:53 -04:00
Colin McDonald 6fbc8925eb Optimize imports 2016-07-09 17:25:54 -04:00
Colin McDonald f431cd40d6 Remove unused @Slf4j annotations 2016-07-09 17:25:18 -04:00
Colin McDonald 9043abfa72 Add short circuit to MaxMindUtils until we can fix (with timeout + circuit breaker) 2016-07-09 17:23:34 -04:00
Colin McDonald a6e31129e9 Commit two forgotten files from taking out metrics 2016-07-09 17:23:02 -04:00
Colin McDonald a30823099d Remove unneeded @Slf4j annotation in User and MojangUtils 2016-07-09 17:22:39 -04:00
Colin McDonald d519527986 Commit ?active=true flag for GET /punishments 2016-07-09 17:21:43 -04:00
Colin McDonald 97b296a79d Add store order + item id for Ariel 2016-07-09 17:21:24 -04:00
Colin McDonald f999319666 Remove metrics, change GET /ipLog/:id to accept both ips and user uuids 2016-07-09 17:20:57 -04:00
Colin McDonald d55325d255 Add SyncUtils#vertxWrap. This is something we wrap all mongo callbacks with so all business logic is ran on vertx worker threads. This is important for 2 reasons:
1. Running all of our logic on the vertx threads makes sense, as we're a vertx application. (This also allows us to utilize vertx's thread pool logic + config, instead of relying on mongo's thread pool)
2. The more important one, it allows exceptions to be processed (instead of swallowed by mongo) with relevant context information.

There is an overhead to the thread switching we'll be doing because of this, but doing all of our work on a better thought out thread pool and (more importantly) having stack traces completely make this change worth the overhead.
2016-07-09 17:19:20 -04:00
Colin McDonald 5de25c498b Fix NPE when checking an access token's locked ips 2016-07-09 17:14:04 -04:00
Colin McDonald a99d10c002 Add basic metrics + GET /metrics route 2016-07-03 19:59:42 -04:00
Colin McDonald 7bb1b17575 Small changes discovered while writing documentation 2016-07-03 19:41:01 -04:00
Colin McDonald 85b98b4a1d Add debug timeout handler, change default log level (for now) 2016-07-03 16:32:56 -04:00
Colin McDonald fa5aee848a Commit two totp changes from before 2016-07-03 16:32:02 -04:00
Colin McDonald d3bdeb6d50 Public/private reasons on punishments 2016-07-03 16:31:43 -04:00
Colin McDonald 252a18d326 Add translationId and translationParams to non-standard error types 2016-07-03 16:31:17 -04:00
Colin McDonald 035e9fbb81 Add UuidUtils#parseUuid, which is more liberal on what it accepts, and convert most everything to use it 2016-07-03 16:30:24 -04:00
Colin McDonald 527f465c12 Fail properly if MaxMind fails to respond / returns invalid data 2016-07-03 16:28:31 -04:00
Colin McDonald 77c3e49048 Fix logins not saving users, ip intel in heartbeats 2016-07-02 17:39:30 -04:00
Colin McDonald adb16d8c8d Add Mojang api debug 2016-07-02 17:38:56 -04:00
Colin McDonald de9a490aa1 Change ErrorUtils#respondInternalError to print the error + request info with slf4j 2016-06-30 23:01:13 -04:00
Colin McDonald 043bc76cd3 Update dump cache immediately upon startup 2016-06-30 17:30:20 -04:00
Colin McDonald c1017f9241 Fix a few mistakes we made when passing callback results back up 2016-06-30 17:29:28 -04:00
Colin McDonald 968ceb1a1d Modify APIv3#respondJson to not have default status code 2016-06-29 21:23:37 -04:00
Colin McDonald bcd95d9e9b Code updates to fit "expected" documentation 2016-06-29 00:24:41 -04:00
Colin McDonald f4dcf7c3be Optimize imports 2016-06-27 23:01:37 -04:00
Colin McDonald c8c1ac153d Even more Zang telephone work! 2016-06-27 23:01:12 -04:00
Colin McDonald 822dd27536 Remove maxmind debug 2016-06-27 22:14:51 -04:00
Colin McDonald f1c9b3666e Update POST /ranks for new Rank constructor 2016-06-27 21:57:24 -04:00
Colin McDonald c742b6d01f Require totp authorization on some actions 2016-06-27 21:55:35 -04:00
Colin McDonald ac0865fde7 Create audit log entries for login fails/successes 2016-06-27 21:16:34 -04:00
Colin McDonald e0af72caf5 Add access token CRUD routes 2016-06-27 21:07:52 -04:00
Colin McDonald 29a13c1647 Convert authorization to use access tokens. Completes #24 2016-06-27 16:55:21 -04:00
Colin McDonald bcae144e8c Optimize imports 2016-06-26 23:34:04 -04:00
Colin McDonald 74f23bcb62 Remove user field (not used) and bestRank field (will be assumed by the client) from login info 2016-06-26 23:27:36 -04:00
Colin McDonald 9110acd14a More work on Zang integration 2016-06-26 22:51:11 -04:00
Colin McDonald ff4ac3ab9d Comment out bad server timeout code 2016-06-26 22:50:15 -04:00
Colin McDonald 1532bee954 More work on Zang phone registration 2016-06-26 22:24:06 -04:00
Colin McDonald 9f4089a752 Prevent duplicate email addresses 2016-06-26 21:48:26 -04:00
Colin McDonald 8740d32621 Fix infinite while loop issue 2016-06-26 21:31:59 -04:00
Colin McDonald 75aac64e91 Change MaxMind log from a warn to an info 2016-06-26 19:33:37 -04:00
Colin McDonald 10e9ac5bea Don't send 'totpSetup' in login info, it isn't used. 2016-06-26 19:27:37 -04:00
Colin McDonald 4101538202 Readd simple exception handler 2016-06-26 19:26:01 -04:00
Colin McDonald 95d8a45d86 Don't send access unless needed 2016-06-26 19:25:42 -04:00
Colin McDonald 8d66bd1568 Fix issue w/ live cache updates 2016-06-26 19:19:34 -04:00
Colin McDonald 983c428a09 Redo rank calculation to allow ranks that aren't part of the primary inheritance chain. Finishes #33 2016-06-26 19:09:11 -04:00
Colin McDonald 1b20362f4d Finish audit log redux - completes #5 2016-06-26 17:14:47 -04:00
Colin McDonald d8b66742de Populate cached models immediately upon startup 2016-06-26 15:09:03 -04:00
Colin McDonald a4d00ca5b0 Hide thread info in slf4j-simple 2016-06-26 15:08:31 -04:00
Colin McDonald 3a838b8b56 Add MaxMind debug info 2016-06-26 15:01:00 -04:00
Colin McDonald 4313f6f14f Optimize imports 2016-06-25 21:30:54 -04:00
Colin McDonald 2a5118ee3f Work on audit log redux 2016-06-25 21:30:39 -04:00
Colin McDonald f8bf433953 Add email domain blacklisting 2016-06-25 20:40:45 -04:00
Colin McDonald daa48688eb Optimize imports 2016-06-25 19:21:59 -04:00
Colin McDonald 6957b67863 Add banned cell carrier model to prepare for full Zang integration 2016-06-25 19:21:23 -04:00
Colin McDonald 49a441fe03 Change server heartbeat's players section from an array to a dict 2016-06-25 19:09:51 -04:00
Colin McDonald a39a1801e4 Slightly optimize number of db queries used in POST /users/:id/leave 2016-06-25 19:02:07 -04:00
Colin McDonald 439f92f596 Remove unused event types 2016-06-25 19:01:46 -04:00
Colin McDonald 8d1fb524ec Add heartbeat timeout 2016-06-25 18:55:48 -04:00
Colin McDonald fde7d50edc Make some changes to make IntelliJ's code inspection happier 2016-06-25 18:41:44 -04:00
Colin McDonald a648fb7f30 Refactor permissions in prep for ranks not on the inheritance tree 2016-06-25 18:20:32 -04:00
Colin McDonald 3381d74a8b Readd very basic metrics 2016-06-25 18:02:07 -04:00
Colin McDonald 70d26256bd Disable debug (for now) 2016-06-25 16:25:59 -04:00
Colin McDonald f4abba2309 Optimize imports 2016-06-25 16:24:04 -04:00
Colin McDonald 605b70bf01 Finish the server heartbeat 2016-06-25 16:23:44 -04:00
Colin McDonald a255d45603 Auto-update the cache (for cached models) when inserting/deleting 2016-06-24 23:54:34 -04:00
Colin McDonald ef3f7345e5 More work on the heartbeat 2016-06-24 23:50:51 -04:00
Colin McDonald 1d21d70371 Optimize imports 2016-06-24 23:16:42 -04:00
Colin McDonald e2da72db1b Fully implement banned asns. Closes #25 2016-06-24 23:16:24 -04:00
Colin McDonald 00b3ac19f3 Rename PUT routes to align with their definitions in APIv3.java 2016-06-24 23:13:36 -04:00
Colin McDonald 04369a1f97 Add basic Zang functionality 2016-06-24 22:54:49 -04:00
Colin McDonald a68a44f781 Remove Jackson experiment from APIv3.java 2016-06-24 22:54:30 -04:00
Colin McDonald 2ca872706c Clean up http request code in MandrillUtils and MaxMindUtils 2016-06-24 22:53:57 -04:00
Colin McDonald 0a036f5ec5 Move mandrill sending from inside notifications to its own utility 2016-06-24 22:36:15 -04:00
Colin McDonald 8972605a02 Fix possible concurrency issue with POST /users/:id/leave 2016-06-24 22:18:45 -04:00
Colin McDonald a87578a8a6 Fix compilation issue created by adding new user fields 2016-06-24 22:05:37 -04:00
Colin McDonald 26e274596b Finish #18, make POST /users/:id/verifyTotp async, cleanup totp code 2016-06-24 22:03:52 -04:00
Colin McDonald 0653edaae3 Rename route classes to match their actual paths 2016-06-24 19:38:00 -04:00
Colin McDonald fd1ec2b475 Add password reset route. Closes #29 2016-06-24 19:23:31 -04:00
Colin McDonald 4901e63599 Change Jackson constructors from public to private 2016-06-24 19:00:40 -04:00
Colin McDonald 1c07b20f89 Fix compilation issue produced by the previous commit 2016-06-24 18:56:37 -04:00
Colin McDonald aaba9cb369 Modify POST /user/:id/setupTotp to work with adjusted requirements 2016-06-24 18:55:47 -04:00
Colin McDonald 4a727f3d04 Large commit to convert all models to be full async 2016-06-24 03:00:37 -04:00
Colin McDonald e9da784953 Remove MojangUtils debug, it appears to be fine now 2016-06-24 02:59:08 -04:00
Colin McDonald 6eeb153413 Add more MaxMind results 2016-06-24 02:58:44 -04:00
Colin McDonald 3de5e8d756 Make authorized field in UserActor final 2016-06-24 02:57:54 -04:00
Colin McDonald ddd0e0159a Integrate user logins with MaxMind, and deny access to users on VPNs 2016-06-23 13:31:44 -04:00
Colin McDonald 4e00381e50 Always use HTTPS when communicating with the Mojang api 2016-06-23 13:30:33 -04:00
Colin McDonald 2e439a5b18 Add defaults to MaxMind result parsing 2016-06-23 13:29:27 -04:00
Colin McDonald 61197b1050 Remove bugsnag, with all async code it serves little to no purpose 2016-06-23 01:01:54 -04:00
Colin McDonald 66b2fc5951 Make GET /dumps' background thread use the Vert.x scheduler instead of being a standalone thread 2016-06-23 00:59:18 -04:00
Colin McDonald 43b59dcf2c Move HttpClient/RedisClient from APIv3.java to their relevant util classes 2016-06-23 00:58:42 -04:00
Colin McDonald 23b9d81923 Make BugsnagSlf4jLogger final 2016-06-23 00:57:33 -04:00
Colin McDonald 8c67a1bc54 Optimize imports 2016-06-23 00:56:57 -04:00
Colin McDonald 5310a0c6c4 Remove notes about using an array for scopes in POST /grants, it's already been done 2016-06-23 00:56:43 -04:00
Colin McDonald b291e9e13b Convert more routes to use body fields instead of query params 2016-06-23 00:56:04 -04:00
Colin McDonald c00b424fe8 Allow specifying the user to search for in GET /auditLog, /punishments, /grants, and /ipBans 2016-06-23 00:54:40 -04:00
Colin McDonald 2eeabf7ef8 Remove note regarding async inserts - Vert.x's CompositeFuture's methods don't allow clean integration, and it isn't worth the development time to adapt it. 2016-06-23 00:52:42 -04:00
Colin McDonald 86a7504af6 Optimize imports 2016-06-22 19:47:08 -04:00
Colin McDonald 9f2e4a63f0 Convert MaxMindResult's subdivisions to a list 2016-06-22 19:45:49 -04:00
Colin McDonald 5c3274d483 Swap Mongo's Document for Vert.x's JsonObject 2016-06-22 19:44:39 -04:00
Colin McDonald 2bdd54836d Convert a few routes to use body parameters instead of query params 2016-06-22 18:13:09 -04:00
Colin McDonald 152492eb06 Remove debug 2016-06-22 17:36:20 -04:00
Colin McDonald d47b0a6170 Part 2 of the big "make this closer to a RESTful api" commit [Doesn't compile] 2016-06-22 17:14:51 -04:00
Colin McDonald 8ade7066f9 Part 1 of the big "make this closer to a RESTful api" commit 2016-06-21 17:08:17 -04:00
Colin McDonald 217683407e Add bugsnag TODO in ErrorUtils#respondInternalError 2016-06-21 17:07:23 -04:00
Colin McDonald 7b594d695b Convert MaxMindTraits' user_type to an enum 2016-06-21 17:06:34 -04:00
Colin McDonald d261ef507a Add note to V2Importer regarding possible future optimization 2016-06-21 17:02:20 -04:00
Colin McDonald a0188e2d8c Move permissions check from UserActor to ActorAttributeHandler to make the async conversion easier 2016-06-21 17:01:59 -04:00
Colin McDonald 825e1c586e Only create ip bans for bans and blacklists, not all punishments. Closes #22 2016-06-21 10:50:59 -04:00
Colin McDonald 4ba3dcd907 Redo email / user registration to make a lot more sense. Closes #14 and closes #15 2016-06-21 01:39:14 -04:00
Colin McDonald 63384231c2 Partially complete POST /user/:id/changePassword. Still requires TOTP integration 2016-06-21 01:31:48 -04:00
Colin McDonald 0d656ab96d Properly register GET /user/:id/requiresTOTP as an async handler 2016-06-21 01:20:43 -04:00
Colin McDonald d466abe113 Fix our response to internal errors in GET /user/:id/requiresTOTP 2016-06-21 01:20:01 -04:00
Colin McDonald 1eb09b9714 Remove bad password list (for now) -- we'll eventually come back and implement this in a better way 2016-06-21 01:18:38 -04:00
Colin McDonald a5acd2c9ff Move GET /user/:id/requiresTOTP logic into User to make future expansion easier 2016-06-21 01:18:06 -04:00
Colin McDonald 39f0b7d665 Create GET /emailToken/:emailToken/owner to retrieve an email token's owner, rename POST /user/confirmRegister/:emailToken: to POST /emailToken/:emailToken/confirm. Closes #16 2016-06-21 01:00:03 -04:00
Colin McDonald 3bc703384b Try-catch MojangUtils#getName and a portion of POST /server/heartbeat to make debugging easier 2016-06-21 00:58:49 -04:00
Colin McDonald 27b98d3b69 [Part 3] Fix git file names 2016-06-20 02:30:52 -04:00