change makefile
This commit is contained in:
parent
aadd29ac73
commit
bf94bc25a5
52
.gitignore
vendored
Normal file
52
.gitignore
vendored
Normal file
@ -0,0 +1,52 @@
|
|||||||
|
# Prerequisites
|
||||||
|
*.d
|
||||||
|
|
||||||
|
# Object files
|
||||||
|
*.o
|
||||||
|
*.ko
|
||||||
|
*.obj
|
||||||
|
*.elf
|
||||||
|
|
||||||
|
# Linker output
|
||||||
|
*.ilk
|
||||||
|
*.map
|
||||||
|
*.exp
|
||||||
|
|
||||||
|
# Precompiled Headers
|
||||||
|
*.gch
|
||||||
|
*.pch
|
||||||
|
|
||||||
|
# Libraries
|
||||||
|
*.lib
|
||||||
|
*.a
|
||||||
|
*.la
|
||||||
|
*.lo
|
||||||
|
|
||||||
|
# Shared objects (inc. Windows DLLs)
|
||||||
|
*.dll
|
||||||
|
*.so
|
||||||
|
*.so.*
|
||||||
|
*.dylib
|
||||||
|
|
||||||
|
# Executables
|
||||||
|
*.exe
|
||||||
|
*.out
|
||||||
|
*.app
|
||||||
|
*.i*86
|
||||||
|
*.x86_64
|
||||||
|
*.hex
|
||||||
|
|
||||||
|
# Debug files
|
||||||
|
*.dSYM/
|
||||||
|
*.su
|
||||||
|
*.idb
|
||||||
|
*.pdb
|
||||||
|
|
||||||
|
# Kernel Module Compile Results
|
||||||
|
*.mod*
|
||||||
|
*.cmd
|
||||||
|
.tmp_versions/
|
||||||
|
modules.order
|
||||||
|
Module.symvers
|
||||||
|
Mkfile.old
|
||||||
|
dkms.conf
|
||||||
121
Makefile
121
Makefile
@ -1,13 +1,114 @@
|
|||||||
SUBDIRS = libmysyslog libmysyslog-text libmysyslog-json libmysyslog-client libmysyslog-daemon
|
# Определяем переменные для исходных файлов
|
||||||
|
LIB_DIR = libmysyslog
|
||||||
|
CLIENT_DIR = libmysyslog-client
|
||||||
|
DAEMON_DIR = libmysyslog-daemon
|
||||||
|
JSON_DIR = libmysyslog-json
|
||||||
|
TEXT_DIR = libmysyslog-text
|
||||||
|
|
||||||
all:
|
LIB_SOURCE = $(LIB_DIR)/libmysyslog.c
|
||||||
@for dir in $(SUBDIRS); do \
|
JSON_SOURCE = $(JSON_DIR)/libmysyslog-json.c
|
||||||
$(MAKE) -C $$dir; \
|
TEXT_SOURCE = $(TEXT_DIR)/libmysyslog-text.c
|
||||||
done
|
CLIENT_SOURCE = $(CLIENT_DIR)/libmysyslog-client.c
|
||||||
|
DAEMON_SOURCE = $(DAEMON_DIR)/libmysyslog-daemon.c
|
||||||
|
|
||||||
|
# Пути для unit-файла systemd и переменные пакетов
|
||||||
|
UNIT_FILE = /etc/systemd/system/libmysyslog-daemon.service
|
||||||
|
|
||||||
|
version = 1.0
|
||||||
|
revision = 0
|
||||||
|
architecture = all
|
||||||
|
|
||||||
|
all: build_lib build_apps deb
|
||||||
|
@echo "\nСборка завершена. Используйте:\n"
|
||||||
|
@echo " make systemd_unit_file # Создание systemd unit-файла"
|
||||||
|
@echo " make astra_repo # Создание локального репозитория"
|
||||||
|
|
||||||
|
# Сборка библиотек
|
||||||
|
build_lib:
|
||||||
|
@cc $(LIB_SOURCE) -shared -o $(LIB_DIR)/libmysyslog.so
|
||||||
|
@cc $(JSON_SOURCE) -shared -o $(JSON_DIR)/libmysyslog-json.so
|
||||||
|
@cc $(TEXT_SOURCE) -shared -o $(TEXT_DIR)/libmysyslog-text.so
|
||||||
|
|
||||||
|
# Сборка клиентского приложения и демона
|
||||||
|
build_apps:
|
||||||
|
@cc $(CLIENT_SOURCE) -o log_client -L$(LIB_DIR) -lmysyslog
|
||||||
|
@cc $(DAEMON_SOURCE) -o log_daemon -L$(LIB_DIR) -lmysyslog
|
||||||
|
|
||||||
|
# Генерация systemd unit-файла
|
||||||
|
systemd_unit_file:
|
||||||
|
@touch $(UNIT_FILE)
|
||||||
|
@chmod 664 $(UNIT_FILE)
|
||||||
|
@echo "[Unit]" >> $(UNIT_FILE)
|
||||||
|
@echo "Description=Daemon for logging with libmysyslog" >> $(UNIT_FILE)
|
||||||
|
@echo "[Service]" >> $(UNIT_FILE)
|
||||||
|
@echo "ExecStart=/usr/local/bin/log_daemon" >> $(UNIT_FILE)
|
||||||
|
@echo "Type=forking" >> $(UNIT_FILE)
|
||||||
|
@echo "PIDFile=/run/libmysyslog-daemon.pid" >> $(UNIT_FILE)
|
||||||
|
@echo "[Install]" >> $(UNIT_FILE)
|
||||||
|
@echo "WantedBy=multi-user.target" >> $(UNIT_FILE)
|
||||||
|
|
||||||
|
# Создание пакетов .deb
|
||||||
|
deb: deb_client deb_daemon deb_lib
|
||||||
|
@rm -fr MySyslog_client_${version}-${revision}_${architecture}
|
||||||
|
@rm -fr MySyslog_daemon_${version}-${revision}_${architecture}
|
||||||
|
@rm -fr MySyslog_library_${version}-${revision}_${architecture}
|
||||||
|
|
||||||
|
deb_client:
|
||||||
|
@mkdir -p MySyslog_client_${version}-${revision}_${architecture}/DEBIAN
|
||||||
|
@touch MySyslog_client_${version}-${revision}_${architecture}/DEBIAN/control
|
||||||
|
|
||||||
|
@echo "Package: mysyslog-client" >> MySyslog_client_${version}-${revision}_${architecture}/DEBIAN/control
|
||||||
|
@echo "Version: $(version)" >> MySyslog_client_${version}-${revision}_${architecture}/DEBIAN/control
|
||||||
|
@echo "Architecture: $(architecture)" >> MySyslog_client_${version}-${revision}_${architecture}/DEBIAN/control
|
||||||
|
@echo "Maintainer: gandc <git.gandc.ru/gandc>" >> MySyslog_client_${version}-${revision}_${architecture}/DEBIAN/control
|
||||||
|
@echo "Description: Client for libmysyslog logging system" >> MySyslog_client_${version}-${revision}_${architecture}/DEBIAN/control
|
||||||
|
|
||||||
|
@mkdir -p MySyslog_client_${version}-${revision}_${architecture}/usr/local/bin
|
||||||
|
@cp log_client MySyslog_client_${version}-${revision}_${architecture}/usr/local/bin
|
||||||
|
@dpkg-deb --root-owner-group --build MySyslog_client_${version}-${revision}_${architecture}
|
||||||
|
|
||||||
|
deb_daemon:
|
||||||
|
@mkdir -p MySyslog_daemon_${version}-${revision}_${architecture}/DEBIAN
|
||||||
|
@touch MySyslog_daemon_${version}-${revision}_${architecture}/DEBIAN/control
|
||||||
|
|
||||||
|
@echo "Package: mysyslog-daemon" >> MySyslog_daemon_${version}-${revision}_${architecture}/DEBIAN/control
|
||||||
|
@echo "Version: $(version)" >> MySyslog_daemon_${version}-${revision}_${architecture}/DEBIAN/control
|
||||||
|
@echo "Architecture: $(architecture)" >> MySyslog_daemon_${version}-${revision}_${architecture}/DEBIAN/control
|
||||||
|
@echo "Maintainer: gandc <git.gandc.ru/gandc>" >> MySyslog_daemon_${version}-${revision}_${architecture}/DEBIAN/control
|
||||||
|
@echo "Description: Daemon for libmysyslog logging system" >> MySyslog_daemon_${version}-${revision}_${architecture}/DEBIAN/control
|
||||||
|
|
||||||
|
@mkdir -p MySyslog_daemon_${version}-${revision}_${architecture}/usr/local/bin
|
||||||
|
@cp log_daemon MySyslog_daemon_${version}-${revision}_${architecture}/usr/local/bin
|
||||||
|
@dpkg-deb --root-owner-group --build MySyslog_daemon_${version}-${revision}_${architecture}
|
||||||
|
|
||||||
|
deb_lib:
|
||||||
|
@mkdir -p MySyslog_library_${version}-${revision}_${architecture}/DEBIAN
|
||||||
|
@touch MySyslog_library_${version}-${revision}_${architecture}/DEBIAN/control
|
||||||
|
|
||||||
|
@echo "Package: libmysyslog" >> MySyslog_library_${version}-${revision}_${architecture}/DEBIAN/control
|
||||||
|
@echo "Version: $(version)" >> MySyslog_library_${version}-${revision}_${architecture}/DEBIAN/control
|
||||||
|
@echo "Architecture: $(architecture)" >> MySyslog_library_${version}-${revision}_${architecture}/DEBIAN/control
|
||||||
|
@echo "Maintainer: gandc <git.gandc.ru/gandc>" >> MySyslog_library_${version}-${revision}_${architecture}/DEBIAN/control
|
||||||
|
@echo "Description: Core library for mysyslog logging" >> MySyslog_library_${version}-${revision}_${architecture}/DEBIAN/control
|
||||||
|
|
||||||
|
@mkdir -p MySyslog_library_${version}-${revision}_${architecture}/usr/local/lib
|
||||||
|
@mkdir -p MySyslog_library_${version}-${revision}_${architecture}/usr/local/include
|
||||||
|
@cp $(LIB_DIR)/libmysyslog.so MySyslog_library_${version}-${revision}_${architecture}/usr/local/lib
|
||||||
|
@cp $(LIB_DIR)/libmysyslog.h MySyslog_library_${version}-${revision}_${architecture}/usr/local/include
|
||||||
|
@dpkg-deb --root-owner-group --build MySyslog_library_${version}-${revision}_${architecture}
|
||||||
|
|
||||||
|
# Создание локального репозитория APT
|
||||||
|
astra_repo:
|
||||||
|
@mkdir -p /usr/local/repos
|
||||||
|
@cp *.deb /usr/local/repos
|
||||||
|
@dpkg-scanpackages /usr/local/repos /dev/null | gzip -9c > /usr/local/repos/Packages.gz
|
||||||
|
@echo "deb [trusted=yes] file:/usr/local/repos ./" > /etc/apt/sources.list.d/mysyslog.list
|
||||||
|
@sudo apt-get update
|
||||||
|
|
||||||
|
# Очистка временных файлов
|
||||||
clean:
|
clean:
|
||||||
@for dir in $(SUBDIRS); do \
|
@rm -f $(LIB_DIR)/libmysyslog.so $(JSON_DIR)/libmysyslog-json.so $(TEXT_DIR)/libmysyslog-text.so
|
||||||
$(MAKE) -C $$dir clean; \
|
@rm -f log_client log_daemon
|
||||||
done
|
@rm -fr MySyslog_client_${version}-${revision}_${architecture}*
|
||||||
|
@rm -fr MySyslog_daemon_${version}-${revision}_${architecture}*
|
||||||
.PHONY: all clean
|
@rm -fr MySyslog_library_${version}-${revision}_${architecture}*
|
||||||
|
|||||||
@ -1,16 +1,17 @@
|
|||||||
CC = gcc
|
CC = gcc
|
||||||
CFLAGS = -Wall -g
|
CFLAGS = -Wall -Wextra -I../libmysyslog
|
||||||
LDFLAGS = -lm
|
LDFLAGS = -L../libmysyslog -lmysyslog
|
||||||
|
TARGET = libmysyslog-daemon
|
||||||
|
|
||||||
LIBS = -lmysyslog -lmysyslog-text -lmysyslog-json
|
all: $(TARGET)
|
||||||
|
|
||||||
all: mysyslog-daemon
|
$(TARGET): libmysyslog-daemon.o
|
||||||
|
$(CC) -o $(TARGET) libmysyslog-daemon.o $(LDFLAGS)
|
||||||
|
|
||||||
mysyslog-daemon: src/mysyslog-daemon.o
|
libmysyslog-daemon.o: libmysyslog-daemon.c
|
||||||
$(CC) -o $@ $^ $(LIBS)
|
$(CC) $(CFLAGS) -c libmysyslog-daemon.c
|
||||||
|
|
||||||
clean: rm -f src/*.o mysyslog-daemon
|
clean:
|
||||||
|
rm -f $(TARGET) *.o
|
||||||
|
|
||||||
deb: # Deb package building logic
|
.PHONY: all clean
|
||||||
|
|
||||||
.PHONY: all clean deb
|
|
||||||
44
mysyslog-daemon/libmysyslog-daemon.c
Normal file
44
mysyslog-daemon/libmysyslog-daemon.c
Normal file
@ -0,0 +1,44 @@
|
|||||||
|
#include <stdio.h>
|
||||||
|
#include <stdlib.h>
|
||||||
|
#include <signal.h>
|
||||||
|
#include <unistd.h>
|
||||||
|
#include "libmysyslog.h"
|
||||||
|
|
||||||
|
#define CONFIG_PATH "/etc/mysyslog/mysyslog.cfg"
|
||||||
|
|
||||||
|
static volatile int keepRunning = 1;
|
||||||
|
|
||||||
|
void intHandler(int dummy) {
|
||||||
|
keepRunning = 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
void read_config(const char* path, int* level, int* driver, int* format, char* log_path) {
|
||||||
|
FILE* file = fopen(path, "r");
|
||||||
|
if (!file) {
|
||||||
|
fprintf(stderr, "Could not open config file: %s\n", path);
|
||||||
|
exit(EXIT_FAILURE);
|
||||||
|
}
|
||||||
|
|
||||||
|
fscanf(file, "level=%d\n", level);
|
||||||
|
fscanf(file, "driver=%d\n", driver);
|
||||||
|
fscanf(file, "format=%d\n", format);
|
||||||
|
fscanf(file, "path=%s\n", log_path);
|
||||||
|
fclose(file);
|
||||||
|
}
|
||||||
|
|
||||||
|
int main() {
|
||||||
|
signal(SIGINT, intHandler);
|
||||||
|
signal(SIGTERM, intHandler);
|
||||||
|
|
||||||
|
int level, driver, format;
|
||||||
|
char log_path[256];
|
||||||
|
|
||||||
|
read_config(CONFIG_PATH, &level, &driver, &format, log_path);
|
||||||
|
|
||||||
|
while (keepRunning) {
|
||||||
|
mysyslog("Daemon log message", level, driver, format, log_path);
|
||||||
|
sleep(5); // Log every 5 seconds
|
||||||
|
}
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
4
mysyslog-daemon/mysyslog.cfg
Normal file
4
mysyslog-daemon/mysyslog.cfg
Normal file
@ -0,0 +1,4 @@
|
|||||||
|
level=1
|
||||||
|
driver=0
|
||||||
|
format=0
|
||||||
|
path=/var/log/mysyslog.log
|
||||||
@ -1,27 +0,0 @@
|
|||||||
#include <stdio.h>
|
|
||||||
#include <stdlib.h>
|
|
||||||
#include <signal.h>
|
|
||||||
#include <unistd.h>
|
|
||||||
#include "mysyslog.h"
|
|
||||||
|
|
||||||
static volatile int keep_running = 1;
|
|
||||||
|
|
||||||
void int_handler(int dummy) {
|
|
||||||
keep_running = 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
int main() {
|
|
||||||
signal(SIGINT, int_handler);
|
|
||||||
signal(SIGTERM, int_handler);
|
|
||||||
|
|
||||||
const char* path = "/var/log/mysyslog.log";
|
|
||||||
int driver = 1; // Default to text driver
|
|
||||||
int format = 1; // Default to text format
|
|
||||||
|
|
||||||
while (keep_running) {
|
|
||||||
mysyslog("Daemon log message", INFO, driver, format, path);
|
|
||||||
sleep(60); // Log every minute
|
|
||||||
}
|
|
||||||
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
Loading…
x
Reference in New Issue
Block a user