Monday, January 6, 2014

Fun with logs - Geeks

As promised, here is a small tribute to the geeks visiting the teapot!

The best query are received by me are those two. With HTCPCP protocol, url "coffee", BREW and PROPFIND methods and even a pot-designator!

In fact, I received  few comments, but the traces in the logs  attest to the visits of some purists  for the integration of HTCPCP.

So I must begin by apologizing. My implementation of HTCPCP protocol is probably not up to your expectations..

X.X.X.X - - [14/Mar/2013:15:40:12 +0000] "HTCPCP/1.0 coffee:// PROPFIND" 501 357 "-" "-"
X.X.X.X  - - [14/Mar/2013:15:42:00 +0000] "BREW coffee:// HTCPCP/1.0" 501 357 "-" "-"

There is occasionally some attempts to address the BREW method:
X.X.X.X - - [13/Mar/2013:20:19:34 +0000] "BREW / HTTP/1.1" 501 357 "-" "-"

X.X.X.X - - [06/Mar/2013:22:09:27 +0000] "BREW" 400 349 "-" "-"

X.X.X.X - - [17/Oct/2013:11:01:18 +0200] "BREW / HTTP/1.1" 501 357 "-" "-"

X.X.X.X - - [29/Jan/2013:18:28:54 +0000] "BREW / HTTP/1.0" 501 357 "-" "-"

Some uses of HTCPCP instead of HTTP
X.X.X.X - - [20/Nov/2013:17:44:33 +0100] "GET HTCPCP/1.1" 400 349 "-" "-"

X.X.X.X - - [24/Oct/2013:18:47:43 +0200] "BREW / HTCPCP/1.0" 501 357 "-" "-"

X.X.X.X - - [24/Nov/2013:21:38:15 +0100] "BREW coffee HTCPCP/1.0" 501 357 "-" "-"

X.X.X.X  - - [14/Mar/2013:15:40:54 +0000] "HTCPCP/1.0 pot-1 BREW" 501 357 "-" "-"

X.X.X.X  - - [14/Mar/2013:15:41:33 +0000] "BREW pot-1 HTCPCP/1.0" 501 357 "-" "-"

The POST method is also provided
X.X.X.X - [02/Feb/2013:01:58:48 +0000] "POST / HTTP/1.1" 200 1371 "-" "curl/7.28.1"

Some PROPFIND requests
X.X.X.X - [17/Oct/2013:11:01:26 +0200] "PROPFIND / HTTP/1.1" 418 1370 "-" "curl/7.29.0"

X.X.X.X - [13/Dec/2013:00:52:08 +0100] "GET /propfind HTTP/1.1" 404 345 "-" "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/31.0.1650.63 Safari/537.36"

attempts cream parameter
X.X.X.X - [19/Mar/2013:18:29:03 +0000] "GET /BREW%20pot-1?cream;2 HTTP/1.1" 404 345 "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_8_2) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.172 Safari/537.22"

I would really like to tweak a nicer implementation HTCPCPI have some ideas, but unfortunately not enough time to implement them a the moment. Modifying an open source HTTP server is the track that seems to me the easiest way to be able to support non-HTTP requests, and return a 418 error as expected for BREW HTCPCP an PRODFIN METHOD.


  1. I'd suggest using nodejs (I'm using it on rpi - you'll just need to update to lastest version if you're using raspian by `npm intall n` or something like this i don't remember) - set up basic raw TCP/IP server and listen for all acceptable requests like these BREW /pot-1 HTCPCP/1.0.
    I'm just writing http proxy for htcpcp CORS request from browser, so It'd be cool to have any working htcpcp server. Probably I'll also implement one according to RFC, to test proxy.

  2. Hi,

    Your suggestion seems very interesting, I'll maybe try to implement it this summer.

    It look like someone else is also working on it

    best regards

    1. I guess he already finished, except this implementation is basing on node http server which rejects all non-http request (including htcpcp ones). I've already tried to adjust http server but it doesn't seem to be easy. I'll rather implement it on raw tcp/ip.

  3. If not already implemented in nodejs May I suggest modifying HTTPi it is a pure perl implementation of a webserver. Of course it is a total departure from node.js, which could be undesirable. However, it runs on a r-Pi just fine.

  4. Greeting….wonderful article.. increase my knowledge and thank you

  5. This comment has been removed by the author.

  6. I appreciate the fresh and unique perspective offered in the content, providing a new angle on the subject.