Помощ - Търси - Регистрирани - Календар
Пълна версия: Auth TCL for OP
UniBG Forums > Дискусии > Помощ
Гост
Здравейте, искам някои ако може да ми напише ТЦЛ в който когато някои се опита да използва командата /мсг бота оп пасс и бота да му праща нотице в което да пише че трябва да се идентне преди да използва тази команда, и когато тои се иденте бота съответно да му праща и нотице дали е вярна паролата или не, когато паролата му е вярна и след това използва вече командата /мсг бота оп пасс , тогава вече бота да му дава ОП ( @ ) , надявам се да съм бил максимално ясен и да сте ме разбрали, благодаря ви предварително.
int21h
google.bg/search?q=lol+toolz
magdanoz
birata kwa da byde?
kartofite sys sirene ili bez?
neshto drugo da predlojim hlebche twa onowa ?
Гост
int21h , тези ТЦЛ-И не са точно това което исках : )
Гост
? Някои ще помогне ли ?
Гост
nali tova e celta na bota da ti dade OP daje i da ne si ident v NS i kato nqma services primerno smile.gif
Гост
НЕ аз не искам това, и не говоря за НС, а за идент в самия бот с /мсг бота ид пасс и след това вече да може да използва /мсг бота оп пасс и не говоря за ПУБ а за МСГ , надявам се вече да сте ме разбрали.
Narf
QUOTE (Гост @ Jun 12 2008, 03:08 PM) *
НЕ аз не искам това, и не говоря за НС, а за идент в самия бот с /мсг бота ид пасс и след това вече да може да използва /мсг бота оп пасс и не говоря за ПУБ а за МСГ , надявам се вече да сте ме разбрали.


Аз те разбрах от самото начало, но това което искаш е безсмислено при положение, че и двете действия изискват една и съща парола.
Гост
Добре, и как да направя едно от двете действия ?
Narf
Просто е безсмислено да забраняваш OP чрез парола.
Трайната идентификация служи за да може след това да се пропуска въвеждането на парола, било то чрез публични команди или private messages.
Гост
Мии, просто ми е нужно трябва ми тъкъв ТЦЛ, просто искам да имам по-голяма сигурност това е, ако можеш да ми помогнеш ...
unib(u)g
po-golqma sigurnost? ot? userite spirat irc, a ti iskash sigurnost...
rofl
Narf
QUOTE (Гост @ Jun 12 2008, 05:33 PM) *
Мии, просто ми е нужно трябва ми тъкъв ТЦЛ, просто искам да имам по-голяма сигурност това е, ако можеш да ми помогнеш ...


Това е глупост, а не сигурност. :>
Гост
И така де "глупост" ще ми помогнеш ли ?
Гост
Някои ще помогне ли, много ми трябва това ?
Arruor
Идеята всъщност хич не е глупава. Младежа явно иска да имплементира сесийна оторизация.

За целта:
1. Забраняват се всички built-in команди - за идентифициране на хост, за получаване на voice/op и т.н.
2. Премахват се всички add-нати хостове на потребителите.
3. Разработва се алгоритъм за идентифициране на потребител по следния начин:
3.1 Потребителя се оторизира пред бота с указана парола
3.2 Добавя се временен хост, който е валиден до:
3.2.1 Използване на команда за деоторизация
3.2.2 Напускане на канала
3.2.3 Излизане от IRC
4. След като потребителя е успешно оторизиран му се дава достъп до командите, които трябва да ползва.

Ето пример (непълен) от това, което съм събирал преди време от разни скриптове:

