king
2024-10-30 a7c6bffc152da5eeb780cca98fe73b7d90becf04
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
import axios from 'axios'
import jsSHA from 'jssha'
 
class DirectApi {
  /**
   * @description 鉴权挑战
   * @param {Object} param 查询及提交参数
   */
  w4kLogin (ip, username = 'admin', password) {
    return new Promise((resolve, reject) => {
      let challurl = ip + '/api/auth/login/challenge?username=' + username
      challurl = '/trans/redirect?rd=' + challurl + '&method=get'
 
      let loginurl = ip + '/api/auth/login'
      loginurl = '/trans/redirect?rd=' + loginurl + '&method=post'
 
      axios({ 
        url: challurl,
        method: 'post' // get
      }).then(res => {
        if (res.errors) {
          reject(res)
        } else {
          const shaObj = new jsSHA('SHA-256', 'TEXT', { encoding: 'UTF8' })
          shaObj.update(password + res.salt + res.challenge)
          const hash = shaObj.getHash('HEX')
  
          axios({
            url: loginurl,
            method: 'post',
            data: {
              session_id: res.session_id,
              username: username,
              password: hash
            }
          }).then(result => {
            resolve(result)
          }, (err) => {
            reject(err)
          })
        }
      }, (err) => {
        reject(err)
      })
    })
  }
 
  w4kQueryUsers (ip) {
    let url = ip + '/api/persons/query'
    url = '/trans/redirect?rd=' + url + '&method=post'
 
    return axios({
      url: url,
      method: 'POST',
      withCredentials: true,
      headers: { 'Content-Type': 'application/json' },
      data: {
        limit: 100,
        offset: 0,
        sort: 'desc',
        query_id: '',
        query_string: ''
      }
    })
  }
 
  w4kAddUsers (ip, data) {
    return new Promise((resolve, reject) => {
      let delurl = ip + '/api/persons/item/' + data.id
      delurl = '/trans/redirect?rd=' + delurl + '&method=DELETE'
 
      let addurl = ip + '/api/persons/item'
      addurl = '/trans/redirect?rd=' + addurl + '&method=post'
 
      if (data.deleted) {
        delete data.deleted
        axios({ 
          url: delurl,
          method: 'post' // DELETE
        }).then(res => {
          if (res.errors) {
            reject(res)
          } else {
            axios({
              url: addurl,
              method: 'post',
              data: data
            }).then(result => {
              resolve(result)
            }, (err) => {
              reject(err)
            })
          }
        }, (err) => {
          reject(err)
        })
      } else {
        delete data.deleted
        axios({
          url: addurl,
          method: 'post',
          data: data
        }).then(result => {
          resolve(result)
        }, (err) => {
          reject(err)
        })
      }
    })
  }
}
 
export default new DirectApi()