Magneto for UnrealIRCd — File Browser

MagnetoforUnrealIRCdv1.51 / MagnetoforUnrealIRCdv1.51 / magneto / magnetunreal.mrc

magnetunreal.mrc — 16.76 KB — Download this file

; ****************************************************
; Magneto for unrealIRCd v 1.51 (2005) by Averell
; Please type /load -rs magneto/magnetunreal.mrc
; Read the readme.txt in magneto folder
; ****************************************************

on 1:load: set %linkpass openaccess | set %linkport 4400 | set %linkserv localhost | set %linkwho $false
on 1:unload: unset %linkpass | unset %linkserv | unset %linkport | unset %tempport | unset %tempserv | unset %temppass | unset %tapageur | unset %tempwho | unset %linkwho

on 1:start: echo 12 -a Magneto for UnrealIRCD v1.51 (c) Averell 2004-2005

; on 1:sockread:lktelnet*: sockread %temp | echo 4 -a *** %temp

dialog dlink {
  title "Magneto for Unreal's configuration box"
  size -1 -1 400 182

  box "", 11, 10 10 380 150
  button "&Accept", 101, 260 62 120 25, default
  button "&Cancel", 111, 260 94 120 25,cancel
  text "Server's ip address", 103, 0 30 110 25,right
  text "Linking port", 104, 0 62 80 25,right
  text "Linking pass", 107, 0 94 80 25,right
  text "/WHO on join", 109, 0 126 80 25,right

  edit "",105,115 30 100 25,right
  edit "",106,115 62 100 25,right
  edit "",108,115 94 100 25,right
  check "(Yes/No)",110,115 126 100 25,right
}

on 1:dialog:dlink:edit:105:{ %tempserv = $did(105).text }
on 1:dialog:dlink:edit:106:{ %tempport = $did(106).text }
on 1:dialog:dlink:edit:108:{ %temppass = $did(108).text }
on 1:dialog:dlink:sclick:110:{ %tempwho = $iif($did(110).state == 1,$true,$false) }
on 1:dialog:dlink:sclick:101: dialog -c dlink | set %linkport %tempport | set %linkpass %temppass | set %linkserv %tempserv | set %linkwho %tempwho

alias magconfig   {
  dialog -m dlink dlink
  did -ra dlink 105 %linkserv
  did -ra dlink 106 %linkport
  did -ra dlink 108 %linkpass
  did $iif(%linkwho,-c,-u) dlink 110
  set %tempport %linkport | set %temppass %linkpass | set %tempserv %linkserv | set %tempwho %linkwho
}

alias initlink { 
  if ( %linked == $true ) termine
initlnk %linkserv %linkport }

alias initlnk {
  if ( $2 == $null ) return
  .enable #ouvretel

  if ($3 == $null) { set %fichier $$file="Name of sequence file" magneto\mylogs\ }
  else { set %fichier $3 }
  set %i 1
  :boucle
  set %j 1
  :boucle2
  %temp = lktelnet $+ %j
  if ( $sock(%temp).name == $null ) { sockopen %temp $1 $2 | goto suite2 }
  inc %j
  goto boucle2
  :suite2
  window -hekl20 @ $+ %temp  ms sans serif 14 | titlebar @ $+ %temp sur $1 ( $+ $2 $+ )
  aline -ph 4 @ $+ %temp Client lktelnet - par Averell
}

