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(); } }
public User GetOperator(string operatorName) { string desifrovanName = Sifrovanje.desifrujCBC(Sifrovanje.spremiZaDesifrovanje(operatorName), Konstante.ENCRYPTION_KEY); User operaterZaSlanje = Sifrovanje.sifrujUsera(BankDB.BazaAktivnihOperatera[desifrovanName]); return(operaterZaSlanje); }
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); }
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"); } }
//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); }
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); }
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(); } } }
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); }
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); }
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]; }
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); }
//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); }
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"); } }
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); }
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); } }
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 { } }
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 { } }
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 { } }
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); }
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); }
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); }
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(); } }
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(); } }
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); }
public User GetClient(string name) { string desifrovanUsername = Sifrovanje.desifrujCBC(Sifrovanje.spremiZaDesifrovanje(name), Konstante.ENCRYPTION_KEY); return(BankDB.BazaKorisnika[desifrovanUsername]); }
//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); }
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"); } } }
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!"); } } }
/* * */ 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); }