MagicWorkbenchController.java 2.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859
  1. package org.ssssssss.magicapi.controller;
  2. import org.springframework.http.HttpHeaders;
  3. import org.springframework.web.bind.annotation.RequestMapping;
  4. import org.springframework.web.bind.annotation.ResponseBody;
  5. import org.springframework.web.servlet.mvc.method.annotation.SseEmitter;
  6. import org.ssssssss.magicapi.config.MagicConfiguration;
  7. import org.ssssssss.magicapi.logging.MagicLoggerContext;
  8. import org.ssssssss.magicapi.model.JsonBean;
  9. import org.ssssssss.magicapi.model.Options;
  10. import org.ssssssss.magicapi.utils.MD5Utils;
  11. import javax.servlet.http.HttpServletRequest;
  12. import javax.servlet.http.HttpServletResponse;
  13. import java.io.IOException;
  14. import java.util.*;
  15. import java.util.stream.Collectors;
  16. import java.util.stream.Stream;
  17. public class MagicWorkbenchController extends MagicController {
  18. public MagicWorkbenchController(MagicConfiguration configuration) {
  19. super(configuration);
  20. }
  21. /**
  22. * 登录
  23. */
  24. @RequestMapping("/login")
  25. @ResponseBody
  26. public JsonBean<Boolean> login(String username, String password, HttpServletRequest request, HttpServletResponse response) {
  27. if (username != null && password != null && Objects.equals(username, configuration.getUsername()) && Objects.equals(password, configuration.getPassword())) {
  28. response.setHeader(configuration.getTokenKey(),MD5Utils.encrypt(String.format("%s||%s", username, password)));
  29. response.setHeader(HttpHeaders.ACCESS_CONTROL_EXPOSE_HEADERS, configuration.getTokenKey());
  30. return new JsonBean<>(true);
  31. } else if (allowVisit(request, null)) {
  32. return new JsonBean<>(true);
  33. }
  34. return new JsonBean<>(false);
  35. }
  36. /**
  37. * 创建控制台输出
  38. */
  39. @RequestMapping("/console")
  40. public SseEmitter console() throws IOException {
  41. String sessionId = UUID.randomUUID().toString().replace("-", "");
  42. SseEmitter emitter = MagicLoggerContext.createEmitter(sessionId);
  43. emitter.send(SseEmitter.event().data(sessionId).name("create"));
  44. return emitter;
  45. }
  46. @RequestMapping("/options")
  47. @ResponseBody
  48. public JsonBean<List<Map<String, String>>> options() {
  49. return new JsonBean<>(Stream.of(Options.values()).map(item -> Collections.singletonMap(item.getValue(), item.getName())).collect(Collectors.toList()));
  50. }
  51. }