From 5899590e04772e8f91e3e6c783743a3c626e5e19 Mon Sep 17 00:00:00 2001
From: Julian Rother <julianr@fsmpi.rwth-aachen.de>
Date: Mon, 27 Nov 2017 01:40:04 +0100
Subject: [PATCH] Replaced static config.h with environment-based config

---
 config.h        |  5 -----
 probe.c         |  4 ++--
 remux.c         |  6 +++---
 thumbnail.c     |  8 ++++----
 transcode.c     |  8 ++++----
 util.h          |  7 +++++++
 util/api.c      |  6 +++---
 util/init_env.c | 10 ++++++++++
 8 files changed, 33 insertions(+), 21 deletions(-)
 delete mode 100644 config.h
 create mode 100644 util/init_env.c

diff --git a/config.h b/config.h
deleted file mode 100644
index f19063b..0000000
--- a/config.h
+++ /dev/null
@@ -1,5 +0,0 @@
-#define CONFIG_APIKEY "key"
-#define CONFIG_APIBASE "http://localhost:5000"
-#define CONFIG_VIDEOS_RELEASED "/mnt/released"
-#define CONFIG_VIDEOS_TMP "/mnt/video-main/kodiert"
-#define CONFIG_VIDEOS_RAW "/mnt/raw"
diff --git a/probe.c b/probe.c
index 52296f4..2bbfa31 100644
--- a/probe.c
+++ b/probe.c
@@ -7,7 +7,6 @@
 #include <libxml/xpathInternals.h>
 
 #include "util.h"
