mailfilter  0.8.9
socket.hh
Go to the documentation of this file.
1 // socket.hh - source file for the mailfilter program
2 // Copyright (c) 2003 - 2009 Andreas Bauer <baueran@gmail.com>
3 //
4 // This program is free software; you can redistribute it and/or modify
5 // it under the terms of the GNU General Public License as published by
6 // the Free Software Foundation; either version 2 of the License, or
7 // (at your option) any later version.
8 //
9 // This program is distributed in the hope that it will be useful,
10 // but WITHOUT ANY WARRANTY; without even the implied warranty of
11 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12 // GNU General Public License for more details.
13 //
14 // You should have received a copy of the GNU General Public License
15 // along with this program; if not, write to the Free Software
16 // Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307,
17 // USA.
18 
19 #ifndef SOCKET_HH
20 #define SOCKET_HH
21 
22 #include <string>
23 #include <csignal>
24 
25 #if USE_SSL
26 extern "C"
27 {
28 #include <openssl/ssl.h>
29 #include <openssl/rand.h>
30 #include <openssl/x509_vfy.h>
31 }
32 #endif
33 
34 #include "connection.hh"
35 
36 using namespace std;
37 
38 #ifndef MAX_BYTES
39 #define MAX_BYTES 512
40 #endif
41 
42 class Socket : public Connection
43 {
44 private:
45  int sd; // Socket descriptor.
46  int time_out; // Time out.
47  static void connect_alarm (int); // Alarm handler.
48  string* read_buffer; // Server replies after read ().
49  bool ssl_used; // True if SSL encryption is used.
50  bool use_ssl (void) const;
51  void set_ssl (bool);
52 
53 public:
54  Socket (void);
55  void clear (void);
56  int c_open (const char* host,
57  int port,
58  int time_out,
59  int protocol);
60  int c_close (void) const;
61  int c_write (const char* command);
62  int c_read (bool = false);
63  const string* c_reply (void) const;
64 
65 #if USE_SSL
66  static int verify_callback
67  (int, X509_STORE_CTX*);
68 #endif
69 };
70 
71 #endif
Definition: connection.hh:30
Definition: socket.hh:43