Automatically Updating the Geo-IP Database
Last week, David Knipe blogged about how to update the MaxMind GeoIP database that ships with the EPiServer Framework.
This inspired me to create an EPiServer Scheduled Job to do this automatically:
As the job needs to download a file from the internet, which could be a lengthy operation, I made it a ‘stoppable’ job. You can read more about stoppable scheduled jobs here.
The job also has a settings page where you can adjust the URL of the downloadable database file as well as a couple of other settings:
It seems that MaxMind update their ‘Lite’ database on the 1st of every month so it’s probably a good idea to schedule the job for the 2nd of every month.
You can obtain a Deployment Center Zip Module here to add the functionality to a site or if you want the source code then download the EPiServer.Extensions.GeoIPUpdate.1.0.nupkg package from nuget.episerver.com.
The code has been tested but of course if you find any bugs or have any suggestions for improvements then please let me know.
Happy updating!
Great stuff! Thanks Paul. I've updated my original post :)
Nice! We had a question about this shortly after the R2 release and now a more complete answer.
Nice.
One fix to the code:
You should replace the line _liveDatabaseFileName = maxmindProviderConfig.Parameters["databaseFileName"]; with _liveDatabaseFileName = Web.VirtualPathUtilityEx.RebasePhysicalPath(maxmindProviderConfig.Parameters["databaseFileName"]); in the property LiveDatabaseFileName in the file UpdateDatabase.cs. To take acount of the appdata path.
For thoose wanting to use this code in CMS 7 or 7.5 you should make GeoIPUpdateAdmin.aspx.cs inherit WebFormsBase instead of SystemPageBase. and then you do not need to override Page_PreInit to set MasterPageFile, because this is already part of the WebFormsBase class.
Is it open sourced?