| Current Path : /lib/fm-agent/library/__pycache__/ |
| Current File : //lib/fm-agent/library/__pycache__/forticlient_helper.cpython-36.pyc |
3
q��i� � @ s@ d dl Z d dlmZ d dlZeeed�dd�ZG dd� d�ZdS )� N)�path)�
ems_serial�environment�returnc C s: t jd�}|j| j� � |j|j� � |j� dd� }|S )zO
Calculate a new customer key based on the ems_serial and environment.
�sha256r � )�hashlib�new�update�encode� hexdigest)r r Zhasher�customer_key� r �//usr/lib/fm-agent/library/forticlient_helper.py�calculate_customer_key s
r c @ s4 e Zd ZdZdZdd� Zdd� Zdd� Zd d
� ZdS )�ForticlientHelperz7/Library/Application Support/Fortinet/FortiClient/data/z@/Library/Application Support/Fortinet/FortiClient/conf/vpn.plistc C s ddd�| _ tj� | _d S )NZforticlient_serialr )zfct_uid.confzEMS_sn.conf)�data_files_map�logging� getLogger�log)�selfr r r �__init__ s
zForticlientHelper.__init__c C s� y�dd l j}|j|�}|jdkr.|jd| �}|j}y|jd�}|d|� }W n Y nX |j� jd�}t|�dk rzd S |d }|d }|d } t|�d
kr�|d }
n|d }
|dkr�|d
kr�|
dkr�| S d S d S d S )Nr � zhttp://�:�.� � � � � � ZcomZ fortisase�edge���������������) �urllib.parse�parse�urlparse�scheme�netloc�index�lower�split�len)r �urlr) Zparsed�host�idxZ
host_partsZ top_level�domainr r! r r r �
parse_address s2
zForticlientHelper.parse_addressc C sn dd l }t| jd��H}|j|�}x6|d j� D ]&}|jdd �}|r.| j|�}|r.|S q.W W d Q R X td��d S )Nr �rbZProfilesZServerzNo environment profile found)�plistlib�open�vpn_data�load�values�getr4 � Exception)r r6 �f�dataZprofileInfo�server_name�envr r r �get_vpn_environmentF s
z%ForticlientHelper.get_vpn_environmentc C s� t j| j�std��i }d}x^| jj� D ]P\}}|d7 }tt j| j|�d��&}|j� j � }t
|�dkrn|||<