Što se tiče plaćanja iz linuxa, problem je u tome što njihov java applet radi sledeće:
Poziva funkciju
java.io.File.listRoots(), koja vraća sve dostupne putanje root filesistema.
Na windows-u ova funkcija vraća java.io.File objekte za sve drajvove (C:\, D:\, E:\ ....), a u Linux/OSX vraća samo jedan java.io.File objekat koji pokazuje na /.
Nakon ovoga, njihov applet za svaki File objekat poziva:
javax.swing.filechooser.FileSystemView getSystemDisplayName(), koji u windows-u za File objekte koji pokazuju na root drajva (npr C:\) vraća npr "Windows (C:)", dok za njihov CD vraća string "DIGITRUST (D:)".
Na OSX ili Linux, ova funckija vraća samo ime foldera (i to za / vraća samo "/").
Naravno, kako imamo dostupan source JRE-a, možemo promeniti fajl
File.java, i promeniti funkciju listRoots tako da npr glasi:
Code:
public static File[] listRoots() {
File[] originalRoots=fs.listRoots();
File[] modifiedRoots=new File[originalRoots.length+1];
for(int i=0;i<originalRoots.length;i++)
modifiedRoots[i]=originalRoots[i];
try {
modifiedRoots[originalRoots.length]=new File("/intesa/DIGITRUST");
} catch (Exception e) {
return originalRoots;
}
return modifiedRoots;
}
Da iskompajliramo
File.java u File.class, i da ga ubacimo u
rt.jar
I da napravimo symlink:
Citat:
mkdir /intesa;
ln -sf /media/DIGITRUST /intesa/DIGITRUST;
Međutim, ovo nije dovoljno, jer njihov softver pravi još jednu grešku:
Fajl objekat koji smo vratili ne sadrži / na kraju tako da njihov applet fajl sa diska koji se zove Digitrust.pkc sa ovako patchovanom funkcijom traži fajl na disku na lokaciji:
/intesa/DIGITRUSTDigitrust.pkc, pa je potrebno:
Citat:
ln -sf /media/DIGITRUST/Digitrust.pkc /intesa/DIGITRUSTDigitrust.pkc
Nakon svega ovoga, ja sam uspeo da nateram njihov applet da prikaže prozor gde pita za lozinku, kao i da bez problema prođe plaćanje.
Naravno, njihov applet bi bilo dovoljno da promene, da ako listRoots vrati samo /, da potraže folder DIGITRUST u /media ili /Volumes, što je relativno trivijalna izmena, ali...
Sad ja znam zašto sam vam ovo ispričao, ovo će sigurno nekome koristiti....