27 #include <tdeconfig.h> 28 #include <kstaticdeleter.h> 29 #include <kprotocolinfo.h> 30 #include <tdeprotocolmanager.h> 32 #include "slaveconfig.h" 34 using namespace TDEIO;
38 class SlaveConfigProtocol
41 SlaveConfigProtocol() { host.setAutoDelete(
true); }
42 ~SlaveConfigProtocol()
49 TQDict<MetaData> host;
50 TDEConfig *configFile;
53 static void readConfig(TDEConfig *config,
const TQString & group,
MetaData *metaData)
55 *metaData += config->entryMap(group);
58 class SlaveConfigPrivate
61 void readGlobalConfig();
62 SlaveConfigProtocol *readProtocolConfig(
const TQString &_protocol);
63 SlaveConfigProtocol *findProtocolConfig(
const TQString &_protocol);
64 void readConfigProtocolHost(
const TQString &_protocol, SlaveConfigProtocol *scp,
const TQString &host);
67 TQDict<SlaveConfigProtocol> protocol;
70 void SlaveConfigPrivate::readGlobalConfig()
74 TDEConfig *config = KProtocolManager::config();
75 readConfig(TDEGlobal::config(),
"Socks", &global);
77 readConfig(config,
"<default>", &global);
80 SlaveConfigProtocol* SlaveConfigPrivate::readProtocolConfig(
const TQString &_protocol)
82 SlaveConfigProtocol *scp = protocol.find(_protocol);
86 scp =
new SlaveConfigProtocol;
87 scp->configFile =
new TDEConfig(filename,
true,
false);
88 protocol.insert(_protocol, scp);
91 readConfig(scp->configFile,
"<default>", &(scp->global));
95 SlaveConfigProtocol* SlaveConfigPrivate::findProtocolConfig(
const TQString &_protocol)
97 SlaveConfigProtocol *scp = protocol.find(_protocol);
99 scp = readProtocolConfig(_protocol);
103 void SlaveConfigPrivate::readConfigProtocolHost(
const TQString &, SlaveConfigProtocol *scp,
const TQString &host)
106 scp->host.replace(host, metaData);
110 TQString domain = host;
112 if (!domain.contains(
'.'))
115 if (scp->configFile->hasGroup(
"<local>"))
116 readConfig(scp->configFile,
"<local>", metaData);
122 pos = host.findRev(
'.', pos-1);
127 domain = host.mid(pos+1);
129 if (scp->configFile->hasGroup(domain))
130 readConfig(scp->configFile, domain.lower(), metaData);
137 static KStaticDeleter<SlaveConfig> slaveconfigsd;
142 _self = slaveconfigsd.setObject(_self,
new SlaveConfig);
146 SlaveConfig::SlaveConfig()
148 d =
new SlaveConfigPrivate;
149 d->protocol.setAutoDelete(
true);
150 d->readGlobalConfig();
153 SlaveConfig::~SlaveConfig()
160 const TQString &host,
162 const TQString &value )
165 config.insert(key, value);
166 setConfigData(protocol, host, config);
171 if (protocol.isEmpty())
174 SlaveConfigProtocol *scp = d->findProtocolConfig(protocol);
177 scp->global += config;
181 MetaData *hostConfig = scp->host.find(host);
184 d->readConfigProtocolHost(protocol, scp, host);
185 hostConfig = scp->host.find(host);
188 *hostConfig += config;
196 SlaveConfigProtocol *scp = d->findProtocolConfig(protocol);
197 config += scp->global;
200 MetaData *hostConfig = scp->host.find(host);
203 d->readConfigProtocolHost(protocol, scp, host);
204 emit configNeeded(protocol, host);
205 hostConfig = scp->host.find(host);
208 config += *hostConfig;
214 return configData(protocol, host)[key];
220 d->readGlobalConfig();
225 #include "slaveconfig.moc"
A namespace for TDEIO globals.
static TQString config(const TQString &protocol)
Returns the name of the config file associated with the specified protocol.
void reset()
Undo any changes made by calls to setConfigData.
MetaData configData(const TQString &protocol, const TQString &host)
Query slave configuration for slaves of type protocol when dealing with host.
void setConfigData(const TQString &protocol, const TQString &host, const TQString &key, const TQString &value)
Configure slaves of type protocol by setting key to value.