Jump to content

Intervalle / plage d'IP de maintenance


Recommended Posts

Bonjour à tous,

 

D'après la documentation officielle, pour la maintenance :

Si vous souhaitez ajouter plus d'une adresse IP, séparez-les par des virgules ",".

 

Seulement, pour tester un module de paiement, mon prestataire bancaire (qui justifie que la requête vers mon site ne se fait jamais deux fois avec la même IP et que celle-ci est aléatoire), ne peut me fournir qu'un intervalle d'adresses IP, compris entre : XXX.XXX.0.0 et XXX.XXX.255.255.

 

D'après la méthode décrite dans la doc, il me faudrait donc insérer plusieurs milliers d'adresses IP (séparés par des virgules) pour espérer tomber sur celle qui viendra requêter mon site.

 

Une méthode spécifique existe-t-elle pour spécifier un interval/une plage d'adresses IP ?

 

Merci pour toute réponse.

 

 

PrestaShop™ 1.6.0.13 - Multi-boutique
Edited by Klemart3D (see edit history)
Link to comment
Share on other sites

Bonsoir,

 

Il faut modifier la méthode displayMaintenancePage qui est dans FrontController (en passant par un override) et j'y mettrais un code

 

La méthode verifplage, je l'ai recup sur internet pas essayé et dans displayMaintenancePage j'ajout un test en place.

protected function verifPlageIP($IP,$PlageIP)
	{
		$result=TRUE;
		$tabIP=explode(".",$IP);
		if(is_array($PlageIP))
		{
			foreach($PlageIP as $valeur)
			{
				$tabPlageIP[]=explode(".",$valeur);
			}
			for($i=0;$i<4;$i++)
			{
				if(($tabIP[$i]<$tabPlageIP[0][$i]) || ($tabIP[$i]>$tabPlageIP[1][$i]))
				{
					$result=FALSE;
				}
			}
		}
		else
		{
			$tabPlageIP=explode(".",$PlageIP);
			for($i=0;$i<4;$i++)
			{
				if(($tabIP[$i]!=$tabPlageIP[$i]))
				{
					$result=FALSE;
				}
			}
		}
		return ($result);		
	}
	/* Display a maintenance page if shop is closed */
	protected function displayMaintenancePage()
	{
		if ($this->maintenance == true || !(int)Configuration::get('PS_SHOP_ENABLE'))
		{
			$this->maintenance = true;
			$plageIP=array("deb"=>"127.0.0.0","fin"=>"127.254.254.254");
			if (!in_array(Tools::getRemoteAddr(), explode(',', Configuration::get('PS_MAINTENANCE_IP'))) && !$this->verifPlageIP(Tools::getRemoteAddr(),$plageIP))
			{
				header('HTTP/1.1 503 temporarily overloaded');

				$this->context->smarty->assign($this->initLogoAndFavicon());
				$this->context->smarty->assign(array(
					'HOOK_MAINTENANCE' => Hook::exec('displayMaintenance', array()),
				));

				// If the controller is a module, then getTemplatePath will try to find the template in the modules, so we need to instanciate a real frontcontroller
				$front_controller = preg_match('/ModuleFrontController$/', get_class($this)) ? new FrontController() : $this;
				$this->smartyOutputContent($front_controller->getTemplatePath($this->getThemeDir().'maintenance.tpl'));
				exit;
			}
		}
	}

Voila une piste, sinon le plus simple tu active la boutique le temps de faire les tests de paiement. si elle est pas ouverte peu de chance qu'il y a un acheteur qui se pointe le temps de tests.

 

Cdt

  • Like 1
Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...