greybel-mock-environment 1.2.3 → 1.2.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -3,8 +3,14 @@ import EmailGenerator from './generators/email';
3
3
  import NetworkGenerator from './generators/network';
4
4
  import UserGenerator from './generators/user';
5
5
  import VulnerabilityGenerator from './generators/vulnerability';
6
- import { Computer, EMail, Port, Router, Session, Switch } from './types';
6
+ import { Computer, Device, EMail, Location, Port, Router, Session, Switch } from './types';
7
+ export interface RouterLocation {
8
+ distance: number;
9
+ percentage: number;
10
+ router: Router;
11
+ }
7
12
  export default class MockEnvironment {
13
+ readonly WIFI_MAX_DISTANCE: number;
8
14
  seed: string;
9
15
  basicGenerator: BasicGenerator;
10
16
  emailGenerator: EmailGenerator;
@@ -29,7 +35,9 @@ export default class MockEnvironment {
29
35
  setupLocalSession(username: string, password: string): void;
30
36
  getLatestSession(): Session;
31
37
  getLocal(): Session;
38
+ connect(router: Router, device: Device): void;
32
39
  connectLocal(router: Router): void;
40
+ findRoutersCloseToLocation(loc: Location): RouterLocation[];
33
41
  getRouterByIp(ipAddress: string): Router | null;
34
42
  getSwitchByIp(ipAddress: string): Switch | null;
35
43
  findRouterViaNS(name: string): Router;
@@ -40,6 +40,7 @@ var utils_1 = require("./utils");
40
40
  var MockEnvironment = /** @class */ (function () {
41
41
  function MockEnvironment(seed, localUser) {
42
42
  if (seed === void 0) { seed = 'test'; }
43
+ this.WIFI_MAX_DISTANCE = 10;
43
44
  var me = this;
44
45
  me.seed = seed;
45
46
  me.basicGenerator = new basic_1.default({ seed: seed });
@@ -149,7 +150,7 @@ var MockEnvironment = /** @class */ (function () {
149
150
  isProtected: true,
150
151
  type: types_1.FileType.Bin
151
152
  });
152
- currentPath.putFile(programPath);
153
+ currentPath.putEntity(programPath);
153
154
  me.localSession = new types_1.Session({
154
155
  user: user,
155
156
  computer: computer,
@@ -164,21 +165,58 @@ var MockEnvironment = /** @class */ (function () {
164
165
  MockEnvironment.prototype.getLocal = function () {
165
166
  return this.localSession;
166
167
  };
167
- MockEnvironment.prototype.connectLocal = function (router) {
168
+ MockEnvironment.prototype.connect = function (router, device) {
169
+ if (!(device instanceof types_1.Computer) && !(device instanceof types_1.Switch)) {
170
+ throw new Error('Cannot connect router to router.');
171
+ }
172
+ if (device.router) {
173
+ device.router.devices.delete(device.localIp);
174
+ }
168
175
  var me = this;
169
176
  var serverMap = me.networkGenerator.serverMap;
170
177
  if (!serverMap.has(router.publicIp)) {
171
178
  throw new Error("Router with ip ".concat(router.publicIp, " is unknown in serverMap."));
172
179
  }
173
- var computer = me.localSession.computer;
174
- if (computer.router) {
175
- computer.router.devices.delete(computer.localIp);
176
- }
177
180
  var serverMapGenerator = serverMap.get(router.publicIp);
178
181
  var localIp = serverMapGenerator.generateLocalIp(router);
179
- computer.router = router;
180
- computer.localIp = localIp;
181
- router.devices.set(localIp, computer);
182
+ device.router = router;
183
+ device.localIp = localIp;
184
+ router.devices.set(localIp, device);
185
+ };
186
+ MockEnvironment.prototype.connectLocal = function (router) {
187
+ this.connect(router, this.localSession.computer);
188
+ };
189
+ MockEnvironment.prototype.findRoutersCloseToLocation = function (loc) {
190
+ var e_1, _a;
191
+ var me = this;
192
+ var getDistance = function (routerLoc) {
193
+ var y = routerLoc.x - loc.x;
194
+ var x = routerLoc.y - loc.y;
195
+ return Math.sqrt(x * x + y * y);
196
+ };
197
+ var result = [];
198
+ try {
199
+ for (var _b = __values(me.networkGenerator.serverMap.values()), _c = _b.next(); !_c.done; _c = _b.next()) {
200
+ var serverMapGenerator = _c.value;
201
+ var distance = getDistance(serverMapGenerator.router.location);
202
+ if (distance < me.WIFI_MAX_DISTANCE) {
203
+ var percentage = Math.round(((me.WIFI_MAX_DISTANCE - distance) * 100) / me.WIFI_MAX_DISTANCE);
204
+ result.push({
205
+ percentage: percentage,
206
+ distance: distance,
207
+ router: serverMapGenerator.router
208
+ });
209
+ }
210
+ }
211
+ }
212
+ catch (e_1_1) { e_1 = { error: e_1_1 }; }
213
+ finally {
214
+ try {
215
+ if (_c && !_c.done && (_a = _b.return)) _a.call(_b);
216
+ }
217
+ finally { if (e_1) throw e_1.error; }
218
+ }
219
+ return result;
182
220
  };
183
221
  MockEnvironment.prototype.getRouterByIp = function (ipAddress) {
184
222
  var me = this;
@@ -194,7 +232,7 @@ var MockEnvironment = /** @class */ (function () {
194
232
  });
195
233
  };
196
234
  MockEnvironment.prototype.getSwitchByIp = function (ipAddress) {
197
- var e_1, _a;
235
+ var e_2, _a;
198
236
  var me = this;
199
237
  if (!(0, utils_1.isValidIp)(ipAddress) || !(0, utils_1.isLanIp)(ipAddress)) {
200
238
  return null;
@@ -208,12 +246,12 @@ var MockEnvironment = /** @class */ (function () {
208
246
  }
209
247
  }
210
248
  }
211
- catch (e_1_1) { e_1 = { error: e_1_1 }; }
249
+ catch (e_2_1) { e_2 = { error: e_2_1 }; }
212
250
  finally {
213
251
  try {
214
252
  if (_c && !_c.done && (_a = _b.return)) _a.call(_b);
215
253
  }
216
- finally { if (e_1) throw e_1.error; }
254
+ finally { if (e_2) throw e_2.error; }
217
255
  }
218
256
  return null;
219
257
  };
package/dist/fs.d.ts CHANGED
@@ -1,30 +1,18 @@
1
1
  import { Service } from './types';
2
2
  import { Entity, File, Folder } from './types/file-system';
3
+ import { MetaInfo } from './types/meta-info';
3
4
  import { Port } from './types/port';
4
5
  import { User } from './types/user';
5
- export declare enum FSDeviceOwnerType {
6
- Player = 0,
7
- Npc = 1
8
- }
9
- export declare enum FSCreationVariation {
10
- Easy = 0,
11
- Medium = 1,
12
- Hard = 2
13
- }
14
- export declare enum FSDeviceType {
15
- Unknown = 0,
16
- Computer = 1,
17
- Router = 2,
18
- Switch = 3
19
- }
6
+ export declare function getLibraryFile(service: Service, parent?: Entity): File;
7
+ export declare type Files = Map<string, File>;
8
+ export declare function generateFiles(...files: File[]): Files;
9
+ export declare type Folders = Map<string, Folder>;
10
+ export declare function generateFolders(...folders: Folder[]): Folders;
20
11
  export interface FSOptions {
21
12
  users: User[];
22
- type: FSDeviceType;
23
- ownerType: FSDeviceOwnerType;
24
- difficulty?: FSCreationVariation;
13
+ meta: MetaInfo;
25
14
  parent?: Entity;
26
15
  ports?: Map<number, Port>;
27
16
  }
28
- export declare function getLibraryFile(service: Service, parent?: Entity): File;
29
17
  export declare function getUserFolder(options: FSOptions, user: string): Folder;
30
18
  export declare function getDefaultFileSystem(options: FSOptions): Folder;