nis-util
1.0.D108
|
00001 // 00002 // nis-util - NIS Administration Utilities 00003 // Copyright (C) 2002, 2008, 2009, 2012 Peter Miller 00004 // 00005 // This program is free software; you can redistribute it and/or modify 00006 // it under the terms of the GNU General Public License as published by 00007 // the Free Software Foundation; either version 2 of the License, or (at 00008 // your option) any later version. 00009 // 00010 // This program is distributed in the hope that it will be useful, 00011 // but WITHOUT ANY WARRANTY; without even the implied warranty of 00012 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 00013 // General Public License for more details. 00014 // 00015 // You should have received a copy of the GNU General Public License 00016 // along with this program. If not, see <http://www.gnu.org/licenses/>. 00017 // 00018 00019 #ifndef LIB_SPACE_NETGROUP_SLURP_H 00020 #define LIB_SPACE_NETGROUP_SLURP_H 00021 00022 #include <map> 00023 00024 #include <lib/colon/passwd/slurp.h> 00025 #include <lib/space/hosts/slurp.h> 00026 #include <lib/space/netgroup.h> 00027 00032 class space_netgroup_slurp: 00033 public space_netgroup 00034 { 00035 public: 00036 typedef boost::shared_ptr<space_netgroup_slurp> pointer; 00037 00041 virtual ~space_netgroup_slurp(); 00042 00050 static pointer create(const rcstring &filename); 00051 00063 static pointer create(const rcstring &filename, 00064 const space_hosts_slurp::pointer &hosts, 00065 const colon_passwd_slurp::pointer &passwd); 00066 00071 void read_and_process(void); 00072 00078 record::pointer query_by_name(const rcstring &key) const; 00079 00080 typedef std::vector<rcstring> name_list_t; 00081 00089 name_list_t keys_by_name(void) const; 00090 00098 name_list_t keys_by_host(void) const; 00099 00110 name_list_t query_by_host(const rcstring &key) const; 00111 00119 name_list_t keys_by_user(void) const; 00120 00131 name_list_t query_by_user(const rcstring &key) const; 00132 00133 private: 00145 space_netgroup_slurp(const rcstring &filename, 00146 const space_hosts_slurp::pointer &hosts, 00147 const colon_passwd_slurp::pointer &passwd); 00148 00154 space_hosts_slurp::pointer hosts; 00155 00161 colon_passwd_slurp::pointer passwd; 00162 00163 typedef std::map<rcstring, record::pointer> by_name_t; 00164 00169 by_name_t by_name; 00170 00171 typedef std::map<rcstring, name_list_t> by_host_t; 00172 00177 by_host_t by_host; 00178 00179 typedef std::map<rcstring, name_list_t> by_user_t; 00180 00185 by_user_t by_user; 00186 00191 void process(const record::pointer &rp); 00192 00196 space_netgroup_slurp(); 00197 00201 space_netgroup_slurp(const space_netgroup_slurp &rhs); 00202 00206 space_netgroup_slurp &operator=(const space_netgroup_slurp &rhs); 00207 }; 00208 00209 // vim: set ts=8 sw=4 et : 00210 #endif // LIB_SPACE_NETGROUP_SLURP_H