1 /* 2 * Copyright (C) 1996-2021 The Squid Software Foundation and contributors 3 * 4 * Squid software is distributed under GPLv2+ license and includes 5 * contributions from numerous individuals and organizations. 6 * Please see the COPYING and CONTRIBUTORS files for details. 7 */ 8 9 #ifndef _SQUID_SRC_AUTH_NEGOTIATE_USERREQUEST_H 10 #define _SQUID_SRC_AUTH_NEGOTIATE_USERREQUEST_H 11 12 #if HAVE_AUTH_MODULE_NEGOTIATE 13 14 #include "auth/UserRequest.h" 15 #include "helper/forward.h" 16 17 class ConnStateData; 18 class HttpReply; 19 class HttpRequest; 20 21 namespace Auth 22 { 23 namespace Negotiate 24 { 25 26 /// \ingroup AuthNegotiateAPI 27 class UserRequest : public Auth::UserRequest 28 { 29 MEMPROXY_CLASS(Auth::Negotiate::UserRequest); 30 31 public: 32 UserRequest(); 33 virtual ~UserRequest(); 34 virtual int authenticated() const; 35 virtual void authenticate(HttpRequest * request, ConnStateData * conn, Http::HdrType type); 36 virtual Direction module_direction(); 37 virtual void startHelperLookup(HttpRequest *request, AccessLogEntry::Pointer &al, AUTHCB *, void *); 38 virtual const char *credentialsStr(); 39 40 virtual const char * connLastHeader(); 41 42 /* we need to store the helper server between requests */ 43 helper_stateful_server *authserver; 44 void releaseAuthServer(void); ///< Release the authserver helper server properly. 45 46 /* what connection is this associated with */ 47 /* ConnStateData * conn;*/ 48 49 /* our current blob to pass to the client */ 50 char *server_blob; 51 /* our current blob to pass to the server */ 52 char *client_blob; 53 54 /* currently waiting for helper response */ 55 unsigned char waiting; 56 57 /* need access to the request flags to mess around on pconn failure */ 58 HttpRequest *request; 59 60 private: 61 static HLPCB HandleReply; 62 }; 63 64 } // namespace Negotiate 65 } // namespace Auth 66 67 #endif /* HAVE_AUTH_MODULE_NEGOTIATE */ 68 #endif /* _SQUID_SRC_AUTH_NEGOTIATE_USERREQUEST_H */ 69 70