-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathMakefile
More file actions
81 lines (63 loc) · 2.34 KB
/
Makefile
File metadata and controls
81 lines (63 loc) · 2.34 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
CC = gcc
CFLAGS = -Wall -Wextra -O2 -fstack-protector-strong -D_FORTIFY_SOURCE=2
LDFLAGS = -lsodium -lrt -Wl,-z,now -Wl,-z,relro
PREFIX = /usr/local
BINDIR = $(PREFIX)/bin
CONFDIR = /etc/chapi
CONF_FILE = chapi.conf
KEY_FILE = chapi.key
COMMON_SRC = common.c config.c chapi-log.c ini.c
COMMON_HDR = common.h config.h chapi-log.h ini.h
SERVER_SRC = chapi-server.c $(COMMON_SRC)
CLIENT_SRC = chapi-client.c $(COMMON_SRC)
SERVER_BIN = chapi-server
CLIENT_BIN = chapi-client
SERVICE_FILE = systemd/chapi-server.service
SERVICE_INSTALL_PATH = /etc/systemd/system/chapi-server.service
.PHONY: all clean install install-binaries install-service install-config enable-service
all: $(SERVER_BIN) $(CLIENT_BIN)
$(SERVER_BIN): $(SERVER_SRC) $(COMMON_HDR)
$(CC) $(CFLAGS) -o $@ $(SERVER_SRC) $(LDFLAGS)
$(CLIENT_BIN): $(CLIENT_SRC) $(COMMON_HDR)
$(CC) $(CFLAGS) -o $@ $(CLIENT_SRC) $(LDFLAGS)
install: all create-user install-binaries install-config install-service enable-service
install-client:
install -m 755 $(CLIENT_BIN) $(BINDIR)/
create-user:
@if ! id -u chapi >/dev/null 2>&1; then \
echo "Creating dedicated user chapi..."; \
useradd --system --no-create-home --shell /usr/sbin/nologin chapi; \
else \
echo "User chapi already exists, skipping creation."; \
fi
install-binaries:
install -d $(BINDIR)
install -m 755 $(SERVER_BIN) $(BINDIR)/
install-config:
install -d -m 755 $(CONFDIR)
@if [ ! -f $(CONFDIR)/$(CONF_FILE) ]; then \
echo "Installing default config file..."; \
install -m 640 $(CONF_FILE) $(CONFDIR)/$(CONF_FILE); \
chown root:chapi $(CONFDIR)/$(CONF_FILE); \
else \
echo "Config file already exists, skipping install: $(CONFDIR)/$(CONF_FILE)"; \
echo "Ensuring correct permissions..."; \
chown root:chapi $(CONFDIR)/$(CONF_FILE); \
chmod 640 $(CONFDIR)/$(CONF_FILE); \
fi
@if [ -f $(CONFDIR)/$(KEY_FILE) ]; then \
echo "Setting ownership and permissions for existing key file..."; \
chown root:chapi $(CONFDIR)/$(KEY_FILE); \
chmod 640 $(CONFDIR)/$(KEY_FILE); \
else \
echo "Warning: $(CONFDIR)/$(KEY_FILE) not found, skipping key permission setup."; \
fi
install-service:
install -d /etc/systemd/system
install -m 644 $(SERVICE_FILE) $(SERVICE_INSTALL_PATH)
enable-service:
systemctl daemon-reload
systemctl enable chapi-server.service
systemctl restart chapi-server.service
clean:
rm -f $(SERVER_BIN) $(CLIENT_BIN)