Skip to content

Instantly share code, notes, and snippets.

@til
Created February 24, 2014 12:44
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save til/9187713 to your computer and use it in GitHub Desktop.
Save til/9187713 to your computer and use it in GitHub Desktop.
Ruby server script that returns itself, with comment function
#!/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