~drizzle-trunk/drizzle/development

« back to all changes in this revision

Viewing changes to plugin/drizzle_protocol/drizzle_protocol.cc

merged with up to date trunk

Show diffs side-by-side

added added

removed removed

Lines of Context:
31
31
#include <iostream>
32
32
#include <boost/program_options.hpp>
33
33
#include <drizzled/module/option_map.h>
 
34
#include "drizzled/util/tokenize.h"
34
35
#include "drizzle_protocol.h"
35
36
#include "plugin/drizzle_protocol/status_table.h"
36
37
 
43
44
namespace drizzle_protocol
44
45
{
45
46
 
46
 
 
 
47
std::vector<std::string> ClientDrizzleProtocol::drizzle_admin_ip_addresses;
47
48
static port_constraint port;
48
49
static timeout_constraint connect_timeout;
49
50
static timeout_constraint read_timeout;
64
65
  return port;
65
66
}
66
67
 
 
68
void ClientDrizzleProtocol::drizzle_compose_ip_addresses(vector<string> options)
 
69
{
 
70
  for (vector<string>::iterator it= options.begin();
 
71
       it != options.end();
 
72
       ++it)
 
73
  {
 
74
    tokenize(*it, drizzle_admin_ip_addresses, ",", true);
 
75
  }
 
76
}
 
77
 
 
78
bool ClientDrizzleProtocol::isAdminAllowed(void)
 
79
{
 
80
  if (std::find(drizzle_admin_ip_addresses.begin(), drizzle_admin_ip_addresses.end(), session->user()->address()) != drizzle_admin_ip_addresses.end())
 
81
    return true;
 
82
 
 
83
  return false;
 
84
}
 
85
 
 
86
plugin::Client *ListenDrizzleProtocol::getClient(int fd)
 
87
{
 
88
  int new_fd;
 
89
  new_fd= acceptTcp(fd);
 
90
  if (new_fd == -1)
 
91
    return NULL;
 
92
 
 
93
  return new ClientDrizzleProtocol(new_fd, getCounters());
 
94
}
 
95
 
67
96
static int init(drizzled::module::Context &context)
68
97
{  
69
98
  const module::option_map &vm= context.getOptions();
111
140
  context("max-connections",
112
141
          po::value<uint32_t>(&ListenDrizzleProtocol::drizzle_counters->max_connections)->default_value(1000),
113
142
          N_("Maximum simultaneous connections."));
 
143
  context("admin-ip-addresses",
 
144
          po::value<vector<string> >()->composing()->notifier(&ClientDrizzleProtocol::drizzle_compose_ip_addresses),
 
145
          N_("A restrictive IP address list for incoming admin connections."));
114
146
}
115
147
 
116
148
} /* namespace drizzle_protocol */