<?xml 
version="1.0" encoding="iso-8859-1"?>
<rss version="2.0" 
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
>

<channel xml:lang="fr">
	<title>Eldin'Net</title>
	<link>http://www.eldin.net/spip/</link>
	
	<language>fr</language>
	<generator>SPIP - www.spip.net</generator>




<item xml:lang="fr">
		<title>Int&#233;gration Vtiger / Asterisk / Xivo</title>
		<link>http://www.eldin.net/spip/spip.php?article3</link>
		<guid isPermaLink="true">http://www.eldin.net/spip/spip.php?article3</guid>
		<dc:date>2011-01-25T15:21:43Z</dc:date>
		<dc:format>text/html</dc:format>
		<dc:language>fr</dc:language>
		<dc:creator>HP Eldin</dc:creator>



		<description>Int&#233;gration Vtiger / Asterisk / Xivo Sur Asterisk Xivo Une seule modif a faire : /etc/asterisk/manager.conf [xivo_vtiger] secret = XXXXXXXX deny=0.0.0.0/0.0.0.0 permit=IP_SERVEUR_VTIGER/255.255.255.0 read = system,call,log,verbose,command,agent,user,dtmf write = system,call,log,verbose,command,agent,user,dtmf Relancer Asterisk/Xivo sur machine vtiger : Script php a mettre en place dans (...)

-
&lt;a href="http://www.eldin.net/spip/spip.php?rubrique63" rel="directory"&gt;Mes Travaux sous Linux&lt;/a&gt;


		</description>


 <content:encoded>&lt;div class='rss_texte'&gt;&lt;p&gt;&lt;strong&gt;Int&#233;gration Vtiger / Asterisk / Xivo&lt;/strong&gt;&lt;/p&gt; &lt;p&gt;&lt;strong&gt;Sur Asterisk Xivo&lt;/strong&gt;&lt;/p&gt; &lt;p&gt;Une seule modif a faire : /etc/asterisk/manager.conf&lt;/p&gt; &lt;p&gt;[xivo_vtiger]
