Doing the maintenance of our blogs (Wordpress), I bumped over one that had fallen on an active botnet. It was receiving like 5 or 6 spam comments per minute. It was nearly the only one in such an harassment, so I suspect the botnet loved it for being open on commenting.
Since I've activated reCaptcha I've been monitoring my "spam folder" and I'm really confident on his guesses, so I just wrote a STORED PROCEDURE to clean up these spam comments on a periodic basis, so I can do a sitewide cleanup:
[mysql]
DELIMITER $$
DROP PROCEDURE IF EXISTS `our_blog_db`.`REMOVE_OLD_SPAM`$$
CREATE PROCEDURE `our_blog_db`.`REMOVE_OLD_SPAM` ()
MODIFIES SQL DATA
COMMENT 'remove comentarios marcados como SPAM'
BEGIN
DECLARE done BIT(1) DEFAULT false;
DECLARE commtbl VARCHAR(50);
DECLARE comments_tbls CURSOR FOR SELECT TABLE_NAME
FROM information_schema.TABLES
WHERE TABLE_SCHEMA = 'our_blog_db' AND TABLE_NAME LIKE '%comments';
DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = true;
OPEN comments_tbls;
REPEAT
FETCH comments_tbls INTO commtbl;
SET @next_tbl = CONCAT('DELETE FROM our_blog_db.',commtbl,'
WHERE comment_approved = "spam"
AND comment_date_gmt < DATE_SUB(UTC_TIMESTAMP(), INTERVAL 15 DAYS)');
PREPARE get_next_tbl FROM @next_tbl;
EXECUTE get_next_tbl;
UNTIL done END REPEAT;
CLOSE comments_tbls;
END$$
DELIMITER ;
[/mysql]
It's very easy to stick it into an EVENT, if you have MySQL 5.1 or bigger, and which to do a daily clean up automatically:
[mysql]
CREATE EVENT `EV_REMOVE_OLD_SPAM` ON SCHEDULE EVERY 1 DAY STARTS '2009-08-01 21:00:00' ON COMPLETION NOT PRESERVE ENABLE
COMMENT 'remove comentarios marcados como SPAM' DO
BEGIN
SELECT GET_LOCK('remove_spam',5) INTO @remove_spam_lock;
IF @remove_spam_lock THEN
CALL REMOVE_OLD_SPAM();
END IF;
END
[/mysql]
Enjoy!
Mostrar mensagens com a etiqueta wordpress. Mostrar todas as mensagens
Mostrar mensagens com a etiqueta wordpress. Mostrar todas as mensagens
sábado, 5 de setembro de 2009
quinta-feira, 9 de julho de 2009
Syntax Highlighting nos blogs da DRI
Não é à toa que toda a gente gosta do arco-íris - se uma imagem vale mil palavras, ler código a cores deve valer umas boas 900. Depois de montar as minhas primeiras demonstrações em MySQL, resolvi experimentar um plugin de Syntax Highlighting (sempre tive pavor a qualquer potencial tradução desta expressão).
O plugin escolhido [algures entre o acaso e o ranking do Google] foi o iG:Syntax Hiliter Plugin e, para já, de 0-100, dou-lhe um 70... é muito fácil de instalar, mas em termos de potencial parece-me inferior ao que faz, por exemplo, o SyntaxHighlight GeSHi no MediaWiki.
Não obstante, mesmo assim, teve que levar uma martelada para não deturpar caracteres mais conflituosos com HTML, que insistiam em transformar-se estupidagicamente em HTML entities (desde quando é que algo dentro de |code| deve ser transformado??). Mas bem, vamos ver como corre, e se não levo na cabeça do pessoal de infrastruturas...
Para já, a cobaia foi o último post: MySQL DATETIME vs TIMESTAMP vs INT performance and benchmarking with InnoDB. Claro está, já se avizinha uma martelada no tema... alguém conhece um com distribuição horizontal melhorzinha?
O plugin escolhido [algures entre o acaso e o ranking do Google] foi o iG:Syntax Hiliter Plugin e, para já, de 0-100, dou-lhe um 70... é muito fácil de instalar, mas em termos de potencial parece-me inferior ao que faz, por exemplo, o SyntaxHighlight GeSHi no MediaWiki.
Não obstante, mesmo assim, teve que levar uma martelada para não deturpar caracteres mais conflituosos com HTML, que insistiam em transformar-se estupidagicamente em HTML entities (desde quando é que algo dentro de |code| deve ser transformado??). Mas bem, vamos ver como corre, e se não levo na cabeça do pessoal de infrastruturas...
Para já, a cobaia foi o último post: MySQL DATETIME vs TIMESTAMP vs INT performance and benchmarking with InnoDB. Claro está, já se avizinha uma martelada no tema... alguém conhece um com distribuição horizontal melhorzinha?
Subscrever:
Mensagens (Atom)