index.go 3.0 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697
  1. package web
  2. import (
  3. "Gwen/global"
  4. "github.com/gin-gonic/gin"
  5. )
  6. type Index struct {
  7. }
  8. func (i *Index) ConfigJs(c *gin.Context) {
  9. apiServer := global.Config.Rustdesk.ApiServer
  10. tmp := `
  11. function stringToUint8Array(str){
  12. var arr = [];
  13. for (var i = 0, j = str.length; i < j; ++i) {
  14. arr.push(str.charCodeAt(i));
  15. }
  16. var tmpUint8Array = new Uint8Array(arr);
  17. return tmpUint8Array
  18. }
  19. window._gwen = {}
  20. window._gwen.kv = {}
  21. function getQueryVariable() {
  22. const query = window.location.hash.substring(3);
  23. const vars = query.split("&");
  24. for (var i = 0; i < vars.length; i++) {
  25. var pair = vars[i].split("=");
  26. window._gwen.kv[pair[0]] = pair[1]
  27. }
  28. }
  29. getQueryVariable()
  30. const id = window._gwen.kv.id || ''
  31. if (id) {
  32. localStorage.setItem('remote-id', id)
  33. }
  34. window._gwen.hosts = [
  35. "rs-sg.rustdesk.com",
  36. "rs-cn.rustdesk.com",
  37. "rs-us.rustdesk.com",
  38. ]
  39. localStorage.setItem('api-server', "` + apiServer + `")
  40. const autoWriteServer = () => {
  41. return setTimeout(() => {
  42. const token = localStorage.getItem('access_token')
  43. const apiserver = localStorage.getItem('api-server')
  44. if (token && apiserver) {
  45. fetch(apiserver + "/api/server-config", {
  46. method: 'POST',
  47. headers: {
  48. 'Content-Type': 'application/json',
  49. 'Authorization': 'Bearer ' + token
  50. }
  51. }
  52. ).then(res => res.json()).then(res => {
  53. if (res.code === 0) {
  54. if(!localStorage.getItem('custom-rendezvous-server') || !localStorage.getItem('key') ) {
  55. localStorage.setItem('custom-rendezvous-server', res.data.id_server)
  56. localStorage.setItem('key', res.data.key)
  57. }
  58. if (res.data.peers) {
  59. oldPeers = JSON.parse(localStorage.getItem('peers')) || {}
  60. let needUpdate = false
  61. Object.keys(res.data.peers).forEach(k => {
  62. if(!oldPeers[k]) {
  63. oldPeers[k] = res.data.peers[k]
  64. needUpdate = true
  65. }else{
  66. oldPeers[k].info = res.data.peers[k].info
  67. }
  68. if (oldPeers[k].info && oldPeers[k].info.hash&&!oldPeers[k].password ) {
  69. let p1 = window.atob(oldPeers[k].info.hash)
  70. const pwd = stringToUint8Array(p1)
  71. oldPeers[k].password = pwd.toString()
  72. oldPeers[k].remember = true
  73. }
  74. })
  75. localStorage.setItem('peers', JSON.stringify(oldPeers))
  76. if(needUpdate) {
  77. window.location.reload()
  78. }
  79. }
  80. }
  81. })
  82. } else {
  83. autoWriteServer()
  84. }
  85. }, 1000)
  86. }
  87. autoWriteServer()
  88. `
  89. c.String(200, tmp)
  90. }