From patchwork Sun Nov 12 18:13:28 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: =?utf-8?q?Peter_M=C3=BCller?= X-Patchwork-Id: 1531 Return-Path: Received: from mail01.ipfire.org (unknown [172.28.1.200]) by web02.ipfire.org (Postfix) with ESMTP id 247A4611A8 for ; Sun, 12 Nov 2017 08:13:41 +0100 (CET) Received: from mail01.ipfire.org (localhost [IPv6:::1]) by mail01.ipfire.org (Postfix) with ESMTP id 174FF34DB; Sun, 12 Nov 2017 08:13:39 +0100 (CET) Received: from mx.link38.eu (mx.link38.eu [188.68.43.123]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client CN "mx.link38.eu", Issuer "Let's Encrypt Authority X3" (verified OK)) by mail01.ipfire.org (Postfix) with ESMTPS id 9D4FF34D4 for ; Sun, 12 Nov 2017 08:13:36 +0100 (CET) X-Virus-Scanned: ClamAV at mx.link38.eu Received: from mx-fra.brokers.link38.eu (mx-fra.brokers.link38.eu [10.141.75.13]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client did not present a certificate) by mx.link38.eu (Postfix) with ESMTPS id E49B24016A for ; Sun, 12 Nov 2017 08:13:30 +0100 (CET) Received: from localhost (localhost [127.0.0.1]) (using TLSv1.2 with cipher ECDHE-ECDSA-AES256-GCM-SHA384 (256/256 bits)) (Client did not present a certificate) by mx-fra.brokers.link38.eu (Postfix) with ESMTPSA id EF8289F509 for ; Sun, 12 Nov 2017 08:13:28 +0100 (CET) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=link38.eu; s=201711; t=1510470809; bh=HMkslBlXpYdcdmDkBcJqvkXB6Yy1bicoAUOV0DvG/D4=; h=Date:From:To:Subject:From; b=vhAGGjE2fUL39ZVrPJqvQwt0wZigXiQ+y4NY0DCohr4S9SNFlmlGqPEB990EKlx9E dY4qGDoTwmxT9OG6sADX3hWddRs04gh9H7OObHuBhe4JJ4T4238oOnoOiJNHqpODiH 1yUID3mhPuOYrfxn1cn/N/cs/9XnhDi5DtXuIU/EF0oL2t3WJs8FMUlRvg00oeT6T1 /GLvoIaUtKEDEb7U4vj41puT+21oJXUHEBiodIEpT1l2+f9A3cF0o8iqkRJpzuNzjA XwBohQaZgZnVEekpVnztE73hrgMukqBYNOQH1zArRmuI5oWlH2JOoFoNsHfiNSs7kh xnXKl//czO4Dg== Date: Sun, 12 Nov 2017 08:13:28 +0100 From: Peter =?utf-8?q?M=C3=BCller?= To: "development@lists.ipfire.org" Subject: [PATCH 1/3] allow remote syslog via TCP in syslogdctrl.c Message-ID: <20171112081328.6a4b3621.peter.mueller@link38.eu> Organization: Link38 MIME-Version: 1.0 X-BeenThere: development@lists.ipfire.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: IPFire development talk List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: development-bounces@lists.ipfire.org Sender: "Development" Make syslogctrl.c use TCP as remote logging file if specified so. NOTE: This patch likely contains errors, since I do not know anything about C at all. Please have a close look at it. Sorry. Signed-off-by: Peter Müller --- src/misc-progs/syslogdctrl.c | 24 ++++++++++++++++++++++-- 1 file changed, 22 insertions(+), 2 deletions(-) diff --git a/src/misc-progs/syslogdctrl.c b/src/misc-progs/syslogdctrl.c index 52719023e..b356ebe49 100644 --- a/src/misc-progs/syslogdctrl.c +++ b/src/misc-progs/syslogdctrl.c @@ -32,13 +32,14 @@ int main(void) { - char buffer[STRING_SIZE], command[STRING_SIZE], hostname[STRING_SIZE]; + char buffer[STRING_SIZE], command[STRING_SIZE], hostname[STRING_SIZE], protocol[STRING_SIZE]; char varmessages[STRING_SIZE], asynclog[STRING_SIZE]; int config_fd,rc,fd,pid; struct stat st; struct keyvalue *kv = NULL; memset(buffer, 0, STRING_SIZE); memset(hostname, 0, STRING_SIZE); + memset(protocol, 0, STRING_SIZE); memset(varmessages, 0, STRING_SIZE); memset(asynclog, 0, STRING_SIZE); @@ -73,6 +74,12 @@ int main(void) exit(ERR_SETTINGS); } + if (!findkey(kv, "REMOTELOG_PROTOCOL", protocol)) + { + fprintf(stderr, "Cannot read REMOTELOG_PROTOCOL\n"); + exit(ERR_SETTINGS); + } + freekeyvalues(kv); @@ -105,9 +112,22 @@ int main(void) exit(ERR_CONFIG); } + /* differ between UDP and TCP as rsyslog protocol */ if (!strcmp(buffer,"on")) - snprintf(buffer, STRING_SIZE - 1, "/bin/sed -e 's/^#\\?\\(\\*\\.\\*[[:blank:]]\\+@\\).\\+$/\\1%s/' /etc/syslog.conf >&%d", hostname, config_fd ); + if ( protocol == "udp" ) + { + snprintf(buffer, STRING_SIZE - 1, "/bin/sed -e 's/^#\\?\\(\\*\\.\\*[[:blank:]]\\+@\\).\\+$/\\1%s/' /etc/syslog.conf >&%d", hostname, config_fd ); + } + elif ( protocol == "tcp" ) + { + snprintf(buffer, STRING_SIZE - 1, "/bin/sed -e 's/^#\\?\\(\\*\\.\\*[[:blank:]]\\+@@\\).\\+$/\\1%s/' /etc/syslog.conf >&%d", hostname, config_fd ); + } + else + { + fprintf(stderr, "Received invalid protocol for remote log\n"); + } else + /* turn off remote syslog if specified */ snprintf(buffer, STRING_SIZE - 1, "/bin/sed -e 's/^#\\?\\(\\*\\.\\*[[:blank:]]\\+@.\\+\\)$/#\\1/' /etc/syslog.conf >&%d", config_fd ); /* if the return code isn't 0 failsafe */