1545d5ecaSDag-Erling Smørgrav /* $OpenBSD: session.h,v 1.17 2002/03/29 18:59:32 markus Exp $ */ 21e8db6e2SBrian Feldman 3b66f2d16SKris Kennaway /* 4ae1f160dSDag-Erling Smørgrav * Copyright (c) 2000, 2001 Markus Friedl. All rights reserved. 5b66f2d16SKris Kennaway * 6b66f2d16SKris Kennaway * Redistribution and use in source and binary forms, with or without 7b66f2d16SKris Kennaway * modification, are permitted provided that the following conditions 8b66f2d16SKris Kennaway * are met: 9b66f2d16SKris Kennaway * 1. Redistributions of source code must retain the above copyright 10b66f2d16SKris Kennaway * notice, this list of conditions and the following disclaimer. 11b66f2d16SKris Kennaway * 2. Redistributions in binary form must reproduce the above copyright 12b66f2d16SKris Kennaway * notice, this list of conditions and the following disclaimer in the 13b66f2d16SKris Kennaway * documentation and/or other materials provided with the distribution. 14b66f2d16SKris Kennaway * 15b66f2d16SKris Kennaway * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR 16b66f2d16SKris Kennaway * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES 17b66f2d16SKris Kennaway * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. 18b66f2d16SKris Kennaway * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, 19b66f2d16SKris Kennaway * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT 20b66f2d16SKris Kennaway * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 21b66f2d16SKris Kennaway * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 22b66f2d16SKris Kennaway * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 23b66f2d16SKris Kennaway * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF 24b66f2d16SKris Kennaway * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 25b66f2d16SKris Kennaway */ 26a04a10f8SKris Kennaway #ifndef SESSION_H 27a04a10f8SKris Kennaway #define SESSION_H 28a04a10f8SKris Kennaway 29545d5ecaSDag-Erling Smørgrav #define TTYSZ 64 30545d5ecaSDag-Erling Smørgrav typedef struct Session Session; 31545d5ecaSDag-Erling Smørgrav struct Session { 32545d5ecaSDag-Erling Smørgrav int used; 33545d5ecaSDag-Erling Smørgrav int self; 34545d5ecaSDag-Erling Smørgrav struct passwd *pw; 35545d5ecaSDag-Erling Smørgrav Authctxt *authctxt; 36545d5ecaSDag-Erling Smørgrav pid_t pid; 37545d5ecaSDag-Erling Smørgrav /* tty */ 38545d5ecaSDag-Erling Smørgrav char *term; 39545d5ecaSDag-Erling Smørgrav int ptyfd, ttyfd, ptymaster; 40545d5ecaSDag-Erling Smørgrav int row, col, xpixel, ypixel; 41545d5ecaSDag-Erling Smørgrav char tty[TTYSZ]; 42545d5ecaSDag-Erling Smørgrav /* last login */ 43545d5ecaSDag-Erling Smørgrav char hostname[MAXHOSTNAMELEN]; 44545d5ecaSDag-Erling Smørgrav time_t last_login_time; 45545d5ecaSDag-Erling Smørgrav /* X11 */ 46545d5ecaSDag-Erling Smørgrav int display_number; 47545d5ecaSDag-Erling Smørgrav char *display; 48545d5ecaSDag-Erling Smørgrav int screen; 49545d5ecaSDag-Erling Smørgrav char *auth_display; 50545d5ecaSDag-Erling Smørgrav char *auth_proto; 51545d5ecaSDag-Erling Smørgrav char *auth_data; 52545d5ecaSDag-Erling Smørgrav int single_connection; 53545d5ecaSDag-Erling Smørgrav /* proto 2 */ 54545d5ecaSDag-Erling Smørgrav int chanid; 55545d5ecaSDag-Erling Smørgrav int is_subsystem; 56545d5ecaSDag-Erling Smørgrav }; 57545d5ecaSDag-Erling Smørgrav 58ae1f160dSDag-Erling Smørgrav void do_authenticated(Authctxt *); 59a04a10f8SKris Kennaway 60ae1f160dSDag-Erling Smørgrav int session_open(Authctxt*, int); 61ae1f160dSDag-Erling Smørgrav int session_input_channel_req(Channel *, const char *); 62ae1f160dSDag-Erling Smørgrav void session_close_by_pid(pid_t, int); 63ae1f160dSDag-Erling Smørgrav void session_close_by_channel(int, void *); 64545d5ecaSDag-Erling Smørgrav void session_destroy_all(void (*)(Session *)); 65545d5ecaSDag-Erling Smørgrav void session_pty_cleanup2(void *); 66a04a10f8SKris Kennaway 67545d5ecaSDag-Erling Smørgrav Session *session_new(void); 68545d5ecaSDag-Erling Smørgrav Session *session_by_tty(char *); 69545d5ecaSDag-Erling Smørgrav void session_close(Session *); 70545d5ecaSDag-Erling Smørgrav void do_setusercontext(struct passwd *); 71a04a10f8SKris Kennaway #endif 72