예제 #1
0
        public void upisiRacun(Dictionary <string, Racun> recnikRacuna)
        {
            lock (locker)
            {
                string putanja = Environment.CurrentDirectory + "\\racuni.xml";

                List <Racun> listaRacuna = new List <Racun>();
                //prepisati iz recnika u ovu listu
                foreach (Racun r in recnikRacuna.Values)
                {
                    Racun sifrovan = new Racun();
                    sifrovan.BrojRacuna   = BitConverter.ToString(Sifrovanje.sifrujCBC(r.BrojRacuna, Konstante.ENCRYPTION_KEY));
                    sifrovan.Operater     = BitConverter.ToString(Sifrovanje.sifrujCBC(r.Operater, Konstante.ENCRYPTION_KEY));
                    sifrovan.StanjeRacuna = BitConverter.ToString(Sifrovanje.sifrujCBC(r.StanjeRacuna, Konstante.ENCRYPTION_KEY));
                    sifrovan.TipRacuna    = BitConverter.ToString(Sifrovanje.sifrujCBC(r.TipRacuna, Konstante.ENCRYPTION_KEY));
                    sifrovan.Username     = BitConverter.ToString(Sifrovanje.sifrujCBC(r.Username, Konstante.ENCRYPTION_KEY));

                    listaRacuna.Add(sifrovan);
                }

                XmlSerializer ser = new XmlSerializer(typeof(List <Racun>));

                StreamWriter sw = new StreamWriter(putanja);
                ser.Serialize(sw, listaRacuna);

                sw.Close();
            }
        }
예제 #2
0
        public User GetOperator(string operatorName)
        {
            string desifrovanName   = Sifrovanje.desifrujCBC(Sifrovanje.spremiZaDesifrovanje(operatorName), Konstante.ENCRYPTION_KEY);
            User   operaterZaSlanje = Sifrovanje.sifrujUsera(BankDB.BazaAktivnihOperatera[desifrovanName]);

            return(operaterZaSlanje);
        }
예제 #3
0
        public string GetOperatorsClients(string operatorUsername)
        {
            string desifrovanOperatorUsername = Sifrovanje.desifrujCBC(Sifrovanje.spremiZaDesifrovanje(operatorUsername), Konstante.ENCRYPTION_KEY);
            // TODO treba uzeti sve usere i njihove racune koji pripadaju operatoru ciji je username operatorUsername dodati ih u listu UserIRacun klase, to serijalizovati i vratiti
            List <UserIRacun> operatorskiKlijenti           = new List <UserIRacun>();
            List <Racun>      racuniRegistrovaniNaOperatora = new List <Racun>();
            List <User>       korisniciRacuna = new List <User>();

            List <Racun> sviRacuni    = BankDB.BazaRacuna.Values.ToList();
            List <User>  sviKorisnici = BankDB.BazaKorisnika.Values.ToList();

            racuniRegistrovaniNaOperatora = sviRacuni.Where(r => r.Operater == desifrovanOperatorUsername).ToList();
            // prodji kroz sve racune i vidi da li su vlasnici tih racuna trenutno online
            foreach (var racun in racuniRegistrovaniNaOperatora)
            {
                // Ako je vlasnik tog racuna trenutno aktivan
                if (BankDB.BazaAktivnihKorisnika.ContainsKey(racun.Username))
                {
                    // dodaj ga u listu operatorskihKlijenata koje trebas da vratis
                    User korisnik = BankDB.BazaAktivnihKorisnika[racun.Username];
                    operatorskiKlijenti.Add(new UserIRacun(korisnik, racun));
                }
            }
            string serialized = ListSerializer.SerializeList(operatorskiKlijenti);

            return(serialized);
        }
예제 #4
0
        private static void IzmeniRacun(IGatewayConnection gatewayProxy)
        {
            Console.WriteLine("> Izmena racuna: ");
            Console.WriteLine("> Broj racuna koji zelite da izmenite: ");
            string brojRacuna = Console.ReadLine();

            Console.WriteLine("> Novo stanje racuna: ");
            string stanje = Console.ReadLine();

            Racun r = new Racun();

            r.BrojRacuna   = brojRacuna;
            r.StanjeRacuna = stanje;

            Racun sifrovan = Sifrovanje.sifrujRacun(r);

            if (gatewayProxy.ClientToBankIzmeniRacun(sifrovan))
            {
                Console.WriteLine("Racun uspesno izmenjen");
            }
            else
            {
                Console.WriteLine("Racun neuspesno izmenjen, proverite da li postoji taj broj racuna");
            }
        }
예제 #5
0
        //kod klijenta sam stigao do Obrisi Racun...
        public bool ObrisiRacun(string brRacuna)
        {
            string desifrovanRacun = Sifrovanje.desifrujCBC(Sifrovanje.spremiZaDesifrovanje(brRacuna), Konstante.ENCRYPTION_KEY);

            if (!BankDB.BazaRacuna.ContainsKey(desifrovanRacun))
            {
                return(false);
            }
            Racun fullRacun = BankDB.BazaRacuna[desifrovanRacun];

            // Obavesti odgovarajuceg operatera kako bi obrisao klijentski racun
            //Client<IGatewayConnection> cli = new Client<IGatewayConnection>("mbgateway", "localhost", "63000", "GatewayConnection");
            //IGatewayConnection factory = cli.GetProxy();
            //if (fullRacun.TipRacuna == "fizicki" && fullRacun.Operater != "null")
            //{

            //    //string sifrovanaIp = BitConverter.ToString(Sifrovanje.sifrujCBC(BankDB.BazaKorisnika[desifrovan.Operater].IpAddress, Konstante.ENCRYPTION_KEY));
            //    //string sifrovanPort = BitConverter.ToString(Sifrovanje.sifrujCBC(BankDB.BazaKorisnika[desifrovan.Operater].Port, Konstante.ENCRYPTION_KEY));

            //    factory.BankToOperatorNotifyRacunDeleted(fullRacun, BankDB.BazaKorisnika[fullRacun.Operater].IpAddress, BankDB.BazaKorisnika[fullRacun.Operater].Port);
            //}

            BankDB.BazaRacuna.Remove(desifrovanRacun);
            upisiRacun(BankDB.BazaRacuna);

            return(true);
        }
