Browse Source

加入 layui 作为前端页面

reghao 5 years ago
parent
commit
acc401bfa4
100 changed files with 316 additions and 418 deletions
  1. 14 1
      common/src/main/java/cn/reghao/autodop/common/utils/DateTimeUtil.java
  2. 0 1
      common/src/main/java/cn/reghao/autodop/common/utils/JsonUtil.java
  3. 0 1
      common/src/main/java/cn/reghao/autodop/common/utils/text/TextFile.java
  4. 10 4
      dagent/src/main/java/cn/reghao/autodop/dagent/service/DockerAppServiceImpl.java
  5. 2 0
      dagent/src/main/java/cn/reghao/autodop/dagent/service/MachineStatusScheduler.java
  6. 1 1
      dagent/src/main/resources/application-test.yml
  7. 30 0
      dagent/src/main/resources/banner.txt
  8. 19 6
      dmaster/pom.xml
  9. 1 0
      dmaster/src/main/java/cn/reghao/autodop/dmaster/app/service/build/AppBuildPipeline.java
  10. 1 1
      dmaster/src/main/java/cn/reghao/autodop/dmaster/auth/config/WebSecurityConfig.java
  11. 7 10
      dmaster/src/main/java/cn/reghao/autodop/dmaster/config/WebMvcConfig.java
  12. 3 2
      dmaster/src/main/java/cn/reghao/autodop/dmaster/controller/IndexController.java
  13. 1 1
      dmaster/src/main/java/cn/reghao/autodop/dmaster/exception/WebErrorController.java
  14. 1 0
      dmaster/src/main/java/cn/reghao/autodop/dmaster/result/WebResult.java
  15. 3 2
      dmaster/src/main/java/cn/reghao/autodop/dmaster/utils/Md5Encrypt.java
  16. 39 0
      dmaster/src/main/java/cn/reghao/autodop/dmaster/view/controller/AuthController.java
  17. 24 0
      dmaster/src/main/java/cn/reghao/autodop/dmaster/view/controller/DataController.java
  18. 28 0
      dmaster/src/main/java/cn/reghao/autodop/dmaster/view/controller/ErrorPageController.java
  19. 18 0
      dmaster/src/main/java/cn/reghao/autodop/dmaster/view/controller/SysController.java
  20. 35 0
      dmaster/src/main/java/cn/reghao/autodop/dmaster/view/controller/ViewController.java
  21. 23 0
      dmaster/src/main/java/cn/reghao/autodop/dmaster/view/pojo/Menu.java
  22. 25 0
      dmaster/src/main/java/cn/reghao/autodop/dmaster/view/pojo/SideBar.java
  23. 0 50
      dmaster/src/main/resources/static/css/index.css
  24. BIN
      dmaster/src/main/resources/static/favicon.ico
  25. 0 283
      dmaster/src/main/resources/static/html/webshell.html
  26. BIN
      dmaster/src/main/resources/static/imgs/1.jpg
  27. 0 55
      dmaster/src/main/resources/static/js/dingding.js
  28. 1 0
      dmaster/src/main/resources/static/layui/css/layui.css
  29. 1 0
      dmaster/src/main/resources/static/layui/css/layui.mobile.css
  30. 2 0
      dmaster/src/main/resources/static/layui/css/modules/code.css
  31. 1 0
      dmaster/src/main/resources/static/layui/css/modules/laydate/default/laydate.css
  32. BIN
      dmaster/src/main/resources/static/layui/css/modules/layer/default/icon-ext.png
  33. BIN
      dmaster/src/main/resources/static/layui/css/modules/layer/default/icon.png
  34. 1 0
      dmaster/src/main/resources/static/layui/css/modules/layer/default/layer.css
  35. BIN
      dmaster/src/main/resources/static/layui/css/modules/layer/default/loading-0.gif
  36. BIN
      dmaster/src/main/resources/static/layui/css/modules/layer/default/loading-1.gif
  37. BIN
      dmaster/src/main/resources/static/layui/css/modules/layer/default/loading-2.gif
  38. BIN
      dmaster/src/main/resources/static/layui/font/iconfont.eot
  39. 25 0
      dmaster/src/main/resources/static/layui/font/iconfont.svg
  40. BIN
      dmaster/src/main/resources/static/layui/font/iconfont.ttf
  41. BIN
      dmaster/src/main/resources/static/layui/font/iconfont.woff
  42. BIN
      dmaster/src/main/resources/static/layui/font/iconfont.woff2
  43. BIN
      dmaster/src/main/resources/static/layui/images/face/0.gif
  44. BIN
      dmaster/src/main/resources/static/layui/images/face/1.gif
  45. BIN
      dmaster/src/main/resources/static/layui/images/face/10.gif
  46. BIN
      dmaster/src/main/resources/static/layui/images/face/11.gif
  47. BIN
      dmaster/src/main/resources/static/layui/images/face/12.gif
  48. BIN
      dmaster/src/main/resources/static/layui/images/face/13.gif
  49. BIN
      dmaster/src/main/resources/static/layui/images/face/14.gif
  50. BIN
      dmaster/src/main/resources/static/layui/images/face/15.gif
  51. BIN
      dmaster/src/main/resources/static/layui/images/face/16.gif
  52. BIN
      dmaster/src/main/resources/static/layui/images/face/17.gif
  53. BIN
      dmaster/src/main/resources/static/layui/images/face/18.gif
  54. BIN
      dmaster/src/main/resources/static/layui/images/face/19.gif
  55. BIN
      dmaster/src/main/resources/static/layui/images/face/2.gif
  56. BIN
      dmaster/src/main/resources/static/layui/images/face/20.gif
  57. BIN
      dmaster/src/main/resources/static/layui/images/face/21.gif
  58. BIN
      dmaster/src/main/resources/static/layui/images/face/22.gif
  59. BIN
      dmaster/src/main/resources/static/layui/images/face/23.gif
  60. BIN
      dmaster/src/main/resources/static/layui/images/face/24.gif
  61. BIN
      dmaster/src/main/resources/static/layui/images/face/25.gif
  62. BIN
      dmaster/src/main/resources/static/layui/images/face/26.gif
  63. BIN
      dmaster/src/main/resources/static/layui/images/face/27.gif
  64. BIN
      dmaster/src/main/resources/static/layui/images/face/28.gif
  65. BIN
      dmaster/src/main/resources/static/layui/images/face/29.gif
  66. BIN
      dmaster/src/main/resources/static/layui/images/face/3.gif
  67. BIN
      dmaster/src/main/resources/static/layui/images/face/30.gif
  68. BIN
      dmaster/src/main/resources/static/layui/images/face/31.gif
  69. BIN
      dmaster/src/main/resources/static/layui/images/face/32.gif
  70. BIN
      dmaster/src/main/resources/static/layui/images/face/33.gif
  71. BIN
      dmaster/src/main/resources/static/layui/images/face/34.gif
  72. BIN
      dmaster/src/main/resources/static/layui/images/face/35.gif
  73. BIN
      dmaster/src/main/resources/static/layui/images/face/36.gif
  74. BIN
      dmaster/src/main/resources/static/layui/images/face/37.gif
  75. BIN
      dmaster/src/main/resources/static/layui/images/face/38.gif
  76. BIN
      dmaster/src/main/resources/static/layui/images/face/39.gif
  77. BIN
      dmaster/src/main/resources/static/layui/images/face/4.gif
  78. BIN
      dmaster/src/main/resources/static/layui/images/face/40.gif
  79. BIN
      dmaster/src/main/resources/static/layui/images/face/41.gif
  80. BIN
      dmaster/src/main/resources/static/layui/images/face/42.gif
  81. BIN
      dmaster/src/main/resources/static/layui/images/face/43.gif
  82. BIN
      dmaster/src/main/resources/static/layui/images/face/44.gif
  83. BIN
      dmaster/src/main/resources/static/layui/images/face/45.gif
  84. BIN
      dmaster/src/main/resources/static/layui/images/face/46.gif
  85. BIN
      dmaster/src/main/resources/static/layui/images/face/47.gif
  86. BIN
      dmaster/src/main/resources/static/layui/images/face/48.gif
  87. BIN
      dmaster/src/main/resources/static/layui/images/face/49.gif
  88. BIN
      dmaster/src/main/resources/static/layui/images/face/5.gif
  89. BIN
      dmaster/src/main/resources/static/layui/images/face/50.gif
  90. BIN
      dmaster/src/main/resources/static/layui/images/face/51.gif
  91. BIN
      dmaster/src/main/resources/static/layui/images/face/52.gif
  92. BIN
      dmaster/src/main/resources/static/layui/images/face/53.gif
  93. BIN
      dmaster/src/main/resources/static/layui/images/face/54.gif
  94. BIN
      dmaster/src/main/resources/static/layui/images/face/55.gif
  95. BIN
      dmaster/src/main/resources/static/layui/images/face/56.gif
  96. BIN
      dmaster/src/main/resources/static/layui/images/face/57.gif
  97. BIN
      dmaster/src/main/resources/static/layui/images/face/58.gif
  98. BIN
      dmaster/src/main/resources/static/layui/images/face/59.gif
  99. BIN
      dmaster/src/main/resources/static/layui/images/face/6.gif
  100. BIN
      dmaster/src/main/resources/static/layui/images/face/60.gif