&lt;br /&gt;secret = XXXXXXXX
&lt;br /&gt;deny=0.0.0.0/0.0.0.0
&lt;br /&gt;permit=IP_SERVEUR_VTIGER/255.255.255.0
&lt;br /&gt;read = system,call,log,verbose,command,agent,user,dtmf
&lt;br /&gt;write = system,call,log,verbose,command,agent,user,dtmf&lt;/p&gt; &lt;p&gt;Relancer Asterisk/Xivo&lt;/p&gt; &lt;p&gt;&lt;strong&gt;sur machine vtiger :
&lt;/strong&gt;&lt;/p&gt; &lt;p&gt;Script php a mettre en place dans cron/modules/PBXManager/AsteriskClient.php&lt;/p&gt; &lt;div style='text-align: left;' class='spip_code' dir='ltr'&gt;&lt;code&gt;&lt;#!/usr/local/bin/php&lt;br /&gt; &lt;?php&lt;br /&gt; /***********************************************************************************&lt;br /&gt; * The contents of this file are subject to the vtiger CRM Public License Version 1.0&lt;br /&gt; * (&quot;License&quot;); You may not use this file except in compliance with the License&lt;br /&gt; * The Original Code is: vtiger CRM Open Source&lt;br /&gt; * The Initial Developer of the Original Code is vtiger.&lt;br /&gt; * Portions created by vtiger are Copyright (C) vtiger.&lt;br /&gt; * All Rights Reserved.&lt;br /&gt; * Some Code added by dicko for the Elastix Project&lt;br /&gt; * Modif 01-2011 by HP Eldin eldin@inforoutes.fr for Xivo&lt;br /&gt; ************************************************************************************/&lt;br /&gt; &lt;br /&gt; /**&lt;br /&gt; * this file will be run as a shell script (in linux) or a batch file (under windows).&lt;br /&gt; * the purpose of the file is to create a master socket which will be connecting to the asterisk server&lt;br /&gt; * and to keep it (the socket) alive all the time.&lt;br /&gt; */&lt;br /&gt; &lt;br /&gt; ini_set(&quot;include_path&quot;, &quot;/home/vtiger/&quot;);&lt;br /&gt; #&quot;../../../&quot;);&lt;br /&gt; require_once('modules/PBXManager/utils/AsteriskClass.php');&lt;br /&gt; require_once('config.php');&lt;br /&gt; require_once('include/utils/utils.php');&lt;br /&gt; require_once('include/language/en_us.lang.php');&lt;br /&gt; require_once('modules/PBXManager/AsteriskUtils.php');&lt;br /&gt; &lt;br /&gt; &lt;br /&gt; &lt;br /&gt; asteriskClient();&lt;br /&gt; &lt;br /&gt; /**&lt;br /&gt; * this function defines the asterisk client&lt;br /&gt; */&lt;br /&gt; &lt;br /&gt; function asteriskClient(){&lt;br /&gt; global $app_strings, $current_user;&lt;br /&gt; global $adb, $log;&lt;br /&gt; &lt;br /&gt; // Connexion au serveur Asterisk&lt;br /&gt; $data = getAsteriskInfo($adb);&lt;br /&gt; $server = $data['server'];&lt;br /&gt; $port = $data['port'];&lt;br /&gt; $username = $data['username'];&lt;br /&gt; $password = $data['password'];&lt;br /&gt; $version = $data['version'];&lt;br /&gt; &lt;br /&gt; $errno = $errstr = NULL;&lt;br /&gt; $sock = @fsockopen($server, $port, $errno, $errstr, 1);&lt;br /&gt; stream_set_blocking($sock, true);&lt;br /&gt; if( $sock === false ) {&lt;br /&gt; echo &quot;Socket cannot be created due to error: $errno: $errstr\n&quot;;&lt;br /&gt; $log-&gt;debug(&quot;Socket cannot be created due to error: $errno: $errstr\n&quot;);&lt;br /&gt; exit(0);&lt;br /&gt; }else{&lt;br /&gt; echo &quot;DEBUG : Date: &quot;.date(&quot;d-m-Y&quot;).&quot;\n&quot;;&lt;br /&gt; echo &quot;DEBUG : Connection au serveur Asterisk r.....\n&quot;;&lt;br /&gt; $log-&gt;debug(&quot;Connecting to asterisk server.....\n&quot;);&lt;br /&gt; }&lt;br /&gt; echo &quot;DEBUG : Connexion reussie\n\n\n&quot;;&lt;br /&gt; $asterisk = new Asterisk($sock, $server, $port);&lt;br /&gt; &lt;br /&gt; authorizeUser($username, $password, $asterisk);&lt;br /&gt; &lt;br /&gt; //keep looping continuosly to check if there are any calls&lt;br /&gt; // boucle permanente de traitement des messages Asterisk&lt;br /&gt; while (true) {&lt;br /&gt; //check for incoming calls and insert in the database&lt;br /&gt; //test les appels entrants&lt;br /&gt; $incoming = handleIncomingCalls($asterisk, $adb, $version);&lt;br /&gt; }&lt;br /&gt; fclose($sock);&lt;br /&gt; unset($sock);&lt;br /&gt; }&lt;br /&gt; &lt;br /&gt; /**&lt;br /&gt; * this function checks if there are any incoming calls for the current user&lt;br /&gt; * if any call is found, it just inserts the values into the vtiger_asteriskincomingcalls table&lt;br /&gt; *&lt;br /&gt; * @param $asterisk - the asterisk object&lt;br /&gt; * @param $adb - the peardatabase type object&lt;br /&gt; * @return incoming call information if successful&lt;br /&gt; * false if unsuccessful&lt;br /&gt; */&lt;br /&gt; function handleIncomingCalls($asterisk, $adb, $version=&quot;1.4&quot;){&lt;br /&gt; &lt;br /&gt; $response = $asterisk-&gt;getAsteriskResponse();&lt;br /&gt; if(empty($response)){&lt;br /&gt; return false;&lt;br /&gt; }&lt;br /&gt; &lt;br /&gt; if($version == &quot;1.6&quot;){&lt;br /&gt; $state = &quot;ChannelStateDesc&quot;;&lt;br /&gt; }else{&lt;br /&gt; $state = &quot;State&quot;;&lt;br /&gt; }&lt;br /&gt; // si on detecte dans Event Dial&lt;br /&gt; // if ( $response['Event'] == 'Dial' ){&lt;br /&gt; if ( ($response['Event'] == 'Dial' )|| ($response['Event'] == 'Join' ) ){&lt;br /&gt; print &quot;DEBUG : &quot;.date('m/d/Y H:i:s').&quot; - Event: &quot;.$response['Event']. &quot; | &quot;;&lt;br /&gt; // Print_r($response);&lt;br /&gt; if ( $response['Event'] == 'Dial' ) {&lt;br /&gt; $dest = explode(&quot;/&quot;,$response['Destination']);&lt;br /&gt; $ext = explode(&quot;-&quot;,$dest[1]);&lt;br /&gt; $extension=$ext[0];&lt;br /&gt; $callerType=$dest[0];&lt;br /&gt; $callerType=&quot;&quot;;&lt;br /&gt; $callerNumber=$response['CallerID'];&lt;br /&gt; $callerName=$response['CallerIDName'];&lt;br /&gt; }else{ // cas d'un appel de groupe&lt;br /&gt; &lt;br /&gt; $extension=$response['Queue'];&lt;br /&gt; switch ($extension) {&lt;br /&gt; case 'autre' :&lt;br /&gt; $extension=3101;&lt;br /&gt; break;&lt;br /&gt; case 'hotline' :&lt;br /&gt; $extension=3300;&lt;br /&gt; break;&lt;br /&gt; case 'technique' :&lt;br /&gt; $extension=3200;&lt;br /&gt; break;&lt;br /&gt; }&lt;br /&gt; $callerType=&quot;&quot;;&lt;br /&gt; $callerNumber=$response['CallerID'];&lt;br /&gt; $callerName=$response['CallerIDName'];&lt;br /&gt; }&lt;br /&gt; &lt;br /&gt; &lt;br /&gt; print &quot;DEBUG : extension: &quot;.$extension.&quot; callerName: &quot;.$callerName.&quot; callerNumber: &quot;.$callerNumber.&quot;&gt;\n&quot;;&lt;br /&gt; // on recherche le numero&lt;br /&gt; if(checkExtension($extension, $adb)){&lt;br /&gt; &lt;br /&gt; //insert into database&lt;br /&gt; $sql = &quot;insert into vtiger_asteriskincomingcalls values (?,?,?,?,?,?)&quot;;&lt;br /&gt; $flag= 0;&lt;br /&gt; $timer = time();&lt;br /&gt; $params = array($callerNumber, $callerName, $extension, $callerType,$flag,$timer);&lt;br /&gt; $adb-&gt;pquery($sql, $params);&lt;br /&gt; print &quot;DEBUG : &quot;.date('m/d/Y H:i:s').&quot; - AddMysql |$callerNumber,$callerName,$extension,$callerType,$flag,$timer\n&quot;;&lt;br /&gt; addToCallHistory($extension, $callerType.&quot;:&quot;.$callerNumber, $extension, &quot;incoming&quot;, $adb);&lt;br /&gt; &lt;br /&gt; // break; //break the while loop&lt;br /&gt; }&lt;br /&gt; &lt;br /&gt; return true;&lt;br /&gt; }&lt;br /&gt; else&lt;br /&gt; {&lt;br /&gt; print &quot;DEBUG : &quot;.date('m/d/Y H:i:s').&quot; - Event: &quot;.$response['Event'].&quot; \r&quot;;&lt;br /&gt; return false;&lt;br /&gt; }&lt;br /&gt; &lt;br /&gt; }&lt;br /&gt; &lt;br /&gt; &lt;br /&gt; /**&lt;br /&gt; * this function takes a XML response and converts it to an array format&lt;br /&gt; * @param string $response - the xml response&lt;br /&gt; * @return the xml formatted into an array&lt;br /&gt; */&lt;br /&gt; function getArray($xml){&lt;br /&gt; $lines = explode(&quot;\r\n&quot;, $xml);&lt;br /&gt; $response = array();&lt;br /&gt; foreach($lines as $line){&lt;br /&gt; list($key, $value) = explode(&quot;:&quot;, $line);&lt;br /&gt; $response[$key] = $value;&lt;br /&gt; }&lt;br /&gt; return $response;&lt;br /&gt; }&lt;br /&gt; &lt;br /&gt; /**&lt;br /&gt; * this function checks if the given extension is a valid vtiger extension or not&lt;br /&gt; * if yes it returns true&lt;br /&gt; * if not it returns false&lt;br /&gt; *&lt;br /&gt; * @param string $ext - the extension to be checked&lt;br /&gt; * @param object $adb - the peardatabase object&lt;br /&gt; */&lt;br /&gt; function checkExtension($ext, $adb){&lt;br /&gt; $sql = &quot;select * from vtiger_asteriskextensions where asterisk_extension='$ext'&quot;;&lt;br /&gt; print &quot;DEBUG : checkExtension : $sql\n&quot;;&lt;br /&gt; $result = $adb-&gt;pquery($sql, array());&lt;br /&gt; if($adb-&gt;num_rows($result)&gt;0){&lt;br /&gt; print &quot;DEBUG : checkExtension : $sql trouve !! \n&quot;;&lt;br /&gt; return true;&lt;br /&gt; }else{&lt;br /&gt; print &quot;DEBUG : checkExtension : $sql non trouve !! \n&quot;;&lt;br /&gt; return false;&lt;br /&gt; }&lt;br /&gt; }&lt;br /&gt; &lt;br /&gt; &lt;br /&gt; ?&gt;&lt;/code&gt;&lt;/div&gt;
&lt;p&gt;Script trouv&#233; sur :&lt;/p&gt; &lt;p&gt;&lt;a href=&quot;http://srv66.palosanto.com/en/component/kunena/37-vtiger/64460-vtiger-and-incoming-call-popup.html&quot; class='spip_url spip_out' rel='nofollow external'&gt;http://srv66.palosanto.com/en/compo...&lt;/a&gt;&lt;/p&gt; &lt;p&gt;J'ai ajout&#233; des lignes pour la gestion des appels de groupe.&lt;/p&gt; &lt;p&gt;Dans le cas d'appel vers un groupe, il faut modifier dans le script l'&#233;quivaence entre le nom des groupes et leurs extensions.&lt;/p&gt; &lt;p&gt;Rendre ce script ex&#233;cutable.&lt;/p&gt; &lt;p&gt;Ajouter dans les fichiers de d&#233;marage&lt;/p&gt; &lt;p&gt;/home/vtiger/cron/modules/PBXManager/AsteriskClient.php &amp;&lt;/p&gt; &lt;p&gt;&lt;strong&gt;dans l'admin de vtiger&lt;/strong&gt;&lt;/p&gt; &lt;p&gt;autoriser le module Administration PBX en lecture ecriture&lt;/p&gt; &lt;p&gt;configurer le module Admin PBX avec les param&#232;tres du Xivo&lt;/p&gt; &lt;p&gt;sur son compte, mes preferences,&lt;/p&gt; &lt;p&gt;ajouter son n&#176; de poste et cocher les appels entrants dans la config
Asterisk&lt;/p&gt; &lt;p&gt;Dans le cas de r&#233;cup&#233;ration des appels d'un groupe, rentrer l'extension du groupe. Mais dans ce cas, les appels sortants depuis Vtiger ne fonctionnent plus.&lt;/p&gt; &lt;p&gt;Le popup des appels entrant dans vtiger se trouve dans&lt;/p&gt; &lt;p&gt;modules/PBXManager/TraceIncomingCall.php&lt;/p&gt; &lt;p&gt;A franciser dans le code.&lt;/p&gt; &lt;p&gt;Fonctionne avec Vtiger 5.1, Xivo 1.1 &quot;Gallifrey&quot;&lt;/p&gt;&lt;/div&gt;
		
		</content:encoded>


		

	</item>