예제 #6
0
        public Racun KreirajRacun(Racun r)
        {
            string usernameDesifrovan   = Sifrovanje.desifrujCBC(Sifrovanje.spremiZaDesifrovanje(r.Username), Konstante.ENCRYPTION_KEY);
            string brojRacunaDesifrovan = Sifrovanje.desifrujCBC(Sifrovanje.spremiZaDesifrovanje(r.BrojRacuna), Konstante.ENCRYPTION_KEY);
            string operatorDesifrovan   = Sifrovanje.desifrujCBC(Sifrovanje.spremiZaDesifrovanje(r.Operater), Konstante.ENCRYPTION_KEY);
            string tipRacunaDesifrovan  = Sifrovanje.desifrujCBC(Sifrovanje.spremiZaDesifrovanje(r.TipRacuna), Konstante.ENCRYPTION_KEY);

            if (BankDB.BazaRacuna.ContainsKey(brojRacunaDesifrovan))
            {
                return(null); // vec postoji
            }
            if (!BankDB.BazaKorisnika.ContainsKey(usernameDesifrovan))
            {
                return(null); // ne postoji korisnik koji se stavlja kao vlasnik racuna
            }
            if (tipRacunaDesifrovan == "fizicki" && !BankDB.BazaKorisnika.ContainsKey(operatorDesifrovan))
            {
                return(null);                    // ne postoji operater na kog zeli da se doda
            }
            if (tipRacunaDesifrovan == "pravni") // Ako je ovo zapravo racun od operatera
            {
                // Provera da li jedan operater ima vise racuna, ako vec postoji jedan racun za tog operatera vrati false
                foreach (var racun in BankDB.BazaRacuna)
                {
                    if (racun.Value.TipRacuna == "pravni" && racun.Value.Username == usernameDesifrovan)
                    {
                        // Prodji kroz sve operaterske racuna i proveri da li vec postoji racun koji je napravljen za tipa telenor
                        return(null);
                    }
                }
            }
            Racun desifrovan = new Racun();

            desifrovan.BrojRacuna   = brojRacunaDesifrovan;
            desifrovan.Operater     = operatorDesifrovan;
            desifrovan.StanjeRacuna = Sifrovanje.desifrujCBC(Sifrovanje.spremiZaDesifrovanje(r.StanjeRacuna), Konstante.ENCRYPTION_KEY);
            desifrovan.TipRacuna    = tipRacunaDesifrovan;
            desifrovan.Username     = usernameDesifrovan;


            BankDB.BazaRacuna.Add(desifrovan.BrojRacuna, desifrovan);
            upisiRacun(BankDB.BazaRacuna);

            // Obavesti odgovarajuceg operatera kako bi dodao novi klijentski racun
            //Client<IGatewayConnection> cli = new Client<IGatewayConnection>("mbgateway", "localhost", "63000", "GatewayConnection");
            //IGatewayConnection factory = cli.GetProxy();
            //if (desifrovan.TipRacuna == "fizicki" && desifrovan.Operater != "null")
            //{

            //    //string sifrovanaIp = BitConverter.ToString(Sifrovanje.sifrujCBC(BankDB.BazaKorisnika[desifrovan.Operater].IpAddress, Konstante.ENCRYPTION_KEY));
            //    //string sifrovanPort = BitConverter.ToString(Sifrovanje.sifrujCBC(BankDB.BazaKorisnika[desifrovan.Operater].Port, Konstante.ENCRYPTION_KEY));

            //    factory.BankToOperatorNotifyRacunAdded(r, BankDB.BazaKorisnika[desifrovan.Operater].IpAddress, BankDB.BazaKorisnika[desifrovan.Operater].Port);
            //}

            return(desifrovan);
        }
예제 #7
0
        public void upisiKorisnika(Dictionary <string, User> recnikKorisnika, int mode)
        {
            if (mode == 1)
            {
                lock (locker)
                {
                    string      putanja        = Environment.CurrentDirectory + "\\korisnici.xml";
                    List <User> listaKorisnika = new List <User>();
                    //prepisati iz recnika u ovu listu
                    foreach (User u in recnikKorisnika.Values)
                    {
                        User sifrovan = new User();
                        sifrovan.Username = BitConverter.ToString(Sifrovanje.sifrujCBC(u.Username, Konstante.ENCRYPTION_KEY));
                        sifrovan.Password = BitConverter.ToString(Sifrovanje.sifrujCBC(u.Password, Konstante.ENCRYPTION_KEY));
                        sifrovan.Uloga    = BitConverter.ToString(Sifrovanje.sifrujCBC(u.Uloga, Konstante.ENCRYPTION_KEY));

                        listaKorisnika.Add(sifrovan);
                    }

                    XmlSerializer ser = new XmlSerializer(typeof(List <User>));

                    StreamWriter sw = new StreamWriter(putanja);
                    ser.Serialize(sw, listaKorisnika);

                    sw.Close();
                }
            }

            else
            {
                lock (locker)
                {
                    string      putanja        = Environment.CurrentDirectory + "\\korisnici.xml";
                    List <User> listaKorisnika = new List <User>();
                    //prepisati iz recnika u ovu listu
                    foreach (User u in recnikKorisnika.Values)
                    {
                        User sifrovan = new User();
                        sifrovan.Username = BitConverter.ToString(Sifrovanje.sifrujECB(u.Username, Konstante.ENCRYPTION_KEY));
                        sifrovan.Password = BitConverter.ToString(Sifrovanje.sifrujECB(u.Password, Konstante.ENCRYPTION_KEY));
                        sifrovan.Uloga    = BitConverter.ToString(Sifrovanje.sifrujECB(u.Uloga, Konstante.ENCRYPTION_KEY));

                        listaKorisnika.Add(sifrovan);
                    }

                    XmlSerializer ser = new XmlSerializer(typeof(List <User>));

                    StreamWriter sw = new StreamWriter(putanja);
                    ser.Serialize(sw, listaKorisnika);

                    sw.Close();
                }
            }
        }
예제 #8
0
        public bool ShutdownOperator(string username)
        {
            string desifrovanUsername = Sifrovanje.desifrujCBC(Sifrovanje.spremiZaDesifrovanje(username), Konstante.ENCRYPTION_KEY);

            if (!BankDB.BazaAktivnihOperatera.ContainsKey(desifrovanUsername))
            {
                return(false);
            }
            BankDB.BazaAktivnihOperatera.Remove(desifrovanUsername);
            return(true);
        }
