diff options
| author | Mistivia <i@mistivia.com> | 2025-11-02 15:29:28 +0800 |
|---|---|---|
| committer | Mistivia <i@mistivia.com> | 2025-11-02 15:29:28 +0800 |
| commit | 9f42c2d5f911cb4e215d7873221e642ce7df4d61 (patch) | |
| tree | 6dac90a889a7402a9556d3d1bcc5cb53cdb9f123 /deprecated-ngircd/src/tool | |
| parent | fb2d9de539b660a261af19b1cbcceb7ee7980cb1 (diff) | |
deprecate webircdateway and ngircd
Diffstat (limited to 'deprecated-ngircd/src/tool')
| -rw-r--r-- | deprecated-ngircd/src/tool/Makefile.ng | 27 | ||||
| -rw-r--r-- | deprecated-ngircd/src/tool/tool.c | 249 | ||||
| -rw-r--r-- | deprecated-ngircd/src/tool/tool.h | 38 |
3 files changed, 314 insertions, 0 deletions
diff --git a/deprecated-ngircd/src/tool/Makefile.ng b/deprecated-ngircd/src/tool/Makefile.ng new file mode 100644 index 0000000..d88bdc9 --- /dev/null +++ b/deprecated-ngircd/src/tool/Makefile.ng @@ -0,0 +1,27 @@ +# +# ngIRCd -- The Next Generation IRC Daemon +# Copyright (c)2001-2012 Alexander Barton (alex@barton.de) and Contributors +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2 of the License, or +# (at your option) any later version. +# Please read the file COPYING, README and AUTHORS for more information. +# + +__ng_Makefile_am_template__ + +EXTRA_DIST = Makefile.ng + +AM_CPPFLAGS = -I$(srcdir)/../portab + +noinst_LIBRARIES = libngtool.a + +libngtool_a_SOURCES = tool.c + +noinst_HEADERS = tool.h + +maintainer-clean-local: + rm -f Makefile Makefile.in Makefile.am + +# -eof- diff --git a/deprecated-ngircd/src/tool/tool.c b/deprecated-ngircd/src/tool/tool.c new file mode 100644 index 0000000..35c1ee6 --- /dev/null +++ b/deprecated-ngircd/src/tool/tool.c @@ -0,0 +1,249 @@ +/* + * ngIRCd -- The Next Generation IRC Daemon + * Copyright (c)2001-2018 Alexander Barton (alex@barton.de) and Contributors. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * Please read the file COPYING, README and AUTHORS for more information. + */ + +#include "portab.h" + +/** + * @file + * Tool functions + */ + +#include <assert.h> +#include <ctype.h> +#include <stdio.h> +#include <stdlib.h> +#include <string.h> +#include <sys/time.h> + +#include <netinet/in.h> + +#ifdef SYSLOG +#define SYSLOG_NAMES 1 +#include <syslog.h> +#endif + +#include "tool.h" + + +/** + * Removes all leading and trailing whitespaces of a string. + * @param String The string to remove whitespaces from. + */ +GLOBAL void +ngt_TrimStr(char *String) +{ + char *start, *end; + + assert(String != NULL); + + start = String; + + /* Remove whitespaces at the beginning of the string ... */ + while (*start == ' ' || *start == '\t' || + *start == '\n' || *start == '\r') + start++; + + if (!*start) { + *String = '\0'; + return; + } + + /* ... and at the end: */ + end = strchr(start, '\0'); + end--; + while ((*end == ' ' || *end == '\t' || *end == '\n' || *end == '\r') + && end >= start) + end--; + + /* New trailing NULL byte */ + *(++end) = '\0'; + + memmove(String, start, (size_t)(end - start)+1); +} /* ngt_TrimStr */ + + +/** + * Convert a string to uppercase letters. + */ +GLOBAL char * +ngt_UpperStr(char *String) +{ + char *ptr; + + assert(String != NULL); + + ptr = String; + while(*ptr) { + *ptr = (char)toupper(*ptr); + ptr++; + } + return String; +} /* ngt_UpperStr */ + + +/** + * Convert a string to lowercase letters. + */ +GLOBAL char * +ngt_LowerStr(char *String) +{ + char *ptr; + + assert(String != NULL); + + ptr = String; + while(*ptr) { + *ptr = (char)tolower(*ptr); + ptr++; + } + return String; +} /* ngt_LowerStr */ + + +GLOBAL void +ngt_TrimLastChr( char *String, const char Chr) +{ + /* If last character in the string matches Chr, remove it. + * Empty strings are handled correctly. */ + + size_t len; + + assert(String != NULL); + + len = strlen(String); + if(len == 0) + return; + + len--; + + if(String[len] == Chr) + String[len] = '\0'; +} /* ngt_TrimLastChr */ + + +/** + * Fill a String with random chars + */ +GLOBAL char * +ngt_RandomStr(char *String, const size_t len) +{ + static const char chars[] = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz!\"#$&'()*+,-./:;<=>?@[\\]^_`"; + struct timeval t; + size_t i; + + assert(String != NULL); + + gettimeofday(&t, NULL); +#ifndef HAVE_ARC4RANDOM + srand((unsigned)(t.tv_usec * t.tv_sec)); + + for (i = 0; i < len; ++i) { + String[i] = chars[rand() % (sizeof(chars) - 1)]; + } +#else + for (i = 0; i < len; ++i) + String[i] = chars[arc4random() % (sizeof(chars) - 1)]; +#endif + String[len] = '\0'; + + return String; +} /* ngt_RandomStr */ + + +#ifdef SYSLOG + + +#ifndef INTERNAL_MARK + +#ifndef _code +typedef struct _code { + char *c_name; + int c_val; +} CODE; +#endif + +CODE facilitynames[] = { +#ifdef LOG_AUTH + { "auth", LOG_AUTH }, +#endif +#ifdef LOG_AUTHPRIV + { "authpriv", LOG_AUTHPRIV }, +#endif +#ifdef LOG_CRON + { "cron", LOG_CRON }, +#endif +#ifdef LOG_DAEMON + { "daemon", LOG_DAEMON }, +#endif +#ifdef LOG_FTP + { "ftp", LOG_FTP }, +#endif +#ifdef LOG_LPR + { "lpr", LOG_LPR }, +#endif +#ifdef LOG_MAIL + { "mail", LOG_MAIL }, +#endif +#ifdef LOG_NEWS + { "news", LOG_NEWS }, +#endif +#ifdef LOG_UUCP + { "uucp", LOG_UUCP }, +#endif +#ifdef LOG_USER + { "user", LOG_USER }, +#endif +#ifdef LOG_LOCAL7 + { "local0", LOG_LOCAL0 }, + { "local1", LOG_LOCAL1 }, + { "local2", LOG_LOCAL2 }, + { "local3", LOG_LOCAL3 }, + { "local4", LOG_LOCAL4 }, + { "local5", LOG_LOCAL5 }, + { "local6", LOG_LOCAL6 }, + { "local7", LOG_LOCAL7 }, +#endif + { 0, -1 } +}; + +#endif + + +GLOBAL const char* +ngt_SyslogFacilityName(int Facility) +{ + int i = 0; + while(facilitynames[i].c_name) { + if (facilitynames[i].c_val == Facility) + return facilitynames[i].c_name; + i++; + } + return "unknown"; +} + + +GLOBAL int +ngt_SyslogFacilityID(char *Name, int DefaultFacility) +{ + int i = 0; + while(facilitynames[i].c_name) { + if (strcasecmp(facilitynames[i].c_name, Name) == 0) + return facilitynames[i].c_val; + i++; + } + return DefaultFacility; +} + + +#endif + + +/* -eof- */ diff --git a/deprecated-ngircd/src/tool/tool.h b/deprecated-ngircd/src/tool/tool.h new file mode 100644 index 0000000..b05649a --- /dev/null +++ b/deprecated-ngircd/src/tool/tool.h @@ -0,0 +1,38 @@ +/* + * ngIRCd -- The Next Generation IRC Daemon + * Copyright (c)2001-2010 Alexander Barton (alex@barton.de) + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * Please read the file COPYING, README and AUTHORS for more information. + */ + +#ifndef __tool_h__ +#define __tool_h__ + +/** + * @file + * Tool functions (Header) + */ + +#include "portab.h" + +GLOBAL void ngt_TrimLastChr PARAMS((char *String, const char Chr )); + +GLOBAL void ngt_TrimStr PARAMS((char *String )); + +GLOBAL char *ngt_UpperStr PARAMS((char *String )); +GLOBAL char *ngt_LowerStr PARAMS((char *String )); + +GLOBAL char *ngt_RandomStr PARAMS((char *String, const size_t len)); + +#ifdef SYSLOG +GLOBAL const char *ngt_SyslogFacilityName PARAMS((int Facility)); +GLOBAL int ngt_SyslogFacilityID PARAMS((char *Name, int DefaultFacility)); +#endif + +#endif + +/* -eof- */ |
