pinokiod 3.51.0 → 3.53.0

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.
Files changed (117) hide show
  1. package/kernel/gitconfig_template +3 -1
  2. package/kernel/index.js +65 -43
  3. package/kernel/peer.js +21 -8
  4. package/kernel/router/index.js +10 -10
  5. package/kernel/router/localhost_static_router.js +3 -0
  6. package/kernel/router/peer_static_router.js +1 -0
  7. package/kernel/scripts/git/create +1 -2
  8. package/kernel/scripts/git/push +1 -1
  9. package/package.json +6 -2
  10. package/server/index.js +178 -87
  11. package/server/public/common.js +0 -13
  12. package/server/public/serve/directory.html +106 -0
  13. package/server/public/serve/icons/application_xp.png +0 -0
  14. package/server/public/serve/icons/application_xp_terminal.png +0 -0
  15. package/server/public/serve/icons/box.png +0 -0
  16. package/server/public/serve/icons/cd.png +0 -0
  17. package/server/public/serve/icons/controller.png +0 -0
  18. package/server/public/serve/icons/drive.png +0 -0
  19. package/server/public/serve/icons/film.png +0 -0
  20. package/server/public/serve/icons/folder.png +0 -0
  21. package/server/public/serve/icons/font.png +0 -0
  22. package/server/public/serve/icons/image.png +0 -0
  23. package/server/public/serve/icons/map.png +0 -0
  24. package/server/public/serve/icons/page.png +0 -0
  25. package/server/public/serve/icons/page_add.png +0 -0
  26. package/server/public/serve/icons/page_attach.png +0 -0
  27. package/server/public/serve/icons/page_code.png +0 -0
  28. package/server/public/serve/icons/page_copy.png +0 -0
  29. package/server/public/serve/icons/page_delete.png +0 -0
  30. package/server/public/serve/icons/page_edit.png +0 -0
  31. package/server/public/serve/icons/page_error.png +0 -0
  32. package/server/public/serve/icons/page_excel.png +0 -0
  33. package/server/public/serve/icons/page_find.png +0 -0
  34. package/server/public/serve/icons/page_gear.png +0 -0
  35. package/server/public/serve/icons/page_go.png +0 -0
  36. package/server/public/serve/icons/page_green.png +0 -0
  37. package/server/public/serve/icons/page_key.png +0 -0
  38. package/server/public/serve/icons/page_lightning.png +0 -0
  39. package/server/public/serve/icons/page_link.png +0 -0
  40. package/server/public/serve/icons/page_paintbrush.png +0 -0
  41. package/server/public/serve/icons/page_paste.png +0 -0
  42. package/server/public/serve/icons/page_red.png +0 -0
  43. package/server/public/serve/icons/page_refresh.png +0 -0
  44. package/server/public/serve/icons/page_save.png +0 -0
  45. package/server/public/serve/icons/page_white.png +0 -0
  46. package/server/public/serve/icons/page_white_acrobat.png +0 -0
  47. package/server/public/serve/icons/page_white_actionscript.png +0 -0
  48. package/server/public/serve/icons/page_white_add.png +0 -0
  49. package/server/public/serve/icons/page_white_c.png +0 -0
  50. package/server/public/serve/icons/page_white_camera.png +0 -0
  51. package/server/public/serve/icons/page_white_cd.png +0 -0
  52. package/server/public/serve/icons/page_white_code.png +0 -0
  53. package/server/public/serve/icons/page_white_code_red.png +0 -0
  54. package/server/public/serve/icons/page_white_coldfusion.png +0 -0
  55. package/server/public/serve/icons/page_white_compressed.png +0 -0
  56. package/server/public/serve/icons/page_white_copy.png +0 -0
  57. package/server/public/serve/icons/page_white_cplusplus.png +0 -0
  58. package/server/public/serve/icons/page_white_csharp.png +0 -0
  59. package/server/public/serve/icons/page_white_cup.png +0 -0
  60. package/server/public/serve/icons/page_white_database.png +0 -0
  61. package/server/public/serve/icons/page_white_delete.png +0 -0
  62. package/server/public/serve/icons/page_white_dvd.png +0 -0
  63. package/server/public/serve/icons/page_white_edit.png +0 -0
  64. package/server/public/serve/icons/page_white_error.png +0 -0
  65. package/server/public/serve/icons/page_white_excel.png +0 -0
  66. package/server/public/serve/icons/page_white_find.png +0 -0
  67. package/server/public/serve/icons/page_white_flash.png +0 -0
  68. package/server/public/serve/icons/page_white_freehand.png +0 -0
  69. package/server/public/serve/icons/page_white_gear.png +0 -0
  70. package/server/public/serve/icons/page_white_get.png +0 -0
  71. package/server/public/serve/icons/page_white_go.png +0 -0
  72. package/server/public/serve/icons/page_white_h.png +0 -0
  73. package/server/public/serve/icons/page_white_horizontal.png +0 -0
  74. package/server/public/serve/icons/page_white_key.png +0 -0
  75. package/server/public/serve/icons/page_white_lightning.png +0 -0
  76. package/server/public/serve/icons/page_white_link.png +0 -0
  77. package/server/public/serve/icons/page_white_magnify.png +0 -0
  78. package/server/public/serve/icons/page_white_medal.png +0 -0
  79. package/server/public/serve/icons/page_white_office.png +0 -0
  80. package/server/public/serve/icons/page_white_paint.png +0 -0
  81. package/server/public/serve/icons/page_white_paintbrush.png +0 -0
  82. package/server/public/serve/icons/page_white_paste.png +0 -0
  83. package/server/public/serve/icons/page_white_php.png +0 -0
  84. package/server/public/serve/icons/page_white_picture.png +0 -0
  85. package/server/public/serve/icons/page_white_powerpoint.png +0 -0
  86. package/server/public/serve/icons/page_white_put.png +0 -0
  87. package/server/public/serve/icons/page_white_ruby.png +0 -0
  88. package/server/public/serve/icons/page_white_stack.png +0 -0
  89. package/server/public/serve/icons/page_white_star.png +0 -0
  90. package/server/public/serve/icons/page_white_swoosh.png +0 -0
  91. package/server/public/serve/icons/page_white_text.png +0 -0
  92. package/server/public/serve/icons/page_white_text_width.png +0 -0
  93. package/server/public/serve/icons/page_white_tux.png +0 -0
  94. package/server/public/serve/icons/page_white_vector.png +0 -0
  95. package/server/public/serve/icons/page_white_visualstudio.png +0 -0
  96. package/server/public/serve/icons/page_white_width.png +0 -0
  97. package/server/public/serve/icons/page_white_word.png +0 -0
  98. package/server/public/serve/icons/page_white_world.png +0 -0
  99. package/server/public/serve/icons/page_white_wrench.png +0 -0
  100. package/server/public/serve/icons/page_white_zip.png +0 -0
  101. package/server/public/serve/icons/page_word.png +0 -0
  102. package/server/public/serve/icons/page_world.png +0 -0
  103. package/server/public/serve/style.css +308 -0
  104. package/server/public/style.css +13 -5
  105. package/server/public/urldropdown.css +95 -3
  106. package/server/public/urldropdown.js +245 -23
  107. package/server/serveIndex.js +691 -0
  108. package/server/views/app.ejs +305 -89
  109. package/server/views/connect.ejs +3 -0
  110. package/server/views/container.ejs +2 -1
  111. package/server/views/index.ejs +3 -0
  112. package/server/views/init/index.ejs +3 -0
  113. package/server/views/net.ejs +30 -27
  114. package/server/views/network.ejs +23 -70
  115. package/server/views/screenshots.ejs +3 -0
  116. package/server/views/settings.ejs +3 -0
  117. package/server/views/tools.ejs +3 -0