예제 #9
0
        public bool SetIpAndPortClient(string username, string ip, string port)
        {
            // Postavlja IP i PORT CLIENTA!
            string desifrovanUsername = Sifrovanje.desifrujCBC(Sifrovanje.spremiZaDesifrovanje(username), Konstante.ENCRYPTION_KEY);

            if (BankDB.BazaAktivnihKorisnika.ContainsKey(desifrovanUsername))
            {
                return(false);
            }
            BankDB.BazaKorisnika[desifrovanUsername].IpAddress = ip;
            BankDB.BazaKorisnika[desifrovanUsername].Port      = port;
            BankDB.BazaAktivnihKorisnika.Add(BankDB.BazaKorisnika[desifrovanUsername].Username, BankDB.BazaKorisnika[desifrovanUsername]);
            return(true);
        }
예제 #10
0
        public Racun UzmiKlijentskiRacun(string username)
        {
            string usernameDesifrovan = Sifrovanje.desifrujCBC(Sifrovanje.spremiZaDesifrovanje(username), Konstante.ENCRYPTION_KEY);

            foreach (var racun in BankDB.BazaRacuna.Values)
            {
                if (racun.Username == usernameDesifrovan)
                {
                    return(racun);
                }
            }
            return(null);
            //ili return BankDB.BazaRacuna[usernameDesifrovan];
        }
예제 #11
0
        public bool SetIpAndPort(string username, string ip, string port)
        {
            // Postavlja IP i PORT OPERATORA!
            string desifrovanUsername = Sifrovanje.desifrujCBC(Sifrovanje.spremiZaDesifrovanje(username), Konstante.ENCRYPTION_KEY);

            // Nadji korisnika sa ovim usernameom i postavi mu port
            if (BankDB.BazaAktivnihOperatera.ContainsKey(desifrovanUsername))
            {
                return(false);
            }
            BankDB.BazaKorisnika[desifrovanUsername].IpAddress = ip;
            BankDB.BazaKorisnika[desifrovanUsername].Port      = port;
            BankDB.BazaAktivnihOperatera.Add(BankDB.BazaKorisnika[desifrovanUsername].Username, BankDB.BazaKorisnika[desifrovanUsername]);
            return(true);
        }
예제 #12
0
        //public bool NotifyRacunAdded(Racun r)
        //{
        //    string usernameDesifrovan = Sifrovanje.desifrujCBC(Sifrovanje.spremiZaDesifrovanje(r.Username), Konstante.ENCRYPTION_KEY);
        //    string brojRacunaDesifrovan = Sifrovanje.desifrujCBC(Sifrovanje.spremiZaDesifrovanje(r.BrojRacuna), Konstante.ENCRYPTION_KEY);
        //    string operatorDesifrovan = Sifrovanje.desifrujCBC(Sifrovanje.spremiZaDesifrovanje(r.Operater), Konstante.ENCRYPTION_KEY);
        //    string tipRacunaDesifrovan = Sifrovanje.desifrujCBC(Sifrovanje.spremiZaDesifrovanje(r.TipRacuna), Konstante.ENCRYPTION_KEY);

        //    Racun desifrovan = new Racun();
        //    desifrovan.BrojRacuna = brojRacunaDesifrovan;
        //    desifrovan.Operater = operatorDesifrovan;
        //    desifrovan.StanjeRacuna = Sifrovanje.desifrujCBC(Sifrovanje.spremiZaDesifrovanje(r.StanjeRacuna), Konstante.ENCRYPTION_KEY);
        //    desifrovan.TipRacuna = tipRacunaDesifrovan;
        //    desifrovan.Username = usernameDesifrovan;

        //    OperatorDB.BazaRacuna.Add(desifrovan.BrojRacuna, desifrovan);
        //    Console.WriteLine("Dodat novi racun: " + desifrovan.BrojRacuna + " " + desifrovan.Username);
        //    return true;
        //}

        //public bool NotifyRacunChanged(Racun r)
        //{
        //    Racun desifrovan = Sifrovanje.desifrujRacun(r);

        //    OperatorDB.BazaRacuna[desifrovan.BrojRacuna] = desifrovan;
        //    return true;
        //}

        //public bool NotifyRacunDeleted(Racun r)
        //{
        //    Racun desifrovan = Sifrovanje.desifrujRacun(r);

        //    OperatorDB.BazaRacuna.Remove(desifrovan.BrojRacuna);
        //    return true;
        //}

        public bool UpdateStatus(string korisnikKojiJeUplatio, string operaterKomeJeUplaceno, string suma)
        {
            string desifrovanKorisnikKojiJeUplatio  = Sifrovanje.desifrujCBC(Sifrovanje.spremiZaDesifrovanje(korisnikKojiJeUplatio), Konstante.ENCRYPTION_KEY);
            string desifrovanOperatorKomeJeUplaceno = Sifrovanje.desifrujCBC(Sifrovanje.spremiZaDesifrovanje(operaterKomeJeUplaceno), Konstante.ENCRYPTION_KEY);
            string desifrovanaSuma = Sifrovanje.desifrujCBC(Sifrovanje.spremiZaDesifrovanje(suma), Konstante.ENCRYPTION_KEY);

            foreach (var racun in OperatorDB.BazaRacuna)
            {
                if (racun.Value.Username == desifrovanKorisnikKojiJeUplatio)
                {
                    int trenutnoStanjeRacuna = Int32.Parse(OperatorDB.BazaRacuna[racun.Value.BrojRacuna].Dug) - Int32.Parse(desifrovanaSuma);
                    OperatorDB.BazaRacuna[racun.Value.BrojRacuna].Dug = trenutnoStanjeRacuna.ToString();
                    return(true);
                }
            }
            return(false);
        }
예제 #13
0
        private static void ObrisiRacun(IGatewayConnection gatewayProxy)
        {
            Console.WriteLine();
            Console.WriteLine(">Brisanje racuna:");
            Console.WriteLine("Broj racuna koji zelite da obrisete: ");
            string brRacuna = Console.ReadLine();

            string sifrovanRacun = BitConverter.ToString(Sifrovanje.sifrujCBC(brRacuna, Konstante.ENCRYPTION_KEY));

            if (gatewayProxy.ClientToBankObrisiRacun(sifrovanRacun))
            {
                Console.WriteLine("Racun uspesno obrisan!");
            }
            else
            {
                Console.WriteLine("Racun nije uspesno obrisan, proverite da li postoji taj broj racuna");
            }
        }