<item xml:lang="fr">
		<title>Mise en place de certificat machine pour l'authentification SSH</title>
		<link>http://www.eldin.net/spip/spip.php?article2</link>
		<guid isPermaLink="true">http://www.eldin.net/spip/spip.php?article2</guid>
		<dc:date>2010-12-01T13:49:09Z</dc:date>
		<dc:format>text/html</dc:format>
		<dc:language>fr</dc:language>
		<dc:creator>HP Eldin</dc:creator>



		<description>Mise en place de certificat machine pour l'authentification SSH Avec openssh, sous Linux Sur la machine A sur un compte utilisateur ssh-keygen -t rsa _g&#233;n&#233;r&#233; 2 fichiers : .ssh/id_rsa.pub .ssh/id_rsa Il faut copier le fichier id_rsa.pub sur la machine B sur laquelle on souhaite se connecter. scp -Pport_ssh .ssh/id_rsa.pub USER_sur_B@MACHINE_B : /.ssh/ Puis le copier dans le fichier des cl&#233;s autoris&#233;es ssh -pport_ssh USER_sur_B@MACHINE_B &quot;cat /.ssh/id_rsa.pub &gt;&gt; (...)

-
&lt;a href="http://www.eldin.net/spip/spip.php?rubrique63" rel="directory"&gt;Mes Travaux sous Linux&lt;/a&gt;


		</description>


 <content:encoded>&lt;div class='rss_texte'&gt;&lt;p&gt;&lt;strong&gt;Mise en place de certificat machine pour l'authentification SSH&lt;/strong&gt;&lt;/p&gt; &lt;p&gt;Avec openssh, sous Linux&lt;/p&gt; &lt;p&gt;Sur la machine A&lt;/p&gt; &lt;p&gt;sur un compte utilisateur&lt;/p&gt; &lt;p&gt;&lt;i&gt;ssh-keygen -t rsa&lt;/i&gt;&lt;/p&gt; &lt;p&gt;_g&#233;n&#233;r&#233; 2 fichiers :
