blob: 276ebbfffd9f76d5eaf1e7b843498b767a069564 [file] [log] [blame]
///*
// * 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.
// */
//package org.apache.dubbo.admin.controller;
//
//import org.apache.dubbo.common.logger.Logger;
//import org.apache.dubbo.common.logger.LoggerFactory;
//import org.apache.commons.lang3.StringUtils;
//import org.apache.dubbo.admin.common.exception.ParamValidationException;
//import org.apache.dubbo.admin.common.exception.ResourceNotFoundException;
//import org.apache.dubbo.admin.model.dto.AccessDTO;
//import org.apache.dubbo.admin.service.RouteService;
//import org.apache.dubbo.admin.model.domain.ConditionRoute;
//import org.apache.dubbo.admin.common.util.RouteRule;
//import org.springframework.beans.factory.annotation.Autowired;
//import org.springframework.http.HttpStatus;
//import org.springframework.web.bind.annotation.*;
//
//import java.text.ParseException;
//import java.util.*;
//
//@RestController
//@RequestMapping("/api/{env}/rules/access")
//public class AccessesController {
// private static final Logger logger = LoggerFactory.getLogger(AccessesController.class);
//
// private final RouteService routeService;
//
// @Autowired
// public AccessesController(RouteService routeService) {
// this.routeService = routeService;
// }
//
// @RequestMapping(method = RequestMethod.GET)
// public List<AccessDTO> searchAccess(@RequestParam(required = false) String service,
// @RequestParam(required = false) String application,
// @PathVariable String env) throws ParseException {
// List<AccessDTO> result = new ArrayList<>();
// List<ConditionRoute> routes = new ArrayList<>();
// if (StringUtils.isNotBlank(service)) {
// ConditionRoute route = routeService.getBlackwhitelistRouteByService(service.trim());
// if (route != null) {
// routes.add(route);
// }
// } else if (StringUtils.isNotBlank(application)) {
// ConditionRoute route = routeService.getBlackwhitelistRouteByService()
// }
//
// for (ConditionRoute route : routes) {
// // Match WhiteBlackList ConditionRoute
// if (route.getName().endsWith(AccessDTO.KEY_BLACK_WHITE_LIST)) {
// AccessDTO accessDTO = new AccessDTO();
// accessDTO.setId(route.getHash());
// accessDTO.setService(route.getService());
// Map<String, RouteRule.MatchPair> when = RouteRule.parseRule(route.getMatchRule());
// for (String key : when.keySet()) {
// accessDTO.setWhitelist(when.get(key).getUnmatches());
// accessDTO.setBlacklist(when.get(key).getMatches());
// }
// result.add(accessDTO);
// }
// }
// return result;
// }
//
// @RequestMapping(value = "/{id}", method = RequestMethod.GET)
// public AccessDTO detailAccess(@PathVariable String id, @PathVariable String env) throws ParseException {
// ConditionRoute route = routeService.findRoute(id);
// if (route.getName().endsWith(AccessDTO.KEY_BLACK_WHITE_LIST)) {
// AccessDTO accessDTO = new AccessDTO();
// accessDTO.setId(route.getHash());
// accessDTO.setService(route.getService());
// Map<String, RouteRule.MatchPair> when = RouteRule.parseRule(route.getMatchRule());
// for (String key : when.keySet()) {
// accessDTO.setWhitelist(when.get(key).getUnmatches());
// accessDTO.setBlacklist(when.get(key).getMatches());
// }
// return accessDTO;
// } else {
// return null;
// }
// }
//
// @RequestMapping(value = "/{id}", method = RequestMethod.DELETE)
// public void deleteAccess(@PathVariable String id, @PathVariable String env) {
// routeService.deleteRoute(id);
// }
//
// @RequestMapping(method = RequestMethod.POST)
// @ResponseStatus(HttpStatus.CREATED)
// public void createAccess(@RequestBody AccessDTO accessDTO, @PathVariable String env) {
// if (StringUtils.isBlank(accessDTO.getService())) {
// throw new ParamValidationException("Service is required.");
// }
// if (accessDTO.getBlacklist() == null && accessDTO.getWhitelist() == null) {
// throw new ParamValidationException("One of Blacklist/Whitelist is required.");
// }
//
// ConditionRoute route = routeService.getBlackwhitelistRouteByService(accessDTO.getService());
//
// if (route != null) {
// throw new ParamValidationException(accessDTO.getService() + " is existed.");
// }
//
// route = new ConditionRoute();
// route.setService(accessDTO.getService());
// route.setForce(true);
// route.setName(accessDTO.getService() + " " + AccessDTO.KEY_BLACK_WHITE_LIST);
// route.setFilterRule("false");
// route.setEnabled(true);
//
// Map<String, RouteRule.MatchPair> when = new HashMap<>();
// RouteRule.MatchPair matchPair = new RouteRule.MatchPair(new HashSet<>(), new HashSet<>());
// when.put(ConditionRoute.KEY_CONSUMER_HOST, matchPair);
//
// if (accessDTO.getWhitelist() != null) {
// matchPair.getUnmatches().addAll(accessDTO.getWhitelist());
// }
// if (accessDTO.getBlacklist() != null) {
// matchPair.getMatches().addAll(accessDTO.getBlacklist());
// }
//
// StringBuilder sb = new StringBuilder();
// RouteRule.contidionToString(sb, when);
// route.setMatchRule(sb.toString());
// routeService.createRoute(route);
// }
//
// @RequestMapping(value = "/{id}", method = RequestMethod.PUT)
// public void updateAccess(@PathVariable String id, @RequestBody AccessDTO accessDTO, @PathVariable String env) {
// ConditionRoute route = routeService.findRoute(id);
// if (Objects.isNull(route)) {
// throw new ResourceNotFoundException("Unknown ID!");
// }
// Map<String, RouteRule.MatchPair> when = new HashMap<>();
// RouteRule.MatchPair matchPair = new RouteRule.MatchPair(new HashSet<>(), new HashSet<>());
// when.put(ConditionRoute.KEY_CONSUMER_HOST, matchPair);
//
// if (accessDTO.getWhitelist() != null) {
// matchPair.getUnmatches().addAll(accessDTO.getWhitelist());
// }
// if (accessDTO.getBlacklist() != null) {
// matchPair.getMatches().addAll(accessDTO.getBlacklist());
// }
//
// StringBuilder sb = new StringBuilder();
// RouteRule.contidionToString(sb, when);
// route.setMatchRule(sb.toString());
//
// routeService.updateRoute(route);
// }
//}