Example #1
0
function auth_spip_dist ($login, $pass, $serveur='') {

	// retrouver le login
	$login = auth_spip_retrouver_login($login);
	// login inconnu, n'allons pas plus loin
	if (!$login) return array();

	$md5pass = $md5next = "";
	$shapass = $shanext = "";

	if (preg_match(",^\{([0-9a-f]{64});([0-9a-f]{64})\}$,i",$pass,$regs)){
		$shapass = $regs[1];
		$shanext = $regs[2];
		$pass="";
	}
	// compat avec une base mixte md5/sha256 : le js a envoye les 2 hash
	elseif (preg_match(",^\{([0-9a-f]{64});([0-9a-f]{64});([0-9a-f]{32});([0-9a-f]{32})\}$,i",$pass,$regs)){
		$shapass = $regs[1];
		$shanext = $regs[2];
		$md5pass = $regs[3];
		$md5next = $regs[4];
		$pass="";
	}

	// si envoi non crypte, crypter maintenant
	elseif ($pass) {
		$row = sql_fetsel("alea_actuel, alea_futur", "spip_auteurs", "login="******"*", "spip_auteurs", "login="******" AND pass="******" AND statut<>'5poubelle'",'','','','',$serveur);

	// compat avec les anciennes bases en md5
	if (!$row AND $md5pass)
		$row = sql_fetsel("*", "spip_auteurs", "login="******" AND pass="******" AND statut<>'5poubelle'",'','','','',$serveur);

	// login/mot de passe incorrect
	if (!$row) return array();

	// fait tourner le codage du pass dans la base
	if ($shanext) {

		include_spip('inc/acces'); // pour creer_uniqid
		@sql_update('spip_auteurs', array('alea_actuel' => 'alea_futur', 'pass' => sql_quote($shanext), 'alea_futur' => sql_quote(creer_uniqid())), "id_auteur=" . $row['id_auteur'].' AND pass IN ('.sql_quote($shapass).', '.sql_quote($md5pass).')','',$serveur);
		// En profiter pour verifier la securite de tmp/
		// Si elle ne fonctionne pas a l'installation, prevenir
		if (!verifier_htaccess(_DIR_TMP) AND defined('_ECRIRE_INSTALL'))
			return false;
	}
	return $row;
}
Example #2
0
function install_verifier_htaccess()
{
    if (verifier_htaccess(_DIR_TMP, true) and verifier_htaccess(_DIR_CONNECT, true)) {
        return '';
    }
    $titre = _T('htaccess_inoperant');
    $averti = _T('htaccess_a_simuler', array('htaccess' => '<tt>' . _ACCESS_FILE_NAME . '</tt>', 'constantes' => '<tt>_DIR_TMP &amp; _DIR_CONNECT</tt>', 'document_root' => '<tt>' . $_SERVER['DOCUMENT_ROOT'] . '</tt>'));
    return "<div class='error'><h3>{$titre}</h3><p>{$averti}</p></div>";
}
Example #3
0
File: spip.php Project: nursit/SPIP
/**
 * Authentifie et si ok retourne le tableau de la ligne SQL de l'utilisateur
 * Si risque de secu repere a l'installation retourne False
 *
 * @param string $login
 * @param string $pass
 * @param string $serveur
 * @param bool $phpauth
 * @return array|bool
 */
function auth_spip_dist($login, $pass, $serveur = '', $phpauth = false)
{
    // retrouver le login
    $login = auth_spip_retrouver_login($login);
    // login inconnu, n'allons pas plus loin
    if (!$login) {
        return array();
    }
    $md5pass = "";
    $shapass = $shanext = "";
    if (preg_match(",^\\{([0-9a-f]{64});([0-9a-f]{64})\\}\$,i", $pass, $regs)) {
        $shapass = $regs[1];
        $shanext = $regs[2];
    } elseif (preg_match(",^\\{([0-9a-f]{64});([0-9a-f]{64});([0-9a-f]{32});([0-9a-f]{32})\\}\$,i", $pass, $regs)) {
        $shapass = $regs[1];
        $shanext = $regs[2];
        $md5pass = $regs[3];
        //$md5next = $regs[4];
    } elseif ($pass) {
        $row = sql_fetsel("alea_actuel, alea_futur", "spip_auteurs", "login="******"*", "spip_auteurs", "login="******" AND pass="******" AND statut<>'5poubelle'", '', '', '', '', $serveur);
    // compat avec les anciennes bases en md5
    if (!$row and $md5pass) {
        $row = sql_fetsel("*", "spip_auteurs", "login="******" AND pass="******" AND statut<>'5poubelle'", '', '', '', '', $serveur);
    }
    // login/mot de passe incorrect
    if (!$row) {
        return array();
    }
    // fait tourner le codage du pass dans la base
    // sauf si phpauth : cela reviendrait a changer l'alea a chaque hit, et aucune action verifiable par securiser_action()
    if ($shanext and !$phpauth) {
        include_spip('inc/acces');
        // pour creer_uniqid
        @sql_update('spip_auteurs', array('alea_actuel' => 'alea_futur', 'pass' => sql_quote($shanext, $serveur, 'text'), 'alea_futur' => sql_quote(creer_uniqid(), $serveur, 'text')), "id_auteur=" . $row['id_auteur'] . ' AND pass IN (' . sql_quote($shapass, $serveur, 'text') . ', ' . sql_quote($md5pass, $serveur, 'text') . ')', '', $serveur);
        // En profiter pour verifier la securite de tmp/
        // Si elle ne fonctionne pas a l'installation, prevenir
        if (!verifier_htaccess(_DIR_TMP) and defined('_ECRIRE_INSTALL')) {
            return false;
        }
    }
    return $row;
}
Example #4
0
/**
 * Diverses tâches de maintenance
 * 
 * - (re)mettre .htaccess avec 'Deny from all' 
 *   dans les deux répertoires dits inaccessibles par http
 * - Vérifier qu'aucune table ne s'est crashée
 *
 * @uses verifier_htaccess()
 * @uses verifier_crash_tables()
 *
 * @param object $t
 * @return bool Toujours à true.
 */
function genie_maintenance_dist($t)
{
    // (re)mettre .htaccess avec deny from all
    // dans les deux repertoires dits inaccessibles par http
    include_spip('inc/acces');
    verifier_htaccess(_DIR_ETC);
    verifier_htaccess(_DIR_TMP);
    // Verifier qu'aucune table n'est crashee
    if (!_request('reinstall')) {
        verifier_crash_tables();
    }
    return 1;
}
Example #5
0
/**
 * Créer un sous-répertoire IMG/$ext/ tel que IMG/pdf
 *
 * @uses sous_repertoire()
 * @uses _DIR_IMG
 * @uses verifier_htaccess()
 *
 * @param string $ext
 * @return string
 */
function creer_repertoire_documents($ext)
{
    $rep = sous_repertoire(_DIR_IMG, $ext);
    if (!$ext or !$rep) {
        spip_log("creer_repertoire_documents '{$rep}' interdit");
        exit;
    }
    // Cette variable de configuration peut etre posee par un plugin
    // par exemple acces_restreint
    if (isset($GLOBALS['meta']["creer_htaccess"]) and $GLOBALS['meta']["creer_htaccess"] == 'oui') {
        include_spip('inc/acces');
        verifier_htaccess($rep);
    }
    return $rep;
}
Example #6
0
function install_verifier_htaccess()
{
	if (verifier_htaccess(_DIR_TMP, true)
	AND verifier_htaccess(_DIR_CONNECT, true))
		return '';

	$titre = _T('htaccess_inoperant');

	$averti = _T('htaccess_a_simuler', 
		array('htaccess' => '<tt>' . _ACCESS_FILE_NAME . '</tt>',
			'constantes' =>  '<tt>_DIR_TMP &amp; _DIR_CONNECT</tt>',
			'document_root' => '<tt>' . $_SERVER['DOCUMENT_ROOT'] . '</tt>'));

	return "<p class='resultat echec'>$titre</p><p>$averti</p>";
}
Example #7
0
/**
 * Creer IMG/config/vue
 * comme "creer_repertoire_documents" mais avec 2 profondeurs
 *
 * @param  string $ext
 * @return string
 */
function cfg_creer_repertoire_cfg($ext) {
	list($racine, $vue) = explode('/',$ext,2);
	if ($rep = sous_repertoire(_DIR_IMG, $racine)){
		$rep = sous_repertoire(_DIR_IMG.$racine, $vue);
	}

	if (!$ext OR !$rep) {
		spip_log("creer_repertoire_cfg interdit");
		exit;
	}

	// Cette variable de configuration peut etre posee par un plugin
	// par exemple acces_restreint
	if ($GLOBALS['meta']["creer_htaccess"] == 'oui') {
		include_spip('inc/acces');
		verifier_htaccess($rep);
	}

	return $rep;
}
Example #8
0
function gerer_htaccess() {
	// Cette variable de configuration peut etre posee par un plugin
	// par exemple acces_restreint
	$f = ($GLOBALS['meta']['creer_htaccess'] === 'oui');
	$dirs = sql_allfetsel('extension', 'spip_types_documents');
	$dirs[] = array('extension' => 'distant');
	foreach($dirs as $e) {
		if (is_dir($dir = _DIR_IMG . $e['extension'])) {
			if ($f)
				verifier_htaccess($dir);
			else spip_unlink($dir . '/' . _ACCESS_FILE_NAME);
		}
	}
	return $GLOBALS['meta']['creer_htaccess'];
}