changeset 52:95bc6b4ec753

sciworkerd: add API key support
author David Demelier <markand@malikania.fr>
date Wed, 17 Aug 2022 09:38:19 +0200
parents 054cc00e23d2
children 319979427566
files man/sciworkerd.8 scictl/scictl.c sciworkerd/main.c sciworkerd/sciworkerd.c sciworkerd/sciworkerd.h
diffstat 5 files changed, 29 insertions(+), 14 deletions(-) [+]
line wrap: on
line diff
--- a/man/sciworkerd.8	Wed Aug 17 09:37:45 2022 +0200
+++ b/man/sciworkerd.8	Wed Aug 17 09:38:19 2022 +0200
@@ -71,6 +71,21 @@
 as worker name. Default:
 .Dq default
 .El
+.\" ENVIRONMENT
+.Sh ENVIRONMENT
+The following environment variables affects
+.Nm :
+.Bl -tag
+.It Ev SCI_API_URL
+Points to a HTTP URL where
+.Nm scid
+is running. Must start with a HTTP scheme such as
+.Dq http
+or
+.Dq https .
+.It Ev SCI_API_KEY
+Secret API key to perform requests.
+.El
 .\" SEE ALSO
 .Sh SEE ALSO
 .Xr sci 7 ,
--- a/scictl/scictl.c	Wed Aug 17 09:37:45 2022 +0200
+++ b/scictl/scictl.c	Wed Aug 17 09:38:19 2022 +0200
@@ -32,7 +32,7 @@
 static void
 usage(void)
 {
-	fprintf(stderr, "usage: scictl [-u baseurl] command [args...]\n");
+	fprintf(stderr, "usage: scictl [-k key] [-u baseurl] command [args...]\n");
 	exit(1);
 }
 
--- a/sciworkerd/main.c	Wed Aug 17 09:37:45 2022 +0200
+++ b/sciworkerd/main.c	Wed Aug 17 09:38:19 2022 +0200
@@ -20,17 +20,21 @@
 #include <stdlib.h>
 #include <unistd.h>
 
+#include "apic.h"
 #include "sciworkerd.h"
+#include "util.h"
 
 static void
 env(void)
 {
 	const char *env;
 
-	if ((env = getenv("SCI_URL")))
-		snprintf(sciworkerd.url, sizeof (sciworkerd.url), "%s", optarg);
+	if ((env = getenv("SCI_API_URL")))
+		util_strlcpy(apiconf.baseurl, env, sizeof (apiconf.baseurl));
+	if ((env = getenv("SCI_API_KEY")))
+		util_strlcpy(apiconf.key, env, sizeof (apiconf.key));
 	if ((env = getenv("SCI_WORKER")))
-		snprintf(sciworkerd.name, sizeof (sciworkerd.name), "%s", optarg);
+		util_strlcpy(sciworkerd.name, env, sizeof (sciworkerd.name));
 }
 
 int
@@ -41,21 +45,24 @@
 	env();
 	opterr = 0;
 
-	while ((ch = getopt(argc, argv, "j:t:u:w:")) != -1) {
+	while ((ch = getopt(argc, argv, "k:j:t:u:w:")) != -1) {
 		switch (ch) {
 		case 'j':
 			if ((val = atoi(optarg)) > 0)
 				sciworkerd.maxjobs = val;
 			break;
+		case 'k':
+			util_strlcpy(apiconf.key, optarg, sizeof (apiconf.key));
+			break;
 		case 't':
 			if ((val = atoi(optarg)) > 0)
 				sciworkerd.timeout = val;
 			break;
 		case 'u':
-			snprintf(sciworkerd.url, sizeof (sciworkerd.url), "%s", optarg);
+			util_strlcpy(apiconf.baseurl, optarg, sizeof (apiconf.baseurl));
 			break;
 		case 'w':
-			snprintf(sciworkerd.name, sizeof (sciworkerd.name), "%s", optarg);
+			util_strlcpy(sciworkerd.name, optarg, sizeof (sciworkerd.name));
 			break;
 		default:
 			break;
--- a/sciworkerd/sciworkerd.c	Wed Aug 17 09:37:45 2022 +0200
+++ b/sciworkerd/sciworkerd.c	Wed Aug 17 09:38:19 2022 +0200
@@ -369,8 +369,6 @@
 	sigemptyset(&sa.sa_mask);
 	sa.sa_handler = stop;
 
-	util_strlcpy(apiconf.baseurl, sciworkerd.url, sizeof (apiconf.baseurl));
-
 	if (sigaction(SIGINT, &sa, NULL) < 0 || sigaction(SIGTERM, &sa, NULL) < 0)
 		log_die(TAG "sigaction: %s", strerror(errno));
 }
--- a/sciworkerd/sciworkerd.h	Wed Aug 17 09:37:45 2022 +0200
+++ b/sciworkerd/sciworkerd.h	Wed Aug 17 09:38:19 2022 +0200
@@ -25,10 +25,6 @@
  */
 
 /**
- * \brief Maximum URL length.
- */
-#define SCIWORKERD_URL_MAX      512
-/**
  * \brief Maximum worker name.
  */
 #define SCIWORKERD_NAME_MAX     64
@@ -37,7 +33,6 @@
  * \brief Main sciworkerd configuration structure.
  */
 extern struct sciworkerd {
-	char url[SCIWORKERD_URL_MAX];   /*!< API URL. */
 	char name[SCIWORKERD_NAME_MAX]; /*!< This worker name to use. */
 	unsigned int fetchinterval;     /*!< Delay in seconds before fetching jobs. */
 	unsigned int maxjobs;           /*!< Maximum parallel jobs. */