ljw.js 2.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283
  1. window._gwen = {}
  2. window._gwen.kv = {}
  3. const apiserver = localStorage.getItem('wc-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. if (!token) {
  49. return
  50. }
  51. const prefix = 'wc-'
  52. console.log('getServerConf', token)
  53. if (fetching) {
  54. return
  55. }
  56. fetching = true
  57. fetch(apiserver + "/api/server-config-v2", {
  58. method: 'POST',
  59. headers: {
  60. 'Content-Type': 'application/json',
  61. 'Authorization': 'Bearer ' + token
  62. }
  63. }
  64. ).then(res => res.json()).then(res => {
  65. fetching = false
  66. if (res.code === 0) {
  67. if (!localStorage.getItem(prefix + 'custom-rendezvous-server') || !localStorage.getItem('key')) {
  68. localStorage.setItem(prefix + 'custom-rendezvous-server', res.data.id_server)
  69. localStorage.setItem(prefix + 'key', res.data.key)
  70. }
  71. }
  72. }).catch(_ => {
  73. fetching = false
  74. })
  75. }