package core.framework.impl.web.management; import core.framework.api.http.ContentType; import core.framework.api.util.Properties; import core.framework.api.web.Controller; import core.framework.api.web.Request; import core.framework.api.web.Response; import java.util.Set; import java.util.TreeSet; /** * @author neo */ public class PropertyController implements Controller { private final Properties properties; public PropertyController(Properties properties) { this.properties = properties; } @Override public Response execute(Request request) throws Exception { ControllerHelper.validateFromLocalNetwork(request.clientIP()); StringBuilder builder = new StringBuilder(); Set<String> keys = new TreeSet<>(properties.keys()); // sort by key for (String key : keys) { builder.append(key); if (mask(key)) { builder.append("=(masked)\n"); } else { builder.append('=').append(properties.get(key).orElse("")).append('\n'); } } return Response.text(builder.toString(), ContentType.TEXT_PLAIN); } private boolean mask(String key) { return key.contains("password") || key.contains("secret"); } }