Welcome, Guest. Please login or register.

Login with username, password and session length

 
Advanced search

9 884 Posts in 5 358 Topics- by 1 216 Members - Latest Member: santini862

26 May 2019, 05:39
Select Language English | Russian ru | German
Main PageIRC Client KVIrc forumRussian talksСкриптинг (Moderator: runkoff)Скрипт добавления банов прокси-адресов
Pages: [1] 2
Print
Author Topic: Скрипт добавления банов прокси-адресов  (Read 160886 times)
0 Members and 1 Guest are viewing this topic.
drugold
Новичок
*

Репутация: 1
Posts: 12


View Profile Email
« on: 4 September 2007, 23:43 »

Дано:
1. Файл "proxy.txt" с адресами прокси-серверов ([IP]:[Port]).
2. Требуется запустить скрипт с параметрами: /proxy [причина бана]

Сам скрипт:
Code:
# Proxy AKILL ADD

%a = $hash();
for(%i = 0;$file.readLines(F:/SOFTWARE/KVIrc/proxy.txt,%i);%i++)
{
%a{%i} = $str.token(0,$char(44),$str.token(0,$char(58),$file.readLines(F:/SOFTWARE/KVIrc/proxy.txt,%i)))
}
foreach(%i,$keys(%a))OperServ AKILL ADD +0 $str.append(*@,%a{%i}) $0-
Скрипт работает, но с маленькими базами. При 2000 строках и более квирк подвисает и вылетает по пингу.
Как бы его поправить/переписать для больших баз, чтобы квирк не подвисал?
« Last Edit: 4 September 2007, 23:49 by drugold » Logged
Maximusya
Глобальный модератор
*****

Репутация: 49
Gender: Male
Posts: 343



View Profile
« Reply #1 on: 5 September 2007, 11:05 »

Я не совсем понял, какого формата у тебя файл со списком прокси-серверов, но мой скрипт использует такой (адреса придуманы):
88.45.678.21:886
88.45.678.22:886
88.45.678.23:886


Code:
alias(proxy)
{
# Proxy AKILL ADD
if ($0 == "") %reason = "your host is in a ban-list";
else %reason = $0-;
%proxies = $file.readLines(F:/SOFTWARE/KVIrc/proxy.txt);
foreach(%proxy, %proxies)
{
%ip = $str.token(0, ":", %proxy);
OperServ AKILL ADD +0 *\@%ip %reason
}
}

KVIrc подвисает на время отправки всех OperServ AKILL ADD. Эта команда не принимает список банов в качестве параметра, поэтому никак не обойтись без отправки 5000 таких команд.
При тесте на файле с 5000 записями прокси-серверов это все отправилось за несколько секунд. За какое время OperServ обработает все эти команды? Я не знаю)
Logged
drugold
Новичок
*

Репутация: 1
Posts: 12


View Profile Email
« Reply #2 on: 5 September 2007, 12:42 »

1. Базы двух типов у меня:
IP:Port
[номер]  IP:Port
Как бы сделать чтоб с обеими работал скрипт?
2. Поясни, пожалуйста, работу строки: %proxies = $file.readLines(F:/SOFTWARE/KVIrc/proxy.txt);

и функции foreach в данном скрипте
3. Как вставить в ризон скрипта спецсимволы (жирный шрифт и цвет)?
« Last Edit: 5 September 2007, 12:51 by drugold » Logged
Maximusya
Глобальный модератор
*****

Репутация: 49
Gender: Male
Posts: 343



View Profile
« Reply #3 on: 5 September 2007, 14:32 »

1. Разные типы баз в разных файлах или в одном?
Приведи здесь, пожалуйста, несколько строк каждого типа.

