Add option to uninstall the GeoLite2 database

This commit is contained in:
JonnyWong16 2016-07-01 09:33:13 -07:00
parent f5ba168172
commit 8b787e4ae0
4 changed files with 47 additions and 4 deletions

8
API.md
View file

@ -1722,6 +1722,10 @@ Returns:
``` ```
### install_geoip_db
Downloads and installs the GeoLite2 database
### notify ### notify
Send a notification using PlexPy. Send a notification using PlexPy.
@ -1844,6 +1848,10 @@ Returns:
``` ```
### uninstall_geoip_db
Uninstalls the GeoLite2 database
### update ### update
Check for PlexPy updates on Github. Check for PlexPy updates on Github.

View file

@ -52,7 +52,7 @@ DOCUMENTATION :: END
<tr> <tr>
<td>GeoLite2 Database:</td> <td>GeoLite2 Database:</td>
% if plexpy.CONFIG.GEOIP_DB: % if plexpy.CONFIG.GEOIP_DB:
<td>${plexpy.CONFIG.GEOIP_DB} | <a class="no-highlight" href="#" id="reinstall_geoip_db">Reinstall / Update</a></td> <td>${plexpy.CONFIG.GEOIP_DB} | <a class="no-highlight" href="#" id="reinstall_geoip_db">Reinstall / Update</a> | <a class="no-highlight" href="#" id="uninstall_geoip_db">Uninstall</a></td>
% else: % else:
<td><a class="no-highlight" href="#" id="install_geoip_db">Click here to install the GeoLite2 database.</a></td> <td><a class="no-highlight" href="#" id="install_geoip_db">Click here to install the GeoLite2 database.</a></td>
% endif % endif
@ -107,5 +107,12 @@ DOCUMENTATION :: END
var url = 'install_geoip_db'; var url = 'install_geoip_db';
confirmAjaxCall(url, msg, 'Installing GeoLite2 database.', getConfigurationTable); confirmAjaxCall(url, msg, 'Installing GeoLite2 database.', getConfigurationTable);
}); });
$("#uninstall_geoip_db").click(function () {
var msg = 'Are you sure you want to uninstall the GeoLite2 database?<br /><br />' +
'You will not be able to lookup IP address geolocation info.';
var url = 'uninstall_geoip_db';
confirmAjaxCall(url, msg, 'Uninstalling GeoLite2 database.', getConfigurationTable);
});
}); });
</script> </script>

View file

@ -577,6 +577,19 @@ def install_geoip_db():
return True return True
def uninstall_geoip_db():
logger.debug(u"PlexPy Helpers :: Uninstalling the GeoLite2 database...")
try:
os.remove(plexpy.CONFIG.GEOIP_DB)
plexpy.CONFIG.__setattr__('GEOIP_DB', '')
plexpy.CONFIG.write()
except Exception as e:
logger.error(u"PlexPy Helpers :: Failed to uninstall the GeoLite2 database: %s" % e)
return False
logger.debug(u"PlexPy Helpers :: GeoLite2 database uninstalled successfully.")
return True
def geoip_lookup(ip_address): def geoip_lookup(ip_address):
if not plexpy.CONFIG.GEOIP_DB: if not plexpy.CONFIG.GEOIP_DB:
return 'GeoLite2 database not installed. Please install from the ' \ return 'GeoLite2 database not installed. Please install from the ' \

View file

@ -2802,15 +2802,30 @@ class WebInterface(object):
@cherrypy.expose @cherrypy.expose
@cherrypy.tools.json_out() @cherrypy.tools.json_out()
@requireAuth(member_of("admin")) @requireAuth(member_of("admin"))
@addtoapi()
def install_geoip_db(self): def install_geoip_db(self):
""" Downloads and installs the GeoIP database """ """ Downloads and installs the GeoLite2 database """
result = helpers.install_geoip_db() result = helpers.install_geoip_db()
if result: if result:
return {'result': 'success', 'message': 'GeoIP database installed successful.'} return {'result': 'success', 'message': 'GeoLite2 database installed successful.'}
else: else:
return {'result': 'error', 'message': 'GeoIP database install failed.'} return {'result': 'error', 'message': 'GeoLite2 database install failed.'}
@cherrypy.expose
@cherrypy.tools.json_out()
@requireAuth(member_of("admin"))
@addtoapi()
def uninstall_geoip_db(self):
""" Uninstalls the GeoLite2 database """
result = helpers.uninstall_geoip_db()
if result:
return {'result': 'success', 'message': 'GeoLite2 database uninstalled successfully.'}
else:
return {'result': 'error', 'message': 'GeoLite2 database uninstall failed.'}
@cherrypy.expose @cherrypy.expose
@requireAuth(member_of("admin")) @requireAuth(member_of("admin"))