Created
February 24, 2014 12:44
-
-
Save til/9187713 to your computer and use it in GitHub Desktop.
Ruby server script that returns itself, with comment function
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/usr/bin/env ruby | |
# | |
# Leave a comment if you can ... | |
%w[ rubygems socket syntax/convertors/html ].each { |lib| require lib } | |
def header(*args) | |
args.join("\r\n") + "\r\n" + "\r\n" | |
end | |
def body | |
Thread.main[:body] ||= Syntax::Convertors::HTML.for_syntax("ruby"). | |
convert(File.read(__FILE__)) | |
end | |
server = TCPServer.new(2011) | |
Thread.new(server.accept) do |c| | |
begin | |
request = []; request << c.readline.chomp until request[-1] == "" | |
if request.first =~ /^GET/ | |
c.puts header("HTTP/1.0 200 OK", "Content-Type: text/html") | |
c.puts <<-HTML | |
<html><head><style> .comment{color:#005;font-style:italic;}.keyword | |
{color:#A00;font-weight:bold;}.punct{color:#447;font-weight:bold;} | |
.string{color:#944;}.ident{color:#004;}.constant{color:#07F;}.number | |
{color:#D55;}.expr{color:#227;}.regex{color:#B66;}</style></head> | |
<body>#{body}</body></html> | |
HTML | |
elsif request.first =~ /^POST/ | |
raise unless request.any? { |h| h =~ /^Content-Length: (\d+)$/i } | |
body = c.read($1.to_i) | |
File.open(__FILE__, 'a') do |this| | |
this.puts "#{body}\n-- #{Time.now}".map { |line| "# #{line}"} << "\n" | |
end | |
Thread.main[:body] = nil | |
c.puts header("HTTP/1.0 201 Created", "Location: /") | |
else; raise | |
end | |
rescue; c.puts header("HTTP/1.0 400 Bad Request") | |
ensure; c.close; end | |
end while true | |
# I feel like a cheater, but I know how, and therefore I do it. - Hannes | |
# -- Mon Jan 11 23:56:35 +0100 2010 | |
# I can has beer? - Klaus | |
# -- Tue Jan 12 13:43:32 +0100 2010 | |
# Hello! I mean 2nd! @andypsilon | |
# -- Tue Jan 12 13:48:51 +0100 2010 | |
# Ah doch dritter... Klaus war schneller... Aber Bier gibt es trotzdem oder? | |
@andypsilon | |
# -- Tue Jan 12 13:50:01 +0100 2010 | |
# oh mann ich bin ja wieder viel zu spaet dran .... t. | |
# -- Wed Jan 20 17:20:47 +0100 2010 | |
# | |
__________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________ | |
# -- Wed Jan 20 17:24:52 +0100 2010 | |
# =iTTI=i===:===+::=:;;::,;. .;;:;;;;,:;==+;===;;==+=+, -Tim | |
Park ;=ITTT=====+:===;)+==+=+=++:::;++=+====I+:;;++=+=+++ii+:; | |
+I)I==+++==;,III=================:+===TITTT=:+;:====IIi;+ | |
::I=;;;;+;+=========+==+:::++::==========++i=:.===+T==:+ | |
;:)i)+;+;;+=======i===ITT):;;,;:;:,,;===IL==TTT+:=;,;;;;:.: | |
;II++,+;+:=:,i)===T===TTI,;=;:;:.:,:,=IITTI)TTTT=,=;;;;,II=+ | | |
;+)I==::+:=:=)TTT)ITT==LT);::,\:/,:;,:iI=L=iTTTi==);=::+=i)I; |__una | |
;))++===:==+)TLTLTLL=LI)==)~ ~:=+=+=,=iT====+;+.=+:;):+ | |
;==++;,=:=iI=I=i=T===:===) ;;;.:,.:,+);===+:==,;=I=: (Human | |
;;;+;;;=;;=======)==;:=;,: /| |\,::'::..:,;;:++:++=:::+: Form: | |
:;;:;;;;===+:===++ :;:.:| `---' |:` :. +.,::;;;::=.;::+ S Movie) | |
;:,:;;;;;;,==:,i :`': `-____-' ': `: ,:,,;;;::;::+ | |
;+=;;;;.::,;;;;'---'-_ -~~~-_ =);:;;;.,.:==++::, | |
L;;==+===,.,::::;-~.----. _.--_ ~- I=:;:;+=iII+==iTTTTIi; | |
Ii=ii==;;======+,+.,:::; ,' ##@@ \ / @@# ~-+ | |
|+:;:;==ITTT===TLLLLLT;;;;:++===Ii===;==.;:._| | ### # | | # ## | |
||T:+;;:===TLLT==)LLLLLL========TLL)=====,++;| -| : ##@ # | | # ## | |
|'|--.++=TL:=)LLLLLLLTLLL=i==iLLLL)IIL::;:==:;|~\| \ #### / | \ ### | |
| | |+==TT:i=LLLLLLLLLLLTLLLLLLLT=i=)T)==:==+|| `| ~~~~~~ L `----' | |
|' ||)+=IT;==)T)T=))LLLTLLLTLLLIILTLL==:;====` | | |
| //'++==TI:==i========LLLLII)ILLL)==;=====+;+\o `| ---- | |
|' /'+:;===II+============i=+:I)L)===;====;;;+;;`\ `| `--' | |
.'o/';;;;;====T::==============TT===:====;;+;;;+;|,`-+\ | |
.'++|;;;+;+;+======+,+========;==)====;=+=+;;;;;+;;|;++++`-_ | |
.'++++|:;;;;;;;:==+==++;:===+==::=)====;===;;;;+;++;(_):.;++++`-_ | |
_-';i;+;(_);;;;;+;;;+======;;;===+.+=====+;;;=;;;;++;;+;;.:;;;;+;+;|`-_ | |
_-'|):;;;+;,;);;;;;;;;;;;;+====+;;.+;:======;;;.+;+;;;+++;+;;;;++;+;++|iii`--'iii|=;;;;;;;;;;;;+;;:;;;;;;;;===;;+.;.;+====;;;;;,:;;+;+;+;+.---.+;+++|iiiiiiiiii|+;;;;;;;;;;;;:;;;;;:;;;;;;;+;;;;;::;;;==+;;;;;;,;;;;;;;| | |
`-.++|iiiiiiiiii|+ | |
______;;;;;;:;;;:;;;;;;;;;;:;;+;.;+:;;+;;++;;::++;;+|'_.-----._~~--__ii__----' | |
|;;;;:;;;;;;;;;;;;;;;;;,+;:;;;;;;;;;;;;;,;;;;+`--------------/.()_____.------.|:;;;:;;;;;;;;;;;;;;;;,;+=;;;;;;;;;+;;;::;;+;+;=)=ii+;ii___/ | |
|+=-------------',;;;;;;;:;;;;;;;;;;,.:;+=:;;;==;;;;;;+;___----------~~~i/' | |
|'i\ \iii~~--.__;;;;;;;;;;;;;;;;;;:;;;;+;,;;===___.--~~ || . i/' | |
|'iii\ `\ii. ||~~~---___;;;;;;:;=+;;::====./ /++\_.-.__/' | |
|' ``''\ `\. __|`| \._;;;:===;======/ __.--:;+,,,::..`-_ | |
|_______\ ./'__--+:;+++----_ \;:==========| | |
/++,;,,,+=.,:++===+-_|HHHHHHHHH\/HH|===+,+,+:..++;;- \:+========|' | |
|++++;; ,,,,,,+==|HHHHHHHHHHHHHHHH|....:... ;.,==\_ |+========| | |
|,....:,.:,++,.----'HHHHHHHHHHHHHHH.H|..,,,,...:.+++:::| `|;====++|' | |
ii`,,.+i..,,___/TTTTHHHHHHHHHHHHHHHHHHH`-_---___-_..,++__| |;=====+| | |
iii)\ _+;..-'TTTTTTTTHH.HHHHHHHHHHHHH.HHHHHTTTTTTTT|../iiii |=====+|' | |
iiii|'T`-'TTTTTTTTTTTTHH.HHTTTTTTTTTTTTTHHHTTTTTTTT`-|iiiii `|;.:++| | |
iiii|TTTTTTTTTTTTTTTTTTHTTTTTTTTTTTT.TTTTTTTTTTTTTTTT|iiiii |+=;=|' | |
iiiiii\TTTTTTTTTTTTTTTTTTT.TTTTTTTTT.TTTTTTTTTTTTTTTT/iiiiii |:=== | |
iiiiiii\TTTTTTTTTTTTTTTTTTTHHHHHHHHHHHHTTTTTTTTTTTTT/iiiiiii `|=== | |
iiiiiiii|`\TTTTTTTTTTTTTTHHHH.HHHHHH.HHHHHHHTTTTTTT/'|iiiiiiii |:== | |
iiiiiii|':+~\TTTTTTTTTTHHHHHHHHHHHHHHHHHHHHHHHTTT/';+`|iiiiiii |,++ | |
iiiiiiii|:;++|TTTTTTTTTHHHHHHHH.HHHH.HHHHHHHHHHHHT|+,;;|iiiiiii |:+= | |
iiiiiii|'++++`|TTTTTTTTHHHHHHHHHHHHHHHHHHHHHHHHHHH|:;+;`|iiiiii `|:+ | |
iiiiiii|';+++++`|TTTTTTTHHHHHHHHHH.HHHHHHHHHHHHHHH|'+;;;;|iiiiiii |;; | |
iiiiii|'++;;+;++`|TTTTTTHHHHHH_------_HHHHHHHHHHH|'++;;;;`|iiiiii |i; | |
iiiiii|';+;;;;+;++`|TTTTTTHHH.- _---=HHHHHHHHH|';++;;;;;`|iiiii `|; | |
iiiii|';+;;;+;;;;++`|TTTTTHH: .'HHHHHHHHHHHHH|':;;;;;;;;;|iiiii |; | |
iiiiii|:+;;;;;;;;++++|TTTTTHH| |HHHHHHHHHHHHH.|;++;;++;;;;`|iiiii |, | |
iiiii|'+;+;+;./~\_/~~`|TTTTHH: `\HHHHH.HHHHHH|\__/~\;+;;;;;|iiiii |+ | |
iiiii|';+;___/:;;:;;;;+|TTTTTH`\ ~---=/HHHHHH|:;;;;:\__;;;;`|iiii `| | |
iiii|':;;/+++++,,,,..,,|ITTTTTHH~-.____-~~HHHHHHH|,,....++;~-.;;|iiiii | |
iiii|':;;/,,.,.,,,.,,..|IITTTTTHHHHHHHHHHHHHHHHHHHH|,,,++.....|;;`|iiiii | |
# -- Wed Jan 20 17:27:23 +0100 2010 | |
# 5ter! - mnemonikk | |
# -- Wed Jan 20 17:37:55 +0100 2010 | |
# iTTi? Tim Park? At first I thought this is brainfuck code, but no. Very | |
confused. Til | |
# -- Wed Jan 20 18:34:29 +0100 2010 | |
# And yes: of course there will be beer for the first three! Til | |
# -- Wed Jan 20 18:35:10 +0100 2010 | |
# Now with caching | |
# -- Wed Jan 20 18:53:47 +0100 2010 | |
# hihi | |
# -- Tue Feb 02 18:50:14 +0100 2010 | |
# hihi | |
# -- Tue Feb 02 18:50:24 +0100 2010 | |
# \nhihi | |
# -- Tue Feb 02 18:50:39 +0100 2010 | |
# haha | |
# -- Fri Feb 05 20:23:26 +0100 2010 | |
# hoho | |
# -- Fri Feb 05 20:23:37 +0100 2010 | |
# huhu | |
# -- Tue Feb 09 20:00:27 +0100 2010 | |
# bla | |
# -- Tue Mar 02 15:44:17 +0100 2010 | |
# hallo til, ein test von lukas | |
# -- Fri Mar 12 11:05:59 +0100 2010 | |
# hallo lukas! | |
# -- Fri Mar 12 11:08:01 +0100 2010 | |
# | |
# | |
# | |
# -- Sun Mar 21 00:23:05 +0100 2010 | |
# | |
# | |
# -- Sun Mar 21 00:25:16 +0100 2010 | |
# | |
# -- Sun Mar 21 00:26:31 +0100 2010 | |
# | |
# -- Sun Mar 21 00:28:31 +0100 2010 | |
# BURP | |
# -- Sun Mar 21 00:29:27 +0100 2010 | |
# SCHLURP | |
# -- Fri Mar 26 17:51:02 +0100 2010 | |
# schlump | |
# -- Mon Mar 29 14:45:54 +0200 2010 | |
# schlamp | |
# -- Mon Mar 29 14:46:05 +0200 2010 | |
# ohai=ohai | |
# -- Mon May 17 10:05:21 +0200 2010 | |
# g'day | |
# -- Mon May 17 10:06:31 +0200 2010 | |
# g\'day sir\! | |
# -- Mon May 17 10:06:48 +0200 2010 | |
# Hello from la Suede. olleolleolle | |
# -- Thu May 20 09:39:14 +0200 2010 | |
# ------------------------------a8d48eda038f | |
# Content-Disposition: form-data; name="comment" | |
# | |
# I get it... | |
# ------------------------------a8d48eda038f-- | |
# | |
# -- Mon Dec 06 02:55:26 +0100 2010 | |
# POST\nContent-Length: 10\nmt was here\n | |
# -- Tue Mar 08 17:29:48 +0100 2011 | |
# That was way easier with curl than I thought it would be...MGPalmer | |
# -- Tue Mar 08 17:30:32 +0100 2011 | |
# comment=helloworld | |
# -- Wed Mar 16 21:05:53 +0100 2011 | |
# helloworld | |
# -- Wed Mar 16 21:06:46 +0100 2011 | |
# <script>document.write(Hello | |
# -- Wed Mar 16 21:08:18 +0100 2011 | |
# <script>document.write('Hello Til')</script> | |
# -- Wed Mar 16 21:08:28 +0100 2011 | |
# ------------------------------1795b377a805 | |
# Content-Disposition: form-data; name="toad"; filename="toad.txt" | |
# Content-Type: text/plain | |
# | |
# | |
# | |
# ,'``.._ ,'``. | |
# :,--._:)\,:,._,.: All Glory to | |
# :`--,'' :`...';\ the HYPNO TOAD! | |
# `,' `---' `. | |
# / : | |
# / \ | |
# ,' :\.___,-. | |
# `...,---'``````-..._ |: \ | |
# ( ) ;: ) \ _,-. | |
# `. ( // `' \ | |
# : `.// ) ) , ; | |
# ,-|`. _,'/ ) ) ,' ,' | |
# ( :`.`-..____..=:.-': . _,' ,' | |
# `,'\ ``--....-)=' `._, \ ,') _ '``._ | |
# _.-/ _ `. (_) / )' ; / \ \`-.' | |
# `--( `-:`. `' ___..' _,-' |/ `.) | |
# `-. `.`.``-----``--, .' | |
# |/`.\`' ,','); SSt | |
# ` (/ (/ | |
# | |
# ------------------------------1795b377a805-- | |
# | |
# -- Thu Mar 17 11:10:57 +0100 2011 |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment