To liberando a correção dos bugs do CRON.
Bugs corrigidos:
1 - Não ativação em certos casos.
2 - Corrupção da tabela de tarefas ao editar em casos especificos.
3 - Tradução incompleta em casos especificos.
Detalhes (a pedidos):
1 => Quando entra na tela do gerenciador de tarefas, se mandar enviar 2 vezes, inverter a seleção e enviar denovo os controles resetam pra posição anterior.
pelo que vi eh uma falha onde o valor do radio button estava se perdendo entre as chamadas internas dos forms.
Foi corrigido baseando os valores independente dos objetos, e sim como esta no arquivo mestre.
Tambem criando uma condição pra gerar os valores independentes do metodo post. No retorno de algumas funçoes resetava tbm.
Solução reset de controles radio button:
- Código: Selecionar todos
if [ "$ENABLE_CRON" = "YES" ]; then
cat << CLEOF
<form method="POST" action="$SCRIPT?ACTION=RELOAD"><table class=maintable border=0 width="100%"><tr><th colspan=2>$Pjv</th></tr>
<tr><td width="50%" class=row1 align=right><b>$Ban</b></td><td class=row2><input type=radio value=NO name=ENABLE_CRON>$Fno <input type=radio checked=checked value=YES name=ENABLE_CRON>$Fye</td></tr></table>
<p align=center><input type=submit value="$Fsb" name=OKBTN> <input type=reset value="$Fer"></p></form>
<table class=maintable border=0 width="100%"><tr><th colspan=7>$Msg</td></tr><tr class=row7>
<td class=header>$Pqa</td><td class=header>$Pqb</td><td class=header><b>$Pqc</td><td class=header>$Pqd</td>
<td class=header>$Pqe</td><td class=header>$Pqf</td><td class=header><b>$Fac</td></tr>
CLEOF
else
cat << CLEOF
<form method="POST" action="$SCRIPT?ACTION=RELOAD"><table class=maintable border=0 width="100%"><tr><th colspan=2>$Pjv</th></tr>
<tr><td width="50%" class=row1 align=right><b>$Ban</b></td><td class=row2><input type=radio checked=checked value=NO name=ENABLE_CRON>$Fno <input type=radio value=YES name=ENABLE_CRON>$Fye</td></tr></table>
<p align=center><input type=submit value="$Fsb" name=OKBTN> <input type=reset value="$Fer"></p></form>
<table class=maintable border=0 width="100%"><tr><th colspan=7>$Msg</td></tr><tr class=row7>
<td class=header>$Pqa</td><td class=header>$Pqb</td><td class=header><b>$Pqc</td><td class=header>$Pqd</td>
<td class=header>$Pqe</td><td class=header>$Pqf</td><td class=header><b>$Fac</td></tr>
CLEOF
fi
2 => Quando se cria uma tarefa */5 por exemplo, o script substitui o "*" por "all" mas se perde ao manter o controle nos proximos testes.
Entao fica sem multilanguge, e acaba indo all/5 pra lista de tarefas. Ate ai tranquilo, o arquivo real do CRON fica com */5.
O problema eh ao editar essa tarefa, o script nao trata all/5 entao ele deixa como esta.. e joga all/5 no arquivo real.
O CRON nao suporta isso e a tarefa falha, o curioso eh que falha em silencio pois na lista geral fica "normal", do jeito que funconava antes.
3 => Bom, aqui o script testa se tem * e troca por Todos ou conforme a lingua.
A falha esta em * seguido de outro caracter como em */5. ele troca no primeiro teste mas depois nao consegue testar pra fazer a tradução.
Gera o all/5 em vez de Todos/5, isso por sua vez caso edite a tarefa desse jeito cria uma tarefa errada no arquivo do cron.
Foi adicionado codigo pra corrigir isso, incluindo os caso de edição das tarefas.
Codigo item 2 e 3:
Solução tradução:
- Código: Selecionar todos
MIN=`echo $MIN | sed s/\all/\$Pqk/g`
DMIN="$MIN"
[ "$MIN" = 'all' ] && DMIN="$Pqk"
HOR=`echo $HOR | sed s/\all/\$Pqk/g`
DHOR="$HOR"
[ "$HOR" = 'all' ] && DHOR="$Pqk"
DAY=`echo $DAY | sed s/\all/\$Pqk/g`
DDAY="$DAY"
[ "$DAY" = 'all' ] && DDAY="$Pqk"
MON=`echo $MON | sed s/\all/\$Pqk/g`
DMON="$MON"
[ "$MON" = 'all' ] && DMON="$Pqk"
WEK=`echo $WEK | sed s/\all/\$Pqk/g`
DWEK="$WEK"
[ "$WEK" = 'all' ] && DWEK="$Pqk"
Solução ediçao de tarefas:
- Código: Selecionar todos
FMIN=`echo $FMIN | sed s/\$Pqk/\*/g`
FHOR=`echo $FHOR | sed s/\$Pqk/\*/g`
FDAY=`echo $FDAY | sed s/\$Pqk/\*/g`
FMON=`echo $FMON | sed s/\$Pqk/\*/g`
FWEK=`echo $FWEK | sed s/\$Pqk/\*/g`
[ "$FMIN" = '*' ] && FMIN=""
[ "$FHOR" = '*' ] && FHOR=""
[ "$FDAY" = '*' ] && FDAY=""
[ "$FMON" = '*' ] && FMON=""
[ "$FWEK" = '*' ] && FWEK=""
Para aplicar o fix-cron:
- Código: Selecionar todos
cd /
wget http://www.brazilfw.com.br/users/coidiloco/fix-cron.sh
chmod +x fix-cron.sh
sh fix-cron.sh
Antonelli2006, muuito obrigado pela ajuda, manja muito!!
Abrass