def install_module(module_name):
    """Install a new module.

    :param module_name: module name
    :return: is sucess
    """
    module_path = os.path.join(MODULES_PATH, module_name)
    if os.path.exists(module_path):
        return False

    infos = get_module_infos(module_name)
    if not infos:
        Log.error('Module "%s" not found' % module_name)
        return False

    # install module
    zip_file = BytesIO(requests.get(infos["zip_url"]).content)
    with ZipFile(zip_file) as z:
        # security + locate path files
        content_dir = ""
        for member in z.namelist():
            if member.startswith("/") or "./" in member:
                msg = 'Security threat on "%s" module install (%s)' % (module_name, member)
                Log.critical(msg)
                EventManager.fire(EventManager.Event("security_thread", __package__, msg=msg))
                return False

            if "Module.py" in member:
                content_dir = member.replace("Module.py", "")

        # unzip
        os.makedirs(module_path)
        for member in z.namelist():
            # skip directories
            if not os.path.basename(member):
                continue

            # unzip
            path = os.path.join(module_path, member.replace(content_dir, ""))
            with z.open(member) as s, open(path, "wb") as t:
                shutil.copyfileobj(s, t)

    # starting module
    ModuleManager.reindex_modules()
    ModuleManager.init(module_name)
    ModuleManager.start(module_name)
    return True