. * */ defined('APP_ROOT') || die(_('No es posible acceder directamente a este archivo')); /** * Esta clase es la encargada de importar cuentas desde KeePass */ class SP_KeePassImport { /** * Iniciar la importación desde KeePass * @param object $xml * @return none */ public static function addKeepassAccounts($xml) { self::getGroups($xml->Root->Group); } /** * Obtener los datos de las entradas de KeePass. * * @param object $entries con el objeto XML con las entradas * @param string $groupName con nombre del grupo a procesar * @throws ImportException * @return none */ private static function getEntryData($entries, $groupName) { foreach ( $entries as $entry ){ foreach ( $entry->String as $account ){ $value = (isset($account->Value)) ? (string) $account->Value : ''; switch ($account->Key){ case 'Notes': $notes = $value; break; case 'Password': $password = $value; break; case 'Title': $name = $value; break; case 'URL': $url = $value; break; case 'UserName': $username = $value; break; } } $accountData = array($name,'KeePass',$groupName,$url,$username,$password,$notes); SP_Import::addAccountData($accountData); } } /** * Obtener los grupos y procesar lan entradas de KeePass. * * @param object $xml con objeto XML del archivo de KeePass * @throws ImportException * @return none */ private static function getGroups($xml) { foreach($xml as $node){ if ( $node->Group ){ foreach ( $node->Group as $group ){ $groupName = $group->Name; // Analizar grupo if ( $node->Group->Entry ){ // Obtener entradas self::getEntryData($group->Entry,$groupName); } if ( $group->Group ){ // Analizar subgrupo self::getGroups($group); } } } if ( $node->Entry ){ $groupName = $node->Name; // Obtener entradas self::getEntryData($node->Entry,$groupName); } } } }