<?xml version="1.0"?>
<?xml-stylesheet type="text/css" href="http://hlds.pl/skins/common/feed.css?303"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="pl">
		<id>http://hlds.pl/index.php?action=history&amp;feed=atom&amp;title=IRC_eggdrop_urltitle.tcl</id>
		<title>IRC eggdrop urltitle.tcl - Historia wersji</title>
		<link rel="self" type="application/atom+xml" href="http://hlds.pl/index.php?action=history&amp;feed=atom&amp;title=IRC_eggdrop_urltitle.tcl"/>
		<link rel="alternate" type="text/html" href="http://hlds.pl/index.php?title=IRC_eggdrop_urltitle.tcl&amp;action=history"/>
		<updated>2026-08-11T06:41:18Z</updated>
		<subtitle>Historia wersji tej strony wiki</subtitle>
		<generator>MediaWiki 1.18.1</generator>

	<entry>
		<id>http://hlds.pl/index.php?title=IRC_eggdrop_urltitle.tcl&amp;diff=4068&amp;oldid=prev</id>
		<title>KaszpiR o 19:22, 10 sie 2006</title>
		<link rel="alternate" type="text/html" href="http://hlds.pl/index.php?title=IRC_eggdrop_urltitle.tcl&amp;diff=4068&amp;oldid=prev"/>
				<updated>2006-08-10T19:22:14Z</updated>
		
		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;table class='diff diff-contentalign-left'&gt;
			&lt;col class='diff-marker' /&gt;
			&lt;col class='diff-content' /&gt;
			&lt;col class='diff-marker' /&gt;
			&lt;col class='diff-content' /&gt;
		&lt;tr valign='top'&gt;
		&lt;td colspan='2' style=&quot;background-color: white; color:black;&quot;&gt;← poprzednia wersja&lt;/td&gt;
		&lt;td colspan='2' style=&quot;background-color: white; color:black;&quot;&gt;Wersja z 19:22, 10 sie 2006&lt;/td&gt;
		&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Linia 1:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Linia 1:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;background: #ffa; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;po &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;doaniu &lt;/del&gt;do eggdrop.conf trzeba wpisac poprzez dcc (dla danego kanalu)&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;background: #cfc; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;po &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;dodaniu &lt;/ins&gt;do eggdrop.conf trzeba wpisac poprzez dcc (dla danego kanalu)&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;.chanset #kanal +urltitle&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;.chanset #kanal +urltitle&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Linia 177:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Linia 177:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;putlog &amp;quot;Script loaded: URL title fetcher v$url::version by perpleXa&amp;quot;;&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;putlog &amp;quot;Script loaded: URL title fetcher v$url::version by perpleXa&amp;quot;;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&amp;lt;/tcl&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&amp;lt;/tcl&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;#160;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;background: #cfc; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;#160;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;background: #cfc; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;#160;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;background: #cfc; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;[[kategoria:eggdrop]]&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;!-- diff cache key wiki-wiki:diff:version:1.11a:oldid:3252:newid:4068 --&gt;
&lt;/table&gt;</summary>
		<author><name>KaszpiR</name></author>	</entry>

	<entry>
		<id>http://hlds.pl/index.php?title=IRC_eggdrop_urltitle.tcl&amp;diff=3252&amp;oldid=prev</id>
		<title>KaszpiR o 13:29, 27 cze 2006</title>
		<link rel="alternate" type="text/html" href="http://hlds.pl/index.php?title=IRC_eggdrop_urltitle.tcl&amp;diff=3252&amp;oldid=prev"/>
				<updated>2006-06-27T13:29:58Z</updated>
		
		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Nowa strona&lt;/b&gt;&lt;/p&gt;&lt;div&gt;po doaniu do eggdrop.conf trzeba wpisac poprzez dcc (dla danego kanalu)&lt;br /&gt;
