75 Commits

Author SHA1 Message Date
f5b28f1edb code beautify
All checks were successful
ci/woodpecker/push/woodpecker Pipeline was successful
ci/woodpecker/tag/woodpecker Pipeline was successful
2023-11-21 09:28:08 +01:00
fe2e5c7144 code beautify
Some checks failed
ci/woodpecker/push/woodpecker Pipeline was successful
ci/woodpecker/tag/woodpecker Pipeline failed
2023-11-21 09:26:18 +01:00
ed468791b5 change secret names
All checks were successful
ci/woodpecker/push/woodpecker Pipeline was successful
ci/woodpecker/tag/woodpecker Pipeline was successful
2023-11-20 19:30:11 +01:00
1da911fc13 change secret names
All checks were successful
ci/woodpecker/push/woodpecker Pipeline was successful
ci/woodpecker/tag/woodpecker Pipeline was successful
2023-11-20 19:27:13 +01:00
3fd8dfd95d nix
All checks were successful
ci/woodpecker/push/woodpecker Pipeline was successful
ci/woodpecker/tag/woodpecker Pipeline was successful
2023-11-20 16:01:58 +01:00
4c2ebc64c5 use kubectl, fix 14
All checks were successful
ci/woodpecker/push/woodpecker Pipeline was successful
ci/woodpecker/tag/woodpecker Pipeline was successful
2023-11-17 16:41:26 +01:00
b7de1c880e use kubectl, fix 13
All checks were successful
ci/woodpecker/push/woodpecker Pipeline was successful
ci/woodpecker/tag/woodpecker Pipeline was successful
2023-11-17 16:36:53 +01:00
7b527a9242 use kubectl, fix 12
All checks were successful
ci/woodpecker/push/woodpecker Pipeline was successful
ci/woodpecker/tag/woodpecker Pipeline was successful
2023-11-17 16:32:29 +01:00
608156280d use kubectl, fix 11
All checks were successful
ci/woodpecker/push/woodpecker Pipeline was successful
ci/woodpecker/tag/woodpecker Pipeline was successful
2023-11-17 16:30:22 +01:00
9f960857f8 use kubectl, fix 9
Some checks failed
ci/woodpecker/tag/woodpecker Pipeline failed
2023-11-17 16:26:50 +01:00
1ff835deb7 use kubectl, fix 8
Some checks failed
ci/woodpecker/push/woodpecker Pipeline was successful
ci/woodpecker/tag/woodpecker Pipeline failed
2023-11-17 16:24:44 +01:00
6ad8cc9d6b use kubectl, fix 7
Some checks failed
ci/woodpecker/push/woodpecker Pipeline was successful
ci/woodpecker/tag/woodpecker Pipeline failed
2023-11-17 16:19:24 +01:00
07e18601f2 use kubectl, fix 6
Some checks failed
ci/woodpecker/push/woodpecker Pipeline was successful
ci/woodpecker/tag/woodpecker Pipeline failed
2023-11-17 16:17:09 +01:00
040964998d use kubectl, fix 5 2023-11-17 16:16:26 +01:00
f6b0061f10 use kubectl, fix 4
All checks were successful
ci/woodpecker/push/woodpecker Pipeline was successful
ci/woodpecker/tag/woodpecker Pipeline was successful
2023-11-17 15:58:10 +01:00
150c498bfc use kubectl, fix 3
Some checks failed
ci/woodpecker/push/woodpecker Pipeline was successful
ci/woodpecker/tag/woodpecker Pipeline failed
2023-11-17 15:55:53 +01:00
29061f2bb2 use kubectl, fix 2
Some checks failed
ci/woodpecker/push/woodpecker Pipeline was successful
ci/woodpecker/tag/woodpecker Pipeline failed
2023-11-17 15:46:44 +01:00
e441e3c932 use kubectl, fix 1 2023-11-17 15:44:36 +01:00
a7c087b489 use kubectl 2023-11-17 15:43:53 +01:00
fc99d07737 use mail
All checks were successful
ci/woodpecker/push/woodpecker Pipeline was successful
2023-11-17 15:10:41 +01:00
29b04e3a54 use trivy
All checks were successful
ci/woodpecker/push/woodpecker Pipeline was successful
2023-11-17 15:06:35 +01:00
02e78b0ad5 use kaniko, fix 13
All checks were successful
ci/woodpecker/push/woodpecker Pipeline was successful
2023-11-17 14:54:16 +01:00
e307e6d3e3 use kaniko, fix 12
All checks were successful
ci/woodpecker/push/woodpecker Pipeline was successful
2023-11-17 14:52:03 +01:00
9d8f4924ac use kaniko, fix 11
All checks were successful
ci/woodpecker/push/woodpecker Pipeline was successful
2023-11-17 14:47:48 +01:00
356887629b use kaniko, fix 10
Some checks failed
ci/woodpecker/push/woodpecker Pipeline failed
2023-11-17 14:46:37 +01:00
5f5236b72e use kaniko, fix 9
All checks were successful
ci/woodpecker/push/woodpecker Pipeline was successful
2023-11-17 14:44:13 +01:00
9e98df75cb use kaniko, fix 8
Some checks failed
ci/woodpecker/push/woodpecker Pipeline failed
2023-11-17 14:28:34 +01:00
355292d9fc use kaniko, fix 7
Some checks failed
ci/woodpecker/push/woodpecker Pipeline failed
2023-11-17 14:02:03 +01:00
11c304fbf0 use kaniko, fix 6 2023-11-17 14:01:28 +01:00
d92f5c932c use kaniko, fix 5
Some checks failed
ci/woodpecker/push/woodpecker Pipeline failed
2023-11-17 13:53:15 +01:00
aa4b79ee9a use kaniko, fix 4
Some checks failed
ci/woodpecker/push/woodpecker Pipeline failed
2023-11-17 13:51:34 +01:00
1a03ca7dfe use kaniko, fix 3
Some checks failed
ci/woodpecker/push/woodpecker Pipeline failed
2023-11-17 13:49:22 +01:00
847dfa0436 use kaniko, fix 2
Some checks failed
ci/woodpecker/push/woodpecker Pipeline failed
2023-11-17 13:42:23 +01:00
dbc422e723 use kaniko, fix 1
Some checks failed
ci/woodpecker/push/woodpecker Pipeline failed
2023-11-17 13:41:33 +01:00
50b356cac0 use kaniko
Some checks failed
ci/woodpecker/push/woodpecker Pipeline failed
2023-11-17 13:39:43 +01:00
1eaeeaf615 use podman
Some checks failed
ci/woodpecker/push/woodpecker Pipeline failed
2023-11-17 13:20:48 +01:00
ac3a602e26 first real ci script, fix 5
Some checks failed
ci/woodpecker/push/woodpecker Pipeline failed
2023-11-17 12:49:22 +01:00
5959eaf1ef first real ci script, fix 4
Some checks failed
ci/woodpecker/push/woodpecker Pipeline failed
2023-11-17 12:48:26 +01:00
4c3c8fc71f first real ci script, fix 3
Some checks failed
ci/woodpecker/push/woodpecker Pipeline failed
2023-11-17 12:46:01 +01:00
0ef81f03f0 first real ci script, fix 2
Some checks failed
ci/woodpecker/push/woodpecker Pipeline failed
2023-11-17 12:38:21 +01:00
0bd99c3fcc first real ci script, fix 1
Some checks failed
ci/woodpecker/push/woodpecker Pipeline failed
2023-11-17 12:34:28 +01:00
ef4209b09f first real ci script
Some checks failed
ci/woodpecker/push/woodpecker Pipeline failed
2023-11-17 12:33:40 +01:00
9b6dc3c486 debug ci
All checks were successful
ci/woodpecker/push/woodpecker Pipeline was successful
2023-11-17 12:22:33 +01:00
3463d69782 debug ci 2023-11-17 12:21:16 +01:00
93adbb5173 debug ci
All checks were successful
ci/woodpecker/push/woodpecker Pipeline was successful
2023-11-17 12:07:26 +01:00
bcb6681440 debug ci 2023-11-17 12:06:16 +01:00
5d232f934f debug ci 2023-11-17 12:05:41 +01:00
c79df400cb debug ci
All checks were successful
ci/woodpecker/push/woodpecker Pipeline was successful
2023-11-17 11:59:48 +01:00
9fba8fd2e2 debug ci stuff
All checks were successful
ci/woodpecker/push/woodpecker Pipeline was successful
2023-11-17 11:40:07 +01:00
cacb1c0254 fix makefile concerning libconfig 2023-09-28 18:45:22 +02:00
8afcfef5e8 remove cluster test stuff 2023-09-28 18:39:47 +02:00
f798ef400d cluster test 2 2023-09-28 18:36:43 +02:00
a17ef7b6ec cluster test 2023-09-28 18:35:05 +02:00
104be55bdf cluster test 2023-09-28 18:33:03 +02:00
19eb9325ca add cluster agent configuration 2023-09-28 18:10:58 +02:00
5a34c3079f drop libconfig completely 2023-09-28 08:16:58 +02:00
e4177eeb27 disable deployment to ampere 2023-09-27 17:28:45 +02:00
c78c93db8a fix 2023-09-27 17:24:30 +02:00
4119765a87 deployment working so far 2023-09-27 16:46:58 +02:00
e5f9d3e3c8 docker hub, fix 2023-09-27 15:32:26 +02:00
6f2966800b docker hub 2023-09-27 15:28:18 +02:00
c0f1bddf29 more constants 2023-09-27 12:45:07 +02:00
f96aa7c798 more constants 2023-09-27 12:43:42 +02:00
314b9a421d use user nobody already in dockerfile 2023-09-27 12:41:44 +02:00
6cf3b46f76 use user nobody already in dockerfile 2023-09-27 12:39:18 +02:00
7cf68d5d55 use user nobody already in dockerfile 2023-09-27 12:38:54 +02:00
8817c3fa12 configuration only by env vars, fix 2023-09-27 12:35:18 +02:00
f90c1c2dbb configuration only by env vars, fix 2023-09-27 12:33:37 +02:00
c6fcce2d41 configuration only by env vars 2023-09-27 12:30:55 +02:00
828dffd523 change database configuration to env vars, fix 2023-09-27 12:02:37 +02:00
053927e329 change database configuration to env vars, fix 2023-09-27 12:01:15 +02:00
b555c9a37f change database configuration to env vars, fix 2023-09-27 11:56:46 +02:00
1adf5fa9d0 change database configuration to env vars, fix 2023-09-27 11:39:53 +02:00
73567d3230 change database configuration to env vars 2023-09-27 11:36:54 +02:00
f24cdbac1c new apline base image 2023-09-13 12:50:11 +02:00
10 changed files with 175 additions and 109 deletions

