id,node_id,number,title,user,state,locked,assignee,milestone,comments,created_at,updated_at,closed_at,author_association,active_lock_reason,draft,pull_request,body,reactions,performed_via_github_app,state_reason,repo,type 205301887,MDU6SXNzdWUyMDUzMDE4ODc=,15,Password storage should use PBKDF2,570040,closed,0,570040,,0,2017-02-03T23:56:22Z,2017-10-24T22:59:59Z,2017-10-24T22:59:59Z,CONTRIBUTOR,,,,"Right now it's using salted SHA256, which works for now but isn't suitable for real password storage, taking into considerations things like password reuse across services and the fact that inexperienced server admins will likely be operating poorly configured ACEmulator servers. To minimize the damage of leaking any password hashes from the DB, the supported standard for password storage on .NET is PBKDF2. I am already working on converting password storage to use PBKDF2 on my branch. https://dusted.codes/sha-256-is-not-a-secure-password-hashing-algorithm","{""url"": ""https://api.github.com/repos/ACEmulator/ACE/issues/15/reactions"", ""total_count"": 0, ""+1"": 0, ""-1"": 0, ""laugh"": 0, ""hooray"": 0, ""confused"": 0, ""heart"": 0, ""rocket"": 0, ""eyes"": 0}",,completed,79078680,issue 205353528,MDU6SXNzdWUyMDUzNTM1Mjg=,20,Server should have a way to apply DB migrations,570040,closed,0,,,7,2017-02-04T15:19:26Z,2017-12-04T14:30:37Z,2017-12-04T14:30:36Z,CONTRIBUTOR,,,,"The server should have a way to track which DB migrations it has applied, and automatically apply missing ones in the correct order. @Mag-nus suggested a naming convention of `YYYY_MM_DD_tablename.sql`. This would work, but would make dealing with pull requests and merges annoying, if multiple came in one day. I would suggest a naming scheme more along the lines of `$patchNumber + '_' + $YYYY_MM_DD + '_' + $descriptiveFeatureName`, for example `01_2017_02_03_add_monster_information.sql` and not limiting them to any particular tables. Picking the second naming system will make dealing with pull requests easier and help developers understand what updates are for. Additionally, the leading number provides a good way of tracking our schema revision.","{""url"": ""https://api.github.com/repos/ACEmulator/ACE/issues/20/reactions"", ""total_count"": 0, ""+1"": 0, ""-1"": 0, ""laugh"": 0, ""hooray"": 0, ""confused"": 0, ""heart"": 0, ""rocket"": 0, ""eyes"": 0}",,completed,79078680,issue 205361124,MDExOlB1bGxSZXF1ZXN0MTA0NjY4MTI0,21,Change password hashing to use scrypt,570040,closed,0,,,4,2017-02-04T17:28:50Z,2017-03-20T02:20:14Z,2017-03-20T02:20:14Z,CONTRIBUTOR,,0,ACEmulator/ACE/pulls/21,"I switched the password hashing over to use libsodium's scrypt implementation. This involved adding a new migration. I noticed that currently the password isn't checked. I started looking into how to implement password checking and it looks like we will probably need to have a launcher to do so. The reason the commit touches so many files is because it also cleans up the files with mixed line endings.","{""url"": ""https://api.github.com/repos/ACEmulator/ACE/issues/21/reactions"", ""total_count"": 0, ""+1"": 0, ""-1"": 0, ""laugh"": 0, ""hooray"": 0, ""confused"": 0, ""heart"": 0, ""rocket"": 0, ""eyes"": 0}",,,79078680,pull 205377812,MDExOlB1bGxSZXF1ZXN0MTA0Njc1ODg4,23,Add Config.json to .gitignore,570040,closed,0,,,1,2017-02-04T21:12:57Z,2017-02-04T22:53:44Z,2017-02-04T22:53:44Z,CONTRIBUTOR,,0,ACEmulator/ACE/pulls/23,"This also forces first-time configuration. Existing Config.json copied to Config.json.example README.md has been updated with instructions.","{""url"": ""https://api.github.com/repos/ACEmulator/ACE/issues/23/reactions"", ""total_count"": 0, ""+1"": 0, ""-1"": 0, ""laugh"": 0, ""hooray"": 0, ""confused"": 0, ""heart"": 0, ""rocket"": 0, ""eyes"": 0}",,,79078680,pull 205400067,MDU6SXNzdWUyMDU0MDAwNjc=,31,"Logs should go to separate window, and filesystem",570040,closed,0,,,4,2017-02-05T04:33:21Z,2017-05-01T15:13:20Z,2017-05-01T15:13:20Z,CONTRIBUTOR,,,,"Logs should go in a separate window from the main `ACE >>` command prompt so admins aren't frustrated with information stomping commands as they're being typed. Might as well add a `Config.json` option to log them to the filesystem and set verbosity at the same time.","{""url"": ""https://api.github.com/repos/ACEmulator/ACE/issues/31/reactions"", ""total_count"": 0, ""+1"": 0, ""-1"": 0, ""laugh"": 0, ""hooray"": 0, ""confused"": 0, ""heart"": 0, ""rocket"": 0, ""eyes"": 0}",,completed,79078680,issue 205449659,MDExOlB1bGxSZXF1ZXN0MTA0NzEyNjY4,36,Add automatic database migrations to startup,570040,closed,0,,,6,2017-02-05T20:02:19Z,2017-04-06T12:11:16Z,2017-04-06T12:11:16Z,CONTRIBUTOR,,0,ACEmulator/ACE/pulls/36,"Database migrations will automatically be run. Name them according to the format (`#_YYYY-MM-DD-descriptive_name.sql`) and put in the appropriate directory and it will run on the next server startup. Migrations are only run once, in ascending numeric order. The current database state is tracked in a new database called `Global`. This simplifies server setup: now the only step is to create the four databases. The base SQL and migrations will be run automatically from that point on. This also simplifies migrations, which will no longer need to incorporate complex conditional logic in order to be repeatable.","{""url"": ""https://api.github.com/repos/ACEmulator/ACE/issues/36/reactions"", ""total_count"": 0, ""+1"": 0, ""-1"": 0, ""laugh"": 0, ""hooray"": 0, ""confused"": 0, ""heart"": 0, ""rocket"": 0, ""eyes"": 0}",,,79078680,pull