.chanset #kanal +urltitle&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tcl&amp;gt;&lt;br /&gt;
# urltitle.tcl&lt;br /&gt;
# Copyright (C) perpleXa 2004-2006&lt;br /&gt;
#&lt;br /&gt;
# Redistribution, with or without modification, are permitted provided&lt;br /&gt;
# that redistributions retain the above copyright notice, this condition&lt;br /&gt;
# and the following disclaimer.&lt;br /&gt;
#&lt;br /&gt;
# This program is distributed in the hope that it will be useful,&lt;br /&gt;
# but WITHOUT ANY WARRANTY, to the extent permitted by law; without&lt;br /&gt;
# even the implied warranty of MERCHANTABILITY or FITNESS FOR A&lt;br /&gt;
# PARTICULAR PURPOSE.&lt;br /&gt;
&lt;br /&gt;
namespace eval url {&lt;br /&gt;
  variable version &amp;quot;3.1&amp;quot;;&lt;br /&gt;
  variable agent &amp;quot;Opera/8.52 (X11; Linux x86_64; U; en)&amp;quot;;&lt;br /&gt;
  # Bot will read data in chunks of this size, 8KB is just fine.&lt;br /&gt;
  variable readbuf 8192;&lt;br /&gt;
  # Read max. 32KB before the connection gets killed.&lt;br /&gt;
  # (to prevent the bot from downloading large files when someone pastes shit..)&lt;br /&gt;
  variable readlimit 32768;&lt;br /&gt;
  variable fds;&lt;br /&gt;
  if {![info exists fds]} {&lt;br /&gt;
    set fds 0;&lt;br /&gt;
  }&lt;br /&gt;
  setudef flag urltitle;&lt;br /&gt;
  bind pubm -|- * [namespace current]::check;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
proc url::check {nick host hand chan text} {&lt;br /&gt;
  if {[channel get $chan urltitle]} {&lt;br /&gt;
    set text [stripcodes uacgbr $text];&lt;br /&gt;
    foreach item [split $text] {&lt;br /&gt;
      if {[string match -nocase &amp;quot;http://?*&amp;quot; $item] || [string match -nocase &amp;quot;www.?*&amp;quot; $item]} {&lt;br /&gt;
        regsub -nocase -- &amp;quot;http://&amp;quot; [string map [list &amp;quot;\\&amp;quot; &amp;quot;/&amp;quot;] $item] &amp;quot;&amp;quot; url;&lt;br /&gt;
        set url [split $url &amp;quot;/&amp;quot;];&lt;br /&gt;
        set get [join [lrange $url 1 end] &amp;quot;/&amp;quot;];&lt;br /&gt;
        set url [split [lindex $url 0] &amp;quot;:&amp;quot;];&lt;br /&gt;
        set host [lindex $url 0]; set port [lindex $url 1];&lt;br /&gt;
        if {$port == &amp;quot;&amp;quot;} {set port &amp;quot;80&amp;quot;;}&lt;br /&gt;
        uconnect $host $port $get $nick $chan;&lt;br /&gt;
      }&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
proc url::uconnect {host port get nick chan} {&lt;br /&gt;
  variable agent;&lt;br /&gt;
  variable fds;&lt;br /&gt;
  variable readbuf;&lt;br /&gt;
  set token [namespace current]::[incr fds];&lt;br /&gt;
  variable $token;&lt;br /&gt;
  upvar 0 $token static;&lt;br /&gt;
  array set static {&lt;br /&gt;
    data &amp;quot;&amp;quot;&lt;br /&gt;
    body 0&lt;br /&gt;
    code 0&lt;br /&gt;
    sock -1&lt;br /&gt;
  }&lt;br /&gt;
  if {[catch {set static(sock) [socket -async $host $port]} error]} {&lt;br /&gt;
    destroy $token;&lt;br /&gt;
    return $error;&lt;br /&gt;
  }&lt;br /&gt;
  fconfigure $static(sock) -translation {auto crlf} -buffersize $readbuf;&lt;br /&gt;
  puts $static(sock) &amp;quot;GET /$get HTTP/1.0&amp;quot;;&lt;br /&gt;
  puts $static(sock) &amp;quot;Accept: */*&amp;quot;;&lt;br /&gt;
  if {$port == &amp;quot;80&amp;quot;} {&lt;br /&gt;
    puts $static(sock) &amp;quot;Host: $host&amp;quot;;&lt;br /&gt;
  } else {&lt;br /&gt;
    puts $static(sock) &amp;quot;Host: $host:$port&amp;quot;;&lt;br /&gt;
  }&lt;br /&gt;
  puts $static(sock) &amp;quot;User-agent: $agent&amp;quot;;&lt;br /&gt;
  puts $static(sock) &amp;quot;&amp;quot;;&lt;br /&gt;
  flush $static(sock);&lt;br /&gt;
  fileevent $static(sock) readable [list [namespace current]::handledata $token $nick $chan];&lt;br /&gt;
  catch {fconfigure $static(sock) -blocking 0;}&lt;br /&gt;
  after [expr 20*1000] [list [namespace current]::destroy $token];&lt;br /&gt;
  return $token;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
proc url::handledata {token nick chan} {&lt;br /&gt;
  variable readbuf; variable readlimit;&lt;br /&gt;
  variable $token;&lt;br /&gt;
  upvar 0 $token static;&lt;br /&gt;
  if {[eof $static(sock)] || [string length $static(data)]&amp;gt;=$readlimit} {&lt;br /&gt;
    destroy $token;&lt;br /&gt;
    return;&lt;br /&gt;
  }&lt;br /&gt;
  set buf [read $static(sock) $readbuf];&lt;br /&gt;
  append static(data) $buf;&lt;br /&gt;
  foreach line [split $buf &amp;quot;\n&amp;quot;] {&lt;br /&gt;
    if {[string match HTTP* $line] &amp;amp;&amp;amp; !$static(body)} {&lt;br /&gt;
      if {![regexp -- {\d{3}} $line static(code)]} {&lt;br /&gt;
        destroy $token;&lt;br /&gt;
        return;&lt;br /&gt;
      } elseif {$static(code)!=200 &amp;amp;&amp;amp; $static(code)!=301 &amp;amp;&amp;amp; $static(code)!=302} {&lt;br /&gt;
        destroy $token;&lt;br /&gt;
        return;&lt;br /&gt;
      }&lt;br /&gt;
    } elseif {[regexp -nocase -- &amp;quot;^Location:(.+)$&amp;quot; $line -&amp;gt; url]&lt;br /&gt;
              &amp;amp;&amp;amp; !($static(code)!=301 &amp;amp;&amp;amp; $static(code)!=302)} {&lt;br /&gt;
      check $nick *!*@* * $chan $url;&lt;br /&gt;
      destroy $token;&lt;br /&gt;
      return;&lt;br /&gt;
    } elseif {[regexp -nocase -- &amp;quot;^Content-type:(.+)$&amp;quot; $line -&amp;gt; type]} {&lt;br /&gt;
      if {![string match -nocase text* [string trim $type]]} {&lt;br /&gt;
        destroy $token;&lt;br /&gt;
        return;&lt;br /&gt;
      }&lt;br /&gt;
    } elseif {[regexp -nocase -- &amp;quot;^Content-encoding:(.+)$&amp;quot; $line -&amp;gt; encoding]} {&lt;br /&gt;
      if {[string match -nocase *gzip* $encoding]&lt;br /&gt;
          || [string match -nocase *compress* $encoding]} {&lt;br /&gt;
        destroy $token;&lt;br /&gt;
        return;&lt;br /&gt;
      }&lt;br /&gt;
    } elseif {($line == &amp;quot;&amp;quot;) &amp;amp;&amp;amp; !$static(body)} {&lt;br /&gt;
      set static(body) 1;&lt;br /&gt;
    } elseif {[regexp -nocase -- {&amp;lt;title&amp;gt;([^&amp;lt;]+?)&amp;lt;/title&amp;gt;} $static(data) -&amp;gt; title]&lt;br /&gt;
              &amp;amp;&amp;amp; $static(code)==200} {&lt;br /&gt;
      regsub -all -- {(\n|\r|\s|\t)+} $title &amp;quot; &amp;quot; title;&lt;br /&gt;
      set s [expr {[string index $nick end]!=&amp;quot;s&amp;quot;?&amp;quot;s&amp;quot;:&amp;quot;&amp;quot;}];&lt;br /&gt;
      puthelp &amp;quot;PRIVMSG $chan :$nick'$s URL title: \&amp;quot;[decode [string trim $title]]\&amp;quot;&amp;quot;;&lt;br /&gt;
      destroy $token;&lt;br /&gt;
      return;&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
proc url::destroy {token} {&lt;br /&gt;
  variable $token&lt;br /&gt;
  upvar 0 $token static;&lt;br /&gt;
  if {[info exists static]} {&lt;br /&gt;
    catch {fileevent $static(sock) readable &amp;quot;&amp;quot;;}&lt;br /&gt;
    catch {close $static(sock);}&lt;br /&gt;
    unset static;&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
proc url::decode {content} {&lt;br /&gt;
  if {![string match *&amp;amp;* $content]} {&lt;br /&gt;
    return $content;&lt;br /&gt;
  }&lt;br /&gt;
  set escapes {&lt;br /&gt;
    &amp;amp;nbsp; \x20 &amp;amp;quot; \x22 &amp;amp;amp; \x26 &amp;amp;apos; \x27 &amp;amp;ndash; \x2D&lt;br /&gt;
    &amp;amp;lt; \x3C &amp;amp;gt; \x3E &amp;amp;tilde; \x7E &amp;amp;euro; \x80 &amp;amp;iexcl; \xA1&lt;br /&gt;
    &amp;amp;cent; \xA2 &amp;amp;pound; \xA3 &amp;amp;curren; \xA4 &amp;amp;yen; \xA5 &amp;amp;brvbar; \xA6&lt;br /&gt;
    &amp;amp;sect; \xA7 &amp;amp;uml; \xA8 &amp;amp;copy; \xA9 &amp;amp;ordf; \xAA &amp;amp;laquo; \xAB&lt;br /&gt;
    &amp;amp;not; \xAC &amp;amp;shy; \xAD &amp;amp;reg; \xAE &amp;amp;hibar; \xAF &amp;amp;deg; \xB0&lt;br /&gt;
    &amp;amp;plusmn; \xB1 &amp;amp;sup2; \xB2 &amp;amp;sup3; \xB3 &amp;amp;acute; \xB4 &amp;amp;micro; \xB5&lt;br /&gt;
    &amp;amp;para; \xB6 &amp;amp;middot; \xB7 &amp;amp;cedil; \xB8 &amp;amp;sup1; \xB9 &amp;amp;ordm; \xBA&lt;br /&gt;
    &amp;amp;raquo; \xBB &amp;amp;frac14; \xBC &amp;amp;frac12; \xBD &amp;amp;frac34; \xBE &amp;amp;iquest; \xBF&lt;br /&gt;
    &amp;amp;Agrave; \xC0 &amp;amp;Aacute; \xC1 &amp;amp;Acirc; \xC2 &amp;amp;Atilde; \xC3 &amp;amp;Auml; \xC4&lt;br /&gt;
    &amp;amp;Aring; \xC5 &amp;amp;AElig; \xC6 &amp;amp;Ccedil; \xC7 &amp;amp;Egrave; \xC8 &amp;amp;Eacute; \xC9&lt;br /&gt;
    &amp;amp;Ecirc; \xCA &amp;amp;Euml; \xCB &amp;amp;Igrave; \xCC &amp;amp;Iacute; \xCD &amp;amp;Icirc; \xCE&lt;br /&gt;
    &amp;amp;Iuml; \xCF &amp;amp;ETH; \xD0 &amp;amp;Ntilde; \xD1 &amp;amp;Ograve; \xD2 &amp;amp;Oacute; \xD3&lt;br /&gt;
    &amp;amp;Ocirc; \xD4 &amp;amp;Otilde; \xD5 &amp;amp;Ouml; \xD6 &amp;amp;times; \xD7 &amp;amp;Oslash; \xD8&lt;br /&gt;
    &amp;amp;Ugrave; \xD9 &amp;amp;Uacute; \xDA &amp;amp;Ucirc; \xDB &amp;amp;Uuml; \xDC &amp;amp;Yacute; \xDD&lt;br /&gt;
    &amp;amp;THORN; \xDE &amp;amp;szlig; \xDF &amp;amp;agrave; \xE0 &amp;amp;aacute; \xE1 &amp;amp;acirc; \xE2&lt;br /&gt;
    &amp;amp;atilde; \xE3 &amp;amp;auml; \xE4 &amp;amp;aring; \xE5 &amp;amp;aelig; \xE6 &amp;amp;ccedil; \xE7&lt;br /&gt;
    &amp;amp;egrave; \xE8 &amp;amp;eacute; \xE9 &amp;amp;ecirc; \xEA &amp;amp;euml; \xEB &amp;amp;igrave; \xEC&lt;br /&gt;
    &amp;amp;iacute; \xED &amp;amp;icirc; \xEE &amp;amp;iuml; \xEF &amp;amp;eth; \xF0 &amp;amp;ntilde; \xF1&lt;br /&gt;
    &amp;amp;ograve; \xF2 &amp;amp;oacute; \xF3 &amp;amp;ocirc; \xF4 &amp;amp;otilde; \xF5 &amp;amp;ouml; \xF6&lt;br /&gt;
    &amp;amp;divide; \xF7 &amp;amp;oslash; \xF8 &amp;amp;ugrave; \xF9 &amp;amp;uacute; \xFA &amp;amp;ucirc; \xFB&lt;br /&gt;
    &amp;amp;uuml; \xFC &amp;amp;yacute; \xFD &amp;amp;thorn; \xFE &amp;amp;yuml; \xFF&lt;br /&gt;
  };&lt;br /&gt;
  set content [string map $escapes $content];&lt;br /&gt;
  set content [string map [list &amp;quot;\]&amp;quot; &amp;quot;\\\]&amp;quot; &amp;quot;\[&amp;quot; &amp;quot;\\\[&amp;quot; &amp;quot;\$&amp;quot; &amp;quot;\\\$&amp;quot; &amp;quot;\\&amp;quot; &amp;quot;\\\\&amp;quot;] $content];&lt;br /&gt;
  regsub -all -- {&amp;amp;#([[:digit:]]{1,5});} $content {[format %c &amp;quot;\1&amp;quot;]} content;&lt;br /&gt;
  regsub -all -- {&amp;amp;#x([[:xdigit:]]{1,4});} $content {[format %c [scan &amp;quot;\1&amp;quot; %x]]} content;&lt;br /&gt;
  regsub -all -- {&amp;amp;#?[[:alnum:]]{2,7};} $content &amp;quot;?&amp;quot; content;&lt;br /&gt;
  return [subst $content];&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
putlog &amp;quot;Script loaded: URL title fetcher v$url::version by perpleXa&amp;quot;;&lt;br /&gt;
&amp;lt;/tcl&amp;gt;&lt;/div&gt;</summary>
		<author><name>KaszpiR</name></author>	</entry>

	</feed>