WvStreams
wvstreamsdebuggerserver.h
1 /* -*- Mode: C++ -*-
2  * Worldvisions Weaver Software:
3  * Copyright (C) 1997-2002 Net Integration Technologies, Inc.
4  *
5  * A server stream for WvStreamsDebugger connections
6  */
7 #ifndef __WVSTREAMSDEBUGGERSERVER_H
8 #define __WVSTREAMSDEBUGGERSERVER_H
9 
10 #include "wvstream.h"
11 #include "wvstreamclone.h"
12 #include "wvaddr.h"
13 #include "wvistreamlist.h"
14 #include "wvstreamsdebugger.h"
15 #include "wvlog.h"
16 
17 class WvUnixAddr;
18 class WvUnixListener;
19 class WvTCPListener;
20 
22 {
23  struct Connection : public WvStreamClone
24  {
25  WvStreamsDebugger debugger;
26  WvString salt;
27 
28  Connection(IWvStream *s);
29 
30  void result_cb(WvStringParm cmd, WvStringList &results);
31 
32  void send(WvStringParm code, WvStringParm result);
33  void send(WvStringParm code, WvStringList &results);
34 
35  void choose_salt();
36  };
37  // Username, salt, md5sum("%s%s", salt, password)
38  typedef wv::function<bool(WvStringParm, WvStringParm, WvStringParm)> AuthCallback;
39 
40  WvLog log;
41 
42  WvUnixListener *unix_listener;
43  void unix_listener_cb(IWvStream *s);
44  void unix_listener_close_cb();
45 
46  WvTCPListener *tcp_listener;
47  void tcp_listener_cb(IWvStream *s);
48  void tcp_listener_close_cb();
49 
50  AuthCallback auth_cb;
51 
52  void auth_request_cb(Connection &s);
53  void auth_response_cb(Connection &s);
54  void ready_cb(Connection &s);
55 
56  WvIStreamList streams;
57 
58 public:
59  WvStreamsDebuggerServer(const WvUnixAddr &unix_addr,
60  AuthCallback _auth_cb = AuthCallback(),
61  const WvIPPortAddr &tcp_addr = WvIPPortAddr());
63 
64  void set_auth_callback(AuthCallback _auth_cb)
65  { auth_cb = _auth_cb; }
66 };
67 
68 #endif // __WVSTREAMSDEBUGGERSERVER_H