&lt;br /&gt;&lt;img src=&quot;http://www.eldin.net/spip/local/cache-vignettes/L8xH11/puce-cebf5.gif&quot; width='8' height='11' class='puce' alt=&quot;-&quot; style='height:11px;width:8px;' /&gt; .ssh/id_rsa.pub
&lt;br /&gt;&lt;img src=&quot;http://www.eldin.net/spip/local/cache-vignettes/L8xH11/puce-cebf5.gif&quot; width='8' height='11' class='puce' alt=&quot;-&quot; style='height:11px;width:8px;' /&gt; .ssh/id_rsa&lt;/p&gt; &lt;p&gt;Il faut copier le fichier id_rsa.pub sur la machine B sur laquelle on souhaite
se connecter.&lt;/p&gt; &lt;p&gt;&lt;i&gt;scp -Pport_ssh .ssh/id_rsa.pub USER_sur_B@MACHINE_B : /.ssh/&lt;/i&gt;&lt;/p&gt; &lt;p&gt;Puis le copier dans le fichier des cl&#233;s autoris&#233;es&lt;/p&gt; &lt;p&gt;&lt;i&gt;ssh -pport_ssh USER_sur_B@MACHINE_B &quot;cat /.ssh/id_rsa.pub &gt;&gt; /.ssh/authorized_keys&quot;
&lt;/i&gt;&lt;/p&gt; &lt;p&gt;Force les droits pour la s&#233;curit&#233;&lt;/p&gt; &lt;p&gt;&lt;i&gt;ssh -pport_ssh USER_sur_B@MACHIEN_B &quot;chmod 600 /.ssh/authorized_keys&quot;&lt;/p&gt; &lt;p&gt;ssh -pport_ssh USER_sur_B@MACHINE_B &quot;cd .. ;chmod 700 home_user_b&quot;&lt;/p&gt; &lt;p&gt;&lt;/i&gt;&lt;/p&gt; &lt;p&gt;ensuite depuis A pour se connecter sur B&lt;/p&gt; &lt;p&gt;ssh -pport_ssh USER_sur_B@MACHINE_B&lt;/p&gt; &lt;p&gt;sans demande de login, mot de passe&lt;/p&gt; &lt;p&gt;Utile pour les cnx rsync, git, pour des mises a jours via des scripts via ssh.&lt;/p&gt;&lt;/div&gt;
		
		</content:encoded>


		

	</item>



</channel>

</rss>