+ 14 - 1
common/src/main/java/cn/reghao/autodop/common/utils/DateTimeUtil.java

@@ -10,7 +10,7 @@ import java.time.ZonedDateTime;
  */
 public class DateTimeUtil {
     /**
-     * ms 级时间戳转换为日期时间
+     * 毫秒时间戳转换为日期时间
      *
      * @param
      * @return
@@ -21,4 +21,17 @@ public class DateTimeUtil {
         ZonedDateTime dateTime = instant.atZone(ZoneId.of("Asia/Shanghai"));
         return dateTime.toLocalDateTime().toString();
     }
+
+    /**
+     * 秒时间戳转换为日期时间
+     *
+     * @param
+     * @return
+     * @date 2020-03-20 上午10:20
+     */
+    public static String timestamp(long timestamp) {
+        Instant instant = Instant.ofEpochMilli(timestamp);
+        ZonedDateTime dateTime = instant.atZone(ZoneId.of("Asia/Shanghai"));
+        return dateTime.toLocalDateTime().toString();
+    }
 }

+ 0 - 1
common/src/main/java/cn/reghao/autodop/common/utils/JsonUtil.java

@@ -1,7 +1,6 @@
 package cn.reghao.autodop.common.utils;
 
 import com.google.gson.*;
-import com.google.gson.stream.JsonReader;
 import org.apache.commons.io.FileUtils;
 
 import java.io.File;

+ 0 - 1
common/src/main/java/cn/reghao/autodop/common/utils/text/TextFile.java

@@ -1,7 +1,6 @@
 package cn.reghao.autodop.common.utils.text;
 
 import lombok.extern.slf4j.Slf4j;
-import org.apache.commons.io.FileUtils;
 
 import java.io.*;
 import java.util.*;

+ 10 - 4
dagent/src/main/java/cn/reghao/autodop/dagent/service/DockerAppServiceImpl.java

