Início > Portfólio > Redirecionamentos > Sobre

A cada dia que passa são lançados no mercado diversos dispositivos com as mais variadas funções, dentre estas funções esta a capacidade de acesso remoto, um exemplo deste tipo de dispositivo seria câmeras de vigilância e até mesmo sensores que realizam algum tipo de monitoramento, como o monitoramente de temperatura. Com isso a necessidade de possuir um endereço que identifique seu dispositivo na rede global de computadores é crescente, porém esse tipo de identificação tem um custo elevado.


O aplicativo de redirecionamentos implementado neste portal visa sanar este problema de uma forma simples. Onde ao acessar um endereço padrão cadastrado no aplicativo de redirecionamento, o mesmo redireciona o acesso até o endereço cadastrado que em teoria pertence ao seu dispositivo. Caso o endereço cadastrado no endereço padrão mude, é possível atualizar o cadastro com as informações atualizadas utilizando uma interface simples de atualização de cadastro.


Um exemplo de um endereço padrão citado acima pode ser visualizado logo abaixo:


www.diegobittencourt.com/public/redirection/goto/1

Sendo que o numero "1" presente no endereço, seria o numero do cadastro (código) do seu redirecionamento. Acessando este endereço ele redirecionaria você até o endereço de Ip (IPv4 ou IPv6) do cadastro.


No cadastro de Redirecionamentos ainda é possível informar um numero de porta, onde ao acessar o endereço padrão além de ser redirecionado para o endereço de Ip do cadastro, você seria direcionado para uma porta em especifico. No cadastro de redirecionamentos é possível informar as seguintes informações:


Endereço de Ip
Endereço Ip para o qual o endereço padrão vai redirecionar
Tipo do Endereço de Ip
Podendo ser IPv4 ou IPv6
Porta
Numero da porta para a qual o endereço padrão deve redirecionar

Caso mude o Endereço de Ip no qual o endereço padrão do seu redirecionamento deve redirecionar, é possível atualizar esta informações de forma dinâmica, sem a necessidade de realizar o login do usuário no site e acessar o cadastro do redirecionamento. Para isso é necessário realizar um acesso ao endereço de atualização informando algumas informações necessárias, sendo:


www.diegobittencourt.com/public/redirection/update/id/username/password/newip

Onde:


Id
Numero do cadastro do redirecionamento (código)
Username
Nome de usuário utilizado no login
Password
Senha de acesso ao site , sendo que esta informação deve estar no formato MD5
New Ip
Novo endereço de Ip que deve ser salvo no cadastro em questão

Uma observação importante é que o novo endereço de Ip pode não ser informado. Caso o usuário optar por não informar, o aplicativo vai realizar uma tentativa de obter o endereço de Ip no qual a requisição de atualização de cadastro foi originada. Porém por diversos fatores pode não ser possível obter este endereço de Ip, neste caso a atualização vai falhar. Desta maneira o endereço de atualização de cadastro ficaria da seguinte maneira:


www.diegobittencourt.com/public/redirection/update/id/username/password

Este endereço de atualização de cadastro vai retornar dois estados, sendo:


Successfully
Indica que a atualização foi um sucesso
Failed
Indica que a atualização não foi executada com sucesso

Abaixo se encontram alguns exemplos da rotina de atualização do endereço de ip em algumas linguagens de programação:


C#

				public class dbRedirection
				{

					/// 
					/// Endereço Base da Atualização
					/// 
					private const string UrlBase = "http://diegobittencourt.com/public/redirection/update";

					/// 
					/// Atualiza o Endereço de Ip do Redirecionamento
					/// Mais informações em http://diegobittencourt.com/public/redirection/about
					/// 
					/// True se a Atualização ocorreu com Sucesso, False caso contrário
					public static bool Update(string IdRef, string UsernameRef, string PasswordRef)
					{
						StringBuilder strUrl = new StringBuilder();
						strUrl.Append(dbRedirections.UrlBase);
						strUrl.Append("/");
						strUrl.Append(IdRef);
						strUrl.Append("/");
						strUrl.Append(UsernameRef);
						strUrl.Append("/");
						strUrl.Append(getPasswordHash(PasswordRef));
						return Update(strUrl.ToString());
					}

					/// 
					/// Atualiza o Endereço de Ip do Redirecionamento
					/// Mais informações em http://diegobittencourt.com/public/redirection/about
					/// 
					/// True se a Atualização ocorreu com Sucesso, False caso contrário
					public static bool Update(string IdRef, string UsernameRef, string PasswordRef, string IpRef)
					{
						StringBuilder strUrl = new StringBuilder();
						strUrl.Append(dbRedirections.UrlBase);
						strUrl.Append("/");
						strUrl.Append(IdRef);
						strUrl.Append("/");
						strUrl.Append(UsernameRef);
						strUrl.Append("/");
						strUrl.Append(getPasswordHash(PasswordRef));
						strUrl.Append("/");
						strUrl.Append(IpRef);
						return Update(strUrl.ToString());
					}

					/// 
					/// Atualiza o Endereço de Ip do Redirecionamento
					/// Mais informações em http://diegobittencourt.com/public/redirection/about
					/// 
					/// True se a Atualização ocorreu com Sucesso, False caso contrário
					private static bool Update(string UrlRef)
					{
						WebClient wcClient = new WebClient();
						string Retorno = string.Empty;
						Retorno = wcClient.DownloadString(UrlRef);
						return Retorno == "successfully";
					}

					/// 
					/// Retorna o Password no formato MD5
					/// 
					/// 
					/// PasswordRef no formato MD5
					private static string getPasswordHash(string PasswordRef)
					{
						MD5 md5 = MD5.Create();
						byte[] inputBytes = Encoding.ASCII.GetBytes(PasswordRef);
						byte[] hash = md5.ComputeHash(inputBytes);
						StringBuilder sb = new StringBuilder();
						for (int i = 0; i < hash.Length; i++)
						{
							sb.Append(hash[i].ToString("x2"));
						}
						return sb.ToString();
					}

				}