#ouvretel on
on 1:sockopen:lktelnet*: {
  ;  %temp2 = $right($sockname,$calc($len($sockname)-6))
  if ( $sockerr > 0 ) { aline -ph 2 @ $+ $sockname Pas de connexion trouvée | echo 12 -a * Error! UnRealIRCD not found, or bad port number... | return }
  else  { aline -ph 4 @ $+ $sockname Connexion établie | set %linked $true | .enable #offline | nick $myaleanick | lislog }
  aline -ph 1 @ $+ $sockname pass : $+ %linkpass
  aline -ph 1 @ $+ $sockname server irc.magneto.org 1 :Magneto for Unreal
  sockwrite -n $sockname pass : $+ %linkpass
  sockwrite -n $sockname server irc.magneto.org 1 :Magneto for Unreal
  .timerping 0 60 /pingtel
}

alias pingtel sockwrite -n lktelnet1 PING :12345

on 1:sockclose:lktelnet*: unset %linked | echo 12 -a * Error! The linking password does not suit! Please update it... | .disable #ouvretel | .timerping off
#ouvretel end

on 1:close:@lktelnet*: %temp = $gettok($target,1,58) | %temp = $right(%temp,$calc($len(%temp)-1)) | sockclose %temp | unset %linked | .disable #ouvretel

alias initlog {
  ;
  set %fichier $$file="Name of the sequence file to create?" magneto\mylogs\
  write -c %fichier | window -h @Log | titlebar @log de $1 | clear @log
  set %timer 0 | timerlog -mo 0 100 /inc %timer
  %logchan = $1
  write %fichier 0 talk %logchan $ctime $me on $date at $time
  .enable #log | echo 3 $1 * Recording of the sequence started...
  ; dup
  who $me
  %i = 1
  while ( %i <= $chan(0) ) {
    ;   st : $+ $me JOIN $chan(%i)
    topic $chan(%i) | mode $chan(%i)
    inc %i
  }
  set %enre $true
}

alias mytime inc %curtime $1 | return $time($int($calc(%mytime + %curtime / 10)))

#log off

alias st {
  aline -ph 1 @log %timer $1- | write -a %fichier %timer $1- | set %timer 0
}

raw 352:*:{ 
  if ( $level($6) < 2 ) st NICK $6 1 2 $3 $4 irc.magneto.org : $+ $9- 
  if ( $6 == X || $6 == chanserv || $6 == irix ) { st : $+ $6 MODE $6 +q }
  if ( $chr(42) isin $7 ) { st : $+ $6 MODE $6 +o }
  .auser =2 $6
  set %i 1 | set %N $comchan($6,0)
  :boucle
  set %chan $comchan($6,%i)
  st : $+ $6 JOIN %chan
  set %peuple % $+ peuple $+ %chan
  set %peuple [ [ %peuple ] ]
  if ( $6 ison %chan && %peuple == $null ) { st :irc.magneto.org MODE %chan -o $6 }
  if ( $6 isop %chan ) { st :irc.magneto.org MODE %chan +o $6 }
  elseif ( $6 ishop %chan ) { st :irc.magneto.org MODE %chan +h $6 }
  elseif ( $6 isvo %chan ) { st :irc.magneto.org MODE %chan +v $6 }
  set % $+ peuple $+ %chan $true
  inc %i
  if ( %i > %N ) return
  goto boucle
}

alias rotutu  if ( $comchan($1,0) == 0 ) { st : $+ $1 QUIT :Leaving | .ruser 2 $1 }
alias rutoto {
  if ( $level($1) < 2 ) { 
    set %user $gettok($2,1,64) | set %host $gettok($2,2,64)
    st NICK $1 1 2 %user %host irc.magneto.org :Magneto user
    .auser =2 $1
  }
  st : $+ $1 $3 $me : $+ $4-
}

alias myst {
  if ( $level($1) < 2 ) { 
    set %user $gettok($2,1,64) | set %host $gettok($2,2,64)
    st NICK $1 1 2 %user %host irc.magneto.org :Magneto user
    ;    .auser =2 $1
    if ( $1 == X || $1 == chanserv || $1 == irix ) { st : $+ $1 MODE $1 +q }
    st : $+ $1 JOIN $4
    set %peuple % $+ peuple $+ $4
    set %peuple [ [ %peuple ] ]
    if ($1 isvo $4) { st :irc.magneto.org MODE $4 +v $1 }
    elseif ($1 ishop $4) { st :irc.magneto.org MODE $4 +h $1 }
    elseif ($1 isop $4) { st :irc.magneto.org MODE $4 +o $1 }
    elseif (%peuple == $null) { st :irc.magneto.org MODE $4 -o $1 }
  }
  if ($3 != JOIN || $level($1) > 1) {  st : $+ $1 $3 $4 $5- }
  .auser =2 $1
  if ($3 == JOIN && $1 == $me) { st :irc.magneto.org MODE $4 -o $1 }
  set % $+ peuple $+ $1 $true
}

on 1:text:*:#: myst $nick $address PRIVMSG $chan : $+ $1-
on 1:action:*:#:myst $nick $address PRIVMSG $chan : $+ $chr(1) $+ ACTION $1- $chr(1)
on +2:text:*:#: st : $+ $nick PRIVMSG $chan : $+ $1-
on 1:join:#: { 
  if ( $nick == $me ) { topic $chan | mode $chan }
  elseif (%linkwho == $false) { myst $nick $address JOIN $chan }
else who $nick }
on +2:join:#: { if (%linkwho == $false) { myst $nick $address JOIN $chan }
  else who $nick
}
on 2:part:#:st : $+ $nick PART $chan | .timer 1 1 rotutu $nick 
on 2:quit:st  : $+ $nick QUIT : $+ $1- | .ruser 2 $nick
on 2:op:#:myst $nick $address MODE $chan +o $opnick
on 2:serverop:#:st  : $+ $nick MODE $chan +o $opnick
on 2:deop:#:myst $nick $address MODE $chan -o $opnick
on 2:voice:#:myst $nick $address MODE $chan +v $vnick
on 2:devoice:#:myst $nick $address MODE $chan -v $vnick
on 2:help:#:myst $nick $address MODE $chan +h $hnick
on 2:dehelp:#:myst $nick $address MODE $chan -h $hnick
on 2:nick: st  : $+ $nick NICK : $+ $newnick | .ruser 2 $nick | .auser =2 $newnick
on 1:ban:#: myst $nick $address MODE $chan +b $banmask
on 1:unban:#: st  : $+ $nick MODE $chan -b $banmask
raw 332:*: st :irc.magneto.org TOPIC $2 : $+ $3-
on 2:kick:#: myst $nick $address KICK $chan $knick : $+ $1- 
; | .timer 1 1 rotutu $knick
on 2:notice:*:#:myst $nick $address NOTICE $chan : $+ $1-
ctcp 2:*:#: st  : $+ $nick PRIVMSG $chan : $+ $chr(1) $+ $1- $chr(1)
alias dup who $active | topic $active | mode $active
raw 324:*:st  :irc.magneto.org MODE $2 $3-
on +2:action:*:#:st $nick $address PRIVMSG $chan : $+ $chr(1) $+ ACTION $1- $chr(1)
on 2:topic:#:myst $nick $address TOPIC $chan : $+ $1-
on 2:mode:#:myst $nick $address MODE $chan $1-
on *:notice:*:?: rutoto $nick $address NOTICE $1-
on *:text:*:?: rutoto $nick $address PRIVMSG $1-
on *:action:*:?: rutoto $nick $address PRIVMSG $chr(1) $+ ACTION $1- $chr(1)

