private static void MeniKorisnik(IGatewayConnection gatewayProxy) { int izbor; do { Console.WriteLine(); Console.WriteLine("+-+-+-+-+-+-+"); Console.WriteLine("|O|P|C|I|J|E|"); Console.WriteLine("+-+-+-+-+-+-+"); Console.WriteLine("1.Uplata "); Console.WriteLine("0.Izlaz"); Console.WriteLine("Izaberi jedan od ponudjenih"); izbor = Int32.Parse(Console.ReadLine()); //switch za izbor switch (izbor) { case 1: Transferuj(gatewayProxy); break; case 0: Environment.Exit(0); break; default: break; } } while (izbor != 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"); } }
private static void MeniAdmin(IGatewayConnection gatewayProxy) { int izbor; do { Console.WriteLine(); Console.WriteLine("+-+-+-+-+-+-+"); Console.WriteLine("|O|P|C|I|J|E|"); Console.WriteLine("+-+-+-+-+-+-+"); Console.WriteLine("1. Dodavanje korisnika/operatera"); Console.WriteLine("2. Kreiranje novog racuna"); Console.WriteLine("3. Brisanje racuna"); Console.WriteLine("4. Izmena racuna"); Console.WriteLine("5. Dodaj korisnika(performance test)"); Console.WriteLine("6. Ispis statistike sistema"); Console.WriteLine("0. Izlaz"); Console.WriteLine("Izaberi jedan od ponudjenih"); izbor = Int32.Parse(Console.ReadLine()); //switch za izbor switch (izbor) { case 1: DodajKorisnika(gatewayProxy, 1); break; case 2: KreirajRacun(gatewayProxy); break; case 3: ObrisiRacun(gatewayProxy); break; case 4: IzmeniRacun(gatewayProxy); break; case 5: DodajKorisnikaTest(gatewayProxy); break; case 6: GatewayLogger.GenerisiIzvestaj(); break; case 0: Environment.Exit(0); break; default: Console.WriteLine("Ne postoji ta opcija"); break; } } while (izbor != 0); }
private static void SendBill(IGatewayConnection proxy, string sifrovanUsername) { while (true) { // Svaka 2 minuta uzmi aktivne klijente i njima salji string serializedList = proxy.OperatorToBankGetOperatorsClients(sifrovanUsername); List <UserIRacun> aktivniKorisnici = ListSerializer.DeserializeString(serializedList); foreach (var userIRacun in aktivniKorisnici) { Random r = new Random(); int randomSuma = r.Next(100, 500); proxy.OperatorToClientSendBill(randomSuma.ToString(), userIRacun.Korisnik.IpAddress, userIRacun.Korisnik.Port); } Thread.Sleep(1000 * 15);// 2 minuta ustvari } }
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); }
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 DodajKorisnikaTest(IGatewayConnection gatewayProxy) { Console.WriteLine(); Console.WriteLine(">Performance testing:"); Console.WriteLine("3DES CBC: "); Stopwatch sw = new Stopwatch(); sw.Start(); DodajKorisnika(gatewayProxy, 1); sw.Stop(); Console.WriteLine("Elapsed={0} ", sw.Elapsed); Console.WriteLine("================================================="); Console.WriteLine("3DES ECB: "); Stopwatch sw1 = new Stopwatch(); sw1.Start(); DodajKorisnika(gatewayProxy, 2); sw1.Stop(); Console.WriteLine("Elapsed={0} ", sw1.Elapsed); }
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); }
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); }
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); }