// $Id$ // // Copyright (c) 1996-2004 // The Regents of the University of California. All rights reserved. // // Redistribution and use in source and binary forms, with or without // modification, are permitted provided that: (1) source code distributions // retain the above copyright notice and this paragraph in its entirety, (2) // distributions including binary code include the above copyright notice and // this paragraph in its entirety in the documentation or other materials // provided with the distribution, and (3) all advertising materials mentioning // features or use of this software display the following acknowledgement: // ``This product includes software developed by the University of California, // Lawrence Berkeley Laboratory and its contributors.'' Neither the name of // the University nor the names of its contributors may be used to endorse // or promote products derived from this software without specific prior // written permission. // THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR IMPLIED // WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF // MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. #ifndef socks_h #define socks_h // SOCKS v4 analyzer. #include "TCP.h" #include "PIA.h" namespace binpac { namespace SOCKS { class SOCKS_Conn; } } class SOCKS_Analyzer : public TCP_ApplicationAnalyzer { public: SOCKS_Analyzer(Connection* conn); ~SOCKS_Analyzer(); void EndpointDone(bool orig); virtual void Done(); virtual void DeliverStream(int len, const u_char* data, bool orig); virtual void Undelivered(int seq, int len, bool orig); virtual void EndpointEOF(TCP_Reassembler* endp); static Analyzer* InstantiateAnalyzer(Connection* conn) { return new SOCKS_Analyzer(conn); } static bool Available() { return socks_request || socks_reply; } protected: bool orig_done; bool resp_done; PIA_TCP *pia; binpac::SOCKS::SOCKS_Conn* interp; }; #endif