예제 #14
0
        private static void Transferuj(IGatewayConnection gatewayProxy)
        {
            Console.WriteLine();
            Console.WriteLine(">Transfer:");
            Console.WriteLine("Unesite broj operatorskog racuna na koji zelite da uplatite: ");
            string brojRacuna = Console.ReadLine();
            string sifrovanBrojOperatorskogRacuna = BitConverter.ToString(Sifrovanje.sifrujCBC(brojRacuna, Konstante.ENCRYPTION_KEY));

            Console.WriteLine("Unesite sumu: ");
            string suma          = Console.ReadLine();
            string sifrovanaSuma = BitConverter.ToString(Sifrovanje.sifrujCBC(suma, Konstante.ENCRYPTION_KEY));


            string brojKlijentskogRacunaSifrovan = BitConverter.ToString(Sifrovanje.sifrujCBC(KlientskiRacun.racun.BrojRacuna, Konstante.ENCRYPTION_KEY));
            string JASIFROVAN = BitConverter.ToString(Sifrovanje.sifrujCBC(KlientskiRacun.racun.Username, Konstante.ENCRYPTION_KEY));

            gatewayProxy.ClientToBankTransfer(brojKlijentskogRacunaSifrovan, sifrovanBrojOperatorskogRacuna, JASIFROVAN, sifrovanaSuma);
        }
예제 #15
0
        public bool AddAccount(User u, int mode)
        {
            // TODO izmeniti da vraca poruku o postojanju na klijenta a ne na serveru da ispisuje


            if (mode == 1)
            {
                User desifrovanKorisnik = new User();

                desifrovanKorisnik.Username = Sifrovanje.desifrujCBC(Sifrovanje.spremiZaDesifrovanje(u.Username), Konstante.ENCRYPTION_KEY);
                desifrovanKorisnik.Password = Sifrovanje.desifrujCBC(Sifrovanje.spremiZaDesifrovanje(u.Password), Konstante.ENCRYPTION_KEY);
                desifrovanKorisnik.Uloga    = Sifrovanje.desifrujCBC(Sifrovanje.spremiZaDesifrovanje(u.Uloga), Konstante.ENCRYPTION_KEY);


                if (BankDB.BazaKorisnika.ContainsKey(desifrovanKorisnik.Username))
                {
                    Console.WriteLine("Ovaj korisnik vec postoji");
                    return(false);
                }
                BankDB.BazaKorisnika.Add(desifrovanKorisnik.Username, desifrovanKorisnik);
                upisiKorisnika(BankDB.BazaKorisnika, mode);
                return(true);
            }
            else
            {
                User desifrovanKorisnik = new User();

                desifrovanKorisnik.Username = Sifrovanje.desifrujECB(Sifrovanje.spremiZaDesifrovanje(u.Username), Konstante.ENCRYPTION_KEY);
                desifrovanKorisnik.Password = Sifrovanje.desifrujECB(Sifrovanje.spremiZaDesifrovanje(u.Password), Konstante.ENCRYPTION_KEY);
                desifrovanKorisnik.Uloga    = Sifrovanje.desifrujECB(Sifrovanje.spremiZaDesifrovanje(u.Uloga), Konstante.ENCRYPTION_KEY);


                if (BankDB.BazaKorisnika.ContainsKey(desifrovanKorisnik.Username))
                {
                    Console.WriteLine("Ovaj korisnik vec postoji");
                    return(false);
                }
                BankDB.BazaKorisnika.Add(desifrovanKorisnik.Username, desifrovanKorisnik);

                upisiKorisnika(BankDB.BazaKorisnika, mode);
                return(true);
            }
        }
예제 #16
0
        private static void ucitajKorisnike(string operatorName)
        {
            try
            {
                string putanja = Environment.CurrentDirectory + "\\" + operatorName + "Korisnici.xml";

                List <User>   listaUsera = new List <User>();
                XmlSerializer xs         = new XmlSerializer(typeof(List <User>));
                StreamReader  sr         = new StreamReader(putanja);
                listaUsera = (List <User>)xs.Deserialize(sr);
                sr.Close();
                foreach (User u in listaUsera)
                {
                    User clean = Sifrovanje.desifrujUsera(u);
                    OperatorDB.BazaKorisnika.Add(clean.Username, clean);
                }
            }
            catch
            {
            }
        }
예제 #17
0
        private static void ucitajRacune(string operatorName)
        {
            try
            {
                string putanja = Environment.CurrentDirectory + "\\" + operatorName + "Racuni.xml";

                List <OperatorskiRacun> listaRacuna = new List <OperatorskiRacun>();
                XmlSerializer           xs          = new XmlSerializer(typeof(List <OperatorskiRacun>));
                StreamReader            sr          = new StreamReader(putanja);
                listaRacuna = (List <OperatorskiRacun>)xs.Deserialize(sr);
                sr.Close();
                foreach (OperatorskiRacun r in listaRacuna)
                {
                    OperatorskiRacun clean = Sifrovanje.desifrujOperatorskiRacun(r);
                    OperatorDB.BazaRacuna.Add(clean.BrojRacuna, clean);
                }
            }
            catch
            {
            }
        }
예제 #18
0
        private static void ucitajRacune(Dictionary <string, Racun> recnikRacuna)
        {
            try
            {
                string putanja = Environment.CurrentDirectory + "\\racuni.xml";

                List <Racun>  listaRacuna = new List <Racun>();
                XmlSerializer xs          = new XmlSerializer(typeof(List <Racun>));
                StreamReader  sr          = new StreamReader(putanja);
                listaRacuna = (List <Racun>)xs.Deserialize(sr);
                sr.Close();
                foreach (Racun r in listaRacuna)
                {
                    Racun clean = Sifrovanje.desifrujRacun(r);
                    recnikRacuna.Add(clean.BrojRacuna, clean);
                }
            }
            catch
            {
            }
        }