2. %proxies = $file.readLines(F:/SOFTWARE/KVIrc/proxy.txt);
Заносит каждую строку из файла в отдельный элемент массива %proxies. При этом строки в файле должны разделяться по крайней мере символами конца строки ($lf) (если в текстовом редакторе нажать ввод, то этот символ вставится в конце строки)
Ну а перебор foreach(%proxy, %proxies) последовательно перебирает все элементы массива %proxies, занося текущий элемент в переменную %proxy. Таким образом в переменной %proxy оказывается одна запись(строка) вида 88.45.678.21:886. Из нее потом выделяется ip и на этот ip прописывется AKILL

3. Спецсимволы можно вставить так: в редакторе скриптов квирка символ жирности вставляется по нажатию Ctrl+B. Вставится $b (это можно написать и самому, не нажимая Ctrl+B). Жирным будет выводиться текст, заключенный между двумя такими символами.
Спецсимвол цвета ($k) вставляется по нажатию Ctrl+K. Цвет символа и цвет фона указываются в скобках: $k(цвет_символа,цвет_фона), например $k(3,4) - зеленый текст на красном фоне. Или просто $k(3) - зеленый текст. Указанное цветовое оформление работает до следующего символа $k. Если указать $k без параметров, то это будет означать сброс всякого оформления.
Будет ли OperServ запоминать причину бана со спецсимволами, я не знаю. Возможно, он их просто вырежет. Проверишь сам.
Logged
drugold
Новичок
*

Репутация: 1
Posts: 12


View Profile Email
« Reply #4 on: 6 September 2007, 14:59 »

1. Вот несколько строк списка:
Quote
88.88.88.88:80
99.99.99.99:8080
456  56.89.77.123:3128
56  82.144.56.47:3000
Желательно, чтоб скрипт понимал оба варианта.

2. Я заметил особенность. Скрипт срабатывает со второго запроса, т.е. пишу: /proxy -молчит, еще раз пишу -работает.
3. Насчет цветов, спасибо, все работает.
« Last Edit: 6 September 2007, 15:01 by drugold » Logged
Maximusya
Глобальный модератор
*****

Репутация: 49
Gender: Male
Posts: 343



View Profile
« Reply #5 on: 7 September 2007, 12:23 »

1. Сделай цикл foreach таким:
Code:
foreach(%proxy, %proxies)
{
%ip = %proxy;
        %ip =~ s/.*(\\d+\.\\d+\.\\d+\.\\d+):.*/\\1/
OperServ AKILL ADD +0 *\@%ip %reason
}

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

2. Не замечал такой особенности. Внутри скрипта не вижу никаких причин для срабатывания со второго раза. Как только отдана команда, ты должен увидеть множественные RAW команды в консоли.
« Last Edit: 7 September 2007, 23:56 by Maximusya » Logged
drugold
Новичок
*

Репутация: 1
Posts: 12


View Profile Email
« Reply #6 on: 7 September 2007, 22:25 »

1. Что-то вообще перестало работать:
Code:
alias(proxy)
{
# Proxy AKILL ADD
if ($0 == "") %reason = "$k(4)ACCESS DENIED! Open Proxy found on your host";
else %reason = $0-;
%proxies = $file.readLines(F:/SOFTWARE/KVIrc/proxy.txt);
foreach(%proxy, %proxies)
             {
                    %ip = %proxy;
                                  %ip = =~ s/.*(\\d+\.\\d+\.\\d+\.\\d+):.*/\\1/
                    OperServ AKILL ADD +0 *\@%ip %reason
              }
}
Вот итоговый код и теперь получаю:
Quote
OperServ AKILL ADD +0 *@=~ s/.*(\d+.\d+.\d+.\d+):.*/\1/ ACCESS DENIED! Open Proxy found on your host
OperServ AKILL ADD +0 *@=~ s/.*(\d+.\d+.\d+.\d+):.*/\1/ ACCESS DENIED! Open Proxy found on your host

2. Когда набираю первый раз, то никаких RAW команд нет. Вообще никак не реагирует. А вот со второго раза запускается.
« Last Edit: 7 September 2007, 22:29 by drugold » Logged
Maximusya
Глобальный модератор
*****

Репутация: 49
Gender: Male
Posts: 343



