În prezent, lucrez la o aplicație de proiect secundară mică care utilizează un monitor de fișiere pentru a monitoriza folderele specificate pentru modificări. Una dintre cele mai frecvente utilizări ale aplicației ar fi o partajare de rețea, cum ar fi o partajare samba. Un exemplu de una dintre aceste utilizări ar fi:
- Un client Windows
- Un client MacOS
- Un client Linux
- Un server Ubuntu care rulează serviciul Samba
Când clientul Windows adaugă un fișier la partajare, numai clientul MacOS și clientul Linux sunt notificați. Cu toate acestea, observatorii de fișiere de pe fiecare client (inclusiv clientul Windows) vor detecta noul fișier. Pentru a putea împiedica clientul Windows („creatorul” fișierului) să primească notificarea, aș avea nevoie de aplicație pentru a putea ști cine a creat fișierul.
// un pseudocod ciudat
func onFileCreated(e) {
dacă (e.File.Creator == GetHostName())
întoarcere;
SendToastNotification(e.File);
}
În prezent, fiecare client este conectat la același utilizator Samba, iar atributul Owner afișează utilizatorul Samba (cum ar trebui). Nu înțeleg cu adevărat funcționarea interioară a Samba, dar iată câteva abordări la care mă gândesc:
- Fiecare client are propriul utilizator pe serverul Samba (ar fi plictisitor să adăugați mai mulți clienți în viitor)
- Fiecare client este responsabil să știe dacă tocmai a scris un fișier în partajarea Samba (ar avea nevoie de privilegii de nivel înalt pentru a accesa gestionatorii de fișiere)
- Când un fișier este încărcat în partajare, serverul Samba poate să adauge într-un fel un atribut de fișier personalizat arbitrar care indică numele de gazdă al oricărui client a creat fișierul (cel mai bun scenariu dacă este posibil)
Poate că există opțiuni mai bune disponibile. Multe mulțumiri in avans.