<?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>Thiago Melo &#187; Programação</title>
	<atom:link href="http://thiago.oxente.org/category/programacao/feed" rel="self" type="application/rss+xml" />
	<link>http://thiago.oxente.org</link>
	<description>Linux, Programação, Redes e Jogos.</description>
	<lastBuildDate>Thu, 04 Feb 2010 18:03:37 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.8.6</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Logparser, script para colorir o log do Spamdyke</title>
		<link>http://thiago.oxente.org/2009/08/11/logparser-script-para-colorir-o-log-do-spamdyke</link>
		<comments>http://thiago.oxente.org/2009/08/11/logparser-script-para-colorir-o-log-do-spamdyke#comments</comments>
		<pubDate>Tue, 11 Aug 2009 19:10:50 +0000</pubDate>
		<dc:creator>Thiago Melo</dc:creator>
				<category><![CDATA[Bash]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[Programação]]></category>

		<guid isPermaLink="false">http://thiago.oxente.org/?p=181</guid>
		<description><![CDATA[Outro dia eu estava analisando os logs do Spamdyke, e me fiquei bastante confuso para acompanhar os dados pelo "tail -f", pois era muita informação na tela, que só o Neo Matrix conseguiria ler. Buscando no google, achei um shellscript que fazia um parser de um log e mostrava um resultado colorido de forma que [...]]]></description>
			<content:encoded><![CDATA[<p>Outro dia eu estava analisando os logs do <strong>Spamdyke</strong>, e me fiquei bastante confuso para acompanhar os dados pelo "tail -f", pois era muita informação na tela, que só o Neo Matrix conseguiria ler. Buscando no google, achei um <strong>shellscript</strong> que fazia um parser de um log e mostrava um resultado colorido de forma que facilitava a visualização. Peguei esse código e fiz umas modificações e adaptei ele para o <strong>SpamDyke</strong>.<br />
Não sei se ele de forma genérica funciona para todo mundo, no caso no meu <strong>Spamdyke</strong> está gerando log no <strong>syslog</strong> no nivel de mail, no caso no <strong>mailog</strong>, e sem nenhuma modificação nas configurações padrões, segue a screenshot abaixo.<br />
<a href="http://thiago.oxente.org/wp-content/uploads/2009/08/fundo4.png"><img class="aligncenter size-medium wp-image-182" title="fundo4" src="http://thiago.oxente.org/wp-content/uploads/2009/08/fundo4-300x187.png" alt="fundo4" width="300" height="187" /></a><br />
*Nota que o "spray" vermelho eu coloquei para ocultar os domínios do meu servidor.</p>
<p>Segue o código abaixo</p>
<p><span id="more-181"></span></p>
<div class="igBar"><span id="lcode-2"><a href="#" onclick="javascript:showPlainTxt('code-2'); return false;">PLAIN TEXT</a></span></div>
<div class="syntax_hilite"><span class="langName">CODE:</span>
<div id="code-2">
<div class="code">
<ol>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">#!/bin/sh</div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">RED=<span style="color:#CC0000;">"<span style="color:#000099; font-weight:bold;">\\</span>033[0;31m"</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">GREEN=<span style="color:#CC0000;">"<span style="color:#000099; font-weight:bold;">\\</span>033[0;32m"</span></div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">YELLOW=<span style="color:#CC0000;">"<span style="color:#000099; font-weight:bold;">\\</span>033[1;33m"</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">BLUE=<span style="color:#CC0000;">"<span style="color:#000099; font-weight:bold;">\\</span>033[0;34m"</span></div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">VIOLET=<span style="color:#CC0000;">"<span style="color:#000099; font-weight:bold;">\\</span>033[0;35m"</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">CYAN=<span style="color:#CC0000;">"<span style="color:#000099; font-weight:bold;">\\</span>033[0;36m"</span></div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">WHITE=<span style="color:#CC0000;">"<span style="color:#000099; font-weight:bold;">\\</span>033[1;37m"</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">NORMAL=<span style="color:#CC0000;">"<span style="color:#000099; font-weight:bold;">\0</span>33[0m"</span></div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp;</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">comando=<span style="color:#CC0000;">"tail -f /var/log/maillog | grep spamdyke | colorize"</span></div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp;</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">colorize<span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#006600; font-weight:bold;">&#41;</span> <span style="color:#006600; font-weight:bold;">&#123;</span></div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp;</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">while read LINE; do</div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">if <span style="color:#006600; font-weight:bold;">&#91;</span><span style="color:#006600; font-weight:bold;">&#91;</span> $LINE =~ <span style="color:#CC0000;">"(.*)<span style="color:#000099; font-weight:bold;">\ </span>(.*)<span style="color:#000099; font-weight:bold;">\ </span>(.*)<span style="color:#000099; font-weight:bold;">\ </span>(.*)<span style="color:#000099; font-weight:bold;">\ </span>(.*)<span style="color:#000099; font-weight:bold;">\ </span>(TIMEOUT|DENIED_IP_IN_CC_RDNS|DENIED_BLACKLIST_NAME|DENIED_OTHER|DENIED_RBL_MATCH|DENIED_RDNS_MISSING|DENIED_RDNS_RESOLVE|DENIED_GRAYLISTED|DENIED_SENDER_NO_MX)<span style="color:#000099; font-weight:bold;">\ </span>from:<span style="color:#000099; font-weight:bold;">\ </span>(.*)<span style="color:#000099; font-weight:bold;">\ </span>to:<span style="color:#000099; font-weight:bold;">\ </span>(.*)<span style="color:#000099; font-weight:bold;">\ </span>origin_ip:<span style="color:#000099; font-weight:bold;">\ </span>(.*)<span style="color:#000099; font-weight:bold;">\ </span>origin_rdns:<span style="color:#000099; font-weight:bold;">\ </span>(.*)<span style="color:#000099; font-weight:bold;">\ </span>auth:<span style="color:#000099; font-weight:bold;">\ </span>(.*)(<span style="color:#000099; font-weight:bold;">\ </span>.*)?"</span> <span style="color:#006600; font-weight:bold;">&#93;</span><span style="color:#006600; font-weight:bold;">&#93;</span>; then</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">echo -e <span style="color:#CC0000;">"${NORMAL}${BASH_REMATCH[1]} ${BASH_REMATCH[2]} ${BASH_REMATCH[3]}: ${NORMAL}${RED}${BASH_REMATCH[6]}${NORMAL} ${WHITE}${BASH_REMATCH[7]}${NORMAL} to: ${VIOLET}${BASH_REMATCH[8]}${NORMAL} from: ${VIOLET}${BASH_REMATCH[9]}${NORMAL} origin_ip: ${CYAN}${BASH_REMATCH[10]}${NORMAL} origin_rdns: ${CYAN}${BASH_REMATCH[11]}${NORMAL} auth: ${WHITE}${BASH_REMATCH[12]}${NORMAL} ${NORMAL}${BASH_REMATCH[13]}${NORMAL}"</span></div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp;</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">elif <span style="color:#006600; font-weight:bold;">&#91;</span><span style="color:#006600; font-weight:bold;">&#91;</span> $LINE =~ <span style="color:#CC0000;">"(.*)<span style="color:#000099; font-weight:bold;">\ </span>(.*)<span style="color:#000099; font-weight:bold;">\ </span>(.*)<span style="color:#000099; font-weight:bold;">\ </span>(.*)<span style="color:#000099; font-weight:bold;">\ </span>(.*)<span style="color:#000099; font-weight:bold;">\ </span>(ALLOWED)<span style="color:#000099; font-weight:bold;">\ </span>from:<span style="color:#000099; font-weight:bold;">\ </span>(.*)<span style="color:#000099; font-weight:bold;">\ </span>to:<span style="color:#000099; font-weight:bold;">\ </span>(.*)<span style="color:#000099; font-weight:bold;">\ </span>origin_ip:<span style="color:#000099; font-weight:bold;">\ </span>(.*)<span style="color:#000099; font-weight:bold;">\ </span>origin_rdns:<span style="color:#000099; font-weight:bold;">\ </span>(.*)<span style="color:#000099; font-weight:bold;">\ </span>auth:<span style="color:#000099; font-weight:bold;">\ </span>(.*)(<span style="color:#000099; font-weight:bold;">\ </span>.*)?"</span> <span style="color:#006600; font-weight:bold;">&#93;</span><span style="color:#006600; font-weight:bold;">&#93;</span>; then</div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">echo -e <span style="color:#CC0000;">"${NORMAL}${BASH_REMATCH[1]} ${BASH_REMATCH[2]} ${BASH_REMATCH[3]}: ${NORMAL}${GREEN}${BASH_REMATCH[6]}${NORMAL} ${WHITE}${BASH_REMATCH[7]}${NORMAL} to: ${VIOLET}${BASH_REMATCH[8]}${NORMAL} from: ${VIOLET}${BASH_REMATCH[9]}${NORMAL} origin_ip: ${CYAN}${BASH_REMATCH[10]}${NORMAL} origin_rdns: ${CYAN}${BASH_REMATCH[11]}${NORMAL} auth: ${WHITE}${BASH_REMATCH[12]}${NORMAL} ${NORMAL}${BASH_REMATCH[13]}${NORMAL}"</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp;</div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">elif <span style="color:#006600; font-weight:bold;">&#91;</span><span style="color:#006600; font-weight:bold;">&#91;</span> $LINE =~ <span style="color:#CC0000;">"(.*)<span style="color:#000099; font-weight:bold;">\ </span>(.*)<span style="color:#000099; font-weight:bold;">\ </span>(.*)<span style="color:#000099; font-weight:bold;">\ </span>(.*)<span style="color:#000099; font-weight:bold;">\ </span>(.*)<span style="color:#000099; font-weight:bold;">\ </span>FILTER_RBL_MATCH<span style="color:#000099; font-weight:bold;">\ </span>ip:<span style="color:#000099; font-weight:bold;">\ </span>(.*)<span style="color:#000099; font-weight:bold;">\ </span>rbl:<span style="color:#000099; font-weight:bold;">\ </span>(.*)"</span> <span style="color:#006600; font-weight:bold;">&#93;</span><span style="color:#006600; font-weight:bold;">&#93;</span>; then</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">echo -e <span style="color:#CC0000;">"${NORMAL}${BASH_REMATCH[1]} ${BASH_REMATCH[2]} ${BASH_REMATCH[3]}: ${YELLOW}FILTER_RBL_MATCH${NORMAL} ip: ${CYAN}${BASH_REMATCH[6]}${NORMAL} rbl: ${WHITE}${BASH_REMATCH[7]}${NORMAL}"</span></div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp;</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">elif <span style="color:#006600; font-weight:bold;">&#91;</span><span style="color:#006600; font-weight:bold;">&#91;</span> $LINE =~ <span style="color:#CC0000;">"(.*)<span style="color:#000099; font-weight:bold;">\ </span>(.*)<span style="color:#000099; font-weight:bold;">\ </span>(.*)<span style="color:#000099; font-weight:bold;">\ </span>(.*)<span style="color:#000099; font-weight:bold;">\ </span>(.*)<span style="color:#000099; font-weight:bold;">\ </span>FILTER_RDNS_MISSING<span style="color:#000099; font-weight:bold;">\ </span>ip:<span style="color:#000099; font-weight:bold;">\ </span>(.*)"</span> <span style="color:#006600; font-weight:bold;">&#93;</span><span style="color:#006600; font-weight:bold;">&#93;</span>; then</div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">echo -e <span style="color:#CC0000;">"${NORMAL}${BASH_REMATCH[1]} ${BASH_REMATCH[2]} ${BASH_REMATCH[3]}: ${YELLOW}FILTER_RDNS_MISSING${NORMAL} ip: ${CYAN}${BASH_REMATCH[6]}${NORMAL}"</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp;</div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">elif <span style="color:#006600; font-weight:bold;">&#91;</span><span style="color:#006600; font-weight:bold;">&#91;</span> $LINE =~ <span style="color:#CC0000;">"(.*)<span style="color:#000099; font-weight:bold;">\ </span>(.*)<span style="color:#000099; font-weight:bold;">\ </span>(.*)<span style="color:#000099; font-weight:bold;">\ </span>(.*)<span style="color:#000099; font-weight:bold;">\ </span>(.*)<span style="color:#000099; font-weight:bold;">\ </span>FILTER_EARLYTALKER<span style="color:#000099; font-weight:bold;">\ </span>delay:<span style="color:#000099; font-weight:bold;">\ </span>(.*)"</span> <span style="color:#006600; font-weight:bold;">&#93;</span><span style="color:#006600; font-weight:bold;">&#93;</span>; then</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">echo -e <span style="color:#CC0000;">"${NORMAL}${BASH_REMATCH[1]} ${BASH_REMATCH[2]} ${BASH_REMATCH[3]}: ${YELLOW}FILTER_EARLYTALKER${NORMAL} delay: ${WHITE}${BASH_REMATCH[6]}${NORMAL}"</span></div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp;</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">elif <span style="color:#006600; font-weight:bold;">&#91;</span><span style="color:#006600; font-weight:bold;">&#91;</span> $LINE =~ <span style="color:#CC0000;">"(.*)<span style="color:#000099; font-weight:bold;">\ </span>(.*)<span style="color:#000099; font-weight:bold;">\ </span>(.*)<span style="color:#000099; font-weight:bold;">\ </span>(.*)<span style="color:#000099; font-weight:bold;">\ </span>(.*)<span style="color:#000099; font-weight:bold;">\ </span>FILTER_RECIPIENT_WHITELIST<span style="color:#000099; font-weight:bold;">\ </span>recipient:<span style="color:#000099; font-weight:bold;">\ </span>(.*)<span style="color:#000099; font-weight:bold;">\ </span>file:<span style="color:#000099; font-weight:bold;">\ </span>(.*)<span style="color:#000099; font-weight:bold;">\(</span>(.*)<span style="color:#000099; font-weight:bold;">\)</span>"</span> <span style="color:#006600; font-weight:bold;">&#93;</span><span style="color:#006600; font-weight:bold;">&#93;</span>; then</div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">echo -e <span style="color:#CC0000;">"${NORMAL}${BASH_REMATCH[1]} ${BASH_REMATCH[2]} ${BASH_REMATCH[3]}: ${YELLOW}FILTER_RECIPIENT_WHITELIST${NORMAL} recipient: ${VIOLET}${BASH_REMATCH[6]}${NORMAL} file: ${WHITE}${BASH_REMATCH[7]}${NORMAL}(${YELLOW}${BASH_REMATCH[8]}${NORMAL})"</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp;</div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">elif <span style="color:#006600; font-weight:bold;">&#91;</span><span style="color:#006600; font-weight:bold;">&#91;</span> $LINE =~ <span style="color:#CC0000;">"(.*)<span style="color:#000099; font-weight:bold;">\ </span>(.*)<span style="color:#000099; font-weight:bold;">\ </span>(.*)<span style="color:#000099; font-weight:bold;">\ </span>(.*)<span style="color:#000099; font-weight:bold;">\ </span>(.*)<span style="color:#000099; font-weight:bold;">\ </span>(FILTER_BLACKLIST_NAME|FILTER_WHITELIST_NAME)<span style="color:#000099; font-weight:bold;">\ </span>ip:<span style="color:#000099; font-weight:bold;">\ </span>(.*)<span style="color:#000099; font-weight:bold;">\ </span>rdns:<span style="color:#000099; font-weight:bold;">\ </span>(.*)<span style="color:#000099; font-weight:bold;">\ </span>file:<span style="color:#000099; font-weight:bold;">\ </span>(.*)<span style="color:#000099; font-weight:bold;">\(</span>(.*)<span style="color:#000099; font-weight:bold;">\)</span>"</span> <span style="color:#006600; font-weight:bold;">&#93;</span><span style="color:#006600; font-weight:bold;">&#93;</span>; then</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">echo -e <span style="color:#CC0000;">"${NORMAL}${BASH_REMATCH[1]} ${BASH_REMATCH[2]} ${BASH_REMATCH[3]}: ${YELLOW}${BASH_REMATCH[6]}${NORMAL} ip: ${VIOLET}${BASH_REMATCH[7]}${NORMAL} rdns: ${CYAN}${BASH_REMATCH[8]}${NORMAL} file: ${WHITE}${BASH_REMATCH[9]}${NORMAL}(${YELLOW}${BASH_REMATCH[10]}${NORMAL})"</span></div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp;</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">elif <span style="color:#006600; font-weight:bold;">&#91;</span><span style="color:#006600; font-weight:bold;">&#91;</span> $LINE =~ <span style="color:#CC0000;">"(.*)<span style="color:#000099; font-weight:bold;">\ </span>(.*)<span style="color:#000099; font-weight:bold;">\ </span>(.*)<span style="color:#000099; font-weight:bold;">\ </span>(.*)<span style="color:#000099; font-weight:bold;">\ </span>(.*)<span style="color:#000099; font-weight:bold;">\ </span>FILTER_WHITELIST_IP<span style="color:#000099; font-weight:bold;">\ </span>ip:<span style="color:#000099; font-weight:bold;">\ </span>(.*)<span style="color:#000099; font-weight:bold;">\ </span>file:<span style="color:#000099; font-weight:bold;">\ </span>(.*)<span style="color:#000099; font-weight:bold;">\(</span>(.*)<span style="color:#000099; font-weight:bold;">\)</span>"</span> <span style="color:#006600; font-weight:bold;">&#93;</span><span style="color:#006600; font-weight:bold;">&#93;</span>; then</div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">echo -e <span style="color:#CC0000;">"${NORMAL}${BASH_REMATCH[1]} ${BASH_REMATCH[2]} ${BASH_REMATCH[3]}: ${YELLOW}FILTER_WHITELIST_IP${NORMAL} ip: ${VIOLET}${BASH_REMATCH[6]}${NORMAL} file: ${WHITE}${BASH_REMATCH[7]}${NORMAL}(${YELLOW}${BASH_REMATCH[8]}${NORMAL})"</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp;</div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">elif <span style="color:#006600; font-weight:bold;">&#91;</span><span style="color:#006600; font-weight:bold;">&#91;</span> $LINE =~ <span style="color:#CC0000;">"(.*)<span style="color:#000099; font-weight:bold;">\ </span>(.*)<span style="color:#000099; font-weight:bold;">\ </span>(.*)<span style="color:#000099; font-weight:bold;">\ </span>(.*)<span style="color:#000099; font-weight:bold;">\ </span>(.*)<span style="color:#000099; font-weight:bold;">\ </span>FILTER_SENDER_NO_MX<span style="color:#000099; font-weight:bold;">\ </span>domain:<span style="color:#000099; font-weight:bold;">\ </span>(.*)"</span> <span style="color:#006600; font-weight:bold;">&#93;</span><span style="color:#006600; font-weight:bold;">&#93;</span>; then</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">echo -e <span style="color:#CC0000;">"${NORMAL}${BASH_REMATCH[1]} ${BASH_REMATCH[2]} ${BASH_REMATCH[3]}: ${YELLOW}FILTER_SENDER_NO_MX${NORMAL} domain: ${VIOLET}${BASH_REMATCH[6]}${NORMAL}"</span></div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp;</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">elif <span style="color:#006600; font-weight:bold;">&#91;</span><span style="color:#006600; font-weight:bold;">&#91;</span> $LINE =~ <span style="color:#CC0000;">"(.*)<span style="color:#000099; font-weight:bold;">\ </span>(.*)<span style="color:#000099; font-weight:bold;">\ </span>(.*)<span style="color:#000099; font-weight:bold;">\ </span>(.*)<span style="color:#000099; font-weight:bold;">\ </span>(.*)<span style="color:#000099; font-weight:bold;">\ </span>FILTER_GRAYLISTED<span style="color:#000099; font-weight:bold;">\ </span>sender:<span style="color:#000099; font-weight:bold;">\ </span>(.*)<span style="color:#000099; font-weight:bold;">\ </span>recipient:<span style="color:#000099; font-weight:bold;">\ </span>(.*)<span style="color:#000099; font-weight:bold;">\ </span>path:<span style="color:#000099; font-weight:bold;">\ </span>(.*)"</span> <span style="color:#006600; font-weight:bold;">&#93;</span><span style="color:#006600; font-weight:bold;">&#93;</span>; then</div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">echo -e <span style="color:#CC0000;">"${NORMAL}${BASH_REMATCH[1]} ${BASH_REMATCH[2]} ${BASH_REMATCH[3]}: ${YELLOW}FILTER_GRAYLISTED${NORMAL} sender: ${VIOLET}${BASH_REMATCH[6]}${NORMAL} recipient: ${VIOLET}${BASH_REMATCH[7]}${NORMAL} path: ${WHITE}${BASH_REMATCH[8]}${NORMAL}"</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp;</div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">elif <span style="color:#006600; font-weight:bold;">&#91;</span><span style="color:#006600; font-weight:bold;">&#91;</span> $LINE =~ <span style="color:#CC0000;">"(.*)<span style="color:#000099; font-weight:bold;">\ </span>(.*)<span style="color:#000099; font-weight:bold;">\ </span>(.*)<span style="color:#000099; font-weight:bold;">\ </span>(.*)<span style="color:#000099; font-weight:bold;">\ </span>(.*)<span style="color:#000099; font-weight:bold;">\ </span>FILTER_OTHER:<span style="color:#000099; font-weight:bold;">\ </span>response:<span style="color:#000099; font-weight:bold;">\ </span>(.*)"</span> <span style="color:#006600; font-weight:bold;">&#93;</span><span style="color:#006600; font-weight:bold;">&#93;</span>; then</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">echo -e <span style="color:#CC0000;">"${NORMAL}${BASH_REMATCH[1]} ${BASH_REMATCH[2]} ${BASH_REMATCH[3]}: ${YELLOW}FILTER_OTHER:${NORMAL} response: ${WHITE}${BASH_REMATCH[6]}${NORMAL}"</span></div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp;</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">elif <span style="color:#006600; font-weight:bold;">&#91;</span><span style="color:#006600; font-weight:bold;">&#91;</span> $LINE =~ <span style="color:#CC0000;">"(.*)<span style="color:#000099; font-weight:bold;">\ </span>(.*)<span style="color:#000099; font-weight:bold;">\ </span>(.*)<span style="color:#000099; font-weight:bold;">\ </span>(.*)<span style="color:#000099; font-weight:bold;">\ </span>(.*)<span style="color:#000099; font-weight:bold;">\ </span>DENIED_BLACKLIST_NAME:<span style="color:#000099; font-weight:bold;">\ </span>response:<span style="color:#000099; font-weight:bold;">\ </span>(.*)"</span> <span style="color:#006600; font-weight:bold;">&#93;</span><span style="color:#006600; font-weight:bold;">&#93;</span>; then</div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">echo -e <span style="color:#CC0000;">"${NORMAL}${BASH_REMATCH[1]} ${BASH_REMATCH[2]} ${BASH_REMATCH[3]}: ${RED}DENIED_BLACKLIST_NAME:${NORMAL} response: ${WHITE}${BASH_REMATCH[6]}${NORMAL}"</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp;</div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">elif <span style="color:#006600; font-weight:bold;">&#91;</span><span style="color:#006600; font-weight:bold;">&#91;</span> $LINE =~ <span style="color:#CC0000;">"(.*)<span style="color:#000099; font-weight:bold;">\ </span>(.*)<span style="color:#000099; font-weight:bold;">\ </span>(.*)<span style="color:#000099; font-weight:bold;">\ </span>(.*)<span style="color:#000099; font-weight:bold;">\ </span>(.*)<span style="color:#000099; font-weight:bold;">\ </span>(FILTER_RDNS_RESOLVE|FILTER_IP_IN_CC_RDNS)<span style="color:#000099; font-weight:bold;">\ </span>ip:<span style="color:#000099; font-weight:bold;">\ </span>(.*)<span style="color:#000099; font-weight:bold;">\ </span>rdns:<span style="color:#000099; font-weight:bold;">\ </span>(.*)"</span> <span style="color:#006600; font-weight:bold;">&#93;</span><span style="color:#006600; font-weight:bold;">&#93;</span>; then</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">echo -e <span style="color:#CC0000;">"${NORMAL}${BASH_REMATCH[1]} ${BASH_REMATCH[2]} ${BASH_REMATCH[3]}: ${YELLOW}${BASH_REMATCH[6]}${NORMAL} ip: ${VIOLET}${BASH_REMATCH[7]}${NORMAL} rdns: ${WHITE}${BASH_REMATCH[8]}${NORMAL}"</span></div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp;</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">elif <span style="color:#006600; font-weight:bold;">&#91;</span><span style="color:#006600; font-weight:bold;">&#91;</span> $LINE =~ <span style="color:#CC0000;">"(.*)<span style="color:#000099; font-weight:bold;">\ </span>(.*)<span style="color:#000099; font-weight:bold;">\ </span>(.*)<span style="color:#000099; font-weight:bold;">\ </span>(.*)<span style="color:#000099; font-weight:bold;">\ </span>(.*)<span style="color:#000099; font-weight:bold;">\ </span>ERROR"</span> <span style="color:#006600; font-weight:bold;">&#93;</span><span style="color:#006600; font-weight:bold;">&#93;</span>; then</div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">echo -e <span style="color:#CC0000;">"${NORMAL}${BASH_REMATCH[1]} ${BASH_REMATCH[2]} ${BASH_REMATCH[3]}: ${RED}ERROR${NORMAL} sender: ${VIOLET}${BASH_REMATCH[6]}${NORMAL} recipient: ${VIOLET}${BASH_REMATCH[7]}${NORMAL} path: ${WHITE}${BASH_REMATCH[8]}${NORMAL}"</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp;</div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">else</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">echo -e <span style="color:#CC0000;">"${CYAN}FIXME${NORMAL} ${YELLOW}${LINE}${NORMAL}"</span></div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">fi</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">done</div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp;</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color:#006600; font-weight:bold;">&#125;</span></div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">eval $comando </div>
</li>
</ol>
</div>
</div>
</div>
<p></p>
]]></content:encoded>
			<wfw:commentRss>http://thiago.oxente.org/2009/08/11/logparser-script-para-colorir-o-log-do-spamdyke/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Nintendo Wii Softmod, rode backup dos seus jogos sem modificar o hardware do seu Wii</title>
		<link>http://thiago.oxente.org/2009/04/20/nintendo-wii-softmod-rode-backup-dos-seus-jogos-sem-modificar-o-hardware-do-seu-wii</link>
		<comments>http://thiago.oxente.org/2009/04/20/nintendo-wii-softmod-rode-backup-dos-seus-jogos-sem-modificar-o-hardware-do-seu-wii#comments</comments>
		<pubDate>Mon, 20 Apr 2009 04:19:39 +0000</pubDate>
		<dc:creator>Thiago Melo</dc:creator>
				<category><![CDATA[Hardware]]></category>
		<category><![CDATA[Jogos]]></category>
		<category><![CDATA[Nintendo Wii]]></category>
		<category><![CDATA[Programação]]></category>
		<category><![CDATA[cios]]></category>
		<category><![CDATA[homebrew]]></category>
		<category><![CDATA[softmod]]></category>
		<category><![CDATA[twilight hack]]></category>
		<category><![CDATA[wad]]></category>
		<category><![CDATA[wii]]></category>
		<category><![CDATA[wiibre]]></category>

		<guid isPermaLink="false">http://thiago.oxente.org/?p=124</guid>
		<description><![CDATA[
Conforme eu citei no post anterior a este, eu comprei um nintendo Wii. Na hora de comprar eu pesquisei bastante, e eu só encontrava Wii modificado com ModChip, onde um chip é instalado com solda ou colocado (via Wiiclip) na placa do Wii. No post sobre como abrir o PS2 eu estava tentando descobrir qual [...]]]></description>
			<content:encoded><![CDATA[<p style="text-align: center;"><img class="aligncenter" title="wii" src="http://i17.photobucket.com/albums/b55/reiserfs/Nintendo_WII_1.gif" alt="" width="210" height="210" /></p>
<p style="text-align: left;">Conforme eu citei no post anterior a este, eu comprei um nintendo Wii. Na hora de comprar eu pesquisei bastante, e eu só encontrava Wii modificado com ModChip, onde um chip é instalado com solda ou colocado (via Wiiclip) na placa do Wii. No post sobre como abrir o PS2 eu estava tentando descobrir qual era meu ModChip, pois meu PS2 era modificado, tentei descobrir qual chip estava sendo utilizado pois eu queria rodar jogos pela porta USB do PSTwo, porem infelizmente o chip que eu tinha não era compatível. Com isso fiquei cismado com os ModChip, pois usar a USB para jogar é uma economia de mídia enorme.</p>
<p>Quando eu pesquisei sobre ModChip do Wii, achei pouca informação técnica e muita opinião pessoal dos jogadores sobre os ModChip, no final eu acabei encontrando um tal de SoftMod, que nada mais é que uma modificação via software, onde nada precisa ser colocado na placa do Wii, achei esse mais interessante até porque sou uma negação em eletrônica e nunca eu iria poder reinar com o ModChip e ficar sempre dependendo de um Técnico.</p>
<p>Bom como o texto é grande vou fazer separado em outra página e colocar toda a informação que possuo e mostrar o passo a passo e como eu fiz o softmod do meu Wii, esse post eu dedico aos possuidores de Wii do <a href="http://killermonkeys.net" target="_blank">Killer Monkeys Brasil</a>, Palmito e Alessandra, e para um futuro dono o Ralfus.</p>
<p><span id="more-124"></span><strong>.HISTÓRIA</strong><br />
Primeiro vou contar a história do SoftMod e como ele se tornou possivel. Um dia um grupo de hackers conhecidos como Team Twiizers que adoram fuçar nas coisas descobriu uma vulnerabilidade no Savegame do Zelda: The Twilight Princess (agora todos sabem porque comprei esse jogo hehehe), onde é possível através de um exploit causar um <a href="http://en.wikipedia.org/wiki/Stack_smashing" target="_blank"><em>Buffer Overflow</em></a> no Wii e com isso instalar e executar programas no sistema operacional do Wii. O nome desse exploit ficou conhecido como <strong>Twilight Hack</strong>.</p>
<p>A vulnerabilidade esta no nome do cavalo do Zelda, onde você pode escolher o nome dele (Epona por padrão) o Hack então se aproveita disso para causar o overflow.</p>
<p>Através do <strong>Twilight Hack</strong>, vários outros desenvolvedores começaram a desenvolver programas para rodar no Wii, esses programas caseiros são chamados de Homebrew, o mais famoso desses programas é o <strong>Homebrew Channel</strong>, onde um novo canal é instalado no Wii e através desse canal você consegue instalar novos Homebrew, e não precisa mais usar o <strong>Twilight Hack</strong>.</p>
<p><strong><br />
.O QUE VAMOS FAZER</strong><br />
Nesse tutorial vou demonstrar como usar o Twilight Hack para instalar o Homebrew Channel, e como instalar no seu Homebrew Channel o Backup Loader e o SD/USBLoader, onde você vai poder jogar com a cópia do seu jogo e não precisar ficar usando o DVD original.</p>
<p><strong><br />
.GLOSSÁRIO<br />
Twilight Hack:</strong> Exploit usado para instalar programas<br />
<strong>Homebrew Channel (HBC):</strong> Canal novo que permite a instalação de programas<br />
<strong>IOS:</strong> O IOS é o sistema operacional do Wii, ele possui internamente vários IOS em diferentes slots, o IOS mais importante que devemos saber aqui é o IOS249 que é um IOS não oficial da Nintendo, ele permite que o Backup Laucher e o SD/USBLoader funcionem.<br />
<strong>WAD:</strong> O WAD não tem nada com os arquivos WAD do DOOM, os arquivos .WAD são os canais do Wii, se algum programa vem no formato Wad, é que ele vai ficar instalado como canal do Wii, você deve ter muito cuidado com os Wad, pois um Wad mal formado pode impedir que seu Wii inicie.<br />
<strong>.dol e .elf</strong>: Esses são os arquivos executáveis do Wii, os programas quase todos vão vir .dol até agora não vi .elf, mas segundo as informações, eles existem.</p>
<p><strong><br />
.VERSÃO DO WII</strong><br />
É muito importante que você não atualize seu Wii, pois a ultima versão 4.0, impede a execução do exploit Twilight Hack. Para saber a versão do seu Wii, ligue o mesmo, vá no setup do Wii, depois em Settings, e ai você vai ver no topo a direita qual é a versão do seu Wii, por exemplo o meu é 3.3U (U = Console Americano, E = Console Europeu, J = Console Japa). Se o seu console estiver na 4.0 então não vai funcionar, eu vi que tem métodos de da downgrade do Wii mas nao pesquisei a fundo, e também ouvi falar de um exploit novo para 4.0 mas também não sei onde, Google IT.</p>
<p><strong><br />
.O QUE PRECISA PARA FAZER O SOFTMOD</strong><br />
- 1 Nintendo Wii Travado, sem Modchip e sem estar na versão 4.0, de preferencia na 3.3 (outras versões abaixo da 4.0 funcionam também).<br />
- 1 Jogo Original Zelda: Twilight Princess, se não tiver pegue emprestado, alugue na locadora ou compre.<br />
- 1 Cartão SD, eu usei de 512MB, mas acho que até os de 64MB servem.<br />
- 1 Pen drive USB de 4GB ou mais (um de 2GB acho que da para testar também), o Pendrive vai ser para testar o USBLoader.<br />
- 1 Leitor de cartão SD para PC.<br />
<strong><span style="color: #ff6600;">- 1 No-Break (não é necessário mas eu recomendo para quem é mais noiado com a rede elétrica de casa, como a instalação não modifica nada no Wii não creio que uma queda de energia venha modificar o console, mas nunca se sabe).</span></strong></p>
<p><strong>. SOFTWARES UTILIZADOS</strong><br />
- Twilight Hack -&gt; <a href="http://hbc.hackmii.com/download/" target="_blank">http://hbc.hackmii.com/download/</a><br />
- Homebrew Channel -&gt; <a href="http://hbc.hackmii.com/download/" target="_blank">http://hbc.hackmii.com/download/</a><br />
- cIOS36_rev10_Installer -&gt; <a href="http://www.teknoconsolas.es/blog/waninkoko/custom-ios36-rev-10" target="_blank">http://www.teknoconsolas.es/blog/waninkoko/custom-ios36-rev-10</a><br />
- Wad Manager 3.1 -&gt; <a href="http://www.teknoconsolas.es/blog/waninkoko/wad-manager-v13" target="_blank">http://www.teknoconsolas.es/blog/waninkoko/wad-manager-v13</a><br />
- SD/USBLoader 1.5 -&gt; <a href="http://www.teknoconsolas.es/blog/waninkoko/sdusb-loader-v15" target="_blank">http://www.teknoconsolas.es/blog/waninkoko/sdusb-loader-v15</a><br />
- Backup Launcher 0.3 Gamma -&gt; <a href="http://www.iol.ie/~taz/backuplauncher0.3_gamma.zip" target="_blank">http://www.iol.ie/~taz/backuplauncher0.3_gamma.zip</a><br />
- Backup Launcher 0.3 Gamma WAD -&gt; <a href="http://www.wiivamp.com/online/templatemedia/all_lang/resources/Backup_loader_0.3_from_wiivamp.rar" target="_blank">WiiVamp.com</a><br />
- WBFS Manager 2.2.2 -&gt; <a href="http://wbfsmanager.codeplex.com/Release/ProjectReleases.aspx?ReleaseId=26148" target="_blank">http://wbfsmanager.codeplex.com/Release/ProjectReleases.aspx?ReleaseId=26148</a><br />
- WinRAR -&gt; <a href="http://www.rarlab.com" target="_blank">http://www.rarlab.com</a> (instale logo o Winrar no seu PC antes de prosseguir).</p>
<p><strong>.LINKS DE REFERENCIA</strong><br />
http://wiibrew.org/wiki/Homebrew_Channel<br />
http://wiibrew.org/wiki/Twilight_Hack<br />
http://www.teknoconsolas.es/blogs/Waninkoko<br />
http://gbatemp.net/index.php?showforum=108<br />
http://www.wiivamp.com/<br />
http://forum.wiibrew.org/<br />
http://www.ovelhainflavel.com/index.php</p>
<p><strong>.DEFINIÇÃO DE VERSÕES PARA O TWILIGHT HACK</strong><br />
.. Versão Wii<br />
... Se a versão do seu Wii for 3.3 ou menor baixe o twilight-hack-v0.1-beta1.zip (Beta 1)<br />
... Se a versão do seu Wii for 3.4 baixe o twilight-hack-v0.1-beta2.zip (Beta 2)<br />
.. Versão do Zelda<br />
<img class="alignleft" title="ZeldaSerial" src="http://i17.photobucket.com/albums/b55/reiserfs/wiihack/180px-Twilight_Serial.jpg" alt="" width="180" height="94" /><br />
Veja o serial do seu Zelda na parte central do DVD, conforme a imagem ao lado, nele contem um numero de serie do jogo, e de acordo com a tabela abaixo você deve usar o Twilight Hack correspondente. Esse hack vai ser o que você vai carregar no jogo. No meu caso o Zelda era o 0A-2 USA então usei o rzde/data.bin e o save TwilighHack2.</p>
<table class="wikitable" style="width: 700px; text-align: center; font-size: 90%;" border="0">
<tbody>
<tr>
<th>Região</th>
<th> Serial</th>
<th> Arquivo</th>
<th> Hack</th>
</tr>
<tr>
<td>Europe/Australia (EUR)</td>
<td>RVL-RZDP-0A-0 JPN</td>
<td>/private/wii/title/rzdp/data.bin</td>
<td>Twilight Hack</td>
</tr>
<tr>
<td>Asia (JPN)</td>
<td>RVL-RZDJ-0A-0 JPN</td>
<td>/private/wii/title/rzdj/data.bin</td>
<td>Twilight Hack</td>
</tr>
<tr>
<td>America (USA)</td>
<td>RVL-RZDE-0A-0 JPN</td>
<td>/private/wii/title/rzde/data.bin</td>
<td>TwilightHack0</td>
</tr>
<tr>
<td>America (USA)</td>
<td>RVL-RZDE-0A-0 USA</td>
<td>/private/wii/title/rzde/data.bin</td>
<td>TwilightHack0</td>
</tr>
<tr>
<td>America (USA)</td>
<td>RVL-RZDE-0A-2 USA</td>
<td>/private/wii/title/rzde/data.bin</td>
<td>TwilightHack2</td>
</tr>
</tbody>
</table>
<p style="text-align: left;">
<p><strong>1º Passo) Instalando o Homebrew Channel através do Twilight Hack.<br />
ZELDA SAVE</strong><br />
- Primeiro passo que recomendo é formatar seu SD em FAT32, faça backup dos dados, e formate deixando ele limpo.<br />
- Ligue o Wii coloque o Zelda, crie um save game, jogue um pouco (se já tiver jogado antes pule essa parte).<br />
- Coloque o SD no seu Wii.<br />
- No menu do Wii escolha [Wii Options], depois [Data Management], então escolha [Save Data], logo após escolha Wii.<br />
- Procure o Save do Zelda, e logo em seguida clique no Save e depois clique em Copy  (para o SD).<br />
- Depois de ter copiado o Save para o SD, exclua o Save do Zelda que ficou no Wii (Nota: Apague do Wii não do SD).<br />
- Tire o SD do Wii e coloque no Computador. Nele você vai encontrar uma pasta chamada Private, Mova ou Copie esta pasta para um lugar seguro no seu PC, nela esta o Save do seu Zelda. O importante e deixar o SD limpo novamente, apague tudo dele.</p>
<p style="text-align: center;">
<p><img class="aligncenter" src="http://i17.photobucket.com/albums/b55/reiserfs/wiihack/DSC04177-1.jpg" alt="" width="480" height="360" /><br />
<img class="aligncenter" src="http://i17.photobucket.com/albums/b55/reiserfs/wiihack/DSC04179-1.jpg" alt="" width="480" height="360" /></p>
<p style="text-align: left;"><strong><br />
HACK FILES</strong><br />
- Agora vamos preparar o nosso SD para colocar os arquivos que vamos usar para instalar o Homebrew Channel.<br />
- Abra o arquivo Zip do Twilight Hack que você baixou de acordo com a versão do seu Wii, twilight-hack-v0.1-betaX.zip (X e a versão).<br />
- Nele vai ter uma pasta chamada private, com a mesma estrutura que o Wii tinha criado quando você salvou o Save do Zelda no SD, só que nessa pasta tem os Save para todas as 3 regiões do Wii (USA, EUROPE, JAPAN).<br />
- Extraia o conteúdo do arquivo ZIP em algum lugar e copie a pasta "private" do ZIP na raíz do SD.<br />
- Pronto o SD está pronto para fazer o buffer overflow no Wii, porém ainda precisamos colocar o programa que queremos executar, no caso será o instalador do Homebrew Channel.<br />
- Abra o arquivo ZIP do instalador do Homebrew Channel que você deve ter baixado conforme a lista lá em cima de Softwares Utilizados, nele vai ter uma pasta chamada Wiiload, que não vamos usar pois ela e para outra coisa (enviar programas pela rede), na pasta também vai ter um arquivo chamado boot.dol, esse arquivo é o nosso instalador, então extraia este arquivo do ZIP e coloque na raíz do seu SD.<br />
Seu SD deve ficar assim:<br />
- private/<br />
- boot.dol</p>
<p><strong>SHOW TIME</strong><br />
- Agora pegue seu SD, que está prontinho para instalar o Homebrew Channel, e coloque no Wii.<br />
- Va novamente no [Data Management], clique na aba [SD Card], e você devera ver 3 saves chamados Twilight Hack, cada um de uma região diferente (USA, EUR, JAP). Escolha o da sua Região (lembre a versão do seu Wii, 3.3 U/E/J), e copie para o Wii escolhendo [Copy].<br />
- Pronto agora o Hack está instalado na memória do Wii, agora vamos executa-lo.<br />
- Coloque o DVD do Zelda, e inicie o Jogo.<br />
- Se sua região foi USA, na hora de carregar o save game irá aparecer dois savegames, TwilightHack0 e TwilightHack2, escolha a versão de acordo com o numero de série do seu Zelda.<br />
- Assim que o jogo iniciar ande para trás ou converse com o NPC, quando ele for falar o nome do cavalo do Link, o exploit vai entrar em ação, uma tela preta com um texto vai aparecer, o exploit vai executar então o boot.dol que é o instalador do HBC, e agora é somente seguir as instruções.<br />
- A tela vai dizer quais botões você pode usar para Accept ou para Cancel, com o Wiimote o (1) é o botão usado para Accept, se você está seguro em prosseguir com a instalação de Accept em tudo, recomendo que leia todas as telas, a primeira tela é para saber se você aceita as condições de uso do programa, a segunda e se você está pronto para instalar, a terceira é para dizer que tudo está OK e seu Wii vai reiniciar.<br />
- Depois de reiniciar o Wii um novo canal deverá aparecer, o Homebrew Channel, então a instalação foi um sucesso, e ela é bem rápida.<br />
- Agora vamos para o proximo passo que será remover os arquivos de instalação do HBC, o exploit, e colocar os Homebrews que queremos usar.
</p>
<p style="text-align: center;"><img class="alignnone" src="http://i17.photobucket.com/albums/b55/reiserfs/picture2cm7yl31.png" alt="" width="259" height="199" /><br />
Veja um video do youtube demonstrando como são os passos dessa instalação (não foi feito por mim).<br />
<a href="http://www.youtube.com/watch?v=IzbpwTK1fOs"><img src="http://img.youtube.com/vi/IzbpwTK1fOs/default.jpg" width="130" height="97" border=0></a></p>
<p style="text-align: left;"><strong>2º Passo) Preparando o SD para a instalação dos Homebrews</strong><br />
- Pegue o SD e remova do Wii e coloque novamente no PC, após carregar o SD no PC, exclua a pasta private e o arquivo boot.dol da raíz do SD.<br />
- Você pode novamente colocar o Save original do Zelda de volta no SD (case você tenha salvo a pasta) para recuperar seu Save normal do jogo e remover o exploit do Wii.<br />
- Agora vamos montar a estrutura de diretório do HBC. O HBC procura no SD por uma pasta chamada apps, dentro da pasta apps deve ficar a pasta de cada aplicação, e na pasta da aplicação os arquivos seguinto a estrutura abaixo:<br />
SD<br />
\_apps<br />
__\_AplicativoX<br />
___\_boot.dol<br />
___\_icon.png<br />
___\_meta.xml<br />
__\_AplicativoY<br />
___ \_boot.dol<br />
___ \_icon.png<br />
___ \_meta.xml<br />
- O arquivo boot.dol é o executavel do Homebrew, o icon.png é o icone dele que vai aparecer no menu do HBC, e o meta.xml contem informações do Homebrew, ambos icon e meta não são obrigatórios, porem eu recomendo por questões de organização. O USBLoader e o Wad Installer não vieram com os arquivos (icon e meta), então eu criei os mesmos. Vou colocar no final do artigo um link para download dos arquivos do meu SD.<br />
- Crie então a pasta apps no seu SD, dentro dela crie as pastas SDUSBLoader, cIOS36_rev10_Installer e WADManager<br />
- Crie uma pasta chamada wad (essa pasta será usada para instalar o canal do BackupLauncher depois).<br />
- Abra o arquivo cIOS36_rev10-Installer.zip, e extraia o cIOS36_rev10-Installer.dol, mova para a pasta cIOS36_rev10_Installer dentro do SD e renomeie para boot.dol<br />
- Abra o arquivo backuplauncher0.3_gamma.zip, e extraia para algum lugar, navegando dentro das pastas você vai encontrar uma pasta chamada Backup_Launcher, copie esta pasta com seu conteudo (boot.dol, icon.png e meta.xml) para a pasta apps do SD (detalhe nessa pasta tem um icon.png e um meta.xml para o cIOS installer, use se quiser mas eu não acho necessário).<br />
- Abra o arquivo SDUSB-Loader_v1.5.zip, extraia o arquivo SDUSB-Loader_v1.5.dol, e mova para a pasta SDUSBLoader do SD, e renomeie o arquivo para boot.dol (no final do artigo tem o icon e o meta para o SDUSBLoader).<br />
- Abre o arquivo WAD-Manager_v1.3.zip, extraia o arquivo WAD-Manager_v1.3.dol, e mova para a pasta WADManager do SD, e renomeie o arquivo para boot.dol (no final do artigo tem o icon e o meta para o WADManager).<br />
- Agora abra o arquivo Backup_loader_0.3_from_wiivamp.rar, extraia para algum lugar, e nele vai ter outro RAR chamado SD Card Files for Windows.rar, extraia esse arquivo também, e nele vai ter uma pasta wad e um arquivo na raíz chamado IOS36-64-v1042.wad, coloque o IOS36-64-v1042.wad na raíz do seu SD, e dentro da pasta WAD procure pelo Backup Launcher 0.3 Gamma compativel com seu Wii (NTSC para USA, PAL para EUR e JAP para JAP <img src='http://thiago.oxente.org/wp-includes/images/smilies/icon_razz.gif' alt=':P' class='wp-smiley' />  ), depois copie ele para a pasta wad do SD.<br />
- Pronto acho que agora finalizamos de criar a estrutura do nosso SD, remova do PC o SD e coloque no Wii.</p>
<p><strong>3º Passo) Instalando os Homebrew Backup Launcher e SD/USBLoader</strong><br />
- Com o SD pronto, vamos agora instalar os Homebrews, na verdade não vamos instalar todos pois alguns ainda vão ser executados pelo SD. Para que o SDUSBLoader e o Backup Launcher funcionem, você precisa isntalar o IOS249 no Wii, e agora é a hora que entra o cIOS36_rev10-Installer.<br />
- Com o SD no Wii, inicie seu Wii e abra o Homebrew Channel. Ele vai carregar e listar as aplicações do seu Wii, as aplicações sem icon e meta vão aparecer como o caminho do diretorio/boot.dol, procure pelo cIOS36_rev10_Installer, e depois carregue o mesmo. Ele vai abrir uma aplicação com o logotipo do site teknoconsolas.es, com as intruções a seguir.<br />
- Aceite os termos, creio que seja A o botão de aceitar, leia certinho e aceite.<br />
- Escolha a instalação via WAD (Wad install), e ai ele vai instalar o cIOS249, o processo demora mais que a instalação do HBC, mas é bem tranquila, ele vai procurar pelo IOS36-64-v1042.wad na raíz do SD para poder prosseguir com a instalação, esse IOS é uma cópia do original da nintendo, ele vai modificar o cIOS e gravar como IOS249, depois da instalação seu Wii vai reinciar.<br />
- Agora vamos testar o Backup Launcher, pegue uma cópia de um jogo Wii de boa mídia, veja aqui a lista de jogos que são compatívels com o Backup Launcher 0.3 <a href="http://wiki.gbatemp.net/wiki/index.php/Backup_Launcher_v3" target="_blank">http://wiki.gbatemp.net/wiki/index.php/Backup_Launcher_v3</a>. Se o jogo inicar sem problemas então seu Backup Launcher está OK e agora vamos para o SDUSBLoader.</p>
<p><strong>4º Passo) SD/USBLoader, a novela<br />
</strong>Primeiro vou explicar rapidinho o que é o WBFS Manager. Esse programa foi criado para trabalhar com as ISO de jogos WII, ele pega uma ISO de um jogo que normalmente é de 4.7GB e remove todo lixo e deixa somente o jogo, que no final sai as vezes menos da metade que isso, por exemplo o jogo Mario Party 8, que o jogo tem a ISO de 4.7 mas depois de passar no WBFS ele fica com 1.2GB mais ou menos. O programa é fácil d+ de usar então não vou entrar em muito detalhes sobre ele.</p>
<p>Resolvi separar o USBLoader como um novo passo pois foi o ultimo que consegui fazer "funcionar" pois apanhei muito do mesmo. Primeiro problema e que eu tenho um Pendrive de 1gb e um HD USB (gaveta) de 200GB. Então eu peguei e instalei o WBFS Manager 2.2.2, criei um ISO do jogo WALL-E pois o mesmo não funcionou via Backup Launcher, a ISO ficou 2.0GB então eu não poderia usar meu Pendrive então fui para o HDUSB, formatei ele em Fat32 usando o Fat32Formatter (demorou pra cacete), e então fui tentar usar com o SD/USBLoader.</p>
<p>Ao iniciar o Homebrew pelo HBC, ele pede para escolher entre USB ou SD e fala para apertar A para inciar, ou B para sair. Apertei A, ele não achava meu HDUSB, e dava erro (ret = -6). Então fui pesquisar na net, achei milhoes de respostas, falaram para apagar o IOS249 usando o AnyTitle Deleter, e instalar novamente, fiz isso 2x e sem sucesso, formatei o HD pelo WBFS e tambem sem sucesso, no final cansei e "quase" desisti hehehe.</p>
<p>Achei um PenDrive aqui do meu Pai de 4GB que aparentemente estava quebrado, formatei ele em FAT32 e botei no Wii, iniciei o USBLoader e denovo erro (ret = -6). Fumaça já saia da minha cabeça, então foi ai que veio a luz.<br />
Sem querer eu inciei o SD/USBLoader sem o pendrive, e ai coloquei o Pendrive depois de iniciar o programa, e então o diabo reconheceu o Pendrive e logo em seguida formatou o mesmo em WBFS, voltei o Pendrive para o PC e copiei pelo WBFS Manager a ISO do WALL-E, e voltei para o Wii e fiz o mesmo procedimento, iniciei o SD/USBLoader sem o Pendrive, coloquei o Pendrive e apertei A, ele localizou então a ISO e rodou o jogo normalmente.</p>
<p>Voltei então com o HD para tentar o mesmo macete, porem sem sucesso : /, mas no final li que alguns HDUSB não são compativeis com o esquema, e tambem não testei rodar o jogo via SD, pois meu SD é só de 512MB, mas tem um SD de 4GB que comprei chegando via correio e testarei e postarei aqui se tive sucesso.</p>
<p><strong>.CONCLUSÃO</strong><br />
- No final de toda essa minha jornada com meu Wii recen chegado, eu cheguei a conclusão que informações sobre softmod na internet não são bem concentradas, falta bastante documentação, mas os procedimentos são simples e sem risco para o Wii.<br />
- Da para usar um Wii com jogos Backup sem a necessidade de modificação do Hardware com Modchip.<br />
- Jogos Backup rodam tranquilo, porem existe uma lista de compatibilidade, onde alguns estão fora e nem com reza braba o CD de Backup vai pegar, porem para isso tem o modo USB/SD<br />
- O modo USB é ótimo o jogo carrega mais rápido, você não usa disco, não cansa o leitor, porem só consegui com Pendrive, e tem que ficar fazendo a macacada de remover e colocar o pendrive para funcionar, seria mais interessante deixar um HDUSB 24h ligado na porta cheio de ISO. Creio que isso seja possivel mas ainda vou procurar uma solução<br />
- Não testei rodar pela SD, mas creio que pela SD não vou precisar fazer as macacadas que faço via USB.<br />
- Cansei escrevendo esse artigo, aceito sugestões de alterações e adições de informações no mesmo, recomendo para quem for fazer o procedimento imprimir isso e estudar os links que botei la em cima.<br />
- Meu corretor ortográfico está bugado, então deve ter um bocado de erros aí que não vi.<br />
- Eu queria fazer um artigo com bastante imagem e menos texto, mas no final ficou assim, menos gibi e mais livro hehehe, espero que tenha sido claro e objetivo aqui nesse tutorial.</p>
<p><strong>.DOWNLOAD DO MEU SD</strong><br />
Aqui esta o link com o conteúdo atual do meu SD, tem icon e meta de alguns dos programas utilizados. <a href="http://www.megaupload.com/?d=9XLKR60G" target="_blank">http://www.megaupload.com/?d=9XLKR60G</a></p>
]]></content:encoded>
			<wfw:commentRss>http://thiago.oxente.org/2009/04/20/nintendo-wii-softmod-rode-backup-dos-seus-jogos-sem-modificar-o-hardware-do-seu-wii/feed</wfw:commentRss>
		<slash:comments>61</slash:comments>
		</item>
		<item>
		<title>Migrando o servidor de E-mail</title>
		<link>http://thiago.oxente.org/2009/02/17/migrando-o-servidor-de-e-mail</link>
		<comments>http://thiago.oxente.org/2009/02/17/migrando-o-servidor-de-e-mail#comments</comments>
		<pubDate>Tue, 17 Feb 2009 15:29:13 +0000</pubDate>
		<dc:creator>Thiago Melo</dc:creator>
				<category><![CDATA[Bash]]></category>
		<category><![CDATA[Hardware]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[Programação]]></category>
		<category><![CDATA[Redes]]></category>
		<category><![CDATA[Slackware]]></category>
		<category><![CDATA[courier]]></category>
		<category><![CDATA[dovecot]]></category>
		<category><![CDATA[dspam]]></category>
		<category><![CDATA[horde]]></category>
		<category><![CDATA[imapsync]]></category>
		<category><![CDATA[mta]]></category>
		<category><![CDATA[qmail]]></category>
		<category><![CDATA[vpopmail]]></category>
		<category><![CDATA[webmail]]></category>

		<guid isPermaLink="false">http://thiago.oxente.org/?p=113</guid>
		<description><![CDATA[Em Janeiro eu tive uma missão aqui no trabalho, que era de migrar uma velha estrutura de e-mail para uma nova e mais segura.  Antes foi retratar como foram as migrações passadas e de quantas estruturas passei até chegar nessa ultima que provavelmente foi a reta final para mim como administrador do sistema de e-mail [...]]]></description>
			<content:encoded><![CDATA[<p><img class="alignleft size-full wp-image-114" title="email" src="http://thiago.oxente.org/wp-content/uploads/2009/02/email.jpg" alt="email" width="123" height="123" />Em Janeiro eu tive uma missão aqui no trabalho, que era de migrar uma velha estrutura de e-mail para uma nova e mais segura.  Antes foi retratar como foram as migrações passadas e de quantas estruturas passei até chegar nessa ultima que provavelmente foi a reta final para mim como administrador do sistema de e-mail da empresa.</p>
<p>Quando eu fui contratado em 2005 eu encontrei um cenário não muito animador, que era:<br />
- Dois servidores COMPAQ ML370 G1 (P3 + 256Mb Ram cada)<br />
- Um desktop montado (Celeron + 128Mb Ram)<br />
Nessa estrutura rodava hospedagem de sites (Apache+PHP+Mysql) e servidor de e-mail (Postfix+Cyrus+Horde), só que a estrutura era muito bagunçada, foi feita por um funcionário que já havia saido da empresa a muito tempo e era alvo de constantes invasões e ataques.<br />
Para mudar esse cenário eu então peguei o equipamento que tinha, e refiz toda a estrutura, e um dos ML370 eu coloquei a parte de hospedagem web (APACHE+PHP+MYSQL) usando bastante restrição no php.ini principalmente a diretiva open_basedir para restringir cada virtualhost em seu diretório, e outros paramentos que eliminou de vez as invasões.</p>
<p>No cenário de E-mail eu resolvi radicalizar e mudar quase tudo, de Postfix eu mudei para a combinação de Qmail+Vpopmail e o Cyrus foi mudado para o Courier. No final das contas eu consegui migrar todas as contas do Postfix para o Qmail usando alguns scripts que encontrei na internet, somente as mensagens que não migrei, pois a estrutura antiga não tinha sistema de quota e a nova eu coloquei quota, com isso não dava para migrar as mensagens pois todo mundo iria ficar "overquota", mesmo assim foi dado um prazo para cada usuário fazer backup das mensagens.</p>
<p>[Vou dividir o post pois o texto é grande]</p>
<p><span id="more-113"></span><br />
Este novo cenário de e-mail permaneceu por muito tempo, estavel e sem problemas graves, porem foi apresentado um novo projeto para o cenário de e-mail aqui na empresa, na qual eu não faço parte, foi-se então adotado o <a href="http://www.expressolivre.org" target="_blank">Expresso Livre</a>, que trata-se de uma combinação do (<a href="http://www.egroupware.org/" target="_blank">E-groupware</a> + Postfix + Cyrus + Ldap), é um software livre brasileiro, e está sendo adotado por muitas empresas do setor publico e privado.</p>
<p>Eu estava com alguns planos e ideias de melhorar a estrutura que eu tinha criado quando cheguei aqui, porem com esse novo projeto aprovado eu desisti e larguei meu "filho", só mantendo as atualizações em dia, e dando suporte enquanto o sistema migrava para o Expresso.</p>
<p>Nesse meio tempo minha estrutura estava sobrecarregada, e com isso eu ganhei um servidor novo, um HP ML350 G4, com processador Xeon 2GHZ e 2GB de RAM, isso serviu bastante e deixou o sistema mais leve, porém ainda não era a estrutura ideal, ter apenas uma maquina "bombril" com mil e uma utilidades não é o certo. Essa maquina recebia e enviava e-mails, verificava as mensagens com antivírus e antispam, hospedava o webmail e guardava as mensagens em disco. O certo seria dividir essas tarefas em servidores diferentes, porem todo hardware novo que chegava era destinado a estrutura do expresso, que já estava funcionando com 1 domínio de 500 contas, contra 98 domínios com na media de 600 contas cada na minha estrutura.</p>
<p>O Projeto do Expresso estava muito lento, a migração demorava seculos para por um domínio, cada domínio passava por uma burocracia enorme, pois o expresso tinha um grande problema, primeiro a nova politica de que os e-mails deveriam ser nome.sobrenome@dominio e outra que o Expresso não suporta nomes iguais, como por exemplo joao.silva@dominio.com e joao.silva@outrodominio.com para ele joao.silva é uma pessoa só e isso estava gerando muita confusão, pois entre as milhares de contas de e-mails existentes o que mais vai ter é colisão de nome.<br />
Na minha estrutura como eu uso Vpopmail, joao.silva@dominio.com é diferente de  joao.silva@outrodominio.com, assim eu poderia ter quantas pessoas com o mesmo nome pois o login no vpopmail conta com todo o endereço e não apenas o que vem antes da arroba (@).</p>
<p>Em um dia negro minha estrutura deu um problema grave no HD, as fitas de backup já não suportavam o tamanho do backup que era de 60gigas e as fitas so tinham 40gb, foi um dia péssimo, eu passei uma semana inteira tentando recuperar os dados, e ainda bem que no final das contas tudo voltou ao normal, porem nesse dia eu pedi para meu chefe um investimento na estrutura antiga, já que o expresso não ia para frente. Com isso eu ganhei duas HP DL360 G5 com XEON quadcore e 4GB Ram, e ainda mais ligada ao nosso cluster podendo usar a Library para backup.</p>
<p>Com esse equipamento eu resolvi então montar uma estrutura dividida e mais organizada. Meu projeto então foi:<br />
- Em uma DL360 ficaria o MTA, com Qmail + Clamav + DSPAM unicamente com a função de receber e enviar e-mail, filtrar e etc.<br />
- Em uma DL360 ficaria os e-mails com Vpopmail e dessa vez eu não optei em usar o Courier e sim o <a href="http://www.dovecot.org/" target="_blank">Dovecot</a> no lugar dele.<br />
- Em uma maquina virtual no cluster ficaria o webmail.</p>
<p>A estrutura seria mais ou menos assim:<br />
<strong>[INTERNET] &lt;===e-mail===&gt; [MTA COM FILTROS] &lt;===e-mail===&gt; [MAILSTORAGE] &lt;===e-mail===&gt; [USUARIO]</strong></p>
<p><strong>1. MTA</strong><br />
O MTA é o servidor que vai receber as mensagens pela internet, e ele também vai enviar as mensagens enviadas pelo usuário da rede, pelo o que eu notei na estrutura antiga em horário de pico o processo do qmail-smtpd fica mais lento, por causa dos filtros e com isso ele deixava a maquina toda mais lenta, comprometendo o IMAP e o APACHE (Webmail) mas isso era devido a filtragem de Spam que consumia bastante memoria (eu usava Spamassassin).<br />
No MTA eu coloquei o Qmail (netqmail) com todos os patchs, e coloquei o Simscan no lugar do qmail-scanner.pl para gerenciar a filtragem de e-mail, o Simscan é compatível com o clamav e com o DSPAM e eu escolhi ambos para a filtragem de Virus e Spam. E nela eu coloquei as regras de smtproute, para que o MTA enviasse as mensagens dos meus domínios para meu outro servidor que eu chamo de MAILSTORAGE.</p>
<p><strong>Programas utilizados:</strong><br />
clamav-0.94.2 =&gt; antivírus<br />
daemontools-0.76 =&gt; supervisor do qmail<br />
dspam-3.8.0 = &gt; antispam<br />
mod_auth_imap2 = &gt; autenticação do apache via imap ou pop<br />
netqmail-1.06 =&gt; qmail atualizado com patchs<br />
simscan-1.4.0 =&gt; scanner para qmail<br />
ucspi-tcp-0.88 =&gt; tcptools para o qmail</p>
<p><strong>2. MAILSTORAGE</strong><br />
Este servidor é no caso o mais importante, ele vai guardas as mensagens dos usuários e ser acessado via IMAP ou POP usando SSL ou não, mas para que ele possa receber mensagens ele precisa também ser um MTA. Porem o MTA deve ser mais simples e rápido, ele já vai receber as mensagens filtradas e so tem o papel de gravar no disco o que receber. Com isso nessa maquina eu também uso o Qmail, porem sem filtros apenas com os patchs, esse qmail recebe os e-mails do qmail do MTA através do smtproute.</p>
<p>Esta estrutura usa o vpopmail para guardar os e-mails, eu costumo usar o Vpopmail pela sua estrutura de diretórios, ele usa Maildir, e diferencia um usuário do outro através do domínio, impedindo de existir conflito entre dois usuários de mesmo nome. Outra mudança que teve foi o servidor de IMAP/POP. Na estrutura antiga eu usava o Courier-IMAP. Eu tive muitos problemas com ele, principalmente de contas travando, loop infinitos, e eu fiquei sem poder atualizar o courier pois eles tiraram o suporte a Vpopmail, com isso eu fui tentar o Cyrus, mas no meio do caminho encontrei o Dovecot, e depois de ler bastante a respeito resolvi testar, e vi que o Dovecot é 10x melhor que o Courier.</p>
<p><strong>Programas utilizados:<br />
</strong>autorespond-2.0.2 =&gt; Progama usado pelo qmail para auto resposta de mensagens<strong><br />
</strong>daemontools-0.76 = &gt; Supervisor do qmail<br />
dovecot-1.1.7 =&gt; Servidor IMAP/POP3<br />
ezmlm-idx-5.1.2 =&gt; Programa de lista de e-mails<br />
imapsync-1.267 =&gt; Programa usado para a migração, sincronizar as contas<br />
maildrop-2.0.4 = &gt; Usado pelo qmail para entregar as mensagens<br />
netqmail-1.06 =&gt; MTA atualizado com os patchs + Patch Checkuser.<br />
qmailadmin-1.2.12 =&gt; Gerencia das contas<br />
ucspi-tcp-0.88 =&gt; Tcptools usado pelo qmail<br />
vpopmail-5.4.25 =&gt; Suporte a dominios virtuais ao qmail.<strong></strong></p>
<p><strong>3. WEBMAIL<br />
</strong>O webmail foi colocado em uma maquina virtual, no nosso cluster VMware. Nela roda apenas o apache+php+mysql e o Horde Groupware (Webmail Edition). Sendo uma maquina virtual separada a performance do webmail melhorou 100%, o webmail se conecta com o MAILSTORAGE para autenticar e ler as mensagens dos usuários e com o MTA para enviar mensagens.</p>
<p>Todas as três maquinas incluindo a virtual usam <a href="http://slackware.com/" target="_blank">Slackware </a>12.2 como sistema operacional.</p>
<p><strong>4. A MIGRAÇÃO</strong><br />
O processo de migração foi feito nas seguintes etapas:</p>
<ul>
<li> Instalações dos sistemas operacionais e programas nos novos servidores</li>
<li> Backup do banco de dados do vpopmail</li>
<li> Criação dos scriptsde migração</li>
<li> Criar os domínios no novo servidor</li>
<li> Criar as novas contas no novo servidor usando uma senha padrão</li>
<li> Atualizar a quota dos usuários criados no novo servidor</li>
<li> Salvar a senha dos usuários no servidor antigo, para que sejam atualizadas no novo servidor</li>
<li> Mudar a senha dos usuários no servidor antigo para uma senha padrão de forma que o possa se fazer o login na conta e migrar as mensagens.</li>
<li> Limpar o lixo das contas como mensagens excluídas e spam para facilitar a migração, usando o "comando_do_demonio" (Um script que criei que verificar o lixo nas contas e apaga, mensagens excluídas e spam).</li>
<li> Migrar as mensagens para o novo servidor usando o ImapSync</li>
<li> Atualizar as senhas no novo servidor usando as senhas salvas no servidor antigo.</li>
<li> Alterar o servidor de login nas configurações do webmail para que o webmail conecte no novo servidor.</li>
<li> Efetuar testes de login</li>
<li> Configurar o Backup do novo servidor</li>
<li> Alterar os IPS do servidor antigo com o novo.</li>
</ul>
<p><strong>5. CONCLUSÃO</strong><br />
A migração foi um sucesso, e agora eu tenho 3 servidores para a estrutura, onde posso parar e trabalhar com cada um sem interferir no outro, posso para o webmail sem parar o acesso pop/imap3, posso parar o MTA mas os usuários podem ainda acessar as mensagens, e por ai vai. A performance melhorou 100%, e agora tenho backup em fitas de 800GB com mais segurança para os dados.<br />
O DSPAM ainda não funciona muito bem, pois tem um esquema de treinar ele, e ainda estou coletando os spams reportado pelos usuários para treina-lo.<br />
Enquanto o Expresso não anda pra frente minha estrutura nova agora pode aguentar por muito tempo.</p>
<p>Se você tiver algum interesse nas configurações que usei na estrutura, parametros de compilação ou scripts de migração, comenta ai que eu envio.</p>
]]></content:encoded>
			<wfw:commentRss>http://thiago.oxente.org/2009/02/17/migrando-o-servidor-de-e-mail/feed</wfw:commentRss>
		<slash:comments>34</slash:comments>
		</item>
		<item>
		<title>Addons atualizados.</title>
		<link>http://thiago.oxente.org/2009/01/22/addons-atualizados</link>
		<comments>http://thiago.oxente.org/2009/01/22/addons-atualizados#comments</comments>
		<pubDate>Thu, 22 Jan 2009 15:02:27 +0000</pubDate>
		<dc:creator>Thiago Melo</dc:creator>
				<category><![CDATA[Jogos]]></category>
		<category><![CDATA[Lua XML]]></category>
		<category><![CDATA[Programação]]></category>
		<category><![CDATA[World of Warcraft]]></category>

		<guid isPermaLink="false">http://thiago.oxente.org/?p=107</guid>
		<description><![CDATA[Hoje depois do Patch 3.0.8 resolvi atualizar meus addons, os dois tinham uns bugs que eu já estava sabendo só estava sem tempo de arrumar.
Killer Monkeys - Recipe Tree: Esse addon tava com um bug que causava um loop infinito travando o jogo, olhando o código percebi que o item Large Prismatic Shard é feito [...]]]></description>
			<content:encoded><![CDATA[<p>Hoje depois do Patch 3.0.8 resolvi atualizar meus addons, os dois tinham uns bugs que eu já estava sabendo só estava sem tempo de arrumar.<br />
Killer Monkeys - Recipe Tree: Esse addon tava com um bug que causava um loop infinito travando o jogo, olhando o código percebi que o item Large Prismatic Shard é feito com Small Prismatic Shard e Small Prismatic e feito de Large, com isso qualquer recipe que ussase Prismatic Shard entrava em loop infinito.<br />
A solução foi colocar os dois na lista de ignore, essa lista foi criada para Leatherworking onde ele ficava calculado todo tipo de couro para os itens, resolvi tambem coloar as Enchanting Rod na ignore list.</p>
<p>Killer Monkeys - Attendance: Esse addon começou com um problema em janeiro, que era criar raids com o mês (zero), pelo o que percebi ele ficou meio doido na virada do ano, o função que deveria calcular que se o mês anterior fosse dezembro, voltasse um ano, não estava funcionando,  com isso ele deixava Janeiro com 1 e Dezembro com 0.<br />
A solução foi remover esse código e usar uma função do jogo que pega o mês exato de acordo com o Offset que está sendo utilizado.</p>
<p>Ambos Addons se encontram hospedados na <a href="http://wow.curse.com" target="_blank">Curse Gaming</a>, e podem ser atualizados pelo Curse Client ou baixados diretamente.<br />
KM Recipe Tree <a href="http://my.curse.com/downloads/wow-addons/details/killer-monkeys-recipe-tree.aspx" target="_blank">http://my.curse.com/downloads/wow-addons/details/killer-monkeys-recipe-tree.aspx</a><br />
KM Attendance  <a href="http://my.curse.com/downloads/wow-addons/details/km_att.aspx" target="_blank">http://my.curse.com/downloads/wow-addons/details/km_att.aspx</a></p>
]]></content:encoded>
			<wfw:commentRss>http://thiago.oxente.org/2009/01/22/addons-atualizados/feed</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Criando um Addon para World of Warcraft &#8211; Parte 1</title>
		<link>http://thiago.oxente.org/2008/12/01/criando-um-addon-para-world-of-warcraft-parte-1</link>
		<comments>http://thiago.oxente.org/2008/12/01/criando-um-addon-para-world-of-warcraft-parte-1#comments</comments>
		<pubDate>Mon, 01 Dec 2008 19:44:04 +0000</pubDate>
		<dc:creator>Thiago Melo</dc:creator>
				<category><![CDATA[Jogos]]></category>
		<category><![CDATA[Lua XML]]></category>
		<category><![CDATA[Programação]]></category>
		<category><![CDATA[World of Warcraft]]></category>
		<category><![CDATA[addon]]></category>
		<category><![CDATA[como criar]]></category>
		<category><![CDATA[hello world]]></category>
		<category><![CDATA[lua]]></category>
		<category><![CDATA[warcraft]]></category>
		<category><![CDATA[xml]]></category>

		<guid isPermaLink="false">http://thiago.oxente.org/?p=90</guid>
		<description><![CDATA[Muita gente me pergunta se é dificil programar utilizando a API do World of Warcraft, programar mesmo não é dificil, porem achar conteudo sobre o assunto não é tão simples.
Eu sou um fã de carteirinha do portal wowwiki.com, nesse site está concentrado muita informação sobre warcraft, assim como a Lore, Gameplay e também sobre a [...]]]></description>
			<content:encoded><![CDATA[<p><img class="alignleft size-medium wp-image-91" title="handwrench" src="http://thiago.oxente.org/wp-content/uploads/2008/12/handwrench-300x200.jpg" alt="" width="180" height="120" />Muita gente me pergunta se é dificil programar utilizando a API do World of Warcraft, programar mesmo não é dificil, porem achar conteudo sobre o assunto não é tão simples.</p>
<p>Eu sou um fã de carteirinha do portal <a title="WOW WIKI" href="http://www.wowwiki.com" target="_blank">wowwiki.com</a>, nesse site está concentrado muita informação sobre warcraft, assim como a Lore, Gameplay e também sobre a API do World of Warcraft.</p>
<p>Quando eu tive a idéia de criar o KM_RecipeTree, eu já tinha noção que no wowwiki eu poderia encontrar informações de como inciar o projeto. Como sempre eu achei o velho exemplo de qualquer inicio em linguagem de programação que é o "Hello World".</p>
<p>Vou mostrar aqui neste artigo como criar um simples Addon "Hello World" e como interagir com a API do jogo mostrando a quantidade de "gold" que seu personagem tem. Avisando que esses dois Addon de exemplo já existem no <a href="http://us.blizzard.com/support/article.xml?articleId=21465" target="_blank">kit de desenvolvimento</a> oficial da <a href="http://www.blizzard.com" target="_blank">Blizzard</a>, eu só vou explicar passo a passo da criação de cada um.</p>
<p><span id="more-90"></span></p>
<p><strong>1. Estrutura de um Addon</strong></p>
<p>Um addon deve possuir em sua pasta três arquivos.<br />
.toc -&gt; Onde fica as informações principais do addon; nome, versão, variáveis, dependências e etc.<br />
.lua -&gt; Onde fica toda a programação do addon.<br />
.xml -&gt; Onde fica o código da estrutura da interface do addon.</p>
<p><strong>1.1 Arquivo .toc</strong></p>
<p>A estrutura do .toc é mais ou menos assim:</p>
<div class="igBar"><span id="lcode-7"><a href="#" onclick="javascript:showPlainTxt('code-7'); return false;">PLAIN TEXT</a></span></div>
<div class="syntax_hilite"><span class="langName">CODE:</span>
<div id="code-7">
<div class="code">
<ol>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">## Author: Thiago Melo</div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">## Interface: <span style="color:#800000;color:#800000;">30000</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">## Notes: Control Attendance using Built-in WOW calendar.</div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">## Title: KM_Attendance</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">## Version: <span style="color:#800000;color:#800000;">1</span>.<span style="color:#800000;color:#800000;">0</span></div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">## eMail: reiserfs@killermonkeys.<span style="">net</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">## URL: http:<span style="color:#FF9933; font-style:italic;">//thiago.killermonkeys.net</span></div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">## DefaultState: Enabled</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">## LoadOnDemand: <span style="color:#800000;color:#800000;">0</span></div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">## SavedVariables: KMATT_SAVED_VAR_CONFIG, KMATT_SAVED_VAR_ATT</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">KM_Att.<span style="">xml</span> </div>
</li>
</ol>
</div>
</div>
</div>
<p></p>
<p>Esse ai é o .toc do meu addon KM_Att se você reparar ele apenas informa para o jogo as informações básicas do addon.<br />
Os campos mais importante são, o Interface (onde diz qual versão do jogo o addon é compatível, 30000 =  WOTLK), Title (o nome do addon) e a ultima linha são os arquivos que vamos carregar.</p>
<p>A estrutura do nosso addon OlaMundo será assim</p>
<div class="igBar"><span id="lcode-8"><a href="#" onclick="javascript:showPlainTxt('code-8'); return false;">PLAIN TEXT</a></span></div>
<div class="syntax_hilite"><span class="langName">CODE:</span>
<div id="code-8">
<div class="code">
<ol>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">## Interface: <span style="color:#800000;color:#800000;">30000</span></div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">## Title: Ola Mundo!</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">## Notes: Meu primeiro Addon</div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">## Dependencies:</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">Olamundo.<span style="">xml</span> </div>
</li>
</ol>
</div>
</div>
</div>
<p>
- Crie uma pasta chamada Olamundo dentro da pasta dos addon do WOW (Pasta do WOW\Interface\AddOns\Olamundo).<br />
- Crie um arquivo chamado Olamundo.toc e coloque os dados acima.<br />
<strong>1.2 Arquivo .lua</strong></p>
<p>Agora vamos para a parte de programação, a API do world of warcraft trabalha com uma linguagem de programação chamada Lua, eu não vou entrar muito a fundo de Lua porém tem que saber dela para programar no jogo, ela é simples e para saber mais informações veja o <a href="http://pt.wikipedia.org/wiki/Lua_(linguagem_de_programa%C3%A7%C3%A3o)" target="_blank">wikipedia sobre lua</a>.</p>
<p>Nessa etapa deve se criar um arquivo chamado Olamundo.lua na pasta do jogo, e abrir esse arquivo para colocar nossas primeiras linhas de código.</p>
<pre>
<div class="igBar"><span id="lcode-9"><a href="#" onclick="javascript:showPlainTxt('code-9'); return false;">PLAIN TEXT</a></span></div>
<div class="syntax_hilite"><span class="langName">CODE:</span>
<div id="code-9">
<div class="code">
<ol>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">function Olamundo<span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#006600; font-weight:bold;">&#41;</span></div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; message<span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#CC0000;">"Olá Mundo de Azeroth!"</span><span style="color:#006600; font-weight:bold;">&#41;</span>;</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">end </div>
</li>
</ol>
</div>
</div>
</div>


</pre>
<p>Salve o arquivo, com isso você criou uma função que chama uma outra função global chamada message. Essa função message vai mostrar uma janela com o texto escolhido e um botão de "OK", é uma função da API.<br />
<strong>1.3 Arquivo .xml<br />
</strong></p>
<p>Esse arquivo é o que vai interagir diretamente com a API, sendo carregado pelo .toc e se comunicando com o .lua.<br />
Crie um arquivo chamado Olamundo.xml e nele bote o código abaixo.</p>
<pre>
<div class="igBar"><span id="lcode-10"><a href="#" onclick="javascript:showPlainTxt('code-10'); return false;">PLAIN TEXT</a></span></div>
<div class="syntax_hilite"><span class="langName">CODE:</span>
<div id="code-10">
<div class="code">
<ol>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&lt;ui xmlns=<span style="color:#CC0000;">"http://www.blizzard.com/wow/ui/"</span></div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp;xmlns:xsi=<span style="color:#CC0000;">"http://www.w3.org/2001/XMLSchema-instance"</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp;xsi:schemaLocation=<span style="color:#CC0000;">"http://www.blizzard.com/wow/ui/</span></div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color:#CC0000;"> ..<span style="color:#000099; font-weight:bold;">\.</span>.<span style="color:#000099; font-weight:bold;">\F</span>rameXML<span style="color:#000099; font-weight:bold;">\U</span>I.xsd"</span>&gt;</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &lt;script file=<span style="color:#CC0000;">"Olamundo.lua"</span>/&gt;</div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &lt;frame name=<span style="color:#CC0000;">"HelloWorldFrame"</span>&gt;</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp;&lt;scripts&gt;</div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &lt;onload&gt;</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp;&nbsp; Olamundo<span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#006600; font-weight:bold;">&#41;</span>;</div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &lt;/onload&gt;</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp;&lt;/scripts&gt;</div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &lt;/frame&gt;</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&lt;/ui&gt; </div>
</li>
</ol>
</div>
</div>
</div>


</pre>
<p>Se você já entende um pouco com XML vai se familirializar com a formatação XML. Se você sabe absolutamente nada de XML, dá uma "googlada" sobre o assunto pois voando em XML não vai pra frente com addons no wow.<br />
A tag inicial do código XML para a API do wow sempre vai ser &lt;UI&gt;, e nesse mesmo formato ai com esses mesmo valores xmls e bla bla bla. A parte que fica entre as tags &lt;UI&gt;&lt;/UI&gt; é o que importa mais.<br />
&lt;Script /&gt; essa tag vai chamar o Olamundo.lua, pode se colocar varios .lua ai bastanto adicionar outra &lt;Script file="nomedoarquivo.lua" /&gt;<br />
<em>* Importante: XML tem uma formatação certa, se abrir uma TAG deve fechar &lt;TAG&gt; &lt;/TAG&gt; se quiser uma Tag de uma linha só coloque &lt;TAG /&gt; com a barra "/" no final.</em></p>
<p>&lt;Frame&gt; &lt;/Frame&gt; essa e a parte que criamos um frame, na verdade não vai ter nenhum Frame na tela do jogo, pois nossa função somente aqui é escrever o "Olá Mundo" na tela. Mas o frame é quem dispara eventos então mesmo sem nada gráfico precisa de um frame para fazer o addon funcionar.<br />
&lt;Scripts&gt; &lt;/Scripts&gt; Aqui controlamos os eventos do frame, lembra um pouco os eventos de um campo HTML (onload, onmouseover, onclick, etc).<br />
&lt;Onload&gt;&lt;/Onload&gt; Aqui vamos informar a API do jogo que quando carregar esse frame (quando carrega o jogo e a cada ReloadUI) execute os comandos dentro das TAG, que no caso é o Olamundo() que esta dentro de Olamundo.lua.</p>
<p><strong>2 Testando</strong></p>
<p>- Salve tudo e abra o Jogo, na tela de Login clique em Addons para ver se o addon Olamundo está sendo listado e esta habilitado.<br />
- Escolha um personagem e entre no jogo.<br />
- Se a tela "Olá Mundo de Azeroth" aparecer com o botão de OK para fechar, você teve sucesso e criou seu primeiro Addon.</p>
<p><strong>3 Mais só isso?</strong></p>
<p>Vou depois criar uma proxima etapa indo mais a fundo com a interface e com os eventos do jogo, e claro monstrando algo mais concreto, mas só com isso já da para ter ideia de como funciona e começar a criar seus próprios addons.</p>
]]></content:encoded>
			<wfw:commentRss>http://thiago.oxente.org/2008/12/01/criando-um-addon-para-world-of-warcraft-parte-1/feed</wfw:commentRss>
		<slash:comments>11</slash:comments>
		</item>
		<item>
		<title>Meu novo Addon para World of Warcraft</title>
		<link>http://thiago.oxente.org/2008/11/26/meu-novo-addon-para-world-of-warcraft</link>
		<comments>http://thiago.oxente.org/2008/11/26/meu-novo-addon-para-world-of-warcraft#comments</comments>
		<pubDate>Wed, 26 Nov 2008 18:00:51 +0000</pubDate>
		<dc:creator>Thiago Melo</dc:creator>
				<category><![CDATA[Jogos]]></category>
		<category><![CDATA[Lua XML]]></category>
		<category><![CDATA[Programação]]></category>
		<category><![CDATA[World of Warcraft]]></category>
		<category><![CDATA[addon]]></category>
		<category><![CDATA[curse]]></category>
		<category><![CDATA[km_att]]></category>
		<category><![CDATA[lua]]></category>
		<category><![CDATA[wow]]></category>
		<category><![CDATA[xml]]></category>

		<guid isPermaLink="false">http://thiago.oxente.org/?p=86</guid>
		<description><![CDATA[
Meu primeiro addon foi um que eu fiz com a saida da BC, era o KM_RecipeTree (Killer Monkeys - Recipe Tree) esse addon eu fiz porque eu tinha um lock tailor e era muuuito chato ficar calculando os mats que precisava para fazer os itens, tipo o cara me perguntava QUAIS OS MATS DA BAG? [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://thiago.oxente.org/wp-content/uploads/2008/11/goblin.jpg"><img class="alignleft size-medium wp-image-88" title="goblin" src="http://thiago.oxente.org/wp-content/uploads/2008/11/goblin-300x257.jpg" alt="" width="126" height="108" /></a></p>
<p>Meu primeiro addon foi um que eu fiz com a saida da BC, era o KM_RecipeTree (Killer Monkeys - Recipe Tree) esse addon eu fiz porque eu tinha um lock tailor e era muuuito chato ficar calculando os mats que precisava para fazer os itens, tipo o cara me perguntava QUAIS OS MATS DA BAG? se eu falar é tantos bold of cloth ai cara e os MATS DO BOLT? puts, ai eu fiz um addon que calcula tudo isso e manda no chat<br />
Mais info aqui: <a href="http://my.curse.com/downloads/wow-addons/details/killer-monkeys-recipe-tree.aspx" target="_blank">http://my.curse.com/downloads/wow-addons/d...ecipe-tree.aspx</a> (não ta funcionando na WOTLK mas vou atualizar em breve)</p>
<p>bom voltando ao mais novo <img style="vertical-align: middle;" src="http://www.hangarnet.com.br/forum/style_emoticons/default/biggrin.gif" border="0" alt="biggrin.gif" /><br />
Site do Addon no Curse.com<br />
<a href="http://my.curse.com/downloads/wow-addons/details/km_att.aspx" target="_blank">http://my.curse.com/downloads/wow-addons/details/km_att.aspx</a><br />
<strong>O Killer Monkeys - Attendance</strong> é um addon que tem como função gerar o numero de attendance dos membros da guild, usando como base de dados o sistema de calendário do jogo. De inicio a minha guild (Killer Monkeys) costumava usar o phpRaid, onde os eventos eram marcados e de acordo com o apply de cada membro uma pontuação era dada e no final de cada mês era gerado a porcentagem de presença desse player (attendance) e com isso ele subia ou descia de rank na guild.</p>
<p><span id="more-86"></span><br />
O phpRaid é uma boa ferramenta porem ele tem um problema que era ter que atualizar manualmente cada dia de raid de acordo com o setup da mesma, tendo que marcar os faltosos e o grupo que foi formado, as vezes isso gerava dados imprecisos e sem falar do saco que é o (Alt-Tab) para atualizar.</p>
<p>O phpRaid tinha flags para o player de acordo com o apply da raid: Avaliable, Not Avaliable e Confirmed, onde se dava 1 ponto para Confirmed, 0.5 para Avaliable e 0 (zero) para Not Avaliable. No final contava os pontos com uma formula e o phpRaid gerava o att (ele não faz isso nativamente foi uma modificação que fiz).</p>
<p>Com o calendário e um sistema de attendance in-game tudo é feito usando a interface do jogo, sem alt-tab, officers podem setar as raids e as flags e players podem conferir seu attendance ontime.</p>
<p><strong>No calendário do jogo existem 6 flags onde a pontuação pode ser mais diversificada, para a nossa guild usamos:</strong><br />
Confirmed  = 1 (usado para quem deu accepted e apareceu no dia do evento).<br />
Standby = 0.5 (usado para quem deu accepted, apareceu mas saiu no meio, ou ficou de replace e saiu logo em seguida quando precisou).<br />
Declined = 0.25 (não pode vir mas avisou com antecedência).<br />
Out = -1 (ponto negativo para quem da accepted e não aparece, e para quem não responde ao evento também).<br />
Invited = ~ (não conta pontos mas e a flag de todos que foram invitados, se o cara não responder delcined ou accepted o addon muda a flag dele para Out no dia do evento).<br />
Accepted = 0 (essa flag quase nunca vai ser usada como pontuação final, mas e bom ter como coringa para dar ZERO a alguem em algum caso especial).</p>
<p>A formula para gerar o attendance é:<br />
factor_confirmed = 1<br />
factor_standby = 0.5<br />
factor_declined = 0.25<br />
factor_out = -1<br />
FLAGS_DOPLAYER = (confirmed * factor_confirmed) + (standby * factor_standby) + (declined * factor_declined) + (out * factor_out)<br />
attendance = (FLAGS_DOPLAYER * 100) / NUMBER_OF_EVENTS</p>
<p>* Mas claro cada guild pode mudar os valores das flags de acordo com suas regras.</p>
<p><strong>=== FEATURES ===</strong><br />
- Atualiza as flags do evento de acordo com a raid montada (Aba 2, Raid Setup)<br />
- Calcula o attendance de acordo com as flags marcadas no calendário<br />
- Mostra detalhes do attendace do jogador (confirmed, declined, out e etc)<br />
- Menu de configurações onde pode se escolhe:<br />
-- Dias da semana que a guild raida (Segunda, terça e etc) os outros dias da semana não serão contados no ATT (Minha guild raida oficialmente de Segunda a Quinta, porem agente marca raid todo dia os outros dias não contam att)<br />
-- Ignorar algumas raids mesmo no dia da semana da raid, apagar dados da raid no cache<br />
-- Fatores da formula para cada flag, cada guild pode ter os fatores que desejar.</p>
<p><strong>=== TODO === </strong><br />
- Filtro para os tipos de raid que valem attendance (Blacktemple, Nax25man e etc).<br />
- Relatório da raid em texto (c/ ou sem formato BBCODE) para ser usado nos forums.<br />
- Relatório do player em texto (c/ ou sem formato BBCODE).<br />
- Purge raids (esse butão não funciona bem ainda)<br />
- Completar dados da raid pelo addon e não pelo calendário (depende da blizz liberar a função no próximo patch)</p>
<p><strong> === KNOW ISSUES ===</strong><br />
- Assim que instalado o addon não atualiza os dados do cache dos eventos sozinho, precisa abrir o calendário para que ele consiga carregar a lista de eventos, isso é um bloqueio da blizz ainda não consegui disparar o evento sem ser abrindo o calendário.<br />
- O addon pega todas as raids mas sem os dados dos players, para evitar tráfego de dados a blizz so manda dados dos players do evento escolhido pelo calendário, e tem um bloqueio de 2 segundos para puxar denovo os dados, então para atualizar os dados so players daquele evento deve se clicar nele no calendário. O botão completar dados da raid não funciona também só da pra completar usando o calendário.<br />
- Ontem a noite depois do crash do server o addon deu um erro na parte de atualizar a raid mas do nada parou, não sei o que foi mas vou tentar identificar.</p>
<p>## Author: ReiserFS<br />
## Interface: 30000<br />
## Notes: Control Attendance using Built-in WOW calendar.<br />
## Title: KM_Attendance<br />
## Version: 1.0<br />
## eMail: reiserfs@killermonkeys.net<br />
## URL: <a href="http://thiago.killermonkeys.net/" target="_blank">http://thiago.killermonkeys.net</a><br />
## DefaultState: Enabled<br />
## LoadOnDemand: 0<br />
## SavedVariables: KMATT_SAVED_VAR_CONFIG, KMATT_SAVED_VAR_ATT</p>
]]></content:encoded>
			<wfw:commentRss>http://thiago.oxente.org/2008/11/26/meu-novo-addon-para-world-of-warcraft/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Meu novo projeto no SF.NET</title>
		<link>http://thiago.oxente.org/2008/06/11/meu-novo-projeto-no-sfnet</link>
		<comments>http://thiago.oxente.org/2008/06/11/meu-novo-projeto-no-sfnet#comments</comments>
		<pubDate>Wed, 11 Jun 2008 15:12:44 +0000</pubDate>
		<dc:creator>Thiago Melo</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[Programação]]></category>
		<category><![CDATA[World of Warcraft]]></category>
		<category><![CDATA[armory]]></category>
		<category><![CDATA[phpbb3]]></category>
		<category><![CDATA[sf.net]]></category>
		<category><![CDATA[sourceforge]]></category>
		<category><![CDATA[tooltip]]></category>
		<category><![CDATA[wow]]></category>

		<guid isPermaLink="false">http://thiago.oxente.org/?p=50</guid>
		<description><![CDATA[A muito tempo atrás eu lancei meu primeiro projeto no sf.net, o AALog, era um parser para logs do servidor de America's Army. Era muito util e gerava um relatório com os dados e tinha bastante funções de filtros e etc, era como o Psychostats do counter-strike mas uma versão para o AA. Eu na [...]]]></description>
			<content:encoded><![CDATA[<p><img class="alignleft" style="float: left;" src="http://web.sourceforge.com/images/global/sf_logo.gif" alt="" width="113" height="65" />A muito tempo atrás eu lancei meu primeiro projeto no <a href="http://www.sf.net" target="_blank">sf.net</a>, o <a href="http://sourceforge.net/projects/aalog/" target="_blank">AALog</a>, era um parser para logs do servidor de <a href="http://www.americasarmy.com/" target="_blank">America's Army</a>. Era muito util e gerava um relatório com os dados e tinha bastante funções de filtros e etc, era como o <a href="http://www.psychostats.com" target="_blank">Psychostats</a> do counter-strike mas uma versão para o AA. Eu na epoca não tinha tanto tampo e acabei encerrando o projeto.<br />
Mas hoje eu voltei ao SF.NET e inscrevi outro projeto, que está bastante retorno da comunidade e eu estou dando continuidade. Trata-se do meu MOD para <a href="http://www.phpbb.com" target="_blank">phpBB3</a> o <a href="http://thiago.oxente.org/2007/08/28/meu-primeiro-mod-publicado-para-phpbb3/" target="_blank">Wow Armory Tooltip</a>, já escrevi aqui sobre ele, estou trabalhando em uma nova versão com suporte a templates e a multi-idiomas onde estou contando com a ajuda de outros membros da comunidade phpBB3.</p>
<p>Para visitar a página do projeto clique aqui: <a href="http://sourceforge.net/projects/bb3wowarmory" target="_blank">http://sourceforge.net/projects/bb3wowarmory</a></p>
]]></content:encoded>
			<wfw:commentRss>http://thiago.oxente.org/2008/06/11/meu-novo-projeto-no-sfnet/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Adicionando BBCodes do Youtube no PHPBB3</title>
		<link>http://thiago.oxente.org/2007/09/05/adicionando-bbcodes-do-youtube-no-phpbb3</link>
		<comments>http://thiago.oxente.org/2007/09/05/adicionando-bbcodes-do-youtube-no-phpbb3#comments</comments>
		<pubDate>Wed, 05 Sep 2007 18:03:56 +0000</pubDate>
		<dc:creator>Thiago Melo</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[Programação]]></category>

		<guid isPermaLink="false">http://thiago.oxente.org/2007/09/05/adicionando-bbcodes-do-youtube-no-phpbb3/</guid>
		<description><![CDATA[Este é um artigo curto, só vou escreve-lo porque notei que em todos os lugares que possuem instruções de como colocar o BBcode do youtube no phpBB3, passam instruções complicadas e que não funcionam 100%.
Bom no painel de Administração do phpBB3 (ACP) você tem a opção de criar BBCodes personalizados.
Existem vários códigos circulando pela internet. [...]]]></description>
			<content:encoded><![CDATA[<p><img src="http://uk.youtube.com/img/pic_youtubelogo_123x63.gif" alt="" width="123" height="63" align="left" />Este é um artigo curto, só vou escreve-lo porque notei que em todos os lugares que possuem instruções de como colocar o BBcode do youtube no phpBB3, passam instruções complicadas e que não funcionam 100%.<br />
Bom no painel de Administração do phpBB3 (ACP) você tem a opção de criar BBCodes personalizados.<br />
Existem vários códigos circulando pela internet. O mais fácil de usar seria [youtube]http://www.youtube.com?paramtros=valores[/youtube]</p>
<p>Alguns outros sites usam [youtube=URL]Algum texto[/youtube] ou pior [youtube]variavel do videl[/youtube]. Este ultimo é o pior pois precisa pegar a variavel de identificação do vídeo para postar.</p>
<p>Hoje em dia o youtube muda a URL de acordo com a localidade, por exemplo Brasil fica br.youtube.com, para facilitar a postagem de vídeos colocando apenas a URL sem ter problemas, usa-se o código abaixo:</p>
<p>BBCode: [youtube]http://{TEXT2}.youtube.com/watch?v={TEXT1}[/youtube]</p>
<p>Replace code: </p>
<div class="igBar"><span id="lhtml-12"><a href="#" onclick="javascript:showPlainTxt('html-12'); return false;">PLAIN TEXT</a></span></div>
<div class="syntax_hilite"><span class="langName">HTML:</span>
<div id="html-12">
<div class="html">
<ol>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color: #009900;"><a href="http://december.com/html/4/element/object.html"><span style="color: #000000; font-weight: bold;">&lt;object</span></a> <span style="color: #000066;">width</span>=<span style="color: #ff0000;">"425"</span> <span style="color: #000066;">height</span>=<span style="color: #ff0000;">"350"</span><span style="color: #000000; font-weight: bold;">&gt;</span></a></span></div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color: #009900;"><a href="http://december.com/html/4/element/param.html"><span style="color: #000000; font-weight: bold;">&lt;param</span></a> <span style="color: #000066;">name</span>=<span style="color: #ff0000;">"movie"</span> <span style="color: #000066;">value</span>=<span style="color: #ff0000;">"http://{TEXT2}.youtube.com/v/{TEXT1}"</span><span style="color: #000000; font-weight: bold;">&gt;</span></a></span><span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/param&gt;</span></span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color: #009900;"><a href="http://december.com/html/4/element/param.html"><span style="color: #000000; font-weight: bold;">&lt;param</span></a> <span style="color: #000066;">name</span>=<span style="color: #ff0000;">"wmode"</span> <span style="color: #000066;">value</span>=<span style="color: #ff0000;">"transparent"</span><span style="color: #000000; font-weight: bold;">&gt;</span></a></span><span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/param&gt;</span></span></div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color: #009900;">&lt;embed <span style="color: #000066;">src</span>=<span style="color: #ff0000;">"http://www.youtube.com/v/{TEXT1}"</span> <span style="color: #000066;">type</span>=<span style="color: #ff0000;">"application/x-shockwave-flash"</span> wmode=<span style="color: #ff0000;">"transparent"</span> <span style="color: #000066;">width</span>=<span style="color: #ff0000;">"425"</span> <span style="color: #000066;">height</span>=<span style="color: #ff0000;">"350"</span><span style="color: #000000; font-weight: bold;">&gt;</span></a></span><span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;</span></a>/embed&gt;</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/object&gt;</span></span> </div>
</li>
</ol>
</div>
</div>
</div>
<p></p>
<p>Assim tudo deve funcionar.</p>
]]></content:encoded>
			<wfw:commentRss>http://thiago.oxente.org/2007/09/05/adicionando-bbcodes-do-youtube-no-phpbb3/feed</wfw:commentRss>
		<slash:comments>19</slash:comments>
		</item>
		<item>
		<title>Meu primeiro MOD Publicado para PHPBB3</title>
		<link>http://thiago.oxente.org/2007/08/28/meu-primeiro-mod-publicado-para-phpbb3</link>
		<comments>http://thiago.oxente.org/2007/08/28/meu-primeiro-mod-publicado-para-phpbb3#comments</comments>
		<pubDate>Tue, 28 Aug 2007 13:04:53 +0000</pubDate>
		<dc:creator>Thiago Melo</dc:creator>
				<category><![CDATA[Lua XML]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[Programação]]></category>
		<category><![CDATA[World of Warcraft]]></category>

		<guid isPermaLink="false">http://thiago.oxente.org/2007/08/28/meu-primeiro-mod-publicado-para-phpbb3/</guid>
		<description><![CDATA[Depois do release do novo portal do KM, eu decidi colocar uma das modificações criadas por mim na web. Antes no phpBB2 existia um mod chamado itemstats, esse mod foi originalmente desenvolvido para o EqDKP (uma ferramenta muito usada por grupo de jogadores de MMORPG) e logo após convertido para phpBB2 e outros sistemas de [...]]]></description>
			<content:encoded><![CDATA[<p><img src="http://hilfe.phpbb3.com/page_images/logo.gif" align="left" height="120" width="211" />Depois do release do novo portal do KM, eu decidi colocar uma das modificações criadas por mim na web. Antes no phpBB2 existia um mod chamado itemstats, esse mod foi originalmente desenvolvido para o EqDKP (uma ferramenta muito usada por grupo de jogadores de MMORPG) e logo após convertido para phpBB2 e outros sistemas de fóruns e de portais.</p>
<p>O itemstats constava em mostrar as informações dos itens do world of warcraft na página. Sendo preciso apenas colocar o nome do item, e o sistema iria buscar em portais especializados (thottbot, allakhazam e etc)  as informações e armazenava em um banco de dados.</p>
<p><span id="more-33"></span></p>
<p>Para simplificar o funcionamento, um usuário do fórum por exemplo poderia usar o BBcode [wow]Nome do Item[/wow] em seu tópico que o sistema iria buscar o "Nome do Item" e gravar no banco de dados se caso encontrasse. Assim quando postado o tópico o "Nome do Item" seria um link, e que quando passado o mouse em cima desse link, um "tooltip" iria aparecer mostrando as informações desse item.</p>
<p>Apesar de ter usado o sistema, na nova versão do PHPBB3 eu não queria mais ter que usa-lo pois apesar de ser uma boa idéia o sistema tinha alguns problemas que eram:</p>
<p>- Implementar o sistema implicaria uma modificação nos arquivos originais do phpbb3, coisa que eu estou evitando fazer.<br />
- O sistema de armazenamento no banco fazendo um cache dos itens, não acompanhava a atualização dos dados.<br />
- Buscar informações dos itens nos sites de terceiros não gerava dados confiáveis e deixava o sistema pesado por baixar um site toda vez que um item era postado.<br />
- Postar mais de 4 novos items deixava a função de enviar a mensagem no fórum muito lenta, pois o servidor tinha que baixar o site 4 vezes e gravar no banco.<br />
- Itens atualizados no jogo, não eram atualizados no cache.</p>
<p>Para evitar estes problemas eu tive a idéia inicial de usar o Armory. O Armory é um portal da blizzard que contem informações sobre os personagens, guilds e itens do jogo. Com isso já se tinha uma base com dados confiáveis e atualizados.<br />
Usar o armory também implicaria em menos tráfego de informação pois o armory é um site todo em XML, então o tráfego seria mínimo.<br />
Outra coisa que eu não queria era uma base de dados de cache, mas também não queria que o fórum ficasse lento. Para isso eu encontrei no portal Dhtmlgoodies.com um script em AJAX que tem a função de mostrar um Tooltip externo, e que esse era carregado apenas quando se passar o mouse por cima do link.</p>
<p>Com as idéias prontas e as ferramentas na mão eu comecei a programar, para facilitar mais o trabalho eu usei uma classe em PHP pronta chamada phparmory criada por Michael Cotterell. Onde evitou economizou tempo, re-inventar a roda está fora de moda.</p>
<p>O único problema que encontrei com a classe, era que a classe buscava os itens pelo ItemID e não pelo nome do item. Como o objetivo do MOD era buscar os itens pelo nome eu fiz uma modificação na classe adicionando um novo método que busca o item pelo nome.</p>
<p>Bom o projeto final ficou pronto, tendo problemas apenas com o IE7, mas quem que usa Internet Explorer? eu não conheço ninguém.</p>
<p><img src="http://i17.photobucket.com/albums/b55/reiserfs/wow_armory_items.png" height="398" width="800" /></p>
<p>Link do projeto no site do phpbb3<br />
<a href="http://www.phpbb.com/community/viewtopic.php?f=70&amp;t=576155&amp;p=3174276#p3174276" target="_blank">http://www.phpbb.com/community/viewtopic.php?f=70&amp;t=576155&amp;p=3174276#p3174276</a></p>
<p>PhpArmory<br />
<a href="http://phparmory.sourceforge.net/" target="_blank">http://phparmory.sourceforge.net/</a><br />
DHTMLGOODIES<br />
<a href="http://www.dhtmlgoodies.com/scripts/ajax-tooltip/ajax-tooltip.html" target="_blank">http://www.dhtmlgoodies.com/scripts/ajax-tooltip/ajax-tooltip.html</a></p>
]]></content:encoded>
			<wfw:commentRss>http://thiago.oxente.org/2007/08/28/meu-primeiro-mod-publicado-para-phpbb3/feed</wfw:commentRss>
		<slash:comments>12</slash:comments>
		</item>
		<item>
		<title>Killer Monkeys Brasil 2007</title>
		<link>http://thiago.oxente.org/2007/08/22/killer-monkeys-brasil-2007</link>
		<comments>http://thiago.oxente.org/2007/08/22/killer-monkeys-brasil-2007#comments</comments>
		<pubDate>Wed, 22 Aug 2007 19:25:10 +0000</pubDate>
		<dc:creator>Thiago Melo</dc:creator>
				<category><![CDATA[Assuntos Gerais]]></category>
		<category><![CDATA[PHP]]></category>

		<guid isPermaLink="false">http://thiago.oxente.org/2007/08/22/killer-monkeys-brasil-2007/</guid>
		<description><![CDATA[Bom finalmente eu terminei um dos projetos pendentes, que era o de migrar o fórum do Killer Monkeys Brasil do phpBB2 para o phpBB3. Desde que foi lançada a versão RC1 do phpBB3 que eu vinha olhando o código e as mudanças feitas no mesmo, até publiquei aqui um artigo comentando sobre o phpBB3.
A maior [...]]]></description>
			<content:encoded><![CDATA[<p><img src="http://reiserfs.killermonkeys.net/images/km.jpg" align="left" height="144" width="100" />Bom finalmente eu terminei um dos projetos pendentes, que era o de migrar o fórum do Killer Monkeys Brasil do phpBB2 para o phpBB3. Desde que foi lançada a versão RC1 do phpBB3 que eu vinha olhando o código e as mudanças feitas no mesmo, até publiquei aqui um artigo comentando sobre o phpBB3.</p>
<p>A maior dificuldade que vi em fazer a migração era o estado em que se encontrava o fórum, com um phpBB2 altamente modificado tive medo de perder dados. Mas o phpBB3 tem um ótimo recurso para importar os dados, o problema e que as modificações morrem no phpBB2, e tudo deve ser refeito no phpBB3.</p>
<p>Para evitar que toda vez que uma versão nova do phpBB3 seja lançada, eu tenha que passar horas refazendo as modificações, eu decidi não modificar mais o código original do fórum e apenas adicionar mais conteúdo. Infelizmente um código 100% puro é impossível de ser obter, mas as únicas modificações que foram preciso fazer, foi um <em>include </em>no <em>functions.php</em>.<br />
<span id="more-32"></span><br />
Outro obstáculo que eu tinha a frente era o sistema KingKong que eu tinha inventado no phpBB2 para gerenciar os membros do fórum. Esse sistema consiste em automatizar algumas tarefas do fórum.  Vou explicar mais:</p>
<p>Antigamente no inicio do Killer Monkeys Brasil, quando um membro novo entrava no clã ele ganhava acesso aos fóruns restritos e etc. Depois foi implementado um sistema de recrutamento, onde o membro novo passava por uma fase de teste e com isso tinha acesso limitado no fórum e depois que fosse aprovado ganhava full acesso. Outro recurso que foi implementado foi a integração do TeamSpeak com o PHPBB, e com o passar do tempo o entra e sai de usuários o fórum virou uma zona para administrar, o Clã também estava ficando multi-jogos o que ficava difícil controlar os acessos, não tinha log nem nada, não se sabia quem era recruta de jogo X ou recruta de jogo Y, então eu resolvi criar um sistema que automatizasse a entrada e a saída de membros do clã. O sistema funcionava da seguinte forma:<br />
<em><br />
- O usuário se cadastrava no fórum</p>
<p>- O usuário registrado tinha acesso a um formulário de "alistamento", esse que quando preenchido gerava um pedido de acesso ao sistema, e criava um tópico no fórum de alistamento.</p>
<p>- O admin verificava os pedidos no sistema separados por JOGO, alistados para jogo X eram separados de jogo Y assim o admin poderia cuidar apenas dos recrutas do seu JOGO.</p>
<p>- O admin aprova o alistamento, e o usuário ganha acesso ao fórum restrito do JOGO requerido e ao TeamSpeak usando o mesmo usuário e senha do fórum para acessar o TeamSpeak. O sistema também gerava um post de resposta no tópico de alistamento do usuário notificando a aprovação.</p>
<p>- O admin tinha outro painel onde acompanhava o recruta, nesse painel ele poderia remover o recruta do clãn removendo todos os acessos restritos e o acesso ao TS, e notificando no tópico. Ou poderia também promover o recruta a membro, dando mais acesso restrito ao usuário.</p>
<p>- Um modulo extra foi criado para dar acesso apenas ao TeamSpeak, assim alguns usuários que não eram do clã poderiam entrar no TeamSpeak.</p>
<p>- Por ultimo tinha o painel dos membros onde se poderia remover os membros ou adicionar um membro diretamente sem alistamento.</em></p>
<p>Bom esse sistema como eu já disse foi batizado de KingKong, ele passou diversas mudanças com o decorrer do tempo, estava na fase Beta da sua terceira versão. Com a saída do phpBB3, eu desisti de continuar com o Beta3 pois uma nova versão do Zero teria que ser feita para ser compatível com o phpBB3.</p>
<p>KingKong V4<br />
A quarta versão do sistema foi uma completamente nova, baseada na nova estrutura de administração do phpBB3. As mudanças feitas com relação ao phpBB2 foram:<br />
- Sistema de gerenciamento dos Jogos (antes era tudo estático, cada jogo novo tinha que mexer no código)<br />
- Sistema de adição de recrutas (antes não dava para adicionar um recruta diretamente, apenas membro)<br />
- Sistema de multi-opções (agora da para aprovar, reprovar, modificar, ativar ts, desativar ts, promover em Massa)<br />
- Melhor interface<br />
- Formulário mais interativo.<br />
Fora o sistema KingKong, outras mudanças foram feitas e outras terão que ser feitas ainda.<br />
- Chat Ajax (peguei um pronto pois o antigo feito pelo Pereirão não funcionava mais no BB3)<br />
- AlphaPortal (Módulo para deixar o fórum no estilo portal)<br />
Alguns recursos do site antigo ainda precisam ser criados para o phpBB3<br />
- Conteúdo (Memorial, informações de jogos)<br />
- TeamSpeak (informações sobre o servidor)<br />
- WOW Sites (Sites da guilda de wow)<br />
- CSS Stats (Estatisticas do servidor de Counter-Strike)<br />
E pra finalizar, vou falar sobre a Template.<br />
No phpBB3 a template é puramente folha de estilos, e eu tou muito enferrujado em HTML, meu negócio com html é table tr td, odeio mexer com DIV.<br />
No inicio eu bolei um monte de coisa, mas não conseguia por em prática. Graças a ajuda da minha amiga Emanuelle Ângelo,  consegui bolar alguma coisa, a idéia dela era fazer algo simples, ela desenhou a mão a imagem do gorila que está atualmente lá no site e a partir dele eu consegui fazer o resto. Peguei a Prosilver e mudei as cores usando uma ferramenta na web e ficou tudo simples e bonito.</p>
<p>Links:<br />
Site do KM: <a href="http://killermonkeys.net" target="_blank">http://killermonkeys.net</a><br />
Blog da Manu: <a href="http://manuangelo.oxente.org" target="_blank">http://manuangelo.oxente.org</a></p>
]]></content:encoded>
			<wfw:commentRss>http://thiago.oxente.org/2007/08/22/killer-monkeys-brasil-2007/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
	</channel>
</rss>
