ActionScript: Protect your Flash games on the web, sitelock all your games.

[:en]If you want to submit your games on one game portals DO NOT UPLOAD YOUR GAMES WITHOUT A SITELOCK SCRIPT.

WHY ?

Your games can be « stolen » by game portals. Or if you didn’t finish your game it’s a really a « pain in the ass » to update your games spread on all the web.

I tried lot of code for sitelocking my games but some of them are in ActionScript 2.0 or totally out of date. Some of them can’t work with the « https » or without the « www » characters.
Another example when you to want to test your game on your local computer you have to comment the script. And you can forget to uncomment the sitelock script when you submit your game on the web.

So I decided to create my own script.

This is a short version of my script.
But this one is perfect for all uses.

Installation

Copy and Paste this code and add your domains into the array « [ ] » separated by commas :

[« kongregate.com », …, …]

You can lock the local mode by adding a second parameter : false
The default value is set to true.

sitelock(["kongregate.com","benoitfreslon.com"]);

/**
* Sitelock your swf file on domains
*
* @param arrDomain List of all authorized domains
* @param local This swf can be played on local computer ?
*/
function sitelock(arrDomain:Array, local:Boolean = true):void
{

	var isAut:Boolean = false;

	var url:String = root.loaderInfo.url;
	var arr:Array = root.loaderInfo.url.split("://");

	var domain:String = arr[1].split("/")[0];

	// localmode
	if (url.split("file://").length > 1)
	{
		if (local)
		{
			//trace("Local mode is autorized");
			return;
		}
		else
		{
			destroy();
			return;
		}
	}
	for (var i:String in arrDomain)
	{
		arr = domain.split(arrDomain[i]);
		if (arr.length > 1)
		{
			isAut = true;
			domain = arrDomain[i];
			//trace("*** Sitelock: Domain found");
			break;
		}

	}
	if (! isAut)
	{
		//trace("*** Sitelock: Not authentified");
		destroy();
	}
	return;
}
/**
* This function is called when the game is locked.
*/
function destroy()
{
	// Domain error
	trace("*** Domain Error ***");
	root.alpha = 0;
}

[:fr]Si vous souhaitez diffuser vos jeux Flash sur les portails de jeux NE LES UPLOADER PAS AVANT D’AVOIR SITELOCKE VOS JEUX.

POURQUOI ?

Vos jeux peuvent être « volés » par d’autres portails de jeux. Ils le mettrons sur leur portail sans autorisation de votre part.
Ou bien si vous n’avez pas encore terminé votre jeu et que vous voulez le mettre à jour « bonjour la misère » pour mettre à jour votre jeu sur tous les portails du web.

J’ai essayé beaucoup de codes pour sitelocker mes jeux mais certains trouvés sur le net sont encore en ActionScript 2.0 ou totalement périmés.
Certains ne fonctionnent pas avec le préfixe « https » ou sans les « www ».
Un autre exemple, quand vous voulez simplement tester votre jeu sur votre machine, il faut commenter le code de sitelock et ne pas oublier de le décommenté avant de l’uplopadé sur web.

Donc j’ai décidé de créer mon propre script de sitelock.

Il s’agit d’une version simplifiée de mon script de base mais cette version est parfaite pour toutes utilisations.

Installation

Copier et coller ce bout de code et ajouter les domaines dans le tableau « [ ] » séparés par des virgules.

[« kongregate.com », …, …]

Vous pouvez vérouiller la lecture en local du jeu en changeant le second paramètre pour « false ».
La valeur par défaut étant true.

sitelock(["kongregate.com","benoitfreslon.com"]);

/**
* Sitelock your swf file on domains
*
* @param arrDomain List of all authorized domains
* @param local This swf can be played on local computer ?
*/
function sitelock(arrDomain:Array, local:Boolean = true):void
{

	var isAut:Boolean = false;

	var url:String = root.loaderInfo.url;
	var arr:Array = root.loaderInfo.url.split("://");

	var domain:String = arr[1].split("/")[0];

	// localmode
	if (url.split("file://").length > 1)
	{
		if (local)
		{
			//trace("Local mode is autorized");
			return;
		}
		else
		{
			destroy();
			return;
		}
	}
	for (var i:String in arrDomain)
	{
		arr = domain.split(arrDomain[i]);
		if (arr.length > 1)
		{
			isAut = true;
			domain = arrDomain[i];
			//trace("*** Sitelock: Domain found");
			break;
		}

	}
	if (! isAut)
	{
		//trace("*** Sitelock: Not authentified");
		destroy();
	}
	return;
}
/**
* This function is called when the game is locked.
*/
function destroy()
{
	// Domain error
	trace("*** Domain Error ***");
	root.alpha = 0;
}

[:]

Author: Benoit Freslon