コード例 #1
0
        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);
            }
        }
コード例 #2
0
        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);
            }
        }
コード例 #3
0
        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();
        }
コード例 #4
0
        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);
                }
            }
        }
コード例 #5
0
        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);
                }
            }
        }
コード例 #6
0
        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);
                }
            }
        }
コード例 #7
0
        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);
            }
        }