1#! /usr/bin/env lua 2 3-- 4-- Copyright (c) 2010 The NetBSD Foundation, Inc. 5-- All rights reserved. 6-- 7-- This code is derived from software contributed to The NetBSD Foundation 8-- by Alistair Crooks (agc@netbsd.org) 9-- 10-- Redistribution and use in source and binary forms, with or without 11-- modification, are permitted provided that the following conditions 12-- are met: 13-- 1. Redistributions of source code must retain the above copyright 14-- notice, this list of conditions and the following disclaimer. 15-- 2. Redistributions in binary form must reproduce the above copyright 16-- notice, this list of conditions and the following disclaimer in the 17-- documentation and/or other materials provided with the distribution. 18-- 19-- THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS 20-- ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED 21-- TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR 22-- PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS 23-- BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR 24-- CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF 25-- SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 26-- INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN 27-- CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) 28-- ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 29-- POSSIBILITY OF SUCH DAMAGE. 30-- 31 32-- a short HKP client 33 34require("cURL") 35 36-- command line args 37dofile "optparse.lua" 38 39opt = OptionParser{usage="%prog [options] file", version="20100226"} 40 41opt.add_option{"-V", "--version", action="store_true", dest="version", 42 help="--version"} 43opt.add_option{"-m", "--mr", action="store_true", dest="mr", help="-m"} 44opt.add_option{"-o", "--op", action="store", dest="op", help="-o op"} 45opt.add_option{"-p", "--port", action="store", dest="port", help="-p port"} 46opt.add_option{"-s", "--server", action="store", dest="server", help="-s server"} 47 48-- parse command line args 49options,args = opt.parse_args() 50 51-- set defaults 52local server = options.server or "pgp.mit.edu" 53local port = options.port or 11371 54local op = options.op or "get" 55local mr = "" 56if options.mr then mr = "&options=mr" end 57 58-- get output stream 59f = io.output() 60 61c = cURL.easy_init() 62 63-- setup url 64c:setopt_url("http://" .. server .. ":" .. port .. 65 "/pks/lookup?op=" .. op .. "&search=" .. args[1] .. mr) 66 67-- perform, invokes callbacks 68c:perform({writefunction = function(str) 69 f:write(str) 70 end}) 71 72-- close output file 73f:close() 74 75