lanparty.tcl

lanparty.tcl

D as tcl liest die lanparty.de news aus und gibt sie wieder, gleich mit dem link zum eigentlichen artikel. per trigger lassen sich auch die letzten X news von hand auslesen.

Postat de Copyright Categorie Review user Vizualizari Data
btc domsen chanops Cod netestat 384 2023-12-25 09:58:05

# lanparty.tcl v1.3 by domsen <domsen@domsen.org> (c)2oo1
#
# comments? bugs? ideas? requests? money? beer? 
# plz mail me or visit my homepage @ www.domsen.org
#
# das  tcl  liest  die  lanparty.de  news aus und gibt sie  wieder,  gleich mit
# dem link zum eigentlichen artikel. per trigger lassen sich auch die letzten X
# news von hand auslesen.
# und  liebe  windrop  user bitte kauf euch  ne shell, dann  gibts  auch  keine 
# probs mit  meinen scripts  <schleichwerbung>www.uid-zero.de</schleichwerbung>
#
#
# v1.3 - komplett umgebaut by public request
#      - link wird gleich mitgepostet
#      - yeah  endlich  keine  windrop  user  mehr die mich fragen was lynx ist
#        so gerne ich support leiste - jeden tag ne  mail mit der  selben frage
#        stresst ziemlich ;)
# v1.2 - kleiner bugfix
# v1.1 - lanparty.de hat spass daran seine homepage umzubauen,
#        das tcl funzt jetzt wieder problemlos...

#
# lptrigger             - standardmäßig   auf  ".lanparty"   gesetzt,  gibt die
#			  letzten 'lanpartylimit' newslines wieder
# lanpartylimit         - "" für  unbegrenzte newslines, ansonsten eine zahl
# lpnewspost            - 1 für newsposting, 0 für keines
# lanparychans          - die  chans in  denen das tcl aktiv  ist, wobei "" für
#                         alle  steht,  ansonsten  einfach  "#chan1 #chan2" usw
# lanpartynewspostlimit - verhindert ungewollte floods beim newsposten
# islprhub  	        - legt fest ob der bot newshub ist oder nicht, das leaf
#                         tcl ist auch auf www.domsen.org verfügbar.
# lpleafs               - die nicks der leafbots auf  denen das leaf tcl läuft,
#		          "" für keine, oder "botnick1 botnick2" usw
#
####### config ######################

set lptrigger "!lanparty"
set lanpartychans ""
set lanpartylimit "10"
set lanpartynewspostlimit "3"
set lpnewspost "1"
set islphub "0"
set lpleafs ""

####### ende der config #############

bind msg - $lptrigger msg_lp
bind pub - $lptrigger pub_lp
bind time - "?0 * * * *" lpcheck

proc sendlanpartynews { arg } {
global lpleafs
foreach bot [bots] {
if {([lsearch -exact [string tolower $lpleafs] [string tolower $bot]] != -1)} {
putbot $bot "lanparty: $arg"
}}}

proc shrink { calc number string start bl} { return [expr [string first "$string" $bl $start] $calc $number] }


proc lpcheck {nick uhost hand chan arg} {
global lanpartychans lpnewspost islphub lanpartynewspostlimit
set counter 0
if {$lpnewspost == 1 } {
putlog "lanparty: suche nach neuer newsline"
set lplastnews "none"
if {[file exists lanparty.hdl]} {
set temp [open "lanparty.hdl" r]
set lplastnews "[gets $temp]"
close $temp
}
set temp [open "lanparty.hdl" w+]
if {[catch {set sock [socket www.lanparty.de 80] } sockerror]} {
putlog "error: $sockerror"
return 0 } else {
puts $sock "GET /news/archiv/?LSession=a706ebf7c28ca8a78b5489812837afbc  HTTP/1.1"
puts $sock "User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0)"
puts $sock "Host: www.lanparty.de"
puts $sock "Connection: close"
puts $sock ""
flush $sock
set counter 0
while {[eof $sock] != 1} {
set bl [gets $sock]
if {[string first "<a href=\"/news/?id=" $bl] != -1 } {
set link www.lanparty.de[string range $bl [shrink + 6 "href=\"" 0 $bl] [shrink - 1 "\" target=" 0 $bl]]
set newsline [string range $bl [shrink + 1 ">" 80 $bl] [shrink - 1 "</a>" 0 $bl]]
puts $temp "$newsline <$link>"
}}}
close $sock ; close $temp
if {$lplastnews == "none" } { putlog "lanparty: headlinefile created" ; return 0 }
set temp [open "lanparty.hdl" r]
while { [eof $temp] != 1 } {
set lpneunews [gets $temp]
if {($lplastnews == $lpneunews) || ($counter == $lanpartynewspostlimit)} { return 0 }
foreach chan [channels] {
if {$lanpartychans == "" } { putserv "privmsg $chan :(neue lanparty newsline) $lpneunews" }
if {$lanpartychans != "" } {
if {([lsearch -exact [string tolower $lanpartychans] [string tolower $chan]] != -1) || ($lanpartychans == "")} {putserv "privmsg $chan :(neue lanparty newsline) $gsneunews"}
}
if { $islphub == "1" } { sendlanpartynews $lpneunews }
incr counter
}}}}


proc lanpartynews { target limit } {
if {[catch {set sock [socket www.lanparty.de 80] } sockerror]} {
putlog "error: $sockerror"
return 0 } else {
puts $sock "GET /news/archiv/?LSession=a706ebf7c28ca8a78b5489812837afbc  HTTP/1.1"
puts $sock "User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0)"
puts $sock "Host: www.lanparty.de"
puts $sock "Connection: close"
puts $sock ""
flush $sock
set counter 0
while {[eof $sock] != 1} {
set bl [gets $sock]
if {[string first "<a href=\"/news/?id=" $bl] != -1 } {
set link www.lanparty.de[string range $bl [shrink + 6 "href=\"" 0 $bl] [shrink - 1 "\" target=" 0 $bl]]
set newsline [string range $bl [shrink + 1 ">" 80 $bl] [shrink - 1 "</a>" 0 $bl]]
putserv "privmsg $target :[incr counter] $newsline <$link>"
}
if {$counter == $limit} {close $sock ; return 0}
}}}


proc msg_lp { nick uhost hand arg } { global lanpartylimit ; lanpartynews $nick $lanpartylimit }
proc pub_lp { nick uhost hand chan arg } { global lanpartychans lanpartylimit ; if {([lsearch -exact [string tolower $lanpartychans] [string tolower $chan]] != -1) || ($lanpartychans == "")} { lanpartynews $nick $lanpartylimit }}



putlog "*** lanparty.tcl v1.3 by domsen <domsen@domsen.org> succesfully loaded"

#[EOF]