Phpnuke upgrade alla versione 7.5 e downgrade alla 7.4

Phpnuke upgrade alla versione 7.5 e downgrade alla 7.4Mi è capitato per un cliente di dover gestire un downgrade dalla versione 7.5 alla 7.4 di alcuni moduli di phpnuke. Una volta su google avevo trovato tonnellate di materiale ma quando mi servivano davvero…niente! E allora una volta risalito alla giusta tecnica ho deciso di pubblicare un articolo io che parli di upgrade dalla versione 7.4 (e precedenti) alla versione 7.5 (e successive) e viceversa del downgrade della 7.5 (e successive) alla 7.4 (e precedenti). Perchè tutta questa attenzione intorno alla versione 7.5? Perchè con la 7.5 è cambiato il modo di gestire l’amministrazione dei moduli per cui i moduli precedenti la versione 7.5 non funzionano più sulla 7.5 e successive.

Ma entriamo nel dettaglio:

I file di amministrazione nella 7.5 sono nella sottocartella admin all’interno della cartella del modulo.
Nelle versioni precedenti invece erano nella cartella /admin e nelle sue sottocartelle.

Pertanto abbiamo una corrispondenza di questo tipo:

7.5 =======> 7.4
/modules/miomodulo/admin/case.php =======> /admin/case/case.miomodulo.php
/modules/miomodulo/admin/links.php =======> /admin/links/links.miomodulo.php
/modules/miomodulo/admin/index.php =======> /admin/modules/miomodulo.php

per cui sia nel caso di upgrade che di downgrade copiamo per prima cosa i file nelle giuste posizioni e con i giusti nomi.

Il secondo passo è aggiornare la parte iniziale (di security) dei vari file:

Cases

in entrambi i casi la prima riga utile dovrebbe essere :

$module_name = basename(dirname(dirname(__FILE__)));

nella versione 7.4 subito dopo c’è:

if (!eregi(”admin.php”, $_SERVER[’PHP_SELF’]))
{ die (”Access Denied”); }

mentre nella 7.5 c’è

global $admin_file;
if($admin_file==”")
{$admin_file=”admin”;}
if (!eregi(”".$admin_file.”.php”, $_SERVER[’PHP_SELF’]))
{ die (”Access Denied”); }

nel caso di upgrade sostituire il primo codice con il secondo, altrimenti in caso di downgrade il secondo con il primo.

Links

in entrambe le versioni c’è in prima riga:

$module_name = basename(dirname(dirname(__FILE__)));

a seguire nella 7.4:

if (($radminsuper==1) OR ($radminyour_module==1)) {
adminmenu(”admin.php?op=funzioneadmindelmiomodulo”, “Titolo”, “immagine.gif”);
}

mentre nella 7.5:

global $admin_file;
if($admin_file==”"){$admin_file=”admin”;}
if (!eregi(”".$admin_file.”.php”, $_SERVER[’PHP_SELF’])) { die (”Access Denied”); }
adminmenu(”".$admin_file.”.php?op=funzioneadmindelmiomodulo”, “Titolo”, “../../modules/$module_name/images/immagine.gif”);

abbiate ovviamente cura in entrambi i casi di spostare anche l’immagine nella giusta directory.

Modules

nella 7.4:

global $prefix, $db, $admin_file;
if (!eregi(”admin.php”, $_SERVER[’PHP_SELF’]))
{ die (”Accesso Denied”); }
$module_name = “miomodulo”;

mentre nella 7.5:

global $prefix, $db, $module_name, $admin_file;
if($admin_file==”"){$admin_file=”admin”;}
if (!eregi(”".$admin_file.”.php”, $_SERVER[’PHP_SELF’]))
{ die (”Access Denied”); }

i file poi si concludono in maniera diversa:

nella 7.4:

}
else
{
echo “Access Denied”;
}

dove nella 7.5 è:

}
else
{
include(”header.php”);
GraphicAdmin();
OpenTable();
echo “<center><b>”._ERROR.”</b><br><br>You do not have administration permission for module \”$module_name\”</center>”;
CloseTable();
include(”footer.php”);
}

Ora dovreste avere tutte le indicazioni per passare agevolmente da una versione all’altra. Entrambe le versioni (7.4 e 7.5) sono due buone release, la 7.5 ve la consiglio per l’amministrazione molto più flessibile. Vi sconsiglio caldamente invece le versioni 7.7 e 7.8 piene di bug e security holes.

Leave a Reply

You must be logged in to post a comment.