LINUXTALKS.CO

сосис добавил капчу для неугодных юзеров

 

L


0

1

столько гнал на димеза, а как стал модератором, так тут же начал беситься. сначала у меня эта капча от клаудфларе всплывала, теперь проверка на робота у авторизированного(!) пользователя. и каждый раз ровно после того, как отправлю ему пару нелестных комментов.

★★☆☆☆

Хера ты ебанутый. Эта функция давно в коде, её добавили в движок ещё в 2011 году.

cocucka    
★★★★★★★★★★
Linux / Firefox (NL)
Ответ на: комментарий от cocucka

какого хрена я попадаю в спам либо на cloudflare, либо на капче, сразу после того, как говорю, что ты свинья?! кащенко можно, а мне нет что ли?!))

crypt    
★★☆☆☆
FreeBSD / Chrome (GB)
Ответ на: комментарий от cocucka

сколько на меня гнали, что я где-то сообщение удалил, а ты сейчас с десяток по всему форуму зачистил=)

crypt    
★★☆☆☆
FreeBSD / Chrome (GB)
Ответ на: комментарий от crypt

Так ты его засрал за пять минут и ещё утверждаешь, что тебя за бота по ошибке принимают?

cocucka    
★★★★★★★★★★
Linux / Firefox (NL)
Ответ на: комментарий от cocucka

прости меня, а что до этого дня форум никто не засирал? я за всю историю никого не заморозил.

crypt    
★★☆☆☆
FreeBSD / Chrome (GB)
Ответ на: комментарий от cocucka

не вали с больной головы на здоровю. ты нихрена нормально настраивать не умеешь. еще и втихаря поди айпишники мои подкидываешь спам-системе. как сменю айпишник- так все работает.

проблему @sorrow вообще даже не стал решать.

crypt    
★★☆☆☆
Последнее исправление: crypt (всего исправлений: 1)

FreeBSD / Chrome (GB)
Ответ на: комментарий от crypt

Две отдельных проблемы. Да, до сих пор не решены.

sorrow    
★★★★★★★★★★★
Последнее исправление: sorrow (всего исправлений: 1)

Linux / Firefox (NL)
Ответ на: комментарий от cocucka

Недоприрезал 😏

ЗЫ:
FF в режиме HTTPS-only реально глючит тут.

Minona    
★★★★★
Windows / Yandex (RU)
Ответ на: комментарий от Anoxemian

Вспомним слова Мюллера.

Minona    
★★★★★
iPad / Safari (RU)
Ответ на: комментарий от Anoxemian

f[f[f[f, а шиз-то у нас все-таки ты) мне александра уже целый сервер предлагала поднять на площадке с бекдором)) и скромно так: а можно не FreeBSD, а то я не умею ее админить))) я чуть не опух. не, как-то это знаете, такая помощь это… садомазохизм какой-то.

crypt    
★★☆☆☆
Последнее исправление: crypt (всего исправлений: 1)

FreeBSD / Chrome (GB)
Ответ на: комментарий от crypt

))) ну борись с шизой дальше, давно б себе запилил такое же, ах да, ты ж анскильная лалка а не админ, только базы шатать можешь.

Anoxemian    
★★
Anonymous / Unknown (EE)
Ответ на: комментарий от Anoxemian

я не буду больше с тобой бороться. и я не понимаю, в чем смысл этого прокси. ты, шизик, сделал какую-то хрень. я уж не говорю о том, что только школьник будет гордиться тем, что поднял прокси)

crypt    
★★☆☆☆
Последнее исправление: crypt (всего исправлений: 3)

FreeBSD / Chrome (GB)
Ответ на: комментарий от crypt

))) выходит, ты даже не школьник? анскилл такой анскилл, пей таблетки, это - твоя стезя, шиз

Anoxemian    
★★
Anonymous / Unknown (EE)
Ответ на: комментарий от Anoxemian

ты ж анскильная лалка а не админ

Хуже. Он шиз мнящий себя админом. Его надо в палату к наполеонам, а не пускать к серверам.

cocucka    
★★★★★★★★★★
Linux / Firefox (NL)
Ответ на: комментарий от Anoxemian

lt.polzi.net

А что это за зеркало?

[UPD:] уже увидел…

xwicked    
★★★★★
Последнее исправление: xwicked (всего исправлений: 2)

Linux / Firefox (RU)

Капец, робята, обыдно что так получается. Я думал, что после форка тут будут все едины, будут все радоваться и будут бегать розовые слоники, а вон оно как получается… 😧

xwicked    
★★★★★
Linux / Firefox (RU)
Ответ на: комментарий от Anoxemian

если шо могу конфиги и фильтры выложить.

Хочется знать как это работает. Выложите если не сложно.

Aleksandra    
★★★★★
Linux / Firefox (UZ)
Ответ на: комментарий от xwicked

да все ок, я со своими розовыми слониками. меня разбанили, я даже тред дальше не читал.

crypt    
★★☆☆☆
Последнее исправление: crypt (всего исправлений: 1)

FreeBSD / Chrome (GB)
Ответ на: комментарий от Aleksandra

Лови:
lt.c

#include <stdlib.h>
#include <stdio.h>
#include <string.h>
#include <libxml/HTMLparser.h>
#include <libxml/xmlmemory.h>
#include <libxml/tree.h>
#include <libxml/parser.h>
#include <libxml/parserInternals.h>
#include <libxml/xmlerror.h>
#include <libxml/HTMLtree.h>
#include <libxml/entities.h>
#include <libxml/encoding.h>
#include <libxml/xmlIO.h>
#include <libxml/uri.h>
#include <libxml/xpath.h>
#include <libxml/xmlsave.h>
#include <glib.h>