5
.gitignore vendored
View File

@ -6,5 +6,8 @@ cube/pubsubc.a
test
.bash_history
.vscode
.dccache
sink/.dccache
*~
.*~

View File

@ -4,6 +4,7 @@ stages:
variables:
IMAGE_NAME: $CI_REGISTRY/$CI_PROJECT_PATH
HUB_IMAGE_NAME: wollud1969/sinkserver
build:
image: registry.hottis.de/dockerized/docker-bash:latest
@ -13,36 +14,42 @@ build:
- linux
- docker
script:
- docker build --tag $IMAGE_NAME:${CI_COMMIT_SHORT_SHA} .
- docker build --build-arg="VERSION=${CI_COMMIT_SHORT_SHA}-${CI_COMMIT_TAG}" --tag $IMAGE_NAME:${CI_COMMIT_SHORT_SHA} .
- docker login -u gitlab-ci-token -p $CI_JOB_TOKEN $CI_REGISTRY;
- docker push $IMAGE_NAME:${CI_COMMIT_SHORT_SHA}
- if [ "$CI_COMMIT_TAG" != "" ]; then
docker tag $IMAGE_NAME:${CI_COMMIT_SHORT_SHA} $IMAGE_NAME:${CI_COMMIT_TAG};
docker push $IMAGE_NAME:${CI_COMMIT_TAG};
fi
deploy:
image: registry.hottis.de/dockerized/docker-bash:latest
stage: deploy
tags:
- hottis
- linux
- docker
only:
- tags
variables:
GIT_STRATEGY: none
CONTAINER_NAME: sink
script:
- docker stop $CONTAINER_NAME || echo "container not running, never mind"
- docker rm $CONTAINER_NAME || echo "container not existing, never mind"
- docker run
-d
--network docker-server
--ip 172.16.10.42
-v sink_config:/etc/sink
--name $CONTAINER_NAME
--restart always
$IMAGE_NAME:$CI_COMMIT_TAG
environment:
name: production
- docker login -u $DOCKER_HUB_LOGIN -p $DOCKER_HUB_PASSWORD
- docker tag $IMAGE_NAME:${CI_COMMIT_SHORT_SHA} ${HUB_IMAGE_NAME}:${CI_COMMIT_SHORT_SHA}
- docker push ${HUB_IMAGE_NAME}:${CI_COMMIT_SHORT_SHA}
# deploy:
# image: registry.hottis.de/dockerized/docker-bash:latest
# stage: deploy
# tags:
# - hottis
# - linux
# - docker
# only:
# - tags
# variables:
# GIT_STRATEGY: none
# CONTAINER_NAME: sink
# script:
# - docker stop $CONTAINER_NAME || echo "container not running, never mind"
# - docker rm $CONTAINER_NAME || echo "container not existing, never mind"
# - docker run
# -d
# --network docker-server
# --ip 172.16.10.42
# -v sink_config:/etc/sink
# --name $CONTAINER_NAME
# --restart always
# $IMAGE_NAME:$CI_COMMIT_TAG
# environment:
# name: production