on *:input:#: {  if ($left($1,1) != / ) { st : $+ $me PRIVMSG $active : $+ $1- }
  else if ($left($1,3) == /me ) { st : $+ $me PRIVMSG $active : $+ $chr(1) $+ ACTION $2- $chr(1) }
}

on *:input:?: {  if ($left($1,1) != / ) { st : $+ $me PRIVMSG $active : $+ $1- }
  else if ($left($1,3) == /me ) { st : $+ $me PRIVMSG $active : $+ $chr(1) $+ ACTION $2- $chr(1) }
}

#log end

alias arrete {
  if ( %linked != $true ) { stoplog | echo 3 -a * Recording stopped | unset %enre | unset %peuple* } 
  else { termine }
}

menu menubar {
  $iif(%enre != $true,Magneto for Unreal)
  . $iif(%linked != $true,Record a sequence): initlog
  . $iif(%linked == $true,View)
  ..$iif(%pause == $null,Pause): stoplog | set %pause 1 | echo 3 -a * Pause...
  ..$iif(%pause != $null,Continue after pause): echo 3 -a * Continue... | unset %pause | visionne
  ..$iif(%accelere == $null,Accelerate): set %accelere $true
  ..$iif(%accelere == $true,Regular speed): unset %accelere
  ..Step by step:step
  ..End the session: termine
  . $iif(%linked != $true,Read a sequence): initlink
  . $iif(%linked == $true,End of session): arrete
  .-
  .$iif(%linked != $true,Configure): magconfig
  $iif(%enre == $true,Magneto for Unreal)
  .Stop recording: arrete
}

menu channel {
  $iif(%linked == $true,Magneto for Unreal)
  .$iif(%pause == $null,Pause): stoplog | set %pause 1 | echo 3 -a * Pause...
  .$iif(%pause != $null,Continue after pause): echo 3 -a * Continue... | unset %pause | visionne
  .$iif(%accelere == $null,Accelerate): set %accelere $true
  .$iif(%accelere != $null,Regular speed): unset %accelere
  .Step by step:step
  .Reset #:rstchan #
  .End of session: termine
  $iif(%linked != $true,Magneto for Unreal)
  . $iif(%enre != $true,Record a sequence): initlog
  . $iif(%enre == $true,Stop recording): arrete
}

alias stoplog .timerlog off | .disable #log | unset %accelere | .rlevel -r 2

#offline on

alias addni  set %temp1 $right($1,$calc($len($1)-1)) | aline -l @lktelnet1 %temp1

alias remni {
  set %temp1 $right($1,$calc($len($1)-1))
  %i = 1
  :next
  if ( %i > $line(@lktelnet1,0,1)) goto fin2
  %temp = $line(@lktelnet1,%i,1))
  if ( %temp1 == %temp )  goto fin
  inc %i
  goto next
  :fin
  dline -l @lktelnet1 %i
  :fin2
}

