Permalink
Cannot retrieve contributors at this time
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
56 lines (40 sloc)
1.73 KB
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
import logging | |
import requests | |
from monkey_island.cc.environment.environment import env | |
__author__ = "itay.mizeretz" | |
logger = logging.getLogger(__name__) | |
class VersionUpdateService: | |
VERSION_SERVER_URL_PREF = 'https://updates.infectionmonkey.com' | |
VERSION_SERVER_CHECK_NEW_URL = VERSION_SERVER_URL_PREF + '?deployment=%s&monkey_version=%s' | |
VERSION_SERVER_DOWNLOAD_URL = VERSION_SERVER_CHECK_NEW_URL + '&is_download=true' | |
newer_version = None | |
def __init__(self): | |
pass | |
@staticmethod | |
def get_newer_version(): | |
""" | |
Checks for newer version if never checked before. | |
:return: None if failed checking for newer version, result of '_check_new_version' otherwise | |
""" | |
if VersionUpdateService.newer_version is None: | |
try: | |
VersionUpdateService.newer_version = VersionUpdateService._check_new_version() | |
except Exception: | |
logger.exception('Failed updating version number') | |
return VersionUpdateService.newer_version | |
@staticmethod | |
def _check_new_version(): | |
""" | |
Checks if newer monkey version is available | |
:return: False if not, version in string format ('1.6.2') otherwise | |
""" | |
url = VersionUpdateService.VERSION_SERVER_CHECK_NEW_URL % (env.get_deployment(), env.get_version()) | |
reply = requests.get(url, timeout=15) | |
res = reply.json().get('newer_version', None) | |
if res is False: | |
return res | |
[int(x) for x in res.split('.')] # raises value error if version is invalid format | |
return res | |
@staticmethod | |
def get_download_link(): | |
return VersionUpdateService.VERSION_SERVER_DOWNLOAD_URL % (env.get_deployment(), env.get_version()) |