Skip to content
Snippets Groups Projects
Select Git revision
21 results Searching

png.c

Blame
  • rfc931.c 2.37 KiB
    /*
     * $Id: rfc931.c,v 1.14 1994/04/05 08:04:27 ceder Exp $
     * Copyright (C) 1991, 1992, 1993, 1994  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 <errno.h>
    #include <stdio.h>
    #ifdef HAVE_LIBAUTHUSER
    #  include <authuser.h>
    #endif
    #ifdef HAVE_STDARG_H
    #  include <stdarg.h>
    #endif
    #include <sys/types.h>
    #include <sys/socket.h>
    #include <time.h>
    
    #include "log.h"
    #include "isc-interface.h"
    #include "s-string.h"
    #include "misc-types.h"
    #include "kom-types.h"
    #include "param.h"
    
    char *
    get_real_username(IscSession *scb,
    		  char *hostname)
    {
    #ifdef HAVE_LIBAUTHUSER
        unsigned long inlocal;
        unsigned long inremote;
        unsigned short local;
        unsigned short remote;
        char *result;
        time_t before, after;
    
        if (param.authentication_level == 0)
    	return NULL;
    
        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 (after-before > 15)
    	    log ("Identd at %s said %s after %d seconds.\n",
    		 hostname,
    		 result == NULL ? "(error)" :  result,
    		 (int)after-before);
        }
    
        return result;
    #else
        return "unknown";
    #endif
    }