alias mjj {
  set %i 1
  while ( %i <= $line(@lktelnet1,0,1) ) {
    sockwrite -n lktelnet1 : $+ $line(@lktelnet1,%i,1) JOIN $active
    inc %i
  }
}

alias d /sockwrite -n lktelnet1 : $+ $1 PRIVMSG $active : $+ $2- | if ( $asc($active) != 35 ) echo 2 -a < $+ $1 $+ > $2-
alias m /sockwrite -n lktelnet1 : $+ $1 MODE $active $3 $2 
alias no  /sockwrite -n lktelnet1 : $+ $1 NOTICE $active : $+ $2- |  if ( $asc($active) != 35 ) echo 2 -a - $+ $1 $+ - $2- 
alias jj  /sockwrite -n lktelnet1 : $+ $1 JOIN : $+ $active
alias pp  /sockwrite -n lktelnet1 : $+ $1 PART $active $iif($1 != $null,: $+ $2-)
alias mm  /sockwrite -n lktelnet1 : $+ $1 PRIVMSG $active :ACTION $2-  | if ( $asc($active) != 35 ) echo 2 -a $1 $2-  
alias qq  /sockwrite -n lktelnet1 : $+ $1 QUIT : $+ $iif($1 == $null,Leaving,$2-)
alias kk /sockwrite -n lktelnet1 : $+ $1 KICK $active $2 : $+ $3-

alias envoie { 
  if (%linked != $true) return
  ;  if (%curline == 1 ) { unset %titlebar | unset %fmodes | unset %ftopic | return }
  ; echo 4 -a $1-
  if ( $2 == nick ) { addni : $+ $3 }
  else if ( $3 == quit ) { remni $2 }
  else if ( $3 == nick ) { remni $2 | addni $4 }
  else if ( $2 == talk ) { %me = $4
    sockwrite -n lktelnet1 NICK Information 1 2 Global service.magneto.org irc.magneto.org :Magneto's Information Service
    sockwrite -n lktelnet1 :Information NOTICE $me :Magneto-Log performed by  $+ $4 $+  $5-
  }

  if ( $2 == : $+ %me && $3 == nick ) { set %temp %me | set %me $right($4,$calc($len($4)-1))
    sockwrite -n lktelnet1 :Information NOTICE $me :Caution!  $+ %temp $+  has become  $+ %me $+ 
  }
  if ( $2 == : $+ %me && $3 == privmsg && $asc($4) != 35 ) { echo 2 $4 $chr(91) $+ $time $+ $chr(93) < $+ $right($2,$calc($len($2)-1)) $+ > $right($5-,$calc($len($5-)-1)) }
  else if ( ( $3 == notice || $3 == privmsg ) && $4 == %me ) { sockwrite -n lktelnet1 $2 $3 $me $5- }
  else  sockwrite -n lktelnet1 $2- 
  if ( $2 == : $+ %me && $3 == join ) { raw join $4 | sockwrite -n lktelnet1 :irc.magneto.org MODE $4 -o $me }
}

alias step {
  if (%curline == 1) set %curtime 0
  if ( %curline > $calc(%maxlines + 0) ) { echo 3 -a * End of session | timerlog off | return }
  ;  
  %oldline = %line
  ; si 1re ligne, %oldline est indéfini mais envoie ne fait rien au premier step
  %line = $read -nl $+ %curline %fichier
  envoie %oldline
  inc %curline
}

alias termine sockclose lktelnet1 | .rlevel -r 2 | unset %linked | stoplog | set %curline 1 | .disable #offline | window -c @lktelnet1 | .disable #ouvretel | .timerping off
#offline end

alias lislog {
  %maxlines = $lines(%fichier) | set %curline 1 | stoplog
  visionne
}

alias visionne { 
  ;  echo 1 -s putain %line
  if (%curline == 1) set %curtime 0
  if ( %linked != $true ) { return }
  if ( %curline > $calc(%maxlines + 1) ) { echo 3 -a * End of session | timerlog off | return }
  ; | ame annonce la fin du film 
  %oldline = %line
  ; si 1re ligne, %oldline est indéfini mais envoie ne fait rien au premier step
  %line = $read -nl $+ %curline %fichier
  %c = $asc($gettok(%line,1,32))
  if ( %curline == 1) { if ( %c < 48 || %c > 57 || %c == $null )  { echo 12 -a * Error! This is not a valid sequence file... | stoplog | return } }
  envoie %oldline
  inc %curline
  %deltat = $iif(%accelere == $null,100,1)
  .timerlog -om 1 $calc(%deltat * ($gettok(%line,1,32))) /visionne

}

