diff --git a/source/agent-remote/agent.hash b/source/agent-remote/agent.hash index 9a2c544..c639f42 100644 --- a/source/agent-remote/agent.hash +++ b/source/agent-remote/agent.hash @@ -1 +1 @@ -36f6a765ce8cbd6264e650e1535004866ef9131f826a85ee425f42ca01fe673e +b7b7f597d066c9959efde19743c65b1988f259c8a11244373242c5966d720581 diff --git a/source/src/autogen/_agent-remote.cpp b/source/src/autogen/_agent-remote.cpp index 9b61a7c..b5d6301 100644 --- a/source/src/autogen/_agent-remote.cpp +++ b/source/src/autogen/_agent-remote.cpp @@ -461,62 +461,67 @@ bool recreate_tree(std::string destination_folder) { "T1RfVVNFRF9HQj0kKGRmIC1CRyAvIDI+L2Rldi9udWxsIHwgYXdrICdOUj09Mntnc3ViKC9HLywi"\ "IiwkMyk7IHByaW50ICQzfScgfHwgZWNobyAiMCIpCkRJU0tfUk9PVF9UT1RBTF9HQj0kKGRmIC1C"\ "RyAvIDI+L2Rldi9udWxsIHwgYXdrICdOUj09Mntnc3ViKC9HLywiIiwkMik7IHByaW50ICQyfScg"\ - "fHwgZWNobyAiMCIpCgojIERpc2sgL3RhbmsgKG9ubHkgaWYgbW91bnRlZCkKRElTS19UQU5LX1VT"\ - "RURfR0I9IiIKRElTS19UQU5LX1RPVEFMX0dCPSIiCmlmIFsgLWQgL3RhbmsgXSAmJiBtb3VudHBv"\ - "aW50IC1xIC90YW5rIDI+L2Rldi9udWxsOyB0aGVuCiAgICBESVNLX1RBTktfVVNFRF9HQj0kKGRm"\ - "IC1CRyAvdGFuayAyPi9kZXYvbnVsbCB8IGF3ayAnTlI9PTJ7Z3N1YigvRy8sIiIsJDMpOyBwcmlu"\ - "dCAkM30nIHx8IGVjaG8gIiIpCiAgICBESVNLX1RBTktfVE9UQUxfR0I9JChkZiAtQkcgL3Rhbmsg"\ - "Mj4vZGV2L251bGwgfCBhd2sgJ05SPT0ye2dzdWIoL0cvLCIiLCQyKTsgcHJpbnQgJDJ9JyB8fCBl"\ - "Y2hvICIiKQpmaQoKIyBJUCBhZGRyZXNzZXMKSVBfTE9DQUw9JChob3N0bmFtZSAtSSAyPi9kZXYv"\ - "bnVsbCB8IGF3ayAne3ByaW50ICQxfScgfHwgZWNobyAiVW5rbm93biIpCgpJUF9UQUlMU0NBTEU9"\ - "IiIKaWYgY29tbWFuZCAtdiB0YWlsc2NhbGUgJj4vZGV2L251bGw7IHRoZW4KICAgIElQX1RBSUxT"\ - "Q0FMRT0kKHRhaWxzY2FsZSBpcCAtNCAyPi9kZXYvbnVsbCB8fCBlY2hvICIiKQpmaQoKSVBfUFVC"\ - "TElDPSIiCmlmIGNvbW1hbmQgLXYgY3VybCAmPi9kZXYvbnVsbDsgdGhlbgogICAgSVBfUFVCTElD"\ - "PSQoY3VybCAtcyAtLW1heC10aW1lIDMgaWZjb25maWcubWUgMj4vZGV2L251bGwgfHwgZWNobyAi"\ - "IikKZWxpZiBjb21tYW5kIC12IHdnZXQgJj4vZGV2L251bGw7IHRoZW4KICAgIElQX1BVQkxJQz0k"\ - "KHdnZXQgLXFPLSAtLXRpbWVvdXQ9MyBpZmNvbmZpZy5tZSAyPi9kZXYvbnVsbCB8fCBlY2hvICIi"\ - "KQpmaQoKIyBPUyBpbmZvCk9TPSQoZ3JlcCBQUkVUVFlfTkFNRSAvZXRjL29zLXJlbGVhc2UgMj4v"\ - "ZGV2L251bGwgfCBjdXQgLWQ9IC1mMiB8IHRyIC1kICciJyB8fCB1bmFtZSAtbyAyPi9kZXYvbnVs"\ - "bCB8fCBlY2hvICJVbmtub3duIikKS0VSTkVMPSQodW5hbWUgLXIgMj4vZGV2L251bGwgfHwgZWNo"\ - "byAiVW5rbm93biIpClVQVElNRT0kKHVwdGltZSAtcCAyPi9kZXYvbnVsbCB8fCB1cHRpbWUgMj4v"\ - "ZGV2L251bGwgfHwgZWNobyAiVW5rbm93biIpCgojIERvY2tlcgpET0NLRVJfVkVSU0lPTj0iIgpp"\ - "ZiBjb21tYW5kIC12IGRvY2tlciAmPi9kZXYvbnVsbDsgdGhlbgogICAgRE9DS0VSX1ZFUlNJT049"\ - "JChkb2NrZXIgLS12ZXJzaW9uIDI+L2Rldi9udWxsIHwgYXdrICd7cHJpbnQgJDN9JyB8IHRyIC1k"\ - "ICcsJyB8fCBlY2hvICIiKQpmaQoKIyBHUFUgbGlzdCAobWF5IGhhdmUgMCwgMSwgb3IgbXVsdGlw"\ - "bGUpCkdQVV9KU09OPSJbXSIKaWYgY29tbWFuZCAtdiBsc3BjaSAmPi9kZXYvbnVsbDsgdGhlbgog"\ - "ICAgR1BVX0xJTkVTPSQobHNwY2kgMj4vZGV2L251bGwgfCBncmVwIC1pICdWR0EgY29tcGF0aWJs"\ - "ZSBjb250cm9sbGVyXHwzRCBjb250cm9sbGVyXHxEaXNwbGF5IGNvbnRyb2xsZXInIHwgc2VkICdz"\ - "L15bXiBdKiAvLzsgcy9WR0EgY29tcGF0aWJsZSBjb250cm9sbGVyOiAvLzsgcy8zRCBjb250cm9s"\ - "bGVyOiAvLzsgcy9EaXNwbGF5IGNvbnRyb2xsZXI6IC8vJyB8fCB0cnVlKQogICAgaWYgWyAtbiAi"\ - "JEdQVV9MSU5FUyIgXTsgdGhlbgogICAgICAgIEdQVV9KU09OPSJbIgogICAgICAgIGZpcnN0PXRy"\ - "dWUKICAgICAgICB3aGlsZSBJRlM9IHJlYWQgLXIgbGluZTsgZG8KICAgICAgICAgICAgWyAteiAi"\ - "JGxpbmUiIF0gJiYgY29udGludWUKICAgICAgICAgICAgaWYgWyAiJGZpcnN0IiA9ICJ0cnVlIiBd"\ - "OyB0aGVuCiAgICAgICAgICAgICAgICBmaXJzdD1mYWxzZQogICAgICAgICAgICBlbHNlCiAgICAg"\ - "ICAgICAgICAgICBHUFVfSlNPTis9IiwiCiAgICAgICAgICAgIGZpCiAgICAgICAgICAgIEdQVV9K"\ - "U09OKz0iXCIiCiAgICAgICAgICAgIEdQVV9KU09OKz0kKGpzb25fZXNjYXBlICIkbGluZSIpCiAg"\ - "ICAgICAgICAgIEdQVV9KU09OKz0iXCIiCiAgICAgICAgZG9uZSA8PDwgIiRHUFVfTElORVMiCiAg"\ - "ICAgICAgR1BVX0pTT04rPSJdIgogICAgZmkKZmkKCiMgLS0gT3V0cHV0IEpTT04gLS0KZWNobyAt"\ - "biAneycKZWNobyAtbiAnImhvc3RuYW1lIjoiJzsganNvbl9lc2NhcGUgIiRIT1NUTkFNRSI7IGVj"\ - "aG8gLW4gJyInCmVjaG8gLW4gJywiY3B1IjoiJzsganNvbl9lc2NhcGUgIiRDUFUiOyBlY2hvIC1u"\ - "ICciJwplY2hvIC1uICcsImNwdV9jb3JlcyI6Iic7IGpzb25fZXNjYXBlICIkQ1BVX0NPUkVTIjsg"\ - "ZWNobyAtbiAnIicKZWNobyAtbiAnLCJtb3RoZXJib2FyZCI6Iic7IGpzb25fZXNjYXBlICIkTU9U"\ - "SEVSQk9BUkQiOyBlY2hvIC1uICciJwplY2hvIC1uICcsImdwdSI6JyIkR1BVX0pTT04iCmVjaG8g"\ - "LW4gJywicmFtX3VzZWRfbWIiOiInOyBqc29uX2VzY2FwZSAiJFJBTV9VU0VEX01CIjsgZWNobyAt"\ - "biAnIicKZWNobyAtbiAnLCJyYW1fdG90YWxfbWIiOiInOyBqc29uX2VzY2FwZSAiJFJBTV9UT1RB"\ - "TF9NQiI7IGVjaG8gLW4gJyInCmVjaG8gLW4gJywiZGlza19yb290X3VzZWRfZ2IiOiInOyBqc29u"\ - "X2VzY2FwZSAiJERJU0tfUk9PVF9VU0VEX0dCIjsgZWNobyAtbiAnIicKZWNobyAtbiAnLCJkaXNr"\ - "X3Jvb3RfdG90YWxfZ2IiOiInOyBqc29uX2VzY2FwZSAiJERJU0tfUk9PVF9UT1RBTF9HQiI7IGVj"\ - "aG8gLW4gJyInCmVjaG8gLW4gJywiZGlza190YW5rX3VzZWRfZ2IiOiInOyBqc29uX2VzY2FwZSAi"\ - "JERJU0tfVEFOS19VU0VEX0dCIjsgZWNobyAtbiAnIicKZWNobyAtbiAnLCJkaXNrX3RhbmtfdG90"\ - "YWxfZ2IiOiInOyBqc29uX2VzY2FwZSAiJERJU0tfVEFOS19UT1RBTF9HQiI7IGVjaG8gLW4gJyIn"\ - "CmVjaG8gLW4gJywiaXBfbG9jYWwiOiInOyBqc29uX2VzY2FwZSAiJElQX0xPQ0FMIjsgZWNobyAt"\ - "biAnIicKZWNobyAtbiAnLCJpcF90YWlsc2NhbGUiOiInOyBqc29uX2VzY2FwZSAiJElQX1RBSUxT"\ - "Q0FMRSI7IGVjaG8gLW4gJyInCmVjaG8gLW4gJywiaXBfcHVibGljIjoiJzsganNvbl9lc2NhcGUg"\ - "IiRJUF9QVUJMSUMiOyBlY2hvIC1uICciJwplY2hvIC1uICcsIm9zIjoiJzsganNvbl9lc2NhcGUg"\ - "IiRPUyI7IGVjaG8gLW4gJyInCmVjaG8gLW4gJywia2VybmVsIjoiJzsganNvbl9lc2NhcGUgIiRL"\ - "RVJORUwiOyBlY2hvIC1uICciJwplY2hvIC1uICcsInVwdGltZSI6Iic7IGpzb25fZXNjYXBlICIk"\ - "VVBUSU1FIjsgZWNobyAtbiAnIicKZWNobyAtbiAnLCJkb2NrZXJfdmVyc2lvbiI6Iic7IGpzb25f"\ - "ZXNjYXBlICIkRE9DS0VSX1ZFUlNJT04iOyBlY2hvIC1uICciJwplY2hvICd9Jwo="; + "fHwgZWNobyAiMCIpCgojIExhcmdlc3QgZGlzayBieSB0b3RhbCBjYXBhY2l0eSAoYWNyb3NzIGFs"\ + "bCBtb3VudGVkIGZpbGVzeXN0ZW1zKQpESVNLX0xBUkdFU1RfVE9UQUxfR0I9JChkZiAtQkcgMj4v"\ + "ZGV2L251bGwgfCBhd2sgJ05SPjF7Z3N1YigvRy8sIiIsJDIpOyBpZigkMiswID4gbWF4KSBtYXg9"\ + "JDIrMH0gRU5Ee3ByaW50IG1heCswfScpCgojIERpc2sgL3RhbmsgKG9ubHkgaWYgbW91bnRlZCkK"\ + "RElTS19UQU5LX1VTRURfR0I9IiIKRElTS19UQU5LX1RPVEFMX0dCPSIiCmlmIFsgLWQgL3Rhbmsg"\ + "XSAmJiBtb3VudHBvaW50IC1xIC90YW5rIDI+L2Rldi9udWxsOyB0aGVuCiAgICBESVNLX1RBTktf"\ + "VVNFRF9HQj0kKGRmIC1CRyAvdGFuayAyPi9kZXYvbnVsbCB8IGF3ayAnTlI9PTJ7Z3N1YigvRy8s"\ + "IiIsJDMpOyBwcmludCAkM30nIHx8IGVjaG8gIiIpCiAgICBESVNLX1RBTktfVE9UQUxfR0I9JChk"\ + "ZiAtQkcgL3RhbmsgMj4vZGV2L251bGwgfCBhd2sgJ05SPT0ye2dzdWIoL0cvLCIiLCQyKTsgcHJp"\ + "bnQgJDJ9JyB8fCBlY2hvICIiKQpmaQoKIyBJUCBhZGRyZXNzZXMKSVBfTE9DQUw9JChob3N0bmFt"\ + "ZSAtSSAyPi9kZXYvbnVsbCB8IGF3ayAne3ByaW50ICQxfScgfHwgZWNobyAiVW5rbm93biIpCgpJ"\ + "UF9UQUlMU0NBTEU9IiIKaWYgY29tbWFuZCAtdiB0YWlsc2NhbGUgJj4vZGV2L251bGw7IHRoZW4K"\ + "ICAgIElQX1RBSUxTQ0FMRT0kKHRhaWxzY2FsZSBpcCAtNCAyPi9kZXYvbnVsbCB8fCBlY2hvICIi"\ + "KQpmaQoKSVBfUFVCTElDPSIiCmlmIGNvbW1hbmQgLXYgY3VybCAmPi9kZXYvbnVsbDsgdGhlbgog"\ + "ICAgSVBfUFVCTElDPSQoY3VybCAtcyAtLW1heC10aW1lIDMgaWZjb25maWcubWUgMj4vZGV2L251"\ + "bGwgfHwgZWNobyAiIikKZWxpZiBjb21tYW5kIC12IHdnZXQgJj4vZGV2L251bGw7IHRoZW4KICAg"\ + "IElQX1BVQkxJQz0kKHdnZXQgLXFPLSAtLXRpbWVvdXQ9MyBpZmNvbmZpZy5tZSAyPi9kZXYvbnVs"\ + "bCB8fCBlY2hvICIiKQpmaQoKIyBPUyBpbmZvCk9TPSQoZ3JlcCBQUkVUVFlfTkFNRSAvZXRjL29z"\ + "LXJlbGVhc2UgMj4vZGV2L251bGwgfCBjdXQgLWQ9IC1mMiB8IHRyIC1kICciJyB8fCB1bmFtZSAt"\ + "byAyPi9kZXYvbnVsbCB8fCBlY2hvICJVbmtub3duIikKS0VSTkVMPSQodW5hbWUgLXIgMj4vZGV2"\ + "L251bGwgfHwgZWNobyAiVW5rbm93biIpClVQVElNRT0kKHVwdGltZSAtcCAyPi9kZXYvbnVsbCB8"\ + "fCB1cHRpbWUgMj4vZGV2L251bGwgfHwgZWNobyAiVW5rbm93biIpCgojIERvY2tlcgpET0NLRVJf"\ + "VkVSU0lPTj0iIgppZiBjb21tYW5kIC12IGRvY2tlciAmPi9kZXYvbnVsbDsgdGhlbgogICAgRE9D"\ + "S0VSX1ZFUlNJT049JChkb2NrZXIgLS12ZXJzaW9uIDI+L2Rldi9udWxsIHwgYXdrICd7cHJpbnQg"\ + "JDN9JyB8IHRyIC1kICcsJyB8fCBlY2hvICIiKQpmaQoKIyBHUFUgbGlzdCAobWF5IGhhdmUgMCwg"\ + "MSwgb3IgbXVsdGlwbGUpCkdQVV9KU09OPSJbXSIKaWYgY29tbWFuZCAtdiBsc3BjaSAmPi9kZXYv"\ + "bnVsbDsgdGhlbgogICAgR1BVX0xJTkVTPSQobHNwY2kgMj4vZGV2L251bGwgfCBncmVwIC1pICdW"\ + "R0EgY29tcGF0aWJsZSBjb250cm9sbGVyXHwzRCBjb250cm9sbGVyXHxEaXNwbGF5IGNvbnRyb2xs"\ + "ZXInIHwgc2VkICdzL15bXiBdKiAvLzsgcy9WR0EgY29tcGF0aWJsZSBjb250cm9sbGVyOiAvLzsg"\ + "cy8zRCBjb250cm9sbGVyOiAvLzsgcy9EaXNwbGF5IGNvbnRyb2xsZXI6IC8vJyB8fCB0cnVlKQog"\ + "ICAgaWYgWyAtbiAiJEdQVV9MSU5FUyIgXTsgdGhlbgogICAgICAgIEdQVV9KU09OPSJbIgogICAg"\ + "ICAgIGZpcnN0PXRydWUKICAgICAgICB3aGlsZSBJRlM9IHJlYWQgLXIgbGluZTsgZG8KICAgICAg"\ + "ICAgICAgWyAteiAiJGxpbmUiIF0gJiYgY29udGludWUKICAgICAgICAgICAgaWYgWyAiJGZpcnN0"\ + "IiA9ICJ0cnVlIiBdOyB0aGVuCiAgICAgICAgICAgICAgICBmaXJzdD1mYWxzZQogICAgICAgICAg"\ + "ICBlbHNlCiAgICAgICAgICAgICAgICBHUFVfSlNPTis9IiwiCiAgICAgICAgICAgIGZpCiAgICAg"\ + "ICAgICAgIEdQVV9KU09OKz0iXCIiCiAgICAgICAgICAgIEdQVV9KU09OKz0kKGpzb25fZXNjYXBl"\ + "ICIkbGluZSIpCiAgICAgICAgICAgIEdQVV9KU09OKz0iXCIiCiAgICAgICAgZG9uZSA8PDwgIiRH"\ + "UFVfTElORVMiCiAgICAgICAgR1BVX0pTT04rPSJdIgogICAgZmkKZmkKCiMgLS0gT3V0cHV0IEpT"\ + "T04gLS0KZWNobyAtbiAneycKZWNobyAtbiAnImhvc3RuYW1lIjoiJzsganNvbl9lc2NhcGUgIiRI"\ + "T1NUTkFNRSI7IGVjaG8gLW4gJyInCmVjaG8gLW4gJywiY3B1IjoiJzsganNvbl9lc2NhcGUgIiRD"\ + "UFUiOyBlY2hvIC1uICciJwplY2hvIC1uICcsImNwdV9jb3JlcyI6Iic7IGpzb25fZXNjYXBlICIk"\ + "Q1BVX0NPUkVTIjsgZWNobyAtbiAnIicKZWNobyAtbiAnLCJtb3RoZXJib2FyZCI6Iic7IGpzb25f"\ + "ZXNjYXBlICIkTU9USEVSQk9BUkQiOyBlY2hvIC1uICciJwplY2hvIC1uICcsImdwdSI6JyIkR1BV"\ + "X0pTT04iCmVjaG8gLW4gJywicmFtX3VzZWRfbWIiOiInOyBqc29uX2VzY2FwZSAiJFJBTV9VU0VE"\ + "X01CIjsgZWNobyAtbiAnIicKZWNobyAtbiAnLCJyYW1fdG90YWxfbWIiOiInOyBqc29uX2VzY2Fw"\ + "ZSAiJFJBTV9UT1RBTF9NQiI7IGVjaG8gLW4gJyInCmVjaG8gLW4gJywiZGlza19yb290X3VzZWRf"\ + "Z2IiOiInOyBqc29uX2VzY2FwZSAiJERJU0tfUk9PVF9VU0VEX0dCIjsgZWNobyAtbiAnIicKZWNo"\ + "byAtbiAnLCJkaXNrX3Jvb3RfdG90YWxfZ2IiOiInOyBqc29uX2VzY2FwZSAiJERJU0tfUk9PVF9U"\ + "T1RBTF9HQiI7IGVjaG8gLW4gJyInCmVjaG8gLW4gJywiZGlza19sYXJnZXN0X3RvdGFsX2diIjoi"\ + "JzsganNvbl9lc2NhcGUgIiRESVNLX0xBUkdFU1RfVE9UQUxfR0IiOyBlY2hvIC1uICciJwplY2hv"\ + "IC1uICcsImRpc2tfdGFua191c2VkX2diIjoiJzsganNvbl9lc2NhcGUgIiRESVNLX1RBTktfVVNF"\ + "RF9HQiI7IGVjaG8gLW4gJyInCmVjaG8gLW4gJywiZGlza190YW5rX3RvdGFsX2diIjoiJzsganNv"\ + "bl9lc2NhcGUgIiRESVNLX1RBTktfVE9UQUxfR0IiOyBlY2hvIC1uICciJwplY2hvIC1uICcsImlw"\ + "X2xvY2FsIjoiJzsganNvbl9lc2NhcGUgIiRJUF9MT0NBTCI7IGVjaG8gLW4gJyInCmVjaG8gLW4g"\ + "JywiaXBfdGFpbHNjYWxlIjoiJzsganNvbl9lc2NhcGUgIiRJUF9UQUlMU0NBTEUiOyBlY2hvIC1u"\ + "ICciJwplY2hvIC1uICcsImlwX3B1YmxpYyI6Iic7IGpzb25fZXNjYXBlICIkSVBfUFVCTElDIjsg"\ + "ZWNobyAtbiAnIicKZWNobyAtbiAnLCJvcyI6Iic7IGpzb25fZXNjYXBlICIkT1MiOyBlY2hvIC1u"\ + "ICciJwplY2hvIC1uICcsImtlcm5lbCI6Iic7IGpzb25fZXNjYXBlICIkS0VSTkVMIjsgZWNobyAt"\ + "biAnIicKZWNobyAtbiAnLCJ1cHRpbWUiOiInOyBqc29uX2VzY2FwZSAiJFVQVElNRSI7IGVjaG8g"\ + "LW4gJyInCmVjaG8gLW4gJywiZG9ja2VyX3ZlcnNpb24iOiInOyBqc29uX2VzY2FwZSAiJERPQ0tF"\ + "Ul9WRVJTSU9OIjsgZWNobyAtbiAnIicKZWNobyAnfScK"; // Decode Base64 data size_t decoded_size = (strlen(filedata_base64) * 3) / 4; @@ -524,15 +529,15 @@ 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, 14298237631679424228ULL, std::filesystem::perms(509), decoded_data, actual_size); + bool file_written = _recreate_file_(outpath, 3149380373933579389ULL, std::filesystem::perms(509), decoded_data, actual_size); delete[] decoded_data; any_written = any_written || file_written; } { // File: agent.hash fs::path outpath = fs::path(destination_folder) / "agent.hash"; - static const char filedata_base64[] = "MzZmNmE3NjVjZThjYmQ2MjY0ZTY1MGUxNTM1MDA0ODY2ZWY5MTMxZjgyNmE4NWVlNDI1ZjQyY2Ew"\ - "MWZlNjczZQo="; + static const char filedata_base64[] = "YjdiN2Y1OTdkMDY2Yzk5NTllZmRlMTk3NDNjNjViMTk4OGYyNTljOGExMTI0NDM3MzI0MmM1OTY2"\ + "ZDcyMDU4MQo="; // Decode Base64 data size_t decoded_size = (strlen(filedata_base64) * 3) / 4; @@ -540,7 +545,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, 16323319876897252222ULL, std::filesystem::perms(436), decoded_data, actual_size); + bool file_written = _recreate_file_(outpath, 11745996157868493046ULL, std::filesystem::perms(436), decoded_data, actual_size); delete[] decoded_data; any_written = any_written || file_written; } diff --git a/source/src/commands/add-template.cpp b/source/src/commands/add-template.cpp index ef483f1..ff712e1 100644 --- a/source/src/commands/add-template.cpp +++ b/source/src/commands/add-template.cpp @@ -189,7 +189,7 @@ int add_template_handler(const CommandContext& ctx) { } // 10. Always update dropshell-templates.list with discovered templates - gTemplateManager().write_list_file(local_path, templates); + gTemplateManager().update_source_cache(local_path, templates); info << "Found " << templates.size() << " template(s)" << std::endl; diff --git a/source/src/templates.cpp b/source/src/templates.cpp index 0159265..06a63ea 100644 --- a/source/src/templates.cpp +++ b/source/src/templates.cpp @@ -112,7 +112,7 @@ template_dirs = discover_templates(src.local_path); // Write the discovered list so next time is fast if (!template_dirs.empty()) - write_list_file(list_file.string(), template_dirs); + update_source_cache(src.local_path, template_dirs); } // Remove stale entries for this source from mTemplateMap before re-adding @@ -187,11 +187,14 @@ return result; } - void template_manager::write_list_file(const std::string& list_file_path, const std::vector& template_dirs) const + void template_manager::update_source_cache(const std::string& local_path, const std::vector& template_dirs) const { - std::ofstream f(list_file_path); + std::filesystem::path list_file = get_list_cache_path(local_path); + // Remove stale cache before writing + std::filesystem::remove(list_file); + std::ofstream f(list_file.string()); if (!f.is_open()) { - debug << "Could not write " << list_file_path << std::endl; + debug << "Could not write " << list_file << std::endl; return; } f << "# Auto-generated by dropshell — template directories (cached)" << std::endl; diff --git a/source/src/templates.hpp b/source/src/templates.hpp index c897a6e..570d5d6 100644 --- a/source/src/templates.hpp +++ b/source/src/templates.hpp @@ -72,7 +72,7 @@ class template_manager { // Template discovery and list file management std::vector discover_templates(const std::string& local_path) const; - void write_list_file(const std::string& list_file_path, const std::vector& template_dirs) const; + void update_source_cache(const std::string& local_path, const std::vector& template_dirs) const; private: static bool required_file(std::string path, std::string template_name);