View Profile
« Reply #7 on: 7 September 2007, 23:53 »

Ой, прошу прощения((
В общем не 
%ip = =~ s/.*(\\d+\.\\d+\.\\d+\.\\d+):.*/\\1/
а
%ip =~ s/.*(\\d+\.\\d+\.\\d+\.\\d+):.*/\\1/

oO.. что чувствовал OperServ, когда получал ту чушь?..
« Last Edit: 7 September 2007, 23:59 by Maximusya » Logged
drugold
Новичок
*

Репутация: 1
Posts: 12


View Profile Email
« Reply #8 on: 8 September 2007, 10:06 »

1. Вот, теперь работает.
Что выдавал OperServ я написал. Он ничего не чувствует, а честно отрабатывает))
2. Насчет запуска со второго раза есть мысли? Может какие-то настройки влияют?
Logged
Maximusya
Глобальный модератор
*****

Репутация: 49
Gender: Male
Posts: 343



View Profile
« Reply #9 on: 8 September 2007, 14:40 »

У меня работает с любого раза. Ты выполняешь /proxy из командной строки или в теле какого-то другого скрипта?
Для проверки того, в каком месте что ломается, внеси в скрипт отладочные echo сообщения:
Code:
alias(proxy)
{
echo Запущен алиас $b"proxy"$b
if ($0 == "") %reason = "$k(4)ACCESS DENIED! Open Proxy found on your host";
else %reason = $0-;
%proxies = $file.readLines(g:/software/kvirc/proxy.txt);
echo Из файла прочитано $length(%proxies) записей
foreach(%proxy, %proxies)
        {
%ip = %proxy;
        %ip =~ s/.*(\\d+\.\\d+\.\\d+\.\\d+):.*/\\1/
        echo Выполняем $b"AKILL ADD"$b для %ip
OperServ AKILL ADD +0 *\@%ip %reason
        }
        echo Работа алиаса завершена, ждите ответа OperServ
}

Результат выполнения скрипта у меня вот такой:
Quote
[13:37:46] Запущен алиас proxy
[13:37:46] Из файла прочитано 4 записей
[13:37:46] Выполняем AKILL ADD для 88.88.88.88
[13:37:46] [RAW]: OperServ AKILL ADD +0 *@88.88.88.88 ACCESS DENIED! Open Proxy found on your host
[13:37:46] Выполняем AKILL ADD для 99.99.99.99
[13:37:46] [RAW]: OperServ AKILL ADD +0 *@99.99.99.99 ACCESS DENIED! Open Proxy found on your host
[13:37:46] Выполняем AKILL ADD для 56.89.77.123
[13:37:46] [RAW]: OperServ AKILL ADD +0 *@56.89.77.123 ACCESS DENIED! Open Proxy found on your host
[13:37:46] Выполняем AKILL ADD для 82.144.56.47
[13:37:46] [RAW]: OperServ AKILL ADD +0 *@82.144.56.47 ACCESS DENIED! Open Proxy found on your host
[13:37:47] Работа алиаса завершена, ждите ответа OperServ
[13:37:47] *OperServ* Доступ запрещен.
[13:37:47] *OperServ* Доступ запрещен.
[13:37:47] *OperServ* Доступ запрещен.
[13:37:47] *OperServ* Доступ запрещен.
Logged
drugold
Новичок
*

Репутация: 1
Posts: 12


View Profile Email
« Reply #10 on: 8 September 2007, 18:27 »

