Merge pull request #55 from ethereum/requireToSpecifyRemixIDEInstance

Reqiure to specify remix IDE instance to connect to
remixd
yann300 6 years ago committed by GitHub
commit 8dc3993779
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
  1. 8
      bin/remixd
  2. 5
      src/router.js
  3. 10
      src/websocket.js

@ -9,6 +9,7 @@ var fs = require('fs-extra')
program program
.usage('-s <shared folder>') .usage('-s <shared folder>')
.description('Provide a two ways connection between the local computer and Remix IDE') .description('Provide a two ways connection between the local computer and Remix IDE')
.option('--remix-ide <url>', 'URL of remix instance allowed to connect to this web sockect connection')
.option('-s, --shared-folder <path>', 'Folder to share with Remix IDE') .option('-s, --shared-folder <path>', 'Folder to share with Remix IDE')
.option('--read-only', 'Treat shared folder as read-only (experimental)') .option('--read-only', 'Treat shared folder as read-only (experimental)')
.option('-m, --mist', 'start mist') .option('-m, --mist', 'start mist')
@ -26,6 +27,11 @@ program
var killCallBack = [] var killCallBack = []
if (!program.remixIde) {
return console.log('\x1b[31m%s\x1b[0m', '[ERR] URL Remix IDE instance has to be provided.')
}
console.log('\x1b[33m%s\x1b[0m', '[WARN] You may now only use IDE at ' + program.remixIde + ' to connect to that instance')
if (program.devPath) { if (program.devPath) {
if (fs.existsSync(program.devPath)) { if (fs.existsSync(program.devPath)) {
killCallBack.push(startmistGeth(program.devPath, program.mist, program.geth, program.autoMine, program.rpc, program.rpcPort)) killCallBack.push(startmistGeth(program.devPath, program.mist, program.geth, program.autoMine, program.rpc, program.rpcPort))
@ -46,7 +52,7 @@ if (program.frontend) {
if (program.sharedFolder) { if (program.sharedFolder) {
console.log('\x1b[33m%s\x1b[0m', '[WARN] Any application that runs on your computer can potentially read from and write to all files in the directory.') console.log('\x1b[33m%s\x1b[0m', '[WARN] Any application that runs on your computer can potentially read from and write to all files in the directory.')
console.log('\x1b[33m%s\x1b[0m', '[WARN] Symbolinc links are not forwarded to Remix IDE\n') console.log('\x1b[33m%s\x1b[0m', '[WARN] Symbolinc links are not forwarded to Remix IDE\n')
var sharedFolderrouter = new Router(65520, servicesList['sharedfolder'], (webSocket) => { var sharedFolderrouter = new Router(65520, servicesList['sharedfolder'], { remixIdeUrl: program.remixIde }, (webSocket) => {
servicesList['sharedfolder'].setWebSocket(webSocket) servicesList['sharedfolder'].setWebSocket(webSocket)
servicesList['sharedfolder'].setupNotifications(program.sharedFolder) servicesList['sharedfolder'].setupNotifications(program.sharedFolder)
servicesList['sharedfolder'].sharedFolder(program.sharedFolder, program.readOnly) servicesList['sharedfolder'].sharedFolder(program.sharedFolder, program.readOnly)

@ -1,13 +1,14 @@
var Websocket = require('./websocket') var Websocket = require('./websocket')
class Router { class Router {
constructor (port, service, initCallback) { constructor (port, service, opt, initCallback) {
this.opt = opt
this.port = port this.port = port
this.service = service this.service = service
this.initCallback = initCallback this.initCallback = initCallback
} }
start () { start () {
var websocket = new Websocket(this.port) var websocket = new Websocket(this.port, this.opt)
this.websocket = websocket this.websocket = websocket
this.websocket.start((message) => { this.websocket.start((message) => {
this.call(message.id, message.service, message.fn, message.args) this.call(message.id, message.service, message.fn, message.args)

@ -3,9 +3,10 @@ var WebSocketServer = require('websocket').server
var http = require('http') var http = require('http')
class WebSocket { class WebSocket {
constructor (port) { constructor (port, opt) {
this.connection = null this.connection = null
this.port = port this.port = port
this.opt = opt
} }
start (callback) { start (callback) {
@ -25,7 +26,7 @@ class WebSocket {
}) })
this.wsServer.on('request', (request) => { this.wsServer.on('request', (request) => {
if (!originIsAllowed(request.origin)) { if (!originIsAllowed(request.origin, this)) {
request.reject() request.reject()
console.log((new Date()) + ' Connection from origin ' + request.origin + ' rejected.') console.log((new Date()) + ' Connection from origin ' + request.origin + ' rejected.')
return return
@ -67,9 +68,8 @@ class WebSocket {
} }
} }
function originIsAllowed (origin) { function originIsAllowed (origin, self) {
console.log('origin', origin) return origin === self.opt.remixIdeUrl
return true
} }
module.exports = WebSocket module.exports = WebSocket

Loading…
Cancel
Save