30
.woodpecker.yml Normal file
View File

@ -0,0 +1,30 @@
steps:
build:
image: plugins/kaniko
settings:
repo:
from_secret: image_name
registry:
from_secret: container_registry
tags: latest,${CI_COMMIT_SHA},${CI_COMMIT_TAG}
username:
from_secret: container_registry_username
password:
from_secret: container_registry_password
dockerfile: Dockerfile
when:
- event: [push, tag]
deploy:
image: portainer/kubectl-shell:latest
secrets:
- source: kube_config
target: KUBE_CONFIG_CONTENT
- source: image_name
target: IMAGE_NAME
commands:
- printf "$KUBE_CONFIG_CONTENT" > /tmp/kubeconfig
- export KUBECONFIG=/tmp/kubeconfig
- cat $CI_WORKSPACE/deployment/deploy-yml.tmpl | sed -e 's,%IMAGE%,'$IMAGE_NAME':'$CI_COMMIT_TAG',' | kubectl apply -f -
when:
- event: tag

View File

@ -1,4 +1,4 @@
FROM alpine:3.13 AS builder
FROM alpine:3.18.3 AS builder
ARG VERSION="dockerized"
@ -7,26 +7,30 @@ COPY sink/ /tmp/sink
RUN \
apk update && \
apk add alpine-sdk && \
apk add libconfig-dev && \
apk add postgresql-dev && \
cd /tmp/sink && \
make VERSION=${VERSION}
FROM alpine:3.13
FROM alpine:3.18.3
ENV PGHOST=""
ENV PGDATABASE="mainscnt"
ENV PGUSER="sink"
ENV PGPASSWORD=""
ENV PGSSLMODE="require"
ENV LOWER_BOUND="44000"
ENV UPPER_BOUND="56000"
COPY --from=builder /tmp/sink/build/sink20169 /usr/local/bin/
RUN \
apk add --no-cache libpq && \
apk add --no-cache libconfig && \
mkdir /etc/sink
apk add --no-cache libpq
EXPOSE 20169/udp
USER nobody
VOLUME /etc/sink
CMD [ "/usr/local/bin/sink20169", "-f", "/etc/sink/sink20169.cfg", "-n", "nobody", "-v" ]
CMD [ "/usr/local/bin/sink20169", "-v", "-d" ]