Набираю в консоли /proxy и....тишина. Второй раз набираю и тогда:
Quote
[18:25:51] Запущен алиас proxy
[18:25:51] Из файла прочитано 4 записей
[18:25:51] Выполняем AKILL ADD для 66.66.66.66
[18:25:51] OperServ AKILL ADD +0 *@66.66.66.66 ACCESS DENIED! Open Proxy found on your host
[18:25:51] Выполняем AKILL ADD для 88.88.88.88
[18:25:51] OperServ AKILL ADD +0 *@88.88.88.88 ACCESS DENIED! Open Proxy found on your host
[18:25:51] Выполняем AKILL ADD для 55.55.55.55
[18:25:51] OperServ AKILL ADD +0 *@55.55.55.55 ACCESS DENIED! Open Proxy found on your host
[18:25:51] Выполняем AKILL ADD для 77.77.77.77
[18:25:51] OperServ AKILL ADD +0 *@77.77.77.77 ACCESS DENIED! Open Proxy found on your host
[18:25:51] Работа алиаса завершена, ждите ответа OperServ
Чтобы не делать лишних банов я поставил echo перед OperServ AKILL ADD +0 *\@%ip %reason
Все остальное без изменений. Да, еще заметил, что все последующие разы он выполняется раз за разом.
То есть: первый раз не срабатывает, второй, третий итд уже работает. А если зайти в алиасы и нажать ОК или Применить, то опять не работает с первого раза.
« Last Edit: 8 September 2007, 18:32 by drugold » Logged
Hadros
Новичок
*

Репутация: 7
Gender: Male
Posts: 32


250254035
View Profile
« Reply #11 on: 8 September 2007, 20:51 »

Посмотрите на самую первую строку в вашем алиасе proxy в редакторе алиасов, она выглядит так: "alias(proxy)" или сразу начинается сам скрипт "# Proxy AKILL ADD"?
Если "alias(proxy)", то удалите эту строку и следующую за ней открывающую фигурную скобку "{", а так-же в самом конце скрипта закрывающую скобку "}"
« Last Edit: 8 September 2007, 21:00 by Hadros » Logged

Eru shitteiru ka shinigami wa ringo shika tabenai
drugold
Новичок
*

Репутация: 1
Posts: 12


View Profile Email
« Reply #12 on: 8 September 2007, 21:05 »

Удалил и все заработало с первого раза, спасибо. Интересно для чего тогда они писались?
Logged
Hadros
Новичок
*

Репутация: 7
Gender: Male
Posts: 32


250254035
View Profile
« Reply #13 on: 8 September 2007, 21:12 »

Code:
alias(proxy)
{
# Proxy AKILL ADD
if ($0 == "") %reason = "$k(4)ACCESS DENIED! Open Proxy found on your host";
else %reason = $0-;
%proxies = $file.readLines(F:/SOFTWARE/KVIrc/proxy.txt);
foreach(%proxy, %proxies)
             {
                    %ip = %proxy;
                                  %ip = =~ s/.*(\\d+\.\\d+\.\\d+\.\\d+):.*/\\1/
                    OperServ AKILL ADD +0 *\@%ip %reason
              }
}
это скрипт создания алиаса, а
Code:
# Proxy AKILL ADD
if ($0 == "") %reason = "$k(4)ACCESS DENIED! Open Proxy found on your host";
else %reason = $0-;
%proxies = $file.readLines(F:/SOFTWARE/KVIrc/proxy.txt);
foreach(%proxy, %proxies)
{
%ip = %proxy;
%ip = =~ s/.*(\\d+\.\\d+\.\\d+\.\\d+):.*/\\1/
OperServ AKILL ADD +0 *\@%ip %reason
}
это срипт самого алиаса.
При первом запуске у вас создавался алиас proxy, а при последующих выполнялся
Logged

Eru shitteiru ka shinigami wa ringo shika tabenai
drugold
Новичок
*

Репутация: 1
Posts: 12


View Profile Email
« Reply #14 on: 8 September 2007, 21:21 »

Аа, тогда ясно, спасибо за разъяснение.
Имеется у меня сервис, он проверяет прокси еще по портам. Как бы с помощью квирка сгенерировать лист портов 80-99999 и записать столбиком в файл "ports.txt". А потом попробую изменить данный скрипт, чтоб он вбил порты в лист сервиса.
Logged
Pages: [1] 2
Print
Jump to:  

Theme orange-lt created by panic