-#include "config.h"
 
 static char *getxmlattr(xmlAttr *a, char *name, char *err)
 {
@@ -71,10 +70,11 @@ int main(int argc, char *argv[])
 	if (argc != 5)
 		return 1;
 	av_register_all();
+	init_env();
 	init_avlogbuf();
 
 	jobid = atoi(argv[1]);
-	path = mprintf("%s/%s", CONFIG_VIDEOS_RAW, jstr(jlookup(argv[4], "path"), ""));
+	path = mprintf("%s/%s", getenv(WORKER_RAW), jstr(jlookup(argv[4], "path"), ""));
 	ping_job(jobid, "running", 0);
 
 	opts = 0;
diff --git a/remux.c b/remux.c
index d50aa6f..9c344cb 100644
--- a/remux.c
+++ b/remux.c
@@ -2,7 +2,6 @@
 #include <libavformat/avformat.h>
 
 #include "util.h"
-#include "config.h"
 
 int main(int argc, char *argv[])
 {
@@ -16,13 +15,14 @@ int main(int argc, char *argv[])
 	if (argc != 5)
 		return 1;
 	av_register_all();
+	init_env();
 	init_avlogbuf();
 	memset(&pkt, 0, sizeof(pkt));
 	av_init_packet(&pkt);
 
 	jobid = atoi(argv[1]);
-	path = mprintf("%s/%s", CONFIG_VIDEOS_RELEASED, jstr(jlookup(argv[4], "path"), ""));
-	tmp = mprintf("%s/.tmp-%i", CONFIG_VIDEOS_TMP, jobid);
+	path = mprintf("%s/%s", getenv(WORKER_RELEASED), jstr(jlookup(argv[4], "path"), ""));
+	tmp = mprintf("%s/.tmp-%i", getenv(WORKER_TMP), jobid);
 	ping_job(jobid, "running", 0);
 
 	demux = 0;
diff --git a/thumbnail.c b/thumbnail.c
index 047639f..a523c63 100644
--- a/thumbnail.c
+++ b/thumbnail.c
@@ -3,7 +3,6 @@
 #include <libswscale/swscale.h>
 
 #include "util.h"
-#include "config.h"
 
 AVFrame *scale_frame(AVFrame *frame, enum AVPixelFormat pix_fmt,
 		int width, int height)
@@ -33,13 +32,14 @@ int main(int argc, char *argv[])
 	if (argc != 5)
 		return 1;
 	av_register_all();
+	init_env();
 	init_avlogbuf();
 
 	/* Prepare arguments */
 	jobid = atoi(argv[1]);
-	src = mprintf("%s/%s", CONFIG_VIDEOS_RELEASED, jstr(jlookup(argv[4], "path"), ""));
-	tmp = mprintf("%s/.tmp-%i", CONFIG_VIDEOS_TMP, jobid);
-	dest = mprintf("%s/thumbnail/l_%s.jpg", CONFIG_VIDEOS_RELEASED,
+	src = mprintf("%s/%s", getenv(WORKER_RELEASED), jstr(jlookup(argv[4], "path"), ""));
+	tmp = mprintf("%s/.tmp-%i", getenv(WORKER_TMP), jobid);
+	dest = mprintf("%s/thumbnail/l_%s.jpg", getenv(WORKER_RELEASED),
 			jstr(jlookup(argv[4], "lectureid"), "0"));
 	ping_job(jobid, "running", 0);
 
diff --git a/transcode.c b/transcode.c
index 7dae08b..73c999b 100644
--- a/transcode.c
+++ b/transcode.c
@@ -8,7 +8,6 @@
 #include <libavfilter/buffersrc.h>
 
 #include "util.h"
-#include "config.h"
 
 void assert_empty_opts(AVDictionary *opts)
 {
@@ -261,6 +260,7 @@ int main(int argc, char *argv[])
 		return 1;
 	av_register_all();
 	avfilter_register_all();
+	init_env();
 	init_avlogbuf();
 	pkt.data = 0;
 	pkt.size = 0;
@@ -270,10 +270,10 @@ int main(int argc, char *argv[])
 
 	jobid = atoi(argv[1]);
 	input = jlookup(argv[4], "input");
-	inpath = mprintf("%s/%s", CONFIG_VIDEOS_RAW, jstr(jlookup(input, "path"), ""));
+	inpath = mprintf("%s/%s", getenv(WORKER_RAW), jstr(jlookup(input, "path"), ""));
 	output = jlookup(argv[4], "output");
-	outpath = mprintf("%s/%s", CONFIG_VIDEOS_RELEASED, jstr(jlookup(output, "path"), ""));
-	tmppath = mprintf("%s/.tmp-%i", CONFIG_VIDEOS_TMP, jobid);
+	outpath = mprintf("%s/%s", getenv(WORKER_RELEASED), jstr(jlookup(output, "path"), ""));
+	tmppath = mprintf("%s/.tmp-%i", getenv(WORKER_TMP), jobid);
 
 	demux = 0;
 	opts = 0;
diff --git a/util.h b/util.h
index aa000f8..a8585f1 100644
--- a/util.h
+++ b/util.h
@@ -17,6 +17,13 @@ double fileduration(char *path);
 size_t filesize(char *path);
 char *json_fileinfo(char *path);
 
+#define WORKER_APIKEY "WORKER_APIKEY"
+#define WORKER_APIBASE "WORKER_APIBASE"
+#define WORKER_RELEASED "WORKER_RELEASED"
+#define WORKER_TMP "WORKER_TMP"
+#define WORKER_RAW "WORKER_RAW"
+void init_env(void);
+
 /* JSON av parsing */
 void parse_dict(AVDictionary **d, char *s);
 void parse_chapters(AVFormatContext *ctx, char *s, int64_t duration);
diff --git a/util/api.c b/util/api.c
index 7a40471..931320f 100644
--- a/util/api.c
+++ b/util/api.c
@@ -6,7 +6,6 @@
 #include <string.h>
 
 #include "../util.h"
-#include "../config.h"
 
 static size_t curl_write_cb(char *ptr, size_t size, size_t nmemb, void *user)
 {
@@ -23,7 +22,7 @@ int ping_job(int id, char *state, char *status, ...)
 	if (!(curl = curl_easy_init()))
 		return -1;
 	curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, curl_write_cb);
-	e_apikey = curl_easy_escape(curl, CONFIG_APIKEY, 0);
+	e_apikey = curl_easy_escape(curl, getenv(WORKER_APIKEY), 0);
 	e_state = curl_easy_escape(curl, state, 0);
 	if (gethostname(BL(hostbuf)))
 		strcpy(hostbuf, "localhost");
@@ -36,6 +35,7 @@ int ping_job(int id, char *state, char *status, ...)
 	}
 	else
 		p = strdup("{}");
+	printf("%s\n", p);
 	e_status = curl_easy_escape(curl, p, 0);
 	free(p);
 	p = mprintf("apikey=%s&state=%s&host=%s&status=%s", e_apikey, e_state,
@@ -45,7 +45,7 @@ int ping_job(int id, char *state, char *status, ...)
 	curl_free(e_host);
 	curl_free(e_status);
 	curl_easy_setopt(curl, CURLOPT_POSTFIELDS, p);
-	url = mprintf("%s/internal/jobs/api/job/%i/ping", CONFIG_APIBASE, id);
+	url = mprintf("%s/internal/jobs/api/job/%i/ping", getenv(WORKER_APIBASE), id);
 	curl_easy_setopt(curl, CURLOPT_URL, url);
 	ret = curl_easy_perform(curl);
 	free(p);
diff --git a/util/init_env.c b/util/init_env.c
new file mode 100644
index 0000000..5c5ee48
--- /dev/null
+++ b/util/init_env.c
@@ -0,0 +1,10 @@
+#include "../util.h"
+
+void init_env(void)
+{
+	setenv(WORKER_APIKEY, "empty", 0);
+	setenv(WORKER_APIBASE, "http://127.0.0.1:999999/nourl", 0);
+	setenv(WORKER_RELEASED, "/var/empty/released", 0);
+	setenv(WORKER_TMP, "/var/empty/kodiert", 0);
+	setenv(WORKER_RAW, "/var/empty/raw", 0);
+}
-- 
GitLab