int main()
{
        size_t size = 512;
        char* line = ( char * )malloc( sizeof( char ) * size );
        char* html = ( char * )malloc( sizeof( char ) );
        char* tmp;
        int head = 0;

        while( getline( &line, &size, stdin ) != -1 )
        {
                GString * s = g_string_new( line );
                g_string_replace( s, "https://linuxtalks.co", "https://lt.polzi.net", 0 );
                g_string_replace( s, "&nbsp;", " ", 0 );
                g_string_replace( s, "&nbsp", " ", 0 );
                if ( head == 0 && g_string_replace( s, "<head>", "<head><meta charset=\"utf-8\">", 0 ) ){ head = 1; }

                char * line = &s->str[0];
                html = ( char * )realloc( html, strlen( html ) + strlen(line) + 1 );
                tmp = &html[strlen(html)];
                memcpy( tmp, line, strlen(line) );
                tmp[strlen(line)] = '\0';
        }

        htmlDocPtr doc = htmlReadMemory( html,
                                                                         strlen( html ),
                                                                         NULL,
                                                                         NULL,
                                                                         HTML_PARSE_RECOVER | HTML_PARSE_NODEFDTD |
                                                                         HTML_PARSE_NOERROR | HTML_PARSE_NOWARNING |
                                                                         HTML_PARSE_NOBLANKS );

        xmlXPathContextPtr ctx = xmlXPathNewContext( doc );
        xmlXPathObjectPtr object = xmlXPathEvalExpression( ( xmlChar * ) "//script", ctx );
        xmlNodeSetPtr pNodeSet = object->nodesetval;
        for ( int i = 0; i < xmlXPathNodeSetGetLength(pNodeSet); i++ )
        {
                xmlNodePtr pNode = xmlXPathNodeSetItem( pNodeSet, i );
                xmlChar * vl = xmlNodeGetContent(pNode);
                if ( strstr( (char *)vl, "NREUM") )
                {
                        xmlUnlinkNode( pNode );
                        xmlFreeNode( pNode );
                }
                if ( xmlHasProp( pNode, "src" ) && strstr( (char *)xmlGetProp( pNode, "src" ), "cloudflare" ) )
                {
            xmlUnlinkNode( pNode );
            xmlFreeNode( pNode );
                }
        }
        object = xmlXPathEvalExpression( ( xmlChar * ) "//a[@itemprop=\"creator\"]/text()[contains(., \"Kaschenko\")]/../../following-sibling::div[@class=\"reply\"]/ul/li/a[@itemprop=\"replyToUrl\"]", ctx );
        pNodeSet = object->nodesetval;
    for ( int i = 0; i < xmlXPathNodeSetGetLength(pNodeSet); i++ )
    {
        xmlNodePtr pNode = xmlXPathNodeSetItem( pNodeSet, i );
        xmlNodeSetContent( pNode, "Опустить ватника" );
    }
        object = xmlXPathEvalExpression( ( xmlChar * ) "//a[@itemprop=\"creator\"]/text()[contains(., \"Kaschenko\")]/../following-sibling::span[@class=\"sign_more\"]", ctx );
        pNodeSet = object->nodesetval;
    for ( int i = 0; i < xmlXPathNodeSetGetLength(pNodeSet); i++ )
    {
        xmlNodePtr pNode = xmlXPathNodeSetItem( pNodeSet, i );
                xmlNodeSetContent( pNode, "Ватаroid / Ватаndex (Залупинск)" );
    }
        object = xmlXPathEvalExpression( ( xmlChar * ) "//a[@itemprop=\"creator\"]/text()[contains(., \"Kaschenko\")]/../following-sibling::span[@class=\"stars\"]", ctx );
        pNodeSet = object->nodesetval;
    for ( int i = 0; i < xmlXPathNodeSetGetLength(pNodeSet); i++ )
    {
        xmlNodePtr pNode = xmlXPathNodeSetItem( pNodeSet, i );
                xmlChar * vl = xmlNodeGetContent(pNode);
        xmlNodeSetContent( pNode, "" );
                for ( int i = 0; i < g_utf8_strlen( vl, -1 ); i++ )
                {
                        xmlNewChild(pNode, NULL, (xmlChar *) "img src=\"/rainbow.png\" width=\"16\" height=\"16\"", NULL);
                }
    }
        object = xmlXPathEvalExpression( ( xmlChar * ) "//a[@itemprop=\"creator\"]", ctx );
        pNodeSet = object->nodesetval;
        for ( int i = 0; i < xmlXPathNodeSetGetLength(pNodeSet); i++ )
    {
        xmlNodePtr pNode = xmlXPathNodeSetItem( pNodeSet, i );
        xmlChar * vl = xmlNodeGetContent(pNode);
        if ( strstr( (char *)vl, "Kaschenko") )
        {
            xmlNodeSetContent( pNode, "Имперский выхухоль!" );
        }
    }
        xmlSaveCtxtPtr saveCtxt = xmlSaveToFd( fileno(stdout), "UTF-8", XML_SAVE_NO_DECL );
        xmlSaveDoc( saveCtxt, doc );
        xmlSaveClose(saveCtxt);
        return 0;
}

Собирается однострочником

gcc lt.c -I/usr/include/glib-2.0 -I/usr/lib/x86_64-linux-gnu/glib-2.0/include -lglib-2.0 -I/usr/include/libxml2 -lxml2  -o lt

В настройках reverse proxy (у меня apache) фильтр регистрируется и включается:

ExtFilterDefine lt mode=output intype=text/html outtype=text/html cmd="/var/www/polzi.net/lt/htdocs/lt
SetOutputFilter lt
Anoxemian    
★★
Anonymous / Unknown (EE)
Ограничение на отправку комментариев: только для зарегистрированных пользователей, score>=90