IRC URLTester

Unheilig

Grünschnabel
Hi all..

Also, nach eingehender suche hab ich leider nichts weiter zu dem Thema gefunden, oder ich war einfach zu blind :(

Naja, jedenfalls suche ich ein Script das Links, die in meinen Channel (QNet) gepostet werden, automatisch testet. Also auf Würmer, Viren, etc. und dann ggf. eine Meldung ausgibt ob der Link "clean" ist oder ob man besser nicht klicken sollte.
Gesehen hab ich sowas schonmal allerdings für URL´s mit der endung .jpg, mir ist es soweit eigentlich recht egal ob das Script nur Bilder-Links testet/überprüft oder sämtliche Links die in den Channel gepostet werden.

Das Script würde in einem zweit Client laufen.

ich danke schonmal im voraus
 
Ja, danke is zumindest ein Anfang

In dem Script steht ja ein on *:text-event mit drin ! Allerdings reagiert das Script nicht auf Links die in meinem Channel gepostet werden.

Ich müsste dann jedesmal den Link kopieren und im BotClient dann /checklink "LinkURL" machen.

Und ich würd das schon lieber so haben das der Bot jeden im Channel geposteten Link "prüft" in soweit das möglich ist.
 
Darf man hier Werbung machen?
Ich hab mir einen Bot geholt, der das testet und falls der Link nicht "clean" ist, wird der User gebannt.
Soweit kam es noch nie. Der hat aber auch praktische Nebenfunktionen.
Grüße
 
Das Problem dabei ist nur das ich es halt in meinen eigenen Bot einbauen möchte.

Naja, ich hab da ma was gefunden aber irgendwie Probleme damit :

Code:
alias checklink { 
  var %x = $calc($sock(linkcheck*,0)+1) 
  .sockopen linkcheck $+ %x $gettok($remove($1,http://),1,47) 80 
  .timerlinkclose $+ %x 1 120 .sockclose linkcheck $+ %x 
  set -u20 %link::file $+ %x $iif(http://* iswm $1,$1,http:// $+ $1) 
} 
on *:sockopen:linkcheck*:{ 
  sockwrite -nt $sockname GET $eval($+(%,link::file,$right($sockname,1)),2) HTTP/1.0 
  sockwrite -nt $sockname User-Agent: Mozilla/ 
  sockwrite -nt $sockname Host: $iif($ip,$ip,127.0.0.1) 
  sockwrite -nt $sockname Connection: Keep-Alive 
  sockwrite -t $sockname $str($crlf,2) 
} 
on *:sockread:linkcheck*:{ 
  var %out | sockread %out 
  if (*Location* iswm %out) { 
    echo 4 -at Warning! Real location of $eval($+(%,link::file,$right($sockname,1)),2) is $+($mid($gettok(%out,2-,32),1,-1),,$right($gettok(%out,2-,32),1),) 
    unset $+(%,link::file,$right($sockname,1)) 
    sockclose $sockname | .timerlinkclose $+ $calc($sock(linkcheck*,0)+1) off 
  } 
  if (*Content-Type* iswm %out) { 
    if (*image/* iswm %out) { echo 3 -at Good! $eval($+(%,link::file,$right($sockname,1)),2) is a picture! ( $+ %jpgchan $+ )  No garanty } 
    else { echo 4 -at Warning! $eval($+(%,link::file,$right($sockname,1)),2) is NOT a picture! ( $+ %jpgchan $+ ) No garanty } 
    unset $+(%,link::file,$right($sockname,1)) 
    sockclose $sockname | .timerlinkclose $+ $calc($sock(linkcheck*,0)+1) off 
  } 
} 

on *:text:*:#: { 
  if (.jpg isin $1-) { set %link $wildtok($1-,*.jpg*,1,32) | /checklink %link | unset %link | set %jpgchan $chan } 
  elseif (.jpeg isin $1-) { set %link $wildtok($1-,*.jpeg*,1,32) | /checklink %link | unset %link | set %jpgchan $chan } 
  elseif (.gif isin $1-) { set %link $wildtok($1-,*.gif*,1,32) | /checklink %link | unset %link | set %jpgchan $chan } 
}

Ich hab es einfach mal in ne .mrc-Datei gespeichert und ins Remote eingefügt.
Allerdings reagiert er nicht auf gepostete URLs.

Wäre sehr nett wenn mir jemand sagen könnte was ich da ändern muss damit er auf URLs die in meinem Channel gepostet werden reagiert.

Danke nochmals im voraus.
 
Das Script reagiert auf's Posten von Links, allerdings echo't es das Ergebnis, sprich: Du musst die echo's durch msg's austauschen.
Code:
alias checklink { 
  var %x = $calc($sock(linkcheck*,0)+1) 
  .sockopen linkcheck $+ %x $gettok($remove($1,http://),1,47) 80 
  .timerlinkclose $+ %x 1 120 .sockclose linkcheck $+ %x 
  set -u20 %link::file $+ %x $iif(http://* iswm $1,$1,http:// $+ $1) 
} 
on *:sockopen:linkcheck*:{ 
  sockwrite -nt $sockname GET $eval($+(%,link::file,$right($sockname,1)),2) HTTP/1.0 
  sockwrite -nt $sockname User-Agent: Mozilla/ 
  sockwrite -nt $sockname Host: $iif($ip,$ip,127.0.0.1) 
  sockwrite -nt $sockname Connection: Keep-Alive 
  sockwrite -t $sockname $str($crlf,2) 
} 
on *:sockread:linkcheck*:{ 
  var %out | sockread %out 
  if (*Location* iswm %out) { 
    msg %jpgchan 4Warning! Real location of $eval($+(%,link::file,$right($sockname,1)),2) is $+($mid($gettok(%out,2-,32),1,-1),,$right($gettok(%out,2-,32),1),) 
    unset $+(%,link::file,$right($sockname,1)) 
    sockclose $sockname | .timerlinkclose $+ $calc($sock(linkcheck*,0)+1) off 
  } 
  if (*Content-Type* iswm %out) { 
    if (*image/* iswm %out) { msg %jpgchan 3Good! $eval($+(%,link::file,$right($sockname,1)),2) is a picture! ( $+ %jpgchan $+ )  No garanty } 
    else { msg %jpgchan 4Warning! $eval($+(%,link::file,$right($sockname,1)),2) is NOT a picture! ( $+ %jpgchan $+ ) No garanty } 
    unset $+(%,link::file,$right($sockname,1)) 
    sockclose $sockname | .timerlinkclose $+ $calc($sock(linkcheck*,0)+1) off 
  } 
} 

on *:text:*:#: { 
  if (.jpg isin $1-) { set %link $wildtok($1-,*.jpg*,1,32) | /checklink %link | unset %link | set %jpgchan $chan } 
  elseif (.jpeg isin $1-) { set %link $wildtok($1-,*.jpeg*,1,32) | /checklink %link | unset %link | set %jpgchan $chan } 
  elseif (.gif isin $1-) { set %link $wildtok($1-,*.gif*,1,32) | /checklink %link | unset %link | set %jpgchan $chan } 
}
 
Danke soweit, leider geht es immernoch nicht.

Muss ich da noch was zu schreiben ? z.B. ne definition für "%jpgchan" ?
Das ganze läuft ja über Alias, nur ich hab weder nen Alias dafür eingerichtet noch sonstiges. Kann es sein das es daran scheitert ? Weil wie gesagt er gibt weitherhin beim posten eines Links, mit oder ohne .jpg-Endung, keine Meldung aus.
 
Muss ich das über Aliases oder Remote einladen ?

/e :

Hab das Script eben mal über Aliases eingeladen, nen Link gepostet und dann kam folgendes :

Closing Link: Unheilig` by mediatraffic.fi.quakenet.org (Excess Flood)
-
* Disconnected
-
* /%link::file: not connected to server (line 18, LinkTester.mrc)
 
Zuletzt bearbeitet:

Neue Beiträge

Zurück