public List <string> TrenutniSadrzajFajlSistema(string username, string kolab) { string uloga = Autorizacija(username); if (uloga == "Korisnik") { if (kolab != "NULL") { if (!EntitetiBaza.ContainsKey(kolab)) { MyException e = new MyException { Greska = "Ne postoji korisnik" + kolab + "!" }; throw new FaultException <MyException>(e); } if (((Korisnik)EntitetiBaza[username]).StraniKolaboratori.Contains(kolab)) { if (((Korisnik)EntitetiBaza[kolab]).MojiKolaboratori.Contains(username)) { ActionLogs("Korisnik " + username + " je zatrazio pregled fajl sistema korisnika " + kolab); return(BazaFajlSistema[kolab]); } else { MyException e = new MyException { Greska = "Vi niste kolaborator korisnika " + kolab }; throw new FaultException <MyException>(e); } } else { MyException e = new MyException { Greska = "Vi niste kolaborator korisnika " + kolab }; throw new FaultException <MyException>(e); } } ActionLogs("Korisnik " + username + " je zatrazio pregled svog fajl sistema"); return(BazaFajlSistema[username]); } else { MyException e = new MyException { Greska = "Niste autorizovani kao korisnik!" }; throw new FaultException <MyException>(e); } }
public void ObrisiFolder(string username, string usernameKorisnik, string foldername) { IPrincipal principal = Thread.CurrentPrincipal; if (!principal.IsInRole("Delete")) { MyException ex = new MyException { Greska = "Niste autorizovani kao admin!" }; throw new FaultException <MyException>(ex); } string uloga = Autorizacija(username); if (uloga == "Admin") { if (!EntitetiBaza.ContainsKey(usernameKorisnik)) { MyException e = new MyException { Greska = "Ne postoji korisnik " + usernameKorisnik + "!" }; throw new FaultException <MyException>(e); } string pathString = System.IO.Path.Combine(usernameKorisnik, foldername); if (pathString.Contains("\"") || pathString.Contains("|") || pathString.Contains("/") || pathString.Contains(">") || pathString.Contains("<") || pathString.Contains("*") || pathString.Contains("?") || pathString.Contains(":")) { MyException e = new MyException { Greska = "Format nije dobar!" }; throw new FaultException <MyException>(e); } if (System.IO.Directory.Exists(pathString)) { System.IO.Directory.Delete(pathString); BazaFajlSistema[usernameKorisnik].Remove(pathString); ActionLogs("Admin " + username + " " + "je obrisao folder " + foldername + " korisnika " + usernameKorisnik); } } else { MyException e = new MyException { Greska = "Niste autorizovani kao admin!" }; throw new FaultException <MyException>(e); } }
static void Main(string[] args) { Admin admin = new Admin("Aleksa", "1111"); Nadzor nadzor = new Nadzor("Nikola", "2222"); Korisnik korisnik1 = new Korisnik("Itan", "3333"); Korisnik korisnik2 = new Korisnik("Igor", "4444"); Korisnik korisnik3 = new Korisnik("Komsa", "5555"); EntitetiBaza.Add(admin.Username, admin); EntitetiBaza.Add(nadzor.Username, nadzor); EntitetiBaza.Add(korisnik1.Username, korisnik1); EntitetiBaza.Add(korisnik2.Username, korisnik2); EntitetiBaza.Add(korisnik3.Username, korisnik3); BazaFajlSistema.Add(korisnik1.Username, new List <string>()); BazaFajlSistema.Add(korisnik2.Username, new List <string>()); BazaFajlSistema.Add(korisnik3.Username, new List <string>()); BazaPoruka.Add(korisnik1.Username, new List <string>()); BazaPoruka.Add(korisnik2.Username, new List <string>()); BazaPoruka.Add(korisnik3.Username, new List <string>()); BazaPoruka.Add(admin.Username, new List <string>()); Parametri.Add("MaxBrojFajlova", 0); Parametri.Add("Vreme", 0); if (System.IO.File.Exists("Parametri.txt")) { string[] lines = System.IO.File.ReadAllLines("Parametri.txt"); Parametri["MaxBrojFajlova"] = Int32.Parse(lines[0]); Parametri["Vreme"] = Int32.Parse(lines[1]); } List <IAuthorizationPolicy> policies = new List <IAuthorizationPolicy>(); policies.Add(new MyAuthorizationPolicy()); #region Korisnik NetTcpBinding bindingKorisnik = new NetTcpBinding(); bindingKorisnik.Security.Mode = SecurityMode.Transport; bindingKorisnik.Security.Transport.ProtectionLevel = System.Net.Security.ProtectionLevel.EncryptAndSign; bindingKorisnik.Security.Transport.ClientCredentialType = TcpClientCredentialType.Windows; string adresaKorisnik = "net.tcp://localhost:6015/IServiceKorisnik"; ServiceHost hostKorisnik = new ServiceHost(typeof(ServiceKorisnik)); hostKorisnik.AddServiceEndpoint(typeof(IServiceKorisnik), bindingKorisnik, new Uri(adresaKorisnik)); hostKorisnik.Authorization.ExternalAuthorizationPolicies = policies.AsReadOnly(); hostKorisnik.Authorization.PrincipalPermissionMode = System.ServiceModel.Description.PrincipalPermissionMode.Custom; hostKorisnik.Open(); Console.WriteLine("Host je otvoren na adresi : {0} - ServiceKorisnik", adresaKorisnik); #endregion #region Nadzor NetTcpBinding bindingNadzor = new NetTcpBinding(); bindingNadzor.Security.Mode = SecurityMode.Transport; bindingNadzor.Security.Transport.ProtectionLevel = System.Net.Security.ProtectionLevel.EncryptAndSign; bindingNadzor.Security.Transport.ClientCredentialType = TcpClientCredentialType.Windows; string adresaNadzor = "net.tcp://localhost:6016/IServiceNadzor"; ServiceHost hostNadzor = new ServiceHost(typeof(ServiceNadzor)); hostNadzor.AddServiceEndpoint(typeof(IServiceNadzor), bindingNadzor, new Uri(adresaNadzor)); hostNadzor.Authorization.ExternalAuthorizationPolicies = policies.AsReadOnly(); hostNadzor.Authorization.PrincipalPermissionMode = System.ServiceModel.Description.PrincipalPermissionMode.Custom; hostNadzor.Open(); Console.WriteLine("Host je otvoren na adresi : {0} - ServiceNadzor", adresaNadzor); #endregion #region Admin NetTcpBinding bindingAdmin = new NetTcpBinding(); bindingAdmin.Security.Mode = SecurityMode.Transport; bindingAdmin.Security.Transport.ProtectionLevel = System.Net.Security.ProtectionLevel.EncryptAndSign; bindingAdmin.Security.Transport.ClientCredentialType = TcpClientCredentialType.Windows; string adresaAdmin = "net.tcp://localhost:6017/IServiceAdmin"; ServiceHost hostAdmin = new ServiceHost(typeof(ServiceAdmin)); hostAdmin.AddServiceEndpoint(typeof(IServiceAdmin), bindingAdmin, new Uri(adresaAdmin)); hostAdmin.Authorization.ExternalAuthorizationPolicies = policies.AsReadOnly(); hostAdmin.Authorization.PrincipalPermissionMode = System.ServiceModel.Description.PrincipalPermissionMode.Custom; hostAdmin.Open(); Console.WriteLine("Host je otvoren na adresi : {0} - ServiceAdmin", adresaAdmin); #endregion #region Konekcija NetTcpBinding bindingKonekcija = new NetTcpBinding(); bindingKonekcija.Security.Mode = SecurityMode.Transport; bindingKonekcija.Security.Transport.ProtectionLevel = System.Net.Security.ProtectionLevel.EncryptAndSign; bindingKonekcija.Security.Transport.ClientCredentialType = TcpClientCredentialType.Windows; string adresaKonekcija = "net.tcp://localhost:6018/IServiceKonekcija"; ServiceHost hostKonekcija = new ServiceHost(typeof(ServiceKonekcija)); hostKonekcija.AddServiceEndpoint(typeof(IServiceKonekcija), bindingKonekcija, new Uri(adresaKonekcija)); hostKonekcija.Authorization.ExternalAuthorizationPolicies = policies.AsReadOnly(); hostKonekcija.Authorization.PrincipalPermissionMode = System.ServiceModel.Description.PrincipalPermissionMode.Custom; hostKonekcija.Open(); Console.WriteLine("Host je otvoren na adresi : {0} - ServiceKonekcija", adresaKonekcija); #endregion Console.ReadLine(); hostKorisnik.Close(); hostNadzor.Close(); hostAdmin.Close(); hostKonekcija.Close(); }
public void ObrisiTxt(string username, string filename, string kolab) { using ((Thread.CurrentPrincipal.Identity as WindowsIdentity).Impersonate()) { try { IPrincipal principal = Thread.CurrentPrincipal;// as MyPrincipal; if (!principal.IsInRole("Delete")) { MyException ex = new MyException { Greska = "Niste autorizovani kao Korisnik!" }; throw new FaultException <MyException>(ex); } string uloga = Autorizacija(username); if (uloga == "Korisnik") { if (kolab != "NULL") { if (!EntitetiBaza.ContainsKey(kolab)) { MyException e = new MyException { Greska = "Ne postoji korisnik" + kolab + "!" }; throw new FaultException <MyException>(e); } if (((Korisnik)EntitetiBaza[username]).StraniKolaboratori.Contains(kolab)) { if (((Korisnik)EntitetiBaza[kolab]).MojiKolaboratori.Contains(username)) { if (!filename.Contains(".txt")) { filename += ".txt"; } string pathStringKolab = System.IO.Path.Combine(kolab, filename); if (pathStringKolab.Contains("\"") || pathStringKolab.Contains("|") || pathStringKolab.Contains("/") || pathStringKolab.Contains(">") || pathStringKolab.Contains("<") || pathStringKolab.Contains("*") || pathStringKolab.Contains("?") || pathStringKolab.Contains(":")) { MyException e = new MyException { Greska = "Format nije dobar!" }; throw new FaultException <MyException>(e); } if (System.IO.File.Exists(pathStringKolab)) { System.IO.File.Delete(pathStringKolab); BazaFajlSistema[kolab].Remove(pathStringKolab); ActionLogs("Korisnik " + username + " " + "je obrisao txt " + filename + " korisnika kolaboratora " + kolab); } return; } else { MyException e = new MyException { Greska = "Vi niste kolaborator korisnika " + kolab }; throw new FaultException <MyException>(e); } } else { MyException e = new MyException { Greska = "Vi niste kolaborator korisnika " + kolab }; throw new FaultException <MyException>(e); } } if (!filename.Contains(".txt")) { filename += ".txt"; } string pathString = System.IO.Path.Combine(username, filename); if (pathString.Contains("\"") || pathString.Contains("|") || pathString.Contains("/") || pathString.Contains(">") || pathString.Contains("<") || pathString.Contains("*") || pathString.Contains("?") || pathString.Contains(":")) { MyException e = new MyException { Greska = "Format nije dobar!" }; throw new FaultException <MyException>(e); } if (System.IO.File.Exists(pathString)) { System.IO.File.Delete(pathString); BazaFajlSistema[username].Remove(pathString); ActionLogs("Korisnik " + username + " " + "je obrisao txt " + filename); } } else { MyException e = new MyException { Greska = "Niste autorizovani kao Korisnik!" }; throw new FaultException <MyException>(e); } } catch (UnauthorizedAccessException) { MyException ex = new MyException { Greska = "Niste autorizovani kao Korisnik!" }; throw new FaultException <MyException>(ex); } } }
public void ModifikujFolder(string username, string foldername, string newFoldername, string kolab) { using ((Thread.CurrentPrincipal.Identity as WindowsIdentity).Impersonate()) { try { IPrincipal principal = Thread.CurrentPrincipal;// as MyPrincipal; if (!principal.IsInRole("Modify")) { MyException ex = new MyException { Greska = "Niste autorizovani kao Korisnik!" }; throw new FaultException <MyException>(ex); } string uloga = Autorizacija(username); if (uloga == "Korisnik") { if (kolab != "NULL") { if (!EntitetiBaza.ContainsKey(kolab)) { MyException e = new MyException { Greska = "Ne postoji korisnik" + kolab + "!" }; throw new FaultException <MyException>(e); } if (((Korisnik)EntitetiBaza[username]).StraniKolaboratori.Contains(kolab)) { if (((Korisnik)EntitetiBaza[kolab]).MojiKolaboratori.Contains(username)) { string pathStringKolab = System.IO.Path.Combine(kolab, foldername); string newPathStringKolab = System.IO.Path.Combine(kolab, newFoldername); if (newPathStringKolab.Contains("\"") || newPathStringKolab.Contains("|") || newPathStringKolab.Contains("/") || newPathStringKolab.Contains(">") || newPathStringKolab.Contains("<") || newPathStringKolab.Contains("*") || newPathStringKolab.Contains("?") || newPathStringKolab.Contains(":")) { MyException e = new MyException { Greska = "Format nije dobar!" }; throw new FaultException <MyException>(e); } if (System.IO.Directory.Exists(pathStringKolab)) { System.IO.Directory.Move(pathStringKolab, newPathStringKolab); int index = BazaFajlSistema[kolab].IndexOf(pathStringKolab); BazaFajlSistema[kolab][index] = newPathStringKolab; ActionLogs("Korisnik " + username + " " + "je preimenovao folder " + foldername + " korisnika kolaboratora" + kolab + " u " + newFoldername); } return; } else { MyException e = new MyException { Greska = "Vi niste kolaborator korisnika " + kolab }; throw new FaultException <MyException>(e); } } else { MyException e = new MyException { Greska = "Vi niste kolaborator korisnika " + kolab }; throw new FaultException <MyException>(e); } } string pathString = System.IO.Path.Combine(username, foldername); string newPathString = System.IO.Path.Combine(username, newFoldername); if (newPathString.Contains("\"") || newPathString.Contains("|") || newPathString.Contains("/") || newPathString.Contains(">") || newPathString.Contains("<") || newPathString.Contains("*") || newPathString.Contains("?") || newPathString.Contains(":")) { MyException e = new MyException { Greska = "Format nije dobar!" }; throw new FaultException <MyException>(e); } if (System.IO.Directory.Exists(pathString)) { System.IO.Directory.Move(pathString, newPathString); int index = BazaFajlSistema[username].IndexOf(pathString); BazaFajlSistema[username][index] = newPathString; ActionLogs("Korisnik " + username + " " + "je preimenovao folder " + foldername + " u " + newFoldername); } } else { MyException e = new MyException { Greska = "Niste autorizovani kao Korisnik!" }; throw new FaultException <MyException>(e); } } catch (UnauthorizedAccessException) { MyException ex = new MyException { Greska = "Niste autorizovani kao Korisnik!" }; throw new FaultException <MyException>(ex); } } }
public void ModifikujTxt(string username, string filename, string noviSadrzaj, string kolab) { using ((Thread.CurrentPrincipal.Identity as WindowsIdentity).Impersonate()) { try { IPrincipal principal = Thread.CurrentPrincipal;// as MyPrincipal; if (!principal.IsInRole("Modify")) { MyException ex = new MyException { Greska = "Niste autorizovani kao Korisnik!" }; throw new FaultException <MyException>(ex); } string uloga = Autorizacija(username); if (uloga == "Korisnik") { if (kolab != "NULL") { if (!EntitetiBaza.ContainsKey(kolab)) { MyException e = new MyException { Greska = "Ne postoji korisnik" + kolab + "!" }; throw new FaultException <MyException>(e); } if (((Korisnik)EntitetiBaza[username]).StraniKolaboratori.Contains(kolab)) { if (((Korisnik)EntitetiBaza[kolab]).MojiKolaboratori.Contains(username)) { if (!filename.Contains(".txt")) { filename += ".txt"; } string pathStringKolab = System.IO.Path.Combine(kolab, filename); if (pathStringKolab.Contains("\"") || pathStringKolab.Contains("|") || pathStringKolab.Contains("/") || pathStringKolab.Contains(">") || pathStringKolab.Contains("<") || pathStringKolab.Contains("*") || pathStringKolab.Contains("?") || pathStringKolab.Contains(":")) { MyException e = new MyException { Greska = "Format nije dobar!" }; throw new FaultException <MyException>(e); } if (System.IO.File.Exists(pathStringKolab)) { using (System.IO.StreamWriter file = new System.IO.StreamWriter(pathStringKolab, true)) { file.WriteLine(noviSadrzaj); ActionLogs("Korisnik " + username + " " + "je dodao novi sadrzaj: |" + noviSadrzaj + "| u " + filename + " koji pripada korisniku kolaboratoru " + kolab); } } return; } else { MyException e = new MyException { Greska = "Vi niste kolaborator korisnika " + kolab }; throw new FaultException <MyException>(e); } } else { MyException e = new MyException { Greska = "Vi niste kolaborator korisnika " + kolab }; throw new FaultException <MyException>(e); } } if (!filename.Contains(".txt")) { filename += ".txt"; } string pathString = System.IO.Path.Combine(username, filename); if (pathString.Contains("\"") || pathString.Contains("|") || pathString.Contains("/") || pathString.Contains(">") || pathString.Contains("<") || pathString.Contains("*") || pathString.Contains("?") || pathString.Contains(":")) { MyException e = new MyException { Greska = "Format nije dobar!" }; throw new FaultException <MyException>(e); } if (System.IO.File.Exists(pathString)) { using (System.IO.StreamWriter file = new System.IO.StreamWriter(pathString, true)) { file.WriteLine(noviSadrzaj); ActionLogs("Korisnik " + username + " " + "je dodao novi sadrzaj: |" + noviSadrzaj + "| u " + filename); } } } else { MyException e = new MyException { Greska = "Niste autorizovani kao Korisnik!" }; throw new FaultException <MyException>(e); } } catch (UnauthorizedAccessException) { MyException ex = new MyException { Greska = "Niste autorizovani kao Korisnik!" }; throw new FaultException <MyException>(ex); } } }
public void ModifikujTxt(string username, string usernameKorisnik, string filename, string noviSadrzaj) { IPrincipal principal = Thread.CurrentPrincipal; if (!principal.IsInRole("Modify")) { MyException ex = new MyException { Greska = "Niste autorizovani kao admin!" }; throw new FaultException <MyException>(ex); } string uloga = Autorizacija(username); if (uloga == "Admin") { if (!EntitetiBaza.ContainsKey(usernameKorisnik)) { MyException e = new MyException { Greska = "Ne postoji korisnik " + usernameKorisnik + "!" }; throw new FaultException <MyException>(e); } if (!filename.Contains(".txt")) { filename += ".txt"; } string pathString = System.IO.Path.Combine(usernameKorisnik, filename); if (pathString.Contains("\"") || pathString.Contains("|") || pathString.Contains("/") || pathString.Contains(">") || pathString.Contains("<") || pathString.Contains("*") || pathString.Contains("?") || pathString.Contains(":")) { MyException e = new MyException { Greska = "Format nije dobar!" }; throw new FaultException <MyException>(e); } if (System.IO.File.Exists(pathString)) { using (System.IO.StreamWriter file = new System.IO.StreamWriter(pathString, true)) { file.WriteLine(noviSadrzaj); ActionLogs("Admin " + username + " " + "je dodao novi sadrzaj: |" + noviSadrzaj + "| u " + filename + " koji pripada korisniku " + usernameKorisnik); } } } else { MyException e = new MyException { Greska = "Niste autorizovani kao admin!" }; throw new FaultException <MyException>(e); } }