xime: Rezygnacja z profiles.xml

tech • 400 słów • 2 minuty czytania

Ta notatka jest częścią serii xime. Zapoznaj się z pozostałymi wpisami.

Do tej pory w xime, jak też w kilku innych komunikatorach, profile opierały się na liście profili zapisanej w jednym pliku oraz strukturze katalogów, gdzie dla każdego profilu istniał katalog, w którym przechowywano wszelkie dane.

Przechowywanie podstawowych danych o profilu w postaci listy w jednym miejscu miało swoje zalety. Taką zaletą była niewątpliwie łatwość i szybkość przetwarzania informacji. Nie było skakania po katalogach i parsowania wielkich plików konfiguracyjnych każdego profilu w celu zbudowania prostej listy dostępnych profili. Zakładałem, że dane o profilu będą trzymane w jednym pliku XML wraz z ustawieniami danego profilu.

Rozwiązanie to miało także swoje wady. Dbanie o synchronizację między listą profili zapisanej w pliku profiles.xml a strukturą katalogów. Co zrobić, jeśli użytkownik skopiuje jakiś profil do innego katalogu, zmieni jego nazwę lub odzyska z jakiejś starej kopii zapasowej dane? Co zrobić, jeśli użytkownik zmieni nazwę profilu w ustawieniach, a jakiś inny katalog będzie posiadał już taką samą nazwę?

Właśnie przez takie problemy, które wymagałyby prawdopodobnie trochę skomplikowanego rozwiązania i zawiłej implementacji menadżera profili, postanowiłem zrezygnować z takiej listy na rzecz samej struktury katalogów.

W takim rozwiązaniu każdy katalog znajdujący się w lokalizacji uznanej za miejsce przechowywania profili traktowany jest jako potencjalny profil. Jeśli katalog ten zawiera odpowiedni plik - profile.xml - z podstawowymi danymi profilu (nazwa, hasło, data utworzenia, ostatniego logowania, etc.) to katalog uznawany jest za poprawny profil. W przeciwnym wypadku, jeśli plik nie zostanie znaleziony lub posiada inną strukturę to katalog jest uznawany jako uszkodzony profil i pomijany przez program.

Ten pomysł rozwiązuje większość problemów listy profili. Obsługa profili ograniczy się do operacji na strukturze katalogów, tak samo jak migracja, czy jakiekolwiek przenoszenia danych. Ręczne zmiany w strukturze katalogów profili nie wpłyną negatywnie na działanie aplikacji.

Oczywiście ręczna zmiana nazwy katalogu, spowoduje uszkodzenie profilu, wystąpi wtedy konflikt nazw - katalogu z danymi zapisanymi w pliku profilu. Będzie to wykorzystywane między innymi w zabezpieczeniach uniemożliwiających kopiowanie niektórych danych między profilami, np. w celu ich odczytania przez niepowołane osoby.

Aktualnie plik profile.xml, jak wskazuje rozszerzenie jest prostym plikiem XML, a wszelkie dane w nim zapisane są w postaci jawnego tekstu. W przyszłości newralgiczne dane będą musiały być odpowiednio zabezpieczone, choćby przez szyfrowanie całego pliku. Kwestia rozwiązania i wyboru sposobu, czy metody wymaga głębszego przemyślenia, dlatego odkładam to na późniejszy termin.

Zmiana sposobu przechowywania informacji o dostępnych profilach przeszła bezboleśnie. Testy wykazują, że wszystko działa poprawnie. Nic nie stoi na przeszkodzie, aby wrócić do dalszej pracy ;)

Komentarze (0)

Dodaj komentarz

/dozwolony markdown/

/nie zostanie opublikowany/