diff --git a/config.go b/config.go index d23b394..64e8106 100644 --- a/config.go +++ b/config.go @@ -51,7 +51,5 @@ func createConfigFromFile(file string) (Config, error) { return value, err } - fmt.Printf("%+v\n", value) - return value, nil } diff --git a/rice-box.go b/rice-box.go index a846cb9..ce20ff5 100644 --- a/rice-box.go +++ b/rice-box.go @@ -36,13 +36,13 @@ func init() { } file6 := &embedded.EmbeddedFile{ Filename: "main.css", - FileModTime: time.Unix(1693038897, 0), + FileModTime: time.Unix(1693042927, 0), Content: string("a {\n color: #1e3650;\n}\n\n.btn-primary {\n background: #1e3650;\n border-color: #0e2640;\n}\n\n.nav-pills .nav-link.active {\n background: #1e3650;\n}\n\n.nav-pills .nav-link {\n padding-left: 3px;\n padding-right: 3px;\n}\n\n.nav-link {\n font-size: 10px;\n}\n\n.legend {\n color: #777;\n margin: 3px 0;\n padding: 3px 0;\n border-bottom: 1px solid #eee;\n font-size: 11px;\n text-transform: uppercase;\n}\n\n.btn-sm {\n font-size: 9px;\n}\n\n.select2 {\n min-width: 100%;\n}\n\n.line {\n height: 3px;\n}\n\n.pane {\n display: none;\n}\n\n.no-margin {\n margin: 0;\n}\n\n.no-padding {\n padding: 0;\n}\n\n.no-radius {\n border-radius: 0 !important;\n}\n\n#pointer {\n height: calc(100vh - 33px - 38px);\n top: calc(33px + 38px);\n margin: auto;\n background: #ccc;\n position: absolute;\n width: 100%;\n -webkit-touch-callout: none;\n -webkit-user-select: none;\n -khtml-user-select: none;\n -moz-user-select: none;\n -ms-user-select: none;\n user-select: none;\n}\n\n#scrollbar {\n height: calc(100vh - 80px);\n width: 50px;\n background: #333;\n position: absolute;\n z-index: 100;\n right: 0;\n}\n\n#pane-pointer .form-group {\n padding: 0;\n margin: 0;\n}\n\n#pointer-buttons {\n margin-top: -42px;\n width: 100%;\n z-index: 110;\n position: fixed;\n bottom: 0;\n}\n\n#pointer-buttons .btn {\n height: 50px;\n}\n\n#disconneced {\n position: absolute;\n top: 0;\n width: 100%;\n background: #ff6161;\n color: #fff;\n padding: 5px;\n}\n\n#disconneced a {\n color: #fff;\n font-weight: bold;\n}\n\n#nav {\n border-bottom: 2px solid #1e3650;\n}\n\n#shortcuts_special_keys input {\n display: none;\n}\n\n#response {\n position: absolute;\n bottom: 0;\n width: 100%;\n color: #fff;\n background: #748c26;\n padding: 5px;\n display: none;\n}\n\n#screenshot img {\n max-width: 100%;\n margin-top: 10px;\n cursor: pointer;\n}\n"), } file7 := &embedded.EmbeddedFile{ Filename: "main.js", - FileModTime: time.Unix(1693038743, 0), + FileModTime: time.Unix(1693042927, 0), Content: string("var ws;\nvar $pointer, $scroller, $response, $screenshotImg;\nvar scrollLastTimestamp, scrollLastValue;\nvar mousePosX, mousePosY, mouseInitPosX, mouseInitPosY;\nvar isLive = false;\nvar isScreenshotWaiting = false;\n\nvar createWebSocketConnection = function() {\n ws = new WebSocket(`ws://${window.location.hostname}:${window.location.port}/ws`);\n\n ws.onopen = function(event) {\n $('#disconneced').fadeOut();\n }\n\n ws.onclose = function(event) {\n $('#disconneced').fadeIn();\n\n window.setTimeout(createWebSocketConnection, 5000);\n }\n\n ws.onmessage = function(event) {\n var data = JSON.parse(event.data);\n\n if (data.type === 'response') {\n $response.text(data.value);\n $response.fadeIn();\n\n window.setTimeout(function() {\n $response.fadeOut();\n }, 2500);\n } else if (data.type === 'screenshot') {\n isScreenshotWaiting = false\n $screenshotImg.attr('src', 'data:image/png;base64, ' + data.value);\n }\n }\n}\n\nvar navigationClickHandler = function(e) {\n if ($(this).attr('href') === '#') {\n return\n }\n\n $('.pane').hide();\n\n var target = $(this).attr('href');\n $(target).show();\n\n $('#nav a').removeClass('active');\n $(this).addClass('active');\n}\n\nvar buttonClickHandler = function(e) {\n var msg = $(this).attr('data-msg');\n ws.send(msg);\n}\n\nvar shortcutClearClickHandler = function(e) {\n $('#shortcut-key').val('');\n $('#shortcuts_special_keys input:checked').each(function() {\n $(this).prop('checked', false).trigger('change');\n });\n}\n\nvar shortcutSendClickHandler = function(e) {\n var keys = [];\n\n $('#shortcuts_special_keys input:checked').each(function() {\n keys.push($(this).val());\n });\n\n var key = $('#shortcut-key').val();\n\n if (keys.length) {\n if (key) {\n keys.push(key);\n }\n\n var msg = '{\"type\":\"keys\",\"value\": \"' + (keys.join(',').replace('\"', '\\\\\"')) + '\"}';\n ws.send(msg);\n }\n}\n\nvar textClearClickHandler = function(e) {\n $('#text').val('');\n}\n\nvar textSendClickHandler = function(e) {\n var keys = $('#text').val();\n\n if (keys.length) {\n var msg = '{\"type\":\"text\",\"value\": \"' + (keys.replace('\"', '\\\\\"')) + '\"}';\n ws.send(msg);\n }\n}\n\nvar textKeyUpHandler = function(e) {\n var keys = $('#text').val();\n\n if (e.keyCode === 13) {\n var msg = '{\"type\":\"text\",\"value\": \"' + (keys.replace('\"', '\\\\\"')) + '\"}';\n ws.send(msg);\n }\n}\n\nvar liveTextKeyUpHandler = function(e) {\n var value = $(this).val();\n var live = false;\n\n if (e.keyCode === 8) {\n var msg = '{\"type\":\"key\",\"value\": \"backspace\"}';\n ws.send(msg);\n } else if (e.keyCode === 13) {\n var msg = '{\"type\":\"key\",\"value\": \"enter\"}';\n ws.send(msg);\n } else if (value.length) {\n if (value === ' ') {\n var msg = '{\"type\":\"key\",\"value\": \"space\"}';\n ws.send(msg);\n } else {\n var msg = '{\"type\":\"text\",\"value\": \"' + (value.replace('\"', '\\\\\"')) + '\"}';\n ws.send(msg);\n }\n\n $(this).val('');\n }\n}\n\nvar shortcutsSpecialKeysOnChangeHandler = function(e) {\n $('#shortcuts_special_keys input:checked').each(function() {\n $(this).parent().addClass('btn-primary').removeClass('btn-secondary');\n })\n\n $('#shortcuts_special_keys input:not(:checked)').each(function() {\n $(this).parent().addClass('btn-secondary').removeClass('btn-primary');\n })\n}\n\nvar pointerClickHandler = function(e) {\n var msg = '{\"type\":\"pointer\",\"click\":\"left\"}';\n ws.send(msg);\n}\n\nvar scrollerTouchStartHandler = function(e) {\n var touch = e.targetTouches[0];\n mouseInitPosY = touch.pageY;\n}\n\nvar scrollerTouchMoveHandler = function(e) {\n var touch = e.changedTouches[0];\n var value = ((touch.pageY - mouseInitPosY > 0) ? 'down' : 'up');\n var now = new Date().getTime();\n\n if (touch.pageY === mouseInitPosY || value === scrollLastValue && scrollLastTimestamp !== null && now - scrollLastTimestamp < 200) {\n return;\n }\n\n scrollLastTimestamp = now;\n scrollLastValue = value;\n\n var msg = '{\"type\":\"scroll\",\"value\": \"' + value + '\"}';\n\n mouseInitPosY = touch.pageY;\n ws.send(msg);\n}\n\nvar pointerTouchStartHandler = function(e) {\n var touch = e.targetTouches[0];\n mouseInitPosX = touch.pageX;\n mouseInitPosY = touch.pageY;\n}\n\nvar pointerTouchMoveHandler = function(e) {\n if (e.changedTouches.length === 2) {\n return scrollerTouchMoveHandler(e);\n }\n\n var touch = e.changedTouches[0];\n mousePosX = touch.pageX;\n mousePosY = touch.pageY;\n\n var newX = mousePosX - mouseInitPosX;\n var newY = mousePosY - mouseInitPosY;\n\n mouseInitPosX = mousePosX;\n mouseInitPosY = mousePosY;\n\n var msg = '{\"type\":\"pointer\",\"x\": \"' + newX + '\",\"y\": \"' + newY + '\"}';\n\n ws.send(msg);\n}\n\nvar liveHqClickHandler = function(e) {\n return liveClickHandler(e, 'hq')\n}\n\nvar liveLqClickHandler = function(e) {\n return liveClickHandler(e, 'lq')\n}\n\nvar liveClickHandler = function(e, quality) {\n if (isLive) {\n isLive = false;\n isScreenshotWaiting = false;\n $('#live-hq').text(`Live HQ`);\n $('#live-lq').text(`Live LQ`);\n\n return;\n }\n\n isLive = true;\n $(e.target).text('Stop live');\n\n var doScreenshot = function() {\n if (isLive) {\n if (!isScreenshotWaiting) {\n isScreenshotWaiting = true\n ws.send(`{\"type\":\"screenshot\",\"quality\":\"${quality}\"}`);\n }\n\n window.setTimeout(doScreenshot, 100);\n }\n }\n\n doScreenshot();\n}\n\nvar fullscreenHandler = function(e) {\n var element = $(e.target.getAttribute('data-target'));\n var isFullscreen = parseInt($(e.target).attr('data-fullscreen'));\n\n $('body').toggleClass('fullscreen', isFullscreen)\n\n if (isFullscreen) {\n element.attr('data-fullscreen', '0');\n\n if (document.exitFullscreen) {\n document.exitFullscreen();\n } else if (document.webkitExitFullscreen) {\n document.webkitExitFullscreen();\n } else if (document.mozCancelFullScreen) {\n document.mozCancelFullScreen();\n }\n } else {\n $(e.target).attr('data-fullscreen', '1');\n\n if (element.get(0).requestFullscreen) {\n element.get(0).requestFullscreen();\n } else if (element.get(0).webkitRequestFullscreen) {\n element.get(0).webkitRequestFullscreen();\n } else if (element.get(0).mozRequestFullScreen) {\n element.get(0).mozRequestFullScreen();\n }\n }\n}\n\nvar documentHashHandler = function() {\n var hash = window.location.hash;\n\n if (hash) {\n $('a[href=\"' + hash + '\"]').click();\n } else {\n $('#nav > li:first-child a').click();\n }\n}\n\nvar addListeners = function() {\n $('#nav a').click(navigationClickHandler);\n $('button[data-msg]').click(buttonClickHandler);\n\n $('#shortcut-clear').click(shortcutClearClickHandler);\n $('#shortcuts_special_keys input').change(shortcutsSpecialKeysOnChangeHandler);\n $('#shortcut-send').click(shortcutSendClickHandler);\n\n $('#text-clear').click(textClearClickHandler);\n $('#text-send').click(textSendClickHandler);\n $('#text').on('keyup', textKeyUpHandler);\n $('.live-text').on('keyup', liveTextKeyUpHandler);\n\n $scroller\n .on('touchstart', scrollerTouchStartHandler)\n .on('touchmove', scrollerTouchMoveHandler);\n\n $pointer\n .on('click', pointerClickHandler)\n .on('touchstart', pointerTouchStartHandler)\n .on('touchmove', pointerTouchMoveHandler);\n\n $('#live-hq').click(liveHqClickHandler);\n $('#live-lq').click(liveLqClickHandler);\n\n $('.btn-fullscreen').click(fullscreenHandler)\n}\n\nvar bootstrap = function() {\n shortcutsSpecialKeysOnChangeHandler();\n createWebSocketConnection();\n addListeners();\n documentHashHandler();\n}\n\n$(function() {\n $pointer = $('#pointer');\n $scroller = $('#scrollbar');\n $response = $('#response');\n $screenshotImg = $('#screenshot img');\n\n bootstrap();\n});\n"), } @@ -50,7 +50,7 @@ func init() { // define dirs dir1 := &embedded.EmbeddedDir{ Filename: "", - DirModTime: time.Unix(1693038899, 0), + DirModTime: time.Unix(1693042927, 0), ChildFiles: []*embedded.EmbeddedFile{ file2, // "bootstrap.bundle.min.js" file3, // "bootstrap.min.css" @@ -68,7 +68,7 @@ func init() { // register embeddedBox embedded.RegisterEmbeddedBox(`static`, &embedded.EmbeddedBox{ Name: `static`, - Time: time.Unix(1693038899, 0), + Time: time.Unix(1693042927, 0), Dirs: map[string]*embedded.EmbeddedDir{ "": dir1, },