{"action":"created","issue":{"url":"https://api.github.com/repos/mautic/mautic/issues/1252","labels_url":"https://api.github.com/repos/mautic/mautic/issues/1252/labels{/name}","comments_url":"https://api.github.com/repos/mautic/mautic/issues/1252/comments","events_url":"https://api.github.com/repos/mautic/mautic/issues/1252/events","html_url":"https://github.com/mautic/mautic/pull/1252","id":122571576,"number":1252,"title":"Ip service lookup changes","user":{"login":"alanhartless","id":63312,"avatar_url":"https://avatars.githubusercontent.com/u/63312?v=3","gravatar_id":"","url":"https://api.github.com/users/alanhartless","html_url":"https://github.com/alanhartless","followers_url":"https://api.github.com/users/alanhartless/followers","following_url":"https://api.github.com/users/alanhartless/following{/other_user}","gists_url":"https://api.github.com/users/alanhartless/gists{/gist_id}","starred_url":"https://api.github.com/users/alanhartless/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/alanhartless/subscriptions","organizations_url":"https://api.github.com/users/alanhartless/orgs","repos_url":"https://api.github.com/users/alanhartless/repos","events_url":"https://api.github.com/users/alanhartless/events{/privacy}","received_events_url":"https://api.github.com/users/alanhartless/received_events","type":"User","site_admin":false},"labels":[{"url":"https://api.github.com/repos/mautic/mautic/labels/Pending%20Test%20Confirmation","name":"Pending Test Confirmation","color":"fef2c0"},{"url":"https://api.github.com/repos/mautic/mautic/labels/Ready%20To%20Test","name":"Ready To Test","color":"fbca04"}],"state":"open","locked":false,"assignee":null,"milestone":{"url":"https://api.github.com/repos/mautic/mautic/milestones/9","html_url":"https://github.com/mautic/mautic/milestones/1.2.3","labels_url":"https://api.github.com/repos/mautic/mautic/milestones/9/labels","id":1381829,"number":9,"title":"1.2.3","description":"","creator":{"login":"alanhartless","id":63312,"avatar_url":"https://avatars.githubusercontent.com/u/63312?v=3","gravatar_id":"","url":"https://api.github.com/users/alanhartless","html_url":"https://github.com/alanhartless","followers_url":"https://api.github.com/users/alanhartless/followers","following_url":"https://api.github.com/users/alanhartless/following{/other_user}","gists_url":"https://api.github.com/users/alanhartless/gists{/gist_id}","starred_url":"https://api.github.com/users/alanhartless/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/alanhartless/subscriptions","organizations_url":"https://api.github.com/users/alanhartless/orgs","repos_url":"https://api.github.com/users/alanhartless/repos","events_url":"https://api.github.com/users/alanhartless/events{/privacy}","received_events_url":"https://api.github.com/users/alanhartless/received_events","type":"User","site_admin":false},"open_issues":2,"closed_issues":71,"state":"open","created_at":"2015-10-28T16:53:57Z","updated_at":"2015-12-17T22:47:36Z","due_on":"2015-12-29T05:00:00Z","closed_at":null},"comments":11,"created_at":"2015-12-16T18:23:00Z","updated_at":"2015-12-18T17:58:24Z","closed_at":null,"pull_request":{"url":"https://api.github.com/repos/mautic/mautic/pulls/1252","html_url":"https://github.com/mautic/mautic/pull/1252","diff_url":"https://github.com/mautic/mautic/pull/1252.diff","patch_url":"https://github.com/mautic/mautic/pull/1252.patch"},"body":"**Description**\r\n\r\nThis PR addresses and fixes #1231.  The default IP lookup service, Telize, shut down. This PR does several things:\r\n\r\n1. It now defaults to a newly added MaxMind GeoIp2 City Download service.  This will download Maxmind's free city IP lookup database which will be used to glean general info on an IP.\r\n2. To support such an IP lookup with accompanying form UI elements, the IpService classes have been re-organized while keeping BC support for old AbstractIpLookup use in case any 3rd party IP lookup services exist out in the wild\r\n3. `Mautic\\CoreBundle\\IpLookup\\AbstractLookup` replaces the deprecated `AbstractIpLookup`\r\n3. `Mautic\\CoreBundle\\IpLookup\\AbstractLocalDataLookup` has been added with accompanying methods for data stores that are stored locally (such as above)\r\n4. `Mautic\\CoreBundle\\IpLookup\\AbstractRemoteDataLookup` has been added with accompanying methods for services that use API calls to fetch IP details\r\n5. `Mautic\\CoreBundle\\IpLookup\\IpLookupFormInterface` has been added for services that support injecting custom config options into Mautic's configuration\r\n6. `Mautic\\CoreBundle\\Factory\\IpLookupFactory` has been added to create the different lookup services when necessary\r\n7. `mautic:iplookup:download` command has been added to allow use of cron to keep local datastores up to date\r\n8. PhpUnit was added as a dev dependency and config_test.php was slightly changed to support the basic tests included in the PR\r\n9. Telize was converted to use it's now for pay API\r\n\r\n**Testing**\r\n\r\n1. Apply the PR\r\n2. Run `composer install`\r\n3. Run the tests if you have PhpUnit configured on your system\r\n4. Or manually test by selecting each IP service and test by going to a public landing page on a remote Mautic system (can't be 127.0.0.1 or ::1), get details, delete details in the ip_addresses table, then try the next\r\n5. Choose the MaxMind GeoIp2 City Download service a button should appear to download the file.  It'll be btn-danger if the file hasn't been downloaded with \"Fetch...\" or btn-success if it has been with \"Update...\" and a tooltip of when the file was last updated\r\n6. Click the button and should get a success response after the data store has been downloaded\r\n7. Ensure the config saves"},"comment":{"url":"https://api.github.com/repos/mautic/mautic/issues/comments/165857097","html_url":"https://github.com/mautic/mautic/pull/1252#issuecomment-165857097","issue_url":"https://api.github.com/repos/mautic/mautic/issues/1252","id":165857097,"user":{"login":"dbhurley","id":5251425,"avatar_url":"https://avatars.githubusercontent.com/u/5251425?v=3","gravatar_id":"","url":"https://api.github.com/users/dbhurley","html_url":"https://github.com/dbhurley","followers_url":"https://api.github.com/users/dbhurley/followers","following_url":"https://api.github.com/users/dbhurley/following{/other_user}","gists_url":"https://api.github.com/users/dbhurley/gists{/gist_id}","starred_url":"https://api.github.com/users/dbhurley/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/dbhurley/subscriptions","organizations_url":"https://api.github.com/users/dbhurley/orgs","repos_url":"https://api.github.com/users/dbhurley/repos","events_url":"https://api.github.com/users/dbhurley/events{/privacy}","received_events_url":"https://api.github.com/users/dbhurley/received_events","type":"User","site_admin":false},"created_at":"2015-12-18T17:58:24Z","updated_at":"2015-12-18T17:58:24Z","body":":+1:"}}