View File

@ -0,0 +1,50 @@
apiVersion: apps/v1
kind: Deployment
metadata:
name: sinkserver
namespace: mainscnt
labels:
app: sinkserver
spec:
replicas: 1
selector:
matchLabels:
app: sinkserver
template:
metadata:
labels:
app: sinkserver
spec:
containers:
- name: sinkserver
image: %IMAGE%
ports:
- containerPort: 20169
protocol: UDP
env:
- name: PGHOST
valueFrom:
configMapKeyRef:
name: sinkserver-config
key: dbhost
- name: PGPASSWORD
valueFrom:
secretKeyRef:
name: sinkserver-secret
key: dbpass
---
apiVersion: v1
kind: Service
metadata:
name: sinkserver
namespace: mainscnt
labels:
app: sinkserver
spec:
type: LoadBalancer
selector:
app: sinkserver
ports:
- protocol: UDP
port: 20169
targetPort: 20169

View File

@ -32,3 +32,5 @@ Measurement is visualized at https://grafana.mainscnt.eu.
The projects of the three current variants are at [RPi](https://home.hottis.de/gitlab/wolutator/mains-frequency-counter-rpi), [STM32](https://home.hottis.de/gitlab/wolutator/mains-frequency-counter-stm32) and [ESP32](https://home.hottis.de/gitlab/wolutator/mains-frequency-counter-esp32).

30
schema/create.sql Normal file
View File

@ -0,0 +1,30 @@
create sequence device_s;
CREATE TABLE device_t (
id integer DEFAULT nextval('device_s') NOT NULL,
deviceid character varying(64) NOT NULL,
sharedsecret character varying(31) NOT NULL,
location character varying(128) NOT NULL,
active boolean DEFAULT false NOT NULL,
contact character varying(128),
flaky boolean DEFAULT false NOT NULL,
CONSTRAINT device_t_sharedsecret_check CHECK ((char_length((sharedsecret)::text) = 31))
);
ALTER TABLE ONLY device_t
ADD CONSTRAINT device_t_deviceid_key UNIQUE (deviceid);
ALTER TABLE ONLY device_t
ADD CONSTRAINT device_t_pkey PRIMARY KEY (id);
CREATE TABLE mainsfrequency (
"time" timestamp without time zone NOT NULL,
host text,
location text,
freq double precision,
valid smallint DEFAULT 1 NOT NULL
);
select create_hypertable('mainsfrequency', 'time');

View File

@ -9,10 +9,10 @@ VERSION ?= $(shell git rev-parse --short=8 HEAD)
UNAME_S := $(shell uname -s)
CC = gcc
CFLAGS = $(shell pkg-config --cflags libpq libconfig) -I. \
CFLAGS = $(shell pkg-config --cflags libpq) -I. \
-Wall -Werror -std=c99 \
-D$(UNAME_S)=1 -DVERSION="\"$(VERSION)\""
LDFLAGS = $(shell pkg-config --libs libpq libconfig)
LDFLAGS = $(shell pkg-config --libs libpq)
TARGET = sink20169
all: $(BUILD_DIR)/$(TARGET)

View File

@ -17,14 +17,12 @@
#include <string.h>
#include <getopt.h>
#include <pwd.h>
#include <libconfig.h>
#include <libpq-fe.h>
#include <sinkStruct.h>
#include <logging.h>
#include <sha256.h>
const char DEFAULT_CONFIG_FILENAME[] = "./sink20169.cfg";
typedef struct {
const char *deviceId;
@ -34,20 +32,12 @@ typedef struct {
PGresult *deviceResult;
} t_device;
typedef struct {
config_t cfg;
uint16_t numOfDevices;
t_device *devices;
} t_configHandle;
#define NUM_OF_STMT_PARAMS 4
typedef struct {
t_configHandle *configHandle;
int receiveSockFd;
int32_t lowerBound;
int32_t upperBound;
const char *postgresqlConnInfo;
PGconn *conn;
t_device foundDevice;
} t_commonHandle;
@ -61,7 +51,7 @@ int openDatabaseConnection(t_commonHandle *handle) {
if (! handle->conn) {
logmsg(LOG_DEBUG, "Opening connection to database");
handle->conn = PQconnectdb(handle->postgresqlConnInfo);
handle->conn = PQconnectdb("");
} else if (PQstatus(handle->conn) != CONNECTION_OK) {
logmsg(LOG_DEBUG, "Resetting connection to database");
PQreset(handle->conn);
@ -75,22 +65,6 @@ int openDatabaseConnection(t_commonHandle *handle) {
return res;
}
int initConfig(const char *configFilename, t_configHandle *configHandle) {
config_init(&(configHandle->cfg));
if (! config_read_file(&(configHandle->cfg), configFilename)) {
logmsg(LOG_ERR, "failed to read config file: %s:%d - %s\n",
config_error_file(&(configHandle->cfg)), config_error_line(&(configHandle->cfg)),
config_error_text(&(configHandle->cfg)));
config_destroy(&(configHandle->cfg));
return -1;
}
return 0;
}
void deinitConfig(t_configHandle *configHandle) {
config_destroy(&(configHandle->cfg));
}
// When you got a result here, remember to free it using freeDevice
int findDevice(t_commonHandle *handle, char *deviceId) {
@ -154,9 +128,7 @@ void freeDevice(t_commonHandle *handle) {
}
}
int initReceiver(t_configHandle *configHandle, t_commonHandle *handle) {
handle->configHandle = configHandle;
int initReceiver(t_commonHandle *handle) {
struct sockaddr_in servaddr;
handle->receiveSockFd = socket(AF_INET, SOCK_DGRAM, 0);
@ -166,11 +138,6 @@ int initReceiver(t_configHandle *configHandle, t_commonHandle *handle) {
}
int receivePort = 20169;
config_lookup_int(&(configHandle->cfg), "receivePort", &receivePort);
if (receivePort < 1 || receivePort > 65535) {
logmsg(LOG_ERR, "illegal receive port configured");
return -2;
}
memset(&servaddr, 0, sizeof(servaddr));
servaddr.sin_family = AF_INET;
@ -231,22 +198,13 @@ int receiveAndVerifyMinuteBuffer(t_commonHandle *handle, t_minuteBuffer *buf) {
}
int initForwarder(t_configHandle *configHandle, t_commonHandle *handle) {
handle->configHandle = configHandle;
handle->postgresqlConnInfo = NULL;
config_lookup_string(&(configHandle->cfg), "postgresqlConnInfo", &(handle->postgresqlConnInfo));
if (! handle->postgresqlConnInfo) {
logmsg(LOG_ERR, "no postgresql connInfo configured");
return -1;
}
int initForwarder(t_commonHandle *handle) {
handle->conn = NULL;
handle->lowerBound = 45000;
config_lookup_int(&(configHandle->cfg), "lowerBound", &(handle->lowerBound));
handle->upperBound = 55000;
config_lookup_int(&(configHandle->cfg), "upperBound", &(handle->upperBound));
char *lowerBoundStr = getenv("LOWER_BOUND");
handle->lowerBound = lowerBoundStr ? strtol(lowerBoundStr, NULL, 10) : 45000;
char *upperBoundStr = getenv("UPPER_BOUND");
handle->upperBound = upperBoundStr ? strtol(upperBoundStr, NULL, 10) : 55000;
logmsg(LOG_INFO, "lowerBound: %u, upperBound: %u", handle->lowerBound, handle->upperBound);
return 0;
@ -343,7 +301,7 @@ void usage() {
printf("https://home.hottis.de/gitlab/wolutator/mains-frequency-counter-rpi,\n");
printf("https://github.com/wollud1969/sinkConvert1\n");
printf("Repo: https://home.hottis.de/gitlab/wolutator/sinkserver\n");
printf("Version: " VERSION "\n");
printf("Version: " VERSION " XXX\n");
printf("\nUsage\n");
printf(" -f FILENAME ...... Config file to be used\n");
printf(" -v ............... Verbose, writes all logging on stdout too\n");
@ -357,21 +315,16 @@ void usage() {
}
int main(int argc, char **argv) {
t_configHandle configHandle;
t_commonHandle commonHandle;
commonHandle.foundDevice.deviceResult = NULL;
const char *configFilename = DEFAULT_CONFIG_FILENAME;
const char *dropPrivilegesToUser = NULL;
bool doFork = false;
int c;
while ((c = getopt(argc, argv, "f:vds:hn:b")) != -1) {
while ((c = getopt(argc, argv, "vds:hn:b")) != -1) {
switch (c) {
case 'f':
configFilename = strdup(optarg);
break;
case 'v':
verbose = true;
break;
@ -410,11 +363,6 @@ int main(int argc, char **argv) {
logmsg(LOG_INFO, "Version: " VERSION);
if (0 != initConfig(configFilename, &configHandle)) {
logmsg(LOG_ERR, "error when reading configuration");
exit(3);
}
if (doFork) {
int pid = fork();
if (pid == -1) {
@ -427,12 +375,12 @@ int main(int argc, char **argv) {
}
}
if (0 != initReceiver(&configHandle, &commonHandle)) {
if (0 != initReceiver(&commonHandle)) {
logmsg(LOG_ERR, "error when initializing receiver");
exit(5);
}
if (0 != initForwarder(&configHandle, &commonHandle)) {
if (0 != initForwarder(&commonHandle)) {
logmsg(LOG_ERR, "error when initializing forwarder");
exit(6);
}
@ -458,5 +406,4 @@ int main(int argc, char **argv) {
deinitForwarder(&commonHandle);
deinitReceiver(&commonHandle);
deinitConfig(&configHandle);
}

View File

@ -1,7 +0,0 @@
postgresqlConnInfo = "host=172.16.3.32 dbname=mainscnt user=sink password=test123";
lowerBound = 45000;
upperBound = 55000;
receivePort = 20169;