public static Produto BuscarPorId(int id) { Produto produto; try { var file = File.ReadAllText("./Config/Info.json"); var conf = JObject.Parse(file); var channel = new Channel(conf["nomes"]["host"] + ":" + conf["nomes"]["porta"], ChannelCredentials.Insecure); var client = new ServidorNomes.Nomes.NomesClient(channel); var req = new ServidorNomes.ServicoRequest(); req.Servico = "Produto"; var rep = client.ObterServico(req); if (rep.Error != 0) { throw new Exception("Falha ao obter produtox!\n" + rep.Message); } //Consegui o servico.. channel = new Channel(rep.Servico.Host + ":" + rep.Servico.Porta, ChannelCredentials.Insecure); var clientP = new ServidorProdutos.Produtos.ProdutosClient(channel); var request = new ServidorProdutos.ModoBusca(); request.Tipo = ServidorProdutos.ModoBusca.Types.Modo.Id; request.Id = id; var resp = clientP.Buscar(request); if (resp.Response.Error != 0) { throw new Exception("Falha ao obter produtoy!\n" + resp.Response.Message + " " + id.ToString()); } produto = new Produto(resp.Produtos[0]); } catch (Exception e) { throw e; } return(produto); }
static void Main(string[] args) { var file = File.ReadAllText("./Config/Info.json"); const int off_set = 10; try { var conf = JObject.Parse(file); var hostAut = conf["autenticacao"]["host"].ToString(); var portaAut = Int32.Parse(conf["autenticacao"]["porta"].ToString()); Server server = new Server { Services = { Autenticacao.BindService(new Servidor()) }, Ports = { new ServerPort(hostAut, portaAut, ServerCredentials.Insecure) } }; Server serverUsuario = new Server { Services = { Usuarios.BindService(new ServidorUsuario()) }, Ports = { new ServerPort(hostAut, portaAut + off_set, ServerCredentials.Insecure) } }; server.Start(); serverUsuario.Start(); Console.WriteLine("Servidor de Autenticacao Ativo!"); Console.WriteLine("Conectando com o servidor de nomes para registrar servico!"); var hostNome = conf["nomes"]["host"].ToString(); var portNome = conf["nomes"]["porta"].ToString(); var channel = new Channel(hostNome + ":" + portNome, ChannelCredentials.Insecure); var client = new ServidorNomes.Nomes.NomesClient(channel); RegistroServico registro = new RegistroServico(); registro.Host = hostAut; registro.Porta = portaAut; registro.Servico = "Autenticacao"; registro.Estado = new Estado(); registro.Estado.Cpu = Diagnostico.ObterUsoCpu(); registro.Estado.Memoria = Diagnostico.ObterUsoMemoria(); var resp = client.Cadastrar(registro); if (resp.Error != 0) { throw new Exception("Erro ao cadastrar servico!\n" + resp.Message); } Console.WriteLine(resp.Message); Console.WriteLine("Levantando listener udp para aguardar conexoes de confirmacao de ativo"); Socket receiver = new Socket(AddressFamily.InterNetwork, SocketType.Dgram, ProtocolType.Udp); UdpClient listener = new UdpClient(portaAut); IPEndPoint groupEP = new IPEndPoint(IPAddress.Any, Convert.ToInt32(portaAut)); while (true) { Console.WriteLine("Tentando receber algo"); byte[] x = listener.Receive(ref groupEP); Console.WriteLine("Recebi conexao!"); string mess = Encoding.ASCII.GetString(x); IPAddress broadcast = IPAddress.Parse(hostNome); byte[] sendbuf = Encoding.ASCII.GetBytes("Servidor Ativo"); IPEndPoint ep = new IPEndPoint(broadcast, Convert.ToInt32(portNome)); receiver.SendTo(sendbuf, ep); } } catch (Exception e) { Console.WriteLine("Erro ocorrido ao iniciar servidor de autenticacao!\n" + e.Message); } }
public override Task <AutResponse> Autenticar(ServidorUsuarios.RegistroUsuario registroUsuario, ServerCallContext context) { return(Task.Run(() => { var file = File.ReadAllText("./Config/Info.json"); var response = new AutResponse(); try { AtualizarServidor(); var conf = JObject.Parse(file); var hostNome = conf["nomes"]["host"].ToString(); var portNome = conf["nomes"]["porta"].ToString(); var channel = new Channel(hostNome + ":" + portNome, ChannelCredentials.Insecure); var clientNomes = new ServidorNomes.Nomes.NomesClient(channel); var req = new ServidorNomes.ServicoRequest { Servico = "Usuario" }; var resp = clientNomes.ObterServico(req); if (resp.Error != 0) { throw new Exception("Falha ao tentar autenticar2.\n" + resp.Message); } channel = new Channel(resp.Servico.Host + ":" + resp.Servico.Porta, ChannelCredentials.Insecure); var clientUsuarios = new ServidorUsuarios.Usuarios.UsuariosClient(channel); var mode = new ServidorUsuarios.ModoBusca { Tipo = ServidorUsuarios.ModoBusca.Types.Modo.Nome, Login = registroUsuario.Login }; var reg = clientUsuarios.Buscar(mode); if (reg.Message.Error != 0) { throw new Exception("Falha ao autenticar1.\n" + reg.Message.Message); } if (reg.Usuarios.Count == 0) { throw new Exception("Usuario invalido!"); } if (registroUsuario.Senha != reg.Usuarios[0].Senha) { throw new Exception("Falha ao autenticar, a senha eh invalida!"); } response.Error = 0; response.Message = "Autenticado com sucesso!"; response.Rusuario = reg.Usuarios[0]; }catch (Exception e) { response.Error = 1; response.Message = e.Message + " eu nao toco raul"; return response; } return response; })); }