소스 검색

增加设置NTP

dygapp 4 년 전
부모
커밋
beb9ae5bd7
3개의 변경된 파일33개의 추가작업 그리고 3개의 파일을 삭제
  1. 27 1
      app/controller/systemctl.js
  2. 2 0
      app/router.js
  3. 4 2
      config/shells.js

+ 27 - 1
app/controller/systemctl.js

@@ -213,7 +213,7 @@ class SystemctlController extends Controller {
       if (res.errcode === 0) {
         this.ctx.body = { errcode: 0, errmsg: 'ok' };
       } else {
-        this.ctx.body = { errcode: -1, errmsg: '操作失败' };
+        this.ctx.body = { errcode: -1034, errmsg: '操作失败' };
       }
     } catch (error) {
       const body = { errcode: -1034, errmsg: '操作失败', error };
@@ -231,6 +231,32 @@ class SystemctlController extends Controller {
       throw new Error(JSON.stringify(body));
     }
   }
+
+  // 设置时间同步
+  async setNtp() {
+    const { status } = this.ctx.request.body;
+    try {
+      await this.service.shell.shell(shells.setNtp(status || 'no'));
+      this.ctx.body = { errcode: 0, errmsg: 'ok' };
+    } catch (error) {
+      const body = { errcode: -1036, errmsg: `${status === 'yes' ? '启用' : '停用'}时间同步失败`, error };
+      throw new Error(JSON.stringify(body));
+    }
+  }
+  // 获得NTP设置
+  async getNtp() {
+    try {
+      const res = await this.service.shell.shell(shells.getNtp);
+      if (res.errcode === 0) {
+        this.ctx.body = { errcode: 0, errmsg: 'ok', data: res.data };
+      } else {
+        this.ctx.body = { errcode: -1037, errmsg: '获得NTP设置失败' };
+      }
+    } catch (error) {
+      const body = { errcode: -1037, errmsg: '获得NTP设置失败', error };
+      throw new Error(JSON.stringify(body));
+    }
+  }
 }
 
 module.exports = SystemctlController;

+ 2 - 0
app/router.js

@@ -48,6 +48,8 @@ module.exports = app => {
   router.get('/api/ipsecvpnstate', jwt, controller.systemctl.ipsecvpnstate);
   router.get('/api/sslvpnstate', jwt, controller.systemctl.sslvpnstate);
   router.get('/api/recover', jwt, controller.systemctl.recover);
+  router.get('/api/ntp', jwt, controller.systemctl.getNtp);
+  router.post('/api/ntp', jwt, controller.systemctl.setNtp);
   // ipsecvpn
   router.post('/api/secclient', jwt, controller.ipsecvpn.secclient);
   router.post('/api/secservice', jwt, controller.ipsecvpn.secservice);

+ 4 - 2
config/shells.js

@@ -93,11 +93,13 @@ module.exports = {
   // 结果:系统时间将被修改为:2021-03-01 06:19:50
 
   // ntp时间同步命令
+  setNtp: value => `timedatectl set-ntp ${value}`,
+  getNtp: 'timedatectl show -p NTP --value',
 
   // 连接测试
   // ping 192.168.88.10
 
   // 恢复默认配置
-  recovery: 'echo ok',
-};
+  recovery: '/bin/bash /etc/vpn/recovery.sh',
 
+};