@@ -13,4 +13,6 @@
13
13
  name = pinokio
14
14
  email = pinokio
15
15
  [init]
16
- defaultBranch = main
16
+ defaultBranch = main
17
+ [push]
18
+ autoSetupRemote = true
package/kernel/index.js CHANGED
@@ -366,6 +366,10 @@ class Kernel {
366
366
  await this.peer.check(this)
367
367
  return this.peer.active
368
368
  }
369
+ async peer_active() {
370
+ await this.peer.check(this)
371
+ return this.peer.peer_active
372
+ }
369
373
  async network_installed() {
370
374
  let installed = await this.bin.check_installed({ name: "caddy" })
371
375
  return installed
@@ -386,61 +390,79 @@ class Kernel {
386
390
  }
387
391
  async refresh(notify_peers) {
388
392
  const ts = Date.now()
389
- let network_active = await this.network_active()
390
- if (!network_active) {
391
- return
392
- }
393
- let network_running = await this.network_running()
394
- if (network_running) {
395
- let ts = Date.now()
396
- if (this.processes.refreshing) {
397
- // process list refreshing. try again later
398
- return
399
- }
400
393
 
394
+ await this.peer.check(this)
395
+
396
+ if (this.peer.peer_active) {
401
397
  // 1. get the process list
402
398
  await this.processes.refresh()
403
399
 
404
400
  // 2. refresh peer info to reflect the proc info
405
401
  //await this.peer.refresh()
406
402
  await this.peer.refresh_host(this.peer.host)
403
+
404
+ }
407
405
 
408
- // 3. load custom routers from ~/pinokio/network
409
- await this.router.init()
410
406
 
411
- // 4. set current local host router info
412
- await this.router.local()
407
+ // let network_active = await this.network_active()
408
+ // if (!network_active) {
409
+ // return
410
+ // }
413
411
 
414
- // 7. update remote router
415
- await this.router.remote()
412
+ if (this.peer.https_active) {
413
+ let network_running = await this.network_running()
414
+ if (network_running) {
415
+ let ts = Date.now()
416
+ if (this.processes.refreshing) {
417
+ // process list refreshing. try again later
418
+ return
419
+ }
416
420
 
417
- await this.router.static()
421
+ // // 1. get the process list
422
+ // await this.processes.refresh()
423
+ //
424
+ // // 2. refresh peer info to reflect the proc info
425
+ // //await this.peer.refresh()
426
+ // console.log("peer refresh_host")
427
+ // await this.peer.refresh_host(this.peer.host)
418
428
 
419
- await this.router.custom_domain()
429
+ // 3. load custom routers from ~/pinokio/network
430
+ await this.router.init()
420
431
 
432
+ // 4. set current local host router info
433
+ await this.router.local()
421
434
 
422
- this.router.fallback()
435
+ // 7. update remote router
436
+ await this.router.remote()
423
437
 
424
- // 8. update caddy config
425
- await this.router.update()
438
+ await this.router.static()
439
+
440
+ await this.router.custom_domain()
441
+
442
+
443
+ this.router.fallback()
444
+
445
+ // 8. update caddy config
446
+ await this.router.update()
426
447
 
427
- // 6. tell peers to refresh
428
- let changed
429
- let new_config = JSON.stringify(await this.peer.current_host())
430
- if (this.old_config !== new_config) {
431
- console.log("Proc config has changed. update router.")
432
- changed = true
433
- } else {
434
- // console.log("Proc config is the same")
435
- changed = false
436
- }
437
- this.old_config = new_config
438
- if (changed) {
439
- await this.peer.notify_refresh()
440
448
  }
441
- // 9. announce self to the peer network
442
- this.peer.announce()
443
449
  }
450
+ // 6. tell peers to refresh
451
+ let changed
452
+ let new_config = JSON.stringify(await this.peer.current_host())
453
+ if (this.old_config !== new_config) {
454
+ console.log("Proc config has changed. update router.")
455
+ changed = true
456
+ } else {
457
+ // console.log("Proc config is the same")
458
+ changed = false
459
+ }
460
+ this.old_config = new_config
461
+ if (changed) {
462
+ await this.peer.notify_refresh()
463
+ }
464
+ // 9. announce self to the peer network
465
+ this.peer.announce()
444
466
  }
445
467
  async clearLog(group) {
446
468
  let relativePath = path.relative(this.homedir, group)
@@ -879,11 +901,11 @@ class Kernel {
879
901
  // let contents = await fs.promises.readdir(this.homedir)
880
902
  //await this.bin.init()
881
903
  let ts = Date.now()
882
- this.git.index(this).then(() => {
883
- //console.log(this.git.mapping)
884
- })
885
904
  this.bin.init().then(() => {
886
905
  if (this.homedir) {
906
+ this.git.index(this).then(() => {
907
+ //console.log(this.git.mapping)
908
+ })
887
909
  this.shell.init().then(async () => {
888
910
  this.bin.check({
889
911
  bin: this.bin.preset("ai"),
@@ -990,8 +1012,8 @@ class Kernel {
990
1012
  if (this.refresh_interval) {
991
1013
  clearInterval(this.refresh_interval)
992
1014
  }
993
- let network_active = await this.network_active()
994
- if (network_active) {
1015
+ //let network_active = await this.network_active()
1016
+ //if (network_active) {
995
1017
  this.refresh_interval = setInterval(() => {
996
1018
  if (this.server_running) {
997
1019
  this.refresh(true)
@@ -999,7 +1021,7 @@ class Kernel {
999
1021
  console.log("server not running yet. retry network refresh in 5 secs")
1000
1022
  }
1001
1023
  }, 5000)
1002
- }
1024
+ //}
1003
1025
 
1004
1026
  }
1005
1027
 
package/kernel/peer.js CHANGED
@@ -40,8 +40,8 @@ class PeerDiscovery {
40
40
  }
41
41
  async check(kernel) {
42
42
  let env = await Environment.get(kernel.homedir, kernel)
43
- //let peer_active = true
44
- let peer_active = false
43
+ let peer_active = true
44
+ //let peer_active = false
45
45
  if (env && env.PINOKIO_NETWORK_ACTIVE && (env.PINOKIO_NETWORK_ACTIVE==="1" || env.PINOKIO_NETWORK_ACTIVE.toLowerCase()==="true")) {
46
46
  //if (env && env.PINOKIO_NETWORK_ACTIVE && (env.PINOKIO_NETWORK_ACTIVE==="0" || env.PINOKIO_NETWORK_ACTIVE.toLowerCase()==="false")) {
47
47
  peer_active = true
@@ -54,10 +54,14 @@ class PeerDiscovery {
54
54
  //https_active = false
55
55
  }
56
56
  // console.log("kernel.refresh", { active, notify_peers })
57
- this.name = os.userInfo().username
57
+
58
+ //this.name = os.userInfo().username
59
+ this.name = "p" + this.host.split(".").pop()
58
60
  if (env && env.PINOKIO_NETWORK_NAME && env.PINOKIO_NETWORK_NAME.length > 0) {
59
61
  this.name = env.PINOKIO_NETWORK_NAME
60
62
  }
63
+ this.peer_active = peer_active
64
+ this.https_active = https_active
61
65
  if (peer_active && https_active) {
62
66
  this.active = true
63
67
  } else {
@@ -77,7 +81,8 @@ class PeerDiscovery {
77
81
  // this.active = true
78
82
  // }
79
83
 
80
- if (this.active) {
84
+ //if (this.active) {
85
+ if (this.peer_active) {
81
86
  // Listen for incoming pings
82
87
  this.socket = dgram.createSocket('udp4');
83
88
  this.socket.on('message', (msg, rinfo) => {
@@ -319,8 +324,8 @@ class PeerDiscovery {
319
324
  */
320
325
  let http_icon = null
321
326
  let https_icon = null
322
- let http_href = null
323
- let https_href = null
327
+ let https_href = `https://pinokio.${this.name}.localhost/p/${folder}`
328
+ let http_href = `http://${this.host}:42000/p/${folder}`
324
329
  let app_href = null
325
330
  if (meta && !meta.init_required) {
326
331
  if (meta.title) {
@@ -330,8 +335,6 @@ class PeerDiscovery {
330
335
  https_icon = `https://pinokio.${this.name}.localhost/asset/api/${folder}/${meta.iconpath}`
331
336
  }
332
337
  //https_href = `https://${folder}.${this.name}.localhost`
333
- https_href = `https://pinokio.${this.name}.localhost/p/${folder}`
334
- http_href = `http://${this.host}:42000/p/${folder}`
335
338
  app_href = `https://${folder}.${this.name}.localhost`
336
339
  installed.push({
337
340
  folder,
@@ -342,8 +345,18 @@ class PeerDiscovery {
342
345
  http_href,
343
346
  ...meta
344
347
  })
348
+ continue
345
349
  }
346
350
  }
351
+
352
+ installed.push({
353
+ folder,
354
+ https_href,
355
+ http_href,
356
+ ...meta
357
+ })
358
+
359
+
347
360
  }
348
361
  return installed
349
362
  }
@@ -217,16 +217,16 @@ class Router {
217
217
  }
218
218
 
219
219
  async static() {
220
- this.localhost_static_router.handle()
221
- for(let host in this.kernel.peer.info) {
222
- let info = this.kernel.peer.info[host]
223
- if (info.rewrite_mapping) {
224
- for(let name in info.rewrite_mapping) {
225
- this.peer_static_router.handle(info.rewrite_mapping[name])
226
- }
227
- }
228
- }
229
- this.mapping = this._mapping
220
+ // this.localhost_static_router.handle()
221
+ // for(let host in this.kernel.peer.info) {
222
+ // let info = this.kernel.peer.info[host]
223
+ // if (info.rewrite_mapping) {
224
+ // for(let name in info.rewrite_mapping) {
225
+ // this.peer_static_router.handle(info.rewrite_mapping[name])
226
+ // }
227
+ // }
228
+ // }
229
+ // this.mapping = this._mapping
230
230
  }
231
231
 
232
232
  // set local config
@@ -12,6 +12,7 @@ class LocalhostStaticRouter extends Processor {
12
12
  this.rewriter = new Rewriter(router)
13
13
  }
14
14
  handle () {
15
+ console.log("LOCALHOST STATIC ROUTER")
15
16
  let configs = []
16
17
  for(let api_name in this.router.kernel.pinokio_configs) {
17
18
  let config = this.router.kernel.pinokio_configs[api_name]
@@ -41,11 +42,13 @@ class LocalhostStaticRouter extends Processor {
41
42
  let local_dial = `${this.router.default_host}:${this.router.default_port}`
42
43
  let peer_dial = `${this.router.kernel.peer.host}:${this.router.default_port}`
43
44
  let rewrite = `/asset/api/${api_name}`
45
+ console.log("LOCALHOST REWRITE HANDLE", { rewrite, localhost_match, local_dial })
44
46
  this.rewriter.handle({
45
47
  route: rewrite,
46
48
  match: [localhost_match],
47
49
  dial: local_dial,
48
50
  })
51
+ console.log("LOCALHOST REWRITE HANDLE", { rewrite, peer_match, peer_dial })
49
52
  this.rewriter.handle({
50
53
  route: rewrite,
51
54
  match: [peer_match],
@@ -30,6 +30,7 @@ class PeerStaticRouter extends Processor {
30
30
  rewrite: /asset/api/test
31
31
  match: test.x.localhost
32
32
  */
33
+ console.log("PEER STATIC ROUTER", rewrite_mapping)
33
34
  let url = new URL("http://" + rewrite_mapping.external_ip)
34
35
  let dial = url.host
35
36
  let rewrite = url.pathname
@@ -3,9 +3,8 @@
3
3
  "method": "shell.run",
4
4
  "params": {
5
5
  "path": "{{args.cwd}}",
6
- "input": true,
7
6
  "message": [
8
- "gh repo create"
7
+ "gh repo create {{args.name}} --{{args.visibility}} --source {{args.cwd}}"
9
8
  ]
10
9
  }
11
10
  }]
@@ -5,7 +5,7 @@
5
5
  "chain": "*",
6
6
  "path": "{{args.cwd}}",
7
7
  "message": [
8
- "git push"
8
+ "git push -u"
9
9
  ]
10
10
  }
11
11
  }]
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "pinokiod",
3
- "version": "3.51.0",
3
+ "version": "3.53.0",
4
4
  "description": "",
5
5
  "main": "index.js",
6
6
  "scripts": {
@@ -13,8 +13,10 @@
13
13
  "@homebridge/node-pty-prebuilt-multiarch": "0.12.0-beta.5",
14
14
  "@xterm/headless": "^5.5.0",
15
15
  "7zip-min-win-asar-support": "^1.4.4",
16
+ "accepts": "^1.3.8",
16
17
  "async-retry": "^1.3.3",
17
18
  "axios": "^1.4.0",
19
+ "batch": "^0.6.1",
18
20
  "clear-module": "^4.1.2",
19
21
  "compressing": "^1.10.0",
20
22
  "cookie-parser": "^1.4.6",
@@ -27,6 +29,7 @@
27
29
  "dotenv": "^16.4.5",
28
30
  "ejs": "^3.1.9",
29
31
  "eol": "^0.9.1",
32
+ "escape-html": "^1.0.3",
30
33
  "express": "^4.18.2",
31
34
  "express-http-proxy-cp": "^2.0.3",
32
35
  "express-session": "^1.17.3",
@@ -38,6 +41,7 @@
38
41
  "glob-gitignore": "^1.0.14",
39
42
  "go-get-folder-size": "^0.5.5",
40
43
  "gray-matter": "^4.0.3",
44
+ "http-errors": "^2.0.0",
41
45
  "http-proxy": "^1.18.1",
42
46
  "http-proxy-middleware": "^3.0.0",
43
47
  "http-terminator": "^3.2.0",
@@ -59,6 +63,7 @@
59
63
  "node-notifier": "^10.0.1",
60
64
  "normalize-path": "^3.0.0",
61
65
  "p-limit": "^3.1.0",
66
+ "parseurl": "^1.3.3",
62
67
  "pdrive": "^0.0.27",
63
68
  "portfinder-cp": "^1.0.34",
64
69
  "proxy-agent": "^6.5.0",
@@ -67,7 +72,6 @@
67
72
  "rimraf": "^5.0.0",
68
73
  "sanitize-filename": "^1.6.3",
69
74
  "semver": "^7.5.4",
70
- "serve-index": "^1.9.1",
71
75
  "shell-path": "^2.0.0",
72
76
  "sudo-prompt-programfiles-x86": "^9.2.10",
73
77
  "symlink-dir": "^5.2.1",