summaryrefslogtreecommitdiffhomepage
path: root/libs/nixio/src/user.c
diff options
context:
space:
mode:
Diffstat (limited to 'libs/nixio/src/user.c')
-rw-r--r--libs/nixio/src/user.c263
1 files changed, 0 insertions, 263 deletions
diff --git a/libs/nixio/src/user.c b/libs/nixio/src/user.c
deleted file mode 100644
index b701bac95..000000000
--- a/libs/nixio/src/user.c
+++ /dev/null
@@ -1,263 +0,0 @@
-/*
- * nixio - Linux I/O library for lua
- *
- * Copyright (C) 2009 Steven Barth <steven@midlink.org>
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-#include "nixio.h"
-#include <sys/types.h>
-#include <errno.h>
-#include <unistd.h>
-#include <sys/param.h>
-
-#ifndef __WINNT__
-
-#include <grp.h>
-#include <pwd.h>
-
-#ifndef BSD
-#ifndef NO_SHADOW
-#include <shadow.h>
-#endif
-#include <crypt.h>
-#endif
-
-int nixio__check_group(lua_State *L, int idx) {
- if (lua_isnumber(L, idx)) {
- return lua_tointeger(L, idx);
- } else if (lua_isstring(L, idx)) {
- struct group *g = getgrnam(lua_tostring(L, idx));
- return (!g) ? -1 : g->gr_gid;
- } else {
- return luaL_argerror(L, idx, "supported values: <groupname>, <gid>");
- }
-}
-
-int nixio__check_user(lua_State *L, int idx) {
- if (lua_isnumber(L, idx)) {
- return lua_tointeger(L, idx);
- } else if (lua_isstring(L, idx)) {
- struct passwd *p = getpwnam(lua_tostring(L, idx));
- return (!p) ? -1 : p->pw_uid;
- } else {
- return luaL_argerror(L, idx, "supported values: <username>, <uid>");
- }
-}
-
-
-static int nixio__push_group(lua_State *L, struct group *gr) {
- lua_createtable(L, 0, 4);
- lua_pushstring(L, gr->gr_name);
- lua_setfield(L, -2, "name");
- lua_pushstring(L, gr->gr_passwd);
- lua_setfield(L, -2, "passwd");
- lua_pushinteger(L, gr->gr_gid);
- lua_setfield(L, -2, "gid");
- lua_newtable(L);
-
- for (int i=0; gr->gr_mem[i]; i++) {
- lua_pushstring(L, gr->gr_mem[i]);
- lua_rawseti(L, -2, i+1);
- }
-
- lua_setfield(L, -2, "mem");
- return 1;
-}
-
-static int nixio_getgr(lua_State *L) {
- struct group *gr;
- errno = 0;
- if (lua_isnumber(L, 1)) {
- gr = getgrgid(lua_tointeger(L, 1));
- } else if (lua_isstring(L, 1)) {
- gr = getgrnam(lua_tostring(L, 1));
- } else if (lua_isnoneornil(L, 1)) {
- lua_newtable(L);
- int i = 0;
-
- setgrent();
- while ((gr = getgrent())) {
- nixio__push_group(L, gr);
- lua_rawseti(L, -2, ++i);
- }
-
- if (errno) {
- return nixio__perror(L);
- }
-
- endgrent();
- return 1;
- } else {
- return luaL_argerror(L, 1, "supported values: <groupname>, <gid>");
- }
-
- if (!gr) {
- return nixio__perror(L);
- } else {
- return nixio__push_group(L, gr);
- }
-}
-
-static int nixio__push_passwd(lua_State *L, struct passwd *pw) {
- lua_createtable(L, 0, 7);
- lua_pushstring(L, pw->pw_name);
- lua_setfield(L, -2, "name");
- lua_pushstring(L, pw->pw_passwd);
- lua_setfield(L, -2, "passwd");
- lua_pushinteger(L, pw->pw_gid);
- lua_setfield(L, -2, "gid");
- lua_pushinteger(L, pw->pw_uid);
- lua_setfield(L, -2, "uid");
- lua_pushstring(L, pw->pw_dir);
- lua_setfield(L, -2, "dir");
- lua_pushstring(L, pw->pw_gecos);
- lua_setfield(L, -2, "gecos");
- lua_pushstring(L, pw->pw_shell);
- lua_setfield(L, -2, "shell");
- return 1;
-}
-
-static int nixio_getpw(lua_State *L) {
- struct passwd *pw;
- errno = 0;
- if (lua_isnumber(L, 1)) {
- pw = getpwuid(lua_tointeger(L, 1));
- } else if (lua_isstring(L, 1)) {
- pw = getpwnam(lua_tostring(L, 1));
- } else if (lua_isnoneornil(L, 1)) {
- lua_newtable(L);
- int i = 0;
-
- setpwent();
- while ((pw = getpwent())) {
- nixio__push_passwd(L, pw);
- lua_rawseti(L, -2, ++i);
- }
-
- if (errno) {
- return nixio__perror(L);
- }
-
- endpwent();
- return 1;
- } else {
- return luaL_argerror(L, 1, "supported values: <username>, <uid>");
- }
-
- if (!pw) {
- return nixio__perror(L);
- } else {
- return nixio__push_passwd(L, pw);
- }
-}
-
-#ifndef BSD
-#ifndef NO_SHADOW
-static int nixio__push_spwd(lua_State *L, struct spwd *sp) {
- lua_createtable(L, 0, 9);
- lua_pushstring(L, sp->sp_namp);
- lua_setfield(L, -2, "namp");
- lua_pushinteger(L, sp->sp_expire);
- lua_setfield(L, -2, "expire");
- lua_pushinteger(L, sp->sp_flag);
- lua_setfield(L, -2, "flag");
- lua_pushinteger(L, sp->sp_inact);
- lua_setfield(L, -2, "inact");
- lua_pushinteger(L, sp->sp_lstchg);
- lua_setfield(L, -2, "lstchg");
- lua_pushinteger(L, sp->sp_max);
- lua_setfield(L, -2, "max");
- lua_pushinteger(L, sp->sp_min);
- lua_setfield(L, -2, "min");
- lua_pushinteger(L, sp->sp_warn);
- lua_setfield(L, -2, "warn");
- lua_pushstring(L, sp->sp_pwdp);
- lua_setfield(L, -2, "pwdp");
- return 1;
-}
-
-static int nixio_getsp(lua_State *L) {
- struct spwd *sp;
- errno = 0;
- if (lua_isstring(L, 1)) {
- sp = getspnam(lua_tostring(L, 1));
- } else if (lua_isnoneornil(L, 1)) {
- lua_newtable(L);
- int i = 0;
-
- setspent();
- while ((sp = getspent())) {
- nixio__push_spwd(L, sp);
- lua_rawseti(L, -2, ++i);
- }
-
- if (errno) {
- return nixio__perror(L);
- }
-
- endspent();
- return 1;
- } else {
- return luaL_argerror(L, 1, "supported values: <username>");
- }
-
- if (!sp) {
- return nixio__perror(L);
- } else {
- return nixio__push_spwd(L, sp);
- }
-}
-#endif /* !NO_SHADOW */
-#endif /* !BSD */
-
-static int nixio_crypt(lua_State *L) {
- const char *key = luaL_checkstring(L, 1);
- const char *salt = luaL_checkstring(L, 2);
- const char *hash = crypt(key, salt);
-
- if (hash) {
- lua_pushstring(L, hash);
- } else {
- lua_pushnil(L);
- }
-
- return 1;
-}
-
-
-/* module table */
-static const luaL_reg R[] = {
- {"crypt", nixio_crypt},
- {"getgr", nixio_getgr},
- {"getpw", nixio_getpw},
-#ifndef BSD
-#ifndef NO_SHADOW
- {"getsp", nixio_getsp},
-#endif
-#endif
- {NULL, NULL}
-};
-
-#else /* __WINNT__ */
-
-static const luaL_reg R[] = {
- {NULL, NULL}
-};
-
-#endif
-
-void nixio_open_user(lua_State *L) {
- luaL_register(L, NULL, R);
-}