Newer
Older
nextcloud-monitoring-dashboard / zabbix-agent-scripts / functions.py
#
# @copyright Copyright (c) 2024, Pietro Marini (pmarini@rcasys.com)
#
# @license GNU AGPL version 3 or any later version
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU Affero General Public License as
# published by the Free Software Foundation, either version 3 of the
# License, or (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
# GNU Affero General Public License for more details.
#
# You should have received a copy of the GNU Affero General Public License
# along with this program.  If not, see <http://www.gnu.org/licenses/>.
#


import json

def get_param(params_file,param_name):
    
    return json.load(open(params_file,"r"))[param_name]


def get_norm_user_agent(s):
    ## EDGE
    # Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/110.0.0.0 Safari/537.36 Edg/110.0.1587.57
    ## Chrome
    # Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/110.0.0.0 Safari/537.36
    ## Firefox
    # Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:110.0) Gecko/20100101 Firefox/110.0
    ## Safari
    # Mozilla/5.0 (Macintosh; Intel Mac OS X 13_2_1) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/16.3 Safari/605.1.15

    s = s.lower()

    ## Nextcloud Talk App
    if "nextcloud-talk" in s:
        if "android" in s:
            return "nextcloud_talk_android"
        elif "ios" in s:
            return "nextcloud_talk_ios"
        else:
            return "nextcloud_talk_unknown"

    ## Nextcloud Files App
    if "nextcloud-android" in s:
        return "nextcloud_android"

    ## Browser
    if "chrome" in s:
        if "edg" in s:
            return "edge_browser"
        else:
            return "chrome_browser"
    if "firefox" in s:
        return "firefox_browser"
    if "macintosh" in s and "applewebkit" in s:
        return "safari_browser"

    ## Desktop Client
    if "mirall" in s:
        if "linux" in s:
            return "desktop_client_linux"
        elif "macintosh" in s:
            return "desktop_client_mac"
        elif "windows" in s:
            return "desktop_client_windows"
        else:
            return "desktop_client_unknown"

    ## DavX5, CardDAV / CalDAV sync agent on Android
    if "davx5" in s:
        return "davx5"

    ## Thunderbird, CardDAV / CalDAV sync agent on Desktop
    if "thunderbird" in s:
        return "thunderbird"

    ## Python scripting
    if "python" in s:
        return "python"

    return "other"