alias myaleanick {
  %i = 0 | unset %temp
  :putain
  %temp = %temp $+ $rand(a,z)
  inc %i
  if ( %i < 9 ) goto putain
  return %temp
}

alias rstchan {
  ; on doit donner le nom du chan...
  var %myline,%i

  set %i 1

  window -hSkl12 @channel

  while (%i <= %curline) {
    %myline = $read -nl $+ %i %fichier
    if ($gettok(%myline,4,32) == $1 || $gettok(%myline,3,32) == quit || $gettok(%myline,3,32) == nick) {
      aline -ph 1 @channel %myline
      mag2.traite %myline
    }
    inc %i
  }

  set %i 1
  while (%i <= $line(@channel,0,1)) {
    %temp = $line(@channel,%i,1)
    %nick = %temp | if ($left(%nick,1) isin +@%&~) { %nick = $right(%nick,$calc($len(%nick)-1)) }
    if (%nick !ison $1) { sockwrite -n lktelnet1 : $+ %nick JOIN $1 }
    if ($left(%temp,1) == +) %signe = v
    elseif ($left(%temp,1) == @ || $left(%temp,1) == & || $left(%temp,1) == ~) { %signe = o }
    elseif ($left(%temp,1) == %) %signe = h
    else unset %signe
    if (%nick isvo $1) { %signe2 = v }
    elseif (%nick ishop $1) { %signe2 = h }
    elseif (%nick isop $1) { %signe2 = o }
    else unset %signe2

    if (%signe != %signe2) { 
      if (%signe2 != $null) %signe2 = - $+ %signe2 
      if (%signe != $null) %signe = + $+ %signe
      sockwrite -n lktelnet1 :irc.magneto.org MODE $1 %signe2 $+ %signe %nick %nick
    }
    inc %i
  }
  window -c @channel
}

alias mag2.userho %nick = $right($1,$calc($len($1)-1))

alias mag2.signe {
  %i = 1 | unset %signe | %trouve = $false
  :next
  if ( %i > $line(@channel,0,1)) goto fin2
  %temp = $line(@channel,%i,1)) | mag2.remsigne %temp
  if ( $1 == %nick1 )  goto fin
  inc %i
  goto next
  :fin
  %signe = %signe1
  %trouve = $true
  :fin2
}

alias mag2.remsigne {
  %c = $left($1,1)
  if (%c !isin @+%&~) { set %nick1 $1 | unset %signe1 | return }
  set %signe1 %c | %nick1 = $right($1,$calc($len($1) - 1))
}

alias mag2.addni aline -l @channel $1

alias mag2.remni mag2.remnick $1 | mag2.remnick @ $+ $1 | mag2.remnick + $+ $1

alias mag2.remnick {
  %i = 1
  :next
  if ( %i > $line(@channel,0,1)) goto fin2
  %temp = $line(@channel,%i,1))
  if ( $1 == %temp )  goto fin
  inc %i
  goto next
  :fin
  dline -l @channel %i
  :fin2
}

alias mag2.traite {
  ; nombre, :blabla , instruction, canal, reste de l'instruction

  %nick = $right($2,$calc($len($2)-1))

  if ($3 == join) { mag2.signe %nick | if (%trouve == $true) return
  mag2.addni %nick }
  elseif ($3 == part || $3 == quit) { mag2.remni %nick }
  elseif ($3 == topic) %ftopic = $5-
  elseif ($3 == nick) { mag2.signe %nick | if (%trouve == $false) return
  mag2.remni %nick | mag2.addni %signe $+ $right($4,$calc($len($4)-1)) }
  elseif ($3 == mode) {
    if ($5 == +o )  { mag2.remni $6 | mag2.addni @ $+ $6 }
    elseif ($5 == -o )  { mag2.remni $6 | mag2.addni $6 }
    elseif ($5 == +h )  { mag2.signe $6 | if (%signe != @ ) { mag2.remni $6 | mag2.addni % $+ $6 }
    }
    else if ($5 == -h )  { mag2.signe $6 | if (%signe != @ ) { mag2.remni $6 | mag2.addni $6 }
    }
    elseif ($5 == +v )  { mag2.signe $6 | if (%signe != @ ) { mag2.remni $6 | mag2.addni + $+ $6 }
    }
    else if ($5 == -v )  { mag2.signe $6 | if (%signe != @ ) { mag2.remni $6 | mag2.addni $6 }
    }
  }
  elseif ($3 == kick) mag2.remni $5
}