예제 #19
0
        public User CheckLogin(string username, string password, string nacinLogovanja)
        {
            List <Object> userIRacun = new List <Object>();

            if (nacinLogovanja == "client")
            {
                string usernameDesifrovan = Sifrovanje.desifrujCBC(Sifrovanje.spremiZaDesifrovanje(username), Konstante.ENCRYPTION_KEY);
                string passwordDesifrovan = Sifrovanje.desifrujCBC(Sifrovanje.spremiZaDesifrovanje(password), Konstante.ENCRYPTION_KEY);

                if (BankDB.BazaKorisnika.ContainsKey(usernameDesifrovan))
                {
                    if (BankDB.BazaKorisnika[usernameDesifrovan].Password == passwordDesifrovan)
                    {
                        if (BankDB.BazaKorisnika[usernameDesifrovan].Uloga == "admin" || BankDB.BazaKorisnika[usernameDesifrovan].Uloga == "korisnik")
                        {
                            User u = BankDB.BazaKorisnika[usernameDesifrovan];
                            return(u);
                        }
                    }
                }
            }
            else if (nacinLogovanja == "operater")
            {
                string usernameDesifrovan = Sifrovanje.desifrujCBC(Sifrovanje.spremiZaDesifrovanje(username), Konstante.ENCRYPTION_KEY);
                string passwordDesifrovan = Sifrovanje.desifrujCBC(Sifrovanje.spremiZaDesifrovanje(password), Konstante.ENCRYPTION_KEY);
                if (BankDB.BazaKorisnika.ContainsKey(usernameDesifrovan))
                {
                    if (BankDB.BazaKorisnika[usernameDesifrovan].Password == passwordDesifrovan)
                    {
                        if (BankDB.BazaKorisnika[usernameDesifrovan].Uloga == "operater")
                        {
                            User u = BankDB.BazaKorisnika[usernameDesifrovan];
                            return(u);
                        }
                    }
                }
            }
            return(null);
        }
예제 #20
0
        public bool AddRacun(Racun r)
        {
            Racun desifrovanRacun = Sifrovanje.desifrujRacun(r);

            if (OperatorDB.BazaKorisnika.ContainsKey(desifrovanRacun.BrojRacuna))
            {
                return(false);
            }
            string           randomRacun = Guid.NewGuid().ToString();
            OperatorskiRacun or          = new OperatorskiRacun(desifrovanRacun.Username, randomRacun, "0");

            OperatorDB.BazaRacuna.Add(or.BrojRacuna, or);
            Client <IGatewayConnection> client       = new Client <IGatewayConnection>("mbgateway", Konstante.GATEWAY_IP, Konstante.GATEWAY_PORT.ToString(), "GatewayConnection");
            IGatewayConnection          gatewayProxy = client.GetProxy();
            User korisnik = gatewayProxy.OperatorToBankGetClient(BitConverter.ToString(Sifrovanje.sifrujCBC(desifrovanRacun.Username, Konstante.ENCRYPTION_KEY)));

            OperatorDB.BazaKorisnika.Add(korisnik.Username, korisnik);
            upisiKorisnike(OperatorDB.operatorName);
            upisiRacune(OperatorDB.operatorName);
            Console.WriteLine("Uspesno kreiran racun {0} za klijenta {1}", randomRacun, desifrovanRacun.Username);
            return(true);
        }
예제 #21
0
        public bool IzmeniRacun(Racun r)
        {
            Racun desifrovanRacun = Sifrovanje.desifrujRacun(r);

            if (!BankDB.BazaRacuna.ContainsKey(desifrovanRacun.BrojRacuna))
            {
                return(false);
            }
            BankDB.BazaRacuna[desifrovanRacun.BrojRacuna].StanjeRacuna = desifrovanRacun.StanjeRacuna;
            upisiRacun(BankDB.BazaRacuna);

            Racun racunZaIzmenu = BankDB.BazaRacuna[desifrovanRacun.BrojRacuna];

            //// Obavesti odgovarajuceg operatera kako bi dodao novi klijentski racun
            //Client<IGatewayConnection> cli = new Client<IGatewayConnection>("mbgateway", "localhost", "63000", "GatewayConnection");
            //IGatewayConnection factory = cli.GetProxy();
            //if (racunZaIzmenu.TipRacuna == "fizicki" && racunZaIzmenu.Operater != "null")
            //{

            //    factory.BankToOperatorNotifyRacunChanged(racunZaIzmenu, BankDB.BazaKorisnika[racunZaIzmenu.Operater].IpAddress, BankDB.BazaKorisnika[racunZaIzmenu.Operater].Port);
            //}

            return(true);
        }
예제 #22
0
        public void upisiKorisnike(string operatorname)
        {
            lock (locker)
            {
                string putanja = Environment.CurrentDirectory + "\\" + operatorname + "Korisnici.xml";

                List <User> listaKorisnika = new List <User>();
                //prepisati iz recnika u ovu listu
                foreach (User u in OperatorDB.BazaKorisnika.Values)
                {
                    User sifrovan = new User();
                    sifrovan = Sifrovanje.sifrujUsera(u);

                    listaKorisnika.Add(sifrovan);
                }

                XmlSerializer ser = new XmlSerializer(typeof(List <User>));

                StreamWriter sw = new StreamWriter(putanja);
                ser.Serialize(sw, listaKorisnika);

                sw.Close();
            }
        }
예제 #23
0
        public void upisiRacune(string operatorname)
        {
            lock (locker)
            {
                string putanja = Environment.CurrentDirectory + "\\" + operatorname + "Racuni.xml";

                List <OperatorskiRacun> listaRacuna = new List <OperatorskiRacun>();
                //prepisati iz recnika u ovu listu
                foreach (OperatorskiRacun r in OperatorDB.BazaRacuna.Values)
                {
                    OperatorskiRacun sifrovan = new OperatorskiRacun();
                    sifrovan = Sifrovanje.sifrujOperatorskiRacun(r);

                    listaRacuna.Add(sifrovan);
                }

                XmlSerializer ser = new XmlSerializer(typeof(List <OperatorskiRacun>));

                StreamWriter sw = new StreamWriter(putanja);
                ser.Serialize(sw, listaRacuna);

                sw.Close();
            }
        }
