From a0794f5bfb46edf2c5a2174e91b52cebcebb5d3b Mon Sep 17 00:00:00 2001 From: j Date: Tue, 30 Dec 2025 10:35:34 +1300 Subject: [PATCH] all status! --- source/src/autogen/_agent-remote.cpp | 630 ++++++++++++++---------- source/src/commands/shared_commands.cpp | 105 ++-- 2 files changed, 452 insertions(+), 283 deletions(-) diff --git a/source/src/autogen/_agent-remote.cpp b/source/src/autogen/_agent-remote.cpp index 15326fd..2468f8e 100644 --- a/source/src/autogen/_agent-remote.cpp +++ b/source/src/autogen/_agent-remote.cpp @@ -108,137 +108,110 @@ bool recreate_tree(std::string destination_folder) { namespace fs = std::filesystem; bool any_written = false; { - // File: datacommands.sh - fs::path outpath = fs::path(destination_folder) / "datacommands.sh"; - static const char filedata_base64[] = "IyEvYmluL2Jhc2gKCiMgVGhpcyBzY3JpcHQgY29udGFpbnMgdGhlIGNvbW1vbiBjb2RlIGZvciB0"\ - "aGUgYXV0b2NvbW1hbmRzLgoKTVlJRD0kKGlkIC11KQpNWUdSUD0kKGlkIC1nKQoKX2F1dG9jb21t"\ - "YW5kcnVuX3ZvbHVtZSgpIHsKICAgIGxvY2FsIGNvbW1hbmQ9IiQxIgogICAgbG9jYWwgdm9sdW1l"\ - "X25hbWU9IiQyIgogICAgbG9jYWwgYmFja3VwX2ZvbGRlcj0iJDMiCgogICAgY2FzZSAiJGNvbW1h"\ - "bmQiIGluCiAgICAgICAgY3JlYXRlKQogICAgICAgICAgICBpZiBkb2NrZXIgdm9sdW1lIGxzIHwg"\ - "Z3JlcCAtcSAiJHt2b2x1bWVfbmFtZX0iOyB0aGVuCiAgICAgICAgICAgICAgICBlY2hvICJWb2x1"\ - "bWUgJHt2b2x1bWVfbmFtZX0gYWxyZWFkeSBleGlzdHMgLSBsZWF2aW5nIHVuY2hhbmdlZCIKICAg"\ - "ICAgICAgICAgICAgIHJldHVybgogICAgICAgICAgICBmaQogICAgICAgICAgICBlY2hvICJDcmVh"\ - "dGluZyB2b2x1bWUgJHt2b2x1bWVfbmFtZX0iCiAgICAgICAgICAgIGRvY2tlciB2b2x1bWUgY3Jl"\ - "YXRlICIke3ZvbHVtZV9uYW1lfSIKICAgICAgICAgICAgOzsKICAgICAgICBkZXN0cm95KQogICAg"\ - "ICAgICAgICBlY2hvICJEZXN0cm95aW5nIHZvbHVtZSAke3ZvbHVtZV9uYW1lfSIKICAgICAgICAg"\ - "ICAgZG9ja2VyIHZvbHVtZSBybSAiJHt2b2x1bWVfbmFtZX0iCiAgICAgICAgICAgIDs7CiAgICAg"\ - "ICAgYmFja3VwKQogICAgICAgICAgICBlY2hvICJCYWNraW5nIHVwIHZvbHVtZSAke3ZvbHVtZV9u"\ - "YW1lfSIKICAgICAgICAgICAgZG9ja2VyIHJ1biAtLXJtIC12ICIke3ZvbHVtZV9uYW1lfSI6L3Zv"\ - "bHVtZSAtdiAiJHtiYWNrdXBfZm9sZGVyfSI6L2JhY2t1cCBkZWJpYW4gYmFzaCAtYyAidGFyIC1j"\ - "enZmIC9iYWNrdXAvYmFja3VwLnRneiAtQyAvdm9sdW1lIC4gJiYgY2hvd24gLVIgJE1ZSUQ6JE1Z"\ - "R1JQIC9iYWNrdXAiCiAgICAgICAgICAgIDs7CiAgICAgICAgcmVzdG9yZSkKICAgICAgICAgICAg"\ - "ZWNobyAiUmVzdG9yaW5nIHZvbHVtZSAke3ZvbHVtZV9uYW1lfSIKICAgICAgICAgICAgZG9ja2Vy"\ - "IHZvbHVtZSBybSAiJHt2b2x1bWVfbmFtZX0iCiAgICAgICAgICAgIGRvY2tlciB2b2x1bWUgY3Jl"\ - "YXRlICIke3ZvbHVtZV9uYW1lfSIKICAgICAgICAgICAgZG9ja2VyIHJ1biAtLXJtIC12ICIke3Zv"\ - "bHVtZV9uYW1lfSI6L3ZvbHVtZSAtdiAiJHtiYWNrdXBfZm9sZGVyfSI6L2JhY2t1cCBkZWJpYW4g"\ - "YmFzaCAtYyAidGFyIC14enZmIC9iYWNrdXAvYmFja3VwLnRneiAtQyAvdm9sdW1lIC0tc3RyaXAt"\ - "Y29tcG9uZW50cz0xIgogICAgICAgICAgICA7OwogICAgZXNhYwp9ICAgCgpfYXV0b2NvbW1hbmRy"\ - "dW5fcGF0aCgpIHsKICAgIGxvY2FsIGNvbW1hbmQ9IiQxIgogICAgbG9jYWwgcGF0aD0iJDIiCiAg"\ - "ICBsb2NhbCBiYWNrdXBfZm9sZGVyPSIkMyIKCiAgICBjYXNlICIkY29tbWFuZCIgaW4KICAgICAg"\ - "ICBjcmVhdGUpCiAgICAgICAgICAgIGlmIFsgLWQgIiR7cGF0aH0iIF07IHRoZW4KICAgICAgICAg"\ - "ICAgICAgIGVjaG8gIlBhdGggJHtwYXRofSBhbHJlYWR5IGV4aXN0cyAtIHVuY2hhbmdlZCIKICAg"\ - "ICAgICAgICAgICAgIHJldHVybgogICAgICAgICAgICBmaQogICAgICAgICAgICBlY2hvICJDcmVh"\ - "dGluZyBwYXRoICR7cGF0aH0iCiAgICAgICAgICAgIG1rZGlyIC1wICIke3BhdGh9IgogICAgICAg"\ - "ICAgICA7OwogICAgICAgIGRlc3Ryb3kpCiAgICAgICAgICAgIGVjaG8gIkRlc3Ryb3lpbmcgcGF0"\ - "aCAke3BhdGh9IgogICAgICAgICAgICBsb2NhbCBwYXRoX3BhcmVudDsKICAgICAgICAgICAgcGF0"\ - "aF9wYXJlbnQ9JChkaXJuYW1lICIke3BhdGh9IikKICAgICAgICAgICAgbG9jYWwgcGF0aF9jaGls"\ - "ZDsKICAgICAgICAgICAgcGF0aF9jaGlsZD0kKGJhc2VuYW1lICIke3BhdGh9IikKICAgICAgICAg"\ - "ICAgaWYgWyAtZCAiJHtwYXRoX3BhcmVudH0vJHtwYXRoX2NoaWxkfSIgXTsgdGhlbgogICAgICAg"\ - "ICAgICAgICAgZG9ja2VyIHJ1biAtLXJtIC12ICIke3BhdGhfcGFyZW50fSI6L3ZvbHVtZSBkZWJp"\ - "YW4gYmFzaCAtYyAicm0gLXJmdiAvdm9sdW1lLyR7cGF0aF9jaGlsZH0iIHx8IGVjaG8gIkZhaWxl"\ - "ZCB0byBkZXN0cm95IHBhdGggJHtwYXRofSIKICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAg"\ - "ICAgZWNobyAiUGF0aCAke3BhdGh9IGRvZXMgbm90IGV4aXN0IC0gbm90aGluZyB0byBkZXN0cm95"\ - "IgogICAgICAgICAgICBmaQogICAgICAgICAgICA7OwogICAgICAgIGJhY2t1cCkKICAgICAgICAg"\ - "ICAgZWNobyAiQmFja2luZyB1cCBwYXRoICR7cGF0aH0iCiAgICAgICAgICAgIGlmIFsgLWQgIiR7"\ - "cGF0aH0iIF07IHRoZW4KICAgICAgICAgICAgICAgIGRvY2tlciBydW4gLS1ybSAtdiAiJHtwYXRo"\ - "fSI6L3BhdGggLXYgIiR7YmFja3VwX2ZvbGRlcn0iOi9iYWNrdXAgZGViaWFuIGJhc2ggLWMgInRh"\ - "ciAtY3p2ZiAvYmFja3VwL2JhY2t1cC50Z3ogLUMgL3BhdGggLiAmJiBjaG93biAtUiAkTVlJRDok"\ - "TVlHUlAgL2JhY2t1cCIKICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAgICAgZWNobyAiUGF0"\ - "aCAke3BhdGh9IGRvZXMgbm90IGV4aXN0IC0gbm90aGluZyB0byBiYWNrdXAiCiAgICAgICAgICAg"\ - "IGZpCiAgICAgICAgICAgIDs7CiAgICAgICAgcmVzdG9yZSkKICAgICAgICAgICAgaWYgWyAhIC1m"\ - "ICIke2JhY2t1cF9mb2xkZXJ9L2JhY2t1cC50Z3oiIF07IHRoZW4KICAgICAgICAgICAgICAgIGVj"\ - "aG8gIkJhY2t1cCBmaWxlICR7YmFja3VwX2ZvbGRlcn0vYmFja3VwLnRneiBkb2VzIG5vdCBleGlz"\ - "dCAtIG5vdGhpbmcgdG8gcmVzdG9yZSIKICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAgICAg"\ - "ZWNobyAiQ2xlYXJpbmcgZXhpc3RpbmcgZGF0YSBpbiBwYXRoICR7cGF0aH0iCiAgICAgICAgICAg"\ - "ICAgICBkb2NrZXIgcnVuIC0tcm0gLXYgIiR7cGF0aH0iOi9wYXRoIGRlYmlhbiBiYXNoIC1jICJy"\ - "bSAtcmZ2IC9wYXRoL3sqLC4qfSIKICAgICAgICAgICAgICAgIGVjaG8gIlJlc3RvcmluZyBwYXRo"\ - "ICR7cGF0aH0gZnJvbSBiYWNrdXAgZmlsZSAke2JhY2t1cF9mb2xkZXJ9L2JhY2t1cC50Z3oiCiAg"\ - "ICAgICAgICAgICAgICB0YXIgLXh6dmYgIiR7YmFja3VwX2ZvbGRlcn0vYmFja3VwLnRneiIgLUMg"\ - "IiR7cGF0aH0iIC0tc3RyaXAtY29tcG9uZW50cz0xCiAgICAgICAgICAgIGZpCiAgICAgICAgICAg"\ - "IDs7CiAgICBlc2FjCn0KCl9hdXRvY29tbWFuZHJ1bl9maWxlKCkgewogICAgbG9jYWwgY29tbWFu"\ - "ZD0iJDEiCiAgICBsb2NhbCBmaWxlcGF0aD0iJDIiCiAgICBsb2NhbCBiYWNrdXBfZm9sZGVyPSIk"\ - "MyIKCiAgICBjYXNlICIkY29tbWFuZCIgaW4KICAgICAgICBjcmVhdGUpCiAgICAgICAgICAgIGxv"\ - "Y2FsIGZpbGVfcGFyZW50OwogICAgICAgICAgICBmaWxlX3BhcmVudD0kKGRpcm5hbWUgIiR7Zmls"\ - "ZXBhdGh9IikKICAgICAgICAgICAgbG9jYWwgZmlsZV9uYW1lOwogICAgICAgICAgICBmaWxlX25h"\ - "bWU9JChiYXNlbmFtZSAiJHtmaWxlcGF0aH0iKQogICAgICAgICAgICBpZiBbICEgLWQgIiR7Zmls"\ - "ZV9wYXJlbnR9IiBdOyB0aGVuCiAgICAgICAgICAgICAgICBlY2hvICJQYXJlbnQgZGlyZWN0b3J5"\ - "ICR7ZmlsZV9wYXJlbnR9IG9mICR7ZmlsZV9uYW1lfSBkb2VzIG5vdCBleGlzdCAtIGNyZWF0aW5n"\ - "IgogICAgICAgICAgICAgICAgbWtkaXIgLXAgIiR7ZmlsZV9wYXJlbnR9IgogICAgICAgICAgICBm"\ - "aQogICAgICAgICAgICA7OwogICAgICAgIGRlc3Ryb3kpCiAgICAgICAgICAgIHJtIC1mICIke2Zp"\ - "bGVwYXRofSIKICAgICAgICAgICAgOzsKICAgICAgICBiYWNrdXApCiAgICAgICAgICAgIGVjaG8g"\ - "IkJhY2tpbmcgdXAgZmlsZSAke2ZpbGVwYXRofSIKICAgICAgICAgICAgbG9jYWwgZmlsZV9wYXJl"\ - "bnQ7CiAgICAgICAgICAgIGZpbGVfcGFyZW50PSQoZGlybmFtZSAiJHtmaWxlcGF0aH0iKQogICAg"\ - "ICAgICAgICBsb2NhbCBmaWxlX25hbWU7CiAgICAgICAgICAgIGZpbGVfbmFtZT0kKGJhc2VuYW1l"\ - "ICIke2ZpbGVwYXRofSIpCiAgICAgICAgICAgIGlmIFsgLWYgIiR7ZmlsZV9wYXJlbnR9LyR7Zmls"\ - "ZV9uYW1lfSIgXTsgdGhlbgogICAgICAgICAgICAgICAgZG9ja2VyIHJ1biAtLXJtIC12ICIke2Zp"\ - "bGVfcGFyZW50fSI6L3ZvbHVtZSAtdiAiJHtiYWNrdXBfZm9sZGVyfSI6L2JhY2t1cCBkZWJpYW4g"\ - "YmFzaCAtYyAiY3AgL3ZvbHVtZS8ke2ZpbGVfbmFtZX0gL2JhY2t1cC8ke2ZpbGVfbmFtZX0gJiYg"\ - "Y2hvd24gLVIgJE1ZSUQ6JE1ZR1JQIC9iYWNrdXAiCiAgICAgICAgICAgIGVsc2UKICAgICAgICAg"\ - "ICAgICAgIGVjaG8gIkZpbGUgJHtmaWxlcGF0aH0gZG9lcyBub3QgZXhpc3QgLSBub3RoaW5nIHRv"\ - "IGJhY2t1cCIKICAgICAgICAgICAgZmkKICAgICAgICAgICAgOzsKICAgICAgICByZXN0b3JlKQog"\ - "ICAgICAgICAgICBlY2hvICJSZXN0b3JpbmcgZmlsZSAke2ZpbGVwYXRofSIKICAgICAgICAgICAg"\ - "bG9jYWwgZmlsZV9uYW1lOwogICAgICAgICAgICBmaWxlX25hbWU9JChiYXNlbmFtZSAiJHtmaWxl"\ - "cGF0aH0iKQogICAgICAgICAgICBybSAtZiAiJHtmaWxlcGF0aH0iIHx8IHJldHVybl9kaWUgIlVu"\ - "YWJsZSB0byByZW1vdmUgZXhpc3RpbmcgZmlsZSAke2ZpbGVwYXRofSwgcmVzdG9yZSBmYWlsZWQu"\ - "IgogICAgICAgICAgICBjcCAiJHtiYWNrdXBfZm9sZGVyfS8ke2ZpbGVfbmFtZX0iICIke2ZpbGVw"\ - "YXRofSIgfHwgcmV0dXJuX2RpZSAiVW5hYmxlIHRvIGNvcHkgZmlsZSAke2JhY2t1cF9mb2xkZXJ9"\ - "LyR7ZmlsZV9uYW1lfSB0byAke2ZpbGVwYXRofSwgcmVzdG9yZSBmYWlsZWQuIgogICAgICAgICAg"\ - "ICA7OwogICAgZXNhYwp9CgpfYXV0b2NvbW1hbmRwYXJzZSgpIHsKICAgICMgZmlyc3QgYXJndW1l"\ - "bnQgaXMgdGhlIGNvbW1hbmQKICAgICMgaWYgdGhlIGNvbW1hbmQgaXMgYmFja3VwIG9yIHJlc3Rv"\ - "cmUsIHRoZW4gdGhlIGxhc3QgdHdvIGFyZ3VtZW50cyBhcmUgdGhlIGJhY2t1cCBmaWxlIGFuZCB0"\ - "aGUgdGVtcG9yYXJ5IHBhdGgKICAgICMgYWxsIG90aGVyIGFyZ3VtZW50cyBhcmUgb2YgZm9ybToK"\ - "ICAgICMga2V5PXZhbHVlCiAgICAjIHdoZXJlIGtleSBjYW4gYmUgb25lIG9mIHZvbHVtZSwgcGF0"\ - "aCBvciBmaWxlLgogICAgIyB2YWx1ZSBpcyB0aGUgcGF0aCBvciB2b2x1bWUgbmFtZS4KCiAgICAj"\ - "IHdlIGl0ZXJhdGUgb3ZlciB0aGUga2V5PXZhbHVlIGFyZ3VtZW50cywgYW5kIGZvciBlYWNoIHdl"\ - "IGNhbGw6CiAgICAjICAgIGF1dG9ydW4gPGNvbW1hbmQ+IDxiYWNrdXBmaWxlPiA8a2V5PiA8dmFs"\ - "dWU+CgogICAgbG9jYWwgY29tbWFuZD0iJDEiCiAgICBzaGlmdAoKICAgIGxvY2FsIGJhY2t1cF90"\ - "ZW1wX3BhdGg9IiQxIgogICAgc2hpZnQKCiAgICBlY2hvICJhdXRvY29tbWFuZHBhcnNlOiBjb21t"\ - "YW5kPSRjb21tYW5kIGJhY2t1cF90ZW1wX3BhdGg9JGJhY2t1cF90ZW1wX3BhdGgiCgogICAgIyBF"\ - "eHRyYWN0IHRoZSBiYWNrdXAgZmlsZSBhbmQgdGVtcCBwYXRoIChsYXN0IHR3byBhcmd1bWVudHMp"\ - "CiAgICBsb2NhbCBhcmdzPSgiJEAiKQogICAgbG9jYWwgYXJnX2NvdW50PSR7I2FyZ3NbQF19CiAg"\ - "ICAKICAgICMgUHJvY2VzcyBhbGwga2V5PXZhbHVlIHBhaXJzCiAgICBmb3IgKChpPTA7IGk8JGFy"\ - "Z19jb3VudDsgaSsrKSk7IGRvCiAgICAgICAgbG9jYWwgcGFpcj0iJHthcmdzWyRpXX0iCiAgICAg"\ - "ICAgCiAgICAgICAgIyBTa2lwIGlmIG5vdCBpbiBrZXk9dmFsdWUgZm9ybWF0CiAgICAgICAgaWYg"\ - "W1sgIiRwYWlyIiAhPSAqIj0iKiBdXTsgdGhlbgogICAgICAgICAgICBjb250aW51ZQogICAgICAg"\ - "IGZpCiAgICAgICAgCiAgICAgICAgbG9jYWwga2V5PSIke3BhaXIlJT0qfSIKICAgICAgICBsb2Nh"\ - "bCB2YWx1ZT0iJHtwYWlyIyo9fSIKCiAgICAgICAgIyBjcmVhdGUgYmFja3VwIGZvbGRlciB1bmlx"\ - "dWUgdG8ga2V5L3ZhbHVlLgogICAgICAgIGxvY2FsIGJmb2xkZXI7CiAgICAgICAgYmZvbGRlcj0k"\ - "KGVjaG8gIiR7a2V5fV8ke3ZhbHVlfSIgfCB0ciAtY2QgJ1s6YWxudW06XV8tJykKICAgICAgICBs"\ - "b2NhbCB0YXJnZXRwYXRoPSIke2JhY2t1cF90ZW1wX3BhdGh9LyR7YmZvbGRlcn0iCiAgICAgICAg"\ - "bWtkaXIgLXAgIiR7dGFyZ2V0cGF0aH0iCgogICAgICAgICMgS2V5IG11c3QgYmUgb25lIG9mIHZv"\ - "bHVtZSwgcGF0aCBvciBmaWxlCiAgICAgICAgY2FzZSAiJGtleSIgaW4KICAgICAgICAgICAgdm9s"\ - "dW1lKQogICAgICAgICAgICAgICAgX2F1dG9jb21tYW5kcnVuX3ZvbHVtZSAiJGNvbW1hbmQiICIk"\ - "dmFsdWUiICIkdGFyZ2V0cGF0aCIKICAgICAgICAgICAgICAgIDs7CiAgICAgICAgICAgIHBhdGgp"\ - "CiAgICAgICAgICAgICAgICBfYXV0b2NvbW1hbmRydW5fcGF0aCAiJGNvbW1hbmQiICIkdmFsdWUi"\ - "ICIkdGFyZ2V0cGF0aCIKICAgICAgICAgICAgICAgIDs7CiAgICAgICAgICAgIGZpbGUpCiAgICAg"\ - "ICAgICAgICAgICBfYXV0b2NvbW1hbmRydW5fZmlsZSAiJGNvbW1hbmQiICIkdmFsdWUiICIkdGFy"\ - "Z2V0cGF0aCIKICAgICAgICAgICAgICAgIDs7CiAgICAgICAgICAgICopCiAgICAgICAgICAgICAg"\ - "ICBfZGllICJVbmtub3duIGtleSAka2V5IHBhc3NlZCB0byBhdXRvJHtjb21tYW5kfS4gV2Ugb25s"\ - "eSBzdXBwb3J0IHZvbHVtZSwgcGF0aCBhbmQgZmlsZS4iCiAgICAgICAgICAgICAgICA7OwogICAg"\ - "ICAgIGVzYWMKICAgIGRvbmUKfQoKCmRhdGFjcmVhdGUoKSB7CiAgICBfYXV0b2NvbW1hbmRwYXJz"\ - "ZSBjcmVhdGUgbm9uZSAiJEAiCn0KCgpkYXRhZGVzdHJveSgpIHsKICAgIF9hdXRvY29tbWFuZHBh"\ - "cnNlIGRlc3Ryb3kgbm9uZSAiJEAiCn0KCmRhdGFiYWNrdXAoKSB7CiAgICBfY2hlY2tfcmVxdWly"\ - "ZWRfZW52X3ZhcnMgIkJBQ0tVUF9GSUxFIiAiVEVNUF9ESVIiCiAgICBCQUNLVVBfVEVNUF9QQVRI"\ - "PSIkVEVNUF9ESVIvYmFja3VwIgoKCiAgICBta2RpciAtcCAiJEJBQ0tVUF9URU1QX1BBVEgiCiAg"\ - "ICBlY2hvICJfYXV0b2NvbW1hbmRwYXJzZSBbYmFja3VwXSBbJEJBQ0tVUF9URU1QX1BBVEhdIiAi"\ - "JEAiCiAgICBfYXV0b2NvbW1hbmRwYXJzZSBiYWNrdXAgIiRCQUNLVVBfVEVNUF9QQVRIIiAiJEAi"\ - "CgogICAgdGFyIHpjdmYgIiRCQUNLVVBfRklMRSIgLUMgIiRCQUNLVVBfVEVNUF9QQVRIIiAuCn0K"\ - "CmRhdGFyZXN0b3JlKCkgewogICAgX2NoZWNrX3JlcXVpcmVkX2Vudl92YXJzICJCQUNLVVBfRklM"\ - "RSIgIlRFTVBfRElSIgogICAgQkFDS1VQX1RFTVBfUEFUSD0iJFRFTVBfRElSL3Jlc3RvcmUiCgog"\ - "ICAgZWNobyAiX2F1dG9jb21tYW5kcGFyc2UgW3Jlc3RvcmVdIFskQkFDS1VQX1RFTVBfUEFUSF0i"\ - "ICIkQCIKCiAgICBta2RpciAtcCAiJEJBQ0tVUF9URU1QX1BBVEgiCiAgICB0YXIgenh2ZiAiJEJB"\ - "Q0tVUF9GSUxFIiAtQyAiJEJBQ0tVUF9URU1QX1BBVEgiIC0tc3RyaXAtY29tcG9uZW50cz0xCgog"\ - "ICAgX2F1dG9jb21tYW5kcGFyc2UgcmVzdG9yZSAiJEJBQ0tVUF9URU1QX1BBVEgiICIkQCIKfQo="; + // File: common.sh + fs::path outpath = fs::path(destination_folder) / "common.sh"; + static const char filedata_base64[] = "IyBDT01NT04gRlVOQ1RJT05TCiMgSkRFCiMgMjAyNS0wNS0wMwoKIyBUaGlzIGZpbGUgaXMgYXZh"\ + "aWxhYmxlIFRPICoqKkFMTCoqKiB0ZW1wbGF0ZXMsIGFzICR7QUdFTlRfUEFUSH0vX2NvbW1vbi5z"\ + "aAoKIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t"\ + "LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCgoj"\ + "IHN1bW1hcnkgb2YgZnVuY3Rpb25zOgojICAgX2RpZSAibWVzc2FnZSIgICAgICAgICAgICAgICAg"\ + "ICAgICAgICAgOiBQcmludHMgYW4gZXJyb3IgbWVzc2FnZSBpbiByZWQgYW5kIGV4aXRzIHdpdGgg"\ + "c3RhdHVzIGNvZGUgMS4KIyAgIF9ncmV5X3N0YXJ0ICAgICAgICAgICAgICAgICAgICAgICAgICAg"\ + "IDogU3dpdGNoZXMgdGVybWluYWwgb3V0cHV0IGNvbG9yIHRvIGdyZXkuCiMgICBfZ3JleV9lbmQg"\ + "ICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IFJlc2V0cyB0ZXJtaW5hbCBvdXRwdXQgY29s"\ + "b3IgZnJvbSBncmV5LgojICAgX2NyZWF0ZV9hbmRfc3RhcnRfY29udGFpbmVyICI8cnVuX2NtZD4i"\ + "IDxjb250YWluZXJfbmFtZT4gOiBDcmVhdGVzL3N0YXJ0cyBhIGNvbnRhaW5lciwgdmVyaWZ5aW5n"\ + "IGl0IHJ1bnMuCiMgICBfY3JlYXRlX2ZvbGRlciA8Zm9sZGVyX3BhdGg+ICAgICAgICAgICA6IENy"\ + "ZWF0ZXMgYSBkaXJlY3RvcnkgaWYgaXQgZG9lc24ndCBleGlzdCAoY2htb2QgNzc3KS4KIyAgIF9j"\ + "aGVja19kb2NrZXJfaW5zdGFsbGVkICAgICAgICAgICAgICAgOiBDaGVja3MgaWYgRG9ja2VyIGlz"\ + "IGluc3RhbGxlZCwgcnVubmluZywgYW5kIHVzZXIgaGFzIHBlcm1pc3Npb24uIFJldHVybnMgMSBv"\ + "biBmYWlsdXJlLgojICAgX2lzX2NvbnRhaW5lcl9leGlzdHMgPGNvbnRhaW5lcl9uYW1lPiA6IENo"\ + "ZWNrcyBpZiBhIGNvbnRhaW5lciAoYW55IHN0YXRlKSBleGlzdHMuIFJldHVybnMgMSBpZiBub3Qg"\ + "Zm91bmQuCiMgICBfaXNfY29udGFpbmVyX3J1bm5pbmcgPGNvbnRhaW5lcl9uYW1lPjogQ2hlY2tz"\ + "IGlmIGEgY29udGFpbmVyIGlzIGN1cnJlbnRseSBydW5uaW5nLiBSZXR1cm5zIDEgaWYgbm90IHJ1"\ + "bm5pbmcuCiMgICBfZ2V0X2NvbnRhaW5lcl9pZCA8Y29udGFpbmVyX25hbWU+ICAgIDogUHJpbnRz"\ + "IHRoZSBJRCBvZiB0aGUgbmFtZWQgY29udGFpbmVyLgojICAgX2dldF9jb250YWluZXJfc3RhdHVz"\ + "IDxjb250YWluZXJfbmFtZT46IFByaW50cyB0aGUgc3RhdHVzIHN0cmluZyBvZiB0aGUgbmFtZWQg"\ + "Y29udGFpbmVyLgojICAgX3N0YXJ0X2NvbnRhaW5lciA8Y29udGFpbmVyX25hbWU+ICAgICA6IFN0"\ + "YXJ0cyBhbiBleGlzdGluZywgc3RvcHBlZCBjb250YWluZXIuCiMgICBfc3RvcF9jb250YWluZXIg"\ + "PGNvbnRhaW5lcl9uYW1lPiAgICAgIDogU3RvcHMgYSBydW5uaW5nIGNvbnRhaW5lci4KIyAgIF9y"\ + "ZW1vdmVfY29udGFpbmVyIDxjb250YWluZXJfbmFtZT4gICAgOiBTdG9wcyAoaWYgbmVlZGVkKSBh"\ + "bmQgcmVtb3ZlcyBhIGNvbnRhaW5lci4KIyAgIF9nZXRfY29udGFpbmVyX2xvZ3MgPGNvbnRhaW5l"\ + "cl9uYW1lPiAgOiBQcmludHMgdGhlIGxvZ3MgZm9yIGEgY29udGFpbmVyLgojICAgX2NoZWNrX3Jl"\ + "cXVpcmVkX2Vudl92YXJzICJWQVIxIiAuLi4gICAgOiBDaGVja3MgaWYgbGlzdGVkIGVudmlyb25t"\ + "ZW50IHZhcmlhYmxlcyBhcmUgc2V0OyBjYWxscyBfZGllKCkgaWYgYW55IGFyZSBtaXNzaW5nLgoj"\ + "ICAgX3Jvb3RfcmVtb3ZlX3RyZWUgPHBhdGg+ICAgICAgICAgICAgICA6IFJlbW92ZXMgYSBwYXRo"\ + "IHVzaW5nIGEgcm9vdCBEb2NrZXIgY29udGFpbmVyIChmb3IgcGVybWlzc2lvbnMpLgoKIyAtLS0t"\ + "LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t"\ + "LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCgojIFByaW50cyBh"\ + "biBlcnJvciBtZXNzYWdlIGluIHJlZCBhbmQgZXhpdHMgd2l0aCBzdGF0dXMgY29kZSAxLgpfZGll"\ + "KCkgewogICAgZWNobyAtZSAiRXJyb3I6ICQxIgogICAgZXhpdCAxCn0KCiMgQ3JlYXRlcy9zdGFy"\ + "dHMgYSBjb250YWluZXIsIHZlcmlmeWluZyBpdCBydW5zLgpfY3JlYXRlX2FuZF9zdGFydF9jb250"\ + "YWluZXIoKSB7CiAgICBpZiBbIC16ICIkMSIgXSB8fCBbIC16ICIkMiIgXTsgdGhlbgogICAgICAg"\ + "IF9kaWUgIlRlbXBsYXRlIGVycm9yOiBjcmVhdGVfYW5kX3N0YXJ0X2NvbnRhaW5lciA8cnVuX2Nt"\ + "ZD4gPGNvbnRhaW5lcl9uYW1lPiIKICAgIGZpCgogICAgbG9jYWwgcnVuX2NtZD0iJDEiCiAgICBs"\ + "b2NhbCBjb250YWluZXJfbmFtZT0iJDIiCgogICAgaWYgX2lzX2NvbnRhaW5lcl9leGlzdHMgIiRj"\ + "b250YWluZXJfbmFtZSI7IHRoZW4KICAgICAgICBfaXNfY29udGFpbmVyX3J1bm5pbmcgIiRjb250"\ + "YWluZXJfbmFtZSIgJiYgcmV0dXJuIDAKICAgICAgICBfc3RhcnRfY29udGFpbmVyICIkY29udGFp"\ + "bmVyX25hbWUiCiAgICBlbHNlCiAgICAgICAgJHJ1bl9jbWQKICAgIGZpCgogICAgaWYgISBfaXNf"\ + "Y29udGFpbmVyX3J1bm5pbmcgIiRjb250YWluZXJfbmFtZSI7IHRoZW4KICAgICAgICBfZGllICJD"\ + "b250YWluZXIgJHtjb250YWluZXJfbmFtZX0gZmFpbGVkIHRvIHN0YXJ0IgogICAgZmkKCiAgICBJ"\ + "RD0kKF9nZXRfY29udGFpbmVyX2lkICIkY29udGFpbmVyX25hbWUiKQogICAgZWNobyAiQ29udGFp"\ + "bmVyICR7Y29udGFpbmVyX25hbWV9IGlzIHJ1bm5pbmcgd2l0aCBJRCAke0lEfSIKfQoKIyBDcmVh"\ + "dGVzIGEgZGlyZWN0b3J5IGlmIGl0IGRvZXNuJ3QgZXhpc3QgKGNobW9kIDc3NykuCl9jcmVhdGVf"\ + "Zm9sZGVyKCkgewogICAgbG9jYWwgZm9sZGVyPSIkMSIKICAgIGlmIFsgLWQgIiRmb2xkZXIiIF07"\ + "IHRoZW4KICAgICAgICByZXR1cm4gMAogICAgZmkKICAgIGlmICEgbWtkaXIgLXAgIiRmb2xkZXIi"\ + "OyB0aGVuCiAgICAgICAgX2RpZSAiRmFpbGVkIHRvIGNyZWF0ZSBmb2xkZXI6ICRmb2xkZXIiCiAg"\ + "ICBmaQogICAgY2htb2QgNzc3ICIkZm9sZGVyIgogICAgZWNobyAiRm9sZGVyIGNyZWF0ZWQ6ICRm"\ + "b2xkZXIiCn0KCiMgQ2hlY2tzIGlmIERvY2tlciBpcyBpbnN0YWxsZWQsIHJ1bm5pbmcsIGFuZCB1"\ + "c2VyIGhhcyBwZXJtaXNzaW9uLiBSZXR1cm5zIDEgb24gZmFpbHVyZS4KX2NoZWNrX2RvY2tlcl9p"\ + "bnN0YWxsZWQoKSB7CiAgICBpZiAhIGNvbW1hbmQgLXYgZG9ja2VyICY+IC9kZXYvbnVsbDsgdGhl"\ + "bgogICAgICAgIGVjaG8gIkRvY2tlciBpcyBub3QgaW5zdGFsbGVkIgogICAgICAgIHJldHVybiAx"\ + "CiAgICBmaQoKICAgICMgY2hlY2sgaWYgZG9ja2VyIGRhZW1vbiBpcyBydW5uaW5nCiAgICBpZiAh"\ + "IGRvY2tlciBpbmZvICY+IC9kZXYvbnVsbDsgdGhlbgogICAgICAgIGVjaG8gIkRvY2tlciBkYWVt"\ + "b24gaXMgbm90IHJ1bm5pbmciCiAgICAgICAgcmV0dXJuIDEKICAgIGZpCgogICAgIyBjaGVjayBp"\ + "ZiB1c2VyIGhhcyBwZXJtaXNzaW9uIHRvIHJ1biBkb2NrZXIKICAgIGlmICEgZG9ja2VyIHJ1biAt"\ + "LXJtIGhlbGxvLXdvcmxkICY+IC9kZXYvbnVsbDsgdGhlbgogICAgICAgIGVjaG8gIlVzZXIgZG9l"\ + "cyBub3QgaGF2ZSBwZXJtaXNzaW9uIHRvIHJ1biBkb2NrZXIiCiAgICAgICAgcmV0dXJuIDEKICAg"\ + "IGZpCgogICAgcmV0dXJuIDAKfQoKIyBDaGVja3MgaWYgYSBjb250YWluZXIgKGFueSBzdGF0ZSkg"\ + "ZXhpc3RzLiBSZXR1cm5zIDEgaWYgbm90IGZvdW5kLgpfaXNfY29udGFpbmVyX2V4aXN0cygpIHsK"\ + "ICAgIFsgLW4gIiR7MTotfSIgXSB8fCB7IGVjaG8gIl9pc19jb250YWluZXJfZXhpc3RzOiBDb250"\ + "YWluZXIgbmFtZSBpcyBlbXB0eSIgPiYyOyByZXR1cm4gMTsgfQogICAgaWYgISBkb2NrZXIgcHMg"\ + "LWEgLS1mb3JtYXQgInt7Lk5hbWVzfX0iIHwgZ3JlcCAtcSAiXiQxJCI7IHRoZW4KICAgICAgICBy"\ + "ZXR1cm4gMQogICAgZmkKICAgIHJldHVybiAwCn0KCiMgQ2hlY2tzIGlmIGEgY29udGFpbmVyIGlz"\ + "IGN1cnJlbnRseSBydW5uaW5nLiBSZXR1cm5zIDEgaWYgbm90IHJ1bm5pbmcuCl9pc19jb250YWlu"\ + "ZXJfcnVubmluZygpIHsKICAgIFsgLW4gIiR7MTotfSIgXSB8fCB7IGVjaG8gIl9pc19jb250YWlu"\ + "ZXJfcnVubmluZzogQ29udGFpbmVyIG5hbWUgaXMgZW1wdHkiID4mMjsgcmV0dXJuIDE7IH0KICAg"\ + "IGlmICEgZG9ja2VyIHBzIC0tZm9ybWF0ICJ7ey5OYW1lc319IiB8IGdyZXAgLXEgIl4kMSQiOyB0"\ + "aGVuCiAgICAgICAgcmV0dXJuIDEKICAgIGZpCiAgICByZXR1cm4gMAp9CgojIFByaW50cyB0aGUg"\ + "SUQgb2YgdGhlIG5hbWVkIGNvbnRhaW5lci4KX2dldF9jb250YWluZXJfaWQoKSB7CiAgICBkb2Nr"\ + "ZXIgcHMgLS1mb3JtYXQgInt7LklEfX0iIC0tZmlsdGVyICJuYW1lPSQxIgp9CgojIFByaW50cyB0"\ + "aGUgc3RhdHVzIHN0cmluZyBvZiB0aGUgbmFtZWQgY29udGFpbmVyLgpfZ2V0X2NvbnRhaW5lcl9z"\ + "dGF0dXMoKSB7CiAgICBkb2NrZXIgcHMgLS1mb3JtYXQgInt7LlN0YXR1c319IiAtLWZpbHRlciAi"\ + "bmFtZT0kMSIKfQoKIyBTdGFydHMgYW4gZXhpc3RpbmcsIHN0b3BwZWQgY29udGFpbmVyLgpfc3Rh"\ + "cnRfY29udGFpbmVyKCkgewogICAgX2lzX2NvbnRhaW5lcl9leGlzdHMgIiQxIiB8fCByZXR1cm4g"\ + "MQogICAgX2lzX2NvbnRhaW5lcl9ydW5uaW5nICIkMSIgJiYgcmV0dXJuIDAKICAgIGRvY2tlciBz"\ + "dGFydCAiJDEiCn0KCiMgU3RvcHMgYSBydW5uaW5nIGNvbnRhaW5lci4KX3N0b3BfY29udGFpbmVy"\ + "KCkgewogICAgX2lzX2NvbnRhaW5lcl9ydW5uaW5nICIkMSIgfHwgcmV0dXJuIDA7CiAgICBkb2Nr"\ + "ZXIgc3RvcCAiJDEiCn0gICAKCiMgU3RvcHMgKGlmIG5lZWRlZCkgYW5kIHJlbW92ZXMgYSBjb250"\ + "YWluZXIuCl9yZW1vdmVfY29udGFpbmVyKCkgewogICAgX3N0b3BfY29udGFpbmVyICIkMSIKICAg"\ + "IF9pc19jb250YWluZXJfZXhpc3RzICIkMSIgfHwgcmV0dXJuIDA7CiAgICBkb2NrZXIgcm0gIiQx"\ + "Igp9CgojIFByaW50cyB0aGUgbG9ncyBmb3IgYSBjb250YWluZXIuCl9nZXRfY29udGFpbmVyX2xv"\ + "Z3MoKSB7CiAgICBpZiAhIF9pc19jb250YWluZXJfZXhpc3RzICIkMSI7IHRoZW4KICAgICAgICBl"\ + "Y2hvICJDb250YWluZXIgJDEgZG9lcyBub3QgZXhpc3QiCiAgICAgICAgcmV0dXJuIDEKICAgIGZp"\ + "CgogICAgZG9ja2VyIGxvZ3MgIiQxIgp9CgojIENoZWNrcyBpZiBsaXN0ZWQgZW52aXJvbm1lbnQg"\ + "dmFyaWFibGVzIGFyZSBzZXQ7IGNhbGxzIF9kaWUoKSBpZiBhbnkgYXJlIG1pc3NpbmcuCl9jaGVj"\ + "a19yZXF1aXJlZF9lbnZfdmFycygpIHsKICAgIGxvY2FsIHJlcXVpcmVkX3ZhcnM9KCIkQCIpCiAg"\ + "ICBmb3IgdmFyIGluICIke3JlcXVpcmVkX3ZhcnNbQF19IjsgZG8KICAgICAgICBpZiBbIC16ICIk"\ + "eyF2YXI6LX0iIF07IHRoZW4KICAgICAgICAgICAgX2RpZSAiUmVxdWlyZWQgZW52aXJvbm1lbnQg"\ + "dmFyaWFibGUgJHZhciBpcyBub3Qgc2V0IgogICAgICAgIGZpCiAgICBkb25lCn0KCiMgUmVtb3Zl"\ + "cyBhIHBhdGggdXNpbmcgYSByb290IERvY2tlciBjb250YWluZXIgKGZvciBwZXJtaXNzaW9ucyku"\ + "Cl9yb290X3JlbW92ZV90cmVlKCkgewogICAgbG9jYWwgdG9fcmVtb3ZlPSIkMSIKICAgIHBhcmVu"\ + "dD0kKGRpcm5hbWUgIiR0b19yZW1vdmUiKQogICAgYWJzX3BhcmVudD0kKHJlYWxwYXRoICIkcGFy"\ + "ZW50IikKICAgIGNoaWxkPSQoYmFzZW5hbWUgIiR0b19yZW1vdmUiKQogICAgZG9ja2VyIHJ1biAt"\ + "LXJtIC12ICIkYWJzX3BhcmVudCI6L2RhdGEgYWxwaW5lIHJtIC1yZiAiL2RhdGEvJGNoaWxkIgp9"\ + "CgojIExvYWQgYXV0b2NvbW1hbmRzCnNvdXJjZSAiJHtBR0VOVF9QQVRIfS9kYXRhY29tbWFuZHNf"\ + "djIuc2gi"; // Decode Base64 data size_t decoded_size = (strlen(filedata_base64) * 3) / 4; @@ -246,7 +219,70 @@ bool recreate_tree(std::string destination_folder) { size_t actual_size; base64_decode(filedata_base64, strlen(filedata_base64), decoded_data, &actual_size); - bool file_written = _recreate_file_(outpath, 11153801105139786982ULL, std::filesystem::perms(509), decoded_data, actual_size); + bool file_written = _recreate_file_(outpath, 325502528690785098ULL, std::filesystem::perms(509), decoded_data, actual_size); + delete[] decoded_data; + any_written = any_written || file_written; + } + { + // File: all_status.sh + fs::path outpath = fs::path(destination_folder) / "all_status.sh"; + static const char filedata_base64[] = "IyEvYmluL2Jhc2gKc2V0IC11byBwaXBlZmFpbAoKIyBhbGxfc3RhdHVzLnNoIC0gR2V0IHN0YXR1"\ + "cyBhbmQgcG9ydHMgZm9yIGFsbCBzZXJ2aWNlcyBvbiB0aGlzIHNlcnZlcgojCiMgVXNhZ2U6IGFs"\ + "bF9zdGF0dXMuc2gKIwojIE91dHB1dDogSlNPTiBvYmplY3Qgd2l0aCBzdGF0dXMgYW5kIHBvcnRz"\ + "IGZvciBlYWNoIHNlcnZpY2UKIyB7CiMgICAic2VydmljZXMiOiBbCiMgICAgIHsKIyAgICAgICAi"\ + "bmFtZSI6ICJzZXJ2aWNlLW5hbWUiLAojICAgICAgICJzdGF0dXMiOiAiUnVubmluZ3xTdG9wcGVk"\ + "fEVycm9yfFVua25vd24iLAojICAgICAgICJwb3J0cyI6ICJwb3J0IG91dHB1dCBvciBlbXB0eSIK"\ + "IyAgICAgfSwKIyAgICAgLi4uCiMgICBdCiMgfQoKIyAtLSBEZXRlcm1pbmUgcGF0aHMgLS0KU0NS"\ + "SVBUX1BBVEg9IiQocmVhZGxpbmsgLWYgIiR7QkFTSF9TT1VSQ0VbMF19IikiCkFHRU5UX1BBVEg9"\ + "IiQoZGlybmFtZSAiJHtTQ1JJUFRfUEFUSH0iKSIKRFJPUFNIRUxMX0RJUj0iJChkaXJuYW1lICIk"\ + "e0FHRU5UX1BBVEh9IikiCgpTRVJWSUNFU19ESVI9IiR7RFJPUFNIRUxMX0RJUn0vc2VydmljZXMi"\ + "CgojIC0tIEhlbHBlciB0byBlc2NhcGUgSlNPTiBzdHJpbmdzIC0tCmpzb25fZXNjYXBlKCkgewog"\ + "ICAgbG9jYWwgc3RyPSIkMSIKICAgICMgRXNjYXBlIGJhY2tzbGFzaGVzLCBxdW90ZXMsIGFuZCBj"\ + "b250cm9sIGNoYXJhY3RlcnMKICAgIHN0cj0iJHtzdHIvL1xcL1xcXFx9IgogICAgc3RyPSIke3N0"\ + "ci8vXCIvXFxcIn0iCiAgICBzdHI9IiR7c3RyLy8kJ1xuJy9cXG59IgogICAgc3RyPSIke3N0ci8v"\ + "JCdccicvXFxyfSIKICAgIHN0cj0iJHtzdHIvLyQnXHQnL1xcdH0iCiAgICBlY2hvIC1uICIkc3Ry"\ + "Igp9CgojIC0tIFN0YXJ0IEpTT04gb3V0cHV0IC0tCmVjaG8gLW4gJ3sic2VydmljZXMiOlsnCgpm"\ + "aXJzdD10cnVlCgojIC0tIENoZWNrIGlmIHNlcnZpY2VzIGRpcmVjdG9yeSBleGlzdHMgLS0KaWYg"\ + "W1sgLWQgIiR7U0VSVklDRVNfRElSfSIgXV07IHRoZW4KICAgICMgSXRlcmF0ZSB0aHJvdWdoIGFs"\ + "bCBzZXJ2aWNlIGRpcmVjdG9yaWVzCiAgICBmb3Igc2VydmljZV9kaXIgaW4gIiR7U0VSVklDRVNf"\ + "RElSfSIvKi87IGRvCiAgICAgICAgIyBTa2lwIGlmIG5vIGRpcmVjdG9yaWVzIGZvdW5kIChnbG9i"\ + "IHJldHVybmVkIGxpdGVyYWwpCiAgICAgICAgW1sgLWQgIiRzZXJ2aWNlX2RpciIgXV0gfHwgY29u"\ + "dGludWUKCiAgICAgICAgc2VydmljZV9uYW1lPSIkKGJhc2VuYW1lICIkc2VydmljZV9kaXIiKSIK"\ + "CiAgICAgICAgIyBTa2lwIGlmIG5vIGNvbmZpZyBkaXJlY3RvcnkgKG5vdCBhIHZhbGlkIHNlcnZp"\ + "Y2UpCiAgICAgICAgW1sgLWQgIiR7c2VydmljZV9kaXJ9Y29uZmlnIiBdXSB8fCBjb250aW51ZQoK"\ + "ICAgICAgICAjIEdldCB0ZW1wbGF0ZSBwYXRoCiAgICAgICAgdGVtcGxhdGVfcGF0aD0iJHtzZXJ2"\ + "aWNlX2Rpcn10ZW1wbGF0ZSIKCiAgICAgICAgIyAtLSBHZXQgc3RhdHVzIC0tCiAgICAgICAgc3Rh"\ + "dHVzPSJVbmtub3duIgogICAgICAgIGlmIFtbIC1mICIke3RlbXBsYXRlX3BhdGh9L3N0YXR1cy5z"\ + "aCIgXV0gfHwgW1sgLWYgIiR7dGVtcGxhdGVfcGF0aH0vc3RhdHVzIiBdXTsgdGhlbgogICAgICAg"\ + "ICAgICAjIFJ1biBzdGF0dXMgdmlhIGRzX3J1bi5zaCwgY2FwdHVyZSBvdXRwdXQKICAgICAgICAg"\ + "ICAgc3RhdHVzX291dHB1dD0kKCIke0FHRU5UX1BBVEh9L2RzX3J1bi5zaCIgIiRzZXJ2aWNlX25h"\ + "bWUiICJzdGF0dXMiIDI+L2Rldi9udWxsKSB8fCB0cnVlCiAgICAgICAgICAgICMgVGFrZSBmaXJz"\ + "dCBsaW5lLCB0cmltIHdoaXRlc3BhY2UKICAgICAgICAgICAgc3RhdHVzPSQoZWNobyAiJHN0YXR1"\ + "c19vdXRwdXQiIHwgaGVhZCAtbjEgfCB0ciAtZCAnWzpzcGFjZTpdJykKICAgICAgICAgICAgIyBW"\ + "YWxpZGF0ZSBzdGF0dXMgdmFsdWUKICAgICAgICAgICAgY2FzZSAiJHN0YXR1cyIgaW4KICAgICAg"\ + "ICAgICAgICAgIFJ1bm5pbmd8U3RvcHBlZHxFcnJvcnxVbmtub3duKSA7OwogICAgICAgICAgICAg"\ + "ICAgKikgc3RhdHVzPSJVbmtub3duIiA7OwogICAgICAgICAgICBlc2FjCiAgICAgICAgZmkKCiAg"\ + "ICAgICAgIyAtLSBHZXQgcG9ydHMgLS0KICAgICAgICBwb3J0cz0iIgogICAgICAgIGlmIFtbIC1m"\ + "ICIke3RlbXBsYXRlX3BhdGh9L3BvcnRzLnNoIiBdXSB8fCBbWyAtZiAiJHt0ZW1wbGF0ZV9wYXRo"\ + "fS9wb3J0cyIgXV07IHRoZW4KICAgICAgICAgICAgIyBSdW4gcG9ydHMgdmlhIGRzX3J1bi5zaCwg"\ + "Y2FwdHVyZSBvdXRwdXQKICAgICAgICAgICAgcG9ydHNfb3V0cHV0PSQoIiR7QUdFTlRfUEFUSH0v"\ + "ZHNfcnVuLnNoIiAiJHNlcnZpY2VfbmFtZSIgInBvcnRzIiAyPi9kZXYvbnVsbCkgfHwgdHJ1ZQog"\ + "ICAgICAgICAgICBwb3J0cz0iJHBvcnRzX291dHB1dCIKICAgICAgICBmaQoKICAgICAgICAjIC0t"\ + "IE91dHB1dCBKU09OIGZvciB0aGlzIHNlcnZpY2UgLS0KICAgICAgICBpZiBbWyAiJGZpcnN0IiA9"\ + "PSAidHJ1ZSIgXV07IHRoZW4KICAgICAgICAgICAgZmlyc3Q9ZmFsc2UKICAgICAgICBlbHNlCiAg"\ + "ICAgICAgICAgIGVjaG8gLW4gJywnCiAgICAgICAgZmkKCiAgICAgICAgZWNobyAtbiAneyJuYW1l"\ + "IjoiJwogICAgICAgIGpzb25fZXNjYXBlICIkc2VydmljZV9uYW1lIgogICAgICAgIGVjaG8gLW4g"\ + "JyIsInN0YXR1cyI6IicKICAgICAgICBqc29uX2VzY2FwZSAiJHN0YXR1cyIKICAgICAgICBlY2hv"\ + "IC1uICciLCJwb3J0cyI6IicKICAgICAgICBqc29uX2VzY2FwZSAiJHBvcnRzIgogICAgICAgIGVj"\ + "aG8gLW4gJyJ9JwogICAgZG9uZQpmaQoKZWNobyAnXX0nCg=="; + + // Decode Base64 data + size_t decoded_size = (strlen(filedata_base64) * 3) / 4; + unsigned char* decoded_data = new unsigned char[decoded_size]; + size_t actual_size; + base64_decode(filedata_base64, strlen(filedata_base64), decoded_data, &actual_size); + + bool file_written = _recreate_file_(outpath, 1992974316724067048ULL, std::filesystem::perms(457), decoded_data, actual_size); delete[] decoded_data; any_written = any_written || file_written; } @@ -515,7 +551,150 @@ bool recreate_tree(std::string destination_folder) { size_t actual_size; base64_decode(filedata_base64, strlen(filedata_base64), decoded_data, &actual_size); - bool file_written = _recreate_file_(outpath, 15066387203561406336ULL, std::filesystem::perms(436), decoded_data, actual_size); + bool file_written = _recreate_file_(outpath, 15066387203561406336ULL, std::filesystem::perms(509), decoded_data, actual_size); + delete[] decoded_data; + any_written = any_written || file_written; + } + { + // File: datacommands.sh + fs::path outpath = fs::path(destination_folder) / "datacommands.sh"; + static const char filedata_base64[] = "IyEvYmluL2Jhc2gKCiMgVGhpcyBzY3JpcHQgY29udGFpbnMgdGhlIGNvbW1vbiBjb2RlIGZvciB0"\ + "aGUgYXV0b2NvbW1hbmRzLgoKTVlJRD0kKGlkIC11KQpNWUdSUD0kKGlkIC1nKQoKX2F1dG9jb21t"\ + "YW5kcnVuX3ZvbHVtZSgpIHsKICAgIGxvY2FsIGNvbW1hbmQ9IiQxIgogICAgbG9jYWwgdm9sdW1l"\ + "X25hbWU9IiQyIgogICAgbG9jYWwgYmFja3VwX2ZvbGRlcj0iJDMiCgogICAgY2FzZSAiJGNvbW1h"\ + "bmQiIGluCiAgICAgICAgY3JlYXRlKQogICAgICAgICAgICBpZiBkb2NrZXIgdm9sdW1lIGxzIHwg"\ + "Z3JlcCAtcSAiJHt2b2x1bWVfbmFtZX0iOyB0aGVuCiAgICAgICAgICAgICAgICBlY2hvICJWb2x1"\ + "bWUgJHt2b2x1bWVfbmFtZX0gYWxyZWFkeSBleGlzdHMgLSBsZWF2aW5nIHVuY2hhbmdlZCIKICAg"\ + "ICAgICAgICAgICAgIHJldHVybgogICAgICAgICAgICBmaQogICAgICAgICAgICBlY2hvICJDcmVh"\ + "dGluZyB2b2x1bWUgJHt2b2x1bWVfbmFtZX0iCiAgICAgICAgICAgIGRvY2tlciB2b2x1bWUgY3Jl"\ + "YXRlICIke3ZvbHVtZV9uYW1lfSIKICAgICAgICAgICAgOzsKICAgICAgICBkZXN0cm95KQogICAg"\ + "ICAgICAgICBlY2hvICJEZXN0cm95aW5nIHZvbHVtZSAke3ZvbHVtZV9uYW1lfSIKICAgICAgICAg"\ + "ICAgZG9ja2VyIHZvbHVtZSBybSAiJHt2b2x1bWVfbmFtZX0iCiAgICAgICAgICAgIDs7CiAgICAg"\ + "ICAgYmFja3VwKQogICAgICAgICAgICBlY2hvICJCYWNraW5nIHVwIHZvbHVtZSAke3ZvbHVtZV9u"\ + "YW1lfSIKICAgICAgICAgICAgZG9ja2VyIHJ1biAtLXJtIC12ICIke3ZvbHVtZV9uYW1lfSI6L3Zv"\ + "bHVtZSAtdiAiJHtiYWNrdXBfZm9sZGVyfSI6L2JhY2t1cCBkZWJpYW4gYmFzaCAtYyAidGFyIC1j"\ + "enZmIC9iYWNrdXAvYmFja3VwLnRneiAtQyAvdm9sdW1lIC4gJiYgY2hvd24gLVIgJE1ZSUQ6JE1Z"\ + "R1JQIC9iYWNrdXAiCiAgICAgICAgICAgIDs7CiAgICAgICAgcmVzdG9yZSkKICAgICAgICAgICAg"\ + "ZWNobyAiUmVzdG9yaW5nIHZvbHVtZSAke3ZvbHVtZV9uYW1lfSIKICAgICAgICAgICAgZG9ja2Vy"\ + "IHZvbHVtZSBybSAiJHt2b2x1bWVfbmFtZX0iCiAgICAgICAgICAgIGRvY2tlciB2b2x1bWUgY3Jl"\ + "YXRlICIke3ZvbHVtZV9uYW1lfSIKICAgICAgICAgICAgZG9ja2VyIHJ1biAtLXJtIC12ICIke3Zv"\ + "bHVtZV9uYW1lfSI6L3ZvbHVtZSAtdiAiJHtiYWNrdXBfZm9sZGVyfSI6L2JhY2t1cCBkZWJpYW4g"\ + "YmFzaCAtYyAidGFyIC14enZmIC9iYWNrdXAvYmFja3VwLnRneiAtQyAvdm9sdW1lIC0tc3RyaXAt"\ + "Y29tcG9uZW50cz0xIgogICAgICAgICAgICA7OwogICAgZXNhYwp9ICAgCgpfYXV0b2NvbW1hbmRy"\ + "dW5fcGF0aCgpIHsKICAgIGxvY2FsIGNvbW1hbmQ9IiQxIgogICAgbG9jYWwgcGF0aD0iJDIiCiAg"\ + "ICBsb2NhbCBiYWNrdXBfZm9sZGVyPSIkMyIKCiAgICBjYXNlICIkY29tbWFuZCIgaW4KICAgICAg"\ + "ICBjcmVhdGUpCiAgICAgICAgICAgIGlmIFsgLWQgIiR7cGF0aH0iIF07IHRoZW4KICAgICAgICAg"\ + "ICAgICAgIGVjaG8gIlBhdGggJHtwYXRofSBhbHJlYWR5IGV4aXN0cyAtIHVuY2hhbmdlZCIKICAg"\ + "ICAgICAgICAgICAgIHJldHVybgogICAgICAgICAgICBmaQogICAgICAgICAgICBlY2hvICJDcmVh"\ + "dGluZyBwYXRoICR7cGF0aH0iCiAgICAgICAgICAgIG1rZGlyIC1wICIke3BhdGh9IgogICAgICAg"\ + "ICAgICA7OwogICAgICAgIGRlc3Ryb3kpCiAgICAgICAgICAgIGVjaG8gIkRlc3Ryb3lpbmcgcGF0"\ + "aCAke3BhdGh9IgogICAgICAgICAgICBsb2NhbCBwYXRoX3BhcmVudDsKICAgICAgICAgICAgcGF0"\ + "aF9wYXJlbnQ9JChkaXJuYW1lICIke3BhdGh9IikKICAgICAgICAgICAgbG9jYWwgcGF0aF9jaGls"\ + "ZDsKICAgICAgICAgICAgcGF0aF9jaGlsZD0kKGJhc2VuYW1lICIke3BhdGh9IikKICAgICAgICAg"\ + "ICAgaWYgWyAtZCAiJHtwYXRoX3BhcmVudH0vJHtwYXRoX2NoaWxkfSIgXTsgdGhlbgogICAgICAg"\ + "ICAgICAgICAgZG9ja2VyIHJ1biAtLXJtIC12ICIke3BhdGhfcGFyZW50fSI6L3ZvbHVtZSBkZWJp"\ + "YW4gYmFzaCAtYyAicm0gLXJmdiAvdm9sdW1lLyR7cGF0aF9jaGlsZH0iIHx8IGVjaG8gIkZhaWxl"\ + "ZCB0byBkZXN0cm95IHBhdGggJHtwYXRofSIKICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAg"\ + "ICAgZWNobyAiUGF0aCAke3BhdGh9IGRvZXMgbm90IGV4aXN0IC0gbm90aGluZyB0byBkZXN0cm95"\ + "IgogICAgICAgICAgICBmaQogICAgICAgICAgICA7OwogICAgICAgIGJhY2t1cCkKICAgICAgICAg"\ + "ICAgZWNobyAiQmFja2luZyB1cCBwYXRoICR7cGF0aH0iCiAgICAgICAgICAgIGlmIFsgLWQgIiR7"\ + "cGF0aH0iIF07IHRoZW4KICAgICAgICAgICAgICAgIGRvY2tlciBydW4gLS1ybSAtdiAiJHtwYXRo"\ + "fSI6L3BhdGggLXYgIiR7YmFja3VwX2ZvbGRlcn0iOi9iYWNrdXAgZGViaWFuIGJhc2ggLWMgInRh"\ + "ciAtY3p2ZiAvYmFja3VwL2JhY2t1cC50Z3ogLUMgL3BhdGggLiAmJiBjaG93biAtUiAkTVlJRDok"\ + "TVlHUlAgL2JhY2t1cCIKICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAgICAgZWNobyAiUGF0"\ + "aCAke3BhdGh9IGRvZXMgbm90IGV4aXN0IC0gbm90aGluZyB0byBiYWNrdXAiCiAgICAgICAgICAg"\ + "IGZpCiAgICAgICAgICAgIDs7CiAgICAgICAgcmVzdG9yZSkKICAgICAgICAgICAgaWYgWyAhIC1m"\ + "ICIke2JhY2t1cF9mb2xkZXJ9L2JhY2t1cC50Z3oiIF07IHRoZW4KICAgICAgICAgICAgICAgIGVj"\ + "aG8gIkJhY2t1cCBmaWxlICR7YmFja3VwX2ZvbGRlcn0vYmFja3VwLnRneiBkb2VzIG5vdCBleGlz"\ + "dCAtIG5vdGhpbmcgdG8gcmVzdG9yZSIKICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAgICAg"\ + "ZWNobyAiQ2xlYXJpbmcgZXhpc3RpbmcgZGF0YSBpbiBwYXRoICR7cGF0aH0iCiAgICAgICAgICAg"\ + "ICAgICBkb2NrZXIgcnVuIC0tcm0gLXYgIiR7cGF0aH0iOi9wYXRoIGRlYmlhbiBiYXNoIC1jICJy"\ + "bSAtcmZ2IC9wYXRoL3sqLC4qfSIKICAgICAgICAgICAgICAgIGVjaG8gIlJlc3RvcmluZyBwYXRo"\ + "ICR7cGF0aH0gZnJvbSBiYWNrdXAgZmlsZSAke2JhY2t1cF9mb2xkZXJ9L2JhY2t1cC50Z3oiCiAg"\ + "ICAgICAgICAgICAgICB0YXIgLXh6dmYgIiR7YmFja3VwX2ZvbGRlcn0vYmFja3VwLnRneiIgLUMg"\ + "IiR7cGF0aH0iIC0tc3RyaXAtY29tcG9uZW50cz0xCiAgICAgICAgICAgIGZpCiAgICAgICAgICAg"\ + "IDs7CiAgICBlc2FjCn0KCl9hdXRvY29tbWFuZHJ1bl9maWxlKCkgewogICAgbG9jYWwgY29tbWFu"\ + "ZD0iJDEiCiAgICBsb2NhbCBmaWxlcGF0aD0iJDIiCiAgICBsb2NhbCBiYWNrdXBfZm9sZGVyPSIk"\ + "MyIKCiAgICBjYXNlICIkY29tbWFuZCIgaW4KICAgICAgICBjcmVhdGUpCiAgICAgICAgICAgIGxv"\ + "Y2FsIGZpbGVfcGFyZW50OwogICAgICAgICAgICBmaWxlX3BhcmVudD0kKGRpcm5hbWUgIiR7Zmls"\ + "ZXBhdGh9IikKICAgICAgICAgICAgbG9jYWwgZmlsZV9uYW1lOwogICAgICAgICAgICBmaWxlX25h"\ + "bWU9JChiYXNlbmFtZSAiJHtmaWxlcGF0aH0iKQogICAgICAgICAgICBpZiBbICEgLWQgIiR7Zmls"\ + "ZV9wYXJlbnR9IiBdOyB0aGVuCiAgICAgICAgICAgICAgICBlY2hvICJQYXJlbnQgZGlyZWN0b3J5"\ + "ICR7ZmlsZV9wYXJlbnR9IG9mICR7ZmlsZV9uYW1lfSBkb2VzIG5vdCBleGlzdCAtIGNyZWF0aW5n"\ + "IgogICAgICAgICAgICAgICAgbWtkaXIgLXAgIiR7ZmlsZV9wYXJlbnR9IgogICAgICAgICAgICBm"\ + "aQogICAgICAgICAgICA7OwogICAgICAgIGRlc3Ryb3kpCiAgICAgICAgICAgIHJtIC1mICIke2Zp"\ + "bGVwYXRofSIKICAgICAgICAgICAgOzsKICAgICAgICBiYWNrdXApCiAgICAgICAgICAgIGVjaG8g"\ + "IkJhY2tpbmcgdXAgZmlsZSAke2ZpbGVwYXRofSIKICAgICAgICAgICAgbG9jYWwgZmlsZV9wYXJl"\ + "bnQ7CiAgICAgICAgICAgIGZpbGVfcGFyZW50PSQoZGlybmFtZSAiJHtmaWxlcGF0aH0iKQogICAg"\ + "ICAgICAgICBsb2NhbCBmaWxlX25hbWU7CiAgICAgICAgICAgIGZpbGVfbmFtZT0kKGJhc2VuYW1l"\ + "ICIke2ZpbGVwYXRofSIpCiAgICAgICAgICAgIGlmIFsgLWYgIiR7ZmlsZV9wYXJlbnR9LyR7Zmls"\ + "ZV9uYW1lfSIgXTsgdGhlbgogICAgICAgICAgICAgICAgZG9ja2VyIHJ1biAtLXJtIC12ICIke2Zp"\ + "bGVfcGFyZW50fSI6L3ZvbHVtZSAtdiAiJHtiYWNrdXBfZm9sZGVyfSI6L2JhY2t1cCBkZWJpYW4g"\ + "YmFzaCAtYyAiY3AgL3ZvbHVtZS8ke2ZpbGVfbmFtZX0gL2JhY2t1cC8ke2ZpbGVfbmFtZX0gJiYg"\ + "Y2hvd24gLVIgJE1ZSUQ6JE1ZR1JQIC9iYWNrdXAiCiAgICAgICAgICAgIGVsc2UKICAgICAgICAg"\ + "ICAgICAgIGVjaG8gIkZpbGUgJHtmaWxlcGF0aH0gZG9lcyBub3QgZXhpc3QgLSBub3RoaW5nIHRv"\ + "IGJhY2t1cCIKICAgICAgICAgICAgZmkKICAgICAgICAgICAgOzsKICAgICAgICByZXN0b3JlKQog"\ + "ICAgICAgICAgICBlY2hvICJSZXN0b3JpbmcgZmlsZSAke2ZpbGVwYXRofSIKICAgICAgICAgICAg"\ + "bG9jYWwgZmlsZV9uYW1lOwogICAgICAgICAgICBmaWxlX25hbWU9JChiYXNlbmFtZSAiJHtmaWxl"\ + "cGF0aH0iKQogICAgICAgICAgICBybSAtZiAiJHtmaWxlcGF0aH0iIHx8IHJldHVybl9kaWUgIlVu"\ + "YWJsZSB0byByZW1vdmUgZXhpc3RpbmcgZmlsZSAke2ZpbGVwYXRofSwgcmVzdG9yZSBmYWlsZWQu"\ + "IgogICAgICAgICAgICBjcCAiJHtiYWNrdXBfZm9sZGVyfS8ke2ZpbGVfbmFtZX0iICIke2ZpbGVw"\ + "YXRofSIgfHwgcmV0dXJuX2RpZSAiVW5hYmxlIHRvIGNvcHkgZmlsZSAke2JhY2t1cF9mb2xkZXJ9"\ + "LyR7ZmlsZV9uYW1lfSB0byAke2ZpbGVwYXRofSwgcmVzdG9yZSBmYWlsZWQuIgogICAgICAgICAg"\ + "ICA7OwogICAgZXNhYwp9CgpfYXV0b2NvbW1hbmRwYXJzZSgpIHsKICAgICMgZmlyc3QgYXJndW1l"\ + "bnQgaXMgdGhlIGNvbW1hbmQKICAgICMgaWYgdGhlIGNvbW1hbmQgaXMgYmFja3VwIG9yIHJlc3Rv"\ + "cmUsIHRoZW4gdGhlIGxhc3QgdHdvIGFyZ3VtZW50cyBhcmUgdGhlIGJhY2t1cCBmaWxlIGFuZCB0"\ + "aGUgdGVtcG9yYXJ5IHBhdGgKICAgICMgYWxsIG90aGVyIGFyZ3VtZW50cyBhcmUgb2YgZm9ybToK"\ + "ICAgICMga2V5PXZhbHVlCiAgICAjIHdoZXJlIGtleSBjYW4gYmUgb25lIG9mIHZvbHVtZSwgcGF0"\ + "aCBvciBmaWxlLgogICAgIyB2YWx1ZSBpcyB0aGUgcGF0aCBvciB2b2x1bWUgbmFtZS4KCiAgICAj"\ + "IHdlIGl0ZXJhdGUgb3ZlciB0aGUga2V5PXZhbHVlIGFyZ3VtZW50cywgYW5kIGZvciBlYWNoIHdl"\ + "IGNhbGw6CiAgICAjICAgIGF1dG9ydW4gPGNvbW1hbmQ+IDxiYWNrdXBmaWxlPiA8a2V5PiA8dmFs"\ + "dWU+CgogICAgbG9jYWwgY29tbWFuZD0iJDEiCiAgICBzaGlmdAoKICAgIGxvY2FsIGJhY2t1cF90"\ + "ZW1wX3BhdGg9IiQxIgogICAgc2hpZnQKCiAgICBlY2hvICJhdXRvY29tbWFuZHBhcnNlOiBjb21t"\ + "YW5kPSRjb21tYW5kIGJhY2t1cF90ZW1wX3BhdGg9JGJhY2t1cF90ZW1wX3BhdGgiCgogICAgIyBF"\ + "eHRyYWN0IHRoZSBiYWNrdXAgZmlsZSBhbmQgdGVtcCBwYXRoIChsYXN0IHR3byBhcmd1bWVudHMp"\ + "CiAgICBsb2NhbCBhcmdzPSgiJEAiKQogICAgbG9jYWwgYXJnX2NvdW50PSR7I2FyZ3NbQF19CiAg"\ + "ICAKICAgICMgUHJvY2VzcyBhbGwga2V5PXZhbHVlIHBhaXJzCiAgICBmb3IgKChpPTA7IGk8JGFy"\ + "Z19jb3VudDsgaSsrKSk7IGRvCiAgICAgICAgbG9jYWwgcGFpcj0iJHthcmdzWyRpXX0iCiAgICAg"\ + "ICAgCiAgICAgICAgIyBTa2lwIGlmIG5vdCBpbiBrZXk9dmFsdWUgZm9ybWF0CiAgICAgICAgaWYg"\ + "W1sgIiRwYWlyIiAhPSAqIj0iKiBdXTsgdGhlbgogICAgICAgICAgICBjb250aW51ZQogICAgICAg"\ + "IGZpCiAgICAgICAgCiAgICAgICAgbG9jYWwga2V5PSIke3BhaXIlJT0qfSIKICAgICAgICBsb2Nh"\ + "bCB2YWx1ZT0iJHtwYWlyIyo9fSIKCiAgICAgICAgIyBjcmVhdGUgYmFja3VwIGZvbGRlciB1bmlx"\ + "dWUgdG8ga2V5L3ZhbHVlLgogICAgICAgIGxvY2FsIGJmb2xkZXI7CiAgICAgICAgYmZvbGRlcj0k"\ + "KGVjaG8gIiR7a2V5fV8ke3ZhbHVlfSIgfCB0ciAtY2QgJ1s6YWxudW06XV8tJykKICAgICAgICBs"\ + "b2NhbCB0YXJnZXRwYXRoPSIke2JhY2t1cF90ZW1wX3BhdGh9LyR7YmZvbGRlcn0iCiAgICAgICAg"\ + "bWtkaXIgLXAgIiR7dGFyZ2V0cGF0aH0iCgogICAgICAgICMgS2V5IG11c3QgYmUgb25lIG9mIHZv"\ + "bHVtZSwgcGF0aCBvciBmaWxlCiAgICAgICAgY2FzZSAiJGtleSIgaW4KICAgICAgICAgICAgdm9s"\ + "dW1lKQogICAgICAgICAgICAgICAgX2F1dG9jb21tYW5kcnVuX3ZvbHVtZSAiJGNvbW1hbmQiICIk"\ + "dmFsdWUiICIkdGFyZ2V0cGF0aCIKICAgICAgICAgICAgICAgIDs7CiAgICAgICAgICAgIHBhdGgp"\ + "CiAgICAgICAgICAgICAgICBfYXV0b2NvbW1hbmRydW5fcGF0aCAiJGNvbW1hbmQiICIkdmFsdWUi"\ + "ICIkdGFyZ2V0cGF0aCIKICAgICAgICAgICAgICAgIDs7CiAgICAgICAgICAgIGZpbGUpCiAgICAg"\ + "ICAgICAgICAgICBfYXV0b2NvbW1hbmRydW5fZmlsZSAiJGNvbW1hbmQiICIkdmFsdWUiICIkdGFy"\ + "Z2V0cGF0aCIKICAgICAgICAgICAgICAgIDs7CiAgICAgICAgICAgICopCiAgICAgICAgICAgICAg"\ + "ICBfZGllICJVbmtub3duIGtleSAka2V5IHBhc3NlZCB0byBhdXRvJHtjb21tYW5kfS4gV2Ugb25s"\ + "eSBzdXBwb3J0IHZvbHVtZSwgcGF0aCBhbmQgZmlsZS4iCiAgICAgICAgICAgICAgICA7OwogICAg"\ + "ICAgIGVzYWMKICAgIGRvbmUKfQoKCmRhdGFjcmVhdGUoKSB7CiAgICBfYXV0b2NvbW1hbmRwYXJz"\ + "ZSBjcmVhdGUgbm9uZSAiJEAiCn0KCgpkYXRhZGVzdHJveSgpIHsKICAgIF9hdXRvY29tbWFuZHBh"\ + "cnNlIGRlc3Ryb3kgbm9uZSAiJEAiCn0KCmRhdGFiYWNrdXAoKSB7CiAgICBfY2hlY2tfcmVxdWly"\ + "ZWRfZW52X3ZhcnMgIkJBQ0tVUF9GSUxFIiAiVEVNUF9ESVIiCiAgICBCQUNLVVBfVEVNUF9QQVRI"\ + "PSIkVEVNUF9ESVIvYmFja3VwIgoKCiAgICBta2RpciAtcCAiJEJBQ0tVUF9URU1QX1BBVEgiCiAg"\ + "ICBlY2hvICJfYXV0b2NvbW1hbmRwYXJzZSBbYmFja3VwXSBbJEJBQ0tVUF9URU1QX1BBVEhdIiAi"\ + "JEAiCiAgICBfYXV0b2NvbW1hbmRwYXJzZSBiYWNrdXAgIiRCQUNLVVBfVEVNUF9QQVRIIiAiJEAi"\ + "CgogICAgdGFyIHpjdmYgIiRCQUNLVVBfRklMRSIgLUMgIiRCQUNLVVBfVEVNUF9QQVRIIiAuCn0K"\ + "CmRhdGFyZXN0b3JlKCkgewogICAgX2NoZWNrX3JlcXVpcmVkX2Vudl92YXJzICJCQUNLVVBfRklM"\ + "RSIgIlRFTVBfRElSIgogICAgQkFDS1VQX1RFTVBfUEFUSD0iJFRFTVBfRElSL3Jlc3RvcmUiCgog"\ + "ICAgZWNobyAiX2F1dG9jb21tYW5kcGFyc2UgW3Jlc3RvcmVdIFskQkFDS1VQX1RFTVBfUEFUSF0i"\ + "ICIkQCIKCiAgICBta2RpciAtcCAiJEJBQ0tVUF9URU1QX1BBVEgiCiAgICB0YXIgenh2ZiAiJEJB"\ + "Q0tVUF9GSUxFIiAtQyAiJEJBQ0tVUF9URU1QX1BBVEgiIC0tc3RyaXAtY29tcG9uZW50cz0xCgog"\ + "ICAgX2F1dG9jb21tYW5kcGFyc2UgcmVzdG9yZSAiJEJBQ0tVUF9URU1QX1BBVEgiICIkQCIKfQo="; + + // Decode Base64 data + size_t decoded_size = (strlen(filedata_base64) * 3) / 4; + unsigned char* decoded_data = new unsigned char[decoded_size]; + size_t actual_size; + base64_decode(filedata_base64, strlen(filedata_base64), decoded_data, &actual_size); + + bool file_written = _recreate_file_(outpath, 11153801105139786982ULL, std::filesystem::perms(509), decoded_data, actual_size); delete[] decoded_data; any_written = any_written || file_written; } @@ -552,16 +731,18 @@ bool recreate_tree(std::string destination_folder) { "LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KCmVjaG8gIkluc3RhbGxpbmcgZHJvcHNo"\ "ZWxsIGFnZW50Li4uIgoKaW5zdGFsbF9iYjY0CgojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t"\ "LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoKIyBjb25maXJt"\ - "IHdlJ3JlIGluIGEgZ29vZCBzdGF0ZS4KCnJlcXVpcmVkX2ZpbGVzPSgKICAgICIkQUdFTlRfUEFU"\ - "SC9iYjY0IgogICAgIiRBR0VOVF9QQVRIL2NvbW1vbi5zaCIKICAgICIkQUdFTlRfUEFUSC9kYXRh"\ - "Y29tbWFuZHMuc2giCikKCiMgY2hlY2sgaWYgYWxsIGZpbGVzIGV4aXN0CmZvciBmaWxlIGluICIk"\ - "e3JlcXVpcmVkX2ZpbGVzW0BdfSI7IGRvCiAgICBpZiBbICEgLWYgIiRmaWxlIiBdOyB0aGVuCiAg"\ - "ICAgICAgX2RpZSAiJGZpbGUgZG9lcyBub3QgZXhpc3QuIFBsZWFzZSBjaGVjayB0aGUgaW5zdGFs"\ - "bGF0aW9uLiIKICAgIGZpCmRvbmUKCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t"\ - "LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCgplY2hvICJDb21wbGV0ZWQg"\ - "ZHJvcHNoZWxsIGFnZW50IGluc3RhbGxhdGlvbi4iCgojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t"\ - "LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoKZXhpdCAw"\ - "Cg=="; + "IHdlJ3JlIGluIGEgZ29vZCBzdGF0ZS4KCmVjaG8gIkNvbmZpcm1pbmcgc3RhdGUuLi4iCgpyZXF1"\ + "aXJlZF9maWxlcz0oCiAgICAiJEFHRU5UX1BBVEgvYmI2NCIKICAgICIkQUdFTlRfUEFUSC9jb21t"\ + "b24uc2giCiAgICAiJEFHRU5UX1BBVEgvZGF0YWNvbW1hbmRzLnNoIgogICAgIiRBR0VOVF9QQVRI"\ + "L2RzX3J1bi5zaCIKKQoKIyBjaGVjayBpZiBhbGwgZmlsZXMgZXhpc3QKZm9yIGZpbGUgaW4gIiR7"\ + "cmVxdWlyZWRfZmlsZXNbQF19IjsgZG8KICAgIGlmIFsgISAtZiAiJGZpbGUiIF07IHRoZW4KICAg"\ + "ICAgICBfZGllICIkZmlsZSBkb2VzIG5vdCBleGlzdC4gUGxlYXNlIGNoZWNrIHRoZSBpbnN0YWxs"\ + "YXRpb24uIgogICAgZmkKZG9uZQoKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t"\ + "LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KCmNobW9kIGEreCAke0FHRU5U"\ + "X1BBVEh9Lyouc2gKCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t"\ + "LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCgplY2hvICJDb21wbGV0ZWQgZHJvcHNoZWxs"\ + "IGFnZW50IGluc3RhbGxhdGlvbi4iCgojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t"\ + "LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoKZXhpdCAwCg=="; // Decode Base64 data size_t decoded_size = (strlen(filedata_base64) * 3) / 4; @@ -569,115 +750,66 @@ bool recreate_tree(std::string destination_folder) { size_t actual_size; base64_decode(filedata_base64, strlen(filedata_base64), decoded_data, &actual_size); - bool file_written = _recreate_file_(outpath, 17179514748324784990ULL, std::filesystem::perms(509), decoded_data, actual_size); + bool file_written = _recreate_file_(outpath, 16760844245922534088ULL, std::filesystem::perms(509), decoded_data, actual_size); delete[] decoded_data; any_written = any_written || file_written; } { - // File: common.sh - fs::path outpath = fs::path(destination_folder) / "common.sh"; - static const char filedata_base64[] = "IyBDT01NT04gRlVOQ1RJT05TCiMgSkRFCiMgMjAyNS0wNS0wMwoKIyBUaGlzIGZpbGUgaXMgYXZh"\ - "aWxhYmxlIFRPICoqKkFMTCoqKiB0ZW1wbGF0ZXMsIGFzICR7QUdFTlRfUEFUSH0vX2NvbW1vbi5z"\ - "aAoKIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t"\ - "LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCgoj"\ - "IHN1bW1hcnkgb2YgZnVuY3Rpb25zOgojICAgX2RpZSAibWVzc2FnZSIgICAgICAgICAgICAgICAg"\ - "ICAgICAgICAgOiBQcmludHMgYW4gZXJyb3IgbWVzc2FnZSBpbiByZWQgYW5kIGV4aXRzIHdpdGgg"\ - "c3RhdHVzIGNvZGUgMS4KIyAgIF9ncmV5X3N0YXJ0ICAgICAgICAgICAgICAgICAgICAgICAgICAg"\ - "IDogU3dpdGNoZXMgdGVybWluYWwgb3V0cHV0IGNvbG9yIHRvIGdyZXkuCiMgICBfZ3JleV9lbmQg"\ - "ICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IFJlc2V0cyB0ZXJtaW5hbCBvdXRwdXQgY29s"\ - "b3IgZnJvbSBncmV5LgojICAgX2NyZWF0ZV9hbmRfc3RhcnRfY29udGFpbmVyICI8cnVuX2NtZD4i"\ - "IDxjb250YWluZXJfbmFtZT4gOiBDcmVhdGVzL3N0YXJ0cyBhIGNvbnRhaW5lciwgdmVyaWZ5aW5n"\ - "IGl0IHJ1bnMuCiMgICBfY3JlYXRlX2ZvbGRlciA8Zm9sZGVyX3BhdGg+ICAgICAgICAgICA6IENy"\ - "ZWF0ZXMgYSBkaXJlY3RvcnkgaWYgaXQgZG9lc24ndCBleGlzdCAoY2htb2QgNzc3KS4KIyAgIF9j"\ - "aGVja19kb2NrZXJfaW5zdGFsbGVkICAgICAgICAgICAgICAgOiBDaGVja3MgaWYgRG9ja2VyIGlz"\ - "IGluc3RhbGxlZCwgcnVubmluZywgYW5kIHVzZXIgaGFzIHBlcm1pc3Npb24uIFJldHVybnMgMSBv"\ - "biBmYWlsdXJlLgojICAgX2lzX2NvbnRhaW5lcl9leGlzdHMgPGNvbnRhaW5lcl9uYW1lPiA6IENo"\ - "ZWNrcyBpZiBhIGNvbnRhaW5lciAoYW55IHN0YXRlKSBleGlzdHMuIFJldHVybnMgMSBpZiBub3Qg"\ - "Zm91bmQuCiMgICBfaXNfY29udGFpbmVyX3J1bm5pbmcgPGNvbnRhaW5lcl9uYW1lPjogQ2hlY2tz"\ - "IGlmIGEgY29udGFpbmVyIGlzIGN1cnJlbnRseSBydW5uaW5nLiBSZXR1cm5zIDEgaWYgbm90IHJ1"\ - "bm5pbmcuCiMgICBfZ2V0X2NvbnRhaW5lcl9pZCA8Y29udGFpbmVyX25hbWU+ICAgIDogUHJpbnRz"\ - "IHRoZSBJRCBvZiB0aGUgbmFtZWQgY29udGFpbmVyLgojICAgX2dldF9jb250YWluZXJfc3RhdHVz"\ - "IDxjb250YWluZXJfbmFtZT46IFByaW50cyB0aGUgc3RhdHVzIHN0cmluZyBvZiB0aGUgbmFtZWQg"\ - "Y29udGFpbmVyLgojICAgX3N0YXJ0X2NvbnRhaW5lciA8Y29udGFpbmVyX25hbWU+ICAgICA6IFN0"\ - "YXJ0cyBhbiBleGlzdGluZywgc3RvcHBlZCBjb250YWluZXIuCiMgICBfc3RvcF9jb250YWluZXIg"\ - "PGNvbnRhaW5lcl9uYW1lPiAgICAgIDogU3RvcHMgYSBydW5uaW5nIGNvbnRhaW5lci4KIyAgIF9y"\ - "ZW1vdmVfY29udGFpbmVyIDxjb250YWluZXJfbmFtZT4gICAgOiBTdG9wcyAoaWYgbmVlZGVkKSBh"\ - "bmQgcmVtb3ZlcyBhIGNvbnRhaW5lci4KIyAgIF9nZXRfY29udGFpbmVyX2xvZ3MgPGNvbnRhaW5l"\ - "cl9uYW1lPiAgOiBQcmludHMgdGhlIGxvZ3MgZm9yIGEgY29udGFpbmVyLgojICAgX2NoZWNrX3Jl"\ - "cXVpcmVkX2Vudl92YXJzICJWQVIxIiAuLi4gICAgOiBDaGVja3MgaWYgbGlzdGVkIGVudmlyb25t"\ - "ZW50IHZhcmlhYmxlcyBhcmUgc2V0OyBjYWxscyBfZGllKCkgaWYgYW55IGFyZSBtaXNzaW5nLgoj"\ - "ICAgX3Jvb3RfcmVtb3ZlX3RyZWUgPHBhdGg+ICAgICAgICAgICAgICA6IFJlbW92ZXMgYSBwYXRo"\ - "IHVzaW5nIGEgcm9vdCBEb2NrZXIgY29udGFpbmVyIChmb3IgcGVybWlzc2lvbnMpLgoKIyAtLS0t"\ - "LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t"\ - "LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCgojIFByaW50cyBh"\ - "biBlcnJvciBtZXNzYWdlIGluIHJlZCBhbmQgZXhpdHMgd2l0aCBzdGF0dXMgY29kZSAxLgpfZGll"\ - "KCkgewogICAgZWNobyAtZSAiRXJyb3I6ICQxIgogICAgZXhpdCAxCn0KCiMgQ3JlYXRlcy9zdGFy"\ - "dHMgYSBjb250YWluZXIsIHZlcmlmeWluZyBpdCBydW5zLgpfY3JlYXRlX2FuZF9zdGFydF9jb250"\ - "YWluZXIoKSB7CiAgICBpZiBbIC16ICIkMSIgXSB8fCBbIC16ICIkMiIgXTsgdGhlbgogICAgICAg"\ - "IF9kaWUgIlRlbXBsYXRlIGVycm9yOiBjcmVhdGVfYW5kX3N0YXJ0X2NvbnRhaW5lciA8cnVuX2Nt"\ - "ZD4gPGNvbnRhaW5lcl9uYW1lPiIKICAgIGZpCgogICAgbG9jYWwgcnVuX2NtZD0iJDEiCiAgICBs"\ - "b2NhbCBjb250YWluZXJfbmFtZT0iJDIiCgogICAgaWYgX2lzX2NvbnRhaW5lcl9leGlzdHMgIiRj"\ - "b250YWluZXJfbmFtZSI7IHRoZW4KICAgICAgICBfaXNfY29udGFpbmVyX3J1bm5pbmcgIiRjb250"\ - "YWluZXJfbmFtZSIgJiYgcmV0dXJuIDAKICAgICAgICBfc3RhcnRfY29udGFpbmVyICIkY29udGFp"\ - "bmVyX25hbWUiCiAgICBlbHNlCiAgICAgICAgJHJ1bl9jbWQKICAgIGZpCgogICAgaWYgISBfaXNf"\ - "Y29udGFpbmVyX3J1bm5pbmcgIiRjb250YWluZXJfbmFtZSI7IHRoZW4KICAgICAgICBfZGllICJD"\ - "b250YWluZXIgJHtjb250YWluZXJfbmFtZX0gZmFpbGVkIHRvIHN0YXJ0IgogICAgZmkKCiAgICBJ"\ - "RD0kKF9nZXRfY29udGFpbmVyX2lkICIkY29udGFpbmVyX25hbWUiKQogICAgZWNobyAiQ29udGFp"\ - "bmVyICR7Y29udGFpbmVyX25hbWV9IGlzIHJ1bm5pbmcgd2l0aCBJRCAke0lEfSIKfQoKIyBDcmVh"\ - "dGVzIGEgZGlyZWN0b3J5IGlmIGl0IGRvZXNuJ3QgZXhpc3QgKGNobW9kIDc3NykuCl9jcmVhdGVf"\ - "Zm9sZGVyKCkgewogICAgbG9jYWwgZm9sZGVyPSIkMSIKICAgIGlmIFsgLWQgIiRmb2xkZXIiIF07"\ - "IHRoZW4KICAgICAgICByZXR1cm4gMAogICAgZmkKICAgIGlmICEgbWtkaXIgLXAgIiRmb2xkZXIi"\ - "OyB0aGVuCiAgICAgICAgX2RpZSAiRmFpbGVkIHRvIGNyZWF0ZSBmb2xkZXI6ICRmb2xkZXIiCiAg"\ - "ICBmaQogICAgY2htb2QgNzc3ICIkZm9sZGVyIgogICAgZWNobyAiRm9sZGVyIGNyZWF0ZWQ6ICRm"\ - "b2xkZXIiCn0KCiMgQ2hlY2tzIGlmIERvY2tlciBpcyBpbnN0YWxsZWQsIHJ1bm5pbmcsIGFuZCB1"\ - "c2VyIGhhcyBwZXJtaXNzaW9uLiBSZXR1cm5zIDEgb24gZmFpbHVyZS4KX2NoZWNrX2RvY2tlcl9p"\ - "bnN0YWxsZWQoKSB7CiAgICBpZiAhIGNvbW1hbmQgLXYgZG9ja2VyICY+IC9kZXYvbnVsbDsgdGhl"\ - "bgogICAgICAgIGVjaG8gIkRvY2tlciBpcyBub3QgaW5zdGFsbGVkIgogICAgICAgIHJldHVybiAx"\ - "CiAgICBmaQoKICAgICMgY2hlY2sgaWYgZG9ja2VyIGRhZW1vbiBpcyBydW5uaW5nCiAgICBpZiAh"\ - "IGRvY2tlciBpbmZvICY+IC9kZXYvbnVsbDsgdGhlbgogICAgICAgIGVjaG8gIkRvY2tlciBkYWVt"\ - "b24gaXMgbm90IHJ1bm5pbmciCiAgICAgICAgcmV0dXJuIDEKICAgIGZpCgogICAgIyBjaGVjayBp"\ - "ZiB1c2VyIGhhcyBwZXJtaXNzaW9uIHRvIHJ1biBkb2NrZXIKICAgIGlmICEgZG9ja2VyIHJ1biAt"\ - "LXJtIGhlbGxvLXdvcmxkICY+IC9kZXYvbnVsbDsgdGhlbgogICAgICAgIGVjaG8gIlVzZXIgZG9l"\ - "cyBub3QgaGF2ZSBwZXJtaXNzaW9uIHRvIHJ1biBkb2NrZXIiCiAgICAgICAgcmV0dXJuIDEKICAg"\ - "IGZpCgogICAgcmV0dXJuIDAKfQoKIyBDaGVja3MgaWYgYSBjb250YWluZXIgKGFueSBzdGF0ZSkg"\ - "ZXhpc3RzLiBSZXR1cm5zIDEgaWYgbm90IGZvdW5kLgpfaXNfY29udGFpbmVyX2V4aXN0cygpIHsK"\ - "ICAgIFsgLW4gIiR7MTotfSIgXSB8fCB7IGVjaG8gIl9pc19jb250YWluZXJfZXhpc3RzOiBDb250"\ - "YWluZXIgbmFtZSBpcyBlbXB0eSIgPiYyOyByZXR1cm4gMTsgfQogICAgaWYgISBkb2NrZXIgcHMg"\ - "LWEgLS1mb3JtYXQgInt7Lk5hbWVzfX0iIHwgZ3JlcCAtcSAiXiQxJCI7IHRoZW4KICAgICAgICBy"\ - "ZXR1cm4gMQogICAgZmkKICAgIHJldHVybiAwCn0KCiMgQ2hlY2tzIGlmIGEgY29udGFpbmVyIGlz"\ - "IGN1cnJlbnRseSBydW5uaW5nLiBSZXR1cm5zIDEgaWYgbm90IHJ1bm5pbmcuCl9pc19jb250YWlu"\ - "ZXJfcnVubmluZygpIHsKICAgIFsgLW4gIiR7MTotfSIgXSB8fCB7IGVjaG8gIl9pc19jb250YWlu"\ - "ZXJfcnVubmluZzogQ29udGFpbmVyIG5hbWUgaXMgZW1wdHkiID4mMjsgcmV0dXJuIDE7IH0KICAg"\ - "IGlmICEgZG9ja2VyIHBzIC0tZm9ybWF0ICJ7ey5OYW1lc319IiB8IGdyZXAgLXEgIl4kMSQiOyB0"\ - "aGVuCiAgICAgICAgcmV0dXJuIDEKICAgIGZpCiAgICByZXR1cm4gMAp9CgojIFByaW50cyB0aGUg"\ - "SUQgb2YgdGhlIG5hbWVkIGNvbnRhaW5lci4KX2dldF9jb250YWluZXJfaWQoKSB7CiAgICBkb2Nr"\ - "ZXIgcHMgLS1mb3JtYXQgInt7LklEfX0iIC0tZmlsdGVyICJuYW1lPSQxIgp9CgojIFByaW50cyB0"\ - "aGUgc3RhdHVzIHN0cmluZyBvZiB0aGUgbmFtZWQgY29udGFpbmVyLgpfZ2V0X2NvbnRhaW5lcl9z"\ - "dGF0dXMoKSB7CiAgICBkb2NrZXIgcHMgLS1mb3JtYXQgInt7LlN0YXR1c319IiAtLWZpbHRlciAi"\ - "bmFtZT0kMSIKfQoKIyBTdGFydHMgYW4gZXhpc3RpbmcsIHN0b3BwZWQgY29udGFpbmVyLgpfc3Rh"\ - "cnRfY29udGFpbmVyKCkgewogICAgX2lzX2NvbnRhaW5lcl9leGlzdHMgIiQxIiB8fCByZXR1cm4g"\ - "MQogICAgX2lzX2NvbnRhaW5lcl9ydW5uaW5nICIkMSIgJiYgcmV0dXJuIDAKICAgIGRvY2tlciBz"\ - "dGFydCAiJDEiCn0KCiMgU3RvcHMgYSBydW5uaW5nIGNvbnRhaW5lci4KX3N0b3BfY29udGFpbmVy"\ - "KCkgewogICAgX2lzX2NvbnRhaW5lcl9ydW5uaW5nICIkMSIgfHwgcmV0dXJuIDA7CiAgICBkb2Nr"\ - "ZXIgc3RvcCAiJDEiCn0gICAKCiMgU3RvcHMgKGlmIG5lZWRlZCkgYW5kIHJlbW92ZXMgYSBjb250"\ - "YWluZXIuCl9yZW1vdmVfY29udGFpbmVyKCkgewogICAgX3N0b3BfY29udGFpbmVyICIkMSIKICAg"\ - "IF9pc19jb250YWluZXJfZXhpc3RzICIkMSIgfHwgcmV0dXJuIDA7CiAgICBkb2NrZXIgcm0gIiQx"\ - "Igp9CgojIFByaW50cyB0aGUgbG9ncyBmb3IgYSBjb250YWluZXIuCl9nZXRfY29udGFpbmVyX2xv"\ - "Z3MoKSB7CiAgICBpZiAhIF9pc19jb250YWluZXJfZXhpc3RzICIkMSI7IHRoZW4KICAgICAgICBl"\ - "Y2hvICJDb250YWluZXIgJDEgZG9lcyBub3QgZXhpc3QiCiAgICAgICAgcmV0dXJuIDEKICAgIGZp"\ - "CgogICAgZG9ja2VyIGxvZ3MgIiQxIgp9CgojIENoZWNrcyBpZiBsaXN0ZWQgZW52aXJvbm1lbnQg"\ - "dmFyaWFibGVzIGFyZSBzZXQ7IGNhbGxzIF9kaWUoKSBpZiBhbnkgYXJlIG1pc3NpbmcuCl9jaGVj"\ - "a19yZXF1aXJlZF9lbnZfdmFycygpIHsKICAgIGxvY2FsIHJlcXVpcmVkX3ZhcnM9KCIkQCIpCiAg"\ - "ICBmb3IgdmFyIGluICIke3JlcXVpcmVkX3ZhcnNbQF19IjsgZG8KICAgICAgICBpZiBbIC16ICIk"\ - "eyF2YXI6LX0iIF07IHRoZW4KICAgICAgICAgICAgX2RpZSAiUmVxdWlyZWQgZW52aXJvbm1lbnQg"\ - "dmFyaWFibGUgJHZhciBpcyBub3Qgc2V0IgogICAgICAgIGZpCiAgICBkb25lCn0KCiMgUmVtb3Zl"\ - "cyBhIHBhdGggdXNpbmcgYSByb290IERvY2tlciBjb250YWluZXIgKGZvciBwZXJtaXNzaW9ucyku"\ - "Cl9yb290X3JlbW92ZV90cmVlKCkgewogICAgbG9jYWwgdG9fcmVtb3ZlPSIkMSIKICAgIHBhcmVu"\ - "dD0kKGRpcm5hbWUgIiR0b19yZW1vdmUiKQogICAgYWJzX3BhcmVudD0kKHJlYWxwYXRoICIkcGFy"\ - "ZW50IikKICAgIGNoaWxkPSQoYmFzZW5hbWUgIiR0b19yZW1vdmUiKQogICAgZG9ja2VyIHJ1biAt"\ - "LXJtIC12ICIkYWJzX3BhcmVudCI6L2RhdGEgYWxwaW5lIHJtIC1yZiAiL2RhdGEvJGNoaWxkIgp9"\ - "CgojIExvYWQgYXV0b2NvbW1hbmRzCnNvdXJjZSAiJHtBR0VOVF9QQVRIfS9kYXRhY29tbWFuZHNf"\ - "djIuc2gi"; + // File: ds_run.sh + fs::path outpath = fs::path(destination_folder) / "ds_run.sh"; + static const char filedata_base64[] = "IyEvYmluL2Jhc2gKc2V0IC1ldW8gcGlwZWZhaWwKCiMgRHJvcHNoZWxsIFJ1biAtIEV4ZWN1dGUg"\ + "YSBzZXJ2aWNlIGNvbW1hbmQgb24gdGhlIHJlbW90ZSBzZXJ2ZXIKIwojIFVzYWdlOiBkc19ydW4u"\ + "c2ggU0VSVklDRSBDT01NQU5EIFthcmdzLi4uXQojCiMgUmVtb3RlIGRpcmVjdG9yeSBzdHJ1Y3R1"\ + "cmU6CiAgICAjIC8vICAgfC0tIHNlcnZlcl9pbmZvLmVudgogICAgIyAvLyAgIHwtLSBzZXJ2ZXIu"\ + "anNvbgogICAgIyAvLyAgIHwtLSBiYWNrdXBzCiAgICAjIC8vICAgfC0tIHRlbXBfZmlsZXMKICAg"\ + "ICMgLy8gICB8LS0gYWdlbnQKICAgICMgLy8gICB8ICAgfC0tIGJiNjQKICAgICMgLy8gICB8ICAg"\ + "fC0tIGRzX3J1bi5zaCAodGhpcyBzY3JpcHQpCiAgICAjIC8vICAgfCAgIHwtLSBjb21tb24uc2gK"\ + "ICAgICMgLy8gICB8ICAgfC0tIChvdGhlciBhZ2VudCBmaWxlcykKICAgICMgLy8gICB8LS0gc2Vy"\ + "dmljZXMKICAgICMgLy8gICAgICAgfC0tIHNlcnZpY2UgbmFtZQogICAgIyAvLyAgICAgICAgICAg"\ + "fC0tIGNvbmZpZwogICAgIyAvLyAgICAgICAgICAgICAgIHwtLSBzZXJ2aWNlLmVudiAoYWN0dWFs"\ + "IHNlcnZpY2UgY29uZmlnKQogICAgIyAvLyAgICAgICAgICAgfC0tIHRlbXBsYXRlCiAgICAjIC8v"\ + "ICAgICAgICAgICAgICAgfC0tIChzY3JpcHQgZmlsZXMpCiAgICAjIC8vICAgICAgICAgICAgICAg"\ + "fC0tIHRlbXBsYXRlX2luZm8uZW52CiAgICAjIC8vICAgICAgICAgICAgICAgfC0tIGNvbmZpZwog"\ + "ICAgIyAvLyAgICAgICAgICAgICAgICAgICB8LS0gc2VydmljZS5lbnYgKGRlZmF1bHQgc2Vydmlj"\ + "ZSBjb25maWcpCiAgICAjIC8vICAgICAgICAgICAgICAgICAgIHwtLSAob3RoZXIgdGVtcGxhdGUv"\ + "ZXhhbXBsZSBjb25maWcgZmlsZXMpCgojIC0tIERldGVybWluZSBwYXRocyAtLQpTQ1JJUFRfUEFU"\ + "SD0iJChyZWFkbGluayAtZiAiJHtCQVNIX1NPVVJDRVswXX0iKSIKZXhwb3J0IEFHRU5UX1BBVEg9"\ + "IiQoZGlybmFtZSAiJHtTQ1JJUFRfUEFUSH0iKSIKZXhwb3J0IERST1BTSEVMTF9ESVI9IiQoZGly"\ + "bmFtZSAiJHtBR0VOVF9QQVRIfSIpIgoKIyAtLSBTb3VyY2UgY29tbW9uIGZ1bmN0aW9ucyBmaXJz"\ + "dCAobmVlZGVkIGZvciBfZGllKSAtLQppZiBbWyAhIC1mICIke0FHRU5UX1BBVEh9L2NvbW1vbi5z"\ + "aCIgXV07IHRoZW4KICAgIGVjaG8gIkVycm9yOiBjb21tb24uc2ggbm90IGZvdW5kIGF0ICR7QUdF"\ + "TlRfUEFUSH0vY29tbW9uLnNoIiA+JjIKICAgIGV4aXQgMQpmaQpzb3VyY2UgIiR7QUdFTlRfUEFU"\ + "SH0vY29tbW9uLnNoIgoKIyAtLSBWYWxpZGF0ZSBhcmd1bWVudHMgLS0KaWYgW1sgJCMgLWx0IDIg"\ + "XV07IHRoZW4KICAgIGVjaG8gIlVzYWdlOiBkc19ydW4uc2ggU0VSVklDRSBDT01NQU5EIFthcmdz"\ + "Li4uXSIgPiYyCiAgICBleGl0IDEKZmkKCmV4cG9ydCBTRVJWSUNFPSIkMSIKZXhwb3J0IERTQ09N"\ + "TUFORD0iJDIiCnNoaWZ0IDIKCiMgU3VwcHJlc3MgRG9ja2VyIENMSSBoaW50cwpleHBvcnQgRE9D"\ + "S0VSX0NMSV9ISU5UUz1mYWxzZQoKIyAtLSBTZXQgdXAgcGF0aHMgLS0KZXhwb3J0IENPTkZJR19Q"\ + "QVRIPSIke0RST1BTSEVMTF9ESVJ9L3NlcnZpY2VzLyR7U0VSVklDRX0vY29uZmlnIgpleHBvcnQg"\ + "VEVNUExBVEVfUEFUSD0iJHtEUk9QU0hFTExfRElSfS9zZXJ2aWNlcy8ke1NFUlZJQ0V9L3RlbXBs"\ + "YXRlIgoKIyAtLSBWYWxpZGF0ZSBzZXJ2aWNlIGV4aXN0cyAtLQpbWyAtZiAiJHtEUk9QU0hFTExf"\ + "RElSfS9zZXJ2ZXJfaW5mby5lbnYiIF1dIHx8IF9kaWUgIk1pc3NpbmcgJHtEUk9QU0hFTExfRElS"\ + "fS9zZXJ2ZXJfaW5mby5lbnYiCltbIC1kICIke0NPTkZJR19QQVRIfSIgXV0gfHwgX2RpZSAiU2Vy"\ + "dmljZSAnJHtTRVJWSUNFfScgZG9lcyBub3QgZXhpc3Qgb24gc2VydmVyIChtaXNzaW5nICR7Q09O"\ + "RklHX1BBVEh9KSIKCiMgLS0gTG9hZCB0ZW1wbGF0ZSBpbmZvICh0ZW1wbGF0ZSBkZWZhdWx0cywg"\ + "bG9hZGVkIGZpcnN0KSAtLQpleHBvcnQgVEVNUExBVEVfSU5GT19FTlY9IiR7VEVNUExBVEVfUEFU"\ + "SH0vdGVtcGxhdGVfaW5mby5lbnYiCmlmIFtbICEgLWYgIiR7VEVNUExBVEVfSU5GT19FTlZ9IiBd"\ + "XTsgdGhlbgogICAgVEVNUExBVEVfSU5GT19FTlY9IiR7VEVNUExBVEVfUEFUSH0vY29uZmlnLy50"\ + "ZW1wbGF0ZV9pbmZvLmVudiIKZmkKW1sgLWYgIiR7VEVNUExBVEVfSU5GT19FTlZ9IiBdXSB8fCBf"\ + "ZGllICJNaXNzaW5nIHRlbXBsYXRlX2luZm8uZW52IGF0ICR7VEVNUExBVEVfSU5GT19FTlZ9IgoK"\ + "IyAtLSBMb2FkIHNlcnZpY2UgY29uZmlnIChvdmVycmlkZXMgdGVtcGxhdGUgZGVmYXVsdHMpIC0t"\ + "CmV4cG9ydCBTRVJWSUNFX0VOVj0iJHtDT05GSUdfUEFUSH0vc2VydmljZS5lbnYiCltbIC1mICIk"\ + "e1NFUlZJQ0VfRU5WfSIgXV0gfHwgX2RpZSAiTWlzc2luZyBzZXJ2aWNlLmVudiBhdCAke1NFUlZJ"\ + "Q0VfRU5WfSIKCiMgLS0gU291cmNlIGVudiBmaWxlcyB3aXRoIGF1dG8tZXhwb3J0IChzZXQgLWEg"\ + "ZXhwb3J0cyBhbGwgYXNzaWduZWQgdmFyaWFibGVzKSAtLQpzZXQgLWEKc291cmNlICIke0RST1BT"\ + "SEVMTF9ESVJ9L3NlcnZlcl9pbmZvLmVudiIKc291cmNlICIke1RFTVBMQVRFX0lORk9fRU5WfSIK"\ + "c291cmNlICIke1NFUlZJQ0VfRU5WfSIKc2V0ICthCgojIC0tIExvY2F0ZSBhbmQgdmFsaWRhdGUg"\ + "Y29tbWFuZCBzY3JpcHQgLS0KQ09NTUFORF9UT19SVU49IiR7VEVNUExBVEVfUEFUSH0vJHtEU0NP"\ + "TU1BTkR9IgppZiBbWyAhIC1mICIke0NPTU1BTkRfVE9fUlVOfSIgXV07IHRoZW4KICAgIENPTU1B"\ + "TkRfVE9fUlVOPSIke0NPTU1BTkRfVE9fUlVOfS5zaCIKZmkKW1sgLWYgIiR7Q09NTUFORF9UT19S"\ + "VU59IiBdXSB8fCBfZGllICJDb21tYW5kIG5vdCBmb3VuZDogJHtEU0NPTU1BTkR9IChsb29rZWQg"\ + "Zm9yICR7VEVNUExBVEVfUEFUSH0vJHtEU0NPTU1BTkR9Wy5zaF0pIgoKIyAtLSBFeGVjdXRlIHRo"\ + "ZSBjb21tYW5kIHdpdGggYW55IHJlbWFpbmluZyBhcmd1bWVudHMgLS0KY2QgIiR7VEVNUExBVEVf"\ + "UEFUSH0iCmV4ZWMgYmFzaCAiJHtDT01NQU5EX1RPX1JVTn0iICIkQCIK"; // Decode Base64 data size_t decoded_size = (strlen(filedata_base64) * 3) / 4; @@ -685,7 +817,7 @@ bool recreate_tree(std::string destination_folder) { size_t actual_size; base64_decode(filedata_base64, strlen(filedata_base64), decoded_data, &actual_size); - bool file_written = _recreate_file_(outpath, 325502528690785098ULL, std::filesystem::perms(509), decoded_data, actual_size); + bool file_written = _recreate_file_(outpath, 9042417257106529502ULL, std::filesystem::perms(509), decoded_data, actual_size); delete[] decoded_data; any_written = any_written || file_written; } diff --git a/source/src/commands/shared_commands.cpp b/source/src/commands/shared_commands.cpp index a1dfd66..4e753ad 100644 --- a/source/src/commands/shared_commands.cpp +++ b/source/src/commands/shared_commands.cpp @@ -3,12 +3,14 @@ #include #include #include +#include #include "utils/utils.hpp" #include "servers.hpp" #include "directories.hpp" #include "services.hpp" #include "servers.hpp" #include "utils/output.hpp" +#include "utils/execute.hpp" #include "transwarp.hpp" namespace dropshell @@ -150,6 +152,7 @@ namespace dropshell // ------------------------------------------------------------------------------------------------ // get_all_services_status : SHARED COMMAND + // Uses all_status.sh on the remote server to get status for all services in one SSH call // ------------------------------------------------------------------------------------------------ std::map get_all_services_status(const ServerConfig & server_env) { @@ -165,41 +168,75 @@ namespace dropshell std::map status; std::string server_name = server_env.get_server_name(); - // Get all services for this user on this server - std::vector services = get_server_services_info(server_name); - - // Filter services for this specific user - std::vector user_services; - for (const auto& service : services) { - if (service.user == user) { - user_services.push_back(service); - } + // Run all_status.sh on the remote server to get all service statuses in one call + std::string agent_path = remotepath(server_name, user).agent(); + std::string output; + + sCommand cmd(agent_path, "all_status.sh", {}); + bool success = execute_ssh_command(server_env.get_SSH_INFO(user), cmd, cMode::Silent, &output); + + if (!success || output.empty()) { + debug << "Failed to run all_status.sh on " << server_name << " for user " << user << std::endl; + return status; } - - // Use parallel execution to check all services simultaneously - // This matches how the list command already works for multiple servers - if (user_services.size() > 0) { - std::mutex status_mutex; - - // transwarp requires at least 1 thread - size_t num_threads = std::max(size_t(1), user_services.size()); - transwarp::parallel exec{num_threads}; - auto task = transwarp::for_each(exec, user_services.begin(), user_services.end(), - [&status, &status_mutex, &server_name](const LocalServiceInfo& service) { - ServiceStatus service_status; - - // Get health status using the existing is_healthy function - service_status.health = is_healthy(server_name, service.service_name); - - // Get ports using the new get_ports function - service_status.ports = get_ports(server_name, service.service_name); - - // Thread-safe update of the status map - std::lock_guard lock(status_mutex); - status[service.service_name] = service_status; - }); - - task->wait(); + + // Parse JSON response + try { + nlohmann::json json_response = nlohmann::json::parse(output); + + if (!json_response.contains("services") || !json_response["services"].is_array()) { + debug << "Invalid JSON response from all_status.sh" << std::endl; + return status; + } + + for (const auto& service_json : json_response["services"]) { + if (!service_json.contains("name") || !service_json["name"].is_string()) { + continue; + } + + std::string service_name = service_json["name"].get(); + ServiceStatus service_status; + + // Parse status + if (service_json.contains("status") && service_json["status"].is_string()) { + std::string status_str = service_json["status"].get(); + if (status_str == "Running") { + service_status.health = HealthStatus::HEALTHY; + } else if (status_str == "Stopped") { + service_status.health = HealthStatus::UNHEALTHY; + } else if (status_str == "Error") { + service_status.health = HealthStatus::ERROR; + } else { + service_status.health = HealthStatus::UNKNOWN; + } + } else { + service_status.health = HealthStatus::UNKNOWN; + } + + // Parse ports + if (service_json.contains("ports") && service_json["ports"].is_string()) { + std::string ports_str = service_json["ports"].get(); + std::stringstream ss(ports_str); + std::string port_token; + while (ss >> port_token) { + // Remove any commas + port_token.erase(std::remove(port_token.begin(), port_token.end(), ','), port_token.end()); + try { + int port = std::stoi(port_token); + if (port > 0 && port <= 65535) { + service_status.ports.push_back(port); + } + } catch (...) { + // Ignore non-numeric entries + } + } + } + + status[service_name] = service_status; + } + } catch (const nlohmann::json::parse_error& e) { + debug << "Failed to parse JSON from all_status.sh: " << e.what() << std::endl; + debug << "Output was: " << output << std::endl; } return status;