@@ -18,35 +18,41 @@ import java.util.List;
 @Slf4j
 @Service
 public class DockerAppServiceImpl implements AppService {
-    private DockerClient docker = new DockerClient();
-
     @Override
     public void run(String appId, String version) throws DockerException {
-
         log.info("运行 {} 应用的 {} 版本", appId, version);
     }
 
     @Override
     public void start(String app) throws DockerException {
+        DockerClient docker = new DockerClient();
         String containerId = docker.getIdByName(app);
         docker.start(containerId);
+        docker.close();
     }
 
     @Override
     public void stop(String app) throws DockerException {
+        DockerClient docker = new DockerClient();
         String containerId = docker.getIdByName(app);
         docker.stop(containerId);
+        docker.close();
     }
 
     @Override
     public void restart(String app) throws DockerException {
+        DockerClient docker = new DockerClient();
         String containerId = docker.getIdByName(app);
         docker.restart(containerId);
+        docker.close();
     }
 
     @Override
     public List<String> log(String app) throws DockerException, IOException {
+        DockerClient docker = new DockerClient();
         String containerId = docker.getIdByName(app);
-        return docker.logs(containerId, 0);
+        List<String> logs = docker.logs(containerId, 0);
+        docker.close();;
+        return logs;
     }
 }

+ 2 - 0
dagent/src/main/java/cn/reghao/autodop/dagent/service/MachineStatusScheduler.java

@@ -21,6 +21,8 @@ import org.springframework.stereotype.Component;
 import java.util.List;
 
 /**
+ * TODO 定时任务消耗过高 CPU 资源
+ *
  * @author reghao
  * @date 2020-03-20 17:04:48
  */

+ 1 - 1
dagent/src/main/resources/application-test.yml

@@ -1,4 +1,4 @@
 dmaster:
-  address: 192.168.0.50
+  address: 192.168.0.222
   port: 4000
   api: /api/machine/status

+ 30 - 0
dagent/src/main/resources/banner.txt

