aboutsummaryrefslogtreecommitdiff
path: root/external/unbound/winrc/anchor-update.c
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--external/unbound/winrc/anchor-update.c152
1 files changed, 0 insertions, 152 deletions
diff --git a/external/unbound/winrc/anchor-update.c b/external/unbound/winrc/anchor-update.c
deleted file mode 100644
index 13d44fda6..000000000
--- a/external/unbound/winrc/anchor-update.c
+++ /dev/null
@@ -1,152 +0,0 @@
-/*
- * winrc/anchor-update.c - windows trust anchor update util
- *
- * Copyright (c) 2009, NLnet Labs. All rights reserved.
- *
- * This software is open source.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * Redistributions of source code must retain the above copyright notice,
- * this list of conditions and the following disclaimer.
- *
- * Redistributions in binary form must reproduce the above copyright notice,
- * this list of conditions and the following disclaimer in the documentation
- * and/or other materials provided with the distribution.
- *
- * Neither the name of the NLNET LABS nor the names of its contributors may
- * be used to endorse or promote products derived from this software without
- * specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
- * HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED
- * TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
- * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-
-/**
- * \file
- *
- * This file is made because contrib/update-anchor.sh does not work on
- * windows (no shell).
- */
-#include "config.h"
-#include "libunbound/unbound.h"
-#include "sldns/rrdef.h"
-#include "sldns/pkthdr.h"
-#include "sldns/wire2str.h"
-
-/** usage */
-static void
-usage(void)
-{
- printf("usage: { name-of-domain filename }+ \n");
- printf("exit codes: 0 anchors updated, 1 no changes, 2 errors.\n");
- exit(1);
-}
-
-/** fatal exit */
-static void fatal(const char* str)
-{
- printf("fatal error: %s\n", str);
- exit(2);
-}
-
-/** lookup data */
-static struct ub_result*
-do_lookup(struct ub_ctx* ctx, char* domain)
-{
- struct ub_result* result = NULL;
- int r;
- r = ub_resolve(ctx, domain, LDNS_RR_TYPE_DNSKEY, LDNS_RR_CLASS_IN,
- &result);
- if(r) {
- printf("failed to lookup %s\n", ub_strerror(r));
- fatal("ub_resolve failed");
- }
- if(!result->havedata && (result->rcode == LDNS_RCODE_SERVFAIL ||
- result->rcode == LDNS_RCODE_REFUSED))
- return NULL; /* probably no internet connection */
- if(!result->havedata) fatal("result has no data");
- if(!result->secure) fatal("result is not secure");
- return result;
-}
-
-/** print result to file */
-static void
-do_print(struct ub_result* result, char* file)
-{
- FILE* out = fopen(file, "w");
- char s[65535], t[32];
- int i;
- if(!out) {
- perror(file);
- fatal("fopen failed");
- }
- i = 0;
- if(result->havedata)
- while(result->data[i]) {
- sldns_wire2str_rdata_buf((uint8_t*)result->data[i],
- (size_t)result->len[i], s, sizeof(s),
- (uint16_t)result->qtype);
- sldns_wire2str_type_buf((uint16_t)result->qtype, t, sizeof(t));
- fprintf(out, "%s\t%s\t%s\n", result->qname, t, s);
- i++;
- }
- fclose(out);
-}
-
-/** update domain to file */
-static int
-do_update(char* domain, char* file)
-{
- struct ub_ctx* ctx;
- struct ub_result* result;
- int r;
- printf("updating %s to %s\n", domain, file);
- ctx = ub_ctx_create();
- if(!ctx) fatal("ub_ctx_create failed");
-
- if((r=ub_ctx_add_ta_file(ctx, file))) {
- printf("%s\n", ub_strerror(r));
- fatal("ub_ctx_add_ta_file failed");
- }
-
- if(!(result=do_lookup(ctx, domain))) {
- ub_ctx_delete(ctx);
- return 1;
- }
- ub_ctx_delete(ctx);
- do_print(result, file);
- ub_resolve_free(result);
- return 0;
-}
-
-/** anchor update main */
-int main(int argc, char** argv)
-{
- int retcode = 1;
- if(argc == 1) {
- usage();
- }
- argc--;
- argv++;
- while(argc > 0) {
- int r = do_update(argv[0], argv[1]);
- if(r == 0) retcode = 0;
-
- /* next */
- argc-=2;
- argv+=2;
- }
- return retcode;
-}