ljw.js 3.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100
  1. window._gwen = {}
  2. window._gwen.kv = {}
  3. const apiserver = localStorage.getItem('api-server')
  4. function stringToUint8Array(str) {
  5. var arr = [];
  6. for (var i = 0, j = str.length; i < j; ++i) {
  7. arr.push(str.charCodeAt(i));
  8. }
  9. var tmpUint8Array = new Uint8Array(arr);
  10. return tmpUint8Array
  11. }
  12. function getQueryVariable() {
  13. const query = window.location.hash.substring(3);
  14. const vars = query.split("&");
  15. for (var i = 0; i < vars.length; i++) {
  16. var pair = vars[i].split("=");
  17. window._gwen.kv[pair[0]] = pair[1]
  18. }
  19. }
  20. getQueryVariable()
  21. const id = window._gwen.kv.id || ''
  22. if (id) {
  23. localStorage.setItem('remote-id', id)
  24. }
  25. const share_token = window._gwen.kv.share_token || ''
  26. if (share_token) {
  27. fetch(apiserver + "/api/shared-peer", {
  28. method: 'POST',
  29. headers: {
  30. 'Content-Type': 'application/json',
  31. },
  32. body: JSON.stringify({share_token})
  33. }).then(res => res.json()).then(res => {
  34. if (res.code === 0) {
  35. localStorage.setItem('custom-rendezvous-server', res.data.id_server)
  36. localStorage.setItem('key', res.data.key)
  37. const peer = res.data.peer
  38. localStorage.setItem('remote-id', peer.info.id)
  39. peer.tmppwd = stringToUint8Array(window.atob(peer.tmppwd)).toString()
  40. const oldPeers = JSON.parse(localStorage.getItem('peers')) || {}
  41. oldPeers[peer.info.id] = peer
  42. localStorage.setItem('peers', JSON.stringify(oldPeers))
  43. }
  44. })
  45. }
  46. let fetching = false
  47. export function getServerConf(token){
  48. console.log('getServerConf', token)
  49. if(fetching){
  50. return
  51. }
  52. fetching = true
  53. fetch(apiserver + "/api/server-config", {
  54. method: 'POST',
  55. headers: {
  56. 'Content-Type': 'application/json',
  57. 'Authorization': 'Bearer ' + token
  58. }
  59. }
  60. ).then(res => res.json()).then(res => {
  61. fetching = false
  62. if (res.code === 0) {
  63. if (!localStorage.getItem('custom-rendezvous-server') || !localStorage.getItem('key')) {
  64. localStorage.setItem('custom-rendezvous-server', res.data.id_server)
  65. localStorage.setItem('key', res.data.key)
  66. }
  67. if (res.data.peers) {
  68. const oldPeers = JSON.parse(localStorage.getItem('peers')) || {}
  69. let needUpdate = false
  70. Object.keys(res.data.peers).forEach(k => {
  71. if (!oldPeers[k]) {
  72. oldPeers[k] = res.data.peers[k]
  73. needUpdate = true
  74. } else {
  75. oldPeers[k].info = res.data.peers[k].info
  76. }
  77. if (oldPeers[k].info && oldPeers[k].info.hash && !oldPeers[k].password) {
  78. let p1 = window.atob(oldPeers[k].info.hash)
  79. const pwd = stringToUint8Array(p1)
  80. oldPeers[k].password = pwd.toString()
  81. oldPeers[k].remember = true
  82. }
  83. })
  84. localStorage.setItem('peers', JSON.stringify(oldPeers))
  85. if (needUpdate) {
  86. window.location.reload()
  87. }
  88. }
  89. }
  90. }).catch(_ => {
  91. fetching = false
  92. })
  93. }