@@ -0,0 +1,30 @@
+<!--
+
+                              _.._        ,------------.
+                           ,'      `.    (I want you! )
+                          /  __) __` \    `-,----------'
+                         (  (`-`(-')  ) _.-'
+                         /)  \  = /  (
+                        /'    |--' .  \
+                       (  ,---|  `-.)__`
+                        )(  `-.,--'   _`-.
+                       '/,'          (  Uu",
+                        (_       ,    `/,-' )
+                        `.__,  : `-'/  /`--'
+                          |     `--'  |
+                          `   `-._   /
+                           \        (
+                           /\ .      \.
+                          / |` \     ,-\
+                         /  \| .)   /   \
+                        ( ,'|\    ,'     :
+                        | \,`.`--"/      }
+                        `,'    \  |,'    /
+                       / "-._   `-/      |
+                       "-.   "-.,'|     ;
+                      /        _/["---'""]
+                     :        /  |"-     '
+                     '           |      /
+                                 `      |
+
+-->

+ 19 - 6
dmaster/pom.xml

@@ -12,9 +12,6 @@
     <artifactId>dmaster</artifactId>
 
     <properties>
-        <projOrchestration.build.sourceEncoding>utf-8</projOrchestration.build.sourceEncoding>
-        <projOrchestration.reporting.outputEncoding>utf-8</projOrchestration.reporting.outputEncoding>
-        <java.version>1.8</java.version>
         <grpc.version>1.6.1</grpc.version>
         <protobuf.version>3.3.0</protobuf.version>
     </properties>
@@ -31,6 +28,13 @@
             <artifactId>spring-boot-starter-web</artifactId>
         </dependency>
 
+        <dependency>
+            <groupId>org.springframework.boot</groupId>
+            <artifactId>spring-boot-devtools</artifactId>
+            <optional>true</optional>
+            <scope>true</scope>
+        </dependency>
+
         <dependency>
             <groupId>mysql</groupId>
             <artifactId>mysql-connector-java</artifactId>
@@ -85,7 +89,7 @@
             <artifactId>spring-data-mongodb</artifactId>
         </dependency>-->
 
-        <!--<dependency>
+        <dependency>
             <groupId>org.springframework.boot</groupId>
             <artifactId>spring-boot-starter-thymeleaf</artifactId>
         </dependency>
@@ -93,7 +97,7 @@
             <groupId>org.thymeleaf.extras</groupId>
             <artifactId>thymeleaf-extras-springsecurity5</artifactId>
             <version>RELEASE</version>
-        </dependency>-->
+        </dependency>
 
         <dependency>
             <groupId>cglib</groupId>
@@ -164,9 +168,18 @@
                 <directory>src/main/resources</directory>
                 <filtering>true</filtering>
                 <excludes>
-                    <exclude>*</exclude>
+                    <exclude>static/layuix/font/**</exclude>
+                    <exclude>static/layui/font/**</exclude>
                 </excludes>
             </resource>
+            <resource>
+                <directory>src/main/resources</directory>
+                <filtering>false</filtering>
+                <includes>
+                    <include>static/layuix/font/**</include>
+                    <include>static/layui/font/**</include>
+                </includes>
+            </resource>
             <resource>
                 <directory>src/main/resources</directory>
                 <filtering>true</filtering>

+ 1 - 0
dmaster/src/main/java/cn/reghao/autodop/dmaster/app/service/build/AppBuildPipeline.java

@@ -79,6 +79,7 @@ public class AppBuildPipeline implements Callable<String> {
             if (appIntegrate.needPreCompile()) {
                 appIntegrate.preCompile(appEntryDir);
             }
+            // TODO 在通过脚本调用编译器时会卡住
             appIntegrate.compile(appEntryDir);
         } catch (Exception e) {
             e.printStackTrace();

+ 1 - 1
dmaster/src/main/java/cn/reghao/autodop/dmaster/auth/config/WebSecurityConfig.java

@@ -72,7 +72,7 @@ public class WebSecurityConfig extends WebSecurityConfigurerAdapter {
                 .loginPage("/signin")
                 .and()
                 .logout()
-                .logoutSuccessUrl("/")
+                .logoutSuccessUrl("/login")
                 .and()
                 .httpBasic().disable();
 

+ 7 - 10
dmaster/src/main/java/cn/reghao/autodop/dmaster/config/WebMvcConfig.java

@@ -6,7 +6,6 @@ import org.springframework.http.converter.HttpMessageConverter;
 import org.springframework.http.converter.StringHttpMessageConverter;
 import org.springframework.web.servlet.config.annotation.*;
 
-import java.nio.charset.Charset;
 import java.nio.charset.StandardCharsets;
 import java.util.List;
 
@@ -28,10 +27,8 @@ public class WebMvcConfig implements WebMvcConfigurer {
      */
     @Override
     public void addViewControllers(ViewControllerRegistry registry) {
-        registry.addViewController("/").setViewName("public/index");
-        registry.addViewController("/signin").setViewName("public/signin");
-        registry.addViewController("/auth").setViewName("public/auth");
-        registry.addViewController("/deny").setViewName("public/deny");
+        /*registry.addViewController("/").setViewName("index");
+        registry.addViewController("/login").setViewName("views/login");*/
     }
 
     /**
@@ -43,11 +40,11 @@ public class WebMvcConfig implements WebMvcConfigurer {
      */
     @Override
     public void addResourceHandlers(ResourceHandlerRegistry registry) {
-        registry.addResourceHandler("/js/**").addResourceLocations("classpath:/static/js/");
-        registry.addResourceHandler("/css/**").addResourceLocations("classpath:/static/css/");
-        registry.addResourceHandler("/imgs/**").addResourceLocations("classpath:/static/imgs/");
-        registry.addResourceHandler("/html/**").addResourceLocations("classpath:/static/html/");
-        registry.addResourceHandler("/assets/**").addResourceLocations("classpath:/templates/assets/");
+        registry.addResourceHandler("/layui/**").addResourceLocations("classpath:/static/layui/");
+        registry.addResourceHandler("/layuix/**").addResourceLocations("classpath:/static/layuix/");
+
+        /*registry.addResourceHandler("/imgs/**").addResourceLocations("classpath:/static/imgs/");
+        registry.addResourceHandler("/layuix/**").addResourceLocations("classpath:/static/layuix/");*/
     }
 
     /**

+ 3 - 2
dmaster/src/main/java/cn/reghao/autodop/dmaster/controller/IndexController.java

@@ -1,14 +1,15 @@
 package cn.reghao.autodop.dmaster.controller;
 
 import io.swagger.annotations.Api;
+import org.springframework.stereotype.Controller;
 import org.springframework.web.bind.annotation.*;
 
 /**
  * @author reghao
  * @date 2019-08-26 23:57:41
  */
-@Api(tags = "健康检查")
-@RestController
+@Api(tags = "状态")
+@Controller
 public class IndexController {
     @GetMapping("/status")
     public String status() {

+ 1 - 1
dmaster/src/main/java/cn/reghao/autodop/dmaster/exception/WebErrorController.java

@@ -15,7 +15,7 @@ import javax.servlet.http.HttpServletRequest;
  * @date 2019/03/21 10:17:05
  */
 @Slf4j
-@RestController
+//@RestController
 public class WebErrorController implements ErrorController {
     public WebErrorController() {
     }

+ 1 - 0
dmaster/src/main/java/cn/reghao/autodop/dmaster/result/WebResult.java

@@ -32,6 +32,7 @@ public class WebResult<T> {
     }
 
     public String jsonResult(T result) {
+        this.code = 200;
         this.setTimestamp((new SimpleDateFormat("yyyy-MM-dd HH:mm:ss")).format(new Date()));
         this.setResult(result);
         return (new Gson()).toJson(this);

+ 3 - 2
dmaster/src/main/java/cn/reghao/autodop/dmaster/utils/Md5Encrypt.java

@@ -2,6 +2,7 @@ package cn.reghao.autodop.dmaster.utils;
 
 import cn.reghao.autodop.dmaster.utils.encrypt.EncryptString;
 import org.springframework.security.crypto.password.PasswordEncoder;
+//import org.springframework.security.crypto.password.PasswordEncoder;
 
 import java.security.MessageDigest;
 import java.security.NoSuchAlgorithmException;
@@ -44,9 +45,9 @@ public class Md5Encrypt implements PasswordEncoder {
             byte[] bytes = md.digest(str.getBytes());
             StringBuilder sb = new StringBuilder();
 
-            /*for (int i : bytes) {
+            for (int i : bytes) {
                 sb.append(Integer.toString((bytes[i] & 0xff) + 0x100, 16).substring(1));
-            }*/
+            }
 
             for (int i = 0; i < bytes.length; i++) {
                 sb.append(Integer.toString((bytes[i] & 0xff) + 0x100, 16).substring(1));

+ 39 - 0
dmaster/src/main/java/cn/reghao/autodop/dmaster/view/controller/AuthController.java

@@ -0,0 +1,39 @@
+package cn.reghao.autodop.dmaster.view.controller;
+
+import cn.reghao.autodop.dmaster.result.WebResult;
+import lombok.Data;
+import org.springframework.http.ResponseEntity;
+import org.springframework.stereotype.Controller;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.ResponseBody;
+
+/**
+ * @author reghao
+ * @date 2019-08-26 23:57:41
+ */
+@Controller
+public class AuthController {
+    @GetMapping("/login")
+    public String login() {
+        return "login";
+    }
+
+    @GetMapping("/logout")
+    public String logout() {
+        return "login";
+    }
+
+    @PostMapping("/login")
+    @ResponseBody
+    public ResponseEntity<String> login1(UserAuth userAuth) {
+        String webResult = new WebResult<>().jsonResult("ok");
+        return ResponseEntity.ok().body(webResult);
+    }
+
+    @Data
+    static class UserAuth {
+        private String username;
+        private String password;
+    }
+}

File diff suppressed because it is too large
+ 24 - 0
dmaster/src/main/java/cn/reghao/autodop/dmaster/view/controller/DataController.java


+ 28 - 0
dmaster/src/main/java/cn/reghao/autodop/dmaster/view/controller/ErrorPageController.java

@@ -0,0 +1,28 @@
+package cn.reghao.autodop.dmaster.view.controller;
+
+import org.springframework.stereotype.Controller;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.RequestMapping;
+
+/**
+ * @author reghao
+ * @date 2020-05-01 22:22:01
+ */
+@Controller
+@RequestMapping("/layuix/views")
+public class ErrorPageController {
+    @GetMapping("/403")
+    public String test403() {
+        return "views/error/403";
+    }
+
+    @GetMapping("/404")
+    public String test404() {
+        return "views/error/404";
+    }
+
+    @GetMapping("/500")
+    public String test500() {
+        return "views/error/500";
+    }
+}

+ 18 - 0
dmaster/src/main/java/cn/reghao/autodop/dmaster/view/controller/SysController.java

@@ -0,0 +1,18 @@
+package cn.reghao.autodop.dmaster.view.controller;
+
+import org.springframework.stereotype.Controller;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.RequestMapping;
+
+/**
+ * @author reghao
+ * @date 2020-05-01 22:22:01
+ */
+@Controller
+@RequestMapping("/layuix/views")
+public class SysController {
+    @GetMapping("/sys/user")
+    public String user() {
+        return "views/sys/user/user";
+    }
+}

+ 35 - 0
dmaster/src/main/java/cn/reghao/autodop/dmaster/view/controller/ViewController.java

@@ -0,0 +1,35 @@
+package cn.reghao.autodop.dmaster.view.controller;
+
+import io.swagger.annotations.Api;
+import org.springframework.stereotype.Controller;
+import org.springframework.web.bind.annotation.*;
+
+/**
+ * @author reghao
+ * @date 2019-08-26 23:57:41
+ */
+@Api(tags = "视图")
+@Controller
+public class ViewController {
+    @GetMapping({"/", "/index"})
+    public String index() {
+        // templates/index.html
+        return "index";
+    }
+
+    @GetMapping("/layuix/views/index")
+    public String index1() {
+        // templates/views/index.html
+        return "views/index";
+    }
+
+    @GetMapping("/layuix/views/layout")
+    public String layout() {
+        return "views/layout";
+    }
+
+    @GetMapping("/images/captcha")
+    public String captcha() {
+        return "http://localhost:4000/layuix/images/captcha.png";
+    }
+}

+ 23 - 0
dmaster/src/main/java/cn/reghao/autodop/dmaster/view/pojo/Menu.java

@@ -0,0 +1,23 @@
+package cn.reghao.autodop.dmaster.view.pojo;
+
+import lombok.Data;
+
+import java.util.Date;
+
+/**
+ * @author reghao
+ * @date 2020-05-01 14:09:37
+ */
+@Data
+public class Menu {
+    private int menuId;
+    private String menuName;
+    private String url;
+    private String permission;
+    private String icon;
+    private String type;
+    private int orderNum;
+    private int parentId;
+    private Date createTime;
+    private Date modifyTime;
+}

+ 25 - 0
dmaster/src/main/java/cn/reghao/autodop/dmaster/view/pojo/SideBar.java

@@ -0,0 +1,25 @@
+package cn.reghao.autodop.dmaster.view.pojo;
+
+import lombok.Data;
+
+import java.util.List;
+
+/**
+ * @author reghao
+ * @date 2020-05-01 14:05:04
+ */
+@Data
+public class SideBar {
+    private int id;
+    private String title;
+    private String icon;
+    private String href;
+    private Object state;
+    private boolean checked;
+    private String attributes;
+    private List<SideBar> childs;
+    private String parentId;
+    private boolean hasParent;
+    private boolean hasChild;
+    private Menu data;
+}

+ 0 - 50
dmaster/src/main/resources/static/css/index.css

@@ -1,50 +0,0 @@
-body {
-  padding-top: 50px;
-}
-
-a{ text-decoration:none}
-
-.form-signin {
-  max-width: 400px;
-  padding: 15px;
-  margin: 0 auto;
-}
-.form-signin .form-control {
-  position: relative;
-  -webkit-box-sizing: border-box;
-     -moz-box-sizing: border-box;
-          box-sizing: border-box;
-  padding: 10px;
-  margin-top: 10px;
-  margin-bottom:10px;
-}
-
-/*
- * Override Bootstrap's default container.
- */
-@media (min-width: 1200px) {
-  .container {
-    width: 1000px;
-  }
-}
-
-.wrapper {
-  min-height: calc(100vh - 80px);
-  margin-bottom: -30px;
-}
-
-.footer {
-  padding: 5px 0;
-  color: #999;
-  text-align: center;
-  background-color: #f8f8f8;
-  border-top: 1px solid #e5e5e5;
-  z-index: 9999;
-    width: 100%;
-    height:30px;
-    margin-top:30px
-}
-
-.br_row {
-    margin: 10px;
-}

BIN
dmaster/src/main/resources/static/favicon.ico


+ 0 - 283
dmaster/src/main/resources/static/html/webshell.html

@@ -1,283 +0,0 @@
-<!DOCTYPE html>
-<html>
-<head>
-    <meta charset="utf-8">
-    <title>控制台</title>
-    <script type="text/javascript" src="js/jquery.js">   </script>
-    <script type="text/javascript" src="js/jquery- fieldselection.min.js"></script>
-    <style>
-        *{
-            margin:0px;
-            padding:0px;
-        }
-        body{
-            overflow:hidden;
-        }
-        #log-container{
-            width:100%;
-            height:800px;
-        }
-        #log-container textarea.crtP{
-            width:100%;
-            height:100%;
-            background:#000;
-            color:#fff;
-            font-size: 13px;
-            font-family: Lucida Console;
-            resize:none;
-            border-radius: 6px;
-            -webkit-transition: box-shadow 0.30s ease-in-out;
-            border: #87C6F9 2px solid;
-            box-shadow: 0 0 8px rgba(103, 166, 217, 1);
-        }
-        #log-container textarea.crtP::selection {
-            background:rgb(0,255,0);
-            color:#000;
-        }
-        #log-container textarea.crtP::-moz-selection {
-            background:rgb(0,255,0);
-            color:#000;
-        }
-        #log-container textarea.crtP::-webkit-selection {
-            background:rgb(0,255,0);
-            color:#000;
-        }
-
-    </style>
-</head>
-<body>
-<div id="log-container">
-    <textarea class="crtP" spellcheck="false"></textarea>
-</div>
-</body>
-<script>
-    $(document).ready(function() {
-        var hisCmdArray = new Array();
-        var cmdIndex = 0;
-        var cmdSize = 0;
-        var tmpCmd = "";
-        var minRangeLength = 0;
-        var termShellStr = "";
-        var textareaCont = "";
-        var $textarea = $("#log-container textarea.crtP");
-        var maxLine = 200;
-        var fromX,fromY,toX,toY;
-        var TimeFn = null;
-        var isDbl = false;
-        //var dblCt = 0;
-        // 指定websocket路径
-        var websocket = new WebSocket(*'ws://192.168.111.133:8006/websockettail/webSecureCRT');*
-        websocket.onmessage = function(event) {
-            //console.log("返回结果="+event.data);
-            var context = "";
-            // 接收服务端的实时日志并添加到HTML页面中
-            if(event.data.substring(0,9) === "startFlag"){
-                termShellStr = event.data.split("=")[1];
-                termShellStr = termShellStr.substring(0,termShellStr.length);
-                //console.log(termShellStr);
-                context = termShellStr;
-            }else {
-                context = event.data+"\n";
-            }
-            tmpCmd = "";
-            inputCmd($textarea,context);
-            minRangeLength = $textarea.val().length;
-            //console.log(minRangeLength);
-            // 滚动条滚动到最低部
-            $textarea.scrollTop($textarea[0].scrollHeight);
-        };
-
-        function inputCmd(inputObj,cmd){
-            var hisCont = inputObj.val();
-            var array = $textarea.val().split("\n");
-            if(array.length>=maxLine){
-                /* var hasIndex = 0;
-                var deleteLength = 0;
-                while( array[hasIndex].length === 0){
-                    deleteLength += array[hasIndex].length;
-                    hasIndex++;
-                }
-                deleteLength += array[hasIndex].length;
-                console.log(deleteLength);
-                hisCont = hisCont.substring(deleteLength);
-                console.log(hisCont.length); */
-                for(var i=0;i<=array.length-maxLine;i++){
-                    hisCont = hisCont.substring(array[i].length);
-                }
-                //console.log(hisCont.length);
-            }
-            hisCont = hisCont.substring(0,hisCont.length-tmpCmd.length);
-            inputObj.val(hisCont+cmd);
-        }
-
-        $.fn.setCursorPosition = function(position){
-            if(this.lengh == 0) return this;
-            return $(this).setSelection(position, position);
-        }
-
-        $.fn.setSelection = function(selectionStart, selectionEnd) {
-            if(this.lengh == 0) return this;
-            input = this[0];
-
-            if (input.createTextRange) {
-                var range = input.createTextRange();
-                range.collapse(true);
-                range.moveEnd('character', selectionEnd);
-                range.moveStart('character', selectionStart);
-                range.select();
-            } else if (input.setSelectionRange) {
-                input.focus();
-                input.setSelectionRange(selectionStart, selectionEnd);
-            }
-
-            return this;
-        }
-
-        $.fn.focusEnd = function(){
-            this.setCursorPosition(this.val().length);
-        }
-
-        $textarea.click(function(event){
-            clearTimeout(TimeFn);
-            TimeFn = setTimeout(function(){
-                console.log("click");
-                isDbl = false;
-                if(toX===fromX && toY===fromY && !isDbl){
-                    $textarea.focusEnd();
-                }
-            },300);
-        });
-
-        $textarea.mouseup(function(event){
-            toX = event.pageX;
-            toY = event.pageY;
-        });
-
-        /* $textarea.mousemove(function(event){
-            console.log(event)
-            console.log("mousemove");
-        }); */
-
-        $textarea.mousedown(function(event){
-            //console.log(event.which);
-            if(event.which === 2){//如果按下鼠标中键
-                var range = $textarea.getSelection();
-                console.log(range.text);
-                inputCmd($textarea,range.text);
-                return false;
-            }
-            fromX = event.pageX;
-            fromY = event.pageY;
-        });
-
-        $textarea.dblclick(function(event){
-            clearTimeout(TimeFn);
-            isDbl = true;
-            console.log("dblclick");
-        });
-
-
-        $(document).keydown(function(event){
-            //console.log(event.keyCode);
-            var range = $textarea.getSelection();
-            //console.log(range);
-
-            if(event.keyCode == 13){
-                var array = $textarea.val().split("\n");
-                //alert(array[array.length-1]);
-                //send();
-                var message = array[array.length-1];
-                if(message.length>=termShellStr.length){
-                    message = message.substring(termShellStr.length);
-                    console.log(message);
-                    if(message === "clear"){
-                        $textarea.val(termShellStr);
-                        //$textarea.focusEnd();
-                        return false;
-                    }else {
-                        send(message);
-                    }
-                    if(message === ""){
-                    }else {
-                        hisCmdArray.push(message);
-                        cmdIndex = hisCmdArray.length;
-                        cmdSize = hisCmdArray.length;
-                    }
-                }else{
-                    send(message);
-                }
-                console.log(hisCmdArray);
-            }else if(event.keyCode == 8){//删除键
-                var array = $textarea.val().split("\n");
-                //alert(array[array.length-1]);
-                //send();
-                var currLine = array[array.length-1];
-                //console.log(currLine+"--"+termShellStr);
-                if(currLine.substring(0,termShellStr.length) === termShellStr){
-                }else {
-                    return false;
-                }
-                if(currLine === termShellStr){
-                    return false;
-                }
-
-            }else if(event.keyCode == 38){//向上键
-                cmdIndex--;
-                if(cmdIndex < 0){
-                    cmdIndex = 0;
-                    return false;
-                }
-                if(cmdIndex < cmdSize && cmdIndex >= 0){
-                    var lastCmd = hisCmdArray[cmdIndex];
-                    console.log(lastCmd);
-                    inputCmd($textarea,lastCmd);
-                    tmpCmd = lastCmd;
-                }
-                return false;
-            }else if(event.keyCode == 40){//向下键
-                cmdIndex++;
-                if(cmdIndex >= cmdSize){
-                    cmdIndex = cmdSize-1;
-                    return false;
-                }
-                if(cmdIndex < cmdSize && cmdIndex >= 0){
-                    var nextCmd = hisCmdArray[cmdIndex];
-                    console.log(nextCmd);
-                    inputCmd($textarea,nextCmd);
-                    tmpCmd = nextCmd;
-                }
-                return false;
-            }else if(event.keyCode == 37){//向左键
-                //console.log(minRangeLength);
-                if(range.end > minRangeLength){
-
-                }else {
-                    return false;
-                }
-            }
-
-            if (event.keyCode == 67 && event.ctrlKey) {  //这里只能用alt,shift,ctrl等去组合其他键event.altKey、event.ctrlKey、event.shiftKey 属性
-                send("Ctrl+C");
-            }
-        });
-
-
-        //发送消息
-        function send(message){
-            websocket.send(message);
-        }
-
-        $textarea.focusEnd();
-
-        /* $("#log-container textarea").change( function() {
-            var array = $("#log-container textarea").val().split("\n");
-            var currLine = array[array.length-1];
-            console.log(currLine+"--"+termShellStr);
-            if(currLine === termShellStr){
-                return false;
-            }
-        }); */
-    });
-</script>
-</body>
-</html>

BIN
dmaster/src/main/resources/static/imgs/1.jpg


+ 0 - 55
dmaster/src/main/resources/static/js/dingding.js

@@ -1,55 +0,0 @@
-var dingUrl = 'https://oapi.dingtalk.com/connect/oauth2/sns_authorize?';
-var redirectUrl = 'http://localhost:8001/auth';
-var appId = "dingoajyvqz1nazpqywfxn";
-var state = 'qwer';
-
-function openDing(){
-    var obj = DDLogin({
-        id: "login_container",
-        goto: encodeURIComponent(dingUrl + "appid=" + appId + "&response_type=code&scope=snsapi_login&state=" + state + "&redirect_uri=" + redirectUrl),
-        width : "370",
-        height: "370"
-    });
-}
-
-var handleMessage = function (event) {
-    var origin = event.origin;
-    // 判断是否来自 DDLogin 的扫码事件
-    if (origin === "https://login.dingtalk.com") {
-        var loginTmpCode = event.data;
-        // 使用 loginTmpCode 构造跳转链接
-        window.parent.postMessage(loginTmpCode,'*');
-        window.location.href = dingUrl + "appid=" + appId + "&response_type=code&scope=snsapi_login&state=" + state + "&redirect_uri=" + redirectUrl + "&loginTmpCode=" + loginTmpCode;
-    }
-};
-
-if (typeof window.addEventListener !== 'undefined') {
-    window.addEventListener('message', handleMessage, false);
-} else if (typeof window.attachEvent !== 'undefined') {
-    window.attachEvent('onmessage', handleMessage);
-}
-
-/*
-var FULL_CHARTER = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopgrstuvwxyz';
-
-function makeState(){
-    var state = '';
-    for (var a=0;a<4;a++){
-        state+=FULL_CHARTER[Math.floor(Math.random() * 52)];
-    }
-
-    return state;
-}
-
-function openWeixin(){
-    var obj = new WxLogin({
-        self_redirect:true,
-        id:"login_container",
-        appid: "wxbdc5610cc59c1631",
-        scope: "snsapi_login",
-        redirect_uri: encodeURIComponent(redirect_url),
-        state: makeState(),
-        style: "black"
-    });
-}
-*/

File diff suppressed because it is too large
+ 1 - 0
dmaster/src/main/resources/static/layui/css/layui.css


File diff suppressed because it is too large
+ 1 - 0
dmaster/src/main/resources/static/layui/css/layui.mobile.css


+ 2 - 0
dmaster/src/main/resources/static/layui/css/modules/code.css

@@ -0,0 +1,2 @@
+/** layui-v2.5.5 MIT License By https://www.layui.com */
+ html #layuicss-skincodecss{display:none;position:absolute;width:1989px}.layui-code-h3,.layui-code-view{position:relative;font-size:12px}.layui-code-view{display:block;margin:10px 0;padding:0;border:1px solid #e2e2e2;border-left-width:6px;background-color:#F2F2F2;color:#333;font-family:Courier New}.layui-code-h3{padding:0 10px;height:32px;line-height:32px;border-bottom:1px solid #e2e2e2}.layui-code-h3 a{position:absolute;right:10px;top:0;color:#999}.layui-code-view .layui-code-ol{position:relative;overflow:auto}.layui-code-view .layui-code-ol li{position:relative;margin-left:45px;line-height:20px;padding:0 5px;border-left:1px solid #e2e2e2;list-style-type:decimal-leading-zero;*list-style-type:decimal;background-color:#fff}.layui-code-view pre{margin:0}.layui-code-notepad{border:1px solid #0C0C0C;border-left-color:#3F3F3F;background-color:#0C0C0C;color:#C2BE9E}.layui-code-notepad .layui-code-h3{border-bottom:none}.layui-code-notepad .layui-code-ol li{background-color:#3F3F3F;border-left:none}

File diff suppressed because it is too large
+ 1 - 0
dmaster/src/main/resources/static/layui/css/modules/laydate/default/laydate.css


BIN
dmaster/src/main/resources/static/layui/css/modules/layer/default/icon-ext.png


BIN
dmaster/src/main/resources/static/layui/css/modules/layer/default/icon.png


File diff suppressed because it is too large
+ 1 - 0
dmaster/src/main/resources/static/layui/css/modules/layer/default/layer.css


BIN
dmaster/src/main/resources/static/layui/css/modules/layer/default/loading-0.gif


BIN
dmaster/src/main/resources/static/layui/css/modules/layer/default/loading-1.gif


BIN
dmaster/src/main/resources/static/layui/css/modules/layer/default/loading-2.gif


BIN
dmaster/src/main/resources/static/layui/font/iconfont.eot


File diff suppressed because it is too large
+ 25 - 0
dmaster/src/main/resources/static/layui/font/iconfont.svg


BIN
dmaster/src/main/resources/static/layui/font/iconfont.ttf


BIN
dmaster/src/main/resources/static/layui/font/iconfont.woff


BIN
dmaster/src/main/resources/static/layui/font/iconfont.woff2


BIN
dmaster/src/main/resources/static/layui/images/face/0.gif


BIN
dmaster/src/main/resources/static/layui/images/face/1.gif


BIN
dmaster/src/main/resources/static/layui/images/face/10.gif


BIN
dmaster/src/main/resources/static/layui/images/face/11.gif


BIN
dmaster/src/main/resources/static/layui/images/face/12.gif


BIN
dmaster/src/main/resources/static/layui/images/face/13.gif


BIN
dmaster/src/main/resources/static/layui/images/face/14.gif


BIN
dmaster/src/main/resources/static/layui/images/face/15.gif


BIN
dmaster/src/main/resources/static/layui/images/face/16.gif


BIN
dmaster/src/main/resources/static/layui/images/face/17.gif


BIN
dmaster/src/main/resources/static/layui/images/face/18.gif


BIN
dmaster/src/main/resources/static/layui/images/face/19.gif


BIN
dmaster/src/main/resources/static/layui/images/face/2.gif


BIN
dmaster/src/main/resources/static/layui/images/face/20.gif


BIN
dmaster/src/main/resources/static/layui/images/face/21.gif


BIN
dmaster/src/main/resources/static/layui/images/face/22.gif


BIN
dmaster/src/main/resources/static/layui/images/face/23.gif


BIN
dmaster/src/main/resources/static/layui/images/face/24.gif


BIN
dmaster/src/main/resources/static/layui/images/face/25.gif


BIN
dmaster/src/main/resources/static/layui/images/face/26.gif


BIN
dmaster/src/main/resources/static/layui/images/face/27.gif


BIN
dmaster/src/main/resources/static/layui/images/face/28.gif


BIN
dmaster/src/main/resources/static/layui/images/face/29.gif


BIN
dmaster/src/main/resources/static/layui/images/face/3.gif


BIN
dmaster/src/main/resources/static/layui/images/face/30.gif


BIN
dmaster/src/main/resources/static/layui/images/face/31.gif


BIN
dmaster/src/main/resources/static/layui/images/face/32.gif


BIN
dmaster/src/main/resources/static/layui/images/face/33.gif


BIN
dmaster/src/main/resources/static/layui/images/face/34.gif


BIN
dmaster/src/main/resources/static/layui/images/face/35.gif


BIN
dmaster/src/main/resources/static/layui/images/face/36.gif


BIN
dmaster/src/main/resources/static/layui/images/face/37.gif


BIN
dmaster/src/main/resources/static/layui/images/face/38.gif


BIN
dmaster/src/main/resources/static/layui/images/face/39.gif


BIN
dmaster/src/main/resources/static/layui/images/face/4.gif


BIN
dmaster/src/main/resources/static/layui/images/face/40.gif


BIN
dmaster/src/main/resources/static/layui/images/face/41.gif


BIN
dmaster/src/main/resources/static/layui/images/face/42.gif


BIN
dmaster/src/main/resources/static/layui/images/face/43.gif


BIN
dmaster/src/main/resources/static/layui/images/face/44.gif


BIN
dmaster/src/main/resources/static/layui/images/face/45.gif


BIN
dmaster/src/main/resources/static/layui/images/face/46.gif


BIN
dmaster/src/main/resources/static/layui/images/face/47.gif


BIN
dmaster/src/main/resources/static/layui/images/face/48.gif


BIN
dmaster/src/main/resources/static/layui/images/face/49.gif


BIN
dmaster/src/main/resources/static/layui/images/face/5.gif


BIN
dmaster/src/main/resources/static/layui/images/face/50.gif


BIN
dmaster/src/main/resources/static/layui/images/face/51.gif


BIN
dmaster/src/main/resources/static/layui/images/face/52.gif


BIN
dmaster/src/main/resources/static/layui/images/face/53.gif


BIN
dmaster/src/main/resources/static/layui/images/face/54.gif


BIN
dmaster/src/main/resources/static/layui/images/face/55.gif


BIN
dmaster/src/main/resources/static/layui/images/face/56.gif


BIN
dmaster/src/main/resources/static/layui/images/face/57.gif


BIN
dmaster/src/main/resources/static/layui/images/face/58.gif


BIN
dmaster/src/main/resources/static/layui/images/face/59.gif


BIN
dmaster/src/main/resources/static/layui/images/face/6.gif


BIN
dmaster/src/main/resources/static/layui/images/face/60.gif


Some files were not shown because too many files changed in this diff