| /* | |
| * Licensed to the Apache Software Foundation (ASF) under one or more | |
| * contributor license agreements. See the NOTICE file distributed with | |
| * this work for additional information regarding copyright ownership. | |
| * The ASF licenses this file to You under the Apache License, Version 2.0 | |
| * (the "License"); you may not use this file except in compliance with | |
| * the License. You may obtain a copy of the License at | |
| * | |
| * http://www.apache.org/licenses/LICENSE-2.0 | |
| * | |
| * Unless required by applicable law or agreed to in writing, software | |
| * distributed under the License is distributed on an "AS IS" BASIS, | |
| * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | |
| * See the License for the specific language governing permissions and | |
| * limitations under the License. | |
| */ | |
| #include <iostream> | |
| #include <geode/CacheFactory.hpp> | |
| #include <geode/PoolManager.hpp> | |
| #include <geode/RegionFactory.hpp> | |
| #include <geode/RegionShortcut.hpp> | |
| #include <geode/AuthInitialize.hpp> | |
| using namespace apache::geode::client; | |
| constexpr auto SECURITY_USERNAME = "security-username"; | |
| constexpr auto SECURITY_PASSWORD = "security-password"; | |
| class UserPasswordAuthInit : public AuthInitialize { | |
| public: | |
| UserPasswordAuthInit() = default; | |
| ~UserPasswordAuthInit() noexcept override = default; | |
| std::shared_ptr<Properties> getCredentials( | |
| const std::shared_ptr<Properties> &securityprops, | |
| const std::string &) override { | |
| std::shared_ptr<Cacheable> userName; | |
| if (securityprops == nullptr || | |
| (userName = securityprops->find(SECURITY_USERNAME)) == nullptr) { | |
| throw AuthenticationFailedException( | |
| "UserPasswordAuthInit: user name " | |
| "property [SECURITY_USERNAME] not set."); | |
| } | |
| auto credentials = Properties::create(); | |
| credentials->insert(SECURITY_USERNAME, userName->toString().c_str()); | |
| auto passwd = securityprops->find(SECURITY_PASSWORD); | |
| if (passwd == nullptr) { | |
| passwd = CacheableString::create(""); | |
| } | |
| credentials->insert(SECURITY_PASSWORD, passwd->value().c_str()); | |
| return credentials; | |
| } | |
| void close() override { return; } | |
| }; | |
| int main(int argc, char** argv) { | |
| auto config = Properties::create(); | |
| config->insert(SECURITY_USERNAME, "root"); | |
| config->insert(SECURITY_PASSWORD, "root"); | |
| auto cacheFactory = CacheFactory(config); | |
| auto authInitialize = std::make_shared<UserPasswordAuthInit>(); | |
| cacheFactory.set("log-level", "none"); | |
| cacheFactory.setAuthInitialize(authInitialize); | |
| auto cache = cacheFactory.create(); | |
| auto poolFactory = cache.getPoolManager().createFactory(); | |
| poolFactory.addLocator("localhost", 10334); | |
| auto pool = poolFactory.create("pool"); | |
| auto regionFactory = cache.createRegionFactory(RegionShortcut::PROXY); | |
| auto region = regionFactory.setPoolName("pool").create("example_userinfo"); | |
| region->put("rtimmons", "Robert Timmons"); | |
| region->put("scharles", "Sylvia Charles"); | |
| auto user1 = region->get("rtimmons"); | |
| auto user2 = region->get("scharles"); | |
| std::cout << " rtimmons = " | |
| << std::dynamic_pointer_cast<CacheableString>(user1)->value() | |
| << std::endl; | |
| std::cout << " scharles = " | |
| << std::dynamic_pointer_cast<CacheableString>(user2)->value() | |
| << std::endl; | |
| cache.close(); | |
| } |