CODE
# Use @ your own risk.
  
   # Setting some requirements
   package require Tcl 8.3
   package require eggdrop 1.6
  
   #defining namespace
   namespace eval chanlock {
    
       global botnick
      
       # dealing with some variables
       variable auth_clones 1
       variable botnick $botnick
      
       # dealing with auth
       # definning auth_ok process
       proc authok {nick host hand} {
           variable auth_clones
        
           if { [validuser $hand] == 0 } { return 0 }
           if { [getuser $hand XTRA auth] < 1 } { return 0 }
           if { [getuser $hand XTRA authhost] != $host } { return 0 }
           if { $auth_clones == 1 && [getuser $hand XTRA authnick] != $nick} { return 0 }
            
           return 1
       }
      
       proc auth_timer {hand} {
           if { [hand2nick $hand] != "" } { return 0 }
           set a [getuser $hand XTRA auth]
           if { $a != 0 } {
             setuser $hand XTRA auth 0
             putcmdlog "\002\[AUTH\]\002 $hand didn't (re)join a chan in time."
             if { $a == 2 } {
               set tmphost "*![getuser $hand XTRA authhost]"
               delhost $hand $tmphost
               putcmdlog "\002\[AUTH\]\002 Temporary hostmask $tmphost removed from $hand."
             }
           }
       }
  
       proc msg_auth {nick host hand arg} {
           variable auth_clones
           set ahand [lindex $arg 0]
           set pw    [lindex $arg 1]
          
           # unknown handle, no password or false password -> no auth
           if { [validuser $ahand] == 0 }    { return 0 }
           if { [passwdok $ahand ""] == 1 }  { return 0 }
           if { [passwdok $ahand $pw] == 0 } { return 0 }
    
           if { [getuser $ahand XTRA auth] == 2 } {
               set tmphost "*![getuser $ahand XTRA authhost]"
               delhost $ahand $tmphost
               setuser $ahand XTRA auth 0
               putcmdlog "\002\[AUTH\]\002 Temporary hostmask $tmphost removed from $ahand."
               putnotc $nick "\002\[AUTH\]\002 Removed old pending auth. Please try again!"
               return 0
           }
  
           setuser $ahand XTRA authhost $host
           if { $auth_clones == 1 } {
               setuser $ahand XTRA authnick $nick
           }
           if { $hand != $ahand } {
           # We need to temporarly add $hand's hostmast to $ahand
               setuser $ahand HOSTS "*!$host"
               setuser $ahand XTRA auth 2
               putcmdlog "\002\[AUTH\]\002 $nick identified as $ahand with temporary hostmask *!$host"
           } {
               setuser $ahand XTRA auth 1
               putcmdlog "\002\[AUTH\]\002 $nick identified as $ahand with known host $host"
           }
           putnotc $nick "\002\[AUTH\]\002 Auth granted !!!"
    
           if { [nick2hand $nick] == "" } {
               putnotc $nick "\002\[AUTH\]\002 You must soon join one of my chans or your auth will be removed."
               utimer 66 "auth_timer $ahand"
           }
           return 0
       }
  
       proc msg_unauth {nick host hand arg} {
           variable auth_clones
           set ahand [lindex $arg 0]
           set pw    [lindex $arg 1]
          
           # unknown handle, no password or false password -> no auth
           if { [validuser $ahand] == 0 }    { return 0 }
           if { [passwdok $ahand ""] == 1 }  { return 0 }
           if { [passwdok $ahand $pw] == 0 } { return 0 }
    
           set tmphost "*![getuser $ahand XTRA authhost]"
           delhost $ahand $tmphost
           setuser $ahand XTRA auth 0
           putcmdlog "\002\[AUTH\]\002 Temporary hostmask $tmphost removed from $ahand."
           putnotc $nick "\002\[AUTH\]\002 Auth revoked !!!"
           set tmphost "*![getuser $ahand XTRA authhost]"
           set tmpauth [getuser $ahand XTRA auth]
           return 0
       }
          
       proc nick_auth {nick host hand chan newnick} {
           if {$hand == "*"} { return 0 }
           if {[getuser $hand XTRA auth] >= 1 &&
               [getuser $hand XTRA authnick] == $nick} {
               setuser $hand xtra authnick $newnick
           }
       }
  
       proc part_auth {nick host hand chan text} {
           if { $hand == "*" } { return 0 }
           set a [getuser $hand XTRA auth]
           if { $a >= 1 } {
               utimer 10 "auth_timer $hand"
           }
       }
  
       proc sign_auth {nick host hand chan reason} {
           variable auth_clones
  
           if { $hand == "*" } { return 0 }
           set a [getuser $hand XTRA auth]
           if { $a >= 1 } {
               if { $auth_clones == 1 && [getuser $hand XTRA authnick] != $nick } {
                   putcmdlog "\002\[AUTH\]\002 clone signoff ($nick != $hand)"
                   return 0
               }
               setuser $hand XTRA auth 0
               if { $a == 2 } {
                   set tmphost "*![getuser $hand XTRA authhost]"
                   delhost $hand $tmphost
                   putcmdlog "\002\[AUTH\]\002 Temporary hostmask $tmphost removed from $hand."
               }
           }
       }
      
       # setting all users as unauthed
       foreach u [userlist] { setuser $u XTRA auth 0 }
  
       # dealing with some binds here
       bind msg - auth [namespace current]::msg_auth
       bind msg - unauth  [namespace current]::msg_unauth
       if { $auth_clones == 1 } { bind nick - * [namespace current]::nick_auth }
       bind sign - * [namespace current]::sign_auth
       bind part - * [namespace current]::part_auth
   }


Кое за какво служи:
msg_auth - процес за оторизиране пред бота
msg_unauth
- процес за деоторизиране
nick_auth - процес за добавяне на новия ник, към временния host запис (управлява се, чрез стойност на променливата auth_clones: 0 - забранява добавяне на временен host запис при смяна на никнейм, != 0 - разрешава добавяне на временен host запис при смяна на никнейм)
part_auth - процес за деоторизиране при напускане на канал
sign_auth - процес за деоторизиране при напускане на IRC
authok - проверка за валидност на оторизация

По-нататък сам ще си (пре)пишеш каквото е необходимо за раздаване на кльомби, маймунки, опове и т.н.
N2GetherNow
QUOTE(Гост @ Jun 12 2008, 02:08 PM) *
НЕ аз не искам това, и не говоря за НС, а за идент в самия бот с /мсг бота ид пасс и след това вече да може да използва /мсг бота оп пасс и не говоря за ПУБ а за МСГ , надявам се вече да сте ме разбрали.


Безмислено е, /.мсг бота оп иска парола така или иначе? и както спомена Нарф, тя е една и съща за всички команди
Arruor
Човека иска помощ да си реши проблема, не коментира дали е смислено това, което иска да направи или не.
А и все пак - unbind msg - ident *msg:op, плюс че може да се заиграе човек и с атрибута XTRA и да се искат различни пароли за различни типове команди.

Както казах и по-горе, за мен има смисъл от темата, за когото няма - да си намери други занимания smile.gif
Това е семпла версия на форума. За да видиш пълната версия, която има повече информация, по-добра подредба и снимки, натисни тук.
Invision Power Board © 2001-2008 Invision Power Services, Inc.