|
Packit |
437b5e |
/*
|
|
Packit |
437b5e |
* POSIX library for Lua 5.1, 5.2 & 5.3.
|
|
Packit |
437b5e |
* (c) Gary V. Vaughan <gary@vaughan.pe>, 2013-2015
|
|
Packit |
437b5e |
* (c) Reuben Thomas <rrt@sc3d.org> 2010-2013
|
|
Packit |
437b5e |
* (c) Natanael Copa <natanael.copa@gmail.com> 2008-2010
|
|
Packit |
437b5e |
* Clean up and bug fixes by Leo Razoumov <slonik.az@gmail.com> 2006-10-11
|
|
Packit |
437b5e |
* Luiz Henrique de Figueiredo <lhf@tecgraf.puc-rio.br> 07 Apr 2006 23:17:49
|
|
Packit |
437b5e |
* Based on original by Claudio Terra for Lua 3.x.
|
|
Packit |
437b5e |
* With contributions by Roberto Ierusalimschy.
|
|
Packit |
437b5e |
* With documentation from Steve Donovan 2012
|
|
Packit |
437b5e |
*/
|
|
Packit |
437b5e |
/***
|
|
Packit |
437b5e |
Control System Log.
|
|
Packit |
437b5e |
|
|
Packit |
437b5e |
@module posix.syslog
|
|
Packit |
437b5e |
*/
|
|
Packit |
437b5e |
|
|
Packit |
437b5e |
#include <config.h>
|
|
Packit |
437b5e |
|
|
Packit |
437b5e |
#include "_helpers.c" /* For LPOSIX_2001_COMPLIANT */
|
|
Packit |
437b5e |
|
|
Packit |
437b5e |
#if LPOSIX_2001_COMPLIANT
|
|
Packit |
437b5e |
#include <syslog.h>
|
|
Packit |
437b5e |
|
|
Packit |
437b5e |
/***
|
|
Packit |
437b5e |
Open the system logger.
|
|
Packit |
437b5e |
@function openlog
|
|
Packit |
437b5e |
@string ident all messages will start with this
|
|
Packit |
437b5e |
@int[opt] option bitwise OR of zero or more of `LOG_CONS`, `LOG_NDELAY`,
|
|
Packit |
437b5e |
or `LOG_PID`
|
|
Packit |
437b5e |
@int[opt=`LOG_USER`] facility one of `LOG_AUTH`, `LOG_AUTHPRIV`, `LOG_CRON`,
|
|
Packit |
437b5e |
`LOG_DAEMON`, `LOG_FTP`, `LOG_KERN`, `LOG_LPR`, `LOG_MAIL`, `LOG_NEWS`,
|
|
Packit |
437b5e |
`LOG_SECURITY`, `LOG_SYSLOG`, `LOG_USER`, `LOG_UUCP` or `LOG_LOCAL0`
|
|
Packit |
437b5e |
through `LOG_LOCAL7`
|
|
Packit |
437b5e |
@see syslog(3)
|
|
Packit |
437b5e |
*/
|
|
Packit |
437b5e |
static int
|
|
Packit |
437b5e |
Popenlog(lua_State *L)
|
|
Packit |
437b5e |
{
|
|
Packit |
437b5e |
const char *ident = luaL_checkstring(L, 1);
|
|
Packit |
437b5e |
int option = optint(L, 2, 0);
|
|
Packit |
437b5e |
int facility = optint(L, 3, LOG_USER);
|
|
Packit |
437b5e |
checknargs(L, 3);
|
|
Packit |
437b5e |
openlog(ident, option, facility);
|
|
Packit |
437b5e |
return 0;
|
|
Packit |
437b5e |
}
|
|
Packit |
437b5e |
|
|
Packit |
437b5e |
|
|
Packit |
437b5e |
/***
|
|
Packit |
437b5e |
Write to the system logger.
|
|
Packit |
437b5e |
@function syslog
|
|
Packit |
437b5e |
@int priority one of `LOG_EMERG`, `LOG_ALERT`, `LOG_CRIT`, `LOG_WARNING`,
|
|
Packit |
437b5e |
`LOG_NOTICE`, `LOG_INFO` or `LOG_DEBUG`
|
|
Packit |
437b5e |
@string message log message
|
|
Packit |
437b5e |
@see syslog(3)
|
|
Packit |
437b5e |
*/
|
|
Packit |
437b5e |
static int
|
|
Packit |
437b5e |
Psyslog(lua_State *L)
|
|
Packit |
437b5e |
{
|
|
Packit |
437b5e |
int priority = checkint(L, 1);
|
|
Packit |
437b5e |
const char *msg = luaL_checkstring(L, 2);
|
|
Packit |
437b5e |
checknargs(L, 2);
|
|
Packit |
437b5e |
syslog(priority, "%s", msg);
|
|
Packit |
437b5e |
return 0;
|
|
Packit |
437b5e |
}
|
|
Packit |
437b5e |
|
|
Packit |
437b5e |
|
|
Packit |
437b5e |
/***
|
|
Packit |
437b5e |
Close system log.
|
|
Packit |
437b5e |
@function closelog
|
|
Packit |
437b5e |
@see syslog(3)
|
|
Packit |
437b5e |
*/
|
|
Packit |
437b5e |
static int
|
|
Packit |
437b5e |
Pcloselog(lua_State *L)
|
|
Packit |
437b5e |
{
|
|
Packit |
437b5e |
checknargs(L, 0);
|
|
Packit |
437b5e |
closelog();
|
|
Packit |
437b5e |
return 0;
|
|
Packit |
437b5e |
}
|
|
Packit |
437b5e |
|
|
Packit |
437b5e |
|
|
Packit |
437b5e |
/***
|
|
Packit |
437b5e |
Set log priority mask.
|
|
Packit |
437b5e |
@function setlogmask
|
|
Packit |
437b5e |
@int mask bitwise OR of @{LOG_MASK} bits.
|
|
Packit |
437b5e |
@treturn[1] int previous mask, if successful
|
|
Packit |
437b5e |
@return[2] nil
|
|
Packit |
437b5e |
@treturn[2] string error message
|
|
Packit |
437b5e |
@treturn[2] int errnum
|
|
Packit |
437b5e |
@see setlogmask(3)
|
|
Packit |
437b5e |
*/
|
|
Packit |
437b5e |
static int
|
|
Packit |
437b5e |
Psetlogmask(lua_State *L)
|
|
Packit |
437b5e |
{
|
|
Packit |
437b5e |
checknargs(L, 1);
|
|
Packit |
437b5e |
return pushresult(L, setlogmask(optint(L, 1, 0)), "setlogmask");
|
|
Packit |
437b5e |
}
|
|
Packit |
437b5e |
|
|
Packit |
437b5e |
|
|
Packit |
437b5e |
/***
|
|
Packit |
437b5e |
Mask bit for given log priority.
|
|
Packit |
437b5e |
@function LOG_MASK
|
|
Packit |
437b5e |
@int priority one of `LOG_EMERG`, `LOG_ALERT`, `LOG_CRIT`, `LOG_WARNING`,
|
|
Packit |
437b5e |
`LOG_NOTICE`, `LOG_INFO` or `LOG_DEBUG`
|
|
Packit |
437b5e |
@treturn int mask bit corresponding to *priority*
|
|
Packit |
437b5e |
@see setlogmask(3)
|
|
Packit |
437b5e |
*/
|
|
Packit |
437b5e |
static int
|
|
Packit |
437b5e |
PLOG_MASK(lua_State *L)
|
|
Packit |
437b5e |
{
|
|
Packit |
437b5e |
checknargs(L, 1);
|
|
Packit |
437b5e |
return pushintresult(LOG_MASK(checkint(L, 1)));
|
|
Packit |
437b5e |
}
|
|
Packit |
437b5e |
#endif
|
|
Packit |
437b5e |
|
|
Packit |
437b5e |
|
|
Packit |
437b5e |
static const luaL_Reg posix_syslog_fns[] =
|
|
Packit |
437b5e |
{
|
|
Packit |
437b5e |
#if LPOSIX_2001_COMPLIANT
|
|
Packit |
437b5e |
LPOSIX_FUNC( PLOG_MASK ),
|
|
Packit |
437b5e |
LPOSIX_FUNC( Popenlog ),
|
|
Packit |
437b5e |
LPOSIX_FUNC( Psyslog ),
|
|
Packit |
437b5e |
LPOSIX_FUNC( Pcloselog ),
|
|
Packit |
437b5e |
LPOSIX_FUNC( Psetlogmask ),
|
|
Packit |
437b5e |
#endif
|
|
Packit |
437b5e |
{NULL, NULL}
|
|
Packit |
437b5e |
};
|
|
Packit |
437b5e |
|
|
Packit |
437b5e |
|
|
Packit |
437b5e |
/***
|
|
Packit |
437b5e |
Constants.
|
|
Packit |
437b5e |
@section constants
|
|
Packit |
437b5e |
*/
|
|
Packit |
437b5e |
|
|
Packit |
437b5e |
/***
|
|
Packit |
437b5e |
System logging constants.
|
|
Packit |
437b5e |
Any constants not available in the underlying system will be `nil` valued.
|
|
Packit |
437b5e |
@table posix.syslog
|
|
Packit |
437b5e |
@int LOG_AUTH security/authorisation messages
|
|
Packit |
437b5e |
@int LOG_AUTHPRIV private authorisation messages
|
|
Packit |
437b5e |
@int LOG_CONS write directly to system console
|
|
Packit |
437b5e |
@int LOG_CRON clock daemon
|
|
Packit |
437b5e |
@int LOG_DAEMON system daemons
|
|
Packit |
437b5e |
@int LOG_FTP ftp daemon
|
|
Packit |
437b5e |
@int LOG_KERN kernel messages
|
|
Packit |
437b5e |
@int LOG_LOCAL0 reserved for local use
|
|
Packit |
437b5e |
@int LOG_LOCAL1 reserved for local use
|
|
Packit |
437b5e |
@int LOG_LOCAL2 reserved for local use
|
|
Packit |
437b5e |
@int LOG_LOCAL3 reserved for local use
|
|
Packit |
437b5e |
@int LOG_LOCAL4 reserved for local use
|
|
Packit |
437b5e |
@int LOG_LOCAL5 reserved for local use
|
|
Packit |
437b5e |
@int LOG_LOCAL6 reserved for local use
|
|
Packit |
437b5e |
@int LOG_LOCAL7 reserved for local use
|
|
Packit |
437b5e |
@int LOG_LPR line printer subsystem
|
|
Packit |
437b5e |
@int LOG_MAIL mail system
|
|
Packit |
437b5e |
@int LOG_NDELAY open the connection immediately
|
|
Packit |
437b5e |
@int LOG_NEWS network news subsystem
|
|
Packit |
437b5e |
@int LOG_PID include process id with each log message
|
|
Packit |
437b5e |
@int LOG_SYSLOG messages generated internally by syslogd
|
|
Packit |
437b5e |
@int LOG_USER random user-level messages
|
|
Packit |
437b5e |
@int LOG_UUCP unix-to-unix copy subsystem
|
|
Packit |
437b5e |
@int LOG_EMERG system is unusable
|
|
Packit |
437b5e |
@int LOG_ALERT action must be taken immediately
|
|
Packit |
437b5e |
@int LOG_CRIT critical conditions
|
|
Packit |
437b5e |
@int LOG_ERR error conditions
|
|
Packit |
437b5e |
@int LOG_WARNING warning conditions
|
|
Packit |
437b5e |
@int LOG_NOTICE normal but significant conditions
|
|
Packit |
437b5e |
@int LOG_INFO informational
|
|
Packit |
437b5e |
@int LOG_DEBUG debug-level messages
|
|
Packit |
437b5e |
@usage
|
|
Packit |
437b5e |
-- Print syslog constants supported on this host.
|
|
Packit |
437b5e |
for name, value in pairs (require "posix.syslog") do
|
|
Packit |
437b5e |
if type (value) == "number" then
|
|
Packit |
437b5e |
print (name, value)
|
|
Packit |
437b5e |
end
|
|
Packit |
437b5e |
end
|
|
Packit |
437b5e |
*/
|
|
Packit |
437b5e |
|
|
Packit |
437b5e |
LUALIB_API int
|
|
Packit |
437b5e |
luaopen_posix_syslog(lua_State *L)
|
|
Packit |
437b5e |
{
|
|
Packit |
437b5e |
luaL_register(L, "posix.syslog", posix_syslog_fns);
|
|
Packit |
437b5e |
lua_pushliteral(L, "posix.syslog for " LUA_VERSION " / " PACKAGE_STRING);
|
|
Packit |
437b5e |
lua_setfield(L, -2, "version");
|
|
Packit |
437b5e |
|
|
Packit |
437b5e |
#if LPOSIX_2001_COMPLIANT
|
|
Packit |
437b5e |
LPOSIX_CONST( LOG_CONS );
|
|
Packit |
437b5e |
LPOSIX_CONST( LOG_NDELAY );
|
|
Packit |
437b5e |
LPOSIX_CONST( LOG_PID );
|
|
Packit |
437b5e |
|
|
Packit |
437b5e |
LPOSIX_CONST( LOG_AUTH );
|
|
Packit |
437b5e |
LPOSIX_CONST( LOG_AUTHPRIV );
|
|
Packit |
437b5e |
LPOSIX_CONST( LOG_CRON );
|
|
Packit |
437b5e |
LPOSIX_CONST( LOG_DAEMON );
|
|
Packit |
437b5e |
LPOSIX_CONST( LOG_FTP );
|
|
Packit |
437b5e |
LPOSIX_CONST( LOG_KERN );
|
|
Packit |
437b5e |
LPOSIX_CONST( LOG_LOCAL0 );
|
|
Packit |
437b5e |
LPOSIX_CONST( LOG_LOCAL1 );
|
|
Packit |
437b5e |
LPOSIX_CONST( LOG_LOCAL2 );
|
|
Packit |
437b5e |
LPOSIX_CONST( LOG_LOCAL3 );
|
|
Packit |
437b5e |
LPOSIX_CONST( LOG_LOCAL4 );
|
|
Packit |
437b5e |
LPOSIX_CONST( LOG_LOCAL5 );
|
|
Packit |
437b5e |
LPOSIX_CONST( LOG_LOCAL6 );
|
|
Packit |
437b5e |
LPOSIX_CONST( LOG_LOCAL7 );
|
|
Packit |
437b5e |
LPOSIX_CONST( LOG_LPR );
|
|
Packit |
437b5e |
LPOSIX_CONST( LOG_MAIL );
|
|
Packit |
437b5e |
LPOSIX_CONST( LOG_NEWS );
|
|
Packit |
437b5e |
LPOSIX_CONST( LOG_SYSLOG );
|
|
Packit |
437b5e |
LPOSIX_CONST( LOG_USER );
|
|
Packit |
437b5e |
LPOSIX_CONST( LOG_UUCP );
|
|
Packit |
437b5e |
|
|
Packit |
437b5e |
LPOSIX_CONST( LOG_EMERG );
|
|
Packit |
437b5e |
LPOSIX_CONST( LOG_ALERT );
|
|
Packit |
437b5e |
LPOSIX_CONST( LOG_CRIT );
|
|
Packit |
437b5e |
LPOSIX_CONST( LOG_ERR );
|
|
Packit |
437b5e |
LPOSIX_CONST( LOG_WARNING );
|
|
Packit |
437b5e |
LPOSIX_CONST( LOG_NOTICE );
|
|
Packit |
437b5e |
LPOSIX_CONST( LOG_INFO );
|
|
Packit |
437b5e |
LPOSIX_CONST( LOG_DEBUG );
|
|
Packit |
437b5e |
#endif
|
|
Packit |
437b5e |
|
|
Packit |
437b5e |
return 1;
|
|
Packit |
437b5e |
}
|