isomorfeus-speednode 0.2.3 → 0.2.4

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: bdd2542ef4c9781efd0fcf05335ddba35005290a0e0ae56e496966422d66c604
4
- data.tar.gz: dd3745924f0713663d23af5ace489a3e36ac7193de2dc2719d76036d1dc5b6c5
3
+ metadata.gz: 31ef61f35fb553a911c8a0438028e1f30a42a39f67f6eac785009b9bca24ca16
4
+ data.tar.gz: 184188cc475fe8cc293857f5090a36f6df100f9592385f3b84ee5af52308991b
5
5
  SHA512:
6
- metadata.gz: 718ac1be86fce89b46ba2a957af7d1c7c8fefdbcdce86a04e715a60045c3d44913569e433114c22a4de7d827d9a789fe2c91a40f8ac402690d8cf7654300ecfc
7
- data.tar.gz: 47cf6b06bf4d37dbb24c1184f25f8a008db3bd6b646282a4f43079bef4eb55cfe52fa537c923986569bc0fdb2bd8fa442112d22a6f5f4b205f8edcddf8f76251
6
+ metadata.gz: a40508924ae7c642f72bfe8db638c3b57d36ac15e9d7c35f1db8976cd57f1a5d4b415e69c93a3e316425a993095610355cb7bd8d907ccce9d0f11f93c32c7c43
7
+ data.tar.gz: 66d5c937dc96c5bc69f1ad59ea1e67b65e77a22c308635da78d4ea7ff9e1577077820466152d079dc3cbdce9baad561ad23c304317a9b7d08af3b83487e6c285
@@ -1,7 +1,9 @@
1
+ 'use strict';
2
+
1
3
  const vm = require('vm');
2
4
  const net = require('net');
3
- var contexts = {};
4
- var process_exit = false;
5
+ let contexts = {};
6
+ let process_exit = false;
5
7
 
6
8
  /*** circular-json, originally taken from https://raw.githubusercontent.com/WebReflection/circular-json/
7
9
  Copyright (C) 2013-2017 by Andrea Giammarchi - @WebReflection
@@ -37,12 +39,12 @@ CircularJSON.safeSpecialChar = '\\x' + ('0' + CircularJSON.specialChar.charCode
37
39
  CircularJSON.escapedSafeSpecialChar = '\\' + CircularJSON.safeSpecialChar;
38
40
  CircularJSON.specialCharRG = new RegExp(CircularJSON.safeSpecialChar, 'g');
39
41
  CircularJSON.indexOf = [].indexOf || function(v){
40
- for(var i=this.length;i--&&this[i]!==v;);
42
+ for(let i=this.length;i--&&this[i]!==v;);
41
43
  return i;
42
44
  };
43
45
 
44
46
  CircularJSON.generateReplacer = function (value, replacer, resolve) {
45
- var
47
+ let
46
48
  doNotIgnore = false,
47
49
  inspect = !!replacer,
48
50
  path = [],
@@ -142,7 +144,7 @@ function massageStackTrace(stack) {
142
144
  }
143
145
 
144
146
  function createCompatibleContext() {
145
- var c = vm.createContext();
147
+ let c = vm.createContext();
146
148
  vm.runInContext('delete this.console', c, "(execjs)");
147
149
  return c;
148
150
  }
@@ -154,11 +156,12 @@ function createPermissiveContext() {
154
156
  function getCompatibleContext(uuid) {
155
157
  return contexts[uuid] || (contexts[uuid] = createCompatibleContext());
156
158
  }
159
+
157
160
  function getPermissiveContext(uuid) {
158
161
  return contexts[uuid] || (contexts[uuid] = createPermissiveContext());
159
162
  }
160
163
 
161
- var commands = {
164
+ let commands = {
162
165
  deleteContext: function(uuid) {
163
166
  delete contexts[uuid];
164
167
  return [1];
@@ -168,10 +171,10 @@ var commands = {
168
171
  return ['ok'];
169
172
  },
170
173
  execp: function execJS(input) {
171
- var context = getPermissiveContext(input.context);
174
+ let context = getPermissiveContext(input.context);
172
175
  try {
173
- var program = function(){ return vm.runInContext(input.source, context, "(execjs)"); };
174
- var result = program();
176
+ let program = function(){ return vm.runInContext(input.source, context, "(execjs)"); };
177
+ let result = program();
175
178
  if (typeof result == 'undefined' && result !== null) { return ['ok']; }
176
179
  else {
177
180
  try { return ['ok', result]; }
@@ -180,10 +183,10 @@ var commands = {
180
183
  } catch (err) { return ['err', '' + err, massageStackTrace(err.stack)]; }
181
184
  },
182
185
  exec: function execJS(input) {
183
- var context = getCompatibleContext(input.context);
186
+ let context = getCompatibleContext(input.context);
184
187
  try {
185
- var program = function(){ return vm.runInContext(input.source, context, "(execjs)"); };
186
- var result = program();
188
+ let program = function(){ return vm.runInContext(input.source, context, "(execjs)"); };
189
+ let result = program();
187
190
  if (typeof result == 'undefined' && result !== null) { return ['ok']; }
188
191
  else {
189
192
  try { return ['ok', result]; }
@@ -193,19 +196,18 @@ var commands = {
193
196
  }
194
197
  };
195
198
 
196
- var server = net.createServer(function(s) {
197
- var received_data = '';
199
+ let server = net.createServer(function(s) {
200
+ let received_data = Buffer.alloc(0);
198
201
 
199
202
  s.on('data', function (data) {
200
- received_data += data;
201
-
202
- if (!received_data.endsWith("\x04")) { return; }
203
- var request = received_data.substring(0, received_data.length - 1);
204
- received_data = '';
203
+ received_data = Buffer.concat([received_data, data]);
204
+ if (received_data[received_data.length - 1] !== 4) { return; }
205
+ let request = received_data.slice(0, received_data.length - 1).toString('utf8');
206
+ received_data = Buffer.alloc(0);
205
207
 
206
- var input = JSON.parse(request);
207
- var result = commands[input.cmd].apply(null, input.args);
208
- var outputJSON = '';
208
+ let input = JSON.parse(request);
209
+ let result = commands[input.cmd].apply(null, input.args);
210
+ let outputJSON = '';
209
211
 
210
212
  try { outputJSON = JSON.stringify(result); }
211
213
  catch(err) {
@@ -218,6 +220,6 @@ var server = net.createServer(function(s) {
218
220
  });
219
221
  });
220
222
 
221
- var socket_path = process.env.SOCKET_PATH;
223
+ let socket_path = process.env.SOCKET_PATH;
222
224
  if (!socket_path) { throw 'No SOCKET_PATH given!'; };
223
225
  server.listen(socket_path);
@@ -97,7 +97,11 @@ module Isomorfeus
97
97
 
98
98
  ObjectSpace.define_finalizer(self, self.class.finalize(@runtime, @uuid))
99
99
 
100
- source = encode(source)
100
+ begin
101
+ source = encode(source)
102
+ rescue
103
+ source = source.force_encoding('UTF-8')
104
+ end
101
105
 
102
106
  @permissive ? raw_execp(source) : raw_exec(source)
103
107
  end
@@ -1,5 +1,5 @@
1
1
  module Isomorfeus
2
2
  module Speednode
3
- VERSION = '0.2.3'
3
+ VERSION = '0.2.4'
4
4
  end
5
5
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: isomorfeus-speednode
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.3
4
+ version: 0.2.4
5
5
  platform: ruby
6
6
  authors:
7
7
  - Jan Biedermann
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2019-05-30 00:00:00.000000000 Z
11
+ date: 2019-06-04 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: execjs