<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Matheus Bratfisch &#187; cliente</title>
	<atom:link href="http://www.matbra.com/tag/cliente/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.matbra.com</link>
	<description>&#34;Cogito ergo sum&#34;</description>
	<lastBuildDate>Fri, 03 Sep 2010 14:17:12 +0000</lastBuildDate>
	<language>pt</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0</generator>
		<item>
		<title>Cliente torrent em Servidor linux com acesso via WEB</title>
		<link>http://www.matbra.com/2010/08/04/cliente-torrent-em-servidor-linux-com-acesso-via-web/</link>
		<comments>http://www.matbra.com/2010/08/04/cliente-torrent-em-servidor-linux-com-acesso-via-web/#comments</comments>
		<pubDate>Wed, 04 Aug 2010 21:34:09 +0000</pubDate>
		<dc:creator>Matheus (X-warrior) Bratfisch</dc:creator>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[Ubuntu]]></category>
		<category><![CDATA[client]]></category>
		<category><![CDATA[cliente]]></category>
		<category><![CDATA[torrent]]></category>
		<category><![CDATA[web acess]]></category>

		<guid isPermaLink="false">http://www.matbra.com/?p=807</guid>
		<description><![CDATA[Olá, Por que criar um servidor com um cliente torrent com acess web? Como eu moro com outras pessoas, que também utilizam torrent e tinha um computador rodando direto com outros serviços, decidi adicionar um cliente torrent (transmission) com acesso via web, assim não precisando deixar os computadores ligados baixando. Cada um possui acesso e [...]]]></description>
			<content:encoded><![CDATA[<p>Olá,</p>
<p>Por que criar um servidor com um cliente torrent com acess web? Como eu moro com outras pessoas, que também utilizam torrent e tinha um computador rodando direto com outros serviços, decidi adicionar um cliente torrent (transmission) com acesso via web, assim não precisando deixar os computadores ligados baixando. Cada um possui acesso e pode deixar o seu. </p>
<p>Mas qual cliente utilizar? Verifiquei a existência desse tipo de clientes e verifiquei que existem dois bastante famosos, o <a href="http://w3btorrent.sourceforge.net/" target="_blank">w3btorrent</a> e o <a href="http://www.torrentflux.com/" target="_blank">torrentflux</a>, li que ambos exercem muito bem sua função, porém o que eu não gostei é que eles precisam de servidor WEB como o Apache, o segundo se não estou enganado também precisa de PHP e por ai vai. Mas, será que não tem um que não precise disso? Claro que existe o próprio <a href="http://www.transmissionbt.com/" target="_blank">transmission</a>, cliente nativo do Ubuntu.</p>
<p>Bom, chega de dar outras opções pra você e vamos a instalação do Transmission. Inicialmente acesse seu servidor via ssh e instale o transmission-daemon com o seguinte comando: </p>
<blockquote><p>
$ sudo apt-get install transmission-daemon
</p></blockquote>
<p>Agora você deve configurar o mesmo, para configurar o mesmo, acessei /home/usuario/.config/transmission-daemon/settings.json </p>
<p>O arquivo é extenso e possui diversas configurações mas todas praticamente intuitivas.</p>
<p><span id="more-807"></span></p>
<p>&#8220;download-dir&#8221;: &#8211; É o diretório onde os downloads terminados irão ficar<br />
&#8220;incomplete-dir&#8221;: &#8211;  É o diretório onde os downloads incompletos irão ficar<br />
&#8220;incomplete-dir-enabled&#8221;: &#8211; Se irá usar o diretório incompleto ou não<br />
&#8220;rpc-enabled&#8221;: &#8211; Se o acesso via web estará ligado ou não<br />
&#8220;rpc-port&#8221;: &#8211; Porta do serviço<br />
&#8220;rpc-whitelist-enabled&#8221;: &#8211; Se permitirá o acesso somente a certos IPs<br />
&#8220;rpc-whitelist&#8221;: &#8211; Lista dos ips permitidos</p>
<p>Existem diversas outras configurações que podem ser feitas, mas essas são as básicas que utilizei para fazer ele funcionar, tive alguns problemas com a White-list então desabilitei a mesma, habilitei o rpc e pronto. </p>
<p>Este é o meu<br />
<a href='http://www.matbra.com/wp-content/uploads/settings.json_.tar.gz'>Arquivo de configuração do transmission-daemon</a> no mesmo a senha é &#8220;teste&#8221; e o usuário é &#8220;admin&#8221; </p>
<p>Para iniciar o transmission-daemon com um arquivo de configuração diferente, utilize &#8211;config-dir DIR/PARA/O/ARQUIVO</p>
<p>(Lembrando que não é necessário colocar o caminho até o settings.json e sim somente o caminho onde está o mesmo) </p>
<p>Adicionei no /etc/rc.local</p>
<blockquote><p>
transmission-daemon &#8211;config-dir /home/usuario/.config/transmission-daemon/
</p></blockquote>
<p>Removi o transmission-daemon do /etc/init.d/ reinicie e pronto. </p>
<p>Qualquer dúvida ou problema entre em contato, ficarei feliz em ajudar,<br />
Matheus</p>
]]></content:encoded>
			<wfw:commentRss>http://www.matbra.com/2010/08/04/cliente-torrent-em-servidor-linux-com-acesso-via-web/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Enviar arquivos via XML-RPC em Java.</title>
		<link>http://www.matbra.com/2009/09/17/enviar-arquivos-via-xml-rpc-em-java/</link>
		<comments>http://www.matbra.com/2009/09/17/enviar-arquivos-via-xml-rpc-em-java/#comments</comments>
		<pubDate>Thu, 17 Sep 2009 22:23:04 +0000</pubDate>
		<dc:creator>Matheus (X-warrior) Bratfisch</dc:creator>
				<category><![CDATA[Aprendendo]]></category>
		<category><![CDATA[java]]></category>
		<category><![CDATA[cliente]]></category>
		<category><![CDATA[servidor]]></category>
		<category><![CDATA[xmlrpc]]></category>

		<guid isPermaLink="false">http://www.matbra.com/?p=496</guid>
		<description><![CDATA[Olá, Hoje o Jorge me perguntou se eu sabia como enviar arquivos via XML-RPC. Pensando no assunto não me recordava como devia ser feito, resolvi dar uma rápida pesquisada para ensina-lo. Acabei me entretendo e resolvi modificar o Cliente e Servidor Java XML-RPC para fazer o mesmo. Implementei o mesmo e não foi complexo só [...]]]></description>
			<content:encoded><![CDATA[<p>Olá,</p>
<p>Hoje o Jorge me perguntou se eu sabia como enviar arquivos via XML-RPC. Pensando no assunto não me recordava como devia ser feito, resolvi dar uma rápida pesquisada para ensina-lo. Acabei me entretendo e resolvi modificar o <a href="http://www.matbra.com/2009/05/16/cliente-e-servidor-java-xml-rpc/">Cliente e Servidor Java XML-RPC</a> para fazer o mesmo. </p>
<p>Implementei o mesmo e não foi complexo só olhei a documentação do <a href="http://ws.apache.org/xmlrpc/types.html" target="_blank">Apache XML-RPC</a> para ver como eram enviados bytes. Os mesmos eram enviados codificando o array de bytes (byte[]) em Base64. Pesquisei um pouco como fazer isso e achei uma <a href="http://iharder.net/current/java/base64/" target="_blank">Biblioteca Java de Base64 em dominio publico</a>. Também procurei por como <a href="http://www.java-tips.org/java-se-tips/java.io/reading-a-file-into-a-byte-array.html" target="_blank">pegar o array de bytes de um arquivo</a> e como <a href="http://www.velocityreviews.com/forums/t388750-write-byte-to-file.html" target="_blank">criar um novo arquivo apartir de um array de bytes</a> (byte[]). </p>
<p>Esses sites onde peguei ambos os métodos estão como comentarios no arquivo. </p>
<p><a href='http://www.matbra.com/2009/09/17/enviar-arquivos-via-xml-rpc-em-java/xml-rpc-transferencia-de-arquivo/' rel='attachment wp-att-497'>XML-RPC-Transferencia-De-Arquivo</a></p>
<p>Espero que seja útil,<br />
Matheus</p>
<p>PS: Da maneira como eu implementei qualquer arquivo do sistema que o Cliente XML-RPC pedir o Servidor irá enviar, isso criaria uma possivel brecha de segurança. </p>
<p>PS2: Caso deseja que o Cliente envie arquivos para o Servidor, o Cliente deve pegar o array de bytes do Arquivo, codifica-lo em base64 e passa-lo como parametro. O Servidor irá receber este parametro, decodificar após isso manipu-le o array de bytes como você desejar. </p>
]]></content:encoded>
			<wfw:commentRss>http://www.matbra.com/2009/09/17/enviar-arquivos-via-xml-rpc-em-java/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Cliente e Servidor, Java XML-RPC</title>
		<link>http://www.matbra.com/2009/05/16/cliente-e-servidor-java-xml-rpc/</link>
		<comments>http://www.matbra.com/2009/05/16/cliente-e-servidor-java-xml-rpc/#comments</comments>
		<pubDate>Sat, 16 May 2009 03:42:14 +0000</pubDate>
		<dc:creator>Matheus (X-warrior) Bratfisch</dc:creator>
				<category><![CDATA[Aprendendo]]></category>
		<category><![CDATA[java]]></category>
		<category><![CDATA[cliente]]></category>
		<category><![CDATA[servidor]]></category>
		<category><![CDATA[xmlrpc]]></category>

		<guid isPermaLink="false">http://www.matbra.com/?p=245</guid>
		<description><![CDATA[Boa noite, Como havia comentado a algum tempo atrás, estava trabalhando com um cliente XML-RPC em Java, durante a fase de desenvolvimento do mesmo tive que criar um servidor XML-RPC hipotetico para testar as funcionalidades do cliente, enquanto o servidor certo ainda não estava disponivel para minha pessoa. Resumidamente para você que não conhece XML-RPC [...]]]></description>
			<content:encoded><![CDATA[<p>Boa noite, </p>
<p>Como havia comentado a algum tempo atrás, estava trabalhando com um cliente XML-RPC em Java, durante a fase de desenvolvimento do mesmo tive que criar um servidor XML-RPC hipotetico para testar as funcionalidades do cliente, enquanto o servidor certo ainda não estava disponivel para minha pessoa.</p>
<p>Resumidamente para você que não conhece XML-RPC ele é um &#8220;formato&#8221; , um &#8220;jeito&#8221;, não sei ao certo a palavra certa para definir agora, onde você cria um servidor e o mesmo quando requisitado faz as operações necessarias e retorna um resultado. Um exemplo seria, você tem um código de criptografia que funciona MUITO bem em C, mas seu sistema é todo em Java, você poderia criar um Cliente JAVA e um Servidor C onde o Java faria requisição para Criptografar as coisas. Talvez utilizar XML-RPC de Java para Java possa ser meio estranho, mas quando os serviços estão distantes, pode ser algo util. </p>
<p>Para começar a mecher com o XML-RPC no Java eu utilizei o <a href="http://www.apache.org/dyn/closer.cgi/ws/xmlrpc/" target="_blank">apache xml-rpc</a>. Após isso apenas desenvolvi.</p>
<p>Baixe os <a href="http://www.matbra.com/?attachment_id=247">exemplos cliente e servidor xml-rpc em java</a>.</p>
<p>Servidor: </p>
<blockquote><p>package xmlrpc;</p>
<p>import org.apache.xmlrpc.server.PropertyHandlerMapping;<br />
import org.apache.xmlrpc.server.XmlRpcServer;<br />
import org.apache.xmlrpc.webserver.WebServer;</p>
<p>public class ServidorXMLRPCParaTestes {</p>
<p>	private static ServidorXMLRPCParaTestes euMesmo = null;</p>
<p>	private ServidorXMLRPCParaTestes() {<br />
		try {<br />
			WebServer server = new WebServer(8185); // Cria um servidor na porta 8185<br />
			XmlRpcServer servidor = server.getXmlRpcServer(); // Pega o servidor XmlRpc<br />
			PropertyHandlerMapping phm = new PropertyHandlerMapping();<br />
			phm.addHandler(&#8220;Calc&#8221;, Calculadora.class); // Adiciona um novo &#8220;handler&#8221; ao PHM<br />
			servidor.setHandlerMapping(phm); // Define o handler no servidor<br />
			server.start(); // inicia o servidor.<br />
		} catch (Exception exception) {<br />
			System.err.println(&#8220;JavaServer: &#8221; + exception);<br />
		}<br />
	}</p>
<p>	public static ServidorXMLRPCParaTestes obterInstÃ¢ncia() {<br />
		if (euMesmo == null)<br />
			euMesmo = new ServidorXMLRPCParaTestes();<br />
		return euMesmo;<br />
	}<br />
}
</p></blockquote>
<p>- Eu utilizeo o obterInstancia para não poder existir mais de um ServidorXMLRPC <img src='http://www.matbra.com/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /><br />
- O handler faz o seguinte, quando for chamado Calc.METODO no servidor ele irá buscar dentro do Calculadora.class </p>
<p><span id="more-245"></span></p>
<p>Handler Calculadora: </p>
<blockquote><p>package xmlrpc;</p>
<p>public class Calculadora {</p>
<p>	public int soma(int x, int y) {<br />
		return x + y;<br />
	}<br />
	public int subtracao(int x, int y) {<br />
		return x &#8211; y;<br />
	}</p>
<p>}</p></blockquote>
<p>Cliente XML-RPC generico:</p>
<blockquote><p>package xmlrpc;</p>
<p>import java.net.URL;<br />
import org.apache.xmlrpc.*;<br />
import org.apache.xmlrpc.client.XmlRpcClient;<br />
import org.apache.xmlrpc.client.XmlRpcClientConfigImpl;</p>
<p>public class ClienteXmlRpc {</p>
<p>	private static final String urlServidor = &#8220;http://localhost:8185&#8243;; //DEFINE A URL DO SERVIDOR<br />
	private XmlRpcClient xmlrpc;</p>
<p>    public ClienteXmlRpc() {<br />
    	try {<br />
    		XmlRpcClientConfigImpl configuraÃ§Ã£oCliente = new XmlRpcClientConfigImpl();<br />
    		configuraÃ§Ã£oCliente.setServerURL(new URL(urlServidor)); </p>
<p>    		xmlrpc = new XmlRpcClient();<br />
    		xmlrpc.setConfig(configuraÃ§Ã£oCliente);</p>
<p>    	} catch (Exception exception) {<br />
    		exception.printStackTrace();<br />
    	}<br />
    }</p>
<p>    public Object executar(String comando, Object[] parametros) {<br />
    	try {<br />
			Object resposta = xmlrpc.execute(comando, parametros);<br />
			return resposta;<br />
		} catch (XmlRpcException e) {<br />
			e.printStackTrace();<br />
			return null;<br />
		}<br />
    }</p>
<p>}</p></blockquote>
<p>- Acredito que o Cliente XML-RPC e o Cliente são auto-explicativos. Qualquer duvida entre em contato. </p>
<p>CalculadoraCliente: </p>
<blockquote><p>package cliente;</p>
<p>import xmlrpc.ClienteXmlRpc;</p>
<p>public class CalculadoraCliente {<br />
	private ClienteXmlRpc cliente;</p>
<p>	public CalculadoraCliente() {<br />
		cliente = new ClienteXmlRpc();<br />
	}</p>
<p>	public int soma(int x, int y) {<br />
		Object[] parametros = new Object[]{new Integer(x), new Integer(y)};<br />
		Integer resultado = (Integer) cliente.executar(&#8220;Calc.soma&#8221;, parametros);<br />
		return resultado;<br />
	}</p>
<p>	public int subtracao(int x, int y) {<br />
		Object[] parametros = new Object[]{new Integer(x), new Integer(y)};<br />
		Integer resultado = (Integer) cliente.executar(&#8220;Calc.subtracao&#8221;, parametros);<br />
		return resultado;<br />
	}<br />
}
</p></blockquote>
<p>Para rodar os mesmos e testar gerei 2 classes com main e executei as mesmas (executando primeiro o servidor é claro)</p>
<p>RodarServidor:</p>
<blockquote><p>import xmlrpc.ServidorXMLRPCParaTestes;</p>
<p>public class RodarServidor {</p>
<p>	/**<br />
	 * @param args<br />
	 */<br />
	public static void main(String[] args) {<br />
		// TODO Auto-generated method stub<br />
		ServidorXMLRPCParaTestes Servidor = ServidorXMLRPCParaTestes.obterInstÃ¢ncia();<br />
	}</p>
<p>}
</p></blockquote>
<p>RequisicaoCliente:</p>
<blockquote><p>import cliente.CalculadoraCliente;</p>
<p>public class RequisicaoCliente {</p>
<p>	/**<br />
	 * @param args<br />
	 */<br />
	public static void main(String[] args) {<br />
		CalculadoraCliente x = new CalculadoraCliente();<br />
		System.out.println(x.soma(1, 1));<br />
	}</p>
<p>}
</p></blockquote>
<p>Abraços,<br />
Matheus</p>
]]></content:encoded>
			<wfw:commentRss>http://www.matbra.com/2009/05/16/cliente-e-servidor-java-xml-rpc/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
	</channel>
</rss>