예제 #24
0
        static void Main(string[] args)
        {
            Console.WriteLine("+-+-+-+-+-+-+-+-+");
            Console.WriteLine("|O|P|E|R|A|T|E|R|");
            Console.WriteLine("+-+-+-+-+-+-+-+-+");
            Console.WriteLine();
            Client <IGatewayConnection> cli          = new Client <IGatewayConnection>("mbgateway", Konstante.GATEWAY_IP, Konstante.GATEWAY_PORT.ToString(), "GatewayConnection");
            IGatewayConnection          gatewayProxy = cli.GetProxy();
            bool uspesnoUlogovan = false;
            User ulogovanUser    = new User();

            while (!uspesnoUlogovan)
            {
                Console.WriteLine("Username:"******"Password:"******"";
                ConsoleKeyInfo key;

                do
                {
                    key = Console.ReadKey(true);

                    // Backspace Should Not Work
                    if (key.Key != ConsoleKey.Backspace)
                    {
                        pass += key.KeyChar;
                        Console.Write("*");
                    }
                    else
                    {
                        Console.Write("\b");
                    }
                }
                // Stops Receving Keys Once Enter is Pressed
                while (key.Key != ConsoleKey.Enter);
                pass = pass.Replace("\r", "");
                string passSifrovano = BitConverter.ToString(Sifrovanje.sifrujCBC(pass, Konstante.ENCRYPTION_KEY));

                ulogovanUser = gatewayProxy.ClientToBankCheckLogin(userSifrovano, passSifrovano, "operater");
                if (ulogovanUser != null)
                {
                    Console.WriteLine();
                    Console.WriteLine("Uspesno logovanje " + ulogovanUser.Username);
                    uspesnoUlogovan = true;
                }
                else
                {
                    Console.WriteLine();
                    Console.WriteLine("Neuspesno logovanje");
                    uspesnoUlogovan = false;
                }
            }
            Console.WriteLine("Korisnici koji su na ovom operateru:");
            OperatorDB.operatorName = ulogovanUser.Username;
            ucitajRacune(OperatorDB.operatorName);
            ucitajKorisnike(OperatorDB.operatorName);
            foreach (var item in OperatorDB.BazaKorisnika.Values)
            {
                Console.WriteLine(item.Username);
            }

            //OperatorServer server = new OperatorServer();
            //server.Start();

            Server2 <IOperatorConnection> server = new Server2 <IOperatorConnection>("localhost", Konstante.INITIAL_OPERATER_PORT.ToString(), "OperaterConnection", typeof(OperaterConnection));


            // Javi banci na kom ip-u i portu slusas
            string sifrovanUsername = BitConverter.ToString(Sifrovanje.sifrujCBC(ulogovanUser.Username, Konstante.ENCRYPTION_KEY));

            if (!gatewayProxy.ClientAndOperatorToBankSetIpAndPort(sifrovanUsername, server.ipAddress, server.connectedPort.ToString()))
            {
                // Ukoliko vec postoji instanca tipa telenora, ugasi aplikaciju ili ponovo loguj itd...
                Environment.Exit(0);
            }

            gatewayProxy.CheckIntoGateway(server.ipAddress, server.connectedPort.ToString(), CertManager.Formatter.ParseName(WindowsIdentity.GetCurrent().Name));

            // Iscitaj iz xml-a



            // Ako je sve proslo ok, uzmi bazu svih racuna i klijenata ciji je operater npr telenor
            //string serializedList = gatewayProxy.OperatorToBankGetOperatorsClients(sifrovanUsername);
            //List<UserIRacun> aktivniKorisnici = ListSerializer.DeserializeString(serializedList);

            //foreach (var item in aktivniKorisnici)
            //{
            //    OperatorDB.BazaRacuna.Add(item.Racun.BrojRacuna,item.Racun);
            //}

            // U novom threadu prodji kroz sve aktivne korisnike i pozovi im sendBill
            Thread sendBillThread = new Thread(() => SendBill(gatewayProxy, sifrovanUsername));

            sendBillThread.Start();

            Console.ReadKey();
            gatewayProxy.OperatorToBankShutdownOperator(ulogovanUser.Username);
        }
예제 #25
0
        public User GetClient(string name)
        {
            string desifrovanUsername = Sifrovanje.desifrujCBC(Sifrovanje.spremiZaDesifrovanje(name), Konstante.ENCRYPTION_KEY);

            return(BankDB.BazaKorisnika[desifrovanUsername]);
        }
예제 #26
0
        //public bool Transfer(string mojRacun, string racunOperatera, string pozivNaBroj, int value)
        public bool Transfer(string brojKlijentskogRacuna, string brojOperatorskogRacuna, string korisnikKojiVrsiTransfer, string value)
        {
            string desifrovanBrojKlijentskogRacuna    = Sifrovanje.desifrujCBC(Sifrovanje.spremiZaDesifrovanje(brojKlijentskogRacuna), Konstante.ENCRYPTION_KEY);
            string desifrovanBrojOperatorskogRacuna   = Sifrovanje.desifrujCBC(Sifrovanje.spremiZaDesifrovanje(brojOperatorskogRacuna), Konstante.ENCRYPTION_KEY);
            string desifrovanKorisnikKojiVrsiTransfer = Sifrovanje.desifrujCBC(Sifrovanje.spremiZaDesifrovanje(korisnikKojiVrsiTransfer), Konstante.ENCRYPTION_KEY);
            string desifrovanValue = Sifrovanje.desifrujCBC(Sifrovanje.spremiZaDesifrovanje(value), Konstante.ENCRYPTION_KEY);

            if (!BankDB.BazaKorisnika.ContainsKey(desifrovanKorisnikKojiVrsiTransfer))
            {
                Console.WriteLine("Predstavili ste se kao nepostojeci korisnik");
                return(false);
            }

            if (!BankDB.BazaRacuna.ContainsKey(desifrovanBrojOperatorskogRacuna))
            {
                Console.WriteLine("Nepostojeci racun!");
                return(false);
            }

            if (Int32.Parse(desifrovanValue) <= 0)
            {
                Console.WriteLine("Novcana suma mora biti pozitivan broj");
                return(false);
            }

            if (Int32.Parse(BankDB.BazaRacuna[desifrovanBrojKlijentskogRacuna].StanjeRacuna) < Int32.Parse(desifrovanValue))
            {
                Console.WriteLine("Nemate dovoljno novcanih sredstava na racunu");
                return(false);
            }

            int stanjeKlijenta  = Int32.Parse(BankDB.BazaRacuna[desifrovanBrojKlijentskogRacuna].StanjeRacuna) - Int32.Parse(desifrovanValue);
            int stanjeOperatora = Int32.Parse(BankDB.BazaRacuna[desifrovanBrojOperatorskogRacuna].StanjeRacuna) + Int32.Parse(desifrovanValue);

            BankDB.BazaRacuna[desifrovanBrojKlijentskogRacuna].StanjeRacuna  = stanjeKlijenta.ToString();
            BankDB.BazaRacuna[desifrovanBrojOperatorskogRacuna].StanjeRacuna = stanjeOperatora.ToString();

            upisiRacun(BankDB.BazaRacuna);

            /*
             *  Treba pozvati operatera preko wcf-a i obavestiti ga da je korisnik izvrsio uplatu na njegov racun.
             *  Da bi se to uradilo potrebno je da znamo ip adresu korisnika i njegov port na kome slusa. Te podatke o
             *  korisniku treba dodati prikom njegovog dodavanja u banku.
             *
             *  Dodavanje u banku treba razdvojiti na dva slucaja:
             * dodavanje korisnika -> dodavanje korisnika je ovo sto trenutno imamo
             * dodavanje operatera -> za dodavanje operatera treba dodati informafije o ipAdresi i portu
             *
             *      Ognjen: I za klijente tj korisnike treba ip adresa i port, nema potrebe praviti 2 metode, zato sto i klijenti i operateri imaju username i password, samo im je uloga drugacija
             *
             *  Kada se ovo odrati poziva se sledece:
             *
             *  IOperatorConnection proxy = Client.GetOperatorProxy(ip, port);
             *  proxy.UpdateStatus(myUsernameOnOperator, value);
             */

            string operatorKomeJeUplaceno         = BankDB.BazaRacuna[desifrovanBrojOperatorskogRacuna].Username;
            string sifrovanOperatorKomeJeUplaceno = BitConverter.ToString(Sifrovanje.sifrujCBC(operatorKomeJeUplaceno, Konstante.ENCRYPTION_KEY));

            //Client<IGatewayConnection> cli = new Client<IGatewayConnection>("mbgateway", "localhost", "63000", "GatewayConnection");
            //IGatewayConnection factory = cli.GetProxy();
            //// opet se prosledjuje ovaj koji je bio sifrovan
            //factory.BankToOperatorUpdateStatus(korisnikKojiVrsiTransfer,sifrovanOperatorKomeJeUplaceno,value, BankDB.BazaKorisnika[operatorKomeJeUplaceno].IpAddress, BankDB.BazaKorisnika[operatorKomeJeUplaceno].Port);

            return(true);
        }
예제 #27
0
        private static void KreirajRacun(IGatewayConnection gatewayProxy)
        {
            Console.WriteLine();
            Console.WriteLine(">Dodaj racun:");
            Console.WriteLine("Korisnicko ime vlasnika racuna: ");
            string username      = Console.ReadLine();
            string userSifrovano = BitConverter.ToString(Sifrovanje.sifrujCBC(username, Konstante.ENCRYPTION_KEY));



            Console.WriteLine("Broj racuna: ");
            string brojRacuna          = Console.ReadLine();
            string brojRacunaSifrovano = BitConverter.ToString(Sifrovanje.sifrujCBC(brojRacuna, Konstante.ENCRYPTION_KEY));

            string tipRacuna;

            do
            {
                Console.WriteLine("Tip racuna (fizicki ili pravni):");
                tipRacuna = Console.ReadLine();
            }while (tipRacuna != "fizicki" && tipRacuna != "pravni");

            string tipRacunaSifrovano = BitConverter.ToString(Sifrovanje.sifrujCBC(tipRacuna, Konstante.ENCRYPTION_KEY));



            string operater          = "null";
            string operaterSifrovano = "null";

            if (tipRacuna == "fizicki")
            {
                Console.WriteLine("Korisnicko ime naloga operatera: ");
                operater = Console.ReadLine();
            }
            operaterSifrovano = BitConverter.ToString(Sifrovanje.sifrujCBC(operater, Konstante.ENCRYPTION_KEY));

            Console.WriteLine("Inicijalno stanje(broj):");
            string stanje          = Console.ReadLine();
            string stanjeSifrovano = BitConverter.ToString(Sifrovanje.sifrujCBC(stanje, Konstante.ENCRYPTION_KEY));



            Racun noviRacun = new Racun(userSifrovano, brojRacunaSifrovano, stanjeSifrovano, tipRacunaSifrovano, operaterSifrovano);

            var uspesnoKreiran = gatewayProxy.ClientToBankKreirajRacun(noviRacun);

            if (uspesnoKreiran == null)
            {
                Console.WriteLine("Neuspesno kreiran racun, proverite da li ovaj broj racuna vec postoji, ili da korisnik na koga se dodaje ne postoji");
            }
            else
            {
                Console.WriteLine("Uspesno kreiran racun na banci!");
            }


            if (tipRacuna == "fizicki")
            {
                User operaterZaProsledjivanje           = gatewayProxy.ClientToBankGetOperator(operaterSifrovano);
                User desifrovanOperaterZaProsledjivanje = Sifrovanje.desifrujUsera(operaterZaProsledjivanje);
                if (gatewayProxy.ClientToOperatorAddRacun(noviRacun, desifrovanOperaterZaProsledjivanje.IpAddress, desifrovanOperaterZaProsledjivanje.Port))
                {
                    Console.WriteLine("Uspesno kreiran racun na operateru");
                }
                else
                {
                    Console.WriteLine("Neuspesno kreiran racun na operateru");
                }
            }
        }
예제 #28
0
        private static void DodajKorisnika(IGatewayConnection gatewayProxy, int mode)
        {
            Console.WriteLine();
            Console.WriteLine(">Dodavanje korisnika:");
            if (mode == 1)
            {
                Console.WriteLine("Korisnicko ime:");
                string username = Console.ReadLine();

                Console.WriteLine("Lozinka:");
                string lozinka = Console.ReadLine();

                Console.WriteLine("Uloga:");

                string uloga;
                do
                {
                    Console.WriteLine("Unesi ulogu(korisnik,admin ili operater):");
                    uloga = Console.ReadLine();
                }while (uloga != "korisnik" && uloga != "admin" && uloga != "operater");

                //pravljenje korisnika
                User noviUser = new User();
                noviUser.Username = BitConverter.ToString(Sifrovanje.sifrujCBC(username, Konstante.ENCRYPTION_KEY));
                noviUser.Password = BitConverter.ToString(Sifrovanje.sifrujCBC(lozinka, Konstante.ENCRYPTION_KEY));
                noviUser.Uloga    = BitConverter.ToString(Sifrovanje.sifrujCBC(uloga, Konstante.ENCRYPTION_KEY));

                bool dodao = gatewayProxy.ClientToBankAddAccount(noviUser, mode);
                if (dodao)
                {
                    Console.WriteLine("Uspesno dodat korisnik!");
                }
                else
                {
                    Console.WriteLine("Neuspesno dodavanje korisnika!");
                }
            }

            else
            {
                Console.WriteLine("Korisnicko ime:");
                string username = Console.ReadLine();

                Console.WriteLine("Lozinka:");
                string lozinka = Console.ReadLine();

                Console.WriteLine("Uloga:");
                string uloga;
                do
                {
                    Console.WriteLine("Unesi ulogu(korisnik,admin ili operater):");
                    uloga = Console.ReadLine();
                }while (uloga != "korisnik" && uloga != "admin" && uloga != "operater");

                //pravljenje korisnika
                User noviUser = new User();
                noviUser.Username = BitConverter.ToString(Sifrovanje.sifrujECB(username, Konstante.ENCRYPTION_KEY));
                noviUser.Password = BitConverter.ToString(Sifrovanje.sifrujECB(lozinka, Konstante.ENCRYPTION_KEY));
                noviUser.Uloga    = BitConverter.ToString(Sifrovanje.sifrujECB(uloga, Konstante.ENCRYPTION_KEY));
                bool addedOnBank = gatewayProxy.ClientToBankAddAccount(noviUser, mode);
                if (addedOnBank)
                {
                    Console.WriteLine("Uspesno dodat korisnik!");
                }
                else
                {
                    Console.WriteLine("Neuspesno dodavanje korisnika!");
                }
            }
        }
예제 #29
0
        /*
         *
         */
        static void Main(string[] args)
        {
            Console.WriteLine("+-+-+-+-+-+-+");
            Console.WriteLine("|C|L|I|E|N|T|");
            Console.WriteLine("+-+-+-+-+-+-+");
            Console.WriteLine();
            // Prvo konekcija na server radi pristupanja bazi podataka ( gde admin postoji?)
            // Prvo autentifikacija, u zavisnosti od toga gleda se da li je admin ili ne (iz nekog txt-a)
            // ???
            string kljuc = Konstante.ENCRYPTION_KEY;
            Client <IGatewayConnection> cli          = new Client <IGatewayConnection>("mbgateway", Konstante.GATEWAY_IP, Konstante.GATEWAY_PORT.ToString(), "GatewayConnection");
            IGatewayConnection          gatewayProxy = cli.GetProxy();

            Console.WriteLine(">Login");
            User ulogovanUser     = new User();
            bool uspesnoLogovanje = false;

            while (!uspesnoLogovanje)
            {
                Console.WriteLine("Username:"******"Password:"******"";
                ConsoleKeyInfo key;

                do
                {
                    key = Console.ReadKey(true);

                    // Backspace Should Not Work
                    if (key.Key != ConsoleKey.Backspace)
                    {
                        pass += key.KeyChar;
                        Console.Write("*");
                    }
                    else
                    {
                        Console.Write("\b");
                    }
                }
                // Stops Receving Keys Once Enter is Pressed
                while (key.Key != ConsoleKey.Enter);
                pass = pass.Replace("\r", "");
                string passSifrovano = BitConverter.ToString(Sifrovanje.sifrujCBC(pass, kljuc));

                ulogovanUser = gatewayProxy.ClientToBankCheckLogin(userSifrovano, passSifrovano, "client");
                if (ulogovanUser != null)
                {
                    uspesnoLogovanje = true;
                }
                else
                {
                    Console.WriteLine("\nNeuspesno logovanje");
                }
            }

            if (ulogovanUser != null)
            {
                string userSifrovanoZaRacun = BitConverter.ToString(Sifrovanje.sifrujCBC(ulogovanUser.Username, kljuc));

                Console.WriteLine("Uspesno logovanje " + ulogovanUser.Username);
                KlientskiRacun.racun = gatewayProxy.ClientToBankUzmiKlijentskiRacun(userSifrovanoZaRacun);
                if (KlientskiRacun.racun == null)
                {
                    Console.WriteLine("Ne postoji klijentski racun ");
                }
                else
                {
                    Console.WriteLine("Klijentski racun:" + KlientskiRacun.racun.BrojRacuna);
                }

                // podici server za klijenta i javiti banci sa metodomSetIpAndPort na kom portu i ip adresi slusa
                //ClientServer server = new ClientServer();
                //server.Start();
                //string sifrovanUsername = BitConverter.ToString(Sifrovanje.sifrujCBC(ulogovanUser.Username, Konstante.ENCRYPTION_KEY));
                //gatewayProxy.ClientToBankSetIpAndPortClient(sifrovanUsername, server.ipAddress, server.port.ToString());

                Server2 <IClientConnection> server = new Server2 <IClientConnection>("localhost", Konstante.INITIAL_CLIENT_PORT.ToString(), "ClientConnection", typeof(ClientConnection));
                string sifrovanUsername            = BitConverter.ToString(Sifrovanje.sifrujCBC(ulogovanUser.Username, Konstante.ENCRYPTION_KEY));
                gatewayProxy.ClientToBankSetIpAndPortClient(sifrovanUsername, server.ipAddress, server.connectedPort.ToString());

                // Javi gatewayu da te doda u listu instanci
                gatewayProxy.CheckIntoGateway(server.ipAddress, server.connectedPort.ToString(), CertManager.Formatter.ParseName(WindowsIdentity.GetCurrent().Name));

                if (ulogovanUser.Uloga == "admin")
                {
                    MeniAdmin(gatewayProxy);
                }
                else if (ulogovanUser.Uloga == "korisnik")
                {
                    MeniKorisnik(gatewayProxy);
                }
            }

            Console.ReadKey();
            gatewayProxy.ClientToBankShutdownClient(ulogovanUser.Username);
        }