Вопросы по скриптам
|
|
|
Vladislav 20.03.13 18:06 #331
|
Добавить можно, но лень на данный момент и я что-то подобное практиковал не эффективно было ни кто это не читает, а вот с киком заставляет обратить внимания. Чтоб банил за имя это надо каждого кто входит хуизить, а это не очень хорошо, и обойти можно, ведь имя можно сменить не отсоединяясь от сервера, и что тогда каждую минуту всех хуизить)
|
|
|
Цитата и что тогда каждую минуту всех хуизить) Нет, только тогда, когда юзер заходит на канал. В Руснете увидел на канале помощи, как один юзер на канал зашёл, и бот его сразу забанил за то что у него мат в Имени был )
|
|
|
|
Vladislav 03.04.13 13:17 #333
|
Авторизация в одноклассниках (МЫЛО и ПАРОЛЬ подставьте свои):
Код # Заходим на сайт, вводим логин и пароль и получаем куки: set id [::http::meta [::http::geturl http://www.odnoklassniki.ru/dk?cmd=AnonymLogin&\;st.cmd=anonymLogin&\;tkn=941 -timeout 20000 -query [::http::formatQuery st.posted set st.email МЫЛО st.password ПАРОЛЬ submit ""]]] # Берём только то что нам нужно для идентификации: regexp -nocase -- {.*JSESSIONID=(.*?);.*} $id -> id # Заходим по заданной сылке идентифицированные уже: set html [::http::geturl http://www.odnoklassniki.ru/ -binary 1 -timeout 20000 -headers [list Cookie "JSESSIONID=$id"]] # Приводим полученные данные для последующего анализа: set data [encoding convertfrom utf-8 [regsub -all -- {\n|\r|\t|\v} [::http::data $html] ""]]; ::http::cleanup $html # Сохраним в файлик то что получили: ::ccs::SaveFile ok.txt [list $data]
|
|
|
Имеем файл примерно следующего вида:
Цитата Fri Apr 5 17:47:20 2013 us=121823 Client/46.53.195.37:3761 SENT CONTROL [Client]: 'PUSH_REPLY,ping 10,ping-restart 120,ifconfig 192.168.251.21 255.255.255.0' (status=1) Fri Apr 5 17:53:15 2013 us=508263 Client/37.55.37.171:10013 SENT CONTROL [Client]: 'PUSH_REPLY,ping 10,ping-restart 120,ifconfig 192.168.251.22 255.255.255.0' (status=1) Fri Apr 5 17:56:54 2013 us=543803 Client/95.111.208.249:1194 SENT CONTROL [Client]: 'PUSH_REPLY,ping 10,ping-restart 120,ifconfig 192.168.251.21 255.255.255.0' (status=1)
Это лог openvpn сервера. При подключении клиентов каждому выдается внутренний айпишник вида 192.168.251.xxx
Требуется узнать внешний ip адрес клиента, зная внутренний. То есть 192.168.251.21 мы знаем, а 95.111.208.249 вывести на канал. Пишу следующий скрипт:
Код bind pub - !ip par
proc par {nick uhost hand chan text} { set text [lindex [split $text] 0] set file "/etc/openvpn/openvpn.log" set rfile [read [open $file r]] set rez [lindex [regexp -all -inline -- "Client\/(.*?):1194 SENT CONTROL.*?PUSH_REPLY,ping 10,ping-restart 120,ifconfig $text 255.255.255.0" $rfile] end] putserv "PRIVMSG $chan :$rez" }
Перепробовал различные маски - не работает. И вывести необходимо только последнее совпадение, так как за день один и тот же клиент может подключиться несколько раз. Это мы делаем с помощью lindex ... end
|
|
|
|
Vladislav 06.04.13 01:00 #335
|
В regexp нельзя вставлять переменную, когда открываешь файл его надо закрывать и другие ошибки есть, я бы сделал так:
Код bind pub - !ip par proc par {nick uhost hand chan text} { if {$text == ""} {putserv "NOTICE $nick :Формат: !ip <ip>"; return} set maska "Client/(.*?):.*?ifconfig [lindex [split $text] 0] 255" set filep [open /etc/openvpn/openvpn.log r] set rez ""; foreach line [split [read $filep] \n] { if {[regexp -nocase -- $maska $line -> ip]} {set rez $ip} } close $filep putserv "PRIVMSG $chan :$rez" }
|
|
|
Доброго времени суток! Вот решил написать скрипт сервиса HostServ
Что умеет данный скрипт: 1) Устанавливает хост 2) Создает и пишет в базу список запрещенных хостов 3) Банит после установки хоста
Прошу помочь дописать скрипт: 1) Бан пусть ставит на время (7 дней) 2) Запрещенные хосты ставить запрещает 3) Хосты записанные Кириллицой запрещает 4) ИП-адреса ставить запрещает
|
|
|
|
Vladislav 13.04.13 23:44 #337
|
Разве хост устанавливается с идентом? Наверно так должно быть !vhset <virtualnyi.host>? зачем там собака?
В списке запрещённых хостов зачем нужен канал? При удалении он не учитывается, видимо его там не должно быть.
Код bind pub - !vhset vhsetpub bind pub m !restricted+ restrictedpluspub
set restricteds "data/restricted.txt"
proc vhsetpub {nick uhost hand chan text} { global restricteds set host [lindex [split [string trim [string map { {}} [stripcodes cubr $text]]]] 0] if {$host == ""} {putserv "NOTICE $nick :Формат: !vhset <ident@virtualnyi.host>"; return} if {[regexp -nocase -- {[а-я]} $host]} {putserv "NOTICE $nick :Кирилица в хосте запрещена."; return} if {[regexp -- {[0-9\.]{5,30}} $host]} {putserv "NOTICE $nick :Хост не должен походить на ip."; return} if {[file exists $restricteds]} { set rfilep [open $restricteds r]; set data [lrange [split [read $rfilep] \n] 0 end-1]; close $rfilep; foreach line $data { if {[string match -noc "[lindex $line 0]" $host]} {putserv "NOTICE $nick :Этот хост запрещён."; return} } } putserv "HostServ set $nick $host" putserv "NOTICE $nick :Ваш виртуальный хост: \002$host\002 Для дальнейшей активации вашего виртуального хоста используйте команду: \002/hs on\002" newchanban $chan $nick!*@* $::botnick "Увидимся через 7 дней." 10080; newchanban $chan *!$uhost $::botnick "Увидимся через 7 дней." 10080 if {[string match "*@*" $host]} {newchanban $chan *!$host $::botnick "Увидимся через 7 дней." 10080} {newchanban $chan *!*@$host $::botnick "Увидимся через 7 дней." 10080} }
proc restrictedpluspub {nick uhost hand chan text} { global restricteds set text [lindex [split [string trim [string map { {}} [stripcodes cubr $text]]]] 0] if {$text == ""} {putserv "NOTICE $nick :Формат: !restricted+ <хост>. Можно использовать '*' и '?'."; return} if {![file exists $restricteds]} {set f [open $restricteds w+]; close $f} set rfilep [open $restricteds a+]; puts $rfilep $text; close $rfilep putserv "NOTICE $nick :\002$text\002 успешно добавлен." }
|
|
|
Спасибо Идент в виртуальном хосте именно в той сети где я сижу не запрещен А что если добавить чтоб проверяло заявки на хосты..
|
|
|
|
Vladislav 14.04.13 11:11 #339
|
|
Цитата <con> !restricted -vHoster- root -vHoster- staff -vHoster- *staff* -vHoster- *root* <test> !vhset staff@staff.staff * vHoster меняет режим: +b test!*@* * test кикнут пользователем vHoster (Banned: Увидимся через 7 дней.) Почему restricted не пашет?
|
|
|
|
Vladislav 14.04.13 20:43 #341
|
Потому что он ищет 100% совпадение, без маски. Обновил прошлое сообщение.
|
|
|
Бот мой не обновляется Цитата [13:42:09] Tcl error [::updatew::pub]: invalid command name "::updatew::numgrp"
|
|
|
|
Vladislav 20.04.13 11:15 #343
|
Пишет что нет такой процедуры в скрипте, хотя она там есть, и у меня работает. !обновить новое напиши, когда появится ошибка сделаешь !restart и посмотришь стало ли работать. обновить скрипты он должен в том числе и этот скрипт, просто сообщить тебе об этом не может.
|
|
|
|
|
Vladislav 21.04.13 11:01 #345
|
Тогда напиши !загрузка update.tcl загрузиться должен один только скрипт который в папке system, если загрузит другие скрипты, то удали их.
После этой ошибки напиши .tcl $::errorInfo в PuTTy. Так же можно написать !tcl ::updatew::numgrp 1 в ответ должен получить 1 если есть такая процедура.
|
|
|