41 lines
		
	
	
		
			1.9 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
			
		
		
	
	
			41 lines
		
	
	
		
			1.9 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
import subprocess
 | 
						|
from email_validator import validate_email, EmailNotValidError
 | 
						|
 | 
						|
from .config import getDockersConfig, getSecretConfig
 | 
						|
 | 
						|
sympa_user = getSecretConfig("sympaServ", "SOAP_USER")
 | 
						|
sympa_pass = getSecretConfig("sympaServ", "SOAP_PASSWORD")
 | 
						|
sympa_listmaster = getSecretConfig("sympaServ", "ADMINEMAIL")
 | 
						|
sympa_url = f"https://{getDockersConfig('sympaHost')}.{getDockersConfig('domain')}"
 | 
						|
sympa_soap = "docker exec -i sympaServ /usr/lib/sympa/bin/sympa_soap_client.pl"
 | 
						|
sympa_domain = getDockersConfig('domain_sympa')
 | 
						|
sympa_liste_info = "infos"
 | 
						|
 | 
						|
 | 
						|
# docker exec -i sympaServ /usr/lib/sympa/bin/sympa_soap_client.pl --soap_url=${httpProto}://${URL_LISTE}/sympasoap --trusted_application=${sympa_SOAP_USER} --trusted_application_password=${sympa_SOAP_PASSWORD} --proxy_vars=\"USER_EMAIL=${LISTMASTER}\" --service=add --service_parameters=\"${NL_LIST},${EMAIL_SOUHAITE}\""  | tee -a "${CMD_SYMPA}"
 | 
						|
 | 
						|
class Sympa:
 | 
						|
 | 
						|
    def _execute_sympa_command(self, email, liste, service):
 | 
						|
        if validate_email(email) and validate_email(liste):
 | 
						|
            cmd = f'{sympa_soap} --soap_url={sympa_url}/sympasoap --trusted_application={sympa_user} --trusted_application_password={sympa_pass} --proxy_vars=USER_EMAIL={sympa_listmaster} --service={service} --service_parameters="{liste},{email}" && echo $?'
 | 
						|
            output = subprocess.check_output(cmd, shell=True, stderr=subprocess.STDOUT)
 | 
						|
            return output.decode()
 | 
						|
 | 
						|
    def add_email_to_list(self, email, liste=sympa_liste_info):
 | 
						|
        """
 | 
						|
        Ajouter un email dans une liste sympa
 | 
						|
        """
 | 
						|
        output = self._execute_sympa_command(email, f"{liste}@{sympa_domain}", 'add')
 | 
						|
        return output
 | 
						|
 | 
						|
    def delete_email_from_list(self, email, liste=sympa_liste_info):
 | 
						|
        """
 | 
						|
        Supprimer un email dans une liste sympa
 | 
						|
        """
 | 
						|
        output = self._execute_sympa_command(email, f"{liste}@{sympa_domain}", 'del')
 | 
						|
        return output
 | 
						|
 | 
						|
 | 
						|
 |