mirror of
				https://github.com/Telecominfraproject/wlan-ap.git
				synced 2025-10-30 18:07:52 +00:00 
			
		
		
		
	firstcontact: remove now unused digicert client
Fixes: WIFI-14694 Signed-off-by: John Crispin <john@phrozen.org>
This commit is contained in:
		| @@ -1,25 +0,0 @@ | |||||||
| include $(TOPDIR)/rules.mk |  | ||||||
|  |  | ||||||
| PKG_NAME:=firstcontact |  | ||||||
| PKG_RELEASE:=1 |  | ||||||
|  |  | ||||||
| PKG_LICENSE:=BSD-3-Clause |  | ||||||
| PKG_MAINTAINER:=John Crispin <john@phrozen.org> |  | ||||||
|  |  | ||||||
| include $(INCLUDE_DIR)/package.mk |  | ||||||
| include $(INCLUDE_DIR)/cmake.mk |  | ||||||
|  |  | ||||||
| define Package/firstcontact |  | ||||||
|   SECTION:=ucentral |  | ||||||
|   CATEGORY:=uCentral |  | ||||||
|   TITLE:=TIP DigiCert firstcontact |  | ||||||
|   DEPENDS:=+libubox +libcurl +libopenssl +certificates |  | ||||||
| endef |  | ||||||
|  |  | ||||||
| define Package/firstcontact/install |  | ||||||
| 	$(INSTALL_DIR) $(1)/usr/sbin |  | ||||||
| 	$(INSTALL_BIN) $(PKG_BUILD_DIR)/digicert $(1)/usr/sbin/ |  | ||||||
| 	$(CP) ./files/* $(1) |  | ||||||
| endef |  | ||||||
|  |  | ||||||
| $(eval $(call BuildPackage,firstcontact)) |  | ||||||
| @@ -1,12 +0,0 @@ | |||||||
| #!/bin/sh /etc/rc.common |  | ||||||
|  |  | ||||||
| START=99 |  | ||||||
| USE_PROCD=1 |  | ||||||
| PROG=/usr/bin/ucode |  | ||||||
|  |  | ||||||
| start_service() { |  | ||||||
| 	procd_open_instance |  | ||||||
| 	procd_set_param command "$PROG" -l uci -l fs /usr/share/ucentral/firstcontact.uc |  | ||||||
| 	procd_set_param respawn 1 10 0 |  | ||||||
| 	procd_close_instance |  | ||||||
| } |  | ||||||
| @@ -1,3 +0,0 @@ | |||||||
| #!/bin/sh |  | ||||||
| [ -f "/etc/ucentral/gateway.json" ] && /etc/init.d/firstcontact disable |  | ||||||
| [ -f "/etc/ucentral/gateway.json" ] || /etc/init.d/ucentral disable |  | ||||||
| @@ -1,83 +0,0 @@ | |||||||
| let config = {}; |  | ||||||
|  |  | ||||||
| function store_config() { |  | ||||||
| 	let redir = split(config.Redirector, ":"); |  | ||||||
| 	let gw = { |  | ||||||
| 		server: redir[0], |  | ||||||
| 		port: redir[1] || 15002 |  | ||||||
| 	}; |  | ||||||
| 	fs.writefile('/etc/ucentral/gateway.json', gw); |  | ||||||
| } |  | ||||||
|  |  | ||||||
| function store_config_uci(path) { |  | ||||||
|         let cursor = uci.cursor(path); |  | ||||||
|         let redir = split(config.Redirector, ":"); |  | ||||||
|  |  | ||||||
|         cursor.load("ucentral"); |  | ||||||
|         cursor.set("ucentral", "config", "server", redir[0]); |  | ||||||
|         cursor.set("ucentral", "config", "port", redir[1] || 15002); |  | ||||||
|         cursor.commit(); |  | ||||||
| } |  | ||||||
|  |  | ||||||
| function digicert() { |  | ||||||
| 	let devid; |  | ||||||
| 	let fd = fs.open("/etc/ucentral/dev-id", "r"); |  | ||||||
| 	if (!fd) { |  | ||||||
| 		warn("firstcontact: failed to find device id"); |  | ||||||
| 		exit(1); |  | ||||||
| 	} |  | ||||||
| 	devid = fd.read("all"); |  | ||||||
| 	fd.close(); |  | ||||||
|  |  | ||||||
| 	ret = system(sprintf('/usr/sbin/digicert -i %s', devid)); |  | ||||||
| 	if (ret) { |  | ||||||
| 		warn("firstcontact failed to contact redirector, check DHCP option\n"); |  | ||||||
| 		let fd = fs.open("/tmp/capwap/dhcp_opt.txt", "r"); |  | ||||||
| 		if (!fd) { |  | ||||||
| 			warn("No redirector found\n"); |  | ||||||
| 			exit(1); |  | ||||||
| 		} else { |  | ||||||
| 			config.Redirector = fd.read("all"); |  | ||||||
| 			fd.close(); |  | ||||||
| 		} |  | ||||||
| 	} else { |  | ||||||
| 		let redirector = { }; |  | ||||||
| 		let fd = fs.open("/etc/ucentral/redirector.json", "r"); |  | ||||||
| 		if (fd) { |  | ||||||
| 			let data = fd.read("all"); |  | ||||||
| 			fd.close(); |  | ||||||
|  |  | ||||||
| 			try { |  | ||||||
| 				redirector = json(data); |  | ||||||
| 			} |  | ||||||
| 			catch (e) { |  | ||||||
| 				warn("firstcontact: Unable to parse JSON data in %s: %s", path, e); |  | ||||||
|  |  | ||||||
| 				exit(1); |  | ||||||
| 			} |  | ||||||
| 		} |  | ||||||
|  |  | ||||||
| 		for (let r in redirector.fields) |  | ||||||
| 			if (r.name && r.value) |  | ||||||
| 				config[r.name] = r.value; |  | ||||||
| 		if (!config.Redirector) { |  | ||||||
| 			warn("Reply is missing Redirector field\n"); |  | ||||||
| 			exit(1); |  | ||||||
| 		} |  | ||||||
|  |  | ||||||
| 	} |  | ||||||
| } |  | ||||||
|  |  | ||||||
| if (!fs.stat('/etc/ucentral/gateway.json')) { |  | ||||||
| 	digicert(); |  | ||||||
| 	store_config(); |  | ||||||
| 	store_config_uci(); |  | ||||||
| 	store_config_uci("/etc/config-shadow/"); |  | ||||||
| 	warn("firstcontact: managed to look up redirector\n"); |  | ||||||
| } |  | ||||||
|  |  | ||||||
| system("/etc/init.d/ucentral enable"); |  | ||||||
| system("/etc/init.d/firstcontact disable"); |  | ||||||
| system("reload_config"); |  | ||||||
| system("/etc/init.d/ucentral start"); |  | ||||||
| system("/etc/init.d/firstcontact stop"); |  | ||||||
| @@ -1,13 +0,0 @@ | |||||||
| cmake_minimum_required(VERSION 2.6) |  | ||||||
|  |  | ||||||
| PROJECT(digicert C) |  | ||||||
| INCLUDE(GNUInstallDirs) |  | ||||||
| ADD_DEFINITIONS(-Os -ggdb -Wall -Werror --std=gnu99 -Wmissing-declarations) |  | ||||||
|  |  | ||||||
| SET(CMAKE_SHARED_LIBRARY_LINK_C_FLAGS "") |  | ||||||
|  |  | ||||||
| ADD_EXECUTABLE(digicert digicert.c) |  | ||||||
| TARGET_LINK_LIBRARIES(digicert curl crypto ssl ubox) |  | ||||||
| INSTALL(TARGETS digicert |  | ||||||
| 	RUNTIME DESTINATION ${CMAKE_INSTALL_SBINDIR} |  | ||||||
| ) |  | ||||||
| @@ -1,104 +0,0 @@ | |||||||
| #define _GNU_SOURCE |  | ||||||
| #include <stdio.h> |  | ||||||
| #include <unistd.h> |  | ||||||
| #include <getopt.h> |  | ||||||
|  |  | ||||||
| #include <curl/curl.h> |  | ||||||
|  |  | ||||||
| #include <libubox/ulog.h> |  | ||||||
|  |  | ||||||
| static const char *file_cert = "/etc/ucentral/cert.pem"; |  | ||||||
| static const char *file_key  = "/etc/ucentral/key.pem"; |  | ||||||
| static const char *file_json = "/etc/ucentral/redirector.json"; |  | ||||||
| static const char *file_dbg  = "/tmp/digicert.hdr"; |  | ||||||
|  |  | ||||||
| int main(int argc, char **argv) |  | ||||||
| { |  | ||||||
| 	FILE *fp_json; |  | ||||||
| 	FILE *fp_dbg; |  | ||||||
| 	CURLcode res; |  | ||||||
| 	CURL *curl; |  | ||||||
| 	char *devid = NULL; |  | ||||||
| 	char *url; |  | ||||||
|  |  | ||||||
| 	alarm(15); |  | ||||||
|  |  | ||||||
| 	while (1) { |  | ||||||
| 		int option = getopt(argc, argv, "k:c:o:hi:"); |  | ||||||
|  |  | ||||||
| 		if (option == -1) |  | ||||||
| 			break; |  | ||||||
|  |  | ||||||
| 		switch (option) { |  | ||||||
| 		case 'k': |  | ||||||
| 			file_key = optarg; |  | ||||||
| 			break; |  | ||||||
| 		case 'c': |  | ||||||
| 			file_cert = optarg; |  | ||||||
| 			break; |  | ||||||
| 		case 'o': |  | ||||||
| 			file_json = optarg; |  | ||||||
| 			break; |  | ||||||
| 		case 'i': |  | ||||||
| 			devid = optarg; |  | ||||||
| 			break; |  | ||||||
| 		default: |  | ||||||
| 		case 'h': |  | ||||||
| 			printf("Usage: digicert OPTIONS\n" |  | ||||||
| 			       "  -k <keyfile>\n" |  | ||||||
| 			       "  -c <certfile>\n" |  | ||||||
| 			       "  -o <outfile>\n" |  | ||||||
| 			       "  -i <devid>\n"); |  | ||||||
| 			return -1; |  | ||||||
| 		} |  | ||||||
| 	} |  | ||||||
|  |  | ||||||
| 	if (!devid) { |  | ||||||
| 		fprintf(stderr, "missing devid\n"); |  | ||||||
| 		return -1; |  | ||||||
| 	} |  | ||||||
|  |  | ||||||
| 	ulog_open(ULOG_SYSLOG | ULOG_STDIO, LOG_DAEMON, "digicert"); |  | ||||||
| 	ULOG_INFO("attempting first contact\n"); |  | ||||||
|  |  | ||||||
| 	fp_dbg = fopen(file_dbg, "wb"); |  | ||||||
| 	fp_json = fopen(file_json, "wb"); |  | ||||||
| 	if (!fp_json) { |  | ||||||
| 		ULOG_ERR("failed to create %s\n", file_json); |  | ||||||
| 		return -1; |  | ||||||
| 	} |  | ||||||
|  |  | ||||||
| 	curl_global_init(CURL_GLOBAL_DEFAULT); |  | ||||||
| 	curl = curl_easy_init(); |  | ||||||
| 	if (!curl) { |  | ||||||
| 		ULOG_ERR("curl_easy_init failed\n"); |  | ||||||
| 		return -1; |  | ||||||
| 	} |  | ||||||
|  |  | ||||||
| 	if (asprintf(&url, "https://clientauth.one.digicert.com/iot/api/v2/device/%s", devid) < 0) { |  | ||||||
| 		ULOG_ERR("failed to assemble url\n"); |  | ||||||
| 		return -1; |  | ||||||
| 	} |  | ||||||
|  |  | ||||||
| 	curl_easy_setopt(curl, CURLOPT_URL, url); |  | ||||||
| 	curl_easy_setopt(curl, CURLOPT_WRITEDATA, fp_json); |  | ||||||
| 	curl_easy_setopt(curl, CURLOPT_HEADERDATA, fp_dbg); |  | ||||||
| 	curl_easy_setopt(curl, CURLOPT_SSLCERTTYPE, "PEM"); |  | ||||||
| 	curl_easy_setopt(curl, CURLOPT_SSLCERT, file_cert); |  | ||||||
| 	curl_easy_setopt(curl, CURLOPT_SSLKEYTYPE, "PEM"); |  | ||||||
| 	curl_easy_setopt(curl, CURLOPT_SSLKEY, file_key); |  | ||||||
| 	curl_easy_setopt(curl, CURLOPT_SSL_VERIFYPEER, 1L); |  | ||||||
| 	curl_easy_setopt(curl, CURLOPT_CONNECTTIMEOUT, 10L); |  | ||||||
|  |  | ||||||
| 	res = curl_easy_perform(curl); |  | ||||||
| 	if (res != CURLE_OK) |  | ||||||
| 		ULOG_ERR("curl_easy_perform() failed: %s\n", curl_easy_strerror(res)); |  | ||||||
| 	else |  | ||||||
| 		ULOG_INFO("downloaded first contact data\n"); |  | ||||||
| 	curl_easy_cleanup(curl); |  | ||||||
| 	curl_global_cleanup(); |  | ||||||
|  |  | ||||||
| 	ulog_close(); |  | ||||||
|  |  | ||||||
| 	return (res != CURLE_OK); |  | ||||||
| } |  | ||||||
		Reference in New Issue
	
	Block a user
	 John Crispin
					John Crispin