/* * $Id: rfc931.c,v 1.4 1992/08/12 04:44:34 ceder Exp $ * Copyright (C) 1991 Lysator Academic Computer Association. * * This file is part of the LysKOM server. * * LysKOM 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 1, or (at your option) * any later version. * * LysKOM is distributed in the hope that it will be useful, but WITHOUT * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License * for more details. * * You should have received a copy of the GNU General Public License * along with LysKOM; see the file COPYING. If not, write to * Lysator, c/o ISY, Linkoping University, S-581 83 Linkoping, SWEDEN, * or the Free Software Foundation, Inc., 675 Mass Ave, Cambridge, * MA 02139, USA. * * Please mail bug reports to bug-lyskom@lysator.liu.se. */ /* * This function retrieves the real user that owns the TCP/IP link * that is connecting via the IscSession "scb". The returned string * points to static data which is overwritten on the next call. * * Link with "-lauthuser". */ #include #include "isc-interface.h" #include #include "rfc931.h" #include #include #include "log.h" #ifdef RFC_931 char * get_real_username(IscSession *scb, char *hostname) { unsigned long inlocal; unsigned long inremote; unsigned short local; unsigned short remote; char *result; time_t before, after; if (auth_fd2(scb->fd, &inlocal, &inremote, &local, &remote) == -1) return NULL; time(&before); result = auth_tcpuser3(inlocal, inremote, local, remote, 20); if (result == NULL && errno == ETIMEDOUT) log ("Identd request to %s timed out.\n", hostname); else { time(&after); if (difftime(after, before) > 3) log ("Identd at %s said %s after %d seconds.\n", hostname, result == NULL ? "(error)" : result, (int)difftime(after, before)); } return result; } #endif