#!/usr/bin/env python
import sys
import platform
import os
ACCEPTABLE_SYNC_DELAY = 20
AGG_URL = 'rx.us01.fortimonitor.com'
BASE_CONFIG_DIR = '/etc'
BASE_CUSTOM_PLUGIN_DIR = '/usr/share'
BASE_DATA_DIR = '/var/lib'
BASE_LOG_DIR = '/var/log'
BIN_DIR = '/usr/bin/fm-agent'
BRAND = 'fm'
LIB_DIR = '/usr/lib/fm-agent'
PKG_DIR = 'fm-agent'
STARTUP_TIMEOUT = 2 # In minutes
USER = 'fm-agent'
VERSION = '2024.4.5'
if 'freebsd' in sys.platform.lower():
sys.path.insert(0, '/usr/local/fm-agent/lib/dependencies')
# Add platform/version-specific dependency directory if present
version = sys.version_info
sys.path.insert(0, '/usr/local/fm-agent/lib/dependencies/%s/python%s.%s' % (sys.platform, version[0], version[1]))
sys.path.insert(0, '/usr/local/fm-agent/lib/library')
BASE_CONFIG_DIR = '/usr/local/etc'
BIN_DIR = '/usr/local/fm-agent/bin'
LIB_DIR = '/usr/local/fm-agent/lib'
elif 'darwin' == sys.platform.lower():
filePath = os.path.realpath(__file__)
agent_bin, _ = os.path.split(filePath)
agent_version_dir = os.path.split(agent_bin)[0]
agent_home = os.path.split(agent_version_dir)[0]
architecture = None
import subprocess
with subprocess.Popen('arch', shell=False, stdout=subprocess.PIPE, stderr=subprocess.PIPE) as p:
try:
stdout, stderr = p.communicate(timeout=5.0)
architecture = stdout.decode('utf-8').strip()
except subprocess.TimeoutExpired:
p.kill()
if architecture is None:
sys.stderr.write('Could not determine machine architecture\n')
sys.exit(-12)
svi = sys.version_info
py_executable_root = os.path.join(
os.path.dirname(os.path.dirname(sys.executable)),
'lib/python{}.{}/site-packages'.format(svi.major, svi.minor)
)
searchPaths = [
'lib',
'lib/library',
'{}/{}'.format(py_executable_root, architecture),
'lib/dependencies'
]
for dir in searchPaths:
sys.path.insert(0, os.path.join(agent_version_dir, dir))
BASE_CONFIG_DIR = os.path.join(agent_home, 'config')
BASE_CUSTOM_PLUGIN_DIR = os.path.join(agent_home, 'share')
BASE_DATA_DIR = os.path.join(agent_home, 'data')
BASE_LOG_DIR = os.path.join(agent_home, 'logs')
BIN_DIR = os.path.join(agent_version_dir, 'bin')
LIB_DIR = os.path.join(agent_version_dir, 'lib')
else:
# Add the main dependency directory
sys.path.insert(0, '/usr/lib/fm-agent/dependencies')
# Add platform/version-specific dependency directory if present
version = sys.version_info
try:
is_64bit = sys.maxsize > 2**32
except:
is_64bit = True
os_name = sys.platform
if not is_64bit:
os_name += "-32"
sys.path.insert(0, '/usr/lib/fm-agent/dependencies/%s/python%s.%s' % (os_name, version[0], version[1]))
# Add the main agent code directory
sys.path.insert(0, '/usr/lib/fm-agent/library')
sys.path.insert(0, '/usr/lib/fm-agent/')
# Add processor/platform/version dependency directory if present, in order to pick up
# Sparc libraries properly
processor = platform.uname()[-1]
sys.path.insert(0, '/usr/lib/fm-agent/dependencies/%s/%s/python%s.%s' % (processor, os_name, version[0], version[1]))
# Add the main agent code directory
sys.path.insert(0, '/usr/lib/fm-agent/library')
from agent import Agent
if __name__ == '__main__':
agent = Agent(BRAND,
AGG_URL,
VERSION,
USER,
BIN_DIR,
LIB_DIR,
PKG_DIR,
STARTUP_TIMEOUT,
BASE_CONFIG_DIR,
BASE_CUSTOM_PLUGIN_DIR,
BASE_DATA_DIR,
BASE_LOG_DIR,
ACCEPTABLE_SYNC_DELAY)
agent.main()