White-Listing bei der Synchronisation
Grundsätzlich kann jedes Gerät, das pit - Mobile installiert hat und über Zugangsdaten zum Prozess verfügt (Server-Url, Anmeldedaten, etc.), Daten mit pit - FM abgleichen, insofern es der Prozess zulässt. Dies betrifft das Neuanlegen, Verändern und Löschen von Datensätzen.
Ist mehr Kontrolle darüber erwünscht, welches Gerät synchronisieren darf und welches nicht, kann ein White-Listing eingeschaltet werden, das eine Synchronisation nur für bestimmte Geräte zulässt.
Hierfür ist es notwendig, in der settings.ini auf dem Webserver folgende Information hinzuzufügen:
[Globals]
enableWhitelist=true
Daraufhin verwendet der pit - Mobile Server bei einer Synchronisationsanfrage die Klassenformel CheckMobileWhiteList
, um zu entscheiden, ob das Gerät zugelassen wird (1
) oder nicht (0
). Nachfolgend eine Beispielimplementierung:
safe function int CheckMobileWhiteList(string $sDeviceToken, string $sAppId, string $sDeviceId)
{
var string $sContent;
var string $sPath;
$sPath = "c:\\Temp\\pm_Registration.txt";
$sContent = ReadTextFile($sPath);
return StrFind($sContent, ";" + $sAppId + ";", 0) != -1;
}
Begleitend zu dieser gerätespezifischen Autorisierung ist ein Registrierungsprozess sinnvoll, der die App-ID der neuen Geräte aufnimmt und sie für die spätere Kontrolle vermerkt. Am einfachsten ist dies durch das Einschalten von push-Benachrichtigungen zu realisieren, da nun die App-ID bei der Synchronisationsanfrage übermittelt und über die Klassenformel registerPushNotifications
abgelegt werden kann:
safe function string RegisterPushNotification(string $deviceToken, string $contractName, string $contractURL, string $deviceOS, string $deviceOSVersion, string $client, string $lang, string $appID, string $deviceId, string $deviceLocale, string $deviceModel, string $deviceName)
{
var string $sText;
var string $sPath;
$sPath = "c:\\temp\\pm_Registration.txt";
$sText = $deviceId + ";" + $appID + ";" + $deviceOS + ";" + $deviceOSVersion + ";" + $deviceToken + ";" + GetUserId() + "\r\n";
WriteTextFile($sText,$sPath, 1 + 16);
return "ok";
}
Schlägt die Autorisierung durch das White-Listing fehl, wird folgende Fehlermeldung ausgegeben: