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
@@ -749,6 +749,9 @@ body.dark .profile td {
749
749
  aside {
750
750
  padding: 0 10px;
751
751
  }
752
+ aside .tab.submenu {
753
+ padding: 10px;
754
+ }
752
755
  aside .tab i {
753
756
  width: 100%;
754
757
  }
@@ -300,6 +300,7 @@ iframe {
300
300
  }
301
301
  */
302
302
  </style>
303
+ <script src="/window_storage.js"></script>
303
304
  <script src="/popper.min.js"></script>
304
305
  <script src="/tippy-bundle.umd.min.js"></script>
305
306
  <script src="/hotkeys.min.js"></script>
@@ -363,7 +364,7 @@ iframe {
363
364
  </button>
364
365
  </h1>
365
366
  </header>
366
- <iframe src="<%=src%>"></iframe>
367
+ <iframe class='mainframe' src="<%=src%>"></iframe>
367
368
  <script src="/urldropdown.js"></script>
368
369
  <script>
369
370
  // Initialize URL Dropdown with restore behavior
@@ -333,6 +333,9 @@ body.dark aside .current.selected {
333
333
  aside {
334
334
  padding: 0 10px;
335
335
  }
336
+ aside .tab.submenu {
337
+ padding: 10px;
338
+ }
336
339
  aside .tab i {
337
340
  width: 100%;
338
341
  }
@@ -1421,6 +1421,9 @@ body.dark .ace-editor {
1421
1421
  aside {
1422
1422
  padding: 0 10px;
1423
1423
  }
1424
+ aside .tab.submenu {
1425
+ padding: 10px;
1426
+ }
1424
1427
  aside .tab i {
1425
1428
  width: 100%;
1426
1429
  }
@@ -280,7 +280,7 @@ body.dark .open-menu, body.dark .browse {
280
280
  }
281
281
  .section-container {
282
282
  display: grid;
283
- grid-template-columns: repeat(3, 1fr); /* Three equal columns */
283
+ grid-template-columns: repeat(2, 1fr); /* Three equal columns */
284
284
  /*
285
285
  grid-template-columns: repeat(3, minmax(0, 1fr));
286
286
  */
@@ -445,6 +445,9 @@ body.dark .net .mark {
445
445
  aside {
446
446
  padding: 0 10px;
447
447
  }
448
+ aside .tab.submenu {
449
+ padding: 10px;
450
+ }
448
451
  aside .tab i {
449
452
  width: 100%;
450
453
  }
@@ -608,7 +611,9 @@ document.addEventListener('DOMContentLoaded', function() {
608
611
  <h3>
609
612
  <div class='item-icon'>
610
613
  <% if (item.icon) { %>
611
- <img src="<%=item.icon%>">
614
+ <div class='placeholder-icon'>
615
+ <img src="<%=item.icon%>" onerror="this.src='/pinokio-black.png'"/>
616
+ </div>
612
617
  <% } else { %>
613
618
  <div class='placeholder-icon'>
614
619
  <i class="fa-solid fa-database"></i>
@@ -619,31 +624,25 @@ document.addEventListener('DOMContentLoaded', function() {
619
624
  <div class='title'><i class="fa-solid fa-circle"></i><span><%=item.title || item.name%></span></div>
620
625
  <div class='grid-3'>
621
626
  <div class='section'>
622
- <% if (item.internal_router.length > 0) { %>
623
- <% item.internal_router.forEach((domain) => { %>
624
- <a class='net' target="_blank" href="https://<%=domain%>"><span class='mark'>HTTPS</span><span><%=domain%></span></a>
625
- <% }) %>
626
- <% } else { %>
627
- <a class='net' target="_blank" href="http://localhost:<%=item.port%>"><span class='mark'>HTTP</span><span>localhost:<%=item.port%></span></a>
627
+ <% item.internal_router.forEach((domain) => { %>
628
+ <a class='net' target="_blank" href="https://<%=domain%>">https://<%=domain%></a>
629
+ <% }) %>
630
+ <a class='net' target="_blank" href="http://localhost:<%=item.port%>">http://localhost:<%=item.port%></a>
631
+ </div>
632
+ <div class='section'>
633
+ <% if (item.external_ip) { %>
634
+ <a class='net' target="_blank" href="http://<%=item.external_ip%>">http://<%=item.external_ip%></a>
628
635
  <% } %>
629
636
  </div>
630
- <% if (item.external_router.length > 0) { %>
631
- <div class='section'>
632
- <% item.external_router.forEach((domain) => { %>
633
- <a class='net' target="_blank" href="https://<%=domain%>"><span class='mark'>HTTPS</span><span><%=domain%></span></a>
634
- <% }) %>
635
- </div>
636
- <% } else { %>
637
- <div class='section'>
638
- <% if (item.external_ip) { %>
639
- <a class='net' target="_blank" href="http://<%=item.external_ip%>"><span class='mark'>HTTP</span><span><%=item.external_ip%></span></a>
640
- <% } %>
641
- </div>
642
- <% } %>
637
+ <div class='section'>
638
+ <% item.external_router.forEach((domain) => { %>
639
+ <a class='net' target="_blank" href="https://<%=domain%>">https://<%=domain%></a>
640
+ <% }) %>
641
+ </div>
643
642
  </div>
644
643
  </div>
645
- </div>
646
- </h3>
644
+ </h3>
645
+ </div>
647
646
  <% }) %>
648
647
  <% } else { %>
649
648
  <div class='section-container'>
@@ -653,7 +652,7 @@ document.addEventListener('DOMContentLoaded', function() {
653
652
  <div class='col'>
654
653
  <div class='grid-1'>
655
654
  <div class='section'>
656
- <h2>Online</h2><div>Use these URLs to access the online remote servers.</div>
655
+ <h2><i class="fa-solid fa-plug-circle-check"></i> Online</h2><div>Use these URLs to access the online remote servers.</div>
657
656
  </div>
658
657
  </div>
659
658
  </div>
@@ -664,7 +663,7 @@ document.addEventListener('DOMContentLoaded', function() {
664
663
  <h3>
665
664
  <div class='item-icon'>
666
665
  <% if (item[`${protocol}_icon`]) { %>
667
- <img src="<%=item[`${protocol}_icon`]%>">
666
+ <img src="<%=item[`${protocol}_icon`]%>" onerror="this.src='/pinokio-black.png'"/>
668
667
  <% } else { %>
669
668
  <div class='placeholder-icon'>
670
669
  <i class="fa-solid fa-database"></i>
@@ -697,7 +696,7 @@ document.addEventListener('DOMContentLoaded', function() {
697
696
  <div class='col'>
698
697
  <div class='grid-1'>
699
698
  <div class='section'>
700
- <h2>Installed</h2><div>Remotely launch the installed apps.</div>
699
+ <h2><i class="fa-solid fa-folder-tree"></i> Installed</h2><div>Remotely launch the installed apps.</div>
701
700
  </div>
702
701
  </div>
703
702
  </div>
@@ -708,7 +707,7 @@ document.addEventListener('DOMContentLoaded', function() {
708
707
  <h3>
709
708
  <div class='item-icon'>
710
709
  <% if (item[`${protocol}_icon`]) { %>
711
- <img src="<%=item[`${protocol}_icon`]%>">
710
+ <img src="<%=item[`${protocol}_icon`]%>" onerror="this.src='/pinokio-black.png'"/>
712
711
  <% } else { %>
713
712
  <div class='placeholder-icon'>
714
713
  <i class="fa-solid fa-database"></i>
@@ -734,6 +733,7 @@ document.addEventListener('DOMContentLoaded', function() {
734
733
  </h3>
735
734
  <% }) %>
736
735
  </div>
736
+ <!--
737
737
  <div class='section-col'>
738
738
  <div class='section-header'>
739
739
  <h3>
@@ -770,6 +770,7 @@ document.addEventListener('DOMContentLoaded', function() {
770
770
  </h3>
771
771
  <% }) %>
772
772
  </div>
773
+ -->
773
774
  </div>
774
775
  <% } %>
775
776
  </div>
@@ -831,6 +832,7 @@ let filteredCount = list.length
831
832
  let filteredBtnsCount = 0
832
833
 
833
834
  const renderSearch = () => {
835
+ console.log("renderSearch")
834
836
  let target = document.querySelector("form input[type=search]")
835
837
  let result
836
838
  if (target.value.trim().length === 0) {
@@ -841,6 +843,7 @@ const renderSearch = () => {
841
843
  result = search(list, target.value)
842
844
  }
843
845
  let all = document.querySelectorAll(".line.index")
846
+ console.log("all", all)
844
847
  for(let el of all) {
845
848
  el.classList.add("hidden")
846
849
  el.classList.remove("selected")
@@ -285,7 +285,7 @@ body.dark .config {
285
285
  }
286
286
  .config {
287
287
  color: black;
288
- padding: 30px;
288
+ padding: 30px 30px 0;
289
289
  margin: 10px 0;
290
290
  }
291
291
  .config-header {
@@ -533,9 +533,14 @@ body.dark .net {
533
533
  display: block;
534
534
  background: none;
535
535
  }
536
+ form.search {
537
+ padding: 20px;
538
+ }
539
+ /*
536
540
  input[type=search] {
537
541
  visibility: hidden;
538
542
  }
543
+ */
539
544
  .line2 {
540
545
  display: flex;
541
546
  align-items: center;
@@ -673,9 +678,18 @@ body.dark .context-menu-wrapper {
673
678
  text-align: left;
674
679
  color: black;
675
680
  }
681
+ .section-header2 {
682
+ display: flex;
683
+ padding: 10px;
684
+ background: rgba(0,0,0,0.04);
685
+ font-weight: bold;
686
+ }
687
+ .section-header2 .col {
688
+ flex-grow: 1;
689
+ padding-left: 10px;
690
+ }
676
691
  .blank {
677
692
  width: 50px;
678
- height: 50px;
679
693
  flex-shrink: 0;
680
694
  }
681
695
  body.dark .section-header {
@@ -970,6 +984,9 @@ body.dark .troubleshoot {
970
984
  aside {
971
985
  padding: 0 10px;
972
986
  }
987
+ aside .tab.submenu {
988
+ padding: 10px;
989
+ }
973
990
  aside .tab i {
974
991
  width: 100%;
975
992
  }
@@ -1084,22 +1101,13 @@ document.addEventListener('DOMContentLoaded', function() {
1084
1101
  </button>
1085
1102
  </h1>
1086
1103
  </header>
1087
- <!--
1088
- <form class='search'>
1089
- <div class='app-btns'>
1090
- <a class='btn create-new' href="/init"><i class="fa-solid fa-plus"></i> Build</a>
1091
- <a class='btn' id='explore' href="/?mode=explore"><i class="fa-solid fa-magnifying-glass"></i> Discover</a>
1092
- </div>
1093
- <input type='search' class="flexible" placeholder='Filter network apps'>
1094
- </form>
1095
- -->
1096
1104
  <main>
1097
1105
  <div class='c'>
1098
1106
  <div class='container'>
1099
1107
  <div class='config'>
1100
1108
  <div class='config-header'>
1101
1109
  <div class='header-label'><i class='fa-solid fa-wifi'></i> Network Settings</div>
1102
- <div class='desc'>Instant HTTPS and Peer network for every app on your local network.</div>
1110
+ <div class='desc'>Instantly add HTTPS + CORS + Peer Sharing for every app on your local network.</div>
1103
1111
  </div>
1104
1112
  <div class='config-body'>
1105
1113
  <div class='config-row'>
@@ -1134,68 +1142,11 @@ document.addEventListener('DOMContentLoaded', function() {
1134
1142
  </div>
1135
1143
  <div class='container'>
1136
1144
  <div class='running-apps'>
1137
- <div class='section-header'>
1138
- <h3>
1139
- <div class='blank'></div>
1140
- <div class='col'>
1141
- <div class='grid-3'>
1142
- <div class='section'>
1143
- <h2><i class='fas fa-laptop-code'></i> This machine</h2>
1144
- <div>Use these URLs on this machine.</div>
1145
- </div>
1146
- <div class='section'>
1147
- <h2><i class="fa-solid fa-wifi"></i> Local network</h2><div>Use these URLs from other machines on the same local network.</div>
1148
- </div>
1149
- <div class='section'>
1150
- <h2><i class="fa-solid fa-podcast"></i> Local HTTPS network</h2><div>Use these URLs from other pinokio peers on the same local network <a class='explain' data-type='peer'>How to start a peer</a></div>
1151
- </div>
1152
- </div>
1153
- </div>
1154
- </h3>
1155
- </div>
1156
1145
  <% if (requirements_pending || peer_active && processes.length === 0) { %>
1157
1146
  <div class='loader'>
1158
1147
  <i class="fa-solid fa-circle-notch fa-spin"></i>
1159
1148
  </div>
1160
1149
  <% } %>
1161
- <% processes.forEach((item, index) => { %>
1162
- <div class='line align-top' data-index="<%=index%>" data-name="<%=item.name%>" data-title="<%=item.name%>" data-description="<%=item.internal_router.join(' ')%> <%=item.port%>">
1163
- <h3>
1164
- <div class='item-icon'>
1165
- <% if (item.icon) { %>
1166
- <div class='placeholder-icon'>
1167
- <img src="<%=item.icon%>">
1168
- </div>
1169
- <% } else { %>
1170
- <div class='placeholder-icon'>
1171
- <i class="fa-solid fa-database"></i>
1172
- </div>
1173
- <% } %>
1174
- </div>
1175
- <div class='col'>
1176
- <div class='title'><i class="fa-solid fa-circle"></i><span><%=item.title || item.name%></span></div>
1177
- <div class='grid-3'>
1178
- <div class='section'>
1179
- <% item.internal_router.forEach((domain) => { %>
1180
- <a class='net' target="_blank" href="https://<%=domain%>">https://<%=domain%></a>
1181
- <% }) %>
1182
- <a class='net' target="_blank" href="http://localhost:<%=item.port%>">http://localhost:<%=item.port%></a>
1183
- </div>
1184
- <div class='section'>
1185
- <% if (item.external_ip) { %>
1186
- <a class='net' target="_blank" href="http://<%=item.external_ip%>">http://<%=item.external_ip%></a>
1187
- <% } %>
1188
- </div>
1189
- <div class='section'>
1190
- <% item.external_router.forEach((domain) => { %>
1191
- <a class='net' target="_blank" href="https://<%=domain%>">https://<%=domain%></a>
1192
- <% }) %>
1193
- </div>
1194
- </div>
1195
- </div>
1196
- </h3>
1197
- </div>
1198
- <% }) %>
1199
1150
  <% static_routes.forEach((route, index) => { %>
1200
1151
  <div class='line align-top' data-index="<%=processes.length+index%>" data-name="<%=route.name%>" data-title="<%=route.name%>" data-description="<%=route.internal_router.join(' ')%>">
1201
1152
  <h3>
@@ -1330,12 +1281,13 @@ if (document.querySelector("#active").checked) {
1330
1281
  document.querySelector("#active").addEventListener("change", (e)=> {
1331
1282
  console.log(e.target.checked)
1332
1283
  if (e.target.checked) {
1284
+ document.querySelector("#network_name .label").innerHTML = "Network Name"
1333
1285
  document.querySelector("#network_name").classList.remove("hidden")
1334
1286
  document.querySelector(".network-name").classList.add("expanded")
1335
1287
  document.querySelector("#name").classList.remove("hidden")
1336
1288
  document.querySelector("#active-label").innerHTML = "On"
1337
1289
  } else {
1338
- document.querySelector("#network_name").classList.add("hidden")
1290
+ document.querySelector("#network_name .label").innerHTML = "Save Settings"
1339
1291
  document.querySelector(".network-name").classList.remove("expanded")
1340
1292
  document.querySelector("#name").classList.add("hidden")
1341
1293
  document.querySelector("#active-label").innerHTML = "Off"
@@ -1604,6 +1556,7 @@ setInterval(() => {
1604
1556
  })
1605
1557
  }, 2000)
1606
1558
  <% } %>
1559
+
1607
1560
  </script>
1608
1561
  </body>
1609
1562
  </html>
@@ -287,6 +287,9 @@ aside .selected {
287
287
  aside {
288
288
  padding: 0 10px;
289
289
  }
290
+ aside .tab.submenu {
291
+ padding: 10px;
292
+ }
290
293
  aside .tab i {
291
294
  width: 100%;
292
295
  }
@@ -296,6 +296,9 @@ aside .selected {
296
296
  aside {
297
297
  padding: 0 10px;
298
298
  }
299
+ aside .tab.submenu {
300
+ padding: 10px;
301
+ }
299
302
  aside .tab i {
300
303
  width: 100%;
301
304
  }
@@ -778,6 +778,9 @@ aside .selected {
778
778
  aside {
779
779
  padding: 0 10px;
780
780
  }
781
+ aside .tab.submenu {
782
+ padding: 10px;
783
+ }
781
784
  aside .tab i {
782
785
  width: 100%;
783
786
  }