Compare commits
789 Commits
Author | SHA1 | Date |
---|---|---|
fred | 2d635c0528 | |
fred | 8e32370ef5 | |
fred | 9a9f2382e5 | |
fred | 2c958a6f76 | |
fred | a5953940e8 | |
fred | 91e06a1395 | |
fred | 57ba0be37c | |
fred | 5cc2302be7 | |
fred | 207577868e | |
fred | a366a1fcb8 | |
fred | 8bd4b9743b | |
fred | cc16986393 | |
fred | 165742b78e | |
fred | a22517e71d | |
fred | 7a9609aa2c | |
fred | 31d9ae87b7 | |
fred | ecfa63be83 | |
fred | f70e612bcf | |
fred | 4ba06a8be1 | |
fred | 2c26bdd2d8 | |
fred | 517f384181 | |
fred | 275604a4e5 | |
fred | d51002338c | |
fred | bf10b85b0f | |
fred | b053de0b68 | |
fred | 02a9302237 | |
fred | ceeb79bdf6 | |
fred | d397e94ec2 | |
fred | 48df6ceb7a | |
fred | 28c074ebcc | |
fred | a9fbd36db7 | |
fred | bdbd11eaaa | |
fred | cbd6d189ca | |
fred | a64fe3524b | |
fred | 0617e8084f | |
fred | 3a48aab030 | |
fred | f44755117d | |
fred | 065d8e854c | |
fred | 1217b669f2 | |
fred | a102147949 | |
fred | 5b3edd97e2 | |
fred | 6e44b2710b | |
fred | 58395d1f3e | |
fred | a486cb29e5 | |
fred | 82ddec38d9 | |
fred | 9063d416a0 | |
fred | 15724ce9a2 | |
fred | cf8187e597 | |
fred | f6154003bd | |
fred | ceee8c8f18 | |
fred | e9d0be5ecf | |
fred | d15d5ca9c1 | |
fred | 59c72f73ea | |
fred | 3bdd48a2c4 | |
fred | 147215cc55 | |
fred | 1ef36f23c5 | |
fred | 98d8b88c7d | |
fred | cffbb9c700 | |
fred | b2834b0bc1 | |
fred | 7b94539e24 | |
fred | b36cc445e1 | |
fred | 2b93275ec4 | |
fred | 175ed36609 | |
fred | 5e96fe2353 | |
fred | ab2dec9762 | |
fred | a0bafae461 | |
fred | 8c7c098eec | |
fred | fbe7aa2b10 | |
fred | 1645c082c8 | |
fred | 121b6f9fad | |
fred | f933ac1069 | |
fred | 84184acfd4 | |
fred | 6fb0996f89 | |
fred | 70c209682e | |
fred | d53fa8d0e8 | |
fred | 75a8bc54b3 | |
fred | dfc7339015 | |
fred | 7b1076250c | |
fred | 4c18df9c9f | |
fred | 3e3ac3d9da | |
fred | 9551c5bcb4 | |
fred | e7998f7bf8 | |
fred | 54d4837fd6 | |
fred | 974d506af5 | |
fred | 9de45bd4c5 | |
fred | 12f6a50596 | |
fred | 7046274894 | |
fred | 07f3ab165f | |
fred | 05c171dd97 | |
fred | 36b000426b | |
fred | 47764387cc | |
fred | f530cf8cdd | |
fred | a9a7f23a3b | |
fred | 1d4527c72e | |
fred | b331dcc990 | |
fred | e8b2cdf6f4 | |
fred | 8ff8ab1fe9 | |
fred | 8ebbe138ac | |
papiche | 39bb53897d | |
fred | 0beafcc374 | |
fred | dc169aa474 | |
papiche | 5e409f3680 | |
papiche | 2b495af068 | |
papiche | 6fbd7eb1df | |
papiche | fc6c31d626 | |
fred | 591526c734 | |
fred | 08603176f2 | |
fred | fd390d80f0 | |
fred | bf8d36fd44 | |
fred | 3eddcad0eb | |
fred | 855d2877f5 | |
fred | 0f75a07103 | |
fred | 04cfc8bdc8 | |
fred | 9a3b7b5931 | |
fred | 527c09838a | |
fred | a39a0cd272 | |
fred | 523f068a30 | |
fred | 1e5e9a2194 | |
fred | 5cf9f0b6cb | |
fred | 0dc2498ae6 | |
fred | ddb4a14502 | |
fred | c925b1a701 | |
fred | 7a87f96907 | |
fred | b273422f0d | |
fred | f9814e1cb4 | |
fred | 5152d4ccf7 | |
fred | 7b32f25da3 | |
fred | 1186c77d55 | |
fred | 21f745c418 | |
fred | e1069d26f1 | |
fred | b24354a416 | |
fred | d0db377309 | |
fred | 71d24341b3 | |
fred | 102c3b362d | |
fred | 3e684587df | |
fred | 42164bda55 | |
fred | 308a60b2e4 | |
fred | 0914213adb | |
fred | 4eeb9dd5ef | |
fred | a8d3ed8b05 | |
fred | 06348bb089 | |
fred | a9dc335427 | |
fred | d65ed3a5b6 | |
fred | 84da189bde | |
fred | 12e4b7ceea | |
fred | 767b29c5fa | |
fred | eb8aa0a940 | |
fred | a443f0ff5b | |
fred | 5f33de4791 | |
fred | 09bc666616 | |
fred | 0655b4d758 | |
fred | 5a10e1bbe3 | |
fred | e9265a043b | |
fred | db67b64364 | |
fred | 9f51fdf40e | |
fred | 953029af4b | |
fred | 54ffc346ce | |
fred | be3d9531e8 | |
fred | 24e3c0f8b3 | |
fred | 09c961f05a | |
fred | aa819977e6 | |
fred | 9b1549f689 | |
fred | b89bc01ada | |
fred | 7fd87cdf1c | |
fred | f23fd79c00 | |
fred | 7d8a9b3d7f | |
fred | 9164b6a265 | |
fred | 16ad9eb9e3 | |
fred | 3888414580 | |
fred | 9527d5e5f5 | |
fred | b97a869f39 | |
fred | 3896be3845 | |
fred | 751ed3158a | |
fred | a69e38bd53 | |
fred | 5ae650718a | |
fred | c476d7d3d7 | |
fred | b2d9d27647 | |
fred | b6f92ed4dc | |
fred | de6c7543c5 | |
fred | 8a3f78f36e | |
fred | 673d2fbf62 | |
fred | 278cd4e730 | |
fred | c7b01acb65 | |
fred | 7c81362146 | |
fred | 0a7a90401b | |
fred | 7fb9188076 | |
fred | 29e6bb6203 | |
fred | a0046d31e0 | |
fred | 5e9cebfbac | |
fred | 862d6562bf | |
fred | a132d32b9e | |
fred | 659c7aeee7 | |
fred | d25d25dd30 | |
fred | 99f62a58c4 | |
fred | 77f298ed11 | |
fred | 2bcaaf95bc | |
fred | c50afc49b6 | |
fred | 5ffc1954af | |
fred | f83435cd39 | |
fred | 48d925fd52 | |
fred | 7df2748b83 | |
fred | adcb6ee8fc | |
fred | 52b7d6f841 | |
fred | fe206e1565 | |
fred | 0bb1684190 | |
fred | 59204dc421 | |
fred | 03845c69a6 | |
fred | bbbc4174f6 | |
fred | 62aa6cd563 | |
fred | 9429c9c472 | |
fred | 42f6fdc39f | |
fred | b3d66ffd58 | |
fred | 026b97c908 | |
fred | e52490638f | |
fred | d6d4e55689 | |
fred | 1ae58895f3 | |
fred | 4abd3ec77d | |
fred | e2a30e747d | |
fred | 43534ef24e | |
fred | f88d5ea7a9 | |
fred | 4d94dec156 | |
fred | 365a9df5d6 | |
fred | cb30d0f773 | |
fred | ae344dd369 | |
fred | 3efdfd297b | |
Fabien-Vidor | d06b418ca8 | |
papiche | 6e602a7754 | |
lou0608 | 7e54ba5d22 | |
fred | fdc6a4c5fd | |
Jean-bouger | 0daca449ff | |
Jean-bouger | ff981d9c41 | |
gaetancorin | 681c438485 | |
Willd27 | 1cd026dd50 | |
Nathan Piazzi | 34a549d3d1 | |
Nathan Piazzi | 26ceac3c50 | |
fred | ce6b8de059 | |
papiche | 8c9379a53b | |
anatolethien | 4b04a7ca6b | |
Willd27 | bf951f8a2e | |
Nathan Piazzi | d23c1fdbae | |
fred | 8a231fd284 | |
fred | a059c53bbe | |
fred | fe5c337881 | |
fred | a8b6f46a14 | |
fred | 50ebc469ab | |
fred | 50e8a17a51 | |
fred | 8925e199d4 | |
fred | 727e67ab23 | |
fred | 06024545c8 | |
fred | 78a540fd4c | |
fred | 8dc4956ab1 | |
fred | 288c909a43 | |
fred | 01746aa91a | |
fred | 9882b99f47 | |
fred | 0b54a92801 | |
fred | cdbc3d162f | |
fred | 2b290452f9 | |
fred | 636a920160 | |
fred | 5fc35a7880 | |
fred | 2abd32a8ad | |
fred | 8cb7ce12c5 | |
fred | 99dead74f9 | |
fred | 30a9274005 | |
fred | c024c745ef | |
fred | ab541d2206 | |
fred | 1b8c2e9924 | |
fred | 9afcb013bd | |
fred | cf8f3f06ab | |
fred | aac9cd6340 | |
fred | d32b9938ab | |
fred | eb07ce7e86 | |
fred | 59b12d4aae | |
fred | 81e65cd97b | |
fred | c81436b83a | |
fred | 63f71ddec9 | |
fred | b2a03f0f4e | |
fred | 9bd0f2a816 | |
fred | 74d505759f | |
fred | ffe82a6119 | |
fred | 1afb1faa9e | |
fred | 893295807f | |
fred | 68ba56f8fe | |
fred | cfffdd4667 | |
fred | f45cb14b24 | |
fred | 81add31667 | |
fred | 9c16c0064a | |
fred | b23920381a | |
fred | 2e1c414fb6 | |
fred | e644780bfe | |
fred | e27182ea46 | |
fred | 5acc7a44c3 | |
fred | 195ce6f0f6 | |
fred | 425fcec892 | |
fred | deb589c922 | |
fred | 20b54192b1 | |
fred | cd16642363 | |
fred | eca57a149f | |
fred | 308e24699c | |
fred | 98ad6ffec2 | |
fred | ca2c8d0a76 | |
fred | 32e4ca89a2 | |
fred | 79bdced18c | |
fred | c5977abff0 | |
fred | 2f8b7f17d6 | |
fred | 5ad1eee561 | |
fred | 4a952f84f4 | |
fred | 24a2af152e | |
fred | 818bcdd00b | |
fred | 6fb3ca8325 | |
fred | 711eb86f67 | |
fred | 153caaa7d2 | |
fred | 4bfdb4af73 | |
fred | bf6cffebc2 | |
fred | 2d26e82a3f | |
fred | 3205aadd7f | |
fred | 1623f95012 | |
fred | fec61bf5a5 | |
fred | 66811e7a0a | |
fred | 9cad79fdae | |
fred | 6e2636d7d9 | |
fred | fd52a7e0fb | |
fred | e3b5332aec | |
fred | 2a61784d3c | |
fred | ff35d8c5cb | |
fred | 3e51735bce | |
fred | 80b395d74e | |
fred | 3da38260e6 | |
fred | a51542a1e1 | |
fred | 9569832e75 | |
fred | 66adbb3f79 | |
fred | 60279e7621 | |
fred | 11b776dab3 | |
fred | 68975f3d0f | |
fred | dbb50dade4 | |
fred | eeb963d9f0 | |
fred | 2d25538466 | |
fred | e8f9a9c62d | |
fred | be8cc678f8 | |
fred | 9956a13378 | |
fred | 4a92c664ef | |
fred | 84b841941a | |
fred | d05759045a | |
fred | 0f6c3f786d | |
fred | c227bfd8a8 | |
fred | c885afb076 | |
fred | 692f37bd4c | |
fred | 4899de4e68 | |
fred | ec68072cc1 | |
fred | 7d3ebe6e34 | |
fred | c70982d333 | |
fred | 218ffa0095 | |
fred | e955023b24 | |
fred | 431d54d1ae | |
fred | a323db6c82 | |
fred | 7987449290 | |
fred | 4c6051e800 | |
fred | 899add82b9 | |
fred | 962e273916 | |
fred | 3c4e5a5ff8 | |
fred | a0b81691c1 | |
fred | d0013000e2 | |
fred | 991149a3ca | |
fred | 11f1995ea1 | |
fred | 4b956fe62e | |
fred | de92f38788 | |
fred | bac8936d00 | |
fred | a3fd0e877f | |
fred | 3c91a43698 | |
fred | 1c8b16a9de | |
fred | 8be2fb525b | |
fred | 3d663012f9 | |
fred | b1cdea1508 | |
fred | e93770bc66 | |
fred | c7bd474922 | |
fred | 2ee5f66b5c | |
fred | 3233d8d6e4 | |
fred | 712e0303cf | |
fred | 1e9cf9aeac | |
fred | d3da9a6455 | |
fred | 61cb2f34b1 | |
fred | 1862bf1492 | |
fred | 79f832bdfe | |
fred | 8829baf8ad | |
fred | ee9b3c3858 | |
fred | bd27f1b698 | |
fred | eff345b7b3 | |
fred | d84d9ce1f4 | |
fred | 3cd2e186c2 | |
fred | 41cb844f32 | |
fred | 4128344e8e | |
fred | c208e403f0 | |
fred | 77e0144a00 | |
fred | 61bf1b9a04 | |
fred | 3c306690e6 | |
fred | 69731ff435 | |
fred | 4d784941bc | |
fred | 766fd6dc79 | |
fred | a2990e9420 | |
fred | 0ea7169bac | |
fred | 5cc3fcff4a | |
papiche | e4428cc3a3 | |
papiche | c0333f9b28 | |
papiche | 8e6625ef3d | |
papiche | 39ede01263 | |
papiche | 4910495491 | |
fred | 13c839b3ea | |
Jean-bouger | 8d5bb0de98 | |
gaetancorin | 80931e495b | |
vboxuser | 5b35ffb40e | |
NathanPzi | d876cdc290 | |
NathanPzi | 1e459a8133 | |
NathanPzi | fd46c28fba | |
gabriel cancel | b8868e39d3 | |
fred | c99d25ce36 | |
papiche | 92b9389fd6 | |
papiche | 12a7958ea8 | |
gabriel cancel | 2f07c5976b | |
anatolethien | 79c4ef0db9 | |
fred | 49d53e8120 | |
fred | 5fcaddfc85 | |
papiche | 120294a5b6 | |
gabriel cancel | 9c37df8494 | |
papiche | 9f367f7101 | |
papiche | 31a3924b2d | |
papiche | 179140427b | |
papiche | 600dab43b1 | |
Fabien-Vidor | 5b5190b1fd | |
AMARSILLE | 421c160af1 | |
lou0608 | 114b849a2d | |
gaetancorin | f6fff6d50c | |
tess | 7a1660e91d | |
gaetancorin | a49f41eb48 | |
fred | 26776d1c54 | |
fred | 2d8dc171aa | |
fred | 332f0f2880 | |
fred | d2e7963b7d | |
fred | b1ddcc1747 | |
fred | d1394d5332 | |
fred | 134f219fa9 | |
fred | dceffe0229 | |
fred | c53c0dfc3a | |
fred | ae7a2ea964 | |
fred | 909219a73a | |
fred | f33c4d04dd | |
fred | 605d66b913 | |
fred | 3d76bd5243 | |
fred | c508c7cb0a | |
fred | 9a266c583d | |
fred | 4989583264 | |
fred | 911576a24c | |
fred | 2de86d120c | |
fred | 747f3d5b16 | |
fred | 8c9ce2c3dd | |
fred | bfaa5bbe2b | |
fred | 37311e89f1 | |
fred | a411d9c516 | |
fred | a773872558 | |
fred | 81e7930e1a | |
fred | 7e299e905e | |
fred | 0d0d1c947e | |
FaycoTLS | 6154d5ca0a | |
fred | c6bce9a13b | |
fred | 80302af0f5 | |
fred | 5a19b71d02 | |
fred | 4831125504 | |
fred | 1c85b79dbe | |
fred | daaaf455d7 | |
fred | 6bbf606c02 | |
fred | 6bc90788c8 | |
fred | 96d7215b57 | |
fred | 143c60d139 | |
papiche | 3944b28305 | |
fred | 3afec1738a | |
fred | 58df7898f3 | |
fred | c8353f69ad | |
fred | 12b8d50303 | |
fred | 5643f79535 | |
fred | ea7ba67add | |
fred | 066710056b | |
fred | a3acca4f94 | |
fred | 863aa4add4 | |
fred | c44839ae38 | |
fred | c921b12b87 | |
fred | 8fb5a09f86 | |
fred | 5394fd2f75 | |
fred | b6af41c9ee | |
fred | ca18c6912e | |
fred | e467e49980 | |
fred | 0004d449e2 | |
fred | bf5e117fc1 | |
fred | c681b66728 | |
fred | c93ef5ba34 | |
fred | f561134897 | |
fred | c2cddee226 | |
fred | 8687b76751 | |
fred | 4306bb03b6 | |
fred | e53d7c70d3 | |
fred | c253cae4d0 | |
fred | 98600faf81 | |
fred | 9bf2a4b1a8 | |
fred | f8d2b3307f | |
fred | 80d9d385e9 | |
fred | a0fdaf6e62 | |
fred | 055e66c79f | |
papiche | 7bedcc05eb | |
Nathan Piazzi | 026ce41b6b | |
NathanPzi | 9675f50ea0 | |
= | 46883dd838 | |
Fabien-Vidor | e01bcd05d2 | |
NathanPzi | bad7e7bd39 | |
papiche | aed0809785 | |
fred | 15b96181ec | |
fred | 628e4a9e5c | |
fred | d28c1d0734 | |
fred | 3c7bdc278c | |
fred | 29a55e25f2 | |
fred | 5fe84e4c76 | |
fred | 3006bc8deb | |
fred | 84b544f978 | |
fred | becbc20b73 | |
fred | 8b10839328 | |
fred | 0b2870f3b9 | |
fred | c15bb02b10 | |
fred | 9d82cc493e | |
fred | a4293b20b8 | |
fred | b5c5906321 | |
papiche | ba41be7f2d | |
fred | 5497d86c21 | |
fred | c9575a9ffa | |
fred | ffff6c59e2 | |
fred | 7e5859c8ba | |
Anais031 | b6bb2c2601 | |
fred | eb2b29f0b1 | |
papiche | c1f5fae6e7 | |
papiche | fe0f693dc2 | |
fred | f55768249a | |
fred | 12f2883b07 | |
Ant0n10x78 | 9f52166d17 | |
fred | eb30e49b70 | |
Ant0n10x78 | 117cbe65f2 | |
Ant0n10x78 | f25c1d03d1 | |
fred | 5df64847ea | |
fred | 8fc9f46aac | |
fred | f15d3d947a | |
fred | e2772ac2c8 | |
fred | 81fda26724 | |
fred | 7a20666c6d | |
fred | 1d5e35bcee | |
fred | 015d01e769 | |
fred | 1b65a0a0f9 | |
fred | 699b65962b | |
fred | 93ac6daa8e | |
fred | 17dca2cafc | |
fred | c2e9655e75 | |
fred | e56956da3a | |
papiche | d203840d03 | |
anto | 0ce75a3fdb | |
anto | 5e72580c14 | |
papiche | 91cc00bdea | |
anto | 2a6c094602 | |
fred | e9ae6773cb | |
papiche | 996784b951 | |
milla | ea53f879cb | |
papiche | 3e19a53ab5 | |
milla | 4b5a3541ee | |
Haaze9 | 45d7dfff71 | |
papiche | af1f9b40aa | |
fred | 4426278983 | |
fred | 75d1c5f401 | |
kholius | 1cdffe8387 | |
papiche | a010e9bab5 | |
ershad.ramezani | e1e87ced54 | |
papiche | 2090d3f3ec | |
papiche | 99eb4f8d5b | |
Ershad Ramezani | f15a11e159 | |
ershad.ramezani | 96f2a17293 | |
ershad.ramezani | eb921650c7 | |
scripting | 0559d23ec9 | |
papiche | 830b609899 | |
papiche | 3ce72ce054 | |
qaktuss | f1b8e5f4b1 | |
papiche | 89ef6a5ef3 | |
papiche | 7682fc5179 | |
papiche | ccc389c07c | |
Ershad Ramezani | 49c29bd50a | |
papiche | 2afb31a788 | |
papiche | d553ac1034 | |
papiche | 5d256d000c | |
papiche | 71e2ae764e | |
papiche | d7a39a1862 | |
mcaparros | e479a68641 | |
milla | e8fb53a180 | |
SayTeK | 89f639b7cb | |
papiche | d76b233556 | |
qaktuss | 03abe9de3c | |
debian | 8cbf0c5310 | |
anto | cb1f100acb | |
Dorito | 4db6026549 | |
mcaparros | 745d651325 | |
ershad.ramezani | 6c5322bcb8 | |
damien.khadir | a1b5f8a246 | |
scripting | 8fc48dcbc1 | |
Rémi Montagut | 0c62b841d4 | |
user | fc8fd3cf5c | |
fred | dbcc503225 | |
fred | 837b9aaaa8 | |
fred | 80d331029e | |
fred | 15bd82b2f7 | |
fred | 84a04ab62d | |
fred | 916f119a09 | |
fred | 6a48b90128 | |
fred | 51a769cc9d | |
fred | 9887e2eb66 | |
fred | 965fec5951 | |
fred | 9f875876a7 | |
fred | 313e1a2d6c | |
fred | 98769ed48a | |
fred | 9042e54ab3 | |
fred | 7181149511 | |
fred | 49fa403354 | |
fred | 03ec5b072c | |
fred | 3200133cc9 | |
fred | 1c2979231a | |
fred | f12cf474bf | |
fred | 5fb54b2287 | |
fred | ceaedaa4be | |
fred | 774363089b | |
fred | a8ab380a94 | |
fred | d6467e159a | |
fred | 7a88b9fc72 | |
fred | 97677b4024 | |
fred | 052ec4e539 | |
fred | a96508cbab | |
fred | dc205f29ca | |
fred | f37ce3edca | |
fred | bc64e703f2 | |
fred | 2a779f63dd | |
fred | 0fdd37e43c | |
fred | c188f6b194 | |
fred | d11e07eb10 | |
fred | dd76dcbc5b | |
fred | 86f388a633 | |
fred | e787072f21 | |
fred | 98a02cddb3 | |
fred | 2755277ffa | |
fred | b591656c30 | |
fred | a6c491ac2d | |
fred | 622d5e3fda | |
papiche | 53ad40b1e0 | |
fred | 2be174d251 | |
fred | 79c596ce0e | |
fred | 801ea1c9f5 | |
fred | d06892c791 | |
fred | 3833963b26 | |
fred | 58f7ae6bb4 | |
fred | bec8748886 | |
fred | b520f49762 | |
janick | 941592ce44 | |
fred | b4b1880085 | |
fred | b09b7704bf | |
fred | 99854c9cb9 | |
fred | a5ec8c8678 | |
fred | 2562dd6294 | |
fred | 7e6268d0c5 | |
fred | f43c476ab4 | |
fred | 1664e4cbd0 | |
fred | 99d44c8291 | |
fred | a656913db8 | |
fred | edb0fee3a9 | |
fred | 678e9cafdf | |
fred | ec4186f9ee | |
fred | 6fbb42a3d3 | |
fred | c533e1c8a6 | |
fred | b5fa8ad10b | |
fred | 1d394616ae | |
fred | 2073e80de4 | |
fred | 9d9d0e722e | |
fred | 64172434f7 | |
fred | fff9ae8d31 | |
fred | 1f77420eb1 | |
fred | 51a8451310 | |
fred | 6046854f7d | |
fred | 6fbd4e2730 | |
fred | a47a2a7416 | |
fred | 3940b577b8 | |
papiche | cbfd192d63 | |
fred | c1a7ce25b2 | |
fred | 2a4391fc11 | |
fred | 05283313b7 | |
fred | 1095fd1b70 | |
fred | fea2d06d6e | |
fred | 9a8c779877 | |
fred | 3a5b41991b | |
aristo | 215164a59d | |
fred | 16ca189b54 | |
fred | 64f199fec4 | |
fred | 9a159ccd5c | |
papiche | 5564dc4307 | |
fred | 9ba87b27d9 | |
Mickael Fernandez | c5320eff15 | |
fred | 7417ae952e | |
papiche | ab6cb86818 | |
papiche | ffd274949a | |
fred | b8692146a6 | |
papiche | d406880ce3 | |
fred | 138ee637b2 | |
papiche | b7271bd302 | |
fred | 3b4ed03409 | |
papiche | 5e43185cb8 | |
papiche | f5c9aa5393 | |
papiche | ec2744b621 | |
fred | 6683abba22 | |
papiche | 92ec6c956f | |
fred | 19f5b15dec | |
fred | 0946b2d4e2 | |
papiche | f34dcf18dc | |
fred | e7bb5d3fce | |
papiche | c7331f7c40 | |
fred | 66010597dd | |
fred | a5be43c570 | |
FaycoTLS | 0e953757e3 | |
fred | fec76615ba | |
fred | 716630094e | |
fred | 37de4e3c38 | |
papiche | add49445be | |
papiche | b7a3ceb943 | |
papiche | 7a79ede598 | |
fred | fb30f3904e | |
fred | 36d6cf9727 | |
Mickael Fernandez | 0070b54be1 | |
Thiam-moussa | aeb882b802 | |
Mickado31 | f4dcff26c4 | |
FaycoTLS | 2797600d0f | |
Morgan Riviere | 120673ef3b | |
FaycoTLS | ae369f805d | |
SiriusTuks | fbf236b0e7 | |
FaycoTLS | 53858cbdd7 | |
PuigB | 0213eac553 | |
MCAzertox | f4cb8a9bb6 | |
Jonio | b0cf825813 | |
user | d7412899cd | |
Yassine | 798cf3907f | |
Jonio | d88b5523c3 | |
FaycoTLS | 02da0c339e | |
Jonio | 17137be26d | |
IlanDoumenc | 3953c8c950 | |
Yassine | b410295c63 | |
Vansxur | 1f9641f143 | |
cyril | 9979313215 | |
Ant0n10x78 | 924baa11ae | |
fred | 3e9b4a2e81 | |
jonathanbordes | 2c9d6b70e7 | |
Kali | 12d2285380 | |
jonathanbordes | 5d7e8e732f | |
jonathanbordes | 86b2c5ebb5 | |
Vansxur | 9ef81d639d | |
jonathanbordes | d500888247 | |
root | 19cc43fce7 | |
Vansxur | f8e09eb54d | |
fred | 14ef3a1cbe | |
fred | 68b4628e82 | |
Vansxur | de7ac6f33a | |
Vansxur | 0bfa38773b | |
Kali | 021d282c89 | |
Ant0n10x78 | c5e031c02b | |
jonathanbordes | 3fb48c969c | |
jonathanbordes | 057a173420 | |
jonathanbordes | 6d93eb1755 | |
jonathanbordes | 492563c006 | |
jonathanbordes | 8abfe06b59 | |
jonathanbordes | 1d0e657b8b | |
Kali | f2eaa4ac65 | |
Vansxur | a4ed113595 | |
jonathanbordes | c1f0e4437d | |
jonathanbordes | 57fcd41e87 | |
jonathanbordes | bba10c8e25 | |
jonathanbordes | 0b82ee0d79 | |
Vansxur | 7d783c4c62 | |
jonathanbordes | c6c1a24f15 | |
jonathanbordes | 39e13e2367 | |
jonathanbordes | ca9bda5907 | |
jonathanbordes | d45922f982 | |
jonathanbordes | 7adf945724 | |
jonathanbordes | 9019dc9b9c | |
jonathanbordes | f3b18c1242 | |
jonathanbordes | 27146f4155 | |
jonathanbordes | 1ed34c1ccf | |
Jonio | 44cb0999e3 | |
JonioDiPonio | c977b22a0f |
|
@ -1,3 +1,5 @@
|
|||
.env
|
||||
*.pyc
|
||||
__pycache__
|
||||
tiddlywiki.html
|
||||
tools/jaklis/.env
|
||||
|
|
30
12345.sh
|
@ -25,7 +25,7 @@ PORT=45779
|
|||
mkdir -p ~/.zen/tmp ~/.zen/game/players/localhost # ~/.zen & myos compatibility
|
||||
|
||||
## CHECK FOR ANY ALREADY RUNNING nc
|
||||
ncrunning=$(ps axf --sort=+utime | grep -w 'nc -l -p 1234' | grep -v -E 'color=auto|grep' | tail -n 1 | cut -d " " -f 1)
|
||||
ncrunning=$(ps axf --sort=+utime | grep -w 'nc -l -p 1234' | grep -v -E 'color=auto|grep' | tail -n 1 | xargs | cut -d " " -f 1)
|
||||
[[ $ncrunning ]] && echo "RESTARTING" && kill -9 $ncrunning
|
||||
## NOT RUNNING TWICE
|
||||
|
||||
|
@ -49,6 +49,10 @@ function urldecode() { : "${*//+/ }"; echo -e "${_//%/\\x}"; }
|
|||
#############################
|
||||
while true; do
|
||||
|
||||
########################################################
|
||||
## /ipfs/QmQ9MdCEY1aMmpxBqZKcHTLafRxRFeK1Ku1DES1LCPaimA
|
||||
## TODO: STOP API ACCESS AFTER 20H12
|
||||
|
||||
start=`date +%s`
|
||||
MOATS=$(date -u +"%Y%m%d%H%M%S%4N")
|
||||
mkdir -p ~/.zen/tmp/${MOATS}
|
||||
|
@ -67,18 +71,20 @@ while true; do
|
|||
## CHECK PORT IS FREE & KILL OLD ONE
|
||||
echo "SEARCHING FOR PORT ${PORT}"
|
||||
ps axf --sort=+utime | grep -w "nc -l -p ${PORT}" | grep -v -E 'color=auto|grep'
|
||||
pidportinuse=$(ps axf --sort=+utime | grep -w "nc -l -p ${PORT}" | grep -v -E 'color=auto|grep' | awk '{gsub(/^ +| +$/,"")} {print $0}' | tail -n 1 | cut -d " " -f 1)
|
||||
pidportinuse=$(ps axf --sort=+utime | grep -w "nc -l -p ${PORT}" | grep -v -E 'color=auto|grep' | tail -n 1 | xargs | cut -d " " -f 1)
|
||||
[[ $pidportinuse ]] && kill -9 $pidportinuse && echo "$(date) KILLING LOST $pidportinuse"
|
||||
|
||||
### START MAP STATION 12345
|
||||
## CHECK 12345 PORT RUNNING (STATION FoF MAP)
|
||||
maprunning=$(ps auxf --sort=+utime | grep -w '_12345.sh' | grep -v -E 'color=auto|grep' | tail -n 1 | cut -d " " -f 1)
|
||||
maprunning=$(ps auxf --sort=+utime | grep -w '_12345.sh' | grep -v -E 'color=auto|grep' | tail -n 1 | xargs | cut -d " " -f 1)
|
||||
[[ ! $maprunning ]] \
|
||||
&& echo '(ᵔ◡◡ᵔ) MAP LAUNCHING http://'${myIP}':12345 (ᵔ◡◡ᵔ)' \
|
||||
&& exec $MY_PATH/_12345.sh &
|
||||
|
||||
# RESET VARIABLES
|
||||
CMD="" THAT="" AND="" THIS="" APPNAME="" WHAT="" OBJ="" VAL=""
|
||||
############### ############### ############### ###############
|
||||
# THIS SCRIPT STORES $i PARAMETER IN
|
||||
# THOSE VARIABLES
|
||||
CMD="" THAT="" AND="" THIS="" APPNAME="" WHAT="" OBJ="" VAL=""
|
||||
|
||||
############### ############### ############### ############### templates/index.http
|
||||
# REPLACE myHOST in http response template (fixing next API meeting point)
|
||||
|
@ -86,12 +92,15 @@ while true; do
|
|||
myHtml >> ~/.zen/tmp/${MOATS}/${PORT}.myHOST.http
|
||||
|
||||
## REPLACE RESPONSE PORT
|
||||
sed -i -e "s~http://127.0.0.1:12345~http://${myIP}:${PORT}~g" \
|
||||
sed -i -e "s~http://127.0.0.1:12345~http://127.0.0.1:${PORT}~g" \
|
||||
~/.zen/tmp/${MOATS}/${PORT}.myHOST.http
|
||||
|
||||
## WAN REDIRECT TO HTTPS:// + /${PORT}
|
||||
[ -z "$isLAN" ] \
|
||||
&& sed -i -e "s~http://${myIP}:${PORT}~${myASTROPORT}/${PORT}~g" ~/.zen/tmp/${MOATS}/${PORT}.myHOST.http
|
||||
&& sed -i -e "s~http://127.0.0.1:${PORT}~${myASTROPORT}/${PORT}~g" ~/.zen/tmp/${MOATS}/${PORT}.myHOST.http
|
||||
|
||||
[ -n "$(zIp)" ]\
|
||||
&& sed -i -e "s~http://127.0.0.1:${PORT}~$(zIp):${PORT}~g" ~/.zen/tmp/${MOATS}/${PORT}.myHOST.http
|
||||
|
||||
## UPLANET HOME LINK REPLACEMENT
|
||||
sed -i -e "s~https://qo-op.com~${myUPLANET}~g" ~/.zen/tmp/${MOATS}/${PORT}.myHOST.http
|
||||
|
@ -99,10 +108,15 @@ while true; do
|
|||
############################################################################
|
||||
## SERVE LANDING REDIRECT PAGE ~/.zen/tmp/${MOATS}/${PORT}.myHOST.http on PORT 1234 (LOOP BLOCKING POINT)
|
||||
############################################################################
|
||||
############### ############### ############### ############### WAIT FOR
|
||||
############### ############### ############### ############### 1234 KNOC
|
||||
REQ=$(cat $HOME/.zen/tmp/${MOATS}/${PORT}.myHOST.http | nc -l -p 1234 -q 1 && rm $HOME/.zen/tmp/${MOATS}/${PORT}.myHOST.http) ## # WAIT FOR 1234 PORT CONTACT
|
||||
############### ############### ############### ############### KNOC !!
|
||||
############### ############### ############### ###############
|
||||
|
||||
URL=$(echo "$REQ" | grep '^GET' | cut -d ' ' -f2 | cut -d '?' -f2)
|
||||
HOSTP=$(echo "$REQ" | grep '^Host:' | cut -d ' ' -f2 | cut -d '?' -f2)
|
||||
AGENT=$(echo "$REQ" | grep '^User-Agent:') ### TODO : BAN LESS THAN 3 SEC REQUEST
|
||||
HOST=$(echo "$HOSTP" | cut -d ':' -f 1)
|
||||
|
||||
## COOKIE RETRIEVAL ##
|
||||
|
@ -133,7 +147,7 @@ while true; do
|
|||
( nc -l -p ${PORT} -q 1 > /dev/null 2>&1 && echo " (‿/‿) $PORT CONSUMED in "`expr $(date +%s) - $start`" seconds." ) &
|
||||
else
|
||||
mySalt | \
|
||||
sed "s~http://127.0.0.1:12345~${myASTROPORT}:${PORT}~g" | \
|
||||
sed "s~http://127.0.0.1:12345~http://${myASTROPORT}:${PORT}~g" | \
|
||||
sed "s~https://qo-op.com~${myUPLANET}~g" | \
|
||||
( nc -l -p ${PORT} -q 1 > /dev/null 2>&1 && echo " (‿/‿) $PORT CONSUMED in "`expr $(date +%s) - $start`" seconds." ) &
|
||||
fi
|
||||
|
|
143
20h12.process.sh
|
@ -4,78 +4,141 @@
|
|||
# License: AGPL-3.0 (https://choosealicense.com/licenses/agpl-3.0/)
|
||||
########################################################################
|
||||
MY_PATH="`dirname \"$0\"`" # relative
|
||||
MY_PATH="`( cd \"$MY_PATH\" && pwd )`" # absolutized and normalized
|
||||
. "$MY_PATH/tools/my.sh"
|
||||
MY_PATH="`( cd \"${MY_PATH}\" && pwd )`" # absolutized and normalized
|
||||
. "${MY_PATH}/tools/my.sh"
|
||||
start=`date +%s`
|
||||
echo "20H12 (♥‿‿♥) $(hostname -f) $(date)"
|
||||
espeak "Ding" > /dev/null 2>&1
|
||||
|
||||
########################################################################
|
||||
## IPFS DAEMON STATUS
|
||||
LOWMODE=$(sudo systemctl status ipfs | grep disabled) ## IPFS DISABLED - START ONLY FOR SYNC -
|
||||
[[ ! $(netstat -tan | grep 5001 | grep LISTEN) ]] && LOWMODE="NO 5001" ## IPFS IS STOPPED
|
||||
[[ ! $isLAN ]] && LOWMODE="" ## LOWMODE ONLY FOR LAN STATION
|
||||
# echo "$USER ALL=(ALL) NOPASSWD:/bin/systemctl" | (sudo su -c 'EDITOR="tee" visudo -f /etc/sudoers.d/systemctl')
|
||||
sudo systemctl restart ipfs && sleep 10
|
||||
|
||||
########################################################################
|
||||
## CHECK IF IPFS NODE IS RESPONDING (ipfs name resolve ?)
|
||||
########################################################################
|
||||
ipfs --timeout=30s swarm peers 2>/dev/null > ~/.zen/tmp/ipfs.swarm.peers
|
||||
[[ ! -s ~/.zen/tmp/ipfs.swarm.peers || $? != 0 ]] \
|
||||
&& echo "---- SWARM COMMUNICATION BROKEN / RESTARTING IPFS DAEMON ----" \
|
||||
&& sudo systemctl restart ipfs \
|
||||
&& sleep 60
|
||||
|
||||
floop=0
|
||||
while [[ ! $(netstat -tan | grep 5001 | grep LISTEN) ]]; do
|
||||
sleep 10
|
||||
((floop++)) && [ $floop -gt 36 ] \
|
||||
&& echo "ERROR. IPFS daemon not restarting" \
|
||||
&& $MY_PATH/tools/mailjet.sh "support@qo-op.com" "/tmp/20h12.log" "IPFS RESTART ERROR 20H12" \
|
||||
&& ${MY_PATH}/tools/mailjet.sh "support@qo-op.com" "/tmp/20h12.log" "IPFS RESTART ERROR 20H12" \
|
||||
&& exit 1
|
||||
done
|
||||
# espeak "CODE git pull" > /dev/null 2>&1
|
||||
|
||||
## REMOVE TMP BUT KEEP SWARM
|
||||
########################################################################
|
||||
# show ZONE.sh cache of the day
|
||||
echo "TODAY UPlanet landings"
|
||||
ls ~/.zen/tmp/ZONE_* 2>/dev/null
|
||||
|
||||
########################################################################
|
||||
## REMOVE TMP BUT KEEP swarm, flashmem and coucou
|
||||
mv ~/.zen/tmp/swarm ~/.zen/swarm
|
||||
mv ~/.zen/tmp/coucou ~/.zen/coucou
|
||||
mv ~/.zen/tmp/flashmem ~/.zen/flashmem
|
||||
rm -Rf ~/.zen/tmp/*
|
||||
mv ~/.zen/swarm ~/.zen/tmp/swarm
|
||||
mv ~/.zen/coucou ~/.zen/tmp/coucou
|
||||
mv ~/.zen/flashmem ~/.zen/tmp/flashmem
|
||||
|
||||
########################################################################
|
||||
### DELAY _12345 ASTROPORT DURING 20H12 UPDATE ###
|
||||
if [[ "${LOWMODE}" == "" ]]; then
|
||||
### NOT REFRESHING SWARM
|
||||
MOATS=$(date -u +"%Y%m%d%H%M%S%4N")
|
||||
MOATS_plus_5_hours=$(date -d "now + 5 hours" +"%Y%m%d%H%M%S%4N")
|
||||
mkdir ~/.zen/tmp/${IPFSNODEID}
|
||||
echo ${MOATS_plus_5_hours} > ~/.zen/tmp/${IPFSNODEID}/_MySwarm.moats
|
||||
echo 9000 > ~/.zen/tmp/random.sleep
|
||||
else
|
||||
# REFRESHING SWARM
|
||||
echo 0 > ~/.zen/tmp/${IPFSNODEID}/_MySwarm.moats
|
||||
curl -s "http://127.0.0.1:12345"
|
||||
sleep 300 ## WAIT FOR 5MN
|
||||
fi
|
||||
|
||||
########################################################################
|
||||
## UPDATE G1BILLETS code
|
||||
[[ -s ~/.zen/G1BILLET/G1BILLETS.sh ]] \
|
||||
&& cd ~/.zen/G1BILLET/ && git pull \
|
||||
&& rm -Rf ~/.zen/G1BILLET/tmp/*
|
||||
|
||||
########################################################################
|
||||
## UPDATE Astroport.ONE code
|
||||
cd ~/.zen/Astroport.ONE/
|
||||
cd ${MY_PATH}/
|
||||
git pull
|
||||
|
||||
## SOON /ipns/ Address !!!
|
||||
|
||||
# espeak "20 HOURS 12 MINUTES. ASTROBOT RUNNING." > /dev/null 2>&1
|
||||
########################################################################
|
||||
## Updating yt-dlp
|
||||
$MY_PATH/youtube-dl.sh
|
||||
${MY_PATH}/youtube-dl.sh
|
||||
sudo youtube-dl -U
|
||||
|
||||
# Refresh ~/.zen/game/world/G1VOEU
|
||||
# NOW RUN FROM PLAYER.refresh.sh !! ~/.zen/Astroport.ONE/RUNTIME/VOEUX.refresh.sh
|
||||
########################################################################
|
||||
## DRAGON SSH WOT
|
||||
echo "DRAGONS WOT OFF"
|
||||
${MY_PATH}/RUNTIME/DRAGON_p2p_ssh.sh off
|
||||
|
||||
# espeak "Players refresh" > /dev/null 2>&1
|
||||
# Refresh ~/.zen/game/players/PLAYER
|
||||
~/.zen/Astroport.ONE/RUNTIME/PLAYER.refresh.sh
|
||||
########################################################################
|
||||
## PING BOOSTRAP & SWARM NODES
|
||||
${MY_PATH}/ping_bootstrap.sh > /dev/null 2>&1
|
||||
|
||||
# espeak "REFRESHING UPLANET" > /dev/null 2>&1
|
||||
~/.zen/Astroport.ONE/RUNTIME/UPLANET.refresh.sh
|
||||
########################################################################
|
||||
######################################################### UPLANET ######
|
||||
#####################################
|
||||
# GeoKeys UMAP / SECTOR / REGION ...
|
||||
#####################################
|
||||
${MY_PATH}/RUNTIME/UPLANET.refresh.sh
|
||||
#####################################
|
||||
#####################################
|
||||
# Players TW analyse & ASTROBOT run
|
||||
#####################################
|
||||
${MY_PATH}/RUNTIME/PLAYER.refresh.sh
|
||||
#####################################
|
||||
#####################################
|
||||
# Node refreshing
|
||||
#####################################
|
||||
${MY_PATH}/RUNTIME/NODE.refresh.sh
|
||||
#####################################
|
||||
########################################################################
|
||||
########################################################################
|
||||
|
||||
# espeak "REFRESHING NODE" > /dev/null 2>&1
|
||||
~/.zen/Astroport.ONE/RUNTIME/NODE.refresh.sh
|
||||
########################################################################
|
||||
## REMOVE TMP BUT KEEP swarm, flashmem and coucou
|
||||
mv ~/.zen/tmp/${IPFSNODEID} ~/.zen/${IPFSNODEID}
|
||||
mv ~/.zen/tmp/swarm ~/.zen/swarm
|
||||
mv ~/.zen/tmp/coucou ~/.zen/coucou
|
||||
mv ~/.zen/tmp/flashmem ~/.zen/flashmem
|
||||
rm -Rf ~/.zen/tmp/*
|
||||
mv ~/.zen/${IPFSNODEID} ~/.zen/tmp/${IPFSNODEID}
|
||||
mv ~/.zen/swarm ~/.zen/tmp/swarm
|
||||
mv ~/.zen/coucou ~/.zen/tmp/coucou
|
||||
mv ~/.zen/flashmem ~/.zen/tmp/flashmem
|
||||
|
||||
|
||||
## if [[ ! $isLAN ]]; then
|
||||
## REFRESH BOOSTRAP LIST (OFFICIAL SWARM)
|
||||
########################################################################
|
||||
################################# updating ipfs bootstrap
|
||||
espeak "bootstrap refresh" > /dev/null 2>&1
|
||||
|
||||
ipfs bootstrap rm --all > /dev/null 2>&1
|
||||
for bootnode in $(cat ~/.zen/Astroport.ONE/A_boostrap_nodes.txt | grep -Ev "#") # remove comments
|
||||
|
||||
[[ -s ${HOME}/.zen/MY_boostrap_nodes.txt ]] \
|
||||
&& STRAPFILE="${HOME}/.zen/MY_boostrap_nodes.txt" \
|
||||
|| STRAPFILE="${MY_PATH}/A_boostrap_nodes.txt"
|
||||
|
||||
for bootnode in $(cat ${STRAPFILE} | grep -Ev "#") # remove comments
|
||||
do
|
||||
ipfsnodeid=${bootnode##*/}
|
||||
ipfs bootstrap add $bootnode
|
||||
done
|
||||
|
||||
## fi
|
||||
|
||||
########################################################################
|
||||
########################################################################
|
||||
end=`date +%s`
|
||||
dur=`expr $end - $start`
|
||||
|
@ -85,23 +148,23 @@ seconds=$((dur % 60))
|
|||
echo "DURATION ${hours} hours ${minutes} minutes ${seconds} seconds"
|
||||
echo "20H12 (♥‿‿♥) Execution time was $dur seconds."
|
||||
|
||||
# ~/.zen/Astroport.ONE/tools/ipfs_P2P_forward.sh ## COULD FORWARD LOCAL TCP PORT TO SWARM
|
||||
rm ~/.zen/game/players/localhost/latest
|
||||
|
||||
## MAIL LOG : support@qo-op.com ##
|
||||
$MY_PATH/tools/mailjet.sh "support@qo-op.com" "/tmp/20h12.log" "20H12"
|
||||
${MY_PATH}/tools/mailjet.sh "support@qo-op.com" "/tmp/20h12.log" "20H12"
|
||||
|
||||
espeak "DURATION ${hours} hours ${minutes} minutes ${seconds} seconds" > /dev/null 2>&1
|
||||
|
||||
## RESTART
|
||||
|
||||
# espeak "Restarting Astroport Services" > /dev/null 2>&1
|
||||
## CLOSING API PORT
|
||||
[[ -s ~/.zen/.pid ]] && kill -9 $(cat ~/.zen/.pid) > /dev/null 2>&1
|
||||
## KILL ALL REMAINING nc
|
||||
killall nc 12345.sh > /dev/null 2>&1
|
||||
|
||||
## OPEN API ENGINE
|
||||
## SYSTEMD OR NOT SYSTEMD
|
||||
if [[ ! -f /etc/systemd/system/astroport.service ]]; then
|
||||
~/.zen/Astroport.ONE/12345.sh > ~/.zen/tmp/12345.log &
|
||||
${MY_PATH}/12345.sh > ~/.zen/tmp/12345.log &
|
||||
PID=$!
|
||||
echo $PID > ~/.zen/.pid
|
||||
else
|
||||
|
@ -111,16 +174,24 @@ else
|
|||
|
||||
fi
|
||||
|
||||
echo "IPFS LOW MODE ?"
|
||||
echo "IPFS DAEMON LEVEL"
|
||||
######### IPFS DAMEON NOT RUNNING ALL DAY
|
||||
## IF IPFS DAEMON DISABLED : WAIT 1H & STOP IT
|
||||
[[ $LOWMODE != "" ]] \
|
||||
&& echo "ON. $LOWMODE" \
|
||||
&& sleep 360 \
|
||||
&& echo "STOP IPFS $LOWMODE" \
|
||||
&& sleep 3600 \
|
||||
&& sudo systemctl stop ipfs \
|
||||
&& exit 0
|
||||
|
||||
echo "OFF. RESTART IPFS"
|
||||
echo "HIGH. RESTART IPFS"
|
||||
sleep 60
|
||||
sudo systemctl restart ipfs
|
||||
|
||||
#################################
|
||||
### DRAGON WOT : SSH P2P RING OPENING
|
||||
#################################
|
||||
sleep 30
|
||||
echo "DRAGONS WOT ON"
|
||||
${MY_PATH}/RUNTIME/DRAGON_p2p_ssh.sh
|
||||
|
||||
exit 0
|
||||
|
|
|
@ -0,0 +1,39 @@
|
|||
# Pourquoi ?
|
||||
|
||||
## La Monnaie est Buggée !
|
||||
Dans l'écosystème actuel, la notion de monnaie est sujette à des défauts.
|
||||
La distinction entre une unité non libre et une monnaie libre révèle des imperfections
|
||||
dans les échanges économiques.
|
||||
|
||||
## Blockchain = Registre Global
|
||||
La blockchain, en tant que registre global, offre une opportunité de remédier aux lacunes du
|
||||
système financier actuel. Elle peut être envisagée comme une carte d'identité pour le Web3,
|
||||
offrant transparence et traçabilité.
|
||||
|
||||
## IA Apprentissage et Contrôle
|
||||
La gestion de l'intelligence artificielle est cruciale. La comparaison entre un ChatGPT privé
|
||||
et Mistral libre souligne la nécessité d'un contrôle plus étendu.
|
||||
"The PILE", source d'information, demande une cohérence accrue pour garantir une
|
||||
diffusion fiable des connaissances.
|
||||
|
||||
## Loi de Moore vs Industrie
|
||||
La cadence effrénée de la Loi de Moore, avec une progression tous les 1,5 ans,
|
||||
se heurte à la réalité industrielle où les cycles d'investissement s'étendent de 3 à 11 ans.
|
||||
Les rendements sur investissements sont souvent compromis, créant des opportunités pour de nouveaux acteurs.
|
||||
|
||||
## Web2.0 Épileptique
|
||||
Les soubresauts du Web2.0, caractérisés par l'instabilité des données et de leur localisation,
|
||||
soulignent la nécessité d'une approche plus stable et cohérente.
|
||||
|
||||
# Comment ?
|
||||
|
||||
## UPlanet / Astroport.ONE
|
||||
La solution réside dans UPlanet et Astroport.ONE, des initiatives axées sur la décentralisation et la régulation.
|
||||
En adoptant une blockchain multi-grille sphérique et des clés géospatiales, ces plateformes créent un réseau de :
|
||||
* stations index (300€)
|
||||
* stations de stockage (1500€)
|
||||
* stations IA avec GPU (5000€)
|
||||
|
||||
|
||||
Ces stations, en synergie, visent à résoudre les problèmes évoqués, offrant une alternative innovante
|
||||
pour les investisseurs souhaitant participer à la transformation du paysage technologique.
|
22
API/AMZQR.sh
|
@ -26,6 +26,8 @@ MOATS=$9
|
|||
COOKIE=$10"
|
||||
PORT="$1" THAT="$2" AND="$3" THIS="$4" APPNAME="$5" WHAT="$6" OBJ="$7" VAL="$8" MOATS="$9" COOKIE="$10"
|
||||
|
||||
[[ "$PORT" == "" ]] && echo "$MY_PATH/AMZQR.sh '0' 'la chaine a mettre en QRCODE' 'et' 'TV'" && exit 1
|
||||
|
||||
HTTPCORS="HTTP/1.1 200 OK
|
||||
Access-Control-Allow-Origin: ${myASTROPORT}
|
||||
Access-Control-Allow-Credentials: true
|
||||
|
@ -37,6 +39,8 @@ Content-Type: text/html; charset=UTF-8
|
|||
|
||||
function urldecode() { : "${*//+/ }"; echo -e "${_//%/\\x}"; }
|
||||
|
||||
|
||||
[[ ${MOATS} == "" ]] && MOATS=$(date -u +"%Y%m%d%H%M%S%4N")
|
||||
mkdir -p ~/.zen/tmp/${MOATS}/
|
||||
|
||||
##################################################
|
||||
|
@ -44,10 +48,12 @@ USTRING=$(urldecode "${THAT}")
|
|||
IMAGE="${THIS}"
|
||||
|
||||
[[ ! -s ${MY_PATH}/../images/${IMAGE}.png || ${USTRING} == "" ]] \
|
||||
&& exho "UNKNOW IMAGE ${IMAGE}" \
|
||||
&& (echo "$HTTPCORS ERROR - BAD PARAMS" | nc -l -p ${PORT} -q 1 > /dev/null 2>&1 &) \
|
||||
&& echo "UNKNOW IMAGE ${IMAGE}" \
|
||||
&& ( [[ $PORT != "0" ]] && echo "$HTTPCORS ERROR - BAD PARAMS" | nc -l -p ${PORT} -q 1 > /dev/null 2>&1 &) \
|
||||
&& echo "(☓‿‿☓) Execution time was "`expr $(date +%s) - $start` seconds. && exit 1
|
||||
|
||||
echo amzqr "${USTRING}" -l H -c -p ${MY_PATH}/../images/${IMAGE}.png -n ${MOATS}.png -d ~/.zen/tmp/${MOATS}/
|
||||
|
||||
## RUN AMZQR
|
||||
amzqr "${USTRING}" -l H -c -p ${MY_PATH}/../images/${IMAGE}.png -n ${MOATS}.png -d ~/.zen/tmp/${MOATS}/
|
||||
IPFSMG=$(ipfs add -q ~/.zen/tmp/${MOATS}/${MOATS}.png | tail -n 1)
|
||||
|
@ -55,7 +61,19 @@ echo "${myIPFS}/ipfs/${IPFSMG}"
|
|||
|
||||
echo "$HTTPCORS <meta http-equiv=\"refresh\" content=\"0; url='${myIPFS}/ipfs/${IPFSMG}'\" />" | nc -l -p ${PORT} -q 1 > /dev/null 2>&1 &
|
||||
|
||||
if [[ $PORT == "0" ]]; then
|
||||
[[ $XDG_SESSION_TYPE == 'x11' || $XDG_SESSION_TYPE == 'wayland' ]] && xdg-open ${myIPFS}/ipfs/${IPFSMG}
|
||||
|
||||
LP=$(ls /dev/usb/lp* 2>/dev/null | head -n1)
|
||||
if [[ $LP ]]; then
|
||||
echo "IMPRESSION QRCODE"
|
||||
brother_ql_create --model QL-700 --label-size 62 ~/.zen/tmp/${MOATS}/${MOATS}.png > ~/.zen/tmp/${MOATS}/toprint.bin 2>/dev/null
|
||||
sudo brother_ql_print ~/.zen/tmp/${MOATS}/toprint.bin $LP
|
||||
fi
|
||||
fi
|
||||
|
||||
rm -Rf ~/.zen/tmp/${MOATS}/
|
||||
end=`date +%s`
|
||||
echo "(AMZQR) Operation time was "`expr $end - $start` seconds.
|
||||
echo "/ipfs/${IPFSMG}"
|
||||
exit 0
|
||||
|
|
|
@ -0,0 +1,79 @@
|
|||
################################################################################
|
||||
# Author: Fred (support@qo-op.com)
|
||||
# Version: 0.1
|
||||
# License: AGPL-3.0 (https://choosealicense.com/licenses/agpl-3.0/)
|
||||
################################################################################
|
||||
################################################################################
|
||||
## API: DRAGONS
|
||||
## Used by OSM2IPFS welcome.html
|
||||
# ?zone=DEG&ulat=LAT&ulon=LON
|
||||
## Search for TW numbers in received zone # >> return json
|
||||
################################################################################
|
||||
MY_PATH="`dirname \"$0\"`" # relative
|
||||
MY_PATH="`( cd \"$MY_PATH\" && pwd )`" # absolutized and normalized
|
||||
. "${MY_PATH}/../tools/my.sh"
|
||||
|
||||
start=`date +%s`
|
||||
|
||||
echo "PORT=$1
|
||||
THAT=$2
|
||||
AND=$3
|
||||
THIS=$4
|
||||
APPNAME=$5
|
||||
WHAT=$6
|
||||
OBJ=$7
|
||||
VAL=$8
|
||||
MOATS=$9
|
||||
COOKIE=$10"
|
||||
PORT="$1" THAT="$2" AND="$3" THIS="$4" APPNAME="$5" WHAT="$6" OBJ="$7" VAL="$8" MOATS="$9" COOKIE="$10"
|
||||
### transfer variables according to script
|
||||
|
||||
[[ $MOATS == "" ]] && echo "MISSING MOATS" && exit 1
|
||||
|
||||
HTTPCORS="HTTP/1.1 200 OK
|
||||
Access-Control-Allow-Origin: *
|
||||
Access-Control-Allow-Credentials: true
|
||||
Access-Control-Allow-Methods: GET
|
||||
Server: Astroport.ONE
|
||||
Content-Type: text/html; charset=UTF-8
|
||||
|
||||
"
|
||||
|
||||
function urldecode() { : "${*//+/ }"; echo -e "${_//%/\\x}"; }
|
||||
|
||||
# PREPARE HTTP RESPONSE (application/json)
|
||||
mkdir -p ~/.zen/tmp/${MOATS}/
|
||||
echo "${HTTPCORS}" > ~/.zen/tmp/${MOATS}/http
|
||||
sed -i "s~text/html~application/json~g" ~/.zen/tmp/${MOATS}/http
|
||||
|
||||
# ------------------------------------------------------------------- #
|
||||
# GET/?dragons
|
||||
# ------------------------------------------------------------------- #
|
||||
## RUNNING UPLANET STATIONS GPS DETECTION
|
||||
rm ~/.zen/tmp/DRAGONS.json
|
||||
|
||||
if [[ ! -s ~/.zen/tmp/DRAGONS.json ]]; then
|
||||
|
||||
echo " ## cat ***/GPS.json"
|
||||
cat ~/.zen/tmp/${IPFSNODEID}/GPS.json 2>/dev/null | jq -c '.[] + {ipfsnodeid: "'$IPFSNODEID'"}' > ~/.zen/tmp/${MOATS}/gps.grid
|
||||
cat ~/.zen/tmp/swarm/12D*/GPS.json 2>/dev/null | jq -c '.[] + {ipfsnodeid: "'$IPFSNODEID'"}' | sort -u >> ~/.zen/tmp/${MOATS}/gps.grid
|
||||
|
||||
cat ~/.zen/tmp/${MOATS}/gps.grid | jq -s '.' | sed -e 's/\[/[/' -e 's/\]/]/' -e 's/},{/},\n{/g' > ~/.zen/tmp/DRAGONS.json
|
||||
fi
|
||||
|
||||
#~ jq 'unique_by(.umap)' ~/.zen/tmp/DRAGONS.json > ~/.zen/tmp/DRAGONS_no_duplicates.json
|
||||
#~ mv ~/.zen/tmp/DRAGONS_no_duplicates.json ~/.zen/tmp/DRAGONS.json
|
||||
echo " ***** WELCOME DRAGONS =========== "
|
||||
cat ~/.zen/tmp/DRAGONS.json
|
||||
|
||||
### SEND RESPONSE ON PORT
|
||||
cat ~/.zen/tmp/DRAGONS.json >> ~/.zen/tmp/${MOATS}/http
|
||||
(
|
||||
cat ~/.zen/tmp/${MOATS}/http | nc -l -p ${PORT} -q 1 > /dev/null 2>&1
|
||||
rm -Rf ~/.zen/tmp/${MOATS} && echo "BLURP DRAGONS.json"
|
||||
) &
|
||||
|
||||
## TIMING
|
||||
end=`date +%s`
|
||||
echo "(DRAGONS) Operation time was "`expr $end - $start` seconds.
|
||||
exit 0
|
|
@ -87,31 +87,40 @@ fi
|
|||
###############################################################################
|
||||
if [[ ${QRCODE} == "station" ]]; then
|
||||
|
||||
#~ # Keep 2nd try of the day
|
||||
#~ [[ ! -s ~/.zen/tmp/_ISTATION ]] \
|
||||
#~ && mv ~/.zen/tmp/ISTATION ~/.zen/tmp/_ISTATION \
|
||||
#~ || cp ~/.zen/tmp/_ISTATION ~/.zen/tmp/ISTATION
|
||||
## CHECK FOR ANY ALREADY RUNNING make_image_ipfs_index_carousel
|
||||
carouselrunning=$(ps axf --sort=+utime | grep -w 'make_image_ipfs_index_carousel' | grep -v -E 'color=auto|grep' | tail -n 1 | xargs | cut -d " " -f 1)
|
||||
|
||||
if [[ ! -s ~/.zen/tmp/ISTATION ]]; then
|
||||
## GENERATE PLAYER G1 TO ZEN ACCOUNTING
|
||||
ISTATION=$($MY_PATH/../tools/make_image_ipfs_index_carousel.sh | tail -n 1)
|
||||
echo $ISTATION > ~/.zen/tmp/ISTATION ## STATION G1WALLET CAROUSEL
|
||||
if [[ $carouselrunning ]]; then
|
||||
ISTATION="/ipfs/QmVTHH8sTXEqRBsvcKo5jDo16rvp7Q7ERyHZP5vmWUxeS6" ## G1WorldCrafting.jpg
|
||||
else
|
||||
## GENERATE PLAYER G1 TO ZEN ACCOUNTING
|
||||
ISTATION=$($MY_PATH/../tools/make_image_ipfs_index_carousel.sh | tail -n 1)
|
||||
echo $ISTATION > ~/.zen/tmp/ISTATION ## STATION G1WALLET CAROUSEL
|
||||
fi
|
||||
else
|
||||
ISTATION=$(cat ~/.zen/tmp/ISTATION)
|
||||
fi
|
||||
## SHOW G1PALPAY FRONT (IFRAME)
|
||||
sed "s~_STATION_~${myIPFSW}${ISTATION}/~g" $MY_PATH/../templates/ZenStation/index.html > ~/.zen/tmp/${MOATS}/index.htm
|
||||
[[ ! $isLAN ]] && sed -i "s~MENU~HOSTING~g" ~/.zen/tmp/${MOATS}/index.htm
|
||||
sed -i "s~http://127.0.0.1:8080~${myIPFSW}~g" ~/.zen/tmp/${MOATS}/index.htm
|
||||
sed -i "s~http://127.0.0.1:33101~${myG1BILLET}~g" ~/.zen/tmp/${MOATS}/index.htm
|
||||
sed -i "s~http://astroport.localhost:1234~${myASTROPORT}~g" ~/.zen/tmp/${MOATS}/index.htm
|
||||
|
||||
WSTATION="/ipfs/$(ipfs add -q ~/.zen/tmp/${MOATS}/index.htm)"
|
||||
echo $WSTATION > ~/.zen/tmp/WSTATION
|
||||
end=`date +%s`
|
||||
echo "NEW WSTATION ${myIPFSW}${WSTATION} Execution time was "`expr $end - $start` seconds.
|
||||
## SEND TO WSTATION PAGE
|
||||
sed "s~_TWLINK_~${myIPFSW}${WSTATION}/~g" ${MY_PATH}/../templates/index.302 > ~/.zen/tmp/${MOATS}/index.redirect
|
||||
## LOG IPFSNODEID : IPCity + Wheater + more...
|
||||
${MY_PATH}/../tools/IPFSNODEID.weather.sh > ~/.zen/tmp/${IPFSNODEID}/weather.txt
|
||||
echo "<meta http-equiv=\"refresh\" content=\"0; url='${ISTATION}'\" />" > ~/.zen/tmp/${IPFSNODEID}/_index.html
|
||||
|
||||
## SHOW ZenStation FRONT
|
||||
sed "s~_STATION_~${myIPFS}${ISTATION}/~g" $MY_PATH/../templates/ZenStation/index.html > ~/.zen/tmp/${MOATS}/index.htm
|
||||
sed -i "s~2L8vaYixCf97DMT8SistvQFeBj7vb6RQL7tvwyiv1XVH~${WORLDG1PUB}~g" ~/.zen/tmp/${MOATS}/index.htm
|
||||
sed -i "s~http://127.0.0.1:8080~${myIPFS}~g" ~/.zen/tmp/${MOATS}/index.htm
|
||||
sed -i "s~http://127.0.0.1:33101~${myG1BILLET}~g" ~/.zen/tmp/${MOATS}/index.htm
|
||||
sed -i "s~http://astroport.localhost:1234~${myASTROPORT}~g" ~/.zen/tmp/${MOATS}/index.htm
|
||||
|
||||
WSTATION="/ipfs/$(ipfs add -q ~/.zen/tmp/${MOATS}/index.htm)"
|
||||
echo $WSTATION > ~/.zen/tmp/WSTATION
|
||||
|
||||
end=`date +%s`
|
||||
echo "NEW WSTATION ${myIPFS}${WSTATION} Execution time was "`expr $end - $start` seconds.
|
||||
|
||||
##302 REDIRECT TO WSTATION IPFS
|
||||
sed "s~_TWLINK_~${myIPFS}${WSTATION}/~g" ${MY_PATH}/../templates/index.302 > ~/.zen/tmp/${MOATS}/index.redirect
|
||||
sed -i "s~Set-Cookie*~Set-Cookie: $COOKIE~" ~/.zen/tmp/${MOATS}/index.redirect
|
||||
echo "url='"${myIPFSW}${WSTATION}"'" >> ~/.zen/tmp/${MOATS}/index.redirect
|
||||
(
|
||||
|
@ -157,7 +166,7 @@ if [[ ${QRCODE:0:5} == "~~~~~" ]]; then
|
|||
|
||||
echo "COINScheck.sh ${G1PUB}"
|
||||
${MY_PATH}/../tools/COINScheck.sh ${G1PUB} > ~/.zen/tmp/${G1PUB}.curcoin
|
||||
CURCOINS=$(cat ~/.zen/tmp/${G1PUB}.curcoin | tail -n 1 | cut -d '.' -f 1)
|
||||
CURCOINS=$(cat ~/.zen/tmp/${G1PUB}.curcoin | tail -n 1 | xargs | cut -d '.' -f 1)
|
||||
CURZEN=$(echo "($CURCOINS - 1) * 10" | bc | cut -d '.' -f 1)
|
||||
echo "= $CURCOINS G1 / $CURZEN ZEN"
|
||||
|
||||
|
@ -194,11 +203,6 @@ if [[ ${QRCODE:0:5} == "~~~~~" ]]; then
|
|||
|
||||
fi
|
||||
|
||||
else
|
||||
|
||||
echo "<h2>ERROR - INVALID PIN - ERROR</h2>" >> ~/.zen/tmp/${MOATS}/disco
|
||||
cat ~/.zen/tmp/${MOATS}/disco.aes >> ~/.zen/tmp/${MOATS}/disco
|
||||
|
||||
fi
|
||||
|
||||
if [[ ${APPNAME} == "flipper" ]]; then
|
||||
|
@ -476,7 +480,7 @@ if [[ ${QRCODE:0:5} == "@@@@@" ]]; then
|
|||
if [[ ! -s ~/.zen/tmp/${MOATS}/${PLAYERORIG1}.${VoeuName}.missive.txt ]]; then
|
||||
HELLO="@PASS :: G1BILLET+ :: ${G1VOEUPUB} :: $(date) :: ${player} :: ${PLAYERORIG1}"
|
||||
echo "${HELLO}"
|
||||
avanla=$(ps axf --sort=+utime | grep -w 'ipfs cat /ipns/$G1VOEUNS' | grep -v -E 'color=auto|grep' | tail -n 1 | cut -d " " -f 1)
|
||||
avanla=$(ps axf --sort=+utime | grep -w 'ipfs cat /ipns/$G1VOEUNS' | grep -v -E 'color=auto|grep' | tail -n 1 | xargs | cut -d " " -f 1)
|
||||
[[ ! $avanla ]] \
|
||||
&& ( ipfs cat /ipns/$G1VOEUNS > ~/.zen/tmp/${MOATS}/${PLAYERORIG1}.${VoeuName}.missive.txt \
|
||||
&& [[ ! -s ~/.zen/tmp/${MOATS}/${PLAYERORIG1}.${VoeuName}.missive.txt ]] \
|
||||
|
@ -486,7 +490,7 @@ if [[ ${QRCODE:0:5} == "@@@@@" ]]; then
|
|||
&& ipfs name publish -k ${player}_${VoeuName} /ipfs/${MILGRAM} &
|
||||
) &
|
||||
|
||||
echo "<br>PLEASE RETRY IN 30 SECONDS GETTING MESSAGE FROM IPFS<br>" >> ~/.zen/tmp/${MOATS}/disco
|
||||
echo "<br>PLEASE RETRY IN 30 SECONDS GETTING MESSAGE FROM IPFS<bipfsr>" >> ~/.zen/tmp/${MOATS}/disco
|
||||
(
|
||||
cat ~/.zen/tmp/${MOATS}/disco | nc -l -p ${PORT} -q 1 > /dev/null 2>&1
|
||||
echo "BLURP $PORT" && rm -Rf ~/.zen/tmp/${MOATS}
|
||||
|
@ -574,7 +578,7 @@ if [[ ${QRCODE:0:2} == "G1" && ${AND} == "tw" ]]; then
|
|||
|
||||
VOEU=${QRCODE:2} ## "G1G1Voeu" => "G1Voeu"
|
||||
# THIS is TW IPNS
|
||||
ASTROPATH=$(grep -r ${THIS} ~/.zen/game/players/*/ipfs/moa | tail -n 1 | cut -d ':' -f 1 | rev | cut -d '/' -f 2- | rev 2>/dev/null)
|
||||
ASTROPATH=$(grep -r ${THIS} ~/.zen/game/players/*/ipfs/moa | tail -n 1 | xargs | cut -d ':' -f 1 | rev | cut -d '/' -f 2- | rev 2>/dev/null)
|
||||
echo "ASTROPATH=${ASTROPATH}"
|
||||
|
||||
INDEX=${ASTROPATH}/index.html
|
||||
|
@ -604,7 +608,7 @@ if [[ ${QRCODE:0:2} == "G1" && ${AND} == "tw" ]]; then
|
|||
##############################################
|
||||
echo "## IPNS G1Voeu APP REDIRECT"
|
||||
tiddlywiki --load ${INDEX} --output ~/.zen/tmp --render '.' "${MOATS}.g1voeu.json" 'text/plain' '$:/core/templates/exporters/JsonFile' 'exportFilter' '[tag[G1Voeu]]'
|
||||
cat ~/.zen/tmp/${MOATS}.g1voeu.json | jq -r '.[].wish' > ~/.zen/tmp/${MOATS}.g1wishes.txt
|
||||
cat ~/.zen/tmp/${MOATS}.g1voeu.json | jq -r 'map(select(.wish != null)) | .[].wish' > ~/.zen/tmp/${MOATS}.g1wishes.txt
|
||||
cat ~/.zen/tmp/${MOATS}.g1wishes.txt
|
||||
while read WISH
|
||||
do
|
||||
|
@ -641,6 +645,7 @@ fi
|
|||
################################################################################
|
||||
## QRCODE = IPNS or G1PUB ? Can be ASTRONAUTENS or G1PUB format
|
||||
ZCHK="$(echo $THAT | cut -d ':' -f 2-)" # ChK or ZEN
|
||||
[[ $ZCHK == $THAT ]] && ZCHK=""
|
||||
QRCODE="${QRCODE%%:*}" ## TRIM :ChK
|
||||
################################################################################
|
||||
################################################################################
|
||||
|
@ -650,7 +655,7 @@ echo "IPNS2G1=${IPNS2G1} ZCHK=${ZCHK}"
|
|||
[[ ${ZCHK} == "" && ${#IPNS2G1} -ge 40 && ${QRCODE::4} == "12D3" ]] \
|
||||
&& echo "${PORT} QRCODE IS IPNS ADDRESS : ${myIPFS}/ipns/${QRCODE}" \
|
||||
&& (echo "$HTTPCORS <meta http-equiv=\"refresh\" content=\"0; url='${myIPFS}/ipns/${QRCODE}'\" />Loading from IPFS" | nc -l -p ${PORT} -q 1 > /dev/null 2>&1 &) \
|
||||
&& echo "PRULS /ipns/${QRCODE} $PORT" && rm -Rf ~/.zen/tmp/${MOATS} \
|
||||
&& echo "GLUPS /ipns/${QRCODE} $PORT" && rm -Rf ~/.zen/tmp/${MOATS} \
|
||||
&& exit 0
|
||||
|
||||
## TEST G1 TYPE ( try g1_to_ipfs )
|
||||
|
@ -658,7 +663,7 @@ ASTROTOIPNS=$(${MY_PATH}/../tools/g1_to_ipfs.py ${QRCODE} 2>/dev/null)
|
|||
[[ ! ${ASTROTOIPNS} ]] \
|
||||
&& echo "${PORT} INVALID QRCODE : ${QRCODE}" \
|
||||
&& (echo "$HTTPCORS ERROR - INVALID QRCODE : ${QRCODE}" | nc -l -p ${PORT} -q 1 > /dev/null 2>&1 &) \
|
||||
&& echo "PRULS INVALID ${QRCODE} $PORT" && rm -Rf ~/.zen/tmp/${MOATS} \
|
||||
&& echo "GLUPS INVALID ${QRCODE} $PORT" && rm -Rf ~/.zen/tmp/${MOATS} \
|
||||
&& exit 1
|
||||
################################################################################
|
||||
echo "############################################################################"
|
||||
|
@ -673,29 +678,23 @@ echo ">>> ${QRCODE} g1_to_ipfs $ASTROTOIPNS"
|
|||
&& ZEN=$(echo "($VISITORCOINS - 1) * 10" | bc | cut -d '.' -f 1) \
|
||||
|| ZEN="-10"
|
||||
|
||||
DISPLAY="$VISITORCOINS G1"
|
||||
DISPLAY="<h1>$VISITORCOINS G1</h1>"
|
||||
|
||||
## WALLET VIERGE
|
||||
###########################################
|
||||
if [[ $VISITORCOINS == "null" || ${ZEN} -lt 10 ]]; then
|
||||
|
||||
echo "!! LOW ZEN WALLET ZEN=${ZEN}"
|
||||
DISPLAY="$DISPLAY
|
||||
<h2>!! LOW ZEN WALLET ZEN=${ZEN}<h2>"
|
||||
|
||||
echo "${HTTPCORS}" > ~/.zen/tmp/${MOATS}/index.redirect
|
||||
echo "<h1>LOW ZEN WARNING</h1>
|
||||
PLEASE CHARGE... only ${ZEN} ZEN
|
||||
" >> ~/.zen/tmp/${MOATS}/index.redirect
|
||||
(
|
||||
cat ~/.zen/tmp/${MOATS}/index.redirect | nc -l -p ${PORT} -q 1 > /dev/null 2>&1
|
||||
echo "BLURP null ZEN $PORT" && rm -Rf ~/.zen/tmp/${MOATS}
|
||||
) &
|
||||
exit 0
|
||||
DISPLAY="$DISPLAY<h3>LOW ZEN WARNING</h3>
|
||||
PLEASE CHARGE... ${ZEN} ZEN"
|
||||
|
||||
fi
|
||||
|
||||
## WE SEND WALLET AMOUNT DISPLAY
|
||||
(
|
||||
echo "$HTTPCORS <h2>${ZCHK}:${QRCODE}</h2><h1>${DISPLAY}</h1><h2><a href='$myUPLANET/g1gate/?pubkey=$G1PUB'>SCAN WALLET</a><h2>" | nc -l -p ${PORT} -q 1 > /dev/null 2>&1
|
||||
echo "$HTTPCORS ${QRCODE}:${ZCHK}:${DISPLAY}<h2><a href='$myUPLANET/g1gate/?pubkey="$QRCODE"'>SCAN WALLET</a><h2>" | nc -l -p ${PORT} -q 1 > /dev/null 2>&1
|
||||
echo "BLURP ${DISPLAY} $PORT" && rm -Rf ~/.zen/tmp/${MOATS}
|
||||
) &
|
||||
|
||||
|
|
700
API/SALT.sh
|
@ -26,34 +26,38 @@ Content-Type: text/html; charset=UTF-8
|
|||
"
|
||||
mkdir -p ~/.zen/tmp/${MOATS}/
|
||||
|
||||
[[ ! $APPNAME || $SALT == "pepper" ]] && echo "NO APPNAME - BAD APP - CONTINUE" && (echo "$HTTPCORS ERROR - BAD CREDENTIALS" | nc -l -p ${PORT} -q 1 > /dev/null 2>&1 &) && exit 1
|
||||
############################################################################
|
||||
# WRITING API # SALT # PEPPER # MAKING THE KEY EXIST #########
|
||||
################### KEY GEN ###################################
|
||||
echo ">>>>>>>>>>>>>> Application LaBureautique >><< APPNAME = $APPNAME <<<<<<<<<<<<<<<<<<<<"
|
||||
[[ ! $APPNAME || $SALT == "pepper" ]] \
|
||||
&& echo "NO APPNAME - BAD APP - CONTINUE" \
|
||||
&& (echo "$HTTPCORS ERROR - BAD CREDENTIALS" | nc -l -p ${PORT} -q 1 > /dev/null 2>&1 &) \
|
||||
&& exit 1
|
||||
|
||||
[[ ! $SALT ]] && (echo "$HTTPCORS ERROR - SALT MISSING" | nc -l -p ${PORT} -q 1 > /dev/null 2>&1 &) && exit 1
|
||||
[[ ! $PEPPER || ${PEPPER:0:2} == "G1" ]] && (echo "$HTTPCORS ERROR - BAD OR PEPPER MISSING" | nc -l -p ${PORT} -q 1 > /dev/null 2>&1 &) && exit 1
|
||||
############################################################################
|
||||
# WRITING API # SALT # PEPPER # MAKING THE KEY EXIST #########
|
||||
################### KEY GEN ###################################
|
||||
echo ">>>>>>>>>>>>>> Application LaBureautique >><< APPNAME = $APPNAME <<<<<<<<<<<<<<<<<<<<"
|
||||
|
||||
## SAVE "salt" "pepper" DEBUG REMOVE OR PASS ENCRYPT FOR SECURITY REASON
|
||||
echo "PLAYER : \"$SALT\" \"$PEPPER\" : $APPNAME ($WHAT)"
|
||||
echo "\"$SALT\" \"$PEPPER\"" > ~/.zen/tmp/${MOATS}/${MOATS}.secret.june
|
||||
[[ ! $SALT ]] && (echo "$HTTPCORS ERROR - SALT MISSING" | nc -l -p ${PORT} -q 1 > /dev/null 2>&1 &) && exit 1
|
||||
[[ ! $PEPPER || ${PEPPER:0:2} == "G1" ]] && (echo "$HTTPCORS ERROR - BAD OR PEPPER MISSING" | nc -l -p ${PORT} -q 1 > /dev/null 2>&1 &) && exit 1
|
||||
|
||||
# CALCULATING ${MOATS}.secret.key + G1PUB
|
||||
${MY_PATH}/../tools/keygen -t duniter -o ~/.zen/tmp/${MOATS}/${MOATS}.secret.key "$SALT" "$PEPPER"
|
||||
G1PUB=$(cat ~/.zen/tmp/${MOATS}/${MOATS}.secret.key | grep 'pub:' | cut -d ' ' -f 2)
|
||||
[[ ! ${G1PUB} ]] && (echo "$HTTPCORS ERROR - (╥☁╥ ) - KEYGEN COMPUTATION DISFUNCTON" | nc -l -p ${PORT} -q 1 > /dev/null 2>&1 &) && exit 1
|
||||
echo "G1PUB : ${G1PUB}"
|
||||
## SAVE "salt" "pepper" DEBUG REMOVE OR PASS ENCRYPT FOR SECURITY REASON
|
||||
echo "PLAYER : \"$SALT\" \"$PEPPER\" : $APPNAME ($WHAT)"
|
||||
echo "\"$SALT\" \"$PEPPER\"" > ~/.zen/tmp/${MOATS}/${MOATS}.secret.june
|
||||
|
||||
## CALCULATING ${MOATS}.${G1PUB}.ipns.key ADDRESS
|
||||
ipfs key rm ${G1PUB} > /dev/null 2>&1
|
||||
rm -f ~/.zen/tmp/${MOATS}/${MOATS}.${G1PUB}.ipns.key
|
||||
${MY_PATH}/../tools/keygen -t ipfs -o ~/.zen/tmp/${MOATS}/${MOATS}.${G1PUB}.ipns.key "$SALT" "$PEPPER"
|
||||
ASTRONAUTENS=$(ipfs key import ${G1PUB} -f pem-pkcs8-cleartext ~/.zen/tmp/${MOATS}/${MOATS}.${G1PUB}.ipns.key )
|
||||
[[ ! ${ASTRONAUTENS} ]] && (echo "$HTTPCORS ERROR - (╥☁╥ ) - ASTRONAUTENS COMPUTATION DISFUNCTON" | nc -l -p ${PORT} -q 1 > /dev/null 2>&1 &) && exit 1
|
||||
# CALCULATING ${MOATS}.secret.key + G1PUB
|
||||
${MY_PATH}/../tools/keygen -t duniter -o ~/.zen/tmp/${MOATS}/${MOATS}.secret.key "$SALT" "$PEPPER"
|
||||
G1PUB=$(cat ~/.zen/tmp/${MOATS}/${MOATS}.secret.key | grep 'pub:' | cut -d ' ' -f 2)
|
||||
[[ ! ${G1PUB} ]] && (echo "$HTTPCORS ERROR - (╥☁╥ ) - KEYGEN COMPUTATION DISFUNCTON" | nc -l -p ${PORT} -q 1 > /dev/null 2>&1 &) && exit 1
|
||||
echo "G1PUB : ${G1PUB}"
|
||||
|
||||
echo "TW ADDRESS : $myIPFS/ipns/${ASTRONAUTENS}"
|
||||
echo
|
||||
## CALCULATING ${MOATS}.${G1PUB}.ipns.key ADDRESS
|
||||
ipfs key rm ${G1PUB} > /dev/null 2>&1
|
||||
rm -f ~/.zen/tmp/${MOATS}/${MOATS}.${G1PUB}.ipns.key
|
||||
${MY_PATH}/../tools/keygen -t ipfs -o ~/.zen/tmp/${MOATS}/${MOATS}.${G1PUB}.ipns.key "$SALT" "$PEPPER"
|
||||
ASTRONAUTENS=$(ipfs key import ${G1PUB} -f pem-pkcs8-cleartext ~/.zen/tmp/${MOATS}/${MOATS}.${G1PUB}.ipns.key )
|
||||
[[ ! ${ASTRONAUTENS} ]] && (echo "$HTTPCORS ERROR - (╥☁╥ ) - ASTRONAUTENS COMPUTATION DISFUNCTON" | nc -l -p ${PORT} -q 1 > /dev/null 2>&1 &) && exit 1
|
||||
|
||||
echo "TW ADDRESS : $myIPFS/ipns/${ASTRONAUTENS}"
|
||||
echo
|
||||
|
||||
########################################
|
||||
## APPNAME SELECTION ########################
|
||||
|
@ -62,156 +66,155 @@ mkdir -p ~/.zen/tmp/${MOATS}/
|
|||
##############################################
|
||||
# MESSAGING : GET MESSAGE FROM GCHANGE+
|
||||
##############################################
|
||||
if [[ $APPNAME == "messaging" ]]; then
|
||||
if [[ $APPNAME == "messaging" ]]; then
|
||||
|
||||
( ## & SUB PROCESS
|
||||
( ## & SUB PROCESS
|
||||
|
||||
echo "Extracting ${G1PUB} messages..."
|
||||
~/.zen/Astroport.ONE/tools/timeout.sh -t 12 \
|
||||
${MY_PATH}/../tools/jaklis/jaklis.py -k ~/.zen/tmp/${MOATS}/${MOATS}.secret.key read -n 10 -j > ~/.zen/tmp/${MOATS}/messin.${G1PUB}.json
|
||||
[[ ! -s ~/.zen/tmp/${MOATS}/messin.${G1PUB}.json || $(grep -v -E 'Aucun message à afficher' ~/.zen/tmp/${MOATS}/messin.${G1PUB}.json) == "True" ]] && echo "[]" > ~/.zen/tmp/${MOATS}/messin.${G1PUB}.json
|
||||
echo "Extracting ${G1PUB} messages..."
|
||||
~/.zen/Astroport.ONE/tools/timeout.sh -t 12 \
|
||||
${MY_PATH}/../tools/jaklis/jaklis.py -k ~/.zen/tmp/${MOATS}/${MOATS}.secret.key read -n 10 -j > ~/.zen/tmp/${MOATS}/messin.${G1PUB}.json
|
||||
[[ ! -s ~/.zen/tmp/${MOATS}/messin.${G1PUB}.json || $(grep -v -E 'Aucun message à afficher' ~/.zen/tmp/${MOATS}/messin.${G1PUB}.json) == "True" ]] && echo "[]" > ~/.zen/tmp/${MOATS}/messin.${G1PUB}.json
|
||||
|
||||
~/.zen/Astroport.ONE/tools/timeout.sh -t 12 \
|
||||
${MY_PATH}/../tools/jaklis/jaklis.py -k ~/.zen/tmp/${MOATS}/${MOATS}.secret.key read -n 10 -j -o > ~/.zen/tmp/${MOATS}/messout.${G1PUB}.json
|
||||
[[ ! -s ~/.zen/tmp/${MOATS}/messout.${G1PUB}.json || $(grep -v -E 'Aucun message à afficher' ~/.zen/tmp/${MOATS}/messout.${G1PUB}.json) == "True" ]] && echo "[]" > ~/.zen/tmp/${MOATS}/messout.${G1PUB}.json
|
||||
~/.zen/Astroport.ONE/tools/timeout.sh -t 12 \
|
||||
${MY_PATH}/../tools/jaklis/jaklis.py -k ~/.zen/tmp/${MOATS}/${MOATS}.secret.key read -n 10 -j -o > ~/.zen/tmp/${MOATS}/messout.${G1PUB}.json
|
||||
[[ ! -s ~/.zen/tmp/${MOATS}/messout.${G1PUB}.json || $(grep -v -E 'Aucun message à afficher' ~/.zen/tmp/${MOATS}/messout.${G1PUB}.json) == "True" ]] && echo "[]" > ~/.zen/tmp/${MOATS}/messout.${G1PUB}.json
|
||||
|
||||
echo "Creating messages In/Out JSON ~/.zen/tmp/${MOATS}/${MOATS}.messaging.json"
|
||||
echo '[' > ~/.zen/tmp/${MOATS}/${MOATS}.messaging.json
|
||||
cat ~/.zen/tmp/${MOATS}/messin.${G1PUB}.json >> ~/.zen/tmp/${MOATS}/${MOATS}.messaging.json
|
||||
echo "," >> ~/.zen/tmp/${MOATS}/${MOATS}.messaging.json
|
||||
cat ~/.zen/tmp/${MOATS}/messout.${G1PUB}.json >> ~/.zen/tmp/${MOATS}/${MOATS}.messaging.json
|
||||
echo ']' >> ~/.zen/tmp/${MOATS}/${MOATS}.messaging.json
|
||||
echo "Creating messages In/Out JSON ~/.zen/tmp/${MOATS}/${MOATS}.messaging.json"
|
||||
echo '[' > ~/.zen/tmp/${MOATS}/${MOATS}.messaging.json
|
||||
cat ~/.zen/tmp/${MOATS}/messin.${G1PUB}.json >> ~/.zen/tmp/${MOATS}/${MOATS}.messaging.json
|
||||
echo "," >> ~/.zen/tmp/${MOATS}/${MOATS}.messaging.json
|
||||
cat ~/.zen/tmp/${MOATS}/messout.${G1PUB}.json >> ~/.zen/tmp/${MOATS}/${MOATS}.messaging.json
|
||||
echo ']' >> ~/.zen/tmp/${MOATS}/${MOATS}.messaging.json
|
||||
|
||||
## ADDING HTTP/1.1 PROTOCOL HEADER
|
||||
echo "$HTTPCORS" > ~/.zen/tmp/${MOATS}/${MOATS}.index.redirect
|
||||
sed -i "s~text/html~application/json~g" ~/.zen/tmp/${MOATS}/${MOATS}.index.redirect
|
||||
cat ~/.zen/tmp/${MOATS}/${MOATS}.messaging.json >> ~/.zen/tmp/${MOATS}/${MOATS}.index.redirect
|
||||
## ADDING HTTP/1.1 PROTOCOL HEADER
|
||||
echo "$HTTPCORS" > ~/.zen/tmp/${MOATS}/${MOATS}.index.redirect
|
||||
sed -i "s~text/html~application/json~g" ~/.zen/tmp/${MOATS}/${MOATS}.index.redirect
|
||||
cat ~/.zen/tmp/${MOATS}/${MOATS}.messaging.json >> ~/.zen/tmp/${MOATS}/${MOATS}.index.redirect
|
||||
|
||||
## SEND REPONSE PROCESS IN BACKGROUD
|
||||
( cat ~/.zen/tmp/${MOATS}/${MOATS}.index.redirect | nc -l -p ${PORT} -q 1 > /dev/null 2>&1 && rm ~/.zen/tmp/${MOATS}/${MOATS}* ) &
|
||||
#~ ( ## USING IPNS SESSION KEY
|
||||
#~ REPONSE=$(cat ~/.zen/tmp/${MOATS}/${MOATS}.messaging.json | ipfs add -q)
|
||||
#~ ipfs name publish --allow-offline --key=${PORT} /ipfs/$REPONSE
|
||||
#~ echo "SESSION ${myIPFS}/ipns/$SESSIONNS "
|
||||
#~ ) &
|
||||
## SEND REPONSE PROCESS IN BACKGROUD
|
||||
( cat ~/.zen/tmp/${MOATS}/${MOATS}.index.redirect | nc -l -p ${PORT} -q 1 > /dev/null 2>&1 && rm ~/.zen/tmp/${MOATS}/${MOATS}* ) &
|
||||
#~ ( ## USING IPNS SESSION KEY
|
||||
#~ REPONSE=$(cat ~/.zen/tmp/${MOATS}/${MOATS}.messaging.json | ipfs add -q)
|
||||
#~ ipfs name publish --allow-offline --key=${PORT} /ipfs/$REPONSE
|
||||
#~ echo "SESSION ${myIPFS}/ipns/$SESSIONNS "
|
||||
#~ ) &
|
||||
|
||||
end=`date +%s`
|
||||
dur=`expr $end - $start`
|
||||
echo ${MOATS}:${G1PUB}:${PLAYER}:${APPNAME}:$dur >> ~/.zen/tmp/${IPFSNODEID}/_timings
|
||||
cat ~/.zen/tmp/${IPFSNODEID}/_timings | tail -n 1
|
||||
end=`date +%s`
|
||||
dur=`expr $end - $start`
|
||||
echo ${MOATS}:${G1PUB}:${PLAYER}:${APPNAME}:$dur >> ~/.zen/tmp/${IPFSNODEID}/_timings
|
||||
cat ~/.zen/tmp/${IPFSNODEID}/_timings | tail -n 1
|
||||
|
||||
) & ## & SUB PROCESS
|
||||
) & ## & SUB PROCESS
|
||||
|
||||
end=`date +%s`
|
||||
echo " Messaging launch (☓‿‿☓) Execution time was "`expr $end - $start` seconds.
|
||||
exit 0
|
||||
fi
|
||||
######################## MESSAGING END
|
||||
end=`date +%s`
|
||||
echo " Messaging launch (☓‿‿☓) Execution time was "`expr $end - $start` seconds.
|
||||
exit 0
|
||||
fi
|
||||
######################## MESSAGING END
|
||||
|
||||
########################################
|
||||
# G1PUB : REDIRECT TO GCHANGE OR TW + EMAIL => CREATE PLAYER !
|
||||
########################################
|
||||
if [[ "$APPNAME" == "g1pub" ]]; then
|
||||
if [[ "$APPNAME" == "g1pub" ]]; then
|
||||
|
||||
if [[ "$OBJ" != "email" ]]; then
|
||||
## WITH NO EMAIL -> Open Gchange Profile & Update TW cache
|
||||
[[ ${WHAT} == "astro" ]] && REPLACE="https://$myTUBE/ipns/${ASTRONAUTENS}" \
|
||||
|| REPLACE="$myGCHANGE/#/app/user/${G1PUB}"
|
||||
echo ${REPLACE}
|
||||
if [[ "$OBJ" != "email" ]]; then
|
||||
## WITH NO EMAIL -> Open Gchange Profile & Update TW cache
|
||||
[[ ${WHAT} == "astro" ]] && REPLACE="https://$myTUBE/ipns/${ASTRONAUTENS}" \
|
||||
|| REPLACE="$myGCHANGE/#/app/user/${G1PUB}"
|
||||
echo ${REPLACE}
|
||||
|
||||
## REDIRECT TO TW OR GCHANGE PROFILE
|
||||
sed "s~_TWLINK_~${REPLACE}/~g" ~/.zen/Astroport.ONE/templates/index.302 > ~/.zen/tmp/${MOATS}/${MOATS}.index.redirect
|
||||
## USED BY https://git.p2p.legal/La_Bureautique/zeg1jeux/src/branch/main/lib/Fred.class.php#L81
|
||||
echo "url='"${REPLACE}"'" >> ~/.zen/tmp/${MOATS}/${MOATS}.index.redirect
|
||||
## REDIRECT TO TW OR GCHANGE PROFILE
|
||||
sed "s~_TWLINK_~${REPLACE}/~g" ~/.zen/Astroport.ONE/templates/index.302 > ~/.zen/tmp/${MOATS}/${MOATS}.index.redirect
|
||||
## USED BY https://git.p2p.legal/La_Bureautique/zeg1jeux/src/branch/main/lib/Fred.class.php#L81
|
||||
echo "url='"${REPLACE}"'" >> ~/.zen/tmp/${MOATS}/${MOATS}.index.redirect
|
||||
|
||||
### REPONSE=$(echo $myGCHANGE/#/app/user/${G1PUB}/ | ipfs add -q)
|
||||
### ipfs name publish --allow-offline --key=${PORT} /ipfs/$REPONSE
|
||||
### echo "SESSION ${myIPFS}/ipns/$SESSIONNS "
|
||||
(
|
||||
cat ~/.zen/tmp/${MOATS}/${MOATS}.index.redirect | nc -l -p ${PORT} -q 1 > /dev/null 2>&1
|
||||
${MY_PATH}/../tools/TW.cache.sh ${ASTRONAUTENS} ${MOATS}
|
||||
rm ~/.zen/tmp/${MOATS}/${MOATS}*
|
||||
) &
|
||||
end=`date +%s`
|
||||
echo $APPNAME" (0‿‿0) ${WHAT} Execution time was "`expr $end - $start` seconds.
|
||||
exit 0
|
||||
### REPONSE=$(echo $myGCHANGE/#/app/user/${G1PUB}/ | ipfs add -q)
|
||||
### ipfs name publish --allow-offline --key=${PORT} /ipfs/$REPONSE
|
||||
### echo "SESSION ${myIPFS}/ipns/$SESSIONNS "
|
||||
(
|
||||
cat ~/.zen/tmp/${MOATS}/${MOATS}.index.redirect | nc -l -p ${PORT} -q 1 > /dev/null 2>&1
|
||||
${MY_PATH}/../tools/TW.cache.sh ${ASTRONAUTENS} ${MOATS}
|
||||
rm ~/.zen/tmp/${MOATS}/${MOATS}*
|
||||
) &
|
||||
end=`date +%s`
|
||||
echo $APPNAME" (0‿‿0) ${WHAT} Execution time was "`expr $end - $start` seconds.
|
||||
exit 0
|
||||
|
||||
else
|
||||
else
|
||||
|
||||
# CREATE PLAYER : ?salt=PHRASE%20UNE&pepper=PHRASE%20DEUX&g1pub=on&email=EMAIL&pseudo=PROFILENAME
|
||||
# WHAT can contain urlencoded FullURL
|
||||
EMAIL="${VAL,,}" # lowercase
|
||||
# CREATE PLAYER : ?salt=PHRASE%20UNE&pepper=PHRASE%20DEUX&g1pub=on&email=EMAIL&pseudo=PROFILENAME
|
||||
# WHAT can contain urlencoded FullURL
|
||||
EMAIL="${VAL,,}" # lowercase
|
||||
|
||||
[[ ! ${EMAIL} ]] && (echo "$HTTPCORS ERROR - MISSING ${EMAIL} FOR ${WHAT} CONTACT" | nc -l -p ${PORT} -q 1 > /dev/null 2>&1 &) && echo "(☓‿‿☓) Execution time was "`expr $(date +%s) - $start` seconds. && exit 0
|
||||
|
||||
## CHECK WHAT IS EMAIL
|
||||
if [[ "${EMAIL}" =~ ^[a-zA-Z0-9.%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,4}$ ]]; then
|
||||
echo "VALID EMAIL OK"
|
||||
else
|
||||
echo "BAD EMAIL"
|
||||
(echo "$HTTPCORS KO ${EMAIL} : bad '" | nc -l -p ${PORT} -q 1 > /dev/null 2>&1 &) && exit 0
|
||||
fi
|
||||
|
||||
## CREATE PSEUDO FROM
|
||||
if [[ ! $PSEUDO ]]; then
|
||||
PSEUDO=$(echo ${EMAIL} | cut -d '@' -f 1)
|
||||
PSEUDO=${PSEUDO,,}; PSEUDO=${PSEUDO%%[0-9]*}${RANDOM:0:4}
|
||||
fi
|
||||
|
||||
if [[ ! -d ~/.zen/game/players/${EMAIL} ]]; then
|
||||
|
||||
echo "# ASTRONAUT NEW VISA Create VISA.new.sh in background (~/.zen/tmp/email.${EMAIL}.${MOATS}.txt)"
|
||||
|
||||
(
|
||||
startvisa=`date +%s`
|
||||
[[ "$SALT" == "0" && "$PEPPER" == "0" ]] && SALT="" && PEPPER="" # "0" "0" means random salt pepper
|
||||
#~ echo "VISA.new : \"$SALT\" \"$PEPPER\" \"${EMAIL}\" \"$PSEUDO\" \"${WHAT}\"" > ~/.zen/tmp/email.${EMAIL}.${MOATS}.txt
|
||||
${MY_PATH}/../RUNTIME/VISA.new.sh "$SALT" "$PEPPER" "${EMAIL}" "$PSEUDO" "${WHAT}" >> ~/.zen/tmp/email.${EMAIL}.${MOATS}.txt
|
||||
|
||||
${MY_PATH}/../tools/mailjet.sh "${EMAIL}" ~/.zen/tmp/email.${EMAIL}.${MOATS}.txt "LOG ZenCard creation" ## Send VISA.new log to EMAIL
|
||||
|
||||
echo "Le code de votre ASTROID est ${PASS}, scannez-le sur La♥Box ẐenStation (demo : https://astroport.copylaradio.com)" > ~/.zen/tmp/${MOATS}/intro.txt
|
||||
|
||||
## EXECUTE LAST LINE
|
||||
$(cat ~/.zen/tmp/email.${EMAIL}.${MOATS}.txt | tail -n 1)
|
||||
echo "export ASTROTW=/ipns/$ASTRONAUTENS ASTROG1=$G1PUB ASTROMAIL=$PLAYER ASTROFEED=$FEEDNS PASS=$PASS"
|
||||
|
||||
BILLETNAME=$(echo "$SALT" | sed 's/ /_/g')
|
||||
mpack -a -s "La♥Box : ASTROID :+: TW :+: " -d ~/.zen/tmp/${MOATS}/intro.txt \
|
||||
~/.zen/G1BILLET/tmp/g1billet/${PASS}/${BILLETNAME}.BILLET.jpg ${PLAYER}
|
||||
|
||||
end=`date +%s`
|
||||
dur=`expr $end - $startvisa`
|
||||
echo ${MOATS}:${G1PUB}:${PLAYER}:VISA:$dur >> ~/.zen/tmp/${IPFSNODEID}/_timings
|
||||
cat ~/.zen/tmp/${IPFSNODEID}/_timings | tail -n 1
|
||||
) &
|
||||
|
||||
echo "$HTTPCORS
|
||||
<meta http-equiv='refresh' content='30; url=\""${myIPFS}"/ipns/"${ASTRONAUTENS}"\"'/>
|
||||
<h1>ASTRONAUTE $PSEUDO</h1>
|
||||
<br>KEY : $SALT:$PEPPER:${EMAIL}
|
||||
<br>TW : ${myIPFS}/ipns/${ASTRONAUTENS}
|
||||
<br>STATION : ${myIPFS}/ipns/$IPFSNODEID<br><br>please wait....<br>
|
||||
export ASTROTW=/ipns/${ASTRONAUTENS} ASTROG1=${G1PUB} ASTROMAIL=${EMAIL} ASTROIPFS=${myIPFS}" | nc -l -p ${PORT} -q 1 > /dev/null 2>&1 &
|
||||
|
||||
exit 0
|
||||
|
||||
else
|
||||
|
||||
# ASTRONAUT EXISTING ${EMAIL}
|
||||
CHECK=$(cat ~/.zen/game/players/${EMAIL}/secret.june | grep -w "$SALT")
|
||||
[[ $CHECK ]] && CHECK=$(cat ~/.zen/game/players/${EMAIL}/secret.june | grep -w "$PEPPER")
|
||||
[[ ! $CHECK ]] && (echo "$HTTPCORS - WARNING - PLAYER ${EMAIL} ALREADY HERE" | nc -l -p ${PORT} -q 1 > /dev/null 2>&1 &) && echo "(☓‿‿☓) Execution time was "`expr $(date +%s) - $start` seconds. && exit 0
|
||||
|
||||
fi
|
||||
|
||||
###################################################################################################
|
||||
end=`date +%s`
|
||||
echo " (☓‿‿☓) Execution time was "`expr $end - $start` seconds.
|
||||
|
||||
fi
|
||||
[[ ! ${EMAIL} ]] && (echo "$HTTPCORS ERROR - MISSING ${EMAIL} FOR ${WHAT} CONTACT" | nc -l -p ${PORT} -q 1 > /dev/null 2>&1 &) && echo "(☓‿‿☓) Execution time was "`expr $(date +%s) - $start` seconds. && exit 0
|
||||
|
||||
## CHECK WHAT IS EMAIL
|
||||
if [[ "${EMAIL}" =~ ^[a-zA-Z0-9.%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,4}$ ]]; then
|
||||
echo "VALID EMAIL OK"
|
||||
else
|
||||
echo "BAD EMAIL"
|
||||
(echo "$HTTPCORS KO ${EMAIL} : bad '" | nc -l -p ${PORT} -q 1 > /dev/null 2>&1 &) && exit 0
|
||||
fi
|
||||
|
||||
## CREATE PSEUDO FROM
|
||||
if [[ ! $PSEUDO ]]; then
|
||||
PSEUDO=$(echo ${EMAIL} | cut -d '@' -f 1)
|
||||
PSEUDO=${PSEUDO,,}; PSEUDO=${PSEUDO%%[0-9]*}${RANDOM:0:4}
|
||||
fi
|
||||
|
||||
if [[ ! -d ~/.zen/game/players/${EMAIL} ]]; then
|
||||
|
||||
echo "# ASTRONAUT NEW VISA Create VISA.new.sh in background (~/.zen/tmp/email.${EMAIL}.${MOATS}.txt)"
|
||||
|
||||
(
|
||||
startvisa=`date +%s`
|
||||
[[ "$SALT" == "0" && "$PEPPER" == "0" ]] && SALT="" && PEPPER="" # "0" "0" means random salt pepper
|
||||
#~ echo "VISA.new : \"$SALT\" \"$PEPPER\" \"${EMAIL}\" \"$PSEUDO\" \"${WHAT}\"" > ~/.zen/tmp/email.${EMAIL}.${MOATS}.txt
|
||||
${MY_PATH}/../RUNTIME/VISA.new.sh "$SALT" "$PEPPER" "${EMAIL}" "$PSEUDO" "${WHAT}" >> ~/.zen/tmp/email.${EMAIL}.${MOATS}.txt
|
||||
|
||||
#~ ${MY_PATH}/../tools/mailjet.sh "${EMAIL}" ~/.zen/tmp/email.${EMAIL}.${MOATS}.txt "LOG ZenCard creation" ## Send VISA.new log to EMAIL
|
||||
|
||||
echo "ASTROID PIN=${PASS}, operate on all La♥Box Web3 ẐenStation (WWW : https://astroport.copylaradio.com)"
|
||||
## :: TRICK :: EXECUTE LAST VISA.new.sh output LINE : export above VARs
|
||||
$(cat ~/.zen/tmp/email.${EMAIL}.${MOATS}.txt | tail -n 1)
|
||||
echo "export ASTROTW=/ipns/$ASTRONAUTENS ASTROG1=$G1PUB ASTROMAIL=$PLAYER ASTROFEED=$FEEDNS PASS=$PASS"
|
||||
|
||||
BILLETNAME=$(echo "$SALT" | sed 's/ /_/g')
|
||||
#~ mpack -a -s "La♥Box : ASTROID :+: TW :+: " -d ~/.zen/tmp/${MOATS}/intro.txt \
|
||||
#~ ~/.zen/G1BILLET/tmp/g1billet/${PASS}/${BILLETNAME}.BILLET.jpg ${PLAYER}
|
||||
|
||||
end=`date +%s`
|
||||
dur=`expr $end - $startvisa`
|
||||
echo ${MOATS}:${G1PUB}:${PLAYER}:VISA:$dur >> ~/.zen/tmp/${IPFSNODEID}/_timings
|
||||
cat ~/.zen/tmp/${IPFSNODEID}/_timings | tail -n 1
|
||||
) &
|
||||
|
||||
echo "$HTTPCORS
|
||||
<meta http-equiv='refresh' content='30; url=\""${myIPFS}"/ipns/"${ASTRONAUTENS}"\"'/>
|
||||
<h1>ASTRONAUTE $PSEUDO</h1>
|
||||
<br>KEY : $SALT:$PEPPER:${EMAIL}
|
||||
<br>TW : ${myIPFS}/ipns/${ASTRONAUTENS}
|
||||
<br>STATION : ${myIPFS}/ipns/$IPFSNODEID<br><br>please wait....<br>
|
||||
export ASTROTW=/ipns/${ASTRONAUTENS} ASTROG1=${G1PUB} ASTROMAIL=${EMAIL} ASTROIPFS=${myIPFS}" | nc -l -p ${PORT} -q 1 > /dev/null 2>&1 &
|
||||
|
||||
exit 0
|
||||
|
||||
else
|
||||
|
||||
# ASTRONAUT EXISTING ${EMAIL}
|
||||
CHECK=$(cat ~/.zen/game/players/${EMAIL}/secret.june | grep -w "$SALT")
|
||||
[[ $CHECK ]] && CHECK=$(cat ~/.zen/game/players/${EMAIL}/secret.june | grep -w "$PEPPER")
|
||||
[[ ! $CHECK ]] && (echo "$HTTPCORS - WARNING - PLAYER ${EMAIL} ALREADY HERE" | nc -l -p ${PORT} -q 1 > /dev/null 2>&1 &) && echo "(☓‿‿☓) Execution time was "`expr $(date +%s) - $start` seconds. && exit 0
|
||||
|
||||
fi
|
||||
|
||||
###################################################################################################
|
||||
end=`date +%s`
|
||||
echo " (☓‿‿☓) Execution time was "`expr $end - $start` seconds.
|
||||
|
||||
fi
|
||||
|
||||
fi
|
||||
########################################
|
||||
|
||||
########################################
|
||||
|
@ -219,291 +222,294 @@ mkdir -p ~/.zen/tmp/${MOATS}/
|
|||
#TESTCRAFT=ON nodeid dataid
|
||||
########################################
|
||||
########################################
|
||||
if [[ "$APPNAME" == "testcraft" ]]; then
|
||||
if [[ "$APPNAME" == "testcraft" ]]; then
|
||||
|
||||
( # testcraft & SUB PROCESS
|
||||
( # testcraft & SUB PROCESS
|
||||
|
||||
start=`date +%s`
|
||||
## RECORD DATA MADE IN BROWSER (JSON)
|
||||
OBJID=$OBJ
|
||||
DATAID=$VAL
|
||||
start=`date +%s`
|
||||
## RECORD DATA MADE IN BROWSER (JSON)
|
||||
OBJID=$OBJ
|
||||
DATAID=$VAL
|
||||
|
||||
## export PLAYER
|
||||
${MY_PATH}/../tools/TW.cache.sh ${ASTRONAUTENS} ${MOATS}
|
||||
## export PLAYER
|
||||
${MY_PATH}/../tools/TW.cache.sh ${ASTRONAUTENS} ${MOATS}
|
||||
|
||||
## IS IT INDEX JSON
|
||||
echo "${PLAYER} $APPNAME IS ${WHAT}"
|
||||
mkdir -p ~/.zen/tmp/${IPFSNODEID}/${APPNAME}/${PLAYER}
|
||||
## IS IT INDEX JSON
|
||||
echo "${PLAYER} $APPNAME IS ${WHAT}"
|
||||
mkdir -p ~/.zen/tmp/${IPFSNODEID}/${APPNAME}/${PLAYER}
|
||||
|
||||
[[ $WHAT == "on" ]] && WHAT="json" # data mimetype (default "on" = json)
|
||||
[[ $WHAT == "on" ]] && WHAT="json" # data mimetype (default "on" = json)
|
||||
|
||||
## TODO : modify timeout if isLAN or NOT
|
||||
[[ $isLAN ]] && WAIT=3 || WAIT=12
|
||||
echo "1ST TRY : ipfs --timeout ${WAIT}s cat /ipfs/$DATAID > ~/.zen/tmp/${IPFSNODEID}/${APPNAME}/${PLAYER}/${MOATS}.data.${WHAT}"
|
||||
ipfs --timeout ${WAIT}s cat /ipfs/$DATAID > ~/.zen/tmp/${IPFSNODEID}/${APPNAME}/${PLAYER}/${MOATS}.data.${WHAT}
|
||||
## TODO : modify timeout if isLAN or NOT
|
||||
[[ $isLAN ]] && WAIT=3 || WAIT=12
|
||||
echo "1ST TRY : ipfs --timeout ${WAIT}s cat --progress=false /ipfs/$DATAID > ~/.zen/tmp/${IPFSNODEID}/${APPNAME}/${PLAYER}/${MOATS}.data.${WHAT}"
|
||||
ipfs --timeout ${WAIT}s cat --progress=false /ipfs/$DATAID > ~/.zen/tmp/${IPFSNODEID}/${APPNAME}/${PLAYER}/${MOATS}.data.${WHAT}
|
||||
|
||||
echo "" > ~/.zen/tmp/.ipfsgw.bad.twt # TODO move in 20h12.sh
|
||||
|
||||
if [[ ! -s ~/.zen/tmp/${IPFSNODEID}/${APPNAME}/${PLAYER}/${MOATS}.data.${WHAT} ]]; then
|
||||
if [[ ! -s ~/.zen/tmp/${IPFSNODEID}/${APPNAME}/${PLAYER}/${MOATS}.data.${WHAT} ]]; then
|
||||
|
||||
echo "IPFS TIMEOUT >>> (°▃▃°) $DATAID STILL MISSING GATEWAY BANGING FOR IT (°▃▃°)"
|
||||
array=(${myIPFSGW}/ipfs/:hash https://ipns.co/:hash https://dweb.link/ipfs/:hash https://ipfs.io/ipfs/:hash https://ipfs.fleek.co/ipfs/:hash https://ipfs.best-practice.se/ipfs/:hash https://gateway.pinata.cloud/ipfs/:hash https://gateway.ipfs.io/ipfs/:hash https://cf-ipfs.com/ipfs/:hash https://cloudflare-ipfs.com/ipfs/:hash)
|
||||
# size=${#array[@]}; index=$(($RANDOM % $size)); echo ${array[$index]} ## TODO CHOOSE RANDOM
|
||||
echo "IPFS TIMEOUT >>> (°▃▃°) $DATAID STILL MISSING GATEWAY BANGING FOR IT (°▃▃°)"
|
||||
array=(${myIPFSGW}/ipfs/:hash https://ipns.co/:hash https://dweb.link/ipfs/:hash https://ipfs.io/ipfs/:hash https://ipfs.fleek.co/ipfs/:hash https://ipfs.best-practice.se/ipfs/:hash https://gateway.pinata.cloud/ipfs/:hash https://gateway.ipfs.io/ipfs/:hash https://cf-ipfs.com/ipfs/:hash https://cloudflare-ipfs.com/ipfs/:hash)
|
||||
# size=${#array[@]}; index=$(($RANDOM % $size)); echo ${array[$index]} ## TODO CHOOSE RANDOM
|
||||
|
||||
# official ipfs best gateway from https://luke.lol/ipfs.php
|
||||
for nicegw in ${array[@]}; do
|
||||
# official ipfs best gateway from https://luke.lol/ipfs.php
|
||||
for nicegw in ${array[@]}; do
|
||||
|
||||
[[ $(cat ~/.zen/tmp/.ipfsgw.bad.twt | grep -w $nicegw) ]] && echo "<<< BAD GATEWAY >>> $nicegw" && exit 0
|
||||
gum=$(echo "$nicegw" | sed "s~:hash~$DATAID~g")
|
||||
echo "LOADING $gum"
|
||||
curl -m 5 -so ~/.zen/tmp/${IPFSNODEID}/${APPNAME}/${PLAYER}/${MOATS}.data.${WHAT} "$gum"
|
||||
[[ $? != 0 ]] && echo "(✜‿‿✜) BYPASSING"
|
||||
[[ $(cat ~/.zen/tmp/.ipfsgw.bad.twt | grep -w $nicegw) ]] && echo "<<< BAD GATEWAY >>> $nicegw" && exit 0
|
||||
gum=$(echo "$nicegw" | sed "s~:hash~$DATAID~g")
|
||||
echo "LOADING $gum"
|
||||
curl -m 5 -so ~/.zen/tmp/${IPFSNODEID}/${APPNAME}/${PLAYER}/${MOATS}.data.${WHAT} "$gum"
|
||||
[[ $? != 0 ]] && echo "(✜‿‿✜) BYPASSING"
|
||||
|
||||
if [[ -s ~/.zen/tmp/${IPFSNODEID}/${APPNAME}/${PLAYER}/${MOATS}.data.${WHAT} ]]; then
|
||||
if [[ -s ~/.zen/tmp/${IPFSNODEID}/${APPNAME}/${PLAYER}/${MOATS}.data.${WHAT} ]]; then
|
||||
|
||||
MIME=$(mimetype -b ~/.zen/tmp/${IPFSNODEID}/${APPNAME}/${PLAYER}/${MOATS}.data.${WHAT})
|
||||
GOAL=$(ipfs add -q ~/.zen/tmp/${IPFSNODEID}/${APPNAME}/${PLAYER}/${MOATS}.data.${WHAT})
|
||||
MIME=$(mimetype -b ~/.zen/tmp/${IPFSNODEID}/${APPNAME}/${PLAYER}/${MOATS}.data.${WHAT})
|
||||
GOAL=$(ipfs add -q ~/.zen/tmp/${IPFSNODEID}/${APPNAME}/${PLAYER}/${MOATS}.data.${WHAT})
|
||||
|
||||
if [[ ${GOAL} != ${DATAID} ]]; then
|
||||
echo " (╥☁╥ ) - BAD ${WHAT} FORMAT ERROR ${MIME} - (╥☁╥ )"
|
||||
ipfs pin rm /ipfs/${GOAL}
|
||||
rm ~/.zen/tmp/${IPFSNODEID}/${APPNAME}/${PLAYER}/${MOATS}.data.${WHAT}
|
||||
# NOT A JSON AVOID BANISHMENT
|
||||
echo $nicegw >> ~/.zen/tmp/.ipfsgw.bad.twt
|
||||
exit 0
|
||||
if [[ ${GOAL} != ${DATAID} ]]; then
|
||||
echo " (╥☁╥ ) - BAD ${WHAT} FORMAT ERROR ${MIME} - (╥☁╥ )"
|
||||
ipfs pin rm /ipfs/${GOAL}
|
||||
rm ~/.zen/tmp/${IPFSNODEID}/${APPNAME}/${PLAYER}/${MOATS}.data.${WHAT}
|
||||
# NOT A JSON AVOID BANISHMENT
|
||||
echo $nicegw >> ~/.zen/tmp/.ipfsgw.bad.twt
|
||||
exit 0
|
||||
|
||||
else
|
||||
## GOT IT !! IPFS ADD
|
||||
ipfs pin add /ipfs/${GOAL}
|
||||
## + TW ADD (new_file_in_astroport.sh)
|
||||
else
|
||||
## GOT IT !! IPFS ADD
|
||||
ipfs pin add /ipfs/${GOAL}
|
||||
## + TW ADD (new_file_in_astroport.sh)
|
||||
|
||||
echo "(♥‿‿♥) FILE UPLOAD OK"; echo
|
||||
break
|
||||
echo "(♥‿‿♥) FILE UPLOAD OK"; echo
|
||||
break
|
||||
|
||||
fi
|
||||
fi
|
||||
|
||||
else
|
||||
else
|
||||
|
||||
echo " (⇀‿‿↼) - NO FILE - (⇀‿‿↼)"
|
||||
exit 0
|
||||
echo " (⇀‿‿↼) - NO FILE - (⇀‿‿↼)"
|
||||
exit 0
|
||||
|
||||
fi
|
||||
fi
|
||||
|
||||
done
|
||||
done
|
||||
|
||||
fi ## NO DIRECT IPFS - GATEWAY TRY
|
||||
fi ## NO DIRECT IPFS - GATEWAY TRY
|
||||
|
||||
## REALLY NO FILE FOUND !!!
|
||||
[[ ! -s ~/.zen/tmp/${IPFSNODEID}/${APPNAME}/${PLAYER}/${MOATS}.data.${WHAT} ]] && \
|
||||
echo "$HTTPCORS ERROR (╥☁╥ ) - $DATAID TIMEOUT - (╥☁╥ )" | nc -l -p ${PORT} -q 1 > /dev/null 2>&1 &
|
||||
## REALLY NO FILE FOUND !!!
|
||||
[[ ! -s ~/.zen/tmp/${IPFSNODEID}/${APPNAME}/${PLAYER}/${MOATS}.data.${WHAT} ]] && \
|
||||
echo "$HTTPCORS ERROR (╥☁╥ ) - $DATAID TIMEOUT - (╥☁╥ )" | nc -l -p ${PORT} -q 1 > /dev/null 2>&1 &
|
||||
|
||||
## SPECIAL index.[json/html/...] MODE.
|
||||
[[ ${WHAT} == "index" ]] && cp ~/.zen/tmp/${IPFSNODEID}/${APPNAME}/${PLAYER}/${MOATS}.data.${WHAT} ~/.zen/tmp/${IPFSNODEID}/${APPNAME}/${PLAYER}/index.json
|
||||
## SPECIAL index.[json/html/...] MODE.
|
||||
[[ ${WHAT} == "index" ]] && cp ~/.zen/tmp/${IPFSNODEID}/${APPNAME}/${PLAYER}/${MOATS}.data.${WHAT} ~/.zen/tmp/${IPFSNODEID}/${APPNAME}/${PLAYER}/index.json
|
||||
## TODO MAKE MULTIFORMAT DATA & INDEX
|
||||
# RWHAT=$(echo "$WHAT" | cut -d '.' -f 1)
|
||||
# TWHAT=$(echo "$WHAT" | cut -d '.' -f 2)
|
||||
# cp ~/.zen/tmp/${IPFSNODEID}/${APPNAME}/${PLAYER}/${MOATS}.data.${WHAT} ~/.zen/tmp/${IPFSNODEID}/${APPNAME}/${RWHAT}.${TWHAT}
|
||||
|
||||
## REPONSE ON PORT
|
||||
echo "$HTTPCORS" > ~/.zen/tmp/${MOATS}/${MOATS}.index.redirect
|
||||
sed -i "s~text/html~application/json~g" ~/.zen/tmp/${MOATS}/${MOATS}.index.redirect
|
||||
cat ~/.zen/tmp/${IPFSNODEID}/${APPNAME}/${PLAYER}/${MOATS}.data.${WHAT} >> ~/.zen/tmp/${MOATS}/${MOATS}.index.redirect
|
||||
## REPONSE ON PORT
|
||||
echo "$HTTPCORS" > ~/.zen/tmp/${MOATS}/${MOATS}.index.redirect
|
||||
sed -i "s~text/html~application/json~g" ~/.zen/tmp/${MOATS}/${MOATS}.index.redirect
|
||||
cat ~/.zen/tmp/${IPFSNODEID}/${APPNAME}/${PLAYER}/${MOATS}.data.${WHAT} >> ~/.zen/tmp/${MOATS}/${MOATS}.index.redirect
|
||||
|
||||
(cat ~/.zen/tmp/${MOATS}/${MOATS}.index.redirect | nc -l -p ${PORT} -q 1 > /dev/null 2>&1 && rm ~/.zen/tmp/${MOATS}/${MOATS}.* ) &
|
||||
|
||||
## REPONSE ON IPFSNODEID
|
||||
(
|
||||
start=`date +%s`
|
||||
echo "¯\_༼<O͡〰o>༽_/¯ $IPFSNODEID $PLAYER SIGNALING"
|
||||
ROUTING=$(ipfs add -rwq ~/.zen/tmp/${IPFSNODEID}/* | tail -n 1 )
|
||||
ipfs name publish /ipfs/$ROUTING
|
||||
echo "DONE"
|
||||
end=`date +%s`
|
||||
dur=`expr $end - $start`
|
||||
echo ${MOATS}:${G1PUB}:${PLAYER}:SELF:$dur >> ~/.zen/tmp/${IPFSNODEID}/_timings
|
||||
cat ~/.zen/tmp/${IPFSNODEID}/_timings | tail -n 1
|
||||
) &
|
||||
(cat ~/.zen/tmp/${MOATS}/${MOATS}.index.redirect | nc -l -p ${PORT} -q 1 > /dev/null 2>&1 && rm ~/.zen/tmp/${MOATS}/${MOATS}.* ) &
|
||||
|
||||
## REPONSE ON IPFSNODEID
|
||||
(
|
||||
start=`date +%s`
|
||||
echo "¯\_༼<O͡〰o>༽_/¯ $IPFSNODEID $PLAYER SIGNALING"
|
||||
ROUTING=$(ipfs add -rwq ~/.zen/tmp/${IPFSNODEID}/* | tail -n 1 )
|
||||
ipfs name publish /ipfs/$ROUTING
|
||||
echo "DONE"
|
||||
end=`date +%s`
|
||||
dur=`expr $end - $start`
|
||||
echo ${MOATS}:${G1PUB}:${PLAYER}:${APPNAME}:$dur >> ~/.zen/tmp/${IPFSNODEID}/_timings
|
||||
echo ${MOATS}:${G1PUB}:${PLAYER}:SELF:$dur >> ~/.zen/tmp/${IPFSNODEID}/_timings
|
||||
cat ~/.zen/tmp/${IPFSNODEID}/_timings | tail -n 1
|
||||
) &
|
||||
|
||||
) & # testcraft & SUB PROCESS
|
||||
end=`date +%s`
|
||||
dur=`expr $end - $start`
|
||||
echo ${MOATS}:${G1PUB}:${PLAYER}:${APPNAME}:$dur >> ~/.zen/tmp/${IPFSNODEID}/_timings
|
||||
cat ~/.zen/tmp/${IPFSNODEID}/_timings | tail -n 1
|
||||
|
||||
end=`date +%s`
|
||||
echo "(☓‿‿☓) Execution time was "`expr $end - $start` seconds.
|
||||
exit 0
|
||||
fi
|
||||
) & # testcraft & SUB PROCESS
|
||||
|
||||
end=`date +%s`
|
||||
echo "(☓‿‿☓) Execution time was "`expr $end - $start` seconds.
|
||||
exit 0
|
||||
fi
|
||||
|
||||
##############################################
|
||||
# PAY : /?salt=SALT&pepper=PEPPER&pay=1&dest=G1PUB APPNAME=$5 WHAT=$6 OBJ=$7 VAL=$8 MOATS=$9
|
||||
##############################################
|
||||
if [[ $APPNAME == "pay" ]]; then
|
||||
(
|
||||
echo "$HTTPCORS" > ~/.zen/tmp/$PLAYER.pay.$WHAT.http
|
||||
if [[ $APPNAME == "pay" ]]; then
|
||||
(
|
||||
echo "$HTTPCORS" > ~/.zen/tmp/$PLAYER.pay.$WHAT.http
|
||||
|
||||
if [[ $WHAT =~ ^[0-9]+$ ]]; then
|
||||
if [[ $WHAT =~ ^[0-9]+$ ]]; then
|
||||
|
||||
echo "${MY_PATH}/../tools/PAY4SURE.sh ~/.zen/tmp/${MOATS}/${MOATS}.secret.key pay -a ${WHAT} -p ${VAL} -c 'Bro'"
|
||||
${MY_PATH}/../tools/PAY4SURE.sh "${HOME}/.zen/tmp/${MOATS}/${MOATS}.secret.key" "${WHAT}" "${VAL}" "Bro"
|
||||
echo "PAY4SURE " >> ~/.zen/tmp/$PLAYER.pay.$WHAT.http
|
||||
echo "${MY_PATH}/../tools/PAY4SURE.sh ~/.zen/tmp/${MOATS}/${MOATS}.secret.key pay -a ${WHAT} -p ${VAL} -c 'Bro'"
|
||||
${MY_PATH}/../tools/PAY4SURE.sh "${HOME}/.zen/tmp/${MOATS}/${MOATS}.secret.key" "${WHAT}" "${VAL}" "Bro"
|
||||
echo "PAY4SURE " >> ~/.zen/tmp/$PLAYER.pay.$WHAT.http
|
||||
|
||||
fi
|
||||
fi
|
||||
|
||||
if [[ "$WHAT" == "history" ]]; then
|
||||
sed -i "s~text/html~application/json~g" ~/.zen/tmp/$PLAYER.pay.$WHAT.http
|
||||
~/.zen/Astroport.ONE/tools/timeout.sh -t 20 \
|
||||
${MY_PATH}/../tools/jaklis/jaklis.py -k ~/.zen/tmp/${MOATS}/${MOATS}.secret.key history -j >> ~/.zen/tmp/$PLAYER.pay.$WHAT.http
|
||||
fi
|
||||
if [[ "$WHAT" == "history" ]]; then
|
||||
sed -i "s~text/html~application/json~g" ~/.zen/tmp/$PLAYER.pay.$WHAT.http
|
||||
~/.zen/Astroport.ONE/tools/timeout.sh -t 20 \
|
||||
${MY_PATH}/../tools/jaklis/jaklis.py -k ~/.zen/tmp/${MOATS}/${MOATS}.secret.key history -j >> ~/.zen/tmp/$PLAYER.pay.$WHAT.http
|
||||
fi
|
||||
|
||||
if [[ "$WHAT" == "get" ]]; then
|
||||
sed -i "s~text/html~application/json~g" ~/.zen/tmp/$PLAYER.pay.$WHAT.http
|
||||
~/.zen/Astroport.ONE/tools/timeout.sh -t 20 \
|
||||
${MY_PATH}/../tools/jaklis/jaklis.py -k ~/.zen/tmp/${MOATS}/${MOATS}.secret.key get >> ~/.zen/tmp/$PLAYER.pay.$WHAT.http
|
||||
fi
|
||||
if [[ "$WHAT" == "get" ]]; then
|
||||
sed -i "s~text/html~application/json~g" ~/.zen/tmp/$PLAYER.pay.$WHAT.http
|
||||
~/.zen/Astroport.ONE/tools/timeout.sh -t 20 \
|
||||
${MY_PATH}/../tools/jaklis/jaklis.py -k ~/.zen/tmp/${MOATS}/${MOATS}.secret.key get >> ~/.zen/tmp/$PLAYER.pay.$WHAT.http
|
||||
fi
|
||||
|
||||
if [[ "$WHAT" == "balance" ]]; then
|
||||
~/.zen/Astroport.ONE/tools/timeout.sh -t 20 \
|
||||
${MY_PATH}/../tools/jaklis/jaklis.py -k ~/.zen/tmp/${MOATS}/${MOATS}.secret.key balance >> ~/.zen/tmp/$PLAYER.pay.$WHAT.http
|
||||
fi
|
||||
if [[ "$WHAT" == "balance" ]]; then
|
||||
~/.zen/Astroport.ONE/tools/timeout.sh -t 20 \
|
||||
${MY_PATH}/../tools/jaklis/jaklis.py -k ~/.zen/tmp/${MOATS}/${MOATS}.secret.key balance >> ~/.zen/tmp/$PLAYER.pay.$WHAT.http
|
||||
fi
|
||||
|
||||
cat ~/.zen/tmp/$PLAYER.pay.$WHAT.http
|
||||
(cat ~/.zen/tmp/$PLAYER.pay.$WHAT.http | nc -l -p ${PORT} -q 1 > /dev/null 2>&1 && rm ~/.zen/tmp/$PLAYER.pay.$WHAT.http ) &
|
||||
end=`date +%s`
|
||||
echo "(G_G ) G1BANK Operation time was "`expr $end - $start` seconds.
|
||||
exit 0
|
||||
) &
|
||||
fi
|
||||
cat ~/.zen/tmp/$PLAYER.pay.$WHAT.http
|
||||
(cat ~/.zen/tmp/$PLAYER.pay.$WHAT.http | nc -l -p ${PORT} -q 1 > /dev/null 2>&1 && rm ~/.zen/tmp/$PLAYER.pay.$WHAT.http ) &
|
||||
end=`date +%s`
|
||||
echo "(G_G ) G1BANK Operation time was "`expr $end - $start` seconds.
|
||||
exit 0
|
||||
) &
|
||||
fi
|
||||
|
||||
##############################################
|
||||
# FRIEND ★ &friend=G1PUB&stars=1 // APPNAME=$5 WHAT=$6 OBJ=$7 VAL=$8 MOATS=$9
|
||||
##############################################
|
||||
if [[ $APPNAME == "friend" ]]; then
|
||||
if [[ $APPNAME == "friend" ]]; then
|
||||
|
||||
## CHECK IF ASKING FRIEND TW EXISTS
|
||||
#~ ipfs --timeout 60s ls /ipns/${ASTRONAUTENS}
|
||||
#~ [ $? != 0 ] && echo "BAD VISITOR" && exit 0
|
||||
## CHECK IF ASKING FRIEND TW EXISTS
|
||||
#~ ipfs --timeout 60s ls /ipns/${ASTRONAUTENS}
|
||||
#~ [ $? != 0 ] && echo "BAD VISITOR" && exit 0
|
||||
|
||||
g1friend=${WHAT}
|
||||
stars=${VAL:-1} // Default 1 ★
|
||||
g1friend=${WHAT}
|
||||
stars=${VAL:-1} // Default 1 ★
|
||||
|
||||
$MY_PATH/../tools/jaklis/jaklis.py -k ~/.zen/tmp/${MOATS}/${MOATS}.secret.key stars -p $g1friend -n $stars > ~/.zen/tmp/${MOATS}/${MOATS}.log
|
||||
$MY_PATH/../tools/jaklis/jaklis.py -k ~/.zen/tmp/${MOATS}/${MOATS}.secret.key stars -p $g1friend -n $stars > ~/.zen/tmp/${MOATS}/${MOATS}.log
|
||||
|
||||
(
|
||||
echo "$HTTPCORS $(cat ~/.zen/tmp/${MOATS}/${MOATS}.log)"| nc -l -p ${PORT} -q 1 > /dev/null 2>&1
|
||||
) &
|
||||
(
|
||||
echo "$HTTPCORS $(cat ~/.zen/tmp/${MOATS}/${MOATS}.log)"| nc -l -p ${PORT} -q 1 > /dev/null 2>&1
|
||||
) &
|
||||
|
||||
rm ~/.zen/tmp/${MOATS}/${MOATS}.*
|
||||
end=`date +%s`
|
||||
echo $APPNAME "(☉_☉ ) ${MESTAR} Execution time was "`expr $end - $start` seconds.
|
||||
exit 0
|
||||
fi
|
||||
rm ~/.zen/tmp/${MOATS}/${MOATS}.*
|
||||
end=`date +%s`
|
||||
echo $APPNAME "(☉_☉ ) ${MESTAR} Execution time was "`expr $end - $start` seconds.
|
||||
exit 0
|
||||
fi
|
||||
|
||||
|
||||
##############################################
|
||||
# GETIPNS
|
||||
##############################################
|
||||
if [[ $APPNAME == "getipns" ]]; then
|
||||
( echo "$HTTPCORS
|
||||
url='"${ASTRONAUTENS}"'" | nc -l -p ${PORT} -q 1 > /dev/null 2>&1 && echo "SLURP getipns : ${ASTRONAUTENS}" ) &
|
||||
end=`date +%s`
|
||||
echo $APPNAME "(☉_☉ ) /ipns/${ASTRONAUTENS} Execution time was "`expr $end - $start` seconds.
|
||||
rm ~/.zen/tmp/${MOATS}/${MOATS}.*
|
||||
exit 0
|
||||
fi
|
||||
if [[ $APPNAME == "getipns" ]]; then
|
||||
( echo "$HTTPCORS
|
||||
url='"${ASTRONAUTENS}"'" | nc -l -p ${PORT} -q 1 > /dev/null 2>&1 && echo "SLURP getipns : ${ASTRONAUTENS}" ) &
|
||||
end=`date +%s`
|
||||
echo $APPNAME "(☉_☉ ) /ipns/${ASTRONAUTENS} Execution time was "`expr $end - $start` seconds.
|
||||
rm ~/.zen/tmp/${MOATS}/${MOATS}.*
|
||||
exit 0
|
||||
fi
|
||||
|
||||
##############################################
|
||||
# GETG1PUB
|
||||
##############################################
|
||||
if [[ $APPNAME == "getg1pub" ]]; then
|
||||
(
|
||||
echo "$HTTPCORS
|
||||
url='"${G1PUB}"'" | nc -l -p ${PORT} -q 1 > /dev/null 2>&1 && echo "SLURP getg1pub : ${G1PUB}"
|
||||
echo "BLURP ${PORT}"
|
||||
) &
|
||||
end=`date +%s`
|
||||
echo $APPNAME "(☉_☉ ) /ipns/${ASTRONAUTENS} Execution time was "`expr $end - $start` seconds.
|
||||
rm ~/.zen/tmp/${MOATS}/${MOATS}*
|
||||
exit 0
|
||||
fi
|
||||
if [[ $APPNAME == "getg1pub" ]]; then
|
||||
(
|
||||
echo "$HTTPCORS
|
||||
url='"${G1PUB}"'" | nc -l -p ${PORT} -q 1 > /dev/null 2>&1 && echo "SLURP getg1pub : ${G1PUB}"
|
||||
echo "BLURP ${PORT}"
|
||||
) &
|
||||
end=`date +%s`
|
||||
echo $APPNAME "(☉_☉ ) /ipns/${ASTRONAUTENS} Execution time was "`expr $end - $start` seconds.
|
||||
rm ~/.zen/tmp/${MOATS}/${MOATS}*
|
||||
exit 0
|
||||
fi
|
||||
|
||||
##############################################
|
||||
# LOGIN
|
||||
##############################################
|
||||
if [[ $APPNAME == "login" ]]; then
|
||||
if [[ $APPNAME == "login" ]]; then
|
||||
|
||||
## INSTALL PLAYER IPNS KEY ON STATION
|
||||
[[ "${SALT}" =~ ^[a-zA-Z0-9.%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,4}$ ]] \
|
||||
&& PLAYER=${SALT} \
|
||||
|| PLAYER=${WHAT}
|
||||
## INSTALL PLAYER IPNS KEY ON STATION
|
||||
[[ "${SALT}" =~ ^[a-zA-Z0-9.%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,4}$ ]] \
|
||||
&& PLAYER=${SALT} \
|
||||
|| PLAYER=${WHAT}
|
||||
|
||||
ipfs key import ${PLAYER} -f pem-pkcs8-cleartext ~/.zen/tmp/${MOATS}/${MOATS}.${G1PUB}.ipns.key
|
||||
ASTRONAUTENS=$(ipfs key list -l | grep -w $PLAYER | cut -d ' ' -f1)
|
||||
ipfs key import ${PLAYER} -f pem-pkcs8-cleartext ~/.zen/tmp/${MOATS}/${MOATS}.${G1PUB}.ipns.key
|
||||
ASTRONAUTENS=$(ipfs key list -l | grep -w $PLAYER | cut -d ' ' -f1)
|
||||
|
||||
#~ WSTATION=$(cat ~/.zen/tmp/WSTATION 2>/dev/null)
|
||||
#~ [[ $WSTATION != "" ]] \
|
||||
#~ && REPLACE=${myIPFS}${WSTATION} \
|
||||
#~ || REPLACE=${myIPFS}/ipns/${ASTRONAUTENS}
|
||||
#~ WSTATION=$(cat ~/.zen/tmp/WSTATION 2>/dev/null)
|
||||
#~ [[ $WSTATION != "" ]] \
|
||||
#~ && REPLACE=${myIPFS}${WSTATION} \
|
||||
#~ || REPLACE=${myIPFS}/ipns/${ASTRONAUTENS}
|
||||
|
||||
REPLACE=${myIPFS}/ipns/${ASTRONAUTENS}
|
||||
REPLACE=${myIPFS}/ipns/${ASTRONAUTENS}
|
||||
|
||||
USALT=$(echo "$SALT" | jq -Rr @uri)
|
||||
UPEPPER=$(echo "$PEPPER" | jq -Rr @uri)
|
||||
echo "/?salt=${USALT}&pepper=${UPEPPER} IS LOGIN - OPEN TW -"
|
||||
sed "s~_TWLINK_~${REPLACE}~g" ~/.zen/Astroport.ONE/templates/index.302 > ~/.zen/tmp/${MOATS}/${MOATS}.index.redirect
|
||||
## SET COOKIE
|
||||
#~ sed -i "s~_USALT_~${USALT}~g" ~/.zen/tmp/${MOATS}/${MOATS}.index.redirect
|
||||
#~ sed -i "s~_UPEPPER_~${UPEPPER}~g" ~/.zen/tmp/${MOATS}/${MOATS}.index.redirect
|
||||
echo "url='"${REPLACE}"'" >> ~/.zen/tmp/${MOATS}/${MOATS}.index.redirect
|
||||
(
|
||||
cat ~/.zen/tmp/${MOATS}/${MOATS}.index.redirect | nc -l -p ${PORT} -q 1 > /dev/null 2>&1
|
||||
echo "BLURP ${PORT}"
|
||||
) &
|
||||
rm ~/.zen/tmp/${MOATS}/${MOATS}*
|
||||
end=`date +%s`
|
||||
echo $APPNAME "(☉_☉ ) Execution time was "`expr $end - $start` seconds.
|
||||
exit 0
|
||||
USALT=$(echo "$SALT" | jq -Rr @uri)
|
||||
UPEPPER=$(echo "$PEPPER" | jq -Rr @uri)
|
||||
echo "/?salt=${USALT}&pepper=${UPEPPER} IS LOGIN - OPEN TW -"
|
||||
sed "s~_TWLINK_~${REPLACE}~g" ~/.zen/Astroport.ONE/templates/index.302 > ~/.zen/tmp/${MOATS}/${MOATS}.index.redirect
|
||||
## SET COOKIE
|
||||
#~ sed -i "s~_USALT_~${USALT}~g" ~/.zen/tmp/${MOATS}/${MOATS}.index.redirect
|
||||
#~ sed -i "s~_UPEPPER_~${UPEPPER}~g" ~/.zen/tmp/${MOATS}/${MOATS}.index.redirect
|
||||
echo "url='"${REPLACE}"'" >> ~/.zen/tmp/${MOATS}/${MOATS}.index.redirect
|
||||
(
|
||||
cat ~/.zen/tmp/${MOATS}/${MOATS}.index.redirect | nc -l -p ${PORT} -q 1 > /dev/null 2>&1
|
||||
echo "BLURP ${PORT}"
|
||||
) &
|
||||
rm ~/.zen/tmp/${MOATS}/${MOATS}*
|
||||
end=`date +%s`
|
||||
echo $APPNAME "(☉_☉ ) Execution time was "`expr $end - $start` seconds.
|
||||
exit 0
|
||||
|
||||
fi
|
||||
fi
|
||||
|
||||
##############################################
|
||||
# LOGOUT
|
||||
##############################################
|
||||
if [[ $APPNAME == "logout" ]]; then
|
||||
if [[ $APPNAME == "logout" ]]; then
|
||||
|
||||
## REMOVE PLAYER IPNS KEY FROM STATION
|
||||
[[ "${SALT}" =~ ^[a-zA-Z0-9.%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,4}$ ]] \
|
||||
&& PLAYER=${SALT} \
|
||||
|| PLAYER=${WHAT}
|
||||
## REMOVE PLAYER IPNS KEY FROM STATION
|
||||
[[ "${SALT}" =~ ^[a-zA-Z0-9.%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,4}$ ]] \
|
||||
&& PLAYER=${SALT} \
|
||||
|| PLAYER=${WHAT}
|
||||
|
||||
echo "<h1>$PLAYER LOGOUT OK</h1>" > ~/.zen/tmp/${MOATS}/${MOATS}.log
|
||||
echo "<h1>$PLAYER LOGOUT OK</h1>" > ~/.zen/tmp/${MOATS}/${MOATS}.log
|
||||
|
||||
ipfs key rm ${G1PUB} >> ~/.zen/tmp/${MOATS}/${MOATS}.log
|
||||
ipfs key rm ${PLAYER} >> ~/.zen/tmp/${MOATS}/${MOATS}.log
|
||||
ipfs key rm ${G1PUB} >> ~/.zen/tmp/${MOATS}/${MOATS}.log
|
||||
ipfs key rm ${PLAYER} >> ~/.zen/tmp/${MOATS}/${MOATS}.log
|
||||
|
||||
echo "$HTTPCORS $(cat ~/.zen/tmp/${MOATS}/${MOATS}.log)"| nc -l -p ${PORT} -q 1 > /dev/null 2>&1 &
|
||||
end=`date +%s`
|
||||
echo $APPNAME "(☉_☉ ) Execution time was "`expr $end - $start` seconds.
|
||||
rm ~/.zen/tmp/${MOATS}/${MOATS}.*
|
||||
exit 0
|
||||
echo "$HTTPCORS $(cat ~/.zen/tmp/${MOATS}/${MOATS}.log)"| nc -l -p ${PORT} -q 1 > /dev/null 2>&1 &
|
||||
end=`date +%s`
|
||||
echo $APPNAME "(☉_☉ ) Execution time was "`expr $end - $start` seconds.
|
||||
rm ~/.zen/tmp/${MOATS}/${MOATS}.*
|
||||
exit 0
|
||||
|
||||
fi
|
||||
fi
|
||||
|
||||
|
||||
###################################################################################################
|
||||
###################################################################################################
|
||||
###################################################################################################
|
||||
###################################################################################################
|
||||
|
||||
|
||||
|
||||
## END RESPONDING
|
||||
[[ ! -s ~/.zen/tmp/${MOATS}/${MOATS}.index.redirect ]] && echo "$HTTPCORS PORT=$1 THAT=$2 AND=$3 THIS=$4 APPNAME=$5 WHAT=$6 OBJ=$7 VAL=$8 MOATS=$9 url=/user/$G1PUB" > ~/.zen/tmp/${MOATS}/${MOATS}.index.redirect
|
||||
cat ~/.zen/tmp/${MOATS}/${MOATS}.index.redirect | nc -l -p ${PORT} -q 1 > ~/.zen/tmp/${MOATS}/${MOATS}.official.swallow &
|
||||
echo "HTTP 1.1 PROTOCOL DOCUMENT READY"
|
||||
echo "${MOATS} -----> PAGE AVAILABLE -----> http://${myHOST}:${PORT}"
|
||||
## END RESPONDING
|
||||
[[ ! -s ~/.zen/tmp/${MOATS}/${MOATS}.index.redirect ]] \
|
||||
&& echo "$HTTPCORS PORT=$1 THAT=$2 AND=$3 THIS=$4 APPNAME=$5 WHAT=$6 OBJ=$7 VAL=$8 MOATS=$9 url=/user/$G1PUB" \
|
||||
> ~/.zen/tmp/${MOATS}/${MOATS}.index.redirect
|
||||
|
||||
end=`date +%s`
|
||||
echo $type" (J‿‿J) Execution time was "`expr $end - $start` seconds.
|
||||
rm ~/.zen/tmp/${MOATS}/${MOATS}.*
|
||||
cat ~/.zen/tmp/${MOATS}/${MOATS}.index.redirect | nc -l -p ${PORT} -q 1 > ~/.zen/tmp/${MOATS}/${MOATS}.official.swallow &
|
||||
echo "HTTP 1.1 PROTOCOL DOCUMENT READY"
|
||||
echo "${MOATS} -----> PAGE AVAILABLE -----> http://${myHOST}:${PORT}"
|
||||
|
||||
end=`date +%s`
|
||||
echo $type" (J‿‿J) Execution time was "`expr $end - $start` seconds.
|
||||
rm ~/.zen/tmp/${MOATS}/${MOATS}.*
|
||||
|
||||
exit 0
|
||||
|
|
249
API/UPLANET.sh
|
@ -39,7 +39,7 @@ Content-Type: text/html; charset=UTF-8
|
|||
function urldecode() { : "${*//+/ }"; echo -e "${_//%/\\x}"; }
|
||||
|
||||
## CHECK FOR NOT PUBLISHING ALREADY (AVOID IPNS CRUSH)
|
||||
alreadypublishing=$(ps axf --sort=+utime | grep -w 'ipfs name publish --key=' | grep -v -E 'color=auto|grep' | tail -n 1 | cut -d " " -f 1)
|
||||
alreadypublishing=$(ps axf --sort=+utime | grep -w 'ipfs name publish --key=' | grep -v -E 'color=auto|grep' | tail -n 1 | xargs | cut -d " " -f 1)
|
||||
if [[ ${alreadypublishing} ]]; then
|
||||
echo "$HTTPCORS ERROR - (╥☁╥ ) - IPFS ALREADY PUBLISHING RETRY LATER" | nc -l -p ${PORT} -q 1 > /dev/null 2>&1 &
|
||||
exit 1
|
||||
|
@ -54,71 +54,26 @@ PLAYER=${THAT}
|
|||
|
||||
[[ ${AND} != "zlat" ]] \
|
||||
&& (echo "$HTTPCORS ERROR - BAD PARAMS" | nc -l -p ${PORT} -q 1 > /dev/null 2>&1 &) && echo "(☓‿‿☓) Execution time was "`expr $(date +%s) - $start` seconds. && exit 0
|
||||
|
||||
SALT=${THIS}
|
||||
|
||||
[[ ${SALT} == "0" ]] && SALT="0.00"
|
||||
input_number=${SALT}
|
||||
if [[ ! $input_number =~ ^-?[0-9]{1,3}(\.[0-9]{1,2})?$ ]]; then
|
||||
(echo "$HTTPCORS ERROR - BAD LAT $LAT" | nc -l -p ${PORT} -q 1 > /dev/null 2>&1 &) && echo "(☓‿‿☓) Execution time was "`expr $(date +%s) - $start` seconds. && exit 0
|
||||
else
|
||||
# If input_number has one decimal digit, add a trailing zero
|
||||
if [[ ${input_number} =~ ^-?[0-9]+\.[0-9]$ ]]; then
|
||||
input_number="${input_number}0"
|
||||
elif [[ ${input_number} =~ ^-?[0-9]+$ ]]; then
|
||||
# If input_number is an integer, add ".00"
|
||||
input_number="${input_number}.00"
|
||||
fi
|
||||
|
||||
# Convert input_number to LAT with two decimal digits
|
||||
LAT="${input_number}"
|
||||
fi
|
||||
|
||||
PEPPER=${WHAT}
|
||||
|
||||
[[ ${APPNAME} != "zlon" ]] \
|
||||
&& (echo "$HTTPCORS ERROR - BAD PARAMS" | nc -l -p ${PORT} -q 1 > /dev/null 2>&1 &) && echo "(☓‿‿☓) Execution time was "`expr $(date +%s) - $start` seconds. && exit 0
|
||||
|
||||
[[ ${PEPPER} == "0" ]] && PEPPER="0.00"
|
||||
input_number=${PEPPER}
|
||||
if [[ ! $input_number =~ ^-?[0-9]{1,3}(\.[0-9]{1,2})?$ ]]; then
|
||||
(echo "$HTTPCORS ERROR - BAD LON $LON" | nc -l -p ${PORT} -q 1 > /dev/null 2>&1 &) && echo "(☓‿‿☓) Execution time was "`expr $(date +%s) - $start` seconds. && exit 0
|
||||
else
|
||||
# If input_number has one decimal digit, add a trailing zero
|
||||
if [[ ${input_number} =~ ^-?[0-9]+\.[0-9]$ ]]; then
|
||||
input_number="${input_number}0"
|
||||
elif [[ ${input_number} =~ ^-?[0-9]+$ ]]; then
|
||||
# If input_number is an integer, add ".00"
|
||||
input_number="${input_number}.00"
|
||||
fi
|
||||
ZLAT=${THIS}
|
||||
ZLON=${WHAT}
|
||||
LAT=$(makecoord ${ZLAT})
|
||||
LON=$(makecoord ${ZLON})
|
||||
|
||||
# Convert input_number to LAT with two decimal digits
|
||||
LON="${input_number}"
|
||||
fi
|
||||
|
||||
# NOT RECEIVING PASS. WAS USED TO SECURE PLAYER UMAP KEY... (24s sectors strategy apply now)
|
||||
#~ PASS=$(echo "${RANDOM}${RANDOM}${RANDOM}${RANDOM}" | tail -c-7)
|
||||
#~ ## RECEIVED PASS ## CAN BE USED TO SELECT TW TEMPLATE
|
||||
#~ VAL="$(echo ${VAL} | detox --inline)" ## DETOX VAL
|
||||
#~ [[ ${OBJ} == "g1pub" && ${VAL} != "" ]] && PASS=${VAL}
|
||||
#~ echo "PASS for Umap $LAT $LON is $PASS"
|
||||
#~ ## RECEIVED VAL ## CAN BE USED TO SELECT TW TEMPLATE
|
||||
VAL="$(echo ${VAL} | detox --inline)" ## DETOX VAL
|
||||
############################################
|
||||
#### TODO USE THIS PARAMETER TO SELECT TW TEMPLATE
|
||||
|
||||
### CHECK PLAYER EMAIL
|
||||
EMAIL="${PLAYER,,}" # lowercase
|
||||
|
||||
[[ ! ${EMAIL} ]] && (echo "$HTTPCORS ERROR - MISSING ${EMAIL} FOR UPLANET LANDING" | nc -l -p ${PORT} -q 1 > /dev/null 2>&1 &) && echo "(☓‿‿☓) Execution time was "`expr $(date +%s) - $start` seconds. && exit 0
|
||||
|
||||
################################ START WORKING WITH KEYS
|
||||
### SESSION "$LAT" "$LON" KEY
|
||||
${MY_PATH}/../tools/keygen -t ipfs -o ~/.zen/tmp/${MOATS}/_ipns.priv "${YESTERDATE}${UPLANETNAME}${LAT}" "${YESTERDATE}${UPLANETNAME}${LON}"
|
||||
UMAPNS=$(ipfs key import ${MOATS} -f pem-pkcs8-cleartext ~/.zen/tmp/${MOATS}/_ipns.priv)
|
||||
ipfs key rm ${MOATS} && echo "$LAT" "$LON" "IPNS key identified"
|
||||
###
|
||||
|
||||
REDIR="${myIPFS}/ipns/${UMAPNS}"
|
||||
echo "Umap : $REDIR"
|
||||
[[ ! ${EMAIL} ]] \
|
||||
&& (echo "$HTTPCORS ERROR - MISSING ${EMAIL} FOR UPLANET LANDING" | nc -l -p ${PORT} -q 1 > /dev/null 2>&1 &) \
|
||||
&& echo "(☓‿‿☓) Execution time was "`expr $(date +%s) - $start` seconds. \
|
||||
&& exit 0
|
||||
|
||||
## CHECK WHAT IS EMAIL
|
||||
if [[ "${EMAIL}" =~ ^[a-zA-Z0-9.%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,4}$ ]]; then
|
||||
|
@ -126,132 +81,120 @@ if [[ "${EMAIL}" =~ ^[a-zA-Z0-9.%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,4}$ ]]; then
|
|||
echo "VALID ${EMAIL} EMAIL OK"
|
||||
|
||||
## CHECK if PLAYER exists in SWARM
|
||||
$($MY_PATH/../tools/search_for_this_email_in_players.sh ${EMAIL}) ## export ASTROTW and more
|
||||
echo "export ASTROPORT=${ASTROPORT} ASTROTW=${ASTROTW} ASTROG1=${ASTROG1} ASTROMAIL=${EMAIL} ASTROFEED=${FEEDNS}"
|
||||
$($MY_PATH/../tools/search_for_this_email_in_players.sh ${EMAIL}) ## export ASTROTW and more
|
||||
echo "export ASTROPORT=${ASTROPORT} ASTROTW=${ASTROTW} ASTROG1=${ASTROG1} ASTROMAIL=${EMAIL} ASTROFEED=${FEEDNS}"
|
||||
|
||||
[[ ${ASTROTW} ]] \
|
||||
&& (echo "$HTTPCORS <meta http-equiv=\"refresh\" content=\"0; url='${ASTROTW}'\" />" | nc -l -p ${PORT} -q 1 > /dev/null 2>&1 &) \
|
||||
&& exit 0
|
||||
## YES = OPEN TW
|
||||
[[ ${ASTROTW} ]] \
|
||||
&& (echo "$HTTPCORS <meta http-equiv=\"refresh\" content=\"0; url='${myIPFS}${ASTROTW}'\" />" | nc -l -p ${PORT} -q 1 > /dev/null 2>&1 &) \
|
||||
&& exit 0
|
||||
|
||||
else
|
||||
|
||||
echo "BAD EMAIL $EMAIL $LAT $LON"
|
||||
echo "$HTTPCORS <html>BAD EMAIL $EMAIL $LAT $LON <a href=${REDIR}> - OPEN UMAP LINK - </a></html>" | nc -l -p ${PORT} -q 1 > /dev/null 2>&1 &
|
||||
|
||||
### GET ENV FOR "$LAT" "$LON"
|
||||
$(${MY_PATH}/../tools/getUMAP_ENV.sh "${LAT}" "${LON}" | tail -n 1)
|
||||
REDIR="${myIPFS}${UMAPIPNS}"
|
||||
echo "Umap : $REDIR"
|
||||
|
||||
if [[ ${UMAPIPNS} != "/ipns/" ]]; then
|
||||
echo "$HTTPCORS <html>BAD EMAIL $EMAIL $LAT $LON <a href=${REDIR}> - OPEN UMAP LINK - </a></html>" | nc -l -p ${PORT} -q 1 > /dev/null 2>&1 &
|
||||
else
|
||||
echo "$HTTPCORS <html>BAD EMAIL $EMAIL ($LAT $LON)</html>" | nc -l -p ${PORT} -q 1 > /dev/null 2>&1 &
|
||||
fi
|
||||
|
||||
exit 0
|
||||
|
||||
fi
|
||||
|
||||
# UPLANET #############################################
|
||||
## OCCUPY COMMON CRYPTO KEY CYBERSPACE
|
||||
## SALT="$LAT" PEPPER="$LON"
|
||||
## LAT="$LAT" LON="$LON"
|
||||
######################################################
|
||||
echo "UMAP = $LAT:$LON"
|
||||
echo "# CALCULATING UMAP G1PUB WALLET"
|
||||
${MY_PATH}/../tools/keygen -t duniter -o ~/.zen/tmp/${MOATS}/_cesium.key "${UPLANETNAME}${LAT}" "${UPLANETNAME}${LON}"
|
||||
G1PUB=$(cat ~/.zen/tmp/${MOATS}/_cesium.key | grep 'pub:' | cut -d ' ' -f 2)
|
||||
[[ ! ${G1PUB} ]] && (echo "$HTTPCORS ERROR - (╥☁╥ ) - KEYGEN COMPUTATION DISFUNCTON" | nc -l -p ${PORT} -q 1 > /dev/null 2>&1 &) && exit 1
|
||||
echo "UMAP G1PUB : ${G1PUB}"
|
||||
|
||||
echo "# CALCULATING UMAP IPNS ADDRESS"
|
||||
mkdir -p ~/.zen/tmp/${MOATS}/${G1PUB}
|
||||
mkdir -p ~/.zen/tmp/${MOATS}/${LAT}_${LON}
|
||||
|
||||
ipfs key rm ${G1PUB} > /dev/null 2>&1
|
||||
rm ~/.zen/tmp/${MOATS}/_ipns.priv 2>/dev/null
|
||||
|
||||
${MY_PATH}/../tools/keygen -t ipfs -o ~/.zen/tmp/${MOATS}/_ipns.priv "${YESTERDATE}${UPLANETNAME}${LAT}" "${YESTERDATE}${UPLANETNAME}${LON}"
|
||||
UMAPNS=$(ipfs key import ${G1PUB} -f pem-pkcs8-cleartext ~/.zen/tmp/${MOATS}/_ipns.priv )
|
||||
|
||||
[[ ! ${UMAPNS} ]] && (echo "$HTTPCORS ERROR - (╥☁╥ ) - UMAPNS COMPUTATION DISFUNCTON" | nc -l -p ${PORT} -q 1 > /dev/null 2>&1 &) && exit 1
|
||||
echo "UMAPNS : ${myIPFS}/ipns/${UMAPNS}"
|
||||
echo "# GET UMAP ENV"
|
||||
${MY_PATH}/../tools/getUMAP_ENV.sh "${LAT}" "${LON}"
|
||||
|
||||
## ALL TEST PASSED -> CREATE ZENCARD + ASTROID
|
||||
NPASS=$(echo "${RANDOM}${RANDOM}${RANDOM}${RANDOM}" | tail -c-9) ## NOUVEAU PASS 8 CHIFFRES
|
||||
PPASS=$(head /dev/urandom | tr -dc 'A-Za-z0-9' | head -c 2) ## STRONGER TW SECURITY "AlpH4nUm"
|
||||
DPASS=$(head /dev/urandom | tr -dc 'A-Za-z0-9' | head -c 2) ## STRONGER TW SECURITY "AlpH4nUm"
|
||||
NPASS=$(head /dev/urandom | tr -dc 'A-Za-z0-9' | head -c 10) ## STRONGER TW SECURITY "AlpH4nUm"
|
||||
#~ choose salt pepper with variable words count
|
||||
PPASS=$(${MY_PATH}/../tools/diceware.sh $(( $(${MY_PATH}/../tools/getcoins_from_gratitude_box.sh) + 3 )) | xargs)
|
||||
NPASS=$(${MY_PATH}/../tools/diceware.sh $(( $(${MY_PATH}/../tools/getcoins_from_gratitude_box.sh) + 3 )) | xargs)
|
||||
|
||||
## CREATE ASTRONAUTE TW ON CURRENT ASTROPORT
|
||||
(
|
||||
echo VISA.new.sh "${EMAIL}_${PPASS}_${DPASS}" "${NPASS}" "${EMAIL}" "UPlanet" "/ipns/${UMAPNS}" "${LAT}" "${LON}"
|
||||
##### (☉_☉ ) #######
|
||||
${MY_PATH}/../RUNTIME/VISA.new.sh "${EMAIL}_${PPASS}_${DPASS}" "${NPASS}" "${EMAIL}" "UPlanet" "/ipns/${UMAPNS}" "${LAT}" "${LON}" >> ~/.zen/tmp/email.${EMAIL}.${MOATS}.txt
|
||||
|
||||
## TO REMOVE : MONITOR
|
||||
${MY_PATH}/../tools/mailjet.sh "support@qo-op.com" ~/.zen/tmp/email.${EMAIL}.${MOATS}.txt "LOG VISA.new $EMAIL" ## Send VISA.new log to EMAIL
|
||||
echo VISA.new.sh "${PPASS}" "${NPASS}" "${EMAIL}" "UPlanet" "${VAL}" "${LAT}" "${LON}"
|
||||
##### (☉_☉ ) #######
|
||||
${MY_PATH}/../RUNTIME/VISA.new.sh "${PPASS}" "${NPASS}" "${EMAIL}" "UPlanet" "${VAL}" "${LAT}" "${LON}" >> ~/.zen/tmp/email.${EMAIL}.${MOATS}.txt
|
||||
|
||||
end=`date +%s`
|
||||
echo "(TW REGISTRATION) Operation time was "`expr $end - $start` seconds.
|
||||
) &
|
||||
|
||||
|
||||
########################################
|
||||
## Calculating TW IPNS ADDRESS
|
||||
TWADD=$(${MY_PATH}/../tools/keygen -t ipfs "${EMAIL}_${PPASS}_${DPASS}" "${NPASS}")
|
||||
TWADD=$(${MY_PATH}/../tools/keygen -t ipfs "${PPASS}" "${NPASS}")
|
||||
|
||||
IMGTW=$(${MY_PATH}/../API/AMZQR.sh '0' "${myIPFS}/ipns/${TWADD}" 'et' 'TV' | tail -n 1)
|
||||
|
||||
|
||||
## HTTP nc ON PORT RESPONSE
|
||||
echo "$HTTPCORS
|
||||
<html>
|
||||
<head>
|
||||
<title>[Astroport] $LAT $LON + ${EMAIL} </title>
|
||||
<meta http-equiv=\"refresh\" content=\"100; url='${myIPFS}/ipns/${TWADD}#AstroID'\" />
|
||||
<style>
|
||||
#countdown { display: flex; justify-content: center; align-items: center; color: #0e2c4c; font-size: 20px; width: 60px; height: 60px; background-color: #e7d9fc; border-radius: 50%;}
|
||||
</style>
|
||||
<style>
|
||||
body {
|
||||
font-family: Arial, sans-serif;
|
||||
text-align: center;
|
||||
background-color: #f0f0f0;
|
||||
padding: 20px;
|
||||
}
|
||||
h1 {
|
||||
color: #0077cc;
|
||||
}
|
||||
h2 {
|
||||
color: #333;
|
||||
}
|
||||
img {
|
||||
cursor: pointer;
|
||||
}
|
||||
</style>
|
||||
</head><body>
|
||||
<h1>UPlanet Registration</h1>
|
||||
Your AstroID seeds are:<br>
|
||||
<br>
|
||||
<h2>${EMAIL}_${PPASS}_${DPASS}</h2>
|
||||
<h1>${NPASS}</h1>
|
||||
|
||||
Generating account...
|
||||
<br>Please check your mail box to get your ZenCard and PIN code.
|
||||
<br>
|
||||
---
|
||||
<br><a target=\"_new\" href=\"${myIPFS}/ipns/${TWADD}\">TW PORTATION</a>
|
||||
<br>in
|
||||
<h1><center><div id='countdown'></div></center></h1>
|
||||
<script>
|
||||
var timeLeft = 90;
|
||||
var elem = document.getElementById('countdown');
|
||||
var timerId = setInterval(countdown, 1000);
|
||||
|
||||
function countdown() {
|
||||
if (timeLeft == -1) {
|
||||
clearTimeout(timerId);
|
||||
doSomething();
|
||||
} else {
|
||||
elem.innerHTML = timeLeft + ' s';
|
||||
timeLeft--;
|
||||
}
|
||||
<html>
|
||||
<head>
|
||||
<title>[Astroport] $LAT $LON + ${EMAIL} </title>
|
||||
<meta http-equiv=\"refresh\" content=\"100; url='${myIPFS}/ipns/${TWADD}#AstroID'\" />
|
||||
<style>
|
||||
#countdown { display: flex; justify-content: center; align-items: center; color: #0e2c4c; font-size: 20px; width: 60px; height: 60px; background-color: #e7d9fc; border-radius: 50%;}
|
||||
</style>
|
||||
<style>
|
||||
body {
|
||||
font-family: Arial, sans-serif;
|
||||
text-align: center;
|
||||
background-color: #f0f0f0;
|
||||
padding: 20px;
|
||||
}
|
||||
</script>
|
||||
---
|
||||
<br>
|
||||
( ⚆_⚆) <br>CONSOLE<br>
|
||||
$(cat ~/.zen/tmp/email.${EMAIL}.${MOATS}.txt 2>/dev/null)
|
||||
<br>(☉_☉ )<br>
|
||||
<br><br>${EMAIL} REGISTERED on UPlanet UMAP : $LAT/$LON : ${MOATS} : $(date)
|
||||
</body>
|
||||
</html>" > ~/.zen/tmp/${MOATS}/http.rep
|
||||
h1 {
|
||||
color: #0077cc;
|
||||
}
|
||||
h2 {
|
||||
color: #333;
|
||||
}
|
||||
img {
|
||||
cursor: pointer;
|
||||
}
|
||||
</style>
|
||||
</head><body>
|
||||
<h1>UPlanet Registration</h1>
|
||||
${EMAIL} (⌐■_■)<br>
|
||||
<br>Check your mailbox ! Relevez votre boite mail !
|
||||
<hr>
|
||||
<h2><a target=\"_new\" href=\"${myIPFS}/ipns/${TWADD}\">TW5</a></h2>
|
||||
<h1><center><div id='countdown'></div></center></h1>
|
||||
<script>
|
||||
var timeLeft = 90;
|
||||
var elem = document.getElementById('countdown');
|
||||
var timerId = setInterval(countdown, 1000);
|
||||
|
||||
function countdown() {
|
||||
if (timeLeft == -1) {
|
||||
clearTimeout(timerId);
|
||||
doSomething();
|
||||
} else {
|
||||
elem.innerHTML = timeLeft + ' s';
|
||||
timeLeft--;
|
||||
}
|
||||
}
|
||||
</script>
|
||||
---
|
||||
<br>( ⚆_⚆) TW5 MOBILE APP<br>
|
||||
<img src='${myIPFSGW}${IMGTW}'\>
|
||||
<br>CONSOLE<br>
|
||||
$(cat ~/.zen/tmp/email.${EMAIL}.${MOATS}.txt 2>/dev/null)
|
||||
<br>(☉_☉ ) use above credentials... utilisez les identiants ci-dessus<br>
|
||||
<br><br>${EMAIL} REGISTERED on UPlanet UMAP($LAT/$LON) : ${MOATS} : $(date)
|
||||
</body>
|
||||
</html>" > ~/.zen/tmp/${MOATS}/http.rep
|
||||
|
||||
(
|
||||
cat ~/.zen/tmp/${MOATS}/http.rep | nc -l -p ${PORT} -q 1 > /dev/null 2>&1
|
||||
|
|
182
API/ZONE.sh
|
@ -7,8 +7,7 @@
|
|||
## API: ZONE
|
||||
## Used by OSM2IPFS map_render.html & other UPlanet Client App
|
||||
# ?zone=DEG&ulat=LAT&ulon=LON
|
||||
## Search for TW numbers in received zone
|
||||
# = json
|
||||
## Search for TW numbers in received zone # >> return json
|
||||
################################################################################
|
||||
MY_PATH="`dirname \"$0\"`" # relative
|
||||
MY_PATH="`( cd \"$MY_PATH\" && pwd )`" # absolutized and normalized
|
||||
|
@ -42,80 +41,118 @@ function urldecode() { : "${*//+/ }"; echo -e "${_//%/\\x}"; }
|
|||
|
||||
## RUNNING UPLANET LAT/LON TW DETECTION
|
||||
mkdir -p ~/.zen/tmp/${MOATS}/
|
||||
# GET RECEPTION : zone=0.001&ulat=0.02&ulon=0.01
|
||||
DEG=${THAT}
|
||||
[[ -z $DEG ]] && DEG=1
|
||||
# DEG=$(echo "$DEG * 10" | bc -l )
|
||||
LAT=${THIS}
|
||||
[[ -z $LAT ]] && LAT=0.00
|
||||
LON=${WHAT}
|
||||
[[ -z $LON ]] && LON=0.00
|
||||
|
||||
# PREPARE HTTP RESPONSE (application/json)
|
||||
echo "${HTTPCORS}" > ~/.zen/tmp/${MOATS}.http
|
||||
sed -i "s~text/html~application/json~g" ~/.zen/tmp/${MOATS}.http
|
||||
|
||||
LAT=$(makecoord $LAT)
|
||||
LON=$(makecoord $LON)
|
||||
# ------------------------------------------------------------------- #
|
||||
# GET/?zone=0.001&ulat=0.02&ulon=0.01
|
||||
# ------------------------------------------------------------------- #
|
||||
|
||||
echo "REQUEST $LAT / $LON / $DEG"
|
||||
DEG="${THAT}"
|
||||
[[ -z ${DEG} ]] && DEG=1
|
||||
# DEG=$(echo "${DEG} * 10" | bc -l )
|
||||
|
||||
## REGION & ABOVE LEVEL
|
||||
if [[ $DEG == "0.1" || $DEG == "1" ]]; then
|
||||
LAT=$(echo ${LAT} | cut -d '.' -f 1)
|
||||
LON=$(echo ${LON} | cut -d '.' -f 1)
|
||||
ZONE="_${LAT}_${LON}"
|
||||
echo "ZONE = ${ZONE}"
|
||||
ZONEG1PUB=$(${MY_PATH}/../tools/keygen -t duniter "${UPLANETNAME}${ZONE}" "${UPLANETNAME}${ZONE}")
|
||||
ZONETW="/ipns/"$(${MY_PATH}/../tools/keygen -t ipfs "${YESTERDATE}${UPLANETNAME}${ZONE}" "${YESTERDATE}${UPLANETNAME}${ZONE}")
|
||||
LAT="${THIS}"
|
||||
[[ -z $LAT ]] && LAT=0.00
|
||||
|
||||
fi
|
||||
LON="${WHAT}"
|
||||
[[ -z $LON ]] && LON=0.00
|
||||
|
||||
## SECTOR LEVEL
|
||||
if [[ $DEG == "0.01" ]]; then
|
||||
SECLAT="${LAT::-1}"
|
||||
SECLON="${LON::-1}"
|
||||
SECTOR="_${SECLAT}_${SECLON}"
|
||||
echo "SECTOR = ${SECTOR}"
|
||||
ZONEG1PUB=$(${MY_PATH}/../tools/keygen -t duniter "${UPLANETNAME}${SECTOR}" "${UPLANETNAME}${SECTOR}")
|
||||
ZONETW="/ipns/"$(${MY_PATH}/../tools/keygen -t ipfs "${YESTERDATE}${UPLANETNAME}${SECTOR}" "${YESTERDATE}${UPLANETNAME}${SECTOR}")
|
||||
LAT=$(makecoord ${LAT})
|
||||
LON=$(makecoord ${LON})
|
||||
JSON="ZONE_${LAT}_${LON}_${DEG}.json"
|
||||
$(${MY_PATH}/../tools/getUMAP_ENV.sh "${LAT}" "${LON}" | tail -n 1)
|
||||
echo "UMAPG1PUB=$UMAPG1PUB UMAPIPNS=$UMAPIPNS
|
||||
SECTORG1PUB=$SECTORG1PUB SECTORIPNS=$SECTORIPNS
|
||||
REGIONG1PUB=$REGIONG1PUB REGIONIPNS=$REGIONIPNS
|
||||
LAT=$LAT LON=$LON SLAT=$SLAT SLON=$SLON RLAT=$RLAT RLON=$RLON"
|
||||
|
||||
fi
|
||||
## SECTOR LEVEL
|
||||
if [[ ${DEG} == "0.01" ]]; then
|
||||
|
||||
## UMAP LEVEL
|
||||
if [[ $DEG == "0.001" ]]; then
|
||||
SLAT="${LAT::-1}"
|
||||
SLON="${LON::-1}"
|
||||
SECTOR="_${SLAT}_${SLON}"
|
||||
echo "SECTOR = ${SECTOR}"
|
||||
ZONEINDEX=$SECTORIPNS
|
||||
[[ ! $ZONEINDEX ]] && ZONEINDEX="/ipns/"$(cat ~/.zen/tmp/swarm/*/UPLANET/__/_*_*/_${SLAT}*_${SLON}*/_*_*/SECTORNS | tail -n 1)
|
||||
[[ ! $ZONEINDEX ]] && ZONEINDEX="/ipns/"$(cat ~/.zen/tmp/${IPFSNODEID}/UPLANET/__/_*_*/_${SLAT}*_${SLON}*/_*_*/SECTORNS | tail -n 1)
|
||||
ZONEG1PUB=$SECTORG1PUB
|
||||
[[ ! $ZONEG1PUB ]] && ZONEG1PUB=$(cat ~/.zen/tmp/swarm/*/UPLANET/__/_*_*/_${SLAT}*_${SLON}*/_*_*/SECTORG1PUB | tail -n 1)
|
||||
[[ ! $ZONEG1PUB ]] && ZONEG1PUB=$(cat ~/.zen/tmp/${IPFSNODEID}/UPLANET/__/_*_*/_${SLAT}*_${SLON}*/_*_*/SECTORG1PUB | tail -n 1)
|
||||
LAT=${SLAT}
|
||||
LON=${SLON}
|
||||
JSON="ZONE${SECTOR}_${DEG}.json"
|
||||
|
||||
swarmnum=$(ls -d ~/.zen/tmp/swarm/*/UPLANET/__/_*_*/_*.?_*.?/_${LAT}*_${LON}*/TW/* 2>/dev/null | wc -l )
|
||||
nodenum=$(ls -d ~/.zen/tmp/${IPFSNODEID}/UPLANET/__/_*_*/_*.?_*.?/_${LAT}*_${LON}*/TW/* 2>/dev/null | wc -l )
|
||||
totnum=$(( swarmnum + nodenum ))
|
||||
echo " ## UMAP _${LAT}*_${LON}* = ${totnum} PLAYERs"
|
||||
fi
|
||||
|
||||
G1PUB=$(${MY_PATH}/../tools/keygen -t duniter "${UPLANETNAME}${LAT}" "${UPLANETNAME}${LON}")
|
||||
${MY_PATH}/../tools/keygen -t ipfs -o ~/.zen/tmp/${MOATS}/${UMAP}.priv "${YESTERDATE}${UPLANETNAME}${LAT}" "${YESTERDATE}${UPLANETNAME}${LON}"
|
||||
ipfs key rm ${G1PUB} > /dev/null 2>&1 ## AVOID ERROR ON IMPORT
|
||||
UMAPNS=$(ipfs key import ${G1PUB} -f pem-pkcs8-cleartext ~/.zen/tmp/${MOATS}/${UMAP}.priv)
|
||||
## REGION & ABOVE LEVEL
|
||||
if [[ ${DEG} == "0.1" || ${DEG} == "1" ]]; then
|
||||
|
||||
echo '{ "gridNumbers": [ {"lat": '${LAT}', "lon": '${LON}', "number": "(_'${LAT}'_'${LON}') = '${totnum}'", "ipns": "'${myIPFS}/ipns/${UMAPNS}/_index.html'" } ] }' >> ~/.zen/tmp/${MOATS}.http
|
||||
cat ~/.zen/tmp/${MOATS}.http | nc -l -p ${PORT} -q 1 > /dev/null 2>&1 &
|
||||
rm -Rf ~/.zen/tmp/${MOATS}/
|
||||
end=`date +%s`
|
||||
echo "(UMAP)_${LAT}_${LON} ${YESTERDATE} $UMAPNS Operation time was "`expr $end - $start` seconds.
|
||||
exit 0
|
||||
RLAT="$(echo ${LAT} | cut -d '.' -f 1)"
|
||||
RLON="$(echo ${LON} | cut -d '.' -f 1)"
|
||||
REGION="_${RLAT}_${RLON}"
|
||||
echo "REGION = ${REGION}"
|
||||
ZONEINDEX=$REGIONIPNS
|
||||
[[ ! $ZONEINDEX ]] && ZONEINDEX="/ipns/"$(cat ~/.zen/tmp/swarm/*/UPLANET/__/_${RLAT}*_${RLON}*/_*_*/_*_*/REGIONNS | tail -n 1)
|
||||
[[ ! $ZONEINDEX ]] && ZONEINDEX="/ipns/"$(cat ~/.zen/tmp/${IPFSNODEID}/UPLANET/__/_${RLAT}*_${RLON}*/_*_*/_*_*/REGIONNS | tail -n 1)
|
||||
ZONEG1PUB=$REGIONG1PUB
|
||||
[[ ! $ZONEG1PUB ]] && ZONEG1PUB=$(cat ~/.zen/tmp/swarm/*/UPLANET/__/_${RLAT}*_${RLON}*/_*_*/_*_*/REGIONG1PUB | tail -n 1)
|
||||
[[ ! $ZONEG1PUB ]] && ZONEG1PUB=$(cat ~/.zen/tmp/${IPFSNODEID}/UPLANET/_${RLAT}*_${RLON}*/_*_*/_*_*/REGIONG1PUB | tail -n 1)
|
||||
LAT=${RLAT}
|
||||
LON=${RLON}
|
||||
JSON="ZONE${REGION}_${DEG}.json"
|
||||
|
||||
fi
|
||||
fi
|
||||
|
||||
## ALL OTHER DEG : SEARCH FOR UPLANET TW NUMBERS
|
||||
echo '{ "gridNumbers": [' >> ~/.zen/tmp/${MOATS}.http
|
||||
echo " JSON = ${JSON}"
|
||||
|
||||
if [[ ! -s ~/.zen/tmp/${JSON} ]]; then
|
||||
|
||||
## UMAP LEVEL
|
||||
if [[ ${DEG} == "0.001" ]]; then
|
||||
|
||||
swarmnum=$(ls -d ~/.zen/tmp/swarm/*/UPLANET/__/_*_*/_*.?_*.?/_${LAT}_${LON}/TW/* 2>/dev/null | wc -l )
|
||||
nodenum=$(ls -d ~/.zen/tmp/${IPFSNODEID}/UPLANET/__/_*_*/_*.?_*.?/_${LAT}_${LON}/TW/* 2>/dev/null | wc -l )
|
||||
totnum=$(( swarmnum + nodenum ))
|
||||
echo " ## UMAP _${LAT}_${LON} = ${totnum} PLAYERs"
|
||||
|
||||
UMAPNS=$(cat ~/.zen/tmp/swarm/*/UPLANET/__/_*_*/_*.?_*.?/_${LAT}_${LON}/TODATENS | tail -n 1)
|
||||
[[ ! $UMAPNS ]] && UMAPNS=$(cat ~/.zen/tmp/${IPFSNODEID}/UPLANET/__/_*_*/_*.?_*.?/_${LAT}_${LON}/TODATENS | tail -n 1)
|
||||
G1PUB=$(cat ~/.zen/tmp/swarm/*/UPLANET/__/_*_*/_*.?_*.?/_${LAT}_${LON}/G1PUB | tail -n 1)
|
||||
[[ ! $G1PUB ]] && G1PUB=$(cat ~/.zen/tmp/${IPFSNODEID}/UPLANET/__/_*_*/_*.?_*.?/_${LAT}_${LON}/G1PUB | tail -n 1)
|
||||
|
||||
echo '{ "gridNumbers": [ {"lat": '${LAT}', "lon": '${LON}', "number": "(_'${LAT}'_'${LON}') = '${totnum}'", "ipns": "'${myIPFS}/ipns/${UMAPNS}/_index.html'" } ] }' \
|
||||
> ~/.zen/tmp/${MOATS}/http.grid
|
||||
|
||||
cp ~/.zen/tmp/${MOATS}/http.grid ~/.zen/tmp/${JSON}
|
||||
cat ~/.zen/tmp/${JSON} >> ~/.zen/tmp/${MOATS}.http
|
||||
|
||||
cat ~/.zen/tmp/${MOATS}.http | nc -l -p ${PORT} -q 1 > /dev/null 2>&1 &
|
||||
|
||||
rm -Rf ~/.zen/tmp/${MOATS}/
|
||||
end=`date +%s`
|
||||
echo "(UMAP)_${LAT}_${LON} $UMAPNS Operation time was "`expr $end - $start` seconds.
|
||||
exit 0
|
||||
|
||||
fi
|
||||
|
||||
##############################################
|
||||
## SEARCH FOR UPLANET TW NUMBERS IN THAT ZONE
|
||||
echo '{ "gridNumbers": [' >> ~/.zen/tmp/${MOATS}/http.grid
|
||||
|
||||
for i in $(seq 0 9);
|
||||
do
|
||||
|
||||
ZLAT=$(echo "$LAT + ${DEG} * $i" | bc -l)
|
||||
[[ -z ${ZLAT} ]] && ZLAT=0
|
||||
|
||||
for i in $(seq 0 9);
|
||||
do
|
||||
ZLAT=$(echo "$LAT + $DEG * $i" | bc -l )
|
||||
[[ -z ${ZLAT} ]] && ZLAT=0
|
||||
# [[ ! $(echo $ZLAT | grep "\." ) ]] && ZLAT="${ZLAT}."
|
||||
for j in $(seq 0 9); do
|
||||
ZLON=$(echo "$LON + $DEG * $j" | bc -l )
|
||||
|
||||
ZLON=$(echo "$LON + ${DEG} * $j" | bc -l)
|
||||
[[ -z ${ZLON} ]] && ZLON=0
|
||||
# [[ ! $(echo $ZLON | grep "\." ) ]] && ZLON="${ZLON}."
|
||||
|
||||
echo " ## SEARCH UPLANET/__/_*_*/_*.?_*.?/_${ZLAT}*_${ZLON}*"
|
||||
swarmnum=$(ls -d ~/.zen/tmp/swarm/*/UPLANET/__/_*_*/_*.?_*.?/_${ZLAT}*_${ZLON}*/TW/* 2>/dev/null | wc -l )
|
||||
nodenum=$(ls -d ~/.zen/tmp/${IPFSNODEID}/UPLANET/__/_*_*/_*.?_*.?/_${ZLAT}*_${ZLON}*/TW/* 2>/dev/null | wc -l )
|
||||
|
@ -123,22 +160,35 @@ do
|
|||
|
||||
[[ $totnum -gt 9 ]] && displaynum="X" || displaynum=$totnum
|
||||
|
||||
[[ $displaynum != "0" ]] && echo '{"lat": '${ZLAT}', "lon": '${ZLON}', "number": "'${displaynum}'", "ipns": "'${ZONETW}'" }
|
||||
,' >> ~/.zen/tmp/${MOATS}.http && echo "$DEG :" '{"lat": '${ZLAT}', "lon": '${ZLON}', "number": "'${totnum}'", "ipns": "'${ZONETW}'" }'
|
||||
[[ $displaynum != "0" ]] && echo '{"lat": '${ZLAT}', "lon": '${ZLON}', "number": "'${displaynum}'", "ipns": "'${ZONEINDEX}'" }
|
||||
,' >> ~/.zen/tmp/${MOATS}/http.grid \
|
||||
&& echo "${DEG} :" '{"lat": '${ZLAT}', "lon": '${ZLON}', "number": "'${totnum}'", "ipns": "'${ZONEINDEX}'" }'
|
||||
|
||||
done
|
||||
done
|
||||
|
||||
sed -i '$ d' ~/.zen/tmp/${MOATS}.http ## REMOVE LAST ','
|
||||
done
|
||||
|
||||
echo ']}' >> ~/.zen/tmp/${MOATS}.http
|
||||
[[ ! $(cat ~/.zen/tmp/${MOATS}/http.grid | tail -n 1 | grep 'gridNumbers' ) ]] \
|
||||
&& sed -i '$ d' ~/.zen/tmp/${MOATS}/http.grid ## REMOVE LAST ','
|
||||
|
||||
echo ']}' >> ~/.zen/tmp/${MOATS}/http.grid
|
||||
|
||||
echo "## ADD TO CACHE ~/.zen/tmp/${JSON}"
|
||||
cp ~/.zen/tmp/${MOATS}/http.grid ~/.zen/tmp/${JSON}
|
||||
|
||||
fi
|
||||
|
||||
cat ~/.zen/tmp/${JSON} | jq -c
|
||||
|
||||
### SEND RESPONSE ON PORT
|
||||
cat ~/.zen/tmp/${MOATS}.http | nc -l -p ${PORT} -q 1 > /dev/null 2>&1 &
|
||||
|
||||
cat ~/.zen/tmp/${JSON} >> ~/.zen/tmp/${MOATS}.http
|
||||
(
|
||||
cat ~/.zen/tmp/${MOATS}.http | nc -l -p ${PORT} -q 1 > /dev/null 2>&1
|
||||
rm ~/.zen/tmp/${MOATS}/http.grid 2>/dev/null
|
||||
rm ~/.zen/tmp/${MOATS}.http && echo "BLURP ${JSON}"
|
||||
) &
|
||||
## CLEANING
|
||||
rm -Rf ~/.zen/tmp/${MOATS}/
|
||||
|
||||
## TIMING
|
||||
end=`date +%s`
|
||||
echo "(ZONE) Operation time was "`expr $end - $start` seconds.
|
||||
|
|
|
@ -0,0 +1,46 @@
|
|||
#!/bin/bash
|
||||
# Usage: bash addfile.sh <filename> <mime_type> <file_type>
|
||||
|
||||
filename="$1"
|
||||
mime_type="$2"
|
||||
file_type="$3"
|
||||
|
||||
echo "Processing file: $filename"
|
||||
echo "MIME type: $mime_type"
|
||||
echo "File type: $file_type"
|
||||
|
||||
# Check file type and perform corresponding treatment
|
||||
case $file_type in
|
||||
"video")
|
||||
if [[ $mime_type == *"video"* ]]; then
|
||||
# Video processing logic
|
||||
echo "Video processing..."
|
||||
# Add more processing steps as needed
|
||||
else
|
||||
echo "Invalid file type for video processing"
|
||||
fi
|
||||
;;
|
||||
"audio")
|
||||
if [[ $mime_type == *"audio"* ]]; then
|
||||
# Audio processing logic
|
||||
echo "Audio processing..."
|
||||
# Add more processing steps as needed
|
||||
else
|
||||
echo "Invalid file type for audio processing"
|
||||
fi
|
||||
;;
|
||||
"text")
|
||||
if [[ $mime_type == *"text"* ]]; then
|
||||
# Text processing logic
|
||||
echo "Text processing..."
|
||||
# Add more processing steps as needed
|
||||
else
|
||||
echo "Invalid file type for text processing"
|
||||
fi
|
||||
;;
|
||||
*)
|
||||
echo "Unknown file type: $file_type"
|
||||
;;
|
||||
esac
|
||||
|
||||
echo "File processing complete."
|
|
@ -0,0 +1,170 @@
|
|||
#!/usr/bin/python3
|
||||
from fastapi import FastAPI, File, UploadFile, Form, HTTPException
|
||||
from fastapi.responses import HTMLResponse, JSONResponse
|
||||
import subprocess
|
||||
import os
|
||||
import magic
|
||||
|
||||
app = FastAPI()
|
||||
|
||||
# HTML form for file upload
|
||||
html_form = """
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
<title>File Upload and Processing</title>
|
||||
<style>
|
||||
body {
|
||||
font-family: 'Arial', sans-serif;
|
||||
background-color: #f5f5f5;
|
||||
margin: 0;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
height: 100vh;
|
||||
}
|
||||
|
||||
#upload-container {
|
||||
background-color: #ffffff;
|
||||
box-shadow: 0 0 10px rgba(0, 0, 0, 0.1);
|
||||
padding: 20px;
|
||||
border-radius: 8px;
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
h1 {
|
||||
color: #333333;
|
||||
}
|
||||
|
||||
form {
|
||||
margin-top: 20px;
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
align-items: center;
|
||||
}
|
||||
|
||||
input[type="file"] {
|
||||
margin-bottom: 10px;
|
||||
}
|
||||
|
||||
input[type="button"] {
|
||||
background-color: #4caf50;
|
||||
color: white;
|
||||
border: none;
|
||||
padding: 10px 20px;
|
||||
text-align: center;
|
||||
text-decoration: none;
|
||||
display: inline-block;
|
||||
font-size: 16px;
|
||||
cursor: pointer;
|
||||
border-radius: 4px;
|
||||
}
|
||||
|
||||
#result-container {
|
||||
margin-top: 20px;
|
||||
}
|
||||
|
||||
#loading-indicator {
|
||||
display: none;
|
||||
margin-top: 20px;
|
||||
}
|
||||
</style>
|
||||
</head>
|
||||
|
||||
<body>
|
||||
<div id="upload-container">
|
||||
<h1>File Upload and Processing</h1>
|
||||
<form id="upload-form" enctype="multipart/form-data" method="post">
|
||||
<input type="file" id="file" accept="video/*,audio/*,text/*" required>
|
||||
<br>
|
||||
<label for="convert_to">Choose file type:</label>
|
||||
<input type="radio" id="video" name="convert_to" value="video" checked>
|
||||
<label for="video">Video</label>
|
||||
<input type="radio" id="audio" name="convert_to" value="audio">
|
||||
<label for="audio">Audio</label>
|
||||
<input type="radio" id="text" name="convert_to" value="text">
|
||||
<label for="text">Text</label>
|
||||
<br>
|
||||
<input type="button" value="Upload" onclick="uploadFile()">
|
||||
<div id="loading-indicator">Loading...</div>
|
||||
</form>
|
||||
|
||||
<div id="result-container"></div>
|
||||
</div>
|
||||
|
||||
<script>
|
||||
async function uploadFile() {
|
||||
const fileInput = document.getElementById('file');
|
||||
const file = fileInput.files[0];
|
||||
const fileType = document.querySelector('input[name="convert_to"]:checked').value;
|
||||
|
||||
const formData = new FormData();
|
||||
formData.append('file', file);
|
||||
formData.append('convert_to', fileType);
|
||||
|
||||
// Show loading indicator
|
||||
const loadingIndicator = document.getElementById('loading-indicator');
|
||||
loadingIndicator.style.display = 'block';
|
||||
|
||||
try {
|
||||
const response = await fetch('/upload', {
|
||||
method: 'POST',
|
||||
body: formData
|
||||
});
|
||||
|
||||
const result = await response.json();
|
||||
document.getElementById('result-container').innerHTML = JSON.stringify(result, null, 2);
|
||||
} catch (error) {
|
||||
console.error('Error uploading file:', error);
|
||||
} finally {
|
||||
// Hide loading indicator after response or error
|
||||
loadingIndicator.style.display = 'none';
|
||||
}
|
||||
}
|
||||
</script>
|
||||
</body>
|
||||
|
||||
</html>
|
||||
|
||||
"""
|
||||
|
||||
@app.get("/")
|
||||
async def read_root():
|
||||
return HTMLResponse(content=html_form, status_code=200)
|
||||
|
||||
def get_mime_type(file: UploadFile):
|
||||
mime = magic.Magic()
|
||||
mime_type = mime.from_buffer(file.file.read(1024))
|
||||
return mime_type
|
||||
|
||||
@app.post("/upload")
|
||||
async def create_upload_file(file: UploadFile = File(...), convert_to: str = Form(...)):
|
||||
# Validate file size
|
||||
max_file_size = 100 * 1024 * 1024 # 100MB
|
||||
if file.file.__sizeof__() > max_file_size:
|
||||
raise HTTPException(status_code=400, detail="File size exceeds the limit of 100MB")
|
||||
|
||||
# Check the file type
|
||||
mime_type = get_mime_type(file)
|
||||
print(f"Detected MIME type: {mime_type}")
|
||||
|
||||
# Save the uploaded file to a temporary location
|
||||
with open(file.filename, "wb") as f:
|
||||
f.write(file.file.read())
|
||||
|
||||
# Continue with the processing logic
|
||||
# Run the post-treatment Bash script
|
||||
logs = subprocess.run(["bash", "addfile.sh", file.filename, mime_type, convert_to], capture_output=True, text=True).stdout
|
||||
|
||||
# Optionally, you can remove the temporary file
|
||||
os.remove(file.filename)
|
||||
|
||||
return JSONResponse(content={"filename": file.filename, "mime_type": mime_type, "convert_to": convert_to, "message": "File processed successfully.", "logs": logs})
|
||||
|
||||
if __name__ == "__main__":
|
||||
import uvicorn
|
||||
|
||||
uvicorn.run(app, host="0.0.0.0", port=10101)
|
|
@ -1,6 +1,6 @@
|
|||
#!/bin/bash
|
||||
########################################################################
|
||||
# Version: 0.4
|
||||
# Version: 1.2
|
||||
# License: AGPL-3.0 (https://choosealicense.com/licenses/agpl-3.0/)
|
||||
########################################################################
|
||||
MY_PATH="`dirname \"$0\"`" # relative
|
||||
|
@ -11,11 +11,12 @@ ME="${0##*/}"
|
|||
|
||||
echo "-----"
|
||||
echo "$ME RUNNING"
|
||||
|
||||
# ASTROBOT FIRST SPECIFIC PROCESS
|
||||
# "Copier youtube" + (voeu) => CopierYoutube (G1Voeu G1CopierYoutube) = ASTROBOT copy Ŋ1 "(G1CopierYoutube)"
|
||||
|
||||
|
||||
#######################################################################
|
||||
# ASTROBOT SUBKEY PROGRAM : [G1]CopierYoutube "tag"
|
||||
# Ce script se déclenche si le tiddler "voeu" "CopierYoutube" a été formulé dans le TW du PLAYER
|
||||
# Il active l'extraction des liens (compatibles yt-dlp) trouvés dans les tiddlers portant le tag "CopierYoutube"
|
||||
# Les vidéos (mp4) ou audio (mp3) (+tag "CopierYoutube MP3") sont inscrites dans un json puis importés dans le TW.
|
||||
#######################################################################
|
||||
INDEX="$1"
|
||||
[[ ! ${INDEX} ]] && echo "ERROR - Please provide path to source TW index.html" && exit 1
|
||||
[[ ! -s ${INDEX} ]] && echo "ERROR - Fichier TW absent. ${INDEX}" && exit 1
|
||||
|
@ -47,10 +48,17 @@ tiddlywiki --load ${INDEX} \
|
|||
--render '.' 'CopierYoutube.json' 'text/plain' '$:/core/templates/exporters/JsonFile' 'exportFilter' '[tag[CopierYoutube]]'
|
||||
|
||||
echo "DEBUG : cat ~/.zen/game/players/${PLAYER}/G1CopierYoutube/CopierYoutube.json | jq -r"
|
||||
## CHEK FOR MP3 TAG
|
||||
TAGS=()
|
||||
TAGS=($(cat ~/.zen/game/players/${PLAYER}/G1CopierYoutube/CopierYoutube.json | jq -r .[].tags))
|
||||
echo "TAGS :${#TAGS[@]}: ${TAGS[@]}"
|
||||
isMP3=$(echo ${TAGS[@]} | grep -w "MP3")
|
||||
|
||||
## GET USER BROWSER for YOUTUBE COOKIES
|
||||
BZER=$(xdg-settings get default-web-browser | cut -d '.' -f 1 | cut -d '-' -f 1) ## GET cookies-from-browser
|
||||
[[ $BZER ]] && BROWSER="--cookies-from-browser $BZER " || BROWSER=""
|
||||
[[ ! $isLAN ]] && BROWSER=""
|
||||
|
||||
BZER=$(xdg-settings get default-web-browser | cut -d '.' -f 1 | cut -d '-' -f 1) ## GET cookies-from-browser
|
||||
[[ $BZER ]] && BROWSER="--cookies-from-browser $BZER " || BROWSER=""
|
||||
[[ ! $isLAN ]] && BROWSER=""
|
||||
###################################################################
|
||||
## URL EXTRACTION & yt-dlp.cache.${PLAYER} upgrade
|
||||
for YURL in $(cat ~/.zen/game/players/${PLAYER}/G1CopierYoutube/CopierYoutube.json | jq -r '.[].text' | grep 'http'); do
|
||||
|
@ -69,11 +77,11 @@ for YURL in $(cat ~/.zen/game/players/${PLAYER}/G1CopierYoutube/CopierYoutube.js
|
|||
lastrun=$(echo "$CMD" | rev | cut -d ':' -f 1 | rev) && echo "$CMD"
|
||||
duree=$(expr ${MOATS} - $lastrun)
|
||||
fi
|
||||
# ONE WEEK NEW SCAN
|
||||
if [[ $duree -ge 604800000 || ! -s ~/.zen/game/players/${PLAYER}/G1CopierYoutube/yt-dlp.cache.${PLAYER} ]]; then
|
||||
/usr/local/bin/yt-dlp $BROWSER --print "%(id)s&%(webpage_url)s" "${YURL}" >> ~/.zen/game/players/${PLAYER}/G1CopierYoutube/yt-dlp.cache.${PLAYER}
|
||||
sed -i "s~$lastrun~$MOATS~g" ~/.zen/game/players/${PLAYER}/G1CopierYoutube/yt-dlp.command # UPDATE LASTRUN
|
||||
fi
|
||||
# ONE WEEK NEW SCAN
|
||||
if [[ $duree -ge 604800000 || ! -s ~/.zen/game/players/${PLAYER}/G1CopierYoutube/yt-dlp.cache.${PLAYER} ]]; then
|
||||
/usr/local/bin/yt-dlp $BROWSER --print "%(id)s&%(webpage_url)s" "${YURL}" 2>/dev/null >> ~/.zen/game/players/${PLAYER}/G1CopierYoutube/yt-dlp.cache.${PLAYER}
|
||||
sed -i "s~$lastrun~$MOATS~g" ~/.zen/game/players/${PLAYER}/G1CopierYoutube/yt-dlp.command # UPDATE LASTRUN
|
||||
fi
|
||||
|
||||
done # FINISH YURL loop
|
||||
|
||||
|
@ -89,26 +97,29 @@ tot=0
|
|||
# PROCESS YOUTUBEID VIDEO DOWNLOAD AND CREATE TIDDLER in TW
|
||||
###################################################################
|
||||
while read LINE;
|
||||
do
|
||||
boucle=$((boucle+1))
|
||||
echo "_____ $LINE _____ $boucle"
|
||||
YID="$(echo "$LINE" | rev | cut -d '=' -f 1 | rev )"
|
||||
do
|
||||
boucle=$((boucle+1))
|
||||
echo "_____ $LINE _____ $boucle"
|
||||
YID="$(echo "$LINE" | rev | cut -d '=' -f 1 | rev )"
|
||||
|
||||
#~ [[ $boucle -gt 50 ]] && break ## TODO SCAN FOR ABROAD SAME COPY DONE
|
||||
### MAKE BETTER THAN RANDOM !! CONNECT TO THE WARM...
|
||||
|
||||
###################################################################
|
||||
## Search for $YID.TW.json TIDDLER in local & MySwarm cache
|
||||
#~ echo "--- CACHE SEARCH FOR $YID ---"
|
||||
TIDDLER=$(ls -t "${HOME}/.zen/game/players/"*"/G1CopierYoutube/$YID.TW.json" 2>/dev/null | head -n 1)
|
||||
## TODO CORRECT - CACHE CHANGED -
|
||||
[[ ! $TIDDLER ]] && TIDDLER=$(ls -t "${HOME}/.zen/tmp/${IPFSNODEID}/G1CopierYoutube/"*"/$YID.TW.json" 2>/dev/null | head -n 1)
|
||||
[[ ! $TIDDLER ]] && TIDDLER=$(ls -t "${HOME}/.zen/tmp/swarm/"*"/G1CopierYoutube/"*"/$YID.TW.json" 2>/dev/null | head -n 1)
|
||||
#~ [[ $TIDDLER ]] && echo "Tiddler Found in CACHE : $TIDDLER" \
|
||||
#~ || echo "EMPTY."
|
||||
#~ echo "--- CACHE SEARCH FOR $YID ---"
|
||||
TIDDLER=$(ls -t "${HOME}/.zen/game/players/"*"/G1CopierYoutube/$YID.TW.json" 2>/dev/null | head -n 1)
|
||||
## TODO CORRECT - CACHE CHANGED -
|
||||
[[ ! $TIDDLER ]] && TIDDLER=$(ls -t "${HOME}/.zen/tmp/${IPFSNODEID}/G1CopierYoutube/"*"/$YID.TW.json" 2>/dev/null | head -n 1)
|
||||
[[ ! $TIDDLER ]] && TIDDLER=$(ls -t "${HOME}/.zen/tmp/swarm/"*"/G1CopierYoutube/"*"/$YID.TW.json" 2>/dev/null | head -n 1)
|
||||
#~ [[ $TIDDLER ]] && echo "Tiddler Found in CACHE : $TIDDLER" \
|
||||
#~ || echo "EMPTY."
|
||||
###################################################################
|
||||
|
||||
if [[ ! ${TIDDLER} ]]; then
|
||||
###################################################################
|
||||
# COPY VIDEO AND MAKE TIDDLER
|
||||
###################################################################
|
||||
if [[ ! ${TIDDLER} ]]; then
|
||||
###################################################################
|
||||
# COPY VIDEO AND MAKE TIDDLER
|
||||
###################################################################
|
||||
ZYURL=$(echo "$LINE" | cut -d '&' -f 2-)
|
||||
echo "COPIE : $ZYURL"
|
||||
|
||||
|
@ -121,7 +132,7 @@ if [[ ! ${TIDDLER} ]]; then
|
|||
|
||||
start=`date +%s`
|
||||
|
||||
echo ".... Downloading $TITLE.mp4"
|
||||
echo ".... Downloading $TITLE ${isMP3}"
|
||||
# https://github.com/yt-dlp/yt-dlp#format-selection-examples
|
||||
# SUBS ? --write-subs --write-auto-subs --sub-langs "fr, en, en-orig" --embed-subs
|
||||
# (bv*[height<=720][vcodec~='^((he|a)vc|h26[45])']+ba)
|
||||
|
@ -133,58 +144,69 @@ if [[ ! ${TIDDLER} ]]; then
|
|||
## EXTRA PARAM TO TRY
|
||||
# --write-subs --write-auto-subs --sub-langs "fr, en, en-orig" --embed-subs
|
||||
|
||||
/usr/local/bin/yt-dlp -q -f "(bv*[ext=mp4][height<=720]+ba/b[height<=720])" \
|
||||
$BROWSER \
|
||||
--download-archive ${HOME}/.zen/.yt-dlp.list \
|
||||
-S res,ext:mp4:m4a --recode mp4 --no-mtime --embed-thumbnail --add-metadata \
|
||||
-o "${HOME}/.zen/tmp/yt-dlp/$TITLE.%(ext)s" ${ZYURL}
|
||||
if [[ ${isMP3} == "" ]]; then
|
||||
# copying video
|
||||
/usr/local/bin/yt-dlp -q -f "(bv*[ext=mp4][height<=720]+ba/b[height<=720])" \
|
||||
$BROWSER \
|
||||
--download-archive ${HOME}/.zen/.yt-dlp.list \
|
||||
-S res,ext:mp4:m4a --recode mp4 --no-mtime --embed-thumbnail --add-metadata \
|
||||
-o "${HOME}/.zen/tmp/yt-dlp/$TITLE.%(ext)s" "${ZYURL}"
|
||||
ZFILE="$TITLE.mp4"
|
||||
|
||||
################################################################################
|
||||
### ADAPT TO TW RYTHM (DELAY COPY?)
|
||||
echo
|
||||
ZFILE="$TITLE.mp4"
|
||||
############################################################################
|
||||
### CHECK RESULT CONVERT MKV TO MP4
|
||||
[[ -s "${HOME}/.zen/tmp/yt-dlp/$TITLE.mkv" ]] \
|
||||
&& ffmpeg -loglevel quiet -i "${HOME}/.zen/tmp/yt-dlp/$TITLE.mkv" -c:v libx264 -c:a aac "${HOME}/.zen/tmp/yt-dlp/$TITLE.mp4" \
|
||||
&& rm "${HOME}/.zen/tmp/yt-dlp/$TITLE.mkv"
|
||||
|
||||
############################################################################
|
||||
### CHECK RESULT CONVERT MKV TO MP4
|
||||
[[ -s "${HOME}/.zen/tmp/yt-dlp/$TITLE.mkv" ]] \
|
||||
&& ffmpeg -loglevel quiet -i "${HOME}/.zen/tmp/yt-dlp/$TITLE.mkv" -c:v libx264 -c:a aac "${HOME}/.zen/tmp/yt-dlp/$TITLE.mp4" \
|
||||
&& rm "${HOME}/.zen/tmp/yt-dlp/$TITLE.mkv"
|
||||
if [[ ! -s "${HOME}/.zen/tmp/yt-dlp/${ZFILE}" ]]; then
|
||||
echo "No FILE -- TRYING TO RESTORE CACHE FROM TW -- ${ZFILE}"
|
||||
tiddlywiki --load ${INDEX} \
|
||||
--output ~/.zen/game/players/${PLAYER}/G1CopierYoutube \
|
||||
--render '.' "$YID.TW.json" 'text/plain' '$:/core/templates/exporters/JsonFile' 'exportFilter' "${ZFILE}"
|
||||
|
||||
if [[ ! -s "${HOME}/.zen/tmp/yt-dlp/${ZFILE}" ]]; then
|
||||
echo "No FILE -- TRYING TO RESTORE CACHE FROM TW -- ${ZFILE}"
|
||||
tiddlywiki --load ${INDEX} \
|
||||
--output ~/.zen/game/players/${PLAYER}/G1CopierYoutube \
|
||||
--render '.' "$YID.TW.json" 'text/plain' '$:/core/templates/exporters/JsonFile' 'exportFilter' "${ZFILE}"
|
||||
if [[ -s ~/.zen/game/players/${PLAYER}/G1CopierYoutube/${YID}.TW.json ]]; then
|
||||
rm "${HOME}/.zen/game/players/${PLAYER}/G1CopierYoutube/${ZFILE}.json" 2>/dev/null
|
||||
cd ${HOME}/.zen/game/players/${PLAYER}/G1CopierYoutube/
|
||||
ln -s "./${YID}.TW.json" "${ZFILE}.json"
|
||||
cd -
|
||||
else
|
||||
## REMOVE FILE FROM .yt-dlp.list - RETRY NEXT TIME
|
||||
grep -v -- "$YID" ${HOME}/.zen/.yt-dlp.list > /tmp/.yt-dlp.list
|
||||
mv /tmp/.yt-dlp.list ${HOME}/.zen/.yt-dlp.list
|
||||
fi
|
||||
|
||||
if [[ -s ~/.zen/game/players/${PLAYER}/G1CopierYoutube/${YID}.TW.json ]]; then
|
||||
rm "${HOME}/.zen/game/players/${PLAYER}/G1CopierYoutube/${ZFILE}.json" 2>/dev/null
|
||||
cd ${HOME}/.zen/game/players/${PLAYER}/G1CopierYoutube/
|
||||
ln -s "./${YID}.TW.json" "${ZFILE}.json"
|
||||
cd -
|
||||
else
|
||||
## REMOVE FILE FROM .yt-dlp.list - RETRY NEXT TIME
|
||||
grep -v -- "$YID" ${HOME}/.zen/.yt-dlp.list > /tmp/.yt-dlp.list
|
||||
mv /tmp/.yt-dlp.list ${HOME}/.zen/.yt-dlp.list
|
||||
continue
|
||||
fi
|
||||
|
||||
continue
|
||||
else
|
||||
# copying mp3
|
||||
echo "COPYING MP3 (!-q)"
|
||||
/usr/local/bin/yt-dlp -x --no-mtime --audio-format mp3 --embed-thumbnail --add-metadata \
|
||||
$BROWSER \
|
||||
--download-archive ${HOME}/.zen/.yt-dlp.mp3.list \
|
||||
-o "${HOME}/.zen/tmp/yt-dlp/$TITLE.%(ext)s" "${ZYURL}"
|
||||
|
||||
ZFILE="$TITLE.mp3"
|
||||
fi
|
||||
|
||||
echo
|
||||
|
||||
####################################################
|
||||
echo "FOUND : ~/.zen/tmp/yt-dlp/${ZFILE}"
|
||||
####################################################
|
||||
[[ -s ~/.zen/tmp/yt-dlp/${ZFILE} ]] \
|
||||
&& echo "FOUND : ~/.zen/tmp/yt-dlp/${ZFILE}"
|
||||
|
||||
FILE_BSIZE=$(du -b "${HOME}/.zen/tmp/yt-dlp/${ZFILE}" | awk '{print $1}')
|
||||
[[ ! $FILE_BSIZE ]] && echo "SIZE ERROR" && continue
|
||||
|
||||
FILE_SIZE=$(echo "${FILE_BSIZE}" | awk '{ split( "B KB MB GB TB PB" , v ); s=1; while( $1>1024 ){ $1/=1024; s++ } printf "%.2f %s", $1, v[s] }')
|
||||
echo "$boucle - ${ZFILE} - FILE SIZE = $FILE_SIZE ($FILE_BSIZE octets)"
|
||||
|
||||
espeak "GOOD! Video Number $boucle = $FILE_SIZE" > /dev/null 2>&1
|
||||
|
||||
echo
|
||||
|
||||
### CREATE GIF ANIM : make_video_gifanim_ipfs.sh
|
||||
$(${MY_PATH}/../tools/make_video_gifanim_ipfs.sh "${HOME}/.zen/tmp/yt-dlp" "${ZFILE}" | tail -n 1) ## export ANIMH
|
||||
echo "HOP=$HOP
|
||||
[[ ${isMP3} == "" ]] \
|
||||
&& $(${MY_PATH}/../tools/make_video_gifanim_ipfs.sh "${HOME}/.zen/tmp/yt-dlp" "${ZFILE}" | tail -n 1) \
|
||||
&& echo "HOP=$HOP
|
||||
ANIMH=$ANIMH
|
||||
PROBETIME=$PROBETIME
|
||||
DURATION=$DURATION
|
||||
|
@ -208,14 +230,29 @@ if [[ ! ${TIDDLER} ]]; then
|
|||
CHANNEL=$(/usr/local/bin/yt-dlp $BROWSER --print "%(channel)s" "${ZYURL}" | sed -r 's/\<./\U&/g' | sed 's/ //g') # CapitalGluedWords
|
||||
PLAYLIST=$(/usr/local/bin/yt-dlp $BROWSER --print "%(playlist)s" "${ZYURL}" | sed -r 's/\<./\U&/g' | sed 's/ //g')
|
||||
EXTRATAG="$CHANNEL $PLAYLIST"
|
||||
|
||||
if [[ ${isMP3} == "" ]]; then
|
||||
## PREPARE VIDEO HTML5 CODE
|
||||
TEXT="<video controls width=100% poster='/ipfs/"${ANIMH}"'>
|
||||
<source src='/ipfs/"${ILINK}"' type='"${MIME}"'>
|
||||
</video>
|
||||
<br>
|
||||
{{!!filesize}} - {{!!duration}} sec. - vtratio(dur) = {{!!vtratio}} ({{!!dur}})
|
||||
<br>
|
||||
<h1><a href='"${ZYURL}"'>"${TITLE}"</a></h1>"
|
||||
TEXT="<video controls width=100% poster='/ipfs/"${ANIMH}"'>
|
||||
<source src='/ipfs/"${ILINK}"' type='"${MIME}"'>
|
||||
Your browser does not support the video element.
|
||||
</video>
|
||||
<br>
|
||||
{{!!filesize}} - {{!!duration}} sec. - vtratio(dur) = {{!!vtratio}} ({{!!dur}})
|
||||
<br>
|
||||
<h1><a target='_blank' href='"${ZYURL}"'>Web2.0 Tube</a></h1>"
|
||||
|
||||
else
|
||||
TEXT="<audio controls>
|
||||
<source src='/ipfs/"${ILINK}"' type='"${MIME}"'>
|
||||
Your browser does not support the audio element.
|
||||
</audio>
|
||||
<br>
|
||||
{{!!filesize}} - {{!!duration}} sec. - vtratio(dur) = {{!!vtratio}} ({{!!dur}})
|
||||
<br>
|
||||
<h1><a target='_blank' href='"${ZYURL}"'>Web2.0 Tube</a></h1>"
|
||||
|
||||
fi
|
||||
|
||||
end=`date +%s`
|
||||
dur=`expr $end - $start`
|
||||
|
@ -228,78 +265,80 @@ if [[ ! ${TIDDLER} ]]; then
|
|||
[[ ! isLAN ]] && TEXT="$TEXT <<hide tiddler-controls>>"
|
||||
echo $TEXT
|
||||
|
||||
TIDDLER="${HOME}/.zen/tmp/${IPFSNODEID}/G1CopierYoutube/${PLAYER}/${YID}.TW.json"
|
||||
mkdir -p ${HOME}/.zen/tmp/${IPFSNODEID}/G1CopierYoutube/${PLAYER} ## MISSING FOR FIRST RUN
|
||||
TIDDLER="${HOME}/.zen/tmp/${IPFSNODEID}/G1CopierYoutube/${PLAYER}/${YID}.TW.json"
|
||||
|
||||
echo '[
|
||||
{
|
||||
"created": "'${MOATS}'",
|
||||
"resolution": "'${RES}'",
|
||||
"duree": "'${DUREE}'",
|
||||
"duration": "'${DURATION}'",
|
||||
"giftime": "'${PROBETIME}'",
|
||||
"gifanime": "'/ipfs/${ANIMH}'",
|
||||
"modified": "'${MOATS}'",
|
||||
"title": "'${ZFILE}'",
|
||||
"type": "'text/vnd.tiddlywiki'",
|
||||
"vtratio": "'${VTRATIO}'",
|
||||
"text": "'$TEXT'",
|
||||
"g1pub": "'${G1PUB}'",
|
||||
"mime": "'${MIME}'",
|
||||
"size": "'${FILE_BSIZE}'",
|
||||
"filesize": "'${FILE_SIZE}'",
|
||||
"sec": "'${SEC}'",
|
||||
"dur": "'${dur}'",
|
||||
"ipfs": "'/ipfs/${ILINK}'",
|
||||
"youtubeid": "'${YID}'",
|
||||
"zurl": "'${ZYURL}'",
|
||||
"issuer": "'${PLAYER}'",
|
||||
"tags": "'ipfs G1CopierYoutube ${PLAYER} ${EXTRATAG} ${MIME} ${CTITLE}'"
|
||||
}
|
||||
]
|
||||
' > ${TIDDLER}
|
||||
echo '[
|
||||
{
|
||||
"created": "'${MOATS}'",
|
||||
"resolution": "'${RES}'",
|
||||
"duree": "'${DUREE}'",
|
||||
"duration": "'${DURATION}'",
|
||||
"giftime": "'${PROBETIME}'",
|
||||
"gifanime": "'/ipfs/${ANIMH}'",
|
||||
"modified": "'${MOATS}'",
|
||||
"title": "'${ZFILE}'",
|
||||
"type": "'text/vnd.tiddlywiki'",
|
||||
"vtratio": "'${VTRATIO}'",
|
||||
"text": "'$TEXT'",
|
||||
"g1pub": "'${G1PUB}'",
|
||||
"mime": "'${MIME}'",
|
||||
"size": "'${FILE_BSIZE}'",
|
||||
"filesize": "'${FILE_SIZE}'",
|
||||
"sec": "'${SEC}'",
|
||||
"dur": "'${dur}'",
|
||||
"ipfs": "'/ipfs/${ILINK}'",
|
||||
"youtubeid": "'${YID}'",
|
||||
"zurl": "'${ZYURL}'",
|
||||
"issuer": "'${PLAYER}'",
|
||||
"tags": "'ipfs G1CopierYoutube ${PLAYER} ${EXTRATAG} ${MIME} ${CTITLE}'"
|
||||
}
|
||||
]
|
||||
' > ${TIDDLER}
|
||||
|
||||
tot=$((tot+1))
|
||||
tot=$((tot+1))
|
||||
|
||||
else
|
||||
###################################################################
|
||||
#~ echo "${TIDDLER} FOUND"
|
||||
###################################################################
|
||||
## TODO : ADD EMAIL TAG ( TIMESTAMP & ADD SIGNATURE over existing ones)
|
||||
continue
|
||||
fi
|
||||
else
|
||||
###################################################################
|
||||
#~ echo "${TIDDLER} FOUND"
|
||||
###################################################################
|
||||
## TODO : ADD EMAIL TAG ( TIMESTAMP & ADD SIGNATURE over existing ones)
|
||||
continue
|
||||
fi
|
||||
|
||||
cp -f "${TIDDLER}" "${HOME}/.zen/game/players/${PLAYER}/G1CopierYoutube/"
|
||||
cp -f "${TIDDLER}" "${HOME}/.zen/game/players/${PLAYER}/G1CopierYoutube/"
|
||||
|
||||
|
||||
#################################################################
|
||||
### ADDING $YID.TW.json to ASTRONAUTENS INDEX.html
|
||||
#################################################################
|
||||
echo "=========================="
|
||||
echo "Adding $YID tiddler to TW /ipns/$ASTRONAUTENS "
|
||||
echo "=========================="
|
||||
echo "Adding $YID tiddler to TW /ipns/$ASTRONAUTENS "
|
||||
|
||||
rm -f ~/.zen/tmp/${IPFSNODEID}/newindex.html
|
||||
rm -f ~/.zen/tmp/${IPFSNODEID}/newindex.html
|
||||
|
||||
echo ">>> Importing ${TIDDLER}"
|
||||
echo ">>> Importing ${TIDDLER}"
|
||||
|
||||
tiddlywiki --load ${INDEX} \
|
||||
--import "${TIDDLER}" "application/json" \
|
||||
--output ~/.zen/tmp/${IPFSNODEID} --render "$:/core/save/all" "newindex.html" "text/plain"
|
||||
tiddlywiki --load ${INDEX} \
|
||||
--import "${TIDDLER}" "application/json" \
|
||||
--output ~/.zen/tmp/${IPFSNODEID} --render "$:/core/save/all" "newindex.html" "text/plain"
|
||||
|
||||
if [[ -s ~/.zen/tmp/${IPFSNODEID}/newindex.html ]]; then
|
||||
if [[ -s ~/.zen/tmp/${IPFSNODEID}/newindex.html ]]; then
|
||||
|
||||
## COPY JSON TIDDLER TO PLAYER
|
||||
cd ${HOME}/.zen/game/players/${PLAYER}/G1CopierYoutube/
|
||||
ln -s "./$YID.TW.json" "${ZFILE}.json"
|
||||
cd -
|
||||
## COPY JSON TIDDLER TO PLAYER
|
||||
cd ${HOME}/.zen/game/players/${PLAYER}/G1CopierYoutube/
|
||||
ln -s "./$YID.TW.json" "${ZFILE}.json"
|
||||
cd -
|
||||
|
||||
[[ $(diff ~/.zen/tmp/${IPFSNODEID}/newindex.html ${INDEX} ) ]] \
|
||||
&& mv ~/.zen/tmp/${IPFSNODEID}/newindex.html ${INDEX} \
|
||||
&& echo "===> Mise à jour ${INDEX}"
|
||||
[[ $(diff ~/.zen/tmp/${IPFSNODEID}/newindex.html ${INDEX} ) ]] \
|
||||
&& mv ~/.zen/tmp/${IPFSNODEID}/newindex.html ${INDEX} \
|
||||
&& echo "===> Mise à jour ${INDEX}"
|
||||
|
||||
else
|
||||
echo "Problem with tiddlywiki command. Missing ~/.zen/tmp/${IPFSNODEID}/newindex.html"
|
||||
echo "XXXXXXXXXXXXXXXXXXXXXXX"
|
||||
fi
|
||||
else
|
||||
echo "Problem with tiddlywiki command. Missing ~/.zen/tmp/${IPFSNODEID}/newindex.html"
|
||||
echo "XXXXXXXXXXXXXXXXXXXXXXX"
|
||||
break
|
||||
fi
|
||||
|
||||
done < ~/.zen/tmp/${IPFSNODEID}/yt-dlp.cache.${PLAYER} # FINISH YID loop 1
|
||||
|
||||
|
|
|
@ -168,8 +168,26 @@ while read TITRE; do
|
|||
TEXT="<h1>{{!!titre}} ({{!!year}})</h1><h2>{{!!sub}}</h2>
|
||||
{{!!desc}}<br>
|
||||
<a target='youtube' href='https://youtu.be/"${YID}"'>Bande Annonce</a>
|
||||
<h3>Envoyez un don. Recevez le lien vers ce film dans votre messagerie Cesium+</h3>
|
||||
<img width='300' src='/ipfs/"${PV}"'>"
|
||||
<br>
|
||||
<h3>Voir ce Film:</h3>
|
||||
<h4>Installez Cesium+</h4>
|
||||
<table><tr>
|
||||
<td>
|
||||
<img width='240' src='/ipfs/QmXExw6Sh4o4rSjBQjU9PGU7BCGwb1jybrKEeaZGUNRCRE'>
|
||||
</td><td>
|
||||
<img width='240' src='/ipfs/QmP3qwEnVX9zSsyKAwuH6nhDPfrRoMbAfszrtdkLGgo7LQ'>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
<h4>Flashez, envoyez un don...</h4>
|
||||
<br>ce soir,<br>recevez le lien dans votre messagerie.
|
||||
</td><td>
|
||||
<img width='300' src='/ipfs/"${PV}"'>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
"
|
||||
|
||||
## MAKING TIDDLER
|
||||
echo "## Creation json tiddler ~/.zen/game/players/${PLAYER}/G1Kodi/${TITLE}.dragdrop.json"
|
||||
|
|
|
@ -1,77 +0,0 @@
|
|||
#!/bin/bash
|
||||
########################################################################
|
||||
# Version: 0.5
|
||||
# License: AGPL-3.0 (https://choosealicense.com/licenses/agpl-3.0/)
|
||||
########################################################################
|
||||
# PAD COCODING : https://pad.p2p.legal/s/G1Monit
|
||||
# KODI SERVICE : Publish and Merge Friends Monit Movies into RSS Stream
|
||||
########################################################################
|
||||
########################################################################
|
||||
MY_PATH="`dirname \"$0\"`" # relative
|
||||
MY_PATH="`( cd \"$MY_PATH\" && pwd )`" # absolutized and normalized
|
||||
ME="${0##*/}"
|
||||
|
||||
. "${MY_PATH}/../tools/my.sh"
|
||||
|
||||
echo "$ME RUNNING"
|
||||
########################################################################
|
||||
## SCAN FOR PAYMENT HISTORY
|
||||
## BUILD python NetworkX script
|
||||
## SEND MESSAGE TO SOURCEG1PUB
|
||||
########################################################################
|
||||
## THIS SCRIPT IS RUN WHEN A WALLET RECEIVED A TRANSACTION WITH COMMENT STARTING WITH N1Monit
|
||||
########################################################################
|
||||
INDEX="$1"
|
||||
[[ ! ${INDEX} ]] && INDEX="$HOME/.zen/game/players/.current/ipfs/moa/index.html"
|
||||
[[ ! -s ${INDEX} ]] && echo "ERROR - Please provide path to source TW index.html" && exit 1
|
||||
[[ ! -s ${INDEX} ]] && echo "ERROR - Fichier TW absent. ${INDEX}" && exit 1
|
||||
|
||||
PLAYER="$2"
|
||||
[[ ! ${PLAYER} ]] && PLAYER="$(cat ~/.zen/game/players/.current/.player 2>/dev/null)"
|
||||
[[ ! ${PLAYER} ]] && echo "ERROR - Please provide PLAYER" && exit 1
|
||||
|
||||
ASTRONAUTENS=$(ipfs key list -l | grep -w ${PLAYER} | cut -d ' ' -f1)
|
||||
[[ ! ${ASTRONAUTENS} ]] && echo "ERROR - Clef IPNS ${PLAYER} introuvable!" && exit 1
|
||||
|
||||
G1PUB=$(cat ~/.zen/game/players/${PLAYER}/.g1pub)
|
||||
[[ ! $G1PUB ]] && echo "ERROR - G1PUB ${PLAYER} VIDE" && exit 1
|
||||
|
||||
# Extract tag=tube from TW
|
||||
MOATS="$3"
|
||||
[[ ! ${MOATS} ]] && MOATS=$(date -u +"%Y%m%d%H%M%S%4N")
|
||||
|
||||
IPUBKEY="$4"
|
||||
[[ ! ${IPUBKEY} ]] && echo "ERROR - MISSING COMMAND ISSUER !" && exit 1
|
||||
|
||||
TH="$5"
|
||||
[[ ! ${TH} ]] && echo "ERROR - MISSING COMMAND TITLE HASH ADDRESS !" && exit 1
|
||||
|
||||
echo "${PLAYER} : ${IPUBKEY} SEEKING FOR ${TH}
|
||||
${ASTRONAUTENS} ${G1PUB} "
|
||||
|
||||
#~ ###################################################################
|
||||
#~ ## CREATE APP NODE PLAYER PUBLICATION DIRECTORY
|
||||
#~ ###################################################################
|
||||
mkdir -p $HOME/.zen/tmp/${MOATS} && echo $HOME/.zen/tmp/${MOATS}
|
||||
|
||||
## EXERCICE ### TODO ###
|
||||
## USE https://networkx.org/documentation/stable/tutorial.html#
|
||||
## EXTRACT HISTORY WITH jaklis
|
||||
## CREATE A PYTHON SCRIPT CREATING the 1st level of TX
|
||||
echo "import networkx as nx
|
||||
import matplotlib.pyplot as plt
|
||||
G = nx.Graph()
|
||||
...
|
||||
G.add_node(SRCPUB)
|
||||
G.add_node(DSTPUB)
|
||||
G.edges[SRCPUB, DSTPUB]['g1'] = AMOUNT
|
||||
...
|
||||
nx.draw(G, with_labels=True, font_weight='bold')
|
||||
plt.show()
|
||||
"
|
||||
## EXTEND N1Script WITH MORE FUNCTIONS... exemples ...
|
||||
## N1Vote: permet de pratiquer le Vote Quadratique
|
||||
## N1Conf: permet de signifier la Confiance
|
||||
## ...
|
||||
|
||||
exit 0
|
|
@ -0,0 +1,307 @@
|
|||
#!/bin/bash
|
||||
########################################################################
|
||||
# Version: 0.1
|
||||
# License: AGPL-3.0 (https://choosealicense.com/licenses/agpl-3.0/)
|
||||
########################################################################
|
||||
MY_PATH="`dirname \"$0\"`" # relative
|
||||
MY_PATH="`( cd \"$MY_PATH\" && pwd )`" # absolutized and normalized
|
||||
ME="${0##*/}"
|
||||
|
||||
. "${MY_PATH}/../tools/my.sh"
|
||||
|
||||
## IT SEARCH FOR CURRENT TW ForkUPlanetZERO tag
|
||||
## IT MAKES $HOME/.zen/game/players/${PLAYER}/.ipfs/${UPNAME}.swarm.key
|
||||
## IT CHECKS FOR SAME UPNAME WISH IN FRIENDS TW
|
||||
#~ echo "(✜‿‿✜) CURRENT Fork UPlanet
|
||||
#~ This program makes Player generate or join a private IPFS swarm
|
||||
#~ All friends with the same wish will share the SECRET
|
||||
#~ then any can activate a new ipfs daemon connected to that private ZONE
|
||||
## TIDDLER can contain parameters for UPlanet activation
|
||||
|
||||
echo "$ME RUNNING"
|
||||
|
||||
CURRENT=$(cat ~/.zen/game/players/.current/.player 2>/dev/null)
|
||||
|
||||
########################################################################
|
||||
[[ ! ${INDEX} ]] && INDEX="$HOME/.zen/game/players/.current/ipfs/moa/index.html"
|
||||
[[ ! -s ${INDEX} ]] && echo "ERROR - Please provide path to source TW index.html" && exit 1
|
||||
[[ ! -s ${INDEX} ]] && echo "ERROR - Fichier TW absent. ${INDEX}" && exit 1
|
||||
ORIGININDEX=${INDEX}
|
||||
|
||||
[[ ! ${PLAYER} ]] && PLAYER="$(cat ~/.zen/game/players/.current/.player 2>/dev/null)"
|
||||
[[ ! ${PLAYER} ]] && echo "ERROR - Please provide PLAYER" && exit 1
|
||||
|
||||
ASTRONAUTENS=$(ipfs key list -l | grep -w ${PLAYER} | cut -d ' ' -f1)
|
||||
[[ ! ${ASTRONAUTENS} ]] && echo "ERROR - Clef IPNS ${PLAYER} introuvable!" && exit 1
|
||||
|
||||
G1PUB=$(cat ~/.zen/game/players/${PLAYER}/.g1pub)
|
||||
[[ ! $G1PUB ]] && echo "ERROR - G1PUB ${PLAYER} VIDE" && exit 1
|
||||
|
||||
[[ ! ${MOATS} ]] && MOATS=$(date -u +"%Y%m%d%H%M%S%4N")
|
||||
|
||||
echo "${PLAYER} ${INDEX} ${ASTRONAUTENS} ${G1PUB} "
|
||||
mkdir -p $HOME/.zen/tmp/${MOATS}
|
||||
|
||||
PLAYERPUB=$(cat $HOME/.zen/game/players/${PLAYER}/secret.dunikey | grep pub | cut -d ' ' -f 2)
|
||||
[[ "${PLAYERPUB}" == "" ]] && echo "FATAL ERROR PLAYER KEY MISSING" && exit 1
|
||||
|
||||
###################################################################
|
||||
## tag[ForkUPlanetZERO] TW EXTRACTION
|
||||
###################################################################
|
||||
tiddlywiki --load ${INDEX} \
|
||||
--output ~/.zen/tmp/${MOATS} \
|
||||
--render '.' 'G1ForkUPlanetZERO.json' 'text/plain' '$:/core/templates/exporters/JsonFile' 'exportFilter' '[tag[ForkUPlanetZERO]]'
|
||||
|
||||
## KEEP ONLY ONE tag[ForkUPlanetZERO] WISH !
|
||||
echo "PREPARE INLINE JSON : cat ~/.zen/tmp/${MOATS}/G1ForkUPlanetZERO.json | jq -rc .[]"
|
||||
cat ~/.zen/tmp/${MOATS}/G1ForkUPlanetZERO.json \
|
||||
| jq -rc .[] | head -n 1 > ~/.zen/tmp/${MOATS}/ONEuplanet.json
|
||||
|
||||
JSONUPLANET="${HOME}/.zen/tmp/${MOATS}/ONEuplanet.json"
|
||||
|
||||
[[ ! -s ${JSONUPLANET} ]] \
|
||||
&& echo "NO tag[ForkUPlanetZERO] for $PLAYER" && exit 0
|
||||
|
||||
UPNAME=$(cat ${JSONUPLANET} | jq -r ".title") # What name is given ?
|
||||
[[ "${UPNAME}" == "null" || "${UPNAME}" == "" ]] \
|
||||
&& echo "NO FORK UPLANET NAME .title MISSING" && exit 1
|
||||
|
||||
HASH=$(cat ${JSONUPLANET} | jq -r ".hash") ## What text hash it has ?
|
||||
SECRET=$(cat ${JSONUPLANET} | jq -r ".secret") ## What is secret ?
|
||||
|
||||
CONTRACT=$(cat ${JSONUPLANET} | jq -r ".text") ## What contract is applying ?
|
||||
[[ "${CONTRACT}" == "null" || "${CONTRACT}" == "" ]] && CONTRACT="☼☼☼☼☼ floating points ☼☼☼☼☼"
|
||||
|
||||
AHAH=$(echo $CONTRACT | sha512sum | cut -d ' ' -f 1)
|
||||
echo "%%% CONTRACT HASH %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%"
|
||||
echo "$AHAH"
|
||||
echo "$HASH"
|
||||
[[ $AHAH != $HASH ]] && echo " - WARNING - CONTRACT CHANGED - WARNING -"
|
||||
|
||||
## CHECK EXISTING ${UPNAME}.swarm.key
|
||||
[[ ! -s $HOME/.zen/game/players/${PLAYER}/.ipfs/${UPNAME}.swarm.key ]] \
|
||||
&& MSG=$MSG" ${PLAYER}/.ipfs/${UPNAME}.swarm.key NOT FOUND" && ERR="NO LOCAL KEY"
|
||||
|
||||
## CREATE 32 octets swarm.key ( maximum individual Fork : octal 8^32 = decimal 7,922816251×10^28 )
|
||||
echo -e '/key/swarm/psk/1.0.0/\n/base16/' > $HOME/.zen/tmp/${MOATS}/swarm.key
|
||||
head -c 32 /dev/urandom | od -t x1 -A none - | tr -d '\n ' >> $HOME/.zen/tmp/${MOATS}/swarm.key
|
||||
echo '' >> $HOME/.zen/tmp/${MOATS}/swarm.key
|
||||
|
||||
## EXTRACT CURRENT SECRET FROM JSONUPLANET
|
||||
# which is PLAYER pub encrypted base16 of swarm.key
|
||||
###################################################
|
||||
## check if we have a player slot with cyphered key
|
||||
IN16=$(cat ${JSONUPLANET} | jq -r '."${PLAYER}"')
|
||||
## secret is only decrypted by wish source player
|
||||
[[ ${IN16} == "" || ${IN16} == "null" ]] \
|
||||
&& IN16=$(cat ${JSONUPLANET} | jq -r ".secret") && echo "get IN16 from secret field"
|
||||
|
||||
if [[ ${IN16} == "" || ${IN16} == "null" ]]; then
|
||||
|
||||
echo "NO SECRET FOUND" \
|
||||
&& echo ">> 🔑 ${UPNAME} SECRET SWARM.KEY GENERATION 🔑" \
|
||||
&& cat $HOME/.zen/tmp/${MOATS}/swarm.key \
|
||||
&& cp $HOME/.zen/tmp/${MOATS}/swarm.key $HOME/.zen/game/players/${PLAYER}/.ipfs/${UPNAME}.swarm.key \
|
||||
&& echo "------- KEY LOADED -----> ${PLAYER}/.ipfs/${UPNAME}.swarm.key"
|
||||
|
||||
## THIS IS A PRIMAL TIDDLER
|
||||
|
||||
else
|
||||
echo "VERIFICATION ${IN16}"
|
||||
## DEBASE16
|
||||
echo "${IN16}" | base16 -d \
|
||||
> ~/.zen/tmp/${MOATS}/swarmkey.crypted
|
||||
|
||||
echo ">> natools.py decrypt "
|
||||
## DECODING with PLAYER secret.dunikey
|
||||
${MY_PATH}/../tools/natools.py decrypt \
|
||||
-f pubsec \
|
||||
-k $HOME/.zen/game/players/${PLAYER}/secret.dunikey \
|
||||
-i ~/.zen/tmp/${MOATS}/swarmkey.crypted \
|
||||
-o ~/.zen/tmp/${MOATS}/swarmkey.decrypted
|
||||
|
||||
echo ">> comparing decrypted key"
|
||||
## CHEK KEY WITH ACTUAL ONE
|
||||
[[ $(diff ~/.zen/tmp/${MOATS}/swarmkey.decrypted $HOME/.zen/game/players/${PLAYER}/.ipfs/${UPNAME}.swarm.key) ]] \
|
||||
&& echo "- 📸 WARNING 📸 - UPDATING ${UPNAME}.swarm.key ..." && ERR="TW SWARM CHANGED"
|
||||
|
||||
## UPDATE PLAYER LOCAL SWARMKEY FROM VALUE FOUND IN HIS OWN WISH TIDDLER !
|
||||
[[ -s ~/.zen/tmp/${MOATS}/swarmkey.decrypted ]] \
|
||||
&& cp ~/.zen/tmp/${MOATS}/swarmkey.decrypted \
|
||||
$HOME/.zen/game/players/${PLAYER}/.ipfs/${UPNAME}.swarm.key \
|
||||
&& echo "PLAYER ${UPNAME}.swarm.key IS VALID" \
|
||||
|| { echo "ERROR PLAYER ${UPNAME}.swarm.key IS NOT VALID"; exit 1; }
|
||||
|
||||
fi
|
||||
|
||||
#~ (RE)CREATE SECRET
|
||||
${MY_PATH}/../tools/natools.py encrypt \
|
||||
-p ${PLAYERPUB} \
|
||||
-i $HOME/.zen/game/players/${PLAYER}/.ipfs/${UPNAME}.swarm.key \
|
||||
-o $HOME/.zen/game/players/${PLAYER}/.ipfs/${UPNAME}.swarm.key.enc
|
||||
ENCODING=$(cat $HOME/.zen/game/players/${PLAYER}/.ipfs/${UPNAME}.swarm.key.enc | base16)
|
||||
rm $HOME/.zen/game/players/${PLAYER}/.ipfs/${UPNAME}.swarm.key.enc
|
||||
echo "==> base16 ${PLAYER} encrypted swarm.key is secret"
|
||||
#~ echo "${SECRET}"
|
||||
#~ echo "${ENCODING}"
|
||||
|
||||
#################################################################
|
||||
## MAKE KEY ENCODING FOR FRIENDS
|
||||
friends=($(ls ~/.zen/game/players/${PLAYER}/FRIENDS | grep "@" 2>/dev/null))
|
||||
for f in ${friends[@]};
|
||||
do
|
||||
## Extract FRIENDG1PUB from TW (Astroport Tiddler)
|
||||
ftw=${HOME}/.zen/game/players/${PLAYER}/FRIENDS/${f}/index.html
|
||||
[[ ! -s ${ftw} ]] && echo "FRIENDS/${f} : $(cat "$HOME/.zen/game/players/${PLAYER}/FRIENDS/${f}")" && continue
|
||||
|
||||
## Check if "f=PRESIDENT" in my friend "email" TW
|
||||
tiddlywiki --load ${ftw} --output ~/.zen/tmp/${MOATS} --render '.' "${f}_.json" 'text/plain' '$:/core/templates/exporters/JsonFile' 'exportFilter' "${f}"
|
||||
PRESIDENT=$(cat ~/.zen/tmp/${MOATS}/${f}_.json | jq -r .[].president)
|
||||
[[ ${PRESIDENT} != ${f} ]] && echo "${f} Astroport is run by ${PRESIDENT}... No fork..." && continue
|
||||
|
||||
## Check if Astroport is different from my node
|
||||
tiddlywiki --load ${ftw} --output ~/.zen/tmp/${MOATS} --render '.' "${f}_Astroport.json" 'text/plain' '$:/core/templates/exporters/JsonFile' 'exportFilter' 'Astroport'
|
||||
FRIENDG1PUB=$(cat ~/.zen/tmp/${MOATS}/${f}_Astroport.json | jq -r .[].g1pub)
|
||||
echo "___________________"
|
||||
echo "$f : $FRIENDG1PUB"
|
||||
|
||||
ASTROPORT=$(cat ~/.zen/tmp/${MOATS}/${f}_Astroport.json | jq -r .[].astroport)
|
||||
[[ ${ASTROPORT} != "/ipns/${IPFSNODEID}" ]] \
|
||||
&& echo "FOREIGN ASTROPORT=${ASTROPORT}" \
|
||||
&& foreign="YES" \
|
||||
&& ASTROPORTS=("${ASTROPORTS[@]}" "${ASTROPORT}")
|
||||
|
||||
if [[ ${FRIENDG1PUB} && ${FRIENDG1PUB} != "null" ]]; then
|
||||
|
||||
#~ CHECK IF player ALREADY IN JSON
|
||||
echo "cat ${JSONUPLANET} | jq -r '.\"${f}\"'"
|
||||
FRIENDIN=$(cat ${JSONUPLANET} | jq -r '."${f}"')
|
||||
[[ "${FRIENDIN}" != "null" && "${FRIENDIN}" != "" ]] \
|
||||
&& echo "${FRIENDIN} ALREADY IN FORK ${UPNAME} TIDDLER." \
|
||||
&& continue
|
||||
|
||||
echo "#~ Create FRIENDG1PUB encrypted version of swarm.key"
|
||||
${MY_PATH}/../tools/natools.py encrypt \
|
||||
-p ${FRIENDG1PUB} \
|
||||
-i $HOME/.zen/game/players/${PLAYER}/.ipfs/${UPNAME}.swarm.key \
|
||||
-o $HOME/.zen/game/players/${PLAYER}/.ipfs/${UPNAME}.${f}.swarm.key.enc
|
||||
FENCODING=$(cat $HOME/.zen/game/players/${PLAYER}/.ipfs/${UPNAME}.${f}.swarm.key.enc | base16)
|
||||
rm $HOME/.zen/game/players/${PLAYER}/.ipfs/${UPNAME}.${f}.swarm.key.enc
|
||||
|
||||
echo "## Addd email=crypt(swarmkey) field to ${JSONUPLANET} tiddler."
|
||||
cat ${JSONUPLANET} | jq '. | ."_f_" = "_FENCODING_"' > ~/.zen/tmp/${MOATS}/json.up \
|
||||
&& sed -i 's/_f_/'"$f"'/g; s/_FENCODING_/'"$FENCODING"'/g' ~/.zen/tmp/${MOATS}/json.up \
|
||||
&& mv ~/.zen/tmp/${MOATS}/json.up ${JSONUPLANET}
|
||||
|
||||
else
|
||||
echo "- FATAL ERROR - Friend TW ${ftw} is broken !!"
|
||||
continue
|
||||
|
||||
fi
|
||||
|
||||
if [[ ${foreign} == "YES" ]]; then
|
||||
echo "## Check if friend have an ${UPNAME} tiddler and that secret is the same"
|
||||
## SEARCH FOR ${UPNAME} tiddler IN FRIEND TW
|
||||
tiddlywiki --load ${ftw} --output ~/.zen/tmp/${MOATS} \
|
||||
--render '.' "${f}_${UPNAME}.json" 'text/plain' '$:/core/templates/exporters/JsonFile' 'exportFilter' "${UPNAME}"
|
||||
|
||||
## CONTROL SWARMKEY DECODING (must be equal)
|
||||
OUT16=$(cat ~/.zen/tmp/${MOATS}/${f}_${UPNAME}.json | jq -r '[]."'${PLAYER}'"')
|
||||
echo "${IN16}"
|
||||
echo "${OUT16}"
|
||||
|
||||
[[ ${IN16} == ${OUT16} ]] \
|
||||
&& echo "OK STATIONS +1 : TW sharing the same wish. " \
|
||||
&& OKSTATIONS=("${OKSTATIONS[@]}" "${ASTROPORT}") \
|
||||
|| echo "NO GOOD! TW not synchronized."
|
||||
|
||||
foreign=""
|
||||
fi
|
||||
|
||||
done
|
||||
|
||||
ZENSTATIONS=($(echo "${OKSTATIONS[@]}" | tr ' ' '\n' | sort -u)) ## REMOVE DUPLICATE
|
||||
echo "<<< My Friends are located in ${#ASTROPORTS[@]} ASTROPORT(s) : ${#ZENSTATIONS[@]} are OK >>>"
|
||||
|
||||
## IPFSNODEID IS FORKING TO NEW UPLANET
|
||||
if [[ ${#ZENSTATIONS[@]} -ge 3 ]]; then
|
||||
echo "UPlanet.ZERO /// ENTERING WARPING ZONE /// ${UPNAME} ACTIVATION"
|
||||
## HERE each PLAYER share the same wish
|
||||
# only secret field is "!=" in each, as it is self encoding key
|
||||
# we must find our email="The same" in each friends TW
|
||||
## CONTROL
|
||||
# round looking in friends TW... Can be done before...
|
||||
|
||||
## APPLY ?!
|
||||
##################################################
|
||||
# Let's check and prepare Astroport mutation...
|
||||
# tools/my.sh
|
||||
SECRETNAME=$(cat $HOME/.zen/game/players/${PLAYER}/.ipfs/${UPNAME}.swarm.key | tail -n 1)
|
||||
echo "SECRETNAME=$SECRETNAME"
|
||||
|
||||
# Prepare "new_straps.list" from WAN only
|
||||
for station in ${ZENSTATIONS[@]}; do
|
||||
[[ ! -s ~/.zen/tmp/swarm/${station}/myIPFS.txt ]] \
|
||||
&& echo "Missing swarm/${station}/myIPFS.txt" \
|
||||
&& continue
|
||||
|
||||
bootnode=$(cat ~/.zen/tmp/swarm/${station}/myIPFS.txt)
|
||||
echo "${bootnode}"
|
||||
iptype=$(echo ${bootnode} | cut -d '/' -f 2)
|
||||
nodeip=$(echo ${bootnode} | cut -d '/' -f 3)
|
||||
isnodeipLAN=$(echo $nodeip | grep -E "/(^127\.)|(^192\.168\.)|(^10\.)|(^172\.1[6-9]\.)|(^172\.2[0-9]\.)|(^172\.3[0-1]\.)|(^::1$)|(^[fF][cCdD])/")
|
||||
echo " ${iptype} address :: ${nodeip} (= ${isnodeipLAN})"
|
||||
[[ ${nodeip} == ${isnodeipLAN} ]] && echo "LAN NODE... no good for bootstrap" && continue
|
||||
|
||||
echo "### OK adding to new_straps.list"
|
||||
echo "${bootnode}" >> ~/.zen/tmp/${MOATS}/new_straps.list
|
||||
|
||||
done
|
||||
|
||||
# make G1PalPay refuse not from "UPlanet Master Key" primal TX
|
||||
# STABLE COIN : activate OpenCollective sync
|
||||
# and adapt 20H12.process.sh
|
||||
|
||||
|
||||
# now we add key into ~/.ipfs/swarm.key
|
||||
#~ cp $HOME/.zen/game/players/${PLAYER}/.ipfs/${UPNAME}.swarm.key ~/.ipfs/swarm.key
|
||||
# it will make IPFSNODEID restarting in private mode
|
||||
|
||||
fi
|
||||
|
||||
## UPDATE JSONUPLANET
|
||||
cat ${JSONUPLANET} | jq '. | ."UPname" = "_UPNAME_"' > ~/.zen/tmp/${MOATS}/json.up \
|
||||
&& sed -i 's/_UPNAME_/'"$UPNAME"'/g' ~/.zen/tmp/${MOATS}/json.up \
|
||||
&& mv ~/.zen/tmp/${MOATS}/json.up ${JSONUPLANET}
|
||||
cat ${JSONUPLANET} | jq '. | ."hash" = "_HASH_"' > ~/.zen/tmp/${MOATS}/json.up \
|
||||
&& sed -i 's/_HASH_/'"$AHAH"'/g' ~/.zen/tmp/${MOATS}/json.up \
|
||||
&& mv ~/.zen/tmp/${MOATS}/json.up ${JSONUPLANET}
|
||||
cat ${JSONUPLANET} | jq '. | ."secret" = "_SECRET_"' > ~/.zen/tmp/${MOATS}/json.up \
|
||||
&& sed -i 's/_SECRET_/'"$ENCODING"'/g' ~/.zen/tmp/${MOATS}/json.up \
|
||||
&& mv ~/.zen/tmp/${MOATS}/json.up ${JSONUPLANET}
|
||||
|
||||
jq '.[] + {created: $MOATS, modified: $MOATS}' --arg MOATS "$MOATS" "${JSONUPLANET}" > ~/.zen/tmp/${MOATS}/json.up \
|
||||
&& mv ~/.zen/tmp/${MOATS}/json.up ${JSONUPLANET}
|
||||
|
||||
|
||||
### PUT BACK IN TW
|
||||
tiddlywiki --load ${INDEX} \
|
||||
--import ${JSONUPLANET} "application/json" \
|
||||
--output ~/.zen/tmp/${MOATS} --render "$:/core/save/all" "newindex.html" "text/plain"
|
||||
|
||||
if [[ -s ~/.zen/tmp/${MOATS}/newindex.html ]]; then
|
||||
|
||||
[[ $(diff ~/.zen/tmp/${MOATS}/newindex.html ${INDEX} ) ]] \
|
||||
&& mv ~/.zen/tmp/${MOATS}/newindex.html ${INDEX} \
|
||||
&& echo "===> Mise à jour ${INDEX}"
|
||||
|
||||
cat ${JSONUPLANET} | jq
|
||||
|
||||
else
|
||||
echo "Problem with tiddlywiki command. Missing ~/.zen/tmp/${MOATS}/newindex.html"
|
||||
echo "XXXXXXXXXXXXXXXXXXXXXXX"
|
||||
fi
|
||||
|
||||
rm -Rf ~/.zen/tmp/${MOATS}
|
||||
|
||||
exit 0
|
|
@ -54,9 +54,9 @@ for VUID in $(cat ~/.zen/bunkerbox/crowd.json | jq -r '.posts | .[] | .video.id'
|
|||
|
||||
echo ">>>>>>>>>>>>>>>> Downloading VIDEO"
|
||||
# Choose 360p or 480p or 240p
|
||||
VSIZE=360 && VIDEOHEAD=$(cat ~/.zen/bunkerbox/$VUID/$VUID.m3u8 | grep -B1 ${VSIZE}p | head -n 1) && VIDEOSRC=$(cat ~/.zen/bunkerbox/$VUID/$VUID.m3u8 | grep ${VSIZE}p | tail -n 1 | cut -f 1 -d '.')
|
||||
[[ "$VIDEOSRC" == "" ]] && VSIZE=480 && VIDEOHEAD=$(cat ~/.zen/bunkerbox/$VUID/$VUID.m3u8 | grep -B1 ${VSIZE}p | head -n 1) && VIDEOSRC=$(cat ~/.zen/bunkerbox/$VUID/$VUID.m3u8 | grep ${VSIZE}p | tail -n 1 | cut -f 1 -d '.')
|
||||
[[ "$VIDEOSRC" == "" ]] && VSIZE=240 &&VIDEOHEAD=$(cat ~/.zen/bunkerbox/$VUID/$VUID.m3u8 | grep -B1 ${VSIZE}p | head -n 1) && VIDEOSRC=$(cat ~/.zen/bunkerbox/$VUID/$VUID.m3u8 | grep ${VSIZE}p | tail -n 1 | cut -f 1 -d '.')
|
||||
VSIZE=360 && VIDEOHEAD=$(cat ~/.zen/bunkerbox/$VUID/$VUID.m3u8 | grep -B1 ${VSIZE}p | head -n 1) && VIDEOSRC=$(cat ~/.zen/bunkerbox/$VUID/$VUID.m3u8 | grep ${VSIZE}p | tail -n 1 | xargs | cut -f 1 -d '.')
|
||||
[[ "$VIDEOSRC" == "" ]] && VSIZE=480 && VIDEOHEAD=$(cat ~/.zen/bunkerbox/$VUID/$VUID.m3u8 | grep -B1 ${VSIZE}p | head -n 1) && VIDEOSRC=$(cat ~/.zen/bunkerbox/$VUID/$VUID.m3u8 | grep ${VSIZE}p | tail -n 1 | xargs | cut -f 1 -d '.')
|
||||
[[ "$VIDEOSRC" == "" ]] && VSIZE=240 &&VIDEOHEAD=$(cat ~/.zen/bunkerbox/$VUID/$VUID.m3u8 | grep -B1 ${VSIZE}p | head -n 1) && VIDEOSRC=$(cat ~/.zen/bunkerbox/$VUID/$VUID.m3u8 | grep ${VSIZE}p | tail -n 1 | xargs | cut -f 1 -d '.')
|
||||
VTHUMB="$(cat ~/.zen/bunkerbox/$VUID/$VUID.json | jq -r --arg VSIZE "$VSIZE" '.video.thumbnails[] | select(.height == $VSIZE) | .url')"
|
||||
|
||||
echo ">>>>>>>>>>>>>>>> Downloading Video $VSIZE Thumbnail"
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
# CONTAINS Address of 1st Bootstrap Stations (24/24 Public IP) - DO NOT EDIT MANUALY -
|
||||
# UPlanet Swarm Bootstrap Stations # Adapt for your domain #
|
||||
# https://ipfs.copylaradio.com ipfs.copylaradio.com
|
||||
#################################################################
|
||||
# astroport.libra.copylaradio.com
|
||||
|
@ -7,9 +7,6 @@
|
|||
# scorpio.copylaradio.com
|
||||
/dnsaddr/scorpio.copylaradio.com/p2p/12D3KooWS8EiLNay8qVnFaULpxW1X9sGZZz4wV8E6E3QEwCRktry
|
||||
|
||||
# astroport.sonic.copylaradio.com
|
||||
# /ip4/161.97.174.60/tcp/4001/p2p/12D3KooWJnzYzJBtruXZwUQJriF1ePtDQCUQp4aNBV5FjpYVdfhc
|
||||
|
||||
#################################################################
|
||||
###### WISHING TO ADD YOUR NODE TO OFFICIAL ASTROPORT BOOSTRAP LIST ?
|
||||
###### ===> CONTACT support@qo-op.com
|
||||
|
|
|
@ -0,0 +1,6 @@
|
|||
## SSH PUBLIC KEYS
|
||||
## SEEDS OF THE DRAGONS WOT
|
||||
## https://pad.p2p.legal/keygen
|
||||
ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIEtg3SlRxtzsQnsBSeU83W0tvUyBTUvOU5lhjlbZVPCZ support@qo-op.com
|
||||
ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAILTzTegcBD3WwIyTwT3kIh6jGqyLZzEzXhcuF6IhAjlc
|
||||
ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIHJBG6lim4ZmSmpU+GbOKJXO9arfRCP5TdKlhGa4CLJp
|
|
@ -0,0 +1,48 @@
|
|||
To use `natools` for message encryption (to destination) and signature (from sender), you would typically follow these steps:
|
||||
|
||||
### 1. Generate Key Pairs:
|
||||
- Both the sender and the recipient need to generate their key pairs (public and private keys). You can use the `natools` script to generate keys.
|
||||
|
||||
```bash
|
||||
# Sender generate keys
|
||||
python3 natools.py privkey -k ~/.zen/game/sender_secret.dunikey -f cred
|
||||
python3 natools.py pubkey -k ~/.zen/game/sender_secret.dunikey -o sender_public_key
|
||||
|
||||
# Recipient generates keys
|
||||
python3 natools.py privkey -k ~/.zen/game/myswarm_secret.dunikey -f cred
|
||||
python3 natools.py pubkey -k ~/.zen/game/myswarm_secret.dunikey -o recipient_public_key
|
||||
```
|
||||
|
||||
### 2. Encrypt the Message:
|
||||
- The sender uses the recipient's public key to encrypt the message.
|
||||
|
||||
```bash
|
||||
python3 natools.py encrypt -i plaintext.txt -k recipient_public_key -o encrypted_message.bin
|
||||
```
|
||||
|
||||
### 3. Sign the Message:
|
||||
- The sender signs the original message using their private key.
|
||||
|
||||
```bash
|
||||
python3 natools.py sign -i plaintext.txt -k sender_private_key -o signature.bin
|
||||
```
|
||||
|
||||
### 4. Verify the Signature:
|
||||
- The recipient uses the sender's public key to verify the signature.
|
||||
|
||||
```bash
|
||||
python3 natools.py verify -i plaintext.txt -p sender_public_key
|
||||
```
|
||||
|
||||
- The script will output "Signature OK!" if the verification is successful.
|
||||
|
||||
### 5. Decrypt the Message:
|
||||
- The recipient uses their private key to decrypt the message.
|
||||
|
||||
```bash
|
||||
python3 natools.py decrypt -i encrypted_message.bin -k recipient_private_key -o decrypted_message.txt
|
||||
```
|
||||
|
||||
Now you have successfully performed message encryption to the destination and signature from the sender using the `natools` script. Adjust the file paths and content as needed for your specific use case.
|
||||
|
||||
Note: Ensure that both sender and recipient securely store their private keys. Public keys can be shared openly. The encrypted message, signature, and decrypted message are intermediate files used for illustration; adjust as needed in your application.
|
|
@ -123,7 +123,7 @@ ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIEtg3SlRxtzsQnsBSeU83W0tvUyBTUvOU5lhjlbZVPCZ
|
|||
* “keygen” https://git.p2p.legal/STI/Astroport.ONE/src/branch/master/tools/keygen
|
||||
* “natools” https://git.p2p.legal/STI/Astroport.ONE/src/branch/master/tools/natools.py
|
||||
* “jaklis” https://git.p2p.legal/axiom-team/jaklis
|
||||
* “ipfs” https://git.p2p.legal/STI/Astroport.ONE/src/branch/master/kubo_v0.20.0_linux.install.sh
|
||||
* “ipfs” https://git.p2p.legal/STI/Astroport.ONE/src/branch/master/install.kubo_v0.20.0_linux.sh
|
||||
|
||||
## ASTROPORT CREW GILET https://astroport.myspreadshop.fr/create?product=a68ad31e-d554-4c75-821d-97b00d6ad13f&view=2
|
||||
|
|
@ -0,0 +1,51 @@
|
|||
services:
|
||||
wotwizard:
|
||||
image: poka/wotwizard:latest
|
||||
restart: unless-stopped
|
||||
ports:
|
||||
- "8080:8080"
|
||||
volumes:
|
||||
- duniterv1_data:/app/data
|
||||
- data:/app/rsrc/duniter/System/
|
||||
networks:
|
||||
- frontend
|
||||
|
||||
duniter:
|
||||
image: pinidh/duniter:1.8-dev
|
||||
restart: unless-stopped
|
||||
ports:
|
||||
- 127.0.0.1:9220:9220
|
||||
environment:
|
||||
DEBUG_ENTRYPOINT: "true"
|
||||
DUNITER_AUTO_SYNC: "true"
|
||||
DUNITER_SYNC_HOST: "duniter.pini.fr:443"
|
||||
DUNITER_UPNP: "false"
|
||||
DUNITER_BMA_ENABLED: 'true'
|
||||
DUNITER_BMA_IPV4: "0.0.0.0"
|
||||
DUNITER_BMA_REMOTE_PORT: "443"
|
||||
DUNITER_BMA_REMOTE_HOST: "duniterww.localhost"
|
||||
DUNITER_WS2P_HOST: "0.0.0.0"
|
||||
DUNITER_WS2P_PORT: '20901'
|
||||
DUNITER_WS2P_PUBLIC: 'true'
|
||||
DUNITER_WS2P_REMOTE_HOST: "duniterww.localhost"
|
||||
DUNITER_WS2P_REMOTE_PORT: "443"
|
||||
DUNITER_WS2P_REMOTE_PATH: "ws2p"
|
||||
DUNITER_POW_CPU: "0.5""
|
||||
DUNITER_POW_NBCORES: "1"
|
||||
volumes:
|
||||
- duniterv1_data:/app/data
|
||||
- etc/etc/duniter
|
||||
networks:
|
||||
frontend:
|
||||
ipv4_address: 172.18.0.42
|
||||
mem_limit: 5g
|
||||
|
||||
volumes:
|
||||
data:
|
||||
duniterv1_data:
|
||||
|
||||
networks:
|
||||
frontend:
|
||||
|
||||
logging:
|
||||
options:
|
|
@ -5,7 +5,7 @@ services:
|
|||
environment:
|
||||
#- DEBUG_ENTRYPOINT=${DUNITER_DEBUG_ENTRYPOINT:-${DEBUG_ENTRYPOINT:-${DEBUG:-}}}
|
||||
- DUNITER_AUTO_SYNC=true
|
||||
- DUNITER_SYNC_HOST=${DUNITER_SYNC_HOST:-duniter.g1.1000i100.fr:443}
|
||||
- DUNITER_SYNC_HOST=${DUNITER_SYNC_HOST:-duniter.pini.fr:443}
|
||||
- DUNITER_BMA_ENABLED=true
|
||||
- DUNITER_BMA_IP4=${DUNITER_BMA_IP4:-0.0.0.0}
|
||||
- DUNITER_BMA_REMOTE_HOST=${DUNITER_BMA_REMOTE_HOST:-duniter.localhost}
|
||||
|
@ -28,6 +28,7 @@ services:
|
|||
- DUNITER_WS2P_REMOTE_PORT=${DUNITER_WS2P_REMOTE_PORT:-443}
|
||||
- DUNITER_POW_CPU=0.5
|
||||
- DUNITER_POW_NBCORES=1
|
||||
- DUNITER_MAX_OLD_SPACE_SIZE=${DUNITER_MAX_OLD_SPACE_SIZE:-8192}
|
||||
image: pinidh/duniter:dev
|
||||
networks:
|
||||
- private
|
|
@ -0,0 +1,12 @@
|
|||
version: '3'
|
||||
services:
|
||||
homeassistant:
|
||||
container_name: homeassistant
|
||||
image: "ghcr.io/home-assistant/home-assistant:stable"
|
||||
volumes:
|
||||
- /PATH_TO_YOUR_CONFIG:/config
|
||||
- /etc/localtime:/etc/localtime:ro
|
||||
- /run/dbus:/run/dbus:ro
|
||||
restart: unless-stopped
|
||||
privileged: true
|
||||
network_mode: host
|
|
@ -0,0 +1,15 @@
|
|||
version: '3'
|
||||
services:
|
||||
ipfs_node_1:
|
||||
image: ipfs/go-ipfs:latest
|
||||
container_name: ipfs_node_1
|
||||
environment:
|
||||
IPFS_SWARM_KEY_FILE: _SWARM_KEY_FILE_
|
||||
volumes:
|
||||
- _IPFSDATA_:/export
|
||||
- _IPFSDATA_:/data/ipfs
|
||||
ports:
|
||||
- "64001:4001"
|
||||
- "64001:4001/udp"
|
||||
- "127.0.0.1:68080:8080"
|
||||
- "127.0.0.1:65001:5001"
|
|
@ -0,0 +1,16 @@
|
|||
version: '3.6'
|
||||
|
||||
services:
|
||||
minetest:
|
||||
image: lscr.io/linuxserver/minetest:latest
|
||||
container_name: minetest
|
||||
environment:
|
||||
- PUID=1000
|
||||
- PGID=1000
|
||||
- TZ=Etc/UTC
|
||||
- "CLI_ARGS=--gameid minetest --port 30000" #optional
|
||||
volumes:
|
||||
- /path/to/data:/config/.minetest
|
||||
ports:
|
||||
- 30000:30000/udp
|
||||
restart: unless-stopped
|
|
@ -0,0 +1,5 @@
|
|||
A Ynov depuis la B1, je code en principalement Python
|
||||
j'ai des compétences en Docker, git, en gestion de bdd et traitement des donné
|
||||
|
||||
J'aime faire du piano
|
||||
|
96
README.md
|
@ -2,10 +2,10 @@
|
|||
|
||||
[Astroport DEV Journal](https://pad.p2p.legal/s/AstroportDEVJournal#)
|
||||
|
||||
**Embark on a Cosmic Journey with ZenCard Payment System and Astroport.ONE**
|
||||
**Embark on a Cosmic Journey with AstroID & ZenCard System and Astroport.ONE**
|
||||
|
||||
Are you weary of the constraints of traditional payment systems and concerned about the reliability
|
||||
of your distributed storage solutions? Look no further! Our revolutionary ZenCard Payment System
|
||||
of your distributed storage solutions? Look no further! Our revolutionary ZenCard QRCode based Payment System
|
||||
and Astroport.ONE v1.0 seamlessly blend cutting-edge blockchain technology with interplanetary storage,
|
||||
offering you a commission-free and secure solution.
|
||||
|
||||
|
@ -19,19 +19,6 @@ the planet is sliced into 0.01° segments, ensuring locally registered Tiddlers
|
|||
As a network engineer and system administrator committed to the Common Good, join us in constructing
|
||||
Astroport.ONE and shaping the future of secure and reliable distributed storage.
|
||||
|
||||
**ZenCard Payment System: Empowering Transactions, Empowering Dreams**
|
||||
|
||||
As blockchain makers, our ZenCard Payment System is not merely a crypto wallet; it's a game-changing payment card and terminal solution.
|
||||
Our controlled coin-emitting blockchain transfers 1 coin to your ZenCard per fiat money unit saved in the fiscal host.
|
||||
This unique approach makes blockchain accessible to everyone.
|
||||
|
||||
Become a donor and a shareholder, receiving Coins equivalent to the Euros paid. Achieve a stable coin state of "1=1" through seamless transactions
|
||||
with a Host capable of sending and receiving Euros to users with zero fees, facilitated by PayPal integration.
|
||||
|
||||
Activate your account on UPlanet, make donations to https://opencollective.com/made-in-zen, and receive encrypted wallets via email—printed
|
||||
in QRCode format for added security. Step into a future where financial transactions are commission-free,
|
||||
and data is securely stored across the cosmos.
|
||||
|
||||
**Station Extra-Terrestre Astroport.ONE: Where Innovation Meets Tranquility**
|
||||
|
||||
In the midst of this technological revolution, discover the Station Extra-Terrestre Astroport.ONE.
|
||||
|
@ -73,43 +60,21 @@ At this point, if it exists "ASTROBOT/G1Tag.sh" program will publish the data re
|
|||
|
||||
# INSTALLATION (Linux Mint / Ubuntu / DEBIAN)
|
||||
|
||||
There is 2 methods one for server and one for Linux Mint desktop
|
||||
|
||||
## SERVER : Using DOCKER (and MyOS)
|
||||
|
||||
the easiest way to automaticaly deploy and host Astroport.ONE services
|
||||
|
||||
```
|
||||
# install minimal requirements
|
||||
sudo apt install git docker make
|
||||
|
||||
# clone Astroport.ONE repo
|
||||
git clone https://github.com/papiche/Astroport.ONE.git
|
||||
|
||||
cd Astroport.ONE
|
||||
make
|
||||
make install
|
||||
|
||||
```
|
||||
If your computer is running 24/24, you can join our "Boostrap list" & officially become a [TW UPlanet hoster](https://talk.tiddlywiki.org/t/uplanet-a-planet-full-of-tws/8193?u=papiche)
|
||||
|
||||
> DOCKER MODE NOT READY TO USE !! FOLLOW AND ADAPT NEXT STEP
|
||||
|
||||
## DESKTOP : Using install.sh script
|
||||
|
||||
Tested on "Linux Mint" (Debian like distro compatible), the **hacker way for using & buidling new blockchain services** ...
|
||||
|
||||
```
|
||||
# install on system wide
|
||||
# SOURCE GIT.P2P.LEGAL
|
||||
bash <(wget -qO- https://git.p2p.legal/qo-op/Astroport.ONE/raw/branch/master/install.sh)
|
||||
INSTALL COMMAND
|
||||
|
||||
# SOURCE GITHUB
|
||||
```
|
||||
bash <(wget -qO- https://raw.githubusercontent.com/papiche/Astroport.ONE/master/install.sh)
|
||||
|
||||
```
|
||||
|
||||
> PLEASE REPORT ANY ISSUES
|
||||
> TODO: MORE MODULAR INSTALL.
|
||||
> CREATE adventure explaining it
|
||||
|
||||
## DRAGONS WOT
|
||||
|
||||
Once you install Astroport.ONE...
|
||||
|
||||
If all has gone well, you should find these processes running...
|
||||
|
||||
|
@ -126,7 +91,12 @@ If all has gone well, you should find these processes running...
|
|||
|
||||
```
|
||||
|
||||
# LAUNCH
|
||||
> Become Official REGIONAL Station
|
||||
> - follow "PGP/SSH/IPFSNODEID" linking procedure -
|
||||
> https://pad.p2p.legal/keygen
|
||||
|
||||
|
||||
# DESKTOP
|
||||
|
||||
After installation, you should have 3 new shortcuts on your desktop
|
||||
|
||||
|
@ -134,6 +104,10 @@ After installation, you should have 3 new shortcuts on your desktop
|
|||
* REC" allows you to save your files on IPFS and publish their Capusle in your TW.
|
||||
* G1BILLET" lets you create ZenCards and other useful QRCodes
|
||||
|
||||
NB : If you use "Nemo" as file manager. You can "ipfs add" any file (with no space in file name) by right click it.
|
||||
|
||||
> TODO : detect OS and FILE MANAGER to adapt desktop linking and right clic action
|
||||
|
||||
## How to manage your "Astroport"!
|
||||
|
||||
You need to create a "PLAYER".
|
||||
|
@ -144,8 +118,9 @@ It is defined by email, salt, pepper, lat, lon and PASS
|
|||
```
|
||||
Browse available functions
|
||||
|
||||
A Station can host multiple "PLAYER and its TiddlyWiki".
|
||||
A Station can host multiple "PLAYERs and TiddlyWikis".
|
||||
|
||||
---
|
||||
|
||||
# "BASH API" : "♥BOX"
|
||||
## http://astroport.localhost:1234
|
||||
|
@ -356,7 +331,9 @@ GET /?player=${PLAYER}&moa=json&tag=G1CopierYoutube
|
|||
> CAN BE EXTENDED
|
||||
|
||||
## ➤ AMZQR : Create a QRCode with "amzqr"
|
||||
### ```/?amzqr=${URLENCODEDSTRING}&logo=${IMAGE}```
|
||||
```http
|
||||
GET /?amzqr=${URLENCODEDSTRING}&logo=${IMAGE}
|
||||
```
|
||||
|
||||
| Parameter | Type | Description |
|
||||
| :-------- | :------- | :-------------------------------- |
|
||||
|
@ -366,19 +343,21 @@ GET /?player=${PLAYER}&moa=json&tag=G1CopierYoutube
|
|||
check available "logo.png" in [./images](./images)
|
||||
|
||||
## ➤ UPLANET : Create Umap, AstroID & ZenCard for PLAYER (email)
|
||||
### ```/?uplanet=${PLAYER}&salt=${LAT}&pepper=${LON}&g1pub=${PASS}```
|
||||
```http
|
||||
GET /?uplanet=${PLAYER}&zlat=${LAT}&zlon=${LON}&g1pub=${PASS}
|
||||
```
|
||||
|
||||
| Parameter | Type | Description |
|
||||
| :-------- | :------- | :-------------------------------- |
|
||||
| `uplanet` | `email` | **Required** Your EMAIL token |
|
||||
| `salt` | `decimal` | **Required** LATITUDE with 2 decimals digits |
|
||||
| `pepper` | `decimal` | **Required** LONGITUDE with 2 decimals digits |
|
||||
| `zlat` | `decimal` | **Required** LATITUDE with 2 decimals digits |
|
||||
| `zlon` | `decimal` | **Required** LONGITUDE with 2 decimals digits |
|
||||
| `g1pub` | `string` | **Facultative** choose Umap AstroID PASS |
|
||||
|
||||
Create à Umap key (LAT/LON), then a PLAYER TW with GPS as Umap IPNS reference
|
||||
This API is used by OSM2IPFS code.
|
||||
|
||||
UPlanet Entrance : https://qo-op.com
|
||||
* [UPlanet Entrance](https://qo-op.com)
|
||||
|
||||
### ➤ QRCODE (API SandBox)
|
||||
```http
|
||||
|
@ -498,12 +477,13 @@ http://localhost:12345 renvoi un json
|
|||
| created | date de creation du document |
|
||||
| hostname | nom de la station |
|
||||
| myIP | adresse IP de la station |
|
||||
| ipfsnodeid | date de creation du document |
|
||||
| ipfsnodeid | Clef publique, balise de la station |
|
||||
| astroport | Lien vers l'API de la station |
|
||||
| g1station | Lien vers la carte PLAYER de la Station |
|
||||
| g1swarm | Lien vers la carte des cartes des Stations de l'essaim |
|
||||
|
||||
Afin de propager la carte chaque Stations lors de son raffraichissement de cache demande aux Boostrap de la récupérer
|
||||
Afin de propager la carte chaque station lors de son raffraichissement de cache
|
||||
envoi aux Boostrap une requête pour upload (```/ipns/${IPFSNODEID}```)
|
||||
```
|
||||
STATION MAP UPSYNC : http://$nodeip:12345/?${GNODEID}=${IPFSNODEID}
|
||||
```
|
||||
|
@ -511,7 +491,7 @@ STATION MAP UPSYNC : http://$nodeip:12345/?${GNODEID}=${IPFSNODEID}
|
|||
|
||||
# 20H12
|
||||
|
||||
Chaque jour, les ASTROBOTs captent les :star: de leurs PLAYERs puis exécutent le protocole de synchronisation Ŋ1
|
||||
Chaque jour, les ASTROBOTs captent les :star: (tiddler 'email') de leurs PLAYERs puis exécutent le protocole de synchronisation Ŋ1
|
||||
|
||||
[20H12.sh](/qo-op/Astroport.ONE/src/branch/master/20h12.sh)
|
||||
|
||||
|
@ -562,10 +542,10 @@ https://ipfs.copylaradio.com/ipfs/QmUtGpGeMZvwp47ftqebVmoFWCmvroy5wEtWsKvWvDWJpR
|
|||
This "digital art" structure is a selection of some of the most valuable Free & OpenSource Software I ever had in my hand.
|
||||
Credits is going to all the kindness and care provided to make valuable and secure software available for all
|
||||
|
||||
Did you ever dring a beer bought in G1 ?
|
||||
Do you know [G1](https://monnaie-libre.fr) ? The best crypto coin you could ever dream about...
|
||||
|
||||
Thanks for contributions on [Swarm BUDGET](https://opencollective.com/monnaie-libre#category-BUDGET)
|
||||
|
||||
You can pay me a beer or more by contributing to our OpenCollective
|
||||
https://opencollective.com/monnaie-libre#category-ABOUT
|
||||
|
||||
## IPFS Ecosystem Directory Submission Form
|
||||
https://airtable.com/appLWiIrg9SQaEtEq/shrjwvk9pAeAk0Ci7
|
||||
|
|
|
@ -0,0 +1,141 @@
|
|||
#!/bin/bash
|
||||
################################################################################
|
||||
# Author: Fred (support@qo-op.com)
|
||||
# Version: 0.2
|
||||
# License: AGPL-3.0 (https://choosealicense.com/licenses/agpl-3.0/)
|
||||
################################################################################
|
||||
# Activate SUPPORT MODE: open ssh over IPFS
|
||||
MY_PATH="`dirname \"$0\"`" # relative
|
||||
MY_PATH="`( cd \"$MY_PATH\" && pwd )`" # absolutized and normalized
|
||||
. "$MY_PATH/../tools/my.sh"
|
||||
########################################################################
|
||||
YOU=$(myIpfsApi) || er+=" ipfs daemon not running"
|
||||
[[ "$YOU" == "" || "${IPFSNODEID}" == "" ]] && echo "ERROR : $er " && exit 1
|
||||
########################################################################
|
||||
## THIS SCRIPT COPY BOOSTRAP PUBKEY
|
||||
### AND OPEN IPFS P2P SSH FORWARD ON CHANNEL
|
||||
# Make Station publish SSH port on "/x/ssh-$(IPFSNODEID)"
|
||||
########################################################################
|
||||
## use STOP or OFF to finish forwarding
|
||||
|
||||
PARAM="$1"
|
||||
if [[ "${PARAM,,}" == "off" || "${PARAM,,}" == "stop" ]]; then
|
||||
ipfs p2p close --all
|
||||
rm ~/.zen/tmp/${IPFSNODEID}/x_ssh.sh 2>/dev/null
|
||||
rm ~/.zen/tmp/${IPFSNODEID}/y_ssh.pub 2>/dev/null
|
||||
echo "STOP" && exit 0
|
||||
fi
|
||||
|
||||
############################################
|
||||
## DISTRIBUTE DRAGON SSH WOT SEED
|
||||
# A_boostrap_ssh.txt
|
||||
############################################
|
||||
while IFS= read -r line
|
||||
do
|
||||
LINE=$(echo "$line" | grep "ssh-ed25519" | grep -Ev "#") # Remove # & not ssh-ed25519
|
||||
[[ ! ${LINE} ]] && continue
|
||||
if [[ ! $(cat ~/.ssh/authorized_keys | grep "${LINE}") ]]
|
||||
then
|
||||
echo "# ADDING ${LINE} to ~/.ssh/authorized_keys"
|
||||
mkdir -p ~/.ssh && echo "${LINE}" >> ~/.ssh/authorized_keys
|
||||
else
|
||||
echo "TRUSTING ${LINE}"
|
||||
fi
|
||||
done < ${MY_PATH}/../A_boostrap_ssh.txt
|
||||
|
||||
############################################
|
||||
## PUBLISH SSH PUBKEY OVER IPFS
|
||||
## KITTY ssh-keygen style
|
||||
[[ -s ~/.ssh/id_ed25519.pub ]] && cp ~/.ssh/id_ed25519.pub ~/.zen/tmp/${IPFSNODEID}/y_ssh.pub
|
||||
## DRAGONz PGP/SSH style (https://pad.p2p.legal/keygen)
|
||||
gpg --export-ssh-key $(cat ~/.zen/game/players/.current/.player) 2>/dev/null > ~/.zen/tmp/${IPFSNODEID}/z_ssh.pub
|
||||
[[ ! -s ~/.zen/tmp/${IPFSNODEID}/z_ssh.pub ]] && rm ~/.zen/tmp/${IPFSNODEID}/z_ssh.pub # remove empty file
|
||||
|
||||
############################################
|
||||
### FORWARD SSH PORT over /x/ssh-${IPFSNODEID}
|
||||
############################################
|
||||
echo "Lanching /x/ssh-${IPFSNODEID}"
|
||||
|
||||
[[ ! $(ipfs p2p ls | grep "/x/ssh-${IPFSNODEID}") ]] \
|
||||
&& ipfs p2p listen /x/ssh-${IPFSNODEID} /ip4/127.0.0.1/tcp/22
|
||||
|
||||
ipfs p2p ls
|
||||
|
||||
echo
|
||||
############################################
|
||||
## PREPARE x_ssh.sh
|
||||
## REMOTE ACCESS COMMAND FROM DRAGONS
|
||||
############################################
|
||||
PORT=22000
|
||||
PORT=$((PORT+${RANDOM:0:3}))
|
||||
|
||||
#######################################################################
|
||||
## Adapt $USER for the UPlanet /home/$USER Private Swarm specific one
|
||||
#######################################################################
|
||||
|
||||
echo '#!/bin/bash
|
||||
if [[ ! $(ipfs p2p ls | grep x/ssh-'${IPFSNODEID}') ]]; then
|
||||
ipfs --timeout=10s ping -n 4 /p2p/'${IPFSNODEID}'
|
||||
[[ $? == 0 ]] \
|
||||
&& ipfs p2p forward /x/ssh-'${IPFSNODEID}' /ip4/127.0.0.1/tcp/'${PORT}' /p2p/'${IPFSNODEID}' \
|
||||
&& ssh \$USER@127.0.0.1 -p '${PORT}' \
|
||||
|| echo "CONTACT IPFSNODEID FAILED - ERROR -"
|
||||
fi
|
||||
' > ~/.zen/tmp/${IPFSNODEID}/x_ssh.sh
|
||||
|
||||
cat ~/.zen/tmp/${IPFSNODEID}/x_ssh.sh
|
||||
|
||||
echo "
|
||||
|
||||
/| /\\
|
||||
/^^^/ |^\Z / |
|
||||
| \Z / |
|
||||
/ @ \Z / / \_______
|
||||
( \ _ / \Z / / /
|
||||
( ---- /G |\ |Z / / /
|
||||
( / ---- \ /---'/\ |Z / / /
|
||||
\/--' /--/ /Z / /
|
||||
| /--/ |Z / / \_______
|
||||
/ /--/ |Z \ / /
|
||||
--/ /--/ \Z | / /
|
||||
/ /--/ \Z / /
|
||||
|--| \Z/ /
|
||||
|---| / /----'
|
||||
\---| /^^^^^^^^^^^^\Z
|
||||
\-/ \Z
|
||||
/ / | \Z
|
||||
\---' |\________| |_______ |Z
|
||||
\--' /\/ \|_|_|_|| |_|_|_|_|\_ |Z
|
||||
'------' / / / |_ /Z
|
||||
\---' | / `````` /Z
|
||||
\--' /\/ \ _____________/Z
|
||||
'------' \
|
||||
|
||||
"
|
||||
############################################
|
||||
echo "CONNECT WITH THIS COMMAND"
|
||||
echo "ipfs cat /ipns/${IPFSNODEID}/x_ssh.sh | bash"
|
||||
############################################
|
||||
|
||||
## PROMETHEUS NODE
|
||||
if [[ -s ~/.zen/prometheus/prometheus ]]; then
|
||||
|
||||
echo "UPDATING ~/.zen/prometheus/prometheus.yml"
|
||||
## ADD ALL SWARM NODES TO MONITORING LIST for prometheus (GRAFANA) node
|
||||
|
||||
ncrunning=$(ps axf --sort=+utime | grep -w 'prometheus' | grep -v -E 'color=auto|grep' | tail -n 1 | xargs | cut -d " " -f 1)
|
||||
[[ $ncrunning ]] \
|
||||
&& echo "RESTARTING" && kill -HUP $ncrunning \
|
||||
|| { cd ~/.zen/prometheus/; ./prometheus & }
|
||||
|
||||
fi
|
||||
|
||||
## LAUNCHING node_exporter
|
||||
ncrunning=$(ps axf --sort=+utime | grep -w 'node_exporter' | grep -v -E 'color=auto|grep' | tail -n 1 | xargs | cut -d " " -f 1)
|
||||
[[ $ncrunning ]] \
|
||||
&& echo "RESTARTING" && kill -HUP $ncrunning \
|
||||
|| { /usr/local/bin/node_exporter & }
|
||||
|
||||
|
||||
|
||||
exit 0
|
|
@ -1,40 +1,43 @@
|
|||
#!/bin/bash
|
||||
########################################################################
|
||||
# Version: 0.5
|
||||
# Version: 1.0
|
||||
# License: AGPL-3.0 (https://choosealicense.com/licenses/agpl-3.0/)
|
||||
########################################################################
|
||||
# PAD COCODING : https://pad.p2p.legal/s/G1PalPay
|
||||
# This script monitors G1 Blockchain
|
||||
########################################################################
|
||||
# TODO : CHECK RX coming from UPlanet Wallet
|
||||
## meaning an initial 3.1G1 from a ZenStation admin wallet
|
||||
## if not relay payment to ZenStation admin
|
||||
########################################################################
|
||||
MY_PATH="`dirname \"$0\"`" # relative
|
||||
MY_PATH="`( cd \"$MY_PATH\" && pwd )`" # absolutized and normalized
|
||||
ME="${0##*/}"
|
||||
|
||||
. "${MY_PATH}/../tools/my.sh"
|
||||
|
||||
CESIUM=${myCESIUM}
|
||||
GCHANGE=${myGCHANGE}
|
||||
CESIUM=${myCESIUM}
|
||||
GCHANGE=${myGCHANGE}
|
||||
|
||||
echo "(✜‿‿✜) G1PalPay : Receiving & Relaying payments to emails found in comment"
|
||||
echo "$ME RUNNING"
|
||||
echo "$ME RUNNING (•‿‿•)"
|
||||
|
||||
########################################################################
|
||||
# PALPAY SERVICE
|
||||
# PALPAY SERVICE : MONITOR INCOMING TX & NEW TIDDLERS
|
||||
########################################################################
|
||||
########################################################################
|
||||
INDEX="$1"
|
||||
INDEX="$1" ## TW file
|
||||
[[ ! ${INDEX} ]] && INDEX="$HOME/.zen/game/players/.current/ipfs/moa/index.html"
|
||||
[[ ! -s ${INDEX} ]] && echo "ERROR - Please provide path to source TW index.html" && exit 1
|
||||
[[ ! -s ${INDEX} ]] && echo "ERROR - Fichier TW absent. ${INDEX}" && exit 1
|
||||
|
||||
PLAYER="$2"
|
||||
PLAYER="$2" ## PLAYER
|
||||
[[ ! ${PLAYER} ]] && PLAYER="$(cat ~/.zen/game/players/.current/.player 2>/dev/null)"
|
||||
[[ ! ${PLAYER} ]] && echo "ERROR - Please provide PLAYER" && exit 1
|
||||
|
||||
ASTRONAUTENS=$(ipfs key list -l | grep -w ${PLAYER} | cut -d ' ' -f1)
|
||||
ASTRONAUTENS=$(ipfs key list -l | grep -w ${PLAYER} | cut -d ' ' -f1) ## TW /ipns/
|
||||
[[ ! ${ASTRONAUTENS} ]] && echo "ERROR - Clef IPNS ${PLAYER} introuvable!" && exit 1
|
||||
|
||||
G1PUB=$(cat ~/.zen/game/players/${PLAYER}/.g1pub)
|
||||
G1PUB=$(cat ~/.zen/game/players/${PLAYER}/.g1pub) ## PLAYER WALLET
|
||||
[[ ! $G1PUB ]] && echo "ERROR - G1PUB ${PLAYER} VIDE" && exit 1
|
||||
|
||||
# Extract tag=tube from TW
|
||||
|
@ -44,26 +47,33 @@ MOATS="$3"
|
|||
###################################################################
|
||||
## CREATE APP NODE PLAYER PUBLICATION DIRECTORY
|
||||
###################################################################
|
||||
mkdir -p $HOME/.zen/tmp/${IPFSNODEID}/G1PalPay/${PLAYER}/
|
||||
mkdir -p $HOME/.zen/game/players/${PLAYER}/G1PalPay/
|
||||
mkdir -p $HOME/.zen/tmp/${MOATS}
|
||||
echo "=========== ( ◕‿◕) (◕‿◕ ) =============="
|
||||
echo "=====(•‿‿•)====== ( ◕‿◕) (◕‿◕ ) =======(•‿‿•)======= ${PLAYER}
|
||||
${INDEX}"
|
||||
echo "(✜‿‿✜) G1PalPay : CHECK LAST 30 TX comment"
|
||||
|
||||
# CHECK LAST 10 INCOMING PAYMENTS
|
||||
# CHECK LAST 30 INCOMING PAYMENTS
|
||||
~/.zen/Astroport.ONE/tools/timeout.sh -t 12 \
|
||||
${MY_PATH}/../tools/jaklis/jaklis.py -k ~/.zen/game/players/${PLAYER}/secret.dunikey history -n 10 -j > $HOME/.zen/game/players/${PLAYER}/G1PalPay/${PLAYER}.duniter.history.json
|
||||
${MY_PATH}/../tools/jaklis/jaklis.py -k ~/.zen/game/players/${PLAYER}/secret.dunikey history -n 30 -j \
|
||||
> $HOME/.zen/game/players/${PLAYER}/G1PalPay/${PLAYER}.duniter.history.json
|
||||
|
||||
[[ ! -s $HOME/.zen/game/players/${PLAYER}/G1PalPay/${PLAYER}.duniter.history.json ]] \
|
||||
&& echo "NO PAYMENT HISTORY" \
|
||||
&& exit 1
|
||||
&& echo "NO PAYMENT HISTORY.........................."
|
||||
##############################
|
||||
##########################################################
|
||||
############# CHECK FOR N1COMMANDs IN PAYMENT COMMENT
|
||||
#################################################################
|
||||
# LOG / cat $HOME/.zen/game/players/${PLAYER}/G1PalPay/${PLAYER}.duniter.history.json | jq -rc .[]
|
||||
## TREAT ANY COMMENT STARTING WITH N1: exemple : N1Kodi.sh
|
||||
## EXTRACT /ASTROBOT/N1ProgramNames
|
||||
ls ${MY_PATH}/../ASTROBOT/ | grep "N1" | cut -d "." -f 1 > ~/.zen/tmp/${MOATS}/N1PROG
|
||||
while read prog; do
|
||||
echo "# SCAN FOR N1 COMMAND : $prog"
|
||||
cat $HOME/.zen/game/players/${PLAYER}/G1PalPay/${PLAYER}.duniter.history.json | jq -rc .[] | grep "$prog" >> ~/.zen/tmp/${MOATS}/myN1.json
|
||||
done < ~/.zen/tmp/${MOATS}/N1PROG
|
||||
|
||||
## TREAT ANY COMMENT STARTING WITH N1
|
||||
cat $HOME/.zen/game/players/${PLAYER}/G1PalPay/${PLAYER}.duniter.history.json | jq -rc .[] | grep 'N1' > ~/.zen/tmp/${MOATS}/myN1.json
|
||||
|
||||
# got N1 incoming TX
|
||||
while read NLINE; do
|
||||
## COMMENT FORMAT = N1$CMD:$TH:$TRAIL
|
||||
TXIDATE=$(echo ${NLINE} | jq -r .date)
|
||||
|
@ -72,7 +82,10 @@ while read NLINE; do
|
|||
COMMENT=$(echo ${NLINE} | jq -r .comment)
|
||||
CMD=$(echo ${COMMENT} | cut -d ':' -f 1 | cut -c -12 ) # Maximum 12 characters CMD
|
||||
|
||||
[[ $(cat ~/.zen/game/players/${PLAYER}/.ndate) -ge $TXIDATE ]] && echo "$CMD $TXIDATE from $TXIPUBKEY ALREADY TREATED - continue" && continue
|
||||
# Verify last recorded acting date (avoid running twice)
|
||||
[[ $(cat ~/.zen/game/players/${PLAYER}/.ndate) -ge $TXIDATE ]] \
|
||||
&& echo "$CMD $TXIDATE from $TXIPUBKEY ALREADY TREATED - continue" \
|
||||
&& continue
|
||||
|
||||
TH=$(echo ${COMMENT} | cut -d ':' -f 2)
|
||||
TRAIL=$(echo ${COMMENT} | cut -d ':' -f 3-)
|
||||
|
@ -93,18 +106,26 @@ while read NLINE; do
|
|||
done < ~/.zen/tmp/${MOATS}/myN1.json
|
||||
|
||||
########################################################################################
|
||||
############# CHECK FOR EMAILs IN PAYMENT COMMENT
|
||||
if [[ ${UPLANETNAME} != "" ]]; then
|
||||
echo "# CHECK FOR PRIMAL REGULAR TX in INCOMING PAYMENTS"
|
||||
# silkaj money history DsEx1pS33vzYZg4MroyBV9hCw98j1gtHEhwiZ5tK7ech | tail -n 3 | head -n 1
|
||||
|
||||
fi
|
||||
|
||||
########################################################################################
|
||||
echo "# CHECK FOR EMAILs IN PAYMENT COMMENT"
|
||||
## DEBUG ## cat $HOME/.zen/game/players/${PLAYER}/G1PalPay/${PLAYER}.duniter.history.json | jq -r
|
||||
#################################################################
|
||||
cat $HOME/.zen/game/players/${PLAYER}/G1PalPay/${PLAYER}.duniter.history.json | jq -rc .[] | grep '@' > ~/.zen/tmp/${MOATS}/myPalPay.json
|
||||
cat $HOME/.zen/game/players/${PLAYER}/G1PalPay/${PLAYER}.duniter.history.json | jq -rc .[] | grep '@' \
|
||||
> ~/.zen/tmp/${MOATS}/myPalPay.json
|
||||
|
||||
# IF COMMENT CONTAINS EMAIL ADDRESSES
|
||||
# SPREAD & TRANSFER AMOUNT TO NEXT (REMOVING IT FROM LIST)... Other G1PalPay will continue the transmission...
|
||||
# SPREAD & TRANSFER AMOUNT TO NEXT (REMOVING IT FROM LIST)...
|
||||
## Other G1PalPay will continue the transmission...
|
||||
########################################################################
|
||||
## GET @ in JSON INLINE
|
||||
while read LINE; do
|
||||
|
||||
echo "MATCHING IN COMMENT"
|
||||
echo "${LINE}"
|
||||
JSON=${LINE}
|
||||
TXIDATE=$(echo $JSON | jq -r .date)
|
||||
|
@ -113,92 +134,120 @@ while read LINE; do
|
|||
TXIAMOUNTUD=$(echo $JSON | jq -r .amountUD)
|
||||
COMMENT=$(echo $JSON | jq -r .comment)
|
||||
|
||||
echo ">>> TODO CHECK TX HAPPENS LAST 24H (WHAT IS TXIDATE=$TXIDATE FORMAT ??)"
|
||||
[[ $(cat ~/.zen/game/players/${PLAYER}/.atdate) -ge $TXIDATE ]] && echo "PalPay $TXIDATE from $TXIPUBKEY ALREADY TREATED - continue" && continue
|
||||
lastTXdate=$(cat ~/.zen/game/players/${PLAYER}/.atdate)
|
||||
[[ -z lastTXdate ]] && lastTXdate=0
|
||||
[[ $(cat ~/.zen/game/players/${PLAYER}/.atdate) -ge $TXIDATE ]] \
|
||||
&& echo "PalPay $TXIDATE from $TXIPUBKEY ALREADY TREATED - continue" \
|
||||
&& continue
|
||||
|
||||
## GET EMAILS FROM COMMENT
|
||||
TXIMAILS=($(echo "$COMMENT" | grep -E -o "\b[a-zA-Z0-9.%+-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,6}\b"))
|
||||
|
||||
[[ $(echo "$TXIAMOUNT < 0" | bc) -eq 1 ]] \
|
||||
&& echo "TX-OUT :: ${LINE}" \
|
||||
&& echo "$TXIDATE" > ~/.zen/game/players/${PLAYER}/.atdate \
|
||||
&& continue
|
||||
|
||||
## DIVIDE INCOMING AMOUNT TO SHARE
|
||||
echo "N=${#TXIMAILS[@]}"
|
||||
N=${#TXIMAILS[@]}
|
||||
SHARE=$(echo "scale=2; $TXIAMOUNT / $N" | bc)
|
||||
|
||||
echo "$TXIDATE $TXIPUBKEY $TXIAMOUNT [$TXIAMOUNTUD] $TXIMAILS % $SHARE %"
|
||||
SHAREE=$(echo "scale=2; $TXIAMOUNT / $N" | bc)
|
||||
SHARE=$(makecoord ${SHAREE})
|
||||
## SHARE is received AMOUT divided by numbers of EMAILS in comment
|
||||
echo "% ${#TXIMAILS[@]} % $SHARE % $TXIDATE $TXIPUBKEY $TXIAMOUNT [$TXIAMOUNTUD] $TXIMAILS"
|
||||
|
||||
# let's loop over TXIMAILS
|
||||
for EMAIL in "${TXIMAILS[@]}"; do
|
||||
|
||||
[[ ${EMAIL} == $PLAYER ]] && echo "ME MYSELF" && continue
|
||||
[[ ${EMAIL} == $PLAYER ]] \
|
||||
&& echo "ME MYSELF" \
|
||||
&& echo "$TXIDATE" > ~/.zen/game/players/${PLAYER}/.atdate \
|
||||
&& continue
|
||||
|
||||
echo "EMAIL : ${EMAIL}"
|
||||
|
||||
ASTROTW="" STAMP="" ASTROG1="" ASTROIPFS="" ASTROFEED="" # RESET VAR
|
||||
$($MY_PATH/../tools/search_for_this_email_in_players.sh ${EMAIL}) ## export ASTROTW and more
|
||||
echo "export ASTROPORT=${ASTROPORT} ASTROTW=${ASTROTW} ASTROG1=${ASTROG1} ASTROMAIL=${EMAIL} ASTROFEED=${FEEDNS}"
|
||||
[[ ${ASTROTW} == "" ]] && ASTROTW=${ASTRONAUTENS}
|
||||
echo "export ASTROPORT=${ASTROPORT} ASTROTW=${ASTROTW} ASTROG1=${ASTROG1} ASTROMAIL=${EMAIL} ASTROFEED=${FEEDNS}"
|
||||
|
||||
if [[ ! ${ASTROTW} ]]; then
|
||||
|
||||
echo "# PLAYER INCONNU $(date)"
|
||||
echo "# PLAYER ${EMAIL} INCONNU $(date)"
|
||||
continue
|
||||
|
||||
fi
|
||||
|
||||
[[ ! ${ASTROG1} ]] \
|
||||
&& echo "<html><body><h1>SORRY ${EMAIL} YOUR ACCOUNT IS MISSING</h1>" \
|
||||
&& echo " BRO. $PLAYER WISH TO SEND YOU SOME ẐEN <br><br>(♥‿‿♥)... Join <a href='https://qo-op.com'>UPlanet</a> and receive it</body></html>" > ~/.zen/tmp/palpay.bro \
|
||||
&& ${MY_PATH}/../tools/mailjet.sh "${EMAIL}" ~/.zen/tmp/palpay.bro "NEED FOR ACCOUNT" \
|
||||
&& continue
|
||||
if [[ ! ${ASTROG1} ]]; then
|
||||
echo "<html><head><meta charset='UTF-8'>
|
||||
<style>
|
||||
body {
|
||||
font-family: 'Courier New', monospace;
|
||||
}
|
||||
pre {
|
||||
white-space: pre-wrap;
|
||||
}
|
||||
</style></head><body>" > ~/.zen/tmp/palpay.bro
|
||||
|
||||
echo "<h1>BRO.<h1>
|
||||
$PLAYER wants to send you ${SHARE} G1...<br>
|
||||
<br>(♥‿‿♥)... on <a href='https://qo-op.com'>UPlanet</a>
|
||||
</body></html>" >> ~/.zen/tmp/palpay.bro
|
||||
|
||||
## MAKE FRIENDS & SEND G1
|
||||
echo "NEW PalPay Friend $ASTROMAIL
|
||||
${MY_PATH}/../tools/mailjet.sh "${EMAIL}" ~/.zen/tmp/palpay.bro "BRO. $PLAYER INVITATION"
|
||||
continue
|
||||
fi
|
||||
|
||||
sleep 3
|
||||
|
||||
## SEND G1
|
||||
echo "PalPay____________
|
||||
SEND ${SHARE} G1 to $ASTROMAIL
|
||||
TW : $ASTROTW
|
||||
G1 : ${ASTROG1}
|
||||
ASTROIPFS : $ASTROIPFS
|
||||
RSS : $ASTROFEED"
|
||||
|
||||
if [[ ${ASTROG1} != ${G1PUB} ]]; then
|
||||
|
||||
${MY_PATH}/../tools/PAY4SURE.sh "${HOME}/.zen/game/players/${PLAYER}/secret.dunikey" "${SHARE}" "${ASTROG1}" "G1PalPay:$N:$TXIPUBKEY"
|
||||
STAMP=$?
|
||||
|
||||
else
|
||||
|
||||
STAMP=0
|
||||
|
||||
fi
|
||||
G1 : ${ASTROG1}"
|
||||
|
||||
echo PAY4SURE.sh "${HOME}/.zen/game/players/${PLAYER}/secret.dunikey" "${SHARE}" "${ASTROG1}" "UPLANET:PALPAY"
|
||||
${MY_PATH}/../tools/PAY4SURE.sh "${HOME}/.zen/game/players/${PLAYER}/secret.dunikey" "${SHARE}" "${ASTROG1}" "UPLANET:PALPAY"
|
||||
STAMP=$?
|
||||
## DONE STAMP IT
|
||||
[[ $STAMP == 0 ]] && echo "STAMP DONE" && echo "$TXIDATE" > ~/.zen/game/players/${PLAYER}/.atdate ## MEMORIZE LAST TXIDATE
|
||||
[[ $STAMP == 0 ]] \
|
||||
&& echo "REDISTRIBUTION DONE" \
|
||||
&& echo "$TXIDATE" > ~/.zen/game/players/${PLAYER}/.atdate
|
||||
|
||||
done
|
||||
|
||||
|
||||
done < ~/.zen/tmp/${MOATS}/myPalPay.json
|
||||
|
||||
echo "=========== %%%%% (°▃▃°) %%%%%%% =============="
|
||||
echo "====(•‿‿•)======= %%%%% (°▃▃°) %%%%%%% ======(•‿‿•)========"
|
||||
|
||||
########################################################################################
|
||||
## SEARCH FOR TODAY MODIFIED TIDDLERS WITH MULTIPLE EMAILS IN TAG
|
||||
# This can could happen in case Tiddler is copied OR PLAYER manualy adds an email tag to Tiddler to share with someone...
|
||||
#################################################################
|
||||
echo "# EXTRACT TODAY TIDDLERS"
|
||||
echo "# EXTRACT [days[-1]] DAYS TIDDLERS"
|
||||
tiddlywiki --load ${INDEX} \
|
||||
--output ~/.zen/game/players/${PLAYER}/G1CopierYoutube/${G1PUB}/ \
|
||||
--render '.' "today.${PLAYER}.tiddlers.json" 'text/plain' '$:/core/templates/exporters/JsonFile' 'exportFilter' '[days:created[-1]]'
|
||||
--output ~/.zen/tmp/${MOATS} \
|
||||
--render '.' "today.${PLAYER}.tiddlers.json" 'text/plain' '$:/core/templates/exporters/JsonFile' 'exportFilter' '[days[-1]]'
|
||||
|
||||
# cat ~/.zen/tmp/${MOATS}/today.${PLAYER}.tiddlers.json | jq -rc # LOG
|
||||
|
||||
## FILTER MY OWN EMAIL
|
||||
# cat ~/.zen/game/players/${PLAYER}/G1CopierYoutube/${G1PUB}/today.${PLAYER}.tiddlers.json | jq -rc # LOG
|
||||
cat ~/.zen/tmp/${MOATS}/today.${PLAYER}.tiddlers.json \
|
||||
| sed "s~${PLAYER}~ ~g" | jq -rc '.[] | select(.tags | contains("@"))' \
|
||||
> ~/.zen/tmp/${MOATS}/@tags.json 2>/dev/null ## Get tiddlers with not my email in it
|
||||
|
||||
cat ~/.zen/game/players/${PLAYER}/G1CopierYoutube/${G1PUB}/today.${PLAYER}.tiddlers.json \
|
||||
| sed "s~${PLAYER}~ ~g" | jq -rc '.[] | select(.tags | contains("@"))' > ~/.zen/tmp/${MOATS}/@tags.json 2>/dev/null ## REMOVE PLAYER EMAIL IN INLINE JSON
|
||||
|
||||
[[ ! -s ~/.zen/tmp/${MOATS}/@tags.json ]] && echo "NO EXTRA @tags.json TIDDLERS TODAY" && exit 0
|
||||
[[ ! -s ~/.zen/tmp/${MOATS}/@tags.json ]] \
|
||||
&& echo "NO EXTRA @tags.json TIDDLERS TODAY"
|
||||
|
||||
# LOG
|
||||
cat ~/.zen/tmp/${MOATS}/@tags.json
|
||||
echo "******************TIDDLERS with EMAIL in TAGS treatment"
|
||||
#~ cat ~/.zen/game/players/${PLAYER}/G1CopierYoutube/${G1PUB}/${PLAYER}.tiddlers.json | sed "s~${PLAYER}~ ~g" | jq -rc '.[] | select(.tags | contains("@"))' > ~/.zen/tmp/${MOATS}/@tags.json
|
||||
echo "******************TIDDLERS with new EMAIL in TAGS treatment"
|
||||
|
||||
## EXTRACT NOT MY EMAIL
|
||||
################################
|
||||
## detect NOT MY EMAIL in TODAY TIDDLERS
|
||||
################################
|
||||
while read LINE; do
|
||||
|
||||
echo "---------------------------------- Sava PalPé mec"
|
||||
|
@ -206,26 +255,26 @@ while read LINE; do
|
|||
echo "---------------------------------- PalPAY for Tiddler"
|
||||
TCREATED=$(echo ${LINE} | jq -r .created)
|
||||
TTITLE=$(echo ${LINE} | jq -r .title)
|
||||
TTEXT=$(echo ${LINE} | jq -r '.text | match("/ipfs/[^\"\\s]+") | .string | first')
|
||||
TTAGS=$(echo ${LINE} | jq -r .tags)
|
||||
|
||||
## PREPARE PINNING -
|
||||
## Extract "/ipfs/CID" from Tiddler - to pin TOPIN -
|
||||
TOPIN=$(echo ${LINE} | jq -r .ipfs) ## Tiddler produced by "Astroport Desktop"
|
||||
[[ -z ${TOPIN} ]] && TOPIN=$(echo ${LINE} | jq -r ._canonical_uri) ## Tiddler is exported to IPFS
|
||||
[[ ! $(echo ${TOPIN} | grep '/ipfs') ]] \
|
||||
&& echo "NOT COMPATIBLE ${TOPIN}" \
|
||||
&& TOPIN=""
|
||||
[[ ! $(echo ${TOPIN} | grep '/ipfs') ]] && TOPIN=$(echo ${LINE} | jq -r ._canonical_uri) ## Tiddler is exported to IPFS
|
||||
[[ ! $(echo ${TOPIN} | grep '/ipfs') ]] && TOPIN=$(echo ${LINE} | jq -r '.text | match("/ipfs/[^\"\\s]+") | .string | first') ## Ket first /ipfs/ link from text field
|
||||
[[ ! $(echo ${TOPIN} | grep '/ipfs') ]] && echo "NOT COMPATIBLE ${TOPIN}" && TOPIN=""
|
||||
|
||||
echo "$TTITLE"
|
||||
|
||||
## Count emails found
|
||||
emails=($(echo "$TTAGS" | grep -E -o "\b[a-zA-Z0-9.%+-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,6}\b"))
|
||||
## Count extra emails found
|
||||
emails=($(echo "$TTAGS" | sed "s~${PLAYER}~ ~g" | grep -E -o "\b[a-zA-Z0-9.%+-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,6}\b"))
|
||||
nb=${#emails[@]}
|
||||
zen=$(echo "scale=2; $nb / 10" | bc) ## / divide by 10, 1 zen each
|
||||
#~ zen=$(echo "scale=2; $nb / 10" | bc) ## / divide by 10 = 1 ZEN each
|
||||
|
||||
## Get first zmail
|
||||
ZMAIL="${emails}"
|
||||
|
||||
MSG="SEND + $zen ZEN TO BROs : ${emails[@]}"
|
||||
MSG="SEND + $nb JUNE TO BROs : ${emails[@]}"
|
||||
echo $MSG
|
||||
|
||||
ASTROTW="" STAMP="" ASTROG1="" ASTROIPFS="" ASTROFEED=""
|
||||
|
@ -234,45 +283,62 @@ while read LINE; do
|
|||
echo "export ASTROPORT=${ASTROPORT} ASTROTW=${ASTROTW} ASTROG1=${ASTROG1} ASTROMAIL=${EMAIL} ASTROFEED=${FEEDNS}"
|
||||
[[ ${ASTROTW} == "" ]] && ASTROTW=${ASTRONAUTENS}
|
||||
|
||||
if [[ ${ASTROG1} && ${ASTROG1} != ${G1PUB} ]]; then
|
||||
echo "TOPIN=${TOPIN}"
|
||||
if [[ ${TOPIN} && ${ASTROG1} && ${ASTROG1} != ${G1PUB} ]]; then
|
||||
|
||||
## SEND zen ZEN (G1 dice JUNE) TO ALL ## MAKE ONE EACH AFTER ALL EMAIL CONSUMED ##
|
||||
#~ ~/.zen/Astroport.ONE/tools/timeout.sh -t 12 \
|
||||
#~ ${MY_PATH}/../tools/PAY4SURE.py -k ~/.zen/game/players/${PLAYER}/secret.dunikey pay -a ${zen} -p ${ASTROG1} -c "${emails[@]} $TTITLE" -m > /dev/null 2>&1
|
||||
## Filling comment with email list will make players resend to all ## MAY BE A BAD IDEA ###
|
||||
echo ${LINE} > ~/.zen/tmp/${MOATS}/line
|
||||
LINEH=$(ipfs add -q ~/.zen/tmp/${MOATS}/line)
|
||||
${MY_PATH}/../tools/PAY4SURE.sh "${HOME}/.zen/game/players/${PLAYER}/secret.dunikey" "${zen}" "${ASTROG1}" "${emails[@]} /ipfs/$LINEH"
|
||||
##############################
|
||||
### GET PAID & GET PINNED !!
|
||||
##############################
|
||||
${MY_PATH}/../tools/PAY4SURE.sh "${HOME}/.zen/game/players/${PLAYER}/secret.dunikey" "${nb}" "${ASTROG1}" "${emails[@]} /ipfs/${TOPIN}"
|
||||
|
||||
echo "<html><body><h1>BRO ${PLAYER}</h1> : $MSG" > ~/.zen/tmp/${MOATS}/g1message
|
||||
echo "<html><head><meta charset='UTF-8'>
|
||||
<style>
|
||||
body {
|
||||
font-family: 'Courier New', monospace;
|
||||
}
|
||||
pre {
|
||||
white-space: pre-wrap;
|
||||
}
|
||||
</style></head><body><h1>BRO ${PLAYER}</h1> : $MSG" > ~/.zen/tmp/${MOATS}/g1message
|
||||
## PINNING IPFS MEDIA - PROOF OF COPY SYSTEM -
|
||||
[[ ! -z $TOPIN ]] \
|
||||
&& ipfs pin add $TOPIN \
|
||||
&& echo "<h2>PINNING $TOPIN</h2>(☼‿‿☼)" >> ~/.zen/tmp/${MOATS}/g1message
|
||||
&& echo "<br> <a href='${myIPFSGW}'/ipns/${ASTROTW}#${TTITLE}>${TTITLE}</a>
|
||||
<br>( ${emails[@]} )<br>
|
||||
<h2>PIN: <a href='${myIPFSGW}'$TOPIN>$TOPIN</a></h2>(☼‿‿☼)" >> ~/.zen/tmp/${MOATS}/g1message
|
||||
## lazy mode... NOT FINISHING HTML TAGGING... browser shoud display html page ;)
|
||||
|
||||
${MY_PATH}/../tools/mailjet.sh "${PLAYER}" ~/.zen/tmp/${MOATS}/g1message "PIN TIDDLER"
|
||||
${MY_PATH}/../tools/mailjet.sh "${PLAYER}" ~/.zen/tmp/${MOATS}/g1message "BRO. ${ZMAIL} TW5 PIN"
|
||||
|
||||
else
|
||||
|
||||
## ${ZMAIL} NOT A PLAYER YET
|
||||
## SEND MESSAGE TO INFORM ${ZMAIL} OF THIS EXISTING TIDDLER
|
||||
echo "<html><body>
|
||||
echo "<html><head><meta charset='UTF-8'>
|
||||
<style>
|
||||
body {
|
||||
font-family: 'Courier New', monospace;
|
||||
}
|
||||
pre {
|
||||
white-space: pre-wrap;
|
||||
}
|
||||
</style></head><body>
|
||||
<h1>BRO. </h1>
|
||||
<br>
|
||||
<a href='${myIPFSGW}'/ipns/${ASTROTW}>${PLAYER}</a> HAS SHARED A TIDDLER WITH YOU.
|
||||
<br> <a href='${myIPFSGW}'/ipns/${ASTROTW}#${TTITLE}>${TTITLE}</a>
|
||||
<br>( ${emails[@]} )<br>
|
||||
<br><b>${TTITLE}</b><br>(✜‿‿✜)
|
||||
... Join <a href='https://qo-op.com'>UPlanet</a> open a TW !
|
||||
... Join <a href='https://qo-op.com'>UPlanet</a>
|
||||
</body></html>" > ~/.zen/tmp/palpay.bro
|
||||
|
||||
${MY_PATH}/../tools/mailjet.sh "${ZMAIL}" ~/.zen/tmp/palpay.bro "TIDDLER TW SHARING"
|
||||
${MY_PATH}/../tools/mailjet.sh "${ZMAIL}" ~/.zen/tmp/palpay.bro "BRO. ${PLAYER} TW5 link"
|
||||
|
||||
fi
|
||||
|
||||
|
||||
done < ~/.zen/tmp/${MOATS}/@tags.json
|
||||
|
||||
echo "=========== ( ◕‿◕) (◕‿◕ ) =============="
|
||||
echo "=====(•‿‿•)====== ( ◕‿◕) (◕‿◕ ) =======(•‿‿•)======="
|
||||
|
||||
rm -Rf $HOME/.zen/tmp/${MOATS}
|
||||
# rm -Rf $HOME/.zen/tmp/${MOATS}
|
||||
ls $HOME/.zen/tmp/${MOATS}
|
||||
|
||||
exit 0
|
||||
|
|
|
@ -42,75 +42,75 @@ mkdir -p ~/.zen/tmp/${MOATS}
|
|||
#####################################################
|
||||
# CREATION DE LA CLEF DERIVEE "G1VOEU"
|
||||
#####################################################
|
||||
source ~/.zen/game/players/${PLAYER}/secret.june ## LE PEPPER DU PLAYER DEVIENT LE SALT DU G1VOEU
|
||||
[[ ${PEPPER} ]] && echo "Using PLAYER PEPPER AS WISH SALT" && SECRET1=${PEPPER} ##
|
||||
[[ ! ${SECRET1} ]] && SECRET1=$(${MY_PATH}/../tools/diceware.sh 3 | xargs)
|
||||
source ~/.zen/game/players/${PLAYER}/secret.june ## LE PEPPER DU PLAYER DEVIENT LE SECRET1 DU G1VOEU
|
||||
[[ ${PEPPER} ]] && echo "Using PLAYER PEPPER AS WISH SALT" && SECRET1="${PEPPER}${UPLANETNAME}" ##
|
||||
[[ ! ${SECRET1} ]] && SECRET1=$(${MY_PATH}/../tools/diceware.sh 12 | xargs)
|
||||
|
||||
echo "${SECRET1}"
|
||||
#~ echo "${SECRET1}"
|
||||
|
||||
echo "## TITRE DU G1VOEU ? CapitalGluedWords please"
|
||||
[[ ! ${TITRE} ]] && read TITRE
|
||||
VoeuName=$(echo "${TITRE}" | sed -r 's/\<./\U&/g' | sed 's/ //g') # VoeuName EST LE TITRE DU VOEU : CapitalGluedWords + EMAIL
|
||||
echo "## TITRE DU G1VOEU ? CapitalGluedWords please"
|
||||
[[ ! ${TITRE} ]] && read TITRE
|
||||
VoeuName=$(echo "${TITRE}" | sed -r 's/\<./\U&/g' | sed 's/ //g') # VoeuName EST LE TITRE DU VOEU : CapitalGluedWords + EMAIL
|
||||
|
||||
SECRET2="${VoeuName} ${PLAYER}" ## SECRET2 est "TitreDuVoeu PLAYER"
|
||||
SECRET2="${VoeuName} ${PLAYER} ${SALT}" ## SECRET2 est "TitreDuVoeu PLAYER SALT"
|
||||
|
||||
echo "${SECRET2}" && [[ ! ${SECRET2} ]] && echo "EMPTY SECRET2 - ERROR" && exit 1
|
||||
echo "${SECRET2}" && [[ ! ${SECRET2} ]] && echo "EMPTY SECRET2 - ERROR" && exit 1
|
||||
|
||||
echo "## keygen PLAYER DERIVATE WISH KEY"
|
||||
${MY_PATH}/../tools/keygen -t duniter -o ~/.zen/tmp/${MOATS}/wish.dunikey "${SECRET1}" "${SECRET2}"
|
||||
WISHG1PUB=$(cat ~/.zen/tmp/${MOATS}/wish.dunikey | grep "pub:" | cut -d ' ' -f 2)
|
||||
echo "WISHG1PUB (G1PUB) = ${WISHG1PUB}"
|
||||
[[ ${WISHG1PUB} == "" ]] && echo "EMPTY WISHG1PUB G1PUB - ERROR" && exit 1
|
||||
mkdir -p ~/.zen/game/players/${PLAYER}/voeux/${VoeuName}/${WISHG1PUB}/
|
||||
mv ~/.zen/tmp/${MOATS}/wish.dunikey ~/.zen/game/players/${PLAYER}/voeux/${VoeuName}/${WISHG1PUB}/wish.dunikey
|
||||
echo "## keygen PLAYER DERIVATE WISH KEY"
|
||||
${MY_PATH}/../tools/keygen -t duniter -o ~/.zen/tmp/${MOATS}/wish.dunikey "${SECRET1}" "${SECRET2}"
|
||||
WISHG1PUB=$(cat ~/.zen/tmp/${MOATS}/wish.dunikey | grep "pub:" | cut -d ' ' -f 2)
|
||||
echo "WISHG1PUB (G1PUB) = ${WISHG1PUB}"
|
||||
[[ ${WISHG1PUB} == "" ]] && echo "EMPTY WISHG1PUB G1PUB - ERROR" && exit 1
|
||||
mkdir -p ~/.zen/game/players/${PLAYER}/voeux/${VoeuName}/${WISHG1PUB}/
|
||||
mv ~/.zen/tmp/${MOATS}/wish.dunikey ~/.zen/game/players/${PLAYER}/voeux/${VoeuName}/${WISHG1PUB}/wish.dunikey
|
||||
|
||||
echo "# NOUVEAU VOEU"
|
||||
mkdir -p ~/.zen/game/players/${PLAYER}/voeux/${VoeuName}/${WISHG1PUB}/
|
||||
${MY_PATH}/../tools/keygen -t ipfs -o ~/.zen/game/players/${PLAYER}/voeux/${VoeuName}/${WISHG1PUB}/qrtw.ipfskey "${SECRET1}" "${SECRET2}"
|
||||
ipfs key import ${WISHG1PUB} -f pem-pkcs8-cleartext ~/.zen/game/players/${PLAYER}/voeux/${VoeuName}/${WISHG1PUB}/qrtw.ipfskey
|
||||
VOEUNS=$(ipfs key list -l | grep -w "${WISHG1PUB}" | cut -d ' ' -f 1 )
|
||||
echo "/ipns/${VOEUNS}"
|
||||
echo "# NOUVEAU VOEU"
|
||||
mkdir -p ~/.zen/game/players/${PLAYER}/voeux/${VoeuName}/${WISHG1PUB}/
|
||||
${MY_PATH}/../tools/keygen -t ipfs -o ~/.zen/game/players/${PLAYER}/voeux/${VoeuName}/${WISHG1PUB}/qrtw.ipfskey "${SECRET1}" "${SECRET2}"
|
||||
ipfs key import ${WISHG1PUB} -f pem-pkcs8-cleartext ~/.zen/game/players/${PLAYER}/voeux/${VoeuName}/${WISHG1PUB}/qrtw.ipfskey
|
||||
VOEUNS=$(ipfs key list -l | grep -w "${WISHG1PUB}" | cut -d ' ' -f 1 )
|
||||
echo "/ipns/${VOEUNS}"
|
||||
|
||||
## NATOOLS ENCRYPT
|
||||
echo "# NATOOLS ENCODING qrtw.ipfskey "
|
||||
${MY_PATH}/../tools/natools.py encrypt -p $G1PUB -i $HOME/.zen/game/players/${PLAYER}/voeux/${VoeuName}/${WISHG1PUB}/qrtw.ipfskey -o $HOME/.zen/tmp/${MOATS}/qrtw.ipfskey.$G1PUB.enc
|
||||
ENCODING=$(cat $HOME/.zen/tmp/${MOATS}/qrtw.ipfskey.$G1PUB.enc | base16)
|
||||
#~ echo $ENCODING
|
||||
## NATOOLS ENCRYPT
|
||||
echo "# NATOOLS ENCODING qrtw.ipfskey "
|
||||
${MY_PATH}/../tools/natools.py encrypt -p $G1PUB -i $HOME/.zen/game/players/${PLAYER}/voeux/${VoeuName}/${WISHG1PUB}/qrtw.ipfskey -o $HOME/.zen/tmp/${MOATS}/qrtw.ipfskey.$G1PUB.enc
|
||||
ENCODING=$(cat $HOME/.zen/tmp/${MOATS}/qrtw.ipfskey.$G1PUB.enc | base16)
|
||||
#~ echo $ENCODING
|
||||
|
||||
## TEST IPFS
|
||||
#~ ipfs --timeout=30s cat /ipns/${VOEUNS} > ~/.zen/tmp/${VOEUNS}.json
|
||||
#~ [[ -s ~/.zen/tmp/${VOEUNS}.json ]] \
|
||||
#~ && echo "HEY !!! UN CHANNEL EXISTE DEJA POUR CE VOEU ! ~/.zen/tmp/${VOEUNS}.json - EXIT -" \
|
||||
#~ && exit 1
|
||||
## TEST IPFS
|
||||
#~ ipfs --timeout=30s cat --progress=false /ipns/${VOEUNS} > ~/.zen/tmp/${VOEUNS}.json
|
||||
#~ [[ -s ~/.zen/tmp/${VOEUNS}.json ]] \
|
||||
#~ && echo "HEY !!! UN CHANNEL EXISTE DEJA POUR CE VOEU ! ~/.zen/tmp/${VOEUNS}.json - EXIT -" \
|
||||
#~ && exit 1
|
||||
|
||||
echo "# UPGRADING WORLD WHISHKEY DATABASE"
|
||||
echo "# UPGRADING WORLD WHISHKEY DATABASE"
|
||||
|
||||
mkdir -p ~/.zen/game/world/${VoeuName}/${WISHG1PUB}/
|
||||
## A la fois Titre du tag et Pepper construction de clef
|
||||
echo ${VoeuName} > ~/.zen/game/world/${VoeuName}/${WISHG1PUB}/.pepper
|
||||
echo ${WISHG1PUB} > ~/.zen/game/world/${VoeuName}/${WISHG1PUB}/.wish
|
||||
mkdir -p ~/.zen/game/world/${VoeuName}/${WISHG1PUB}/
|
||||
## A la fois Titre du tag et Pepper construction de clef
|
||||
echo ${VoeuName} > ~/.zen/game/world/${VoeuName}/${WISHG1PUB}/.pepper
|
||||
echo ${WISHG1PUB} > ~/.zen/game/world/${VoeuName}/${WISHG1PUB}/.wish
|
||||
|
||||
echo "# CREATION QR CODE"
|
||||
echo "# CREATION QR CODE"
|
||||
|
||||
LIBRA=$(head -n 2 ~/.zen/Astroport.ONE/A_boostrap_nodes.txt | tail -n 1 | cut -d ' ' -f 2)
|
||||
LIBRA=$(head -n 2 ~/.zen/Astroport.ONE/A_boostrap_nodes.txt | tail -n 1 | xargs | cut -d ' ' -f 2)
|
||||
|
||||
qrencode -s 12 -o "$HOME/.zen/game/world/${VoeuName}/${WISHG1PUB}/QR.WISHLINK.png" "$LIBRA/ipns/${VOEUNS}"
|
||||
qrencode -s 12 -o "$HOME/.zen/game/world/${VoeuName}/${WISHG1PUB}/QR.WISHLINK.png" "$LIBRA/ipns/${VOEUNS}"
|
||||
|
||||
#################################################################
|
||||
## MAKING SPECIAL amrzqr => G1Milgram TICKET
|
||||
## LE QRCODE CORRESPOND A LA CLEF DERIVE "${PLAYER} :: G1${VoeuName} ${PLAYERG1PUB}" avec PASS=YYYYMM
|
||||
IMAGIC=$(${MY_PATH}/../tools/VOEUX.print.sh "${PLAYER}" "${VoeuName}" "${MOATS}" "${G1PUB}" | tail -n 1)
|
||||
cp ~/.zen/tmp/${MOATS}/START.png ~/.zen/game/world/${VoeuName}/${WISHG1PUB}/
|
||||
#################################################################
|
||||
## MAKING SPECIAL amrzqr => G1Milgram TICKET
|
||||
## LE QRCODE CORRESPOND A LA CLEF DERIVE "${PLAYER} :: G1${VoeuName} ${PLAYERG1PUB}" avec PASS=YYYYMM
|
||||
IMAGIC=$(${MY_PATH}/../tools/VOEUX.print.sh "${PLAYER}" "${VoeuName}" "${MOATS}" "${G1PUB}" | tail -n 1)
|
||||
cp ~/.zen/tmp/${MOATS}/START.png ~/.zen/game/world/${VoeuName}/${WISHG1PUB}/
|
||||
|
||||
qrencode -s 12 -o "$HOME/.zen/game/world/${VoeuName}/${WISHG1PUB}/QR.ASTROLINK.png" "$LIBRA/ipns/$ASTRONAUTENS"
|
||||
qrencode -s 12 -o "$HOME/.zen/game/world/${VoeuName}/${WISHG1PUB}/QR.G1ASTRO.png" "${G1PUB}"
|
||||
qrencode -s 12 -o "$HOME/.zen/game/world/${VoeuName}/${WISHG1PUB}/QR.G1WISH.png" "${WISHG1PUB}:ZEN"
|
||||
qrencode -s 12 -o "$HOME/.zen/game/world/${VoeuName}/${WISHG1PUB}/QR.IPNS.png" "/ipns/${VOEUNS}"
|
||||
qrencode -s 12 -o "$HOME/.zen/game/world/${VoeuName}/${WISHG1PUB}/QR.ASTROLINK.png" "$LIBRA/ipns/$ASTRONAUTENS"
|
||||
qrencode -s 12 -o "$HOME/.zen/game/world/${VoeuName}/${WISHG1PUB}/QR.G1ASTRO.png" "${G1PUB}"
|
||||
qrencode -s 12 -o "$HOME/.zen/game/world/${VoeuName}/${WISHG1PUB}/QR.G1WISH.png" "${WISHG1PUB}:ZEN"
|
||||
qrencode -s 12 -o "$HOME/.zen/game/world/${VoeuName}/${WISHG1PUB}/QR.IPNS.png" "/ipns/${VOEUNS}"
|
||||
|
||||
#################################
|
||||
# PREMIER TYPE ~/.zen/tmp/player.png
|
||||
convert $HOME/.zen/game/world/${VoeuName}/${WISHG1PUB}/QR.WISHLINK.png -resize 300 ~/.zen/tmp/QRWISHLINK.png
|
||||
convert ${MY_PATH}/../images/logoastro.png -resize 220 ~/.zen/tmp/ASTROLOGO.png
|
||||
# PREMIER TYPE ~/.zen/tmp/player.png
|
||||
convert $HOME/.zen/game/world/${VoeuName}/${WISHG1PUB}/QR.WISHLINK.png -resize 300 ~/.zen/tmp/QRWISHLINK.png
|
||||
convert ${MY_PATH}/../images/logoastro.png -resize 220 ~/.zen/tmp/ASTROLOGO.png
|
||||
|
||||
composite -compose Over -gravity NorthWest -geometry +350+10 ~/.zen/tmp/ASTROLOGO.png ${MY_PATH}/../images/Brother_600x400.png ~/.zen/tmp/astroport.png
|
||||
composite -compose Over -gravity NorthWest -geometry +0+0 ~/.zen/tmp/QRWISHLINK.png ~/.zen/tmp/astroport.png ~/.zen/tmp/one.png
|
||||
|
@ -120,9 +120,9 @@ convert -gravity northwest -pointsize 30 -fill black -draw "text 320,300 \"*****
|
|||
convert -gravity northwest -pointsize 33 -fill black -draw "text 320,350 \"${VoeuName}\"" ~/.zen/tmp/salt.png ~/.zen/tmp/player.png
|
||||
|
||||
#################################
|
||||
# SECOND TYPE ~/.zen/tmp/voeu.png
|
||||
convert $HOME/.zen/game/world/${VoeuName}/${WISHG1PUB}/QR.G1WISH.png -resize 300 ~/.zen/tmp/G1WISH.png
|
||||
convert ${MY_PATH}/../images/logojeu.png -resize 260 ~/.zen/tmp/MIZLOGO.png
|
||||
# SECOND TYPE ~/.zen/tmp/voeu.png
|
||||
convert $HOME/.zen/game/world/${VoeuName}/${WISHG1PUB}/QR.G1WISH.png -resize 300 ~/.zen/tmp/G1WISH.png
|
||||
convert ${MY_PATH}/../images/logojeu.png -resize 260 ~/.zen/tmp/MIZLOGO.png
|
||||
|
||||
composite -compose Over -gravity NorthWest -geometry +0+0 ~/.zen/tmp/G1WISH.png ${MY_PATH}/../images/Brother_600x400.png ~/.zen/tmp/astroport.png
|
||||
composite -compose Over -gravity NorthWest -geometry +300+0 ~/.zen/tmp/QRWISHLINK.png ~/.zen/tmp/astroport.png ~/.zen/tmp/one.png
|
||||
|
@ -131,136 +131,134 @@ composite -compose Over -gravity NorthWest -geometry +320+280 ~/.zen/tmp/MIZLOGO
|
|||
convert -gravity northwest -pointsize 28 -fill black -draw "text 32,350 \"Ğ1 VOEU\"" ~/.zen/tmp/two.png ~/.zen/tmp/pep.png
|
||||
convert -gravity northwest -pointsize 50 -fill black -draw "text 30,300 \"${VoeuName}\"" ~/.zen/tmp/pep.png ~/.zen/tmp/voeu.png
|
||||
|
||||
# IMAGE DANS IPFS
|
||||
IVOEUPLAY=$(ipfs add -Hq ~/.zen/tmp/player.png | tail -n 1)
|
||||
IVOEU=$(ipfs add -Hq ~/.zen/tmp/voeu.png | tail -n 1)
|
||||
|
||||
### G1VOEU LIGHTBEAM :: ${PLAYER}_${VoeuName} :: /ipns/${VOEUNS}
|
||||
echo '[{"title":"$:/plugins/astroport/lightbeams/saver/ipns/lightbeam-name","text":"'${PLAYER}_${VoeuName}'","tags":""}]' > ~/.zen/tmp/${MOATS}/lightbeam-name.json
|
||||
echo '[{"title":"$:/plugins/astroport/lightbeams/saver/ipns/lightbeam-key-'${VoeuName}'","text":"'${VOEUNS}'","tags":""}]' > ~/.zen/tmp/${MOATS}/lightbeam-key.json
|
||||
echo '[{"title":"$:/plugins/astroport/lightbeams/saver/g1/lightbeam-key-'${VoeuName}'","text":"'${WISHG1PUB}'","tags":""}]' > ~/.zen/tmp/${MOATS}/lightbeam-g1.json
|
||||
echo '[{"title":"$:/plugins/astroport/lightbeams/saver/g1/lightbeam-natools-'${VoeuName}'","text":"'${ENCODING}'","tags":""}]' > ~/.zen/tmp/${MOATS}/lightbeam-natools.json
|
||||
|
||||
# IMAGE DANS IPFS
|
||||
IVOEUPLAY=$(ipfs add -Hq ~/.zen/tmp/player.png | tail -n 1)
|
||||
IVOEU=$(ipfs add -Hq ~/.zen/tmp/voeu.png | tail -n 1)
|
||||
|
||||
### G1VOEU LIGHTBEAM :: ${PLAYER}_${VoeuName} :: /ipns/${VOEUNS}
|
||||
echo '[{"title":"$:/plugins/astroport/lightbeams/saver/ipns/lightbeam-name","text":"'${PLAYER}_${VoeuName}'","tags":""}]' > ~/.zen/tmp/${MOATS}/lightbeam-name.json
|
||||
echo '[{"title":"$:/plugins/astroport/lightbeams/saver/ipns/lightbeam-key-'${VoeuName}'","text":"'${VOEUNS}'","tags":""}]' > ~/.zen/tmp/${MOATS}/lightbeam-key.json
|
||||
echo '[{"title":"$:/plugins/astroport/lightbeams/saver/g1/lightbeam-key-'${VoeuName}'","text":"'${WISHG1PUB}'","tags":""}]' > ~/.zen/tmp/${MOATS}/lightbeam-g1.json
|
||||
echo '[{"title":"$:/plugins/astroport/lightbeams/saver/g1/lightbeam-natools-'${VoeuName}'","text":"'${ENCODING}'","tags":""}]' > ~/.zen/tmp/${MOATS}/lightbeam-natools.json
|
||||
|
||||
# TEXT="<a target='_blank' href='"/ipns/${VOEUNS}"'><img src='"/ipfs/${IVOEUPLAY}"'></a><br><br><a target='_blank' href='"/ipns/${VOEUNS}"'>"${VoeuName}"</a>"
|
||||
#:[tag[G1CopierYoutube]] [tag[pdf]]
|
||||
# Contains QRCode linked to G1VoeuTW and BUTTON listing G1Voeux
|
||||
# <img width='600' src='"/ipfs/${IMAGIC}"'><br>
|
||||
TEXT="<a target='_blank' href='#:[tag[G1"${VoeuName}"]]' ><img src='"/ipfs/${IVOEUPLAY}"'></a><br>
|
||||
<a target='_blank' href='"/ipns/${VOEUNS}"'>TW G1Voeu "${PLAYER}"</a><br><br>
|
||||
<\$button class='tc-tiddlylink'>
|
||||
<\$list filter='[tag[G1"${VoeuName}"]]'>
|
||||
<\$action-navigate \$to=<<currentTiddler>> \$scroll=no/>
|
||||
</\$list>
|
||||
Afficher tous vos G1"${VoeuName}"
|
||||
</\$button>"
|
||||
# Contains QRCode linked to G1VoeuTW and BUTTON listing G1Voeux
|
||||
# <img width='600' src='"/ipfs/${IMAGIC}"'><br>
|
||||
TEXT="<a target='_blank' href='#:[tag[G1"${VoeuName}"]]' ><img src='"/ipfs/${IVOEUPLAY}"'></a><br>\n
|
||||
<a target='_blank' href='"/ipns/${VOEUNS}"'>TW G1Voeu "${PLAYER}"</a><br><br>\n\n
|
||||
<\$button class='tc-tiddlylink'>\n
|
||||
<\$list filter='[tag[G1"${VoeuName}"]]'>\n
|
||||
<\$action-navigate \$to=<<currentTiddler>> \$scroll=no/>\n
|
||||
</\$list>\n
|
||||
ALL G1"${VoeuName}"\n
|
||||
</\$button>"
|
||||
|
||||
# NEW IVEU TIDDLER
|
||||
echo "## Creation json tiddler : G1${VoeuName} /ipfs/${IVOEU}"
|
||||
echo '[
|
||||
{
|
||||
"created": "'${MOATS}'",
|
||||
"title": "'${VoeuName}'",
|
||||
"type": "'text/vnd.tiddlywiki'",
|
||||
"astronautens": "'/ipns/${ASTRONAUTENS}'",
|
||||
"wishns": "'/ipns/${VOEUNS}'",
|
||||
"qrcode": "'/ipfs/${IVOEUPLAY}'",
|
||||
"decode": "'/ipfs/${IVOEU}'",
|
||||
"wish": "'${WISHG1PUB}'",
|
||||
"g1pub": "'${G1PUB}'",
|
||||
"text": "'${TEXT}'",
|
||||
"tags": "'G1Voeu G1${VoeuName} ${PLAYER}'",
|
||||
"asksalt": "'${HPass}'",
|
||||
"junesec" : "'${ENCODING}'"
|
||||
}
|
||||
# NEW IVEU TIDDLER
|
||||
echo "## Creation json tiddler : G1${VoeuName} /ipfs/${IVOEU}"
|
||||
echo '[
|
||||
{
|
||||
"created": "'${MOATS}'",
|
||||
"title": "'${VoeuName}'",
|
||||
"type": "'text/vnd.tiddlywiki'",
|
||||
"astronautens": "'/ipns/${ASTRONAUTENS}'",
|
||||
"wishns": "'/ipns/${VOEUNS}'",
|
||||
"qrcode": "'/ipfs/${IVOEUPLAY}'",
|
||||
"decode": "'/ipfs/${IVOEU}'",
|
||||
"wish": "'${WISHG1PUB}'",
|
||||
"g1pub": "'${G1PUB}'",
|
||||
"text": "'${TEXT}'",
|
||||
"tags": "'G1Voeu G1${VoeuName} ${PLAYER}'",
|
||||
"asksalt": "'${HPass}'",
|
||||
"junesec" : "'${ENCODING}'"
|
||||
}
|
||||
]
|
||||
' > ~/.zen/game/world/${VoeuName}/${WISHG1PUB}/${VoeuName}.voeu.json
|
||||
|
||||
|
||||
|
||||
rm -f ~/.zen/tmp/newindex.html
|
||||
rm -f ~/.zen/tmp/newindex.html
|
||||
|
||||
echo "Nouveau Voeu ${VoeuName} dans MOA $PSEUDO : http://127.0.0.1:8080/ipns/$ASTRONAUTENS"
|
||||
tiddlywiki --load $INDEX \
|
||||
--deletetiddlers '[tag[voeu]]' \
|
||||
--import ~/.zen/tmp/${MOATS}/lightbeam-name.json "application/json" \
|
||||
--import ~/.zen/tmp/${MOATS}/lightbeam-key.json "application/json" \
|
||||
--import ~/.zen/tmp/${MOATS}/lightbeam-g1.json "application/json" \
|
||||
--import ~/.zen/tmp/${MOATS}/lightbeam-natools.json "application/json" \
|
||||
--import ~/.zen/game/world/${VoeuName}/${WISHG1PUB}/${VoeuName}.voeu.json "application/json" \
|
||||
--output ~/.zen/tmp --render "$:/core/save/all" "newindex.html" "text/plain"
|
||||
echo "Nouveau Voeu ${VoeuName} dans MOA $PSEUDO : http://127.0.0.1:8080/ipns/$ASTRONAUTENS"
|
||||
tiddlywiki --load $INDEX \
|
||||
--deletetiddlers '[tag[voeu]]' \
|
||||
--import ~/.zen/tmp/${MOATS}/lightbeam-name.json "application/json" \
|
||||
--import ~/.zen/tmp/${MOATS}/lightbeam-key.json "application/json" \
|
||||
--import ~/.zen/tmp/${MOATS}/lightbeam-g1.json "application/json" \
|
||||
--import ~/.zen/tmp/${MOATS}/lightbeam-natools.json "application/json" \
|
||||
--import ~/.zen/game/world/${VoeuName}/${WISHG1PUB}/${VoeuName}.voeu.json "application/json" \
|
||||
--output ~/.zen/tmp --render "$:/core/save/all" "newindex.html" "text/plain"
|
||||
|
||||
echo "PLAYER TW Update..."
|
||||
if [[ -s ~/.zen/tmp/newindex.html ]]; then
|
||||
echo "___ Mise à jour $INDEX"
|
||||
cp -f ~/.zen/tmp/newindex.html $INDEX
|
||||
else
|
||||
echo "ERROR INTO ~/.zen/game/world/${VoeuName}/${WISHG1PUB}/${VoeuName}.voeu.json"
|
||||
fi
|
||||
echo "PLAYER TW Update..."
|
||||
if [[ -s ~/.zen/tmp/newindex.html ]]; then
|
||||
echo "___ Mise à jour $INDEX"
|
||||
cp -f ~/.zen/tmp/newindex.html $INDEX
|
||||
else
|
||||
echo "ERROR INTO ~/.zen/game/world/${VoeuName}/${WISHG1PUB}/${VoeuName}.voeu.json"
|
||||
fi
|
||||
|
||||
# PRINTING
|
||||
LP=$(ls /dev/usb/lp* | head -n1)
|
||||
if [[ ! $LP ]]; then
|
||||
echo "NO PRINTER FOUND - Plug a Brother QL700 or Add your printer"
|
||||
else
|
||||
echo "IMPRESSION VOEU"
|
||||
brother_ql_create --model QL-700 --label-size 62 ~/.zen/game/world/${VoeuName}/${WISHG1PUB}/result.png > ~/.zen/tmp/toprint.bin 2>/dev/null
|
||||
sudo brother_ql_print ~/.zen/tmp/toprint.bin $LP
|
||||
brother_ql_create --model QL-700 --label-size 62 ~/.zen/tmp/player.png > ~/.zen/tmp/toprint.bin 2>/dev/null
|
||||
sudo brother_ql_print ~/.zen/tmp/toprint.bin $LP
|
||||
brother_ql_create --model QL-700 --label-size 62 ~/.zen/tmp/voeu.png > ~/.zen/tmp/toprint.bin 2>/dev/null
|
||||
sudo brother_ql_print ~/.zen/tmp/toprint.bin $LP
|
||||
fi
|
||||
# PRINTING
|
||||
LP=$(ls /dev/usb/lp* | head -n1)
|
||||
if [[ ! $LP ]]; then
|
||||
echo "NO PRINTER FOUND - Plug a Brother QL700 or Add your printer"
|
||||
else
|
||||
echo "IMPRESSION VOEU"
|
||||
brother_ql_create --model QL-700 --label-size 62 ~/.zen/game/world/${VoeuName}/${WISHG1PUB}/result.png > ~/.zen/tmp/toprint.bin 2>/dev/null
|
||||
sudo brother_ql_print ~/.zen/tmp/toprint.bin $LP
|
||||
brother_ql_create --model QL-700 --label-size 62 ~/.zen/tmp/player.png > ~/.zen/tmp/toprint.bin 2>/dev/null
|
||||
sudo brother_ql_print ~/.zen/tmp/toprint.bin $LP
|
||||
brother_ql_create --model QL-700 --label-size 62 ~/.zen/tmp/voeu.png > ~/.zen/tmp/toprint.bin 2>/dev/null
|
||||
sudo brother_ql_print ~/.zen/tmp/toprint.bin $LP
|
||||
fi
|
||||
|
||||
# COPY QR CODE TO PLAYER ZONE
|
||||
cp ~/.zen/tmp/player.png ~/.zen/tmp/voeu.png ~/.zen/game/players/${PLAYER}/voeux/${VoeuName}/${WISHG1PUB}/
|
||||
echo "${SECRET1}" > ~/.zen/game/players/${PLAYER}/voeux/${VoeuName}/${WISHG1PUB}/.salt
|
||||
echo "${VoeuName}" > ~/.zen/game/players/${PLAYER}/voeux/${VoeuName}/${WISHG1PUB}/.title
|
||||
# COPY QR CODE TO PLAYER ZONE
|
||||
cp ~/.zen/tmp/player.png ~/.zen/tmp/voeu.png ~/.zen/game/players/${PLAYER}/voeux/${VoeuName}/${WISHG1PUB}/
|
||||
echo "${SECRET1}" > ~/.zen/game/players/${PLAYER}/voeux/${VoeuName}/${WISHG1PUB}/.salt
|
||||
echo "${VoeuName}" > ~/.zen/game/players/${PLAYER}/voeux/${VoeuName}/${WISHG1PUB}/.title
|
||||
|
||||
echo "$LIBRA/ipns/${VOEUNS}" > ~/.zen/game/players/${PLAYER}/voeux/${VoeuName}/${WISHG1PUB}/.link
|
||||
cp ~/.zen/game/players/${PLAYER}/voeux/${VoeuName}/${WISHG1PUB}/.link ~/.zen/game/world/${VoeuName}/${WISHG1PUB}/
|
||||
cp ~/.zen/game/world/${VoeuName}/${WISHG1PUB}/*.png ~/.zen/game/players/${PLAYER}/voeux/${VoeuName}/${WISHG1PUB}/
|
||||
echo "$LIBRA/ipns/${VOEUNS}" > ~/.zen/game/players/${PLAYER}/voeux/${VoeuName}/${WISHG1PUB}/.link
|
||||
cp ~/.zen/game/players/${PLAYER}/voeux/${VoeuName}/${WISHG1PUB}/.link ~/.zen/game/world/${VoeuName}/${WISHG1PUB}/
|
||||
cp ~/.zen/game/world/${VoeuName}/${WISHG1PUB}/*.png ~/.zen/game/players/${PLAYER}/voeux/${VoeuName}/${WISHG1PUB}/
|
||||
|
||||
# PUBLISHING
|
||||
echo "ipfs name publish --key=${WISHG1PUB}"
|
||||
banner="## ${PLAYER} G1WISH READY :: G1${VoeuName}
|
||||
<img src=/ipfs/$IMAGIC>
|
||||
G1Voeu Astronaute (TW) : $LIBRA/ipns/$ASTRONAUTENS
|
||||
${VoeuName} FLUX Ŋ1
|
||||
G1${VoeuName} : $LIBRA/ipns/${VOEUNS}
|
||||
WISH G1PUB : ${WISHG1PUB}"
|
||||
# PUBLISHING
|
||||
echo "ipfs name publish --key=${WISHG1PUB}"
|
||||
banner="## ${PLAYER} G1WISH READY :: G1${VoeuName}
|
||||
<img src=/ipfs/$IMAGIC>
|
||||
G1Voeu Astronaute (TW) : $LIBRA/ipns/$ASTRONAUTENS
|
||||
${VoeuName} FLUX Ŋ1
|
||||
G1${VoeuName} : $LIBRA/ipns/${VOEUNS}
|
||||
WISH G1PUB : ${WISHG1PUB}"
|
||||
|
||||
IPUSH=$(echo "$banner" | ipfs add -q | tail -n 1)
|
||||
ipfs name publish --key=${WISHG1PUB} /ipfs/$IPUSH 2>/dev/null
|
||||
IPUSH=$(echo "$banner" | ipfs add -q | tail -n 1)
|
||||
ipfs name publish --key=${WISHG1PUB} /ipfs/$IPUSH 2>/dev/null
|
||||
|
||||
echo $IPUSH > ~/.zen/game/players/${PLAYER}/voeux/${VoeuName}/${WISHG1PUB}/.chain.${MOATS}
|
||||
echo $IPUSH > ~/.zen/game/players/${PLAYER}/voeux/${VoeuName}/${WISHG1PUB}/.chain.${MOATS}
|
||||
|
||||
echo $banner > ~/.zen/game/players/${PLAYER}/voeux/${VoeuName}/${WISHG1PUB}/banner
|
||||
cat ~/.zen/game/players/${PLAYER}/voeux/${VoeuName}/${WISHG1PUB}/banner
|
||||
echo $banner > ~/.zen/game/players/${PLAYER}/voeux/${VoeuName}/${WISHG1PUB}/banner
|
||||
cat ~/.zen/game/players/${PLAYER}/voeux/${VoeuName}/${WISHG1PUB}/banner
|
||||
|
||||
#~ echo "## TO RECEIVE G1RONDS Creating Cesium+ Profil #### timeout long ... patience ...."
|
||||
#~ ${MY_PATH}/../tools/jaklis/jaklis.py -k ~/.zen/game/players/${PLAYER}/voeux/${VoeuName}/${WISHG1PUB}/wish.dunikey set --name "G1Voeu ${VoeuName}" --avatar "$HOME/.zen/game/world/${VoeuName}/${WISHG1PUB}/result_qrcode.png" --site "$LIBRA/ipns/${VOEUNS}" #CESIUM+
|
||||
#~ [[ ! $? == 0 ]] && echo "G1VOEU CESIUM WALLET PROFILE CREATION FAILED !!!!"
|
||||
#~ echo "## TO RECEIVE G1RONDS Creating Cesium+ Profil #### timeout long ... patience ...."
|
||||
#~ ${MY_PATH}/../tools/jaklis/jaklis.py -k ~/.zen/game/players/${PLAYER}/voeux/${VoeuName}/${WISHG1PUB}/wish.dunikey set --name "G1Voeu ${VoeuName}" --avatar "$HOME/.zen/game/world/${VoeuName}/${WISHG1PUB}/result_qrcode.png" --site "$LIBRA/ipns/${VOEUNS}" #CESIUM+
|
||||
#~ [[ ! $? == 0 ]] && echo "G1VOEU CESIUM WALLET PROFILE CREATION FAILED !!!!"
|
||||
|
||||
echo "************************************************************"
|
||||
#~ echo "COULD LIMIT ON JUNE pour le Voeu ${VoeuName}"
|
||||
#~ echo ${MY_PATH}/../tools/jaklis/jaklis.py -k ~/.zen/game/players/${PLAYER}/secret.dunikey pay -a 1 -p ${WISHG1PUB} -c \'"${VOEUNS} G1Voeu ${VoeuName}"\' -m
|
||||
#~ echo "************************************************************"
|
||||
#~ echo "************************************************************"
|
||||
echo "************************************************************"
|
||||
#~ echo "COULD LIMIT ON JUNE pour le Voeu ${VoeuName}"
|
||||
#~ echo ${MY_PATH}/../tools/jaklis/jaklis.py -k ~/.zen/game/players/${PLAYER}/secret.dunikey pay -a 1 -p ${WISHG1PUB} -c \'"${VOEUNS} G1Voeu ${VoeuName}"\' -m
|
||||
#~ echo "************************************************************"
|
||||
#~ echo "************************************************************"
|
||||
|
||||
#~ ${MY_PATH}/../tools/jaklis/jaklis.py -k ~/.zen/game/players/${PLAYER}/secret.dunikey pay -a 1 -p ${WISHG1PUB} -c "$VOEUXNS G1Voeu ${VoeuName}" -m
|
||||
#~ [[ ! $? == 0 ]] \
|
||||
#~ && echo "SOOOOOOOOOOOORRRRRRRY GUY. YOU CANNOT PAY A G1 A NEW WISH - THIS IS FREE TO CHANGE -"
|
||||
#~ && rm -Rf ~/.zen/game/players/${PLAYER}/voeux/${VoeuName}/${WISHG1PUB} \
|
||||
#~ && rm -Rf ~/.zen/game/world/${VoeuName}/${WISHG1PUB}/ \
|
||||
#~ && ipfs key rm ${WISHG1PUB} \
|
||||
#~ && tiddlywiki --load ${INDEX} \
|
||||
#~ --deletetiddlers '${VoeuName}' \
|
||||
#~ --output ~/.zen/tmp --render "$:/core/save/all" "newindex.html" "text/plain" \
|
||||
#~ && cp -f ~/.zen/tmp/newindex.html $INDEX \
|
||||
#~ && echo "G1${VoeuName} FLUX REMOVED"
|
||||
#~ ${MY_PATH}/../tools/jaklis/jaklis.py -k ~/.zen/game/players/${PLAYER}/secret.dunikey pay -a 1 -p ${WISHG1PUB} -c "$VOEUXNS G1Voeu ${VoeuName}" -m
|
||||
#~ [[ ! $? == 0 ]] \
|
||||
#~ && echo "SOOOOOOOOOOOORRRRRRRY GUY. YOU CANNOT PAY A G1 A NEW WISH - THIS IS FREE TO CHANGE -"
|
||||
#~ && rm -Rf ~/.zen/game/players/${PLAYER}/voeux/${VoeuName}/${WISHG1PUB} \
|
||||
#~ && rm -Rf ~/.zen/game/world/${VoeuName}/${WISHG1PUB}/ \
|
||||
#~ && ipfs key rm ${WISHG1PUB} \
|
||||
#~ && tiddlywiki --load ${INDEX} \
|
||||
#~ --deletetiddlers '${VoeuName}' \
|
||||
#~ --output ~/.zen/tmp --render "$:/core/save/all" "newindex.html" "text/plain" \
|
||||
#~ && cp -f ~/.zen/tmp/newindex.html $INDEX \
|
||||
#~ && echo "G1${VoeuName} FLUX REMOVED"
|
||||
|
||||
echo "************************************************************"
|
||||
echo "************************************************************"
|
||||
|
||||
exit 0
|
||||
|
|
|
@ -0,0 +1,103 @@
|
|||
#!/bin/bash
|
||||
########################################################################
|
||||
# Version: 0.1
|
||||
# License: AGPL-3.0 (https://choosealicense.com/licenses/agpl-3.0/)
|
||||
########################################################################
|
||||
## EXPLORE SWARM MAPNS
|
||||
MY_PATH="`dirname \"$0\"`" # relative
|
||||
MY_PATH="`( cd \"$MY_PATH\" && pwd )`" # absolutized and normalized
|
||||
ME="${0##*/}"
|
||||
|
||||
. "$MY_PATH/../tools/my.sh"
|
||||
## LOG into ~/.zen/tmp/_12345.log
|
||||
exec 2>&1 >> ~/.zen/tmp/_12345.log
|
||||
|
||||
echo "=========================="
|
||||
echo "(◕‿◕ ) ${ME} (◕‿◕ ) "
|
||||
#~ ## CHECK IF ALREADY MErunning
|
||||
countMErunning=$(ps auxf --sort=+utime | grep -w $ME | grep -v -E 'color=auto|grep' | wc -l)
|
||||
[[ $countMErunning -gt 2 ]] && echo "$ME already running $countMErunning time" && exit 0
|
||||
|
||||
echo "(◕‿◕ ) ${ME} starting UPlanet Key Scan _______________________________"
|
||||
|
||||
## LOCAL
|
||||
LWKEYS=($(cat ~/.zen/tmp/${IPFSNODEID}/UPLANET/__/_*_*/_*.?_*.?/_*.??_*.??/_index.html 2>/dev/null | grep -o "url='/[^']*'"| sed "s/url='\(.*\)'/\1/" | awk -F"/" '{print $3}' | shuf ))
|
||||
echo ${#LWKEYS[@]} " local UMAPS"
|
||||
LSKEYS=($(cat ~/.zen/tmp/${IPFSNODEID}/UPLANET/SECTORS/_*_*/_*.?_*.?/_index.html 2>/dev/null | grep -o "url='/[^']*'"| sed "s/url='\(.*\)'/\1/" | awk -F"/" '{print $3}' | shuf ))
|
||||
echo ${#LSKEYS[@]} " local SECTORS"
|
||||
LRKEYS=($(cat ~/.zen/tmp/${IPFSNODEID}/UPLANET/REGIONS/_*_*/_index.html 2>/dev/null | grep -o "url='/[^']*'"| sed "s/url='\(.*\)'/\1/" | awk -F"/" '{print $3}' | shuf ))
|
||||
echo ${#LRKEYS[@]} " local REGIONS"
|
||||
|
||||
## SWARM
|
||||
WKEYS=($(cat ~/.zen/tmp/swarm/12D*/UPLANET/__/_*_*/_*.?_*.?/_*.??_*.??/_index.html 2>/dev/null | grep -o "url='/[^']*'"| sed "s/url='\(.*\)'/\1/" | awk -F"/" '{print $3}' | shuf ))
|
||||
echo ${#WKEYS[@]} " swarm UMAPS"
|
||||
SKEYS=($(cat ~/.zen/tmp/swarm/12D*/UPLANET/SECTORS/_*_*/_*.?_*.?/_index.html 2>/dev/null | grep -o "url='/[^']*'"| sed "s/url='\(.*\)'/\1/" | awk -F"/" '{print $3}' | shuf ))
|
||||
echo ${#SKEYS[@]} " swarm SECTORS"
|
||||
RKEYS=($(cat ~/.zen/tmp/swarm/12D*/UPLANET/REGIONS/_*_*/_index.html 2>/dev/null | grep -o "url='/[^']*'"| sed "s/url='\(.*\)'/\1/" | awk -F"/" '{print $3}' | shuf ))
|
||||
echo ${#RKEYS[@]} " swarm REGIONS"
|
||||
|
||||
## COMBINE & SHUFFLE KEYS
|
||||
combined=("${LWKEYS[@]}" "${LSKEYS[@]}" "${LRKEYS[@]}" "${WKEYS[@]}" "${SKEYS[@]}" "${RKEYS[@]}")
|
||||
UKEYS=($(echo "${combined[@]}" | tr ' ' '\n' | sort -u | shuf ))
|
||||
echo "SYNC ${#UKEYS[@]} GEOKEYS..."
|
||||
|
||||
## STORAGE FOR IPFS GET UplanetKeyS
|
||||
mkdir -p ~/.zen/tmp/flashmem
|
||||
|
||||
## Refresh flashmem/UplanetKey every 3 hours => DATA SHAKER
|
||||
find ~/.zen/tmp/flashmem -mmin +180 -exec rm -rf {} +
|
||||
|
||||
floop=0
|
||||
medo=0
|
||||
for key in ${UKEYS[@]}; do
|
||||
|
||||
[[ -d ~/.zen/tmp/flashmem/$key ]] \
|
||||
&& echo "$key already copied" && medo=$((medo +1)) && continue
|
||||
|
||||
echo "SYNC $key"
|
||||
|
||||
floop=$((floop +1))
|
||||
mkdir -p ~/.zen/tmp/flashmem/$key
|
||||
|
||||
echo "ipfs --timeout 180s get -o ~/.zen/tmp/flashmem/$key /ipns/$key"
|
||||
ipfs --timeout 180s get --progress=false -o ~/.zen/tmp/flashmem/$key /ipns/$key
|
||||
[[ $? == 0 ]] \
|
||||
&& medo=$((medo +1)) && floop=$((floop -1)) \
|
||||
|| rm -Rf ~/.zen/tmp/flashmem/$key # GOT IT or NOT ?
|
||||
|
||||
[ $floop -gt 33 ] && break
|
||||
|
||||
done
|
||||
echo "=========================="
|
||||
echo "(◕‿◕ ) ${ME} :: $medo SUCCESS missing $floop KEYS from ${#UKEYS[@]} GEOKEYS"
|
||||
echo "=========================="
|
||||
|
||||
## Search for TW /ipfs/ and refresh
|
||||
TWS=($(cat ~/.zen/tmp/flashmem/*/TWz/*/_index.html | grep -o "url='/[^']*'"| sed "s/url='\(.*\)'/\1/" | awk -F"/" '{print $3}' | shuf))
|
||||
echo "SYNC ${#TWS[@]} TWs..."
|
||||
floop=0
|
||||
medo=0
|
||||
for tw in ${TWS[@]}; do
|
||||
|
||||
[[ -d ~/.zen/tmp/flashmem/tw/$tw ]] \
|
||||
&& echo "$key already copied" && medo=$((medo +1)) && continue
|
||||
|
||||
echo "SYNC $key"
|
||||
|
||||
floop=$((floop +1))
|
||||
mkdir -p ~/.zen/tmp/flashmem/tw/$tw
|
||||
|
||||
ipfs --timeout 180s get --progress=false -o ~/.zen/tmp/flashmem/tw/$tw/index.html /ipns/$tw
|
||||
[[ $? == 0 ]] \
|
||||
&& medo=$((medo +1)) && floop=$((floop -1)) \
|
||||
|| rm -Rf ~/.zen/tmp/flashmem/tw/$tw
|
||||
|
||||
[ $floop -gt 33 ] && break
|
||||
|
||||
done
|
||||
|
||||
echo "=========================="
|
||||
echo "(✜‿‿✜) ${ME} :: $medo SUCCESS missing $floop KEYS from ${#TWS[@]} TWS"
|
||||
echo "=========================="
|
||||
|
||||
exit 0
|
|
@ -25,12 +25,13 @@ echo "## RUNNING NODE.refresh"
|
|||
if [[ -d ~/.zen/tmp/${IPFSNODEID} ]]; then
|
||||
|
||||
# ONLY FRESH DATA HERE
|
||||
BSIZE=$(du -b ~/.zen/tmp/${IPFSNODEID} | tail -n 1 | cut -f 1)
|
||||
BSIZE=$(du -b ~/.zen/tmp/${IPFSNODEID} | tail -n 1 | xargs | cut -f 1)
|
||||
## Getting actual online version
|
||||
#~ ipfs get -o ~/.zen/tmp/${IPFSNODEID} /ipns/${IPFSNODEID}/
|
||||
|
||||
## COPY STATION yt-dlp.list
|
||||
cp $HOME/.zen/.yt-dlp.list ~/.zen/tmp/${IPFSNODEID}/yt-dlp.list
|
||||
cp $HOME/.zen/.yt-dlp.mp3.list ~/.zen/tmp/${IPFSNODEID}/yt-dlp.mp3.list
|
||||
|
||||
## COPY COINS VALUE OF THE DAY
|
||||
rm -Rf ~/.zen/tmp/${IPFSNODEID}/COINS/
|
||||
|
@ -38,7 +39,8 @@ if [[ -d ~/.zen/tmp/${IPFSNODEID} ]]; then
|
|||
cp -f ~/.zen/tmp/coucou/*.COINS ~/.zen/tmp/${IPFSNODEID}/COINS/
|
||||
|
||||
## COPY 20h12.log
|
||||
cp -f /tmp/20h12.log ~/.zen/tmp/${IPFSNODEID}/
|
||||
rm -f ~/.zen/tmp/${IPFSNODEID}/20h12.log ## TODO REMOVE
|
||||
cp -f /tmp/20h12.log ~/.zen/tmp/${IPFSNODEID}/20h12.txt
|
||||
|
||||
## COPY FRIENDS
|
||||
PLAYERONE=($(ls -t ~/.zen/game/players/ | grep "@" 2>/dev/null))
|
||||
|
@ -46,12 +48,18 @@ if [[ -d ~/.zen/tmp/${IPFSNODEID} ]]; then
|
|||
## RUNING FOR ALL LOCAL PLAYERS
|
||||
for PLAYER in ${PLAYERONE[@]}; do
|
||||
echo "${PLAYER} GCHANGE FRIENDS"
|
||||
[[ -d ~/.zen/tmp/${IPFSNODEID}/${PLAYER} && ${PLAYER} != "" ]] && rm -Rf ~/.zen/tmp/${IPFSNODEID}/${PLAYER}/ ## TODO REMOVE (PROTOCOL UPGRADE)
|
||||
mkdir -p ~/.zen/tmp/${IPFSNODEID}/GCHANGE/${PLAYER}/FRIENDS/
|
||||
cp -Rf ~/.zen/game/players/${PLAYER}/FRIENDS/* ~/.zen/tmp/${IPFSNODEID}/GCHANGE/${PLAYER}/FRIENDS/ 2>/dev/null
|
||||
[[ -d ~/.zen/tmp/${IPFSNODEID}/${PLAYER} && ${PLAYER} != "" ]] \
|
||||
&& rm -Rf ~/.zen/tmp/${IPFSNODEID}/${PLAYER}/
|
||||
done
|
||||
## STOP GCHANGE SWARM SHARING --- too big data --- deprecated
|
||||
rm -Rf ~/.zen/tmp/${IPFSNODEID}/GCHANGE ## UGGLY PATCH
|
||||
|
||||
cp ~/.zen/GPS ~/.zen/tmp/${IPFSNODEID}/
|
||||
## INFORM GPS LOCATION
|
||||
[[ -s ~/.zen/game/players/.current/GPS.json ]] \
|
||||
&& cp ~/.zen/game/players/.current/GPS.json ~/.zen/tmp/${IPFSNODEID}/ \
|
||||
&& LAT=$(cat ~/.zen/tmp/${IPFSNODEID}/GPS.json | jq -r .[].lat) \
|
||||
&& LON=$(cat ~/.zen/tmp/${IPFSNODEID}/GPS.json | jq -r .[].lon) \
|
||||
&& echo "LAT=${LAT}; LON=${LON}" > ~/.zen/GPS
|
||||
|
||||
## REFRESH TIMESTAMPING
|
||||
echo "${MOATS}" > ~/.zen/tmp/${IPFSNODEID}/_MySwarm.moats
|
||||
|
@ -60,14 +68,14 @@ if [[ -d ~/.zen/tmp/${IPFSNODEID} ]]; then
|
|||
echo "############################################ MY MAP "
|
||||
ls ~/.zen/tmp/${IPFSNODEID}/
|
||||
echo "############################################"
|
||||
NSIZE=$(du -b ~/.zen/tmp/${IPFSNODEID} | tail -n 1 | cut -f 1)
|
||||
NSIZE=$(du -b ~/.zen/tmp/${IPFSNODEID} | tail -n 1 | xargs | cut -f 1)
|
||||
ROUTING=$(ipfs add -rwHq ~/.zen/tmp/${IPFSNODEID}/* | tail -n 1 )
|
||||
ipfs name publish /ipfs/${ROUTING}
|
||||
echo ">> $NSIZE Bytes STATION BALISE > ${myIPFS}/ipns/${IPFSNODEID}"
|
||||
|
||||
fi
|
||||
|
||||
## CLEANING SWARM 30 DAYS OLD
|
||||
find ~/.zen/tmp/swarm/ -mtime +30 -type d -exec rm -Rf '{}' \;
|
||||
echo "## CLEANING SWARM 3 DAYS OLD"
|
||||
find ~/.zen/tmp/swarm/ -mtime +3 -type d -exec rm -Rf '{}' \;
|
||||
|
||||
exit 0
|
||||
|
|
|
@ -11,32 +11,45 @@ MY_PATH="`( cd \"$MY_PATH\" && pwd )`" # absolutized and normalized
|
|||
## Publish All PLAYER TW,
|
||||
# Run TAG subprocess: tube, voeu
|
||||
############################################
|
||||
echo "## RUNNING PLAYER.refresh"
|
||||
echo "## RUNNING PLAYER.refresh
|
||||
|
||||
_..._
|
||||
.' '. _
|
||||
/ .-°°-\ _/ \\
|
||||
.-| /:. | | |
|
||||
| \ |:. /.-'-./
|
||||
| .-'-;:__.' =/
|
||||
.'= A=|STRO _.='
|
||||
/ _. | ;
|
||||
;-.-'| \ |
|
||||
/ | \ _\ _\\
|
||||
"
|
||||
|
||||
PLAYERONE="$1"
|
||||
# [[ $isLAN ]] && PLAYERONE=$(cat ~/.zen/game/players/.current/.player 2>/dev/null)
|
||||
[[ ! ${PLAYERONE} ]] && PLAYERONE=($(ls -t ~/.zen/game/players/ | grep "@" 2>/dev/null))
|
||||
|
||||
echo "FOUND : ${PLAYERONE[@]}"
|
||||
echo "FOUND ${#PLAYERONE[@]} ASTRONAUTS : ${PLAYERONE[@]}"
|
||||
CURRENT=$(readlink ~/.zen/game/players/.current | rev | cut -d '/' -f 1 | rev)
|
||||
|
||||
echo "RENEWING UPLANET NODE CACHE
|
||||
echo "RENEWING LOCAL UPLANET REPOSITORY (ADMIN=${CURRENT})
|
||||
~/.zen/tmp/${IPFSNODEID}/UPLANET/__/_*_*/_*.?_*.?/_*.??_*.??"
|
||||
rm -Rf ~/.zen/tmp/${IPFSNODEID}/UPLANET
|
||||
mkdir -p ~/.zen/tmp/${IPFSNODEID}/UPLANET
|
||||
echo "CLEANING TW NODE CACHE ~/.zen/tmp/${IPFSNODEID}/TW/"
|
||||
rm -Rf ~/.zen/tmp/${IPFSNODEID}/TW/
|
||||
|
||||
|
||||
## RUNING FOR ALL LOCAL PLAYERS
|
||||
for PLAYER in ${PLAYERONE[@]}; do
|
||||
[[ ! -d ~/.zen/game/players/${PLAYER:-undefined} ]] && echo "BAD ${PLAYERONE}" && continue
|
||||
[[ ! $(echo "${PLAYER}" | grep '@') ]] && continue
|
||||
|
||||
start=`date +%s`
|
||||
# CLEAN LOST ACCOUNT
|
||||
[[ ! -s ~/.zen/game/players/${PLAYER}/secret.dunikey ]] \
|
||||
&& rm -Rf ~/.zen/game/players/${PLAYER} \
|
||||
&& echo "${PLAYER} WAS BADLY PLUGGED" \
|
||||
&& echo "WARNING - ERASE ${PLAYER} - BADLY PLUGGED" \
|
||||
&& continue
|
||||
|
||||
YOUSER=$($MY_PATH/../tools/clyuseryomail.sh "${PLAYER}")
|
||||
|
||||
### UPGRADE PLAYER for myos IPFS API ### DOUBLON WITH VISA.new (TO REMOVE)
|
||||
mkdir -p ~/.zen/game/players/${PLAYER}/.ipfs # Prepare PLAYER datastructure
|
||||
echo "/ip4/127.0.0.1/tcp/5001" > ~/.zen/game/players/${PLAYER}/.ipfs/api
|
||||
|
@ -44,32 +57,30 @@ for PLAYER in ${PLAYERONE[@]}; do
|
|||
|
||||
MOATS=$(date -u +"%Y%m%d%H%M%S%4N")
|
||||
mkdir -p ~/.zen/tmp/${MOATS}
|
||||
|
||||
echo "##################################################################"
|
||||
echo ">>>>> PLAYER : ${PLAYER} >>>>>>>>>>>>> REFRESHING TW STATION"
|
||||
echo "##### ${YOUSER} ################################ ~/.zen/tmp/${MOATS}"
|
||||
echo "##################################################################"
|
||||
echo ">>>>> PLAYER : ${PLAYER} >>>>>>>>>>>>> REFRESHING TW "
|
||||
echo "################################################ $(date)"
|
||||
PSEUDO=$(cat ~/.zen/game/players/${PLAYER}/.pseudo 2>/dev/null)
|
||||
G1PUB=$(cat ~/.zen/game/players/${PLAYER}/.g1pub 2>/dev/null)
|
||||
ASTRONS=$(cat ~/.zen/game/players/${PLAYER}/.playerns 2>/dev/null)
|
||||
# Get PLAYER wallet amount
|
||||
COINS=$($MY_PATH/../tools/COINScheck.sh $G1PUB | tail -n 1)
|
||||
$MY_PATH/../tools/COINScheck.sh ${G1PUB} > ~/.zen/tmp/${MOATS}/${PLAYER}.COINScheck
|
||||
cat ~/.zen/tmp/${MOATS}/${PLAYER}.COINScheck ###DEBUG MODE
|
||||
COINS=$(cat ~/.zen/tmp/${MOATS}/${PLAYER}.COINScheck | tail -n 1)
|
||||
ZEN=$(echo "($COINS - 1) * 10" | bc | cut -d '.' -f 1)
|
||||
echo "+++ WALLET BALANCE _ $COINS (G1) _ / $ZEN ZEN /"
|
||||
|
||||
#~ ## ZENCARD ARE ACTIVATED WITH 1 G1 + 10 ZEN (= 1 €OC) ?
|
||||
echo "##################################################################"
|
||||
|
||||
echo "##################################################################"
|
||||
echo "################### REFRESH ASTRONAUTE TW ###########################"
|
||||
echo "##################################################################"
|
||||
|
||||
#~ ## ZENCARD ARE ACTIVATED WITH 1 G1 + 10 ZEN (= 10 €/OC) ?
|
||||
echo "## >>>>>>>>>>>>>>>> REFRESH ASTRONAUTE TW"
|
||||
## REFRESH ASTRONAUTE TW
|
||||
ASTRONAUTENS=$(ipfs key list -l | grep -w ${G1PUB} | cut -d ' ' -f1)
|
||||
|
||||
############### CANNOT FIND PLAYER KEY ###########
|
||||
if [[ ! ${ASTRONAUTENS} ]]; then
|
||||
|
||||
echo "${PLAYER} TW IS DISCONNECTED... RECREATING IPNS KEYS"
|
||||
|
||||
## TODO : EXTRACT & DECRYPT secret.june FROM TW
|
||||
ipfs key import ${G1PUB} -f pem-pkcs8-cleartext ~/.zen/game/players/${PLAYER}/secret.player
|
||||
ipfs key import ${PLAYER} -f pem-pkcs8-cleartext ~/.zen/game/players/${PLAYER}/secret.player
|
||||
|
||||
|
@ -90,301 +101,570 @@ for PLAYER in ${PLAYERONE[@]}; do
|
|||
mkdir -p ~/.zen/tmp/${IPFSNODEID}/TW/${PLAYER}/
|
||||
|
||||
################### GET LATEST TW
|
||||
rm -f ~/.zen/tmp/${IPFSNODEID}/TW/${PLAYER}/index.html
|
||||
echo "GETTING TW..."
|
||||
|
||||
ipfs --timeout 480s get -o ~/.zen/tmp/${IPFSNODEID}/TW/${PLAYER}/index.html /ipns/${ASTRONAUTENS}
|
||||
|
||||
####################################################################################################
|
||||
ipfs --timeout 480s get --progress=false -o ~/.zen/tmp/${IPFSNODEID}/TW/${PLAYER}/index.html /ipns/${ASTRONAUTENS}
|
||||
####################################################################################################
|
||||
## PLAYER TW IS ONLINE ?
|
||||
if [ ! -s ~/.zen/tmp/${IPFSNODEID}/TW/${PLAYER}/index.html ]; then
|
||||
|
||||
NOWCHAIN=$(cat ~/.zen/game/players/${PLAYER}/ipfs/moa/.chain)
|
||||
LASTCHAIN=$(cat ~/.zen/game/players/${PLAYER}/ipfs/moa/.chain.* | tail -n 1)
|
||||
echo "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx<br>"
|
||||
echo "<a href='$myIPFS/ipns/${ASTRONAUTENS}'>TW REFRESH FAILED</a>"
|
||||
echo ">> %%% WARNING %%%"
|
||||
try=$(cat ~/.zen/game/players/${PLAYER}/ipfs/moa/.try 2>/dev/null) || try=3
|
||||
echo "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
|
||||
echo "$myIPFS/ipns/${ASTRONAUTENS}'>TW REFRESH FAILED"
|
||||
echo ">> %%% WARNING TRY LEFT : $try %%%"
|
||||
echo "------------------------------------------------"
|
||||
echo " * <a href='${myIPFS}/ipfs/${LASTCHAIN}'>LAST</a>"
|
||||
echo " *<a href='${myIPFS}/ipfs/${NOWCHAIN}'>NOW</a>"
|
||||
echo " * <a href='${myIPFS}/ipfs/${NOWCHAIN}'>NOW</a>"
|
||||
echo "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
|
||||
|
||||
## SEND AN EMAIL ALERT TO PLAYER
|
||||
echo "<html><body><a href='$myIPFS/ipns/${ASTRONAUTENS}'>TW REFRESH FAILED</a>" > ~/.zen/tmp/result
|
||||
echo "<html><head><meta charset='UTF-8'>
|
||||
<style>
|
||||
body {
|
||||
font-family: 'Courier New', monospace;
|
||||
}
|
||||
pre {
|
||||
white-space: pre-wrap;
|
||||
}
|
||||
</style></head><body><a href='$myIPFS/ipns/${ASTRONAUTENS}'>TW LOADING TIMEOUT</a>" > ~/.zen/tmp/result
|
||||
echo "<br>------------------------------------------------" >> ~/.zen/tmp/result
|
||||
echo "" >> ~/.zen/tmp/result
|
||||
echo "<br><a href='${myIPFS}/ipfs/${LASTCHAIN}'>ANCIENT</a>" >> ~/.zen/tmp/result
|
||||
echo "<br><a href='${myIPFS}/ipfs/${NOWCHAIN}'>NEW</a>" >> ~/.zen/tmp/result
|
||||
echo "" >> ~/.zen/tmp/result
|
||||
echo "<br> %%% WARNING %%%" >> ~/.zen/tmp/result
|
||||
echo "<br>" >> ~/.zen/tmp/result
|
||||
echo "<br><a href='${myIPFS}/ipfs/${LASTCHAIN}'>[yesterday]</a>: /ipfs/${LASTCHAIN}" >> ~/.zen/tmp/result
|
||||
echo "<br><a href='${myIPFS}/ipfs/${NOWCHAIN}'>[today]</a>: /ipfs/${NOWCHAIN}" >> ~/.zen/tmp/result
|
||||
echo "<br>" >> ~/.zen/tmp/result
|
||||
echo "<br> %%% WARNING %%% $try TRY LEFT %%%" >> ~/.zen/tmp/result
|
||||
echo "<br>------------------------------------------------" >> ~/.zen/tmp/result
|
||||
echo "<br>PLEASE REPAIR BY SAVING ONLINE</body></html>" >> ~/.zen/tmp/result
|
||||
echo "OR RUNNING CLI COMMAND : ipfs name publish --key=${PLAYER} /ipfs/${NOWCHAIN}" >> ~/.zen/tmp/result
|
||||
echo "<br>ipfs name publish --key=${PLAYER} /ipfs/${NOWCHAIN}" >> ~/.zen/tmp/result
|
||||
echo "</body></html>" >> ~/.zen/tmp/result
|
||||
|
||||
try=$(cat ~/.zen/game/players/${PLAYER}/ipfs/moa/.try 2>/dev/null) || try=3
|
||||
|
||||
[[ $try == 0 ]] \
|
||||
[[ $try == 0 && "${CURRENT}" != "${PLAYER}" ]] \
|
||||
&& echo "PLAYER ${PLAYER} UNPLUG" \
|
||||
&& ${MY_PATH}/../tools/PLAYER.unplug.sh ~/.zen/game/players/${PLAYER}/ipfs/moa/index.html ${PLAYER} \
|
||||
&& ${MY_PATH}/PLAYER.unplug.sh ~/.zen/game/players/${PLAYER}/ipfs/moa/index.html ${PLAYER} "ALL" \
|
||||
&& continue
|
||||
|
||||
try=$((try-1))
|
||||
echo "$try" > ~/.zen/game/players/${PLAYER}/ipfs/moa/.try
|
||||
echo " %%% WARNING %%% ${PLAYER} STATION UNPLUG IN $try DAY(S)." >> ~/.zen/tmp/result
|
||||
$MY_PATH/../tools/mailjet.sh "${PLAYER}" ~/.zen/tmp/result "UNPLUG WARNING"
|
||||
|
||||
$MY_PATH/../tools/mailjet.sh "${PLAYER}" ~/.zen/tmp/result "TW LOADING TIMEOUT"
|
||||
|
||||
continue
|
||||
|
||||
else
|
||||
## FOUND TW
|
||||
#############################################################
|
||||
## CHECK WHO IS ACTUAL OFFICIAL GATEWAY
|
||||
tiddlywiki --load ~/.zen/tmp/${IPFSNODEID}/TW/${PLAYER}/index.html \
|
||||
--output ~/.zen/tmp/${MOATS} \
|
||||
--render '.' 'MadeInZion.json' 'text/plain' '$:/core/templates/exporters/JsonFile' 'exportFilter' 'MadeInZion' ## MadeInZion Tiddler
|
||||
|
||||
[[ ! -s ~/.zen/tmp/${MOATS}/MadeInZion.json ]] && echo "${PLAYER} MadeInZion : BAD TW (☓‿‿☓) " && continue
|
||||
|
||||
player=$(cat ~/.zen/tmp/${MOATS}/MadeInZion.json | jq -r .[].player)
|
||||
|
||||
[[ ${player} != ${PLAYER} ]] \
|
||||
&& echo "> BAD PLAYER=$player in TW" \
|
||||
&& continue \
|
||||
|| echo "${PLAYER} OFFICIAL TW - (⌐■_■) -"
|
||||
|
||||
## GET "Astroport" TIDDLER
|
||||
tiddlywiki --load ~/.zen/tmp/${IPFSNODEID}/TW/${PLAYER}/index.html \
|
||||
--output ~/.zen/tmp/${MOATS} \
|
||||
--render '.' 'Astroport.json' 'text/plain' '$:/core/templates/exporters/JsonFile' 'exportFilter' 'Astroport' ## Astroport Tiddler
|
||||
BIRTHDATE=$(cat ~/.zen/tmp/${MOATS}/Astroport.json | jq -r .[].birthdate)
|
||||
ASTROPORT=$(cat ~/.zen/tmp/${MOATS}/Astroport.json | jq -r .[].astroport) ## Raccorded G1Station IPNS address
|
||||
CURCHAIN=$(cat ~/.zen/tmp/${MOATS}/Astroport.json | jq -r .[].chain | rev | cut -f 1 -d '/' | rev) # Remove "/ipfs/" part
|
||||
[[ ${CURCHAIN} == "" || ${CURCHAIN} == "null" ]] \
|
||||
&& CURCHAIN="aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" # AVOID EMPTY
|
||||
|
||||
echo "CURCHAIN=${CURCHAIN}"
|
||||
IPNSTAIL=$(echo ${ASTROPORT} | rev | cut -f 1 -d '/' | rev) # Remove "/ipns/" part
|
||||
echo "TW ASTROPORT GATEWAY : ${ASTROPORT}"
|
||||
|
||||
######################################
|
||||
#### UPLANET GEO COORD EXTRACTION
|
||||
## GET "GPS" TIDDLER - 0.00 0.00 (if empty: null)
|
||||
tiddlywiki --load ~/.zen/tmp/${IPFSNODEID}/TW/${PLAYER}/index.html \
|
||||
--output ~/.zen/tmp/${MOATS} \
|
||||
--render '.' 'GPS.json' 'text/plain' '$:/core/templates/exporters/JsonFile' 'exportFilter' 'GPS' ## GPS Tiddler
|
||||
UMAPNS=$(cat ~/.zen/tmp/${MOATS}/GPS.json | jq -r .[].umap)
|
||||
[[ $UMAPNS == "null" ]] && UMAPNS="/ipns/k51qzi5uqu5djg1gqzujq5p60w25mi235gdg0lgkk5qztkfrpi5c22oolrriyu"
|
||||
LAT=$(cat ~/.zen/tmp/${MOATS}/GPS.json | jq -r .[].lat)
|
||||
[[ $LAT == "null" ]] && LAT="0.00"
|
||||
LON=$(cat ~/.zen/tmp/${MOATS}/GPS.json | jq -r .[].lon)
|
||||
[[ $LON == "null" ]] && LON="0.00"
|
||||
|
||||
echo "LAT=${LAT}; LON=${LON}; UMAPNS=${UMAPNS}"
|
||||
|
||||
## STORE IN PLAYER CACHE
|
||||
echo "_${LAT}_${LON}" > ~/.zen/game/players/${PLAYER}/.umap
|
||||
|
||||
########### ASTROPORT is not IPFSNODEID => EJECT TW
|
||||
## MOVED PLAYER (KEY IS KEPT ON LAST CONNECTED ASTROPORT)
|
||||
## !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
|
||||
## TODO UNPLUG PLAYER
|
||||
## !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
|
||||
if [[ ${IPNSTAIL} != ${IPFSNODEID} || ${IPNSTAIL} == "_ASTROPORT_" ]]; then
|
||||
echo "> I AM ${IPFSNODEID} : PLAYER MOVED TO ${IPNSTAIL} : EJECTION "
|
||||
echo "UNPLUG PLAYER"
|
||||
${MY_PATH}/../tools/PLAYER.unplug.sh "${HOME}/.zen/game/players/${PLAYER}/ipfs/moa/index.html" "${PLAYER}" "ONE"
|
||||
echo ">>>> ASTRONAUT ${PLAYER} TW CAPSULE EJECTION TERMINATED"
|
||||
continue
|
||||
fi
|
||||
fi
|
||||
|
||||
#############################################################
|
||||
## GWIP == myIP or TUBE !!
|
||||
## FOUND TW
|
||||
err=""
|
||||
#############################################################
|
||||
# Connect_PLAYER_To_Gchange.sh : Sync FRIENDS TW
|
||||
##############################################################
|
||||
echo "##################################################################"
|
||||
## CHECK "GPS" Tiddler
|
||||
tiddlywiki --load ~/.zen/tmp/${IPFSNODEID}/TW/${PLAYER}/index.html \
|
||||
--output ~/.zen/tmp/${MOATS} \
|
||||
--render '.' 'GPS.json' 'text/plain' '$:/core/templates/exporters/JsonFile' 'exportFilter' 'GPS' ## GPS Tiddler
|
||||
[[ ! -s ~/.zen/tmp/${MOATS}/GPS.json || $(cat ~/.zen/tmp/${MOATS}/GPS.json) == "[]" ]] \
|
||||
&& msg="${PLAYER} GPS : BAD TW (☓‿‿☓) " && err="(☓‿‿☓)"
|
||||
|
||||
[[ $(echo "$COINS > 2" | bc -l) -eq 1 ]] \
|
||||
&& echo "## Connect_PLAYER_To_Gchange.sh" \
|
||||
&& ${MY_PATH}/../tools/Connect_PLAYER_To_Gchange.sh "${PLAYER}" \
|
||||
|| echo "1 G1 + 10 ẑen needed to activate ★★★★★ system"
|
||||
#############################################################
|
||||
## CHECK MadeInZion
|
||||
tiddlywiki --load ~/.zen/tmp/${IPFSNODEID}/TW/${PLAYER}/index.html \
|
||||
--output ~/.zen/tmp/${MOATS} \
|
||||
--render '.' 'MadeInZion.json' 'text/plain' '$:/core/templates/exporters/JsonFile' 'exportFilter' 'MadeInZion' ## MadeInZion Tiddler
|
||||
|
||||
# G1PalPay - 1 G1 + 10 ZEN mini -> Check for G1 TX incoming comments #
|
||||
[[ $(echo "$COINS > 1" | bc -l) -eq 1 ]] \
|
||||
&& echo "## RUNNING G1PalPay Wallet Monitoring " \
|
||||
&& ${MY_PATH}/G1PalPay.sh ${HOME}/.zen/tmp/${IPFSNODEID}/TW/${PLAYER}/index.html "${PLAYER}" \
|
||||
|| echo "> ZenCard is not activated ($ZEN)"
|
||||
[[ ! -s ~/.zen/tmp/${MOATS}/MadeInZion.json || $(cat ~/.zen/tmp/${MOATS}/MadeInZion.json) == "[]" ]] \
|
||||
&& msg="${PLAYER} MadeInZion : BAD TW (☓‿‿☓) " && err="(☓‿‿☓)" && player="" \
|
||||
|| player=$(cat ~/.zen/tmp/${MOATS}/MadeInZion.json | jq -r .[].player)
|
||||
|
||||
### CHECK FOR pending (TODO! In case PAY4SURE have abandonned pendings)
|
||||
lang=$(cat ~/.zen/tmp/${MOATS}/MadeInZion.json 2>/dev/null | jq -r .[].dao)
|
||||
[[ ${lang} == "null" ]] && lang="fr"
|
||||
#############################################################
|
||||
## CHECK "AstroID" Tiddler
|
||||
tiddlywiki --load ~/.zen/tmp/${IPFSNODEID}/TW/${PLAYER}/index.html \
|
||||
--output ~/.zen/tmp/${MOATS} \
|
||||
--render '.' 'AstroID.json' 'text/plain' '$:/core/templates/exporters/JsonFile' 'exportFilter' 'AstroID' ## AstroID Tiddler
|
||||
[[ $(cat ~/.zen/tmp/${MOATS}/AstroID.json 2>/dev/null) == "[]" ]] && rm ~/.zen/tmp/${MOATS}/AstroID.json
|
||||
########################################## used by Astroport :: Lasertag :: TW plugin ##
|
||||
## CHECK "$:/config/NewTiddler/Tags"
|
||||
tiddlywiki --load ~/.zen/tmp/${IPFSNODEID}/TW/${PLAYER}/index.html \
|
||||
--output ~/.zen/tmp/${MOATS} \
|
||||
--render '.' 'TWsign.json' 'text/plain' '$:/core/templates/exporters/JsonFile' 'exportFilter' '$:/config/NewTiddler/Tags' ## $:/config/NewTiddler/Tags Tiddler
|
||||
signature=$(cat ~/.zen/tmp/${MOATS}/TWsign.json | jq -r .[].text)
|
||||
echo "${player} SIGNATURE = $signature"
|
||||
|
||||
#############################################################
|
||||
## CHECK "Astroport" TIDDLER
|
||||
tiddlywiki --load ~/.zen/tmp/${IPFSNODEID}/TW/${PLAYER}/index.html \
|
||||
--output ~/.zen/tmp/${MOATS} \
|
||||
--render '.' 'Astroport.json' 'text/plain' '$:/core/templates/exporters/JsonFile' 'exportFilter' 'Astroport' ## Astroport Tiddler
|
||||
[[ ! -s ~/.zen/tmp/${MOATS}/Astroport.json || $(cat ~/.zen/tmp/${MOATS}/Astroport.json) == "[]" ]] \
|
||||
&& msg="${PLAYER} Astroport : BAD TW (☓‿‿☓) " && err="(☓‿‿☓)"
|
||||
|
||||
############################################################ BAD TW SIGNATURE
|
||||
[[ ( ${player} != ${PLAYER} || ${PLAYER} != ${signature} || "${err}" == "(☓‿‿☓)" ) && ${PLAYER} != ${CURRENT} ]] \
|
||||
&& echo "> (☓‿‿☓) BAD PLAYER=$player in TW (☓‿‿☓) $msg" \
|
||||
&& ${MY_PATH}/PLAYER.unplug.sh "${HOME}/.zen/game/players/${PLAYER}/ipfs/moa/index.html" "${PLAYER}" "ALL" \
|
||||
&& continue \
|
||||
|| echo "${PLAYER} OFFICIAL TW - (⌐■_■) -"
|
||||
|
||||
BIRTHDATE=$(cat ~/.zen/tmp/${MOATS}/Astroport.json | jq -r .[].birthdate)
|
||||
ASTROPORT=$(cat ~/.zen/tmp/${MOATS}/Astroport.json | jq -r .[].astroport) ## ZenStation IPNS address
|
||||
CURCHAIN=$(cat ~/.zen/tmp/${MOATS}/Astroport.json | jq -r .[].chain | rev | cut -f 1 -d '/' | rev) # Remove "/ipfs/" part
|
||||
[[ ${CURCHAIN} == "" || ${CURCHAIN} == "null" ]] \
|
||||
&& CURCHAIN="aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" # AVOID EMPTY
|
||||
|
||||
SBIRTH=$(${MY_PATH}/../tools/MOATS2seconds.sh ${BIRTHDATE})
|
||||
SNOW=$(${MY_PATH}/../tools/MOATS2seconds.sh ${MOATS})
|
||||
DIFF_SECONDS=$(( SNOW - SBIRTH ))
|
||||
days=$((DIFF_SECONDS / 60 / 60 / 24))
|
||||
|
||||
################################################## ANOTHER ASTROPORT !!
|
||||
IPNSTAIL=$(echo ${ASTROPORT} | rev | cut -f 1 -d '/' | rev) # Remove "/ipns/" part
|
||||
########### ASTROPORT is not IPFSNODEID => EJECT TW
|
||||
if [[ ${IPNSTAIL} != ${IPFSNODEID} || ${IPNSTAIL} == "_ASTROPORT_" ]]; then
|
||||
echo "> PLAYER MOVED TO ${IPNSTAIL} : UNPLUG "
|
||||
${MY_PATH}/PLAYER.unplug.sh "${HOME}/.zen/game/players/${PLAYER}/ipfs/moa/index.html" "${PLAYER}" "ONE" "Now TW is plugged to ${ASTROPORT}"
|
||||
echo ">>>> CIAO ${PLAYER}"
|
||||
continue
|
||||
fi
|
||||
|
||||
################ VERIFICATIONS DONE ######################
|
||||
echo "ASTROPORT ZenStation : ${ASTROPORT}"
|
||||
echo "CURCHAIN=${CURCHAIN}"
|
||||
echo "================================== TW $days days old"
|
||||
|
||||
############################################## +2 DAYS & AstroID = UNPLUG !!
|
||||
## REMOVE TW OLDER THAN 2 DAYS WITH AstroID
|
||||
[[ -s ~/.zen/tmp/${MOATS}/AstroID.json && $days -gt 2 && "${CURRENT}" != "${PLAYER}" ]] \
|
||||
&& ${MY_PATH}/PLAYER.unplug.sh "${HOME}/.zen/game/players/${PLAYER}/ipfs/moa/index.html" "${PLAYER}" "ALL" "TW EJECTION. Found an AstroID in your TW." \
|
||||
&& echo "(#__#) AstroID +2 DAYS = SECURITY ERROR (#__#)" && continue
|
||||
####################################################################### RTFM DUMB FIREWALL
|
||||
############################################################################################
|
||||
|
||||
######################################
|
||||
#### UPLANET GEO COORD EXTRACTION
|
||||
## GET "GPS" TIDDLER - 0.00 0.00 (if empty: null)
|
||||
ZLAT=$(cat ~/.zen/tmp/${MOATS}/GPS.json | jq -r .[].lat)
|
||||
[[ $ZLAT == "null" || $ZLAT == "" ]] && ZLAT="0.00"
|
||||
ZLON=$(cat ~/.zen/tmp/${MOATS}/GPS.json | jq -r .[].lon)
|
||||
[[ $ZLON == "null" || $ZLON == "" ]] && ZLON="0.00"
|
||||
|
||||
LAT=$(makecoord ${ZLAT})
|
||||
LON=$(makecoord ${ZLON})
|
||||
|
||||
### GET UMAP ENV
|
||||
$(${MY_PATH}/../tools/getUMAP_ENV.sh "${LAT}" "${LON}" | tail -n 1)
|
||||
echo "UMAPG1PUB=$UMAPG1PUB UMAPIPNS=$UMAPIPNS SECTORG1PUB=$SECTORG1PUB SECTORIPNS=$SECTORIPNS REGIONG1PUB=$REGIONG1PUB REGIONIPNS=$REGIONIPNS LAT=$LAT LON=$LON SLAT=$SLAT SLON=$SLON RLAT=$RLAT RLON=$RLON"
|
||||
|
||||
UMAPNS=$(echo $UMAPIPNS | cut -d '/' -f 3)
|
||||
#############################################
|
||||
# MAKE "GPS" TIDDLER
|
||||
cat ${MY_PATH}/../templates/data/GPS.json \
|
||||
| sed -e "s~_MOATS_~${MOATS}~g" \
|
||||
-e "s~_PLAYER_~${PLAYER}~g" \
|
||||
-e "s~_LAT_~${LAT}~g" \
|
||||
-e "s~_LON_~${LON}~g" \
|
||||
-e "s~_UMAPNS_~${UMAPNS}~g" \
|
||||
-e "s~_SECTORTW_~${SECTORIPNS}/TW~g" \
|
||||
> ~/.zen/tmp/${MOATS}/GPS.json
|
||||
|
||||
## UPDATE PLAYER CACHE
|
||||
echo "_${LAT}_${LON}" > ~/.zen/game/players/${PLAYER}/.umap
|
||||
cp ~/.zen/tmp/${MOATS}/GPS.json ~/.zen/game/players/${PLAYER}/
|
||||
|
||||
################# PERSONAL VDO.NINJA PHONEBOOTH
|
||||
if [[ "${days}" == "3" ]]; then
|
||||
YOUSER=$($MY_PATH/../tools/clyuseryomail.sh "${PLAYER}")
|
||||
_USER=$(echo $YOUSER | sed "s~\.~_~g")
|
||||
# MAKE "VISIO" TIDDLER
|
||||
cat ${MY_PATH}/../templates/data/VISIO.json \
|
||||
| sed -e "s~_IPFSNINJA_~${VDONINJA}~g" \
|
||||
-e "s~_MOATS_~${MOATS}~g" \
|
||||
-e "s~_PLAYER_~${PLAYER}~g" \
|
||||
-e "s~_PHONEBOOTH_~${_USER}~g" \
|
||||
> ~/.zen/tmp/${MOATS}/VISIO.json
|
||||
|
||||
else
|
||||
echo "[]" > ~/.zen/tmp/${MOATS}/VISIO.json
|
||||
fi
|
||||
|
||||
|
||||
###############
|
||||
# VOEUX.create.sh #
|
||||
##############################################################
|
||||
## SPECIAL TAG "voeu" => Creation G1Voeu (G1Titre) makes AstroBot TW G1Processing
|
||||
##############################################################
|
||||
${MY_PATH}/VOEUX.create.sh ~/.zen/tmp/${IPFSNODEID}/TW/${PLAYER}/index.html "${PLAYER}" "${G1PUB}"
|
||||
#####################################################################
|
||||
# MAKE "CESIUM" TIDDLER
|
||||
if [[ "${days}" == "4" ]]; then
|
||||
echo "Create CESIUM Tiddler"
|
||||
cat ${MY_PATH}/../templates/data/CESIUM.json \
|
||||
| sed -e "s~_G1PUB_~${G1PUB}~g" \
|
||||
-e "s~_MOATS_~${MOATS}~g" \
|
||||
-e "s~_CESIUMIPFS_~${CESIUMIPFS}~g" \
|
||||
-e "s~_PLAYER_~${PLAYER}~g" \
|
||||
> ~/.zen/tmp/${MOATS}/CESIUM.json
|
||||
|
||||
###############
|
||||
# VOEUX.refresh.sh #
|
||||
##############################################################
|
||||
## RUN ASTROBOT G1Voeux SUBPROCESS (SPECIFIC Ŋ1 COPY)
|
||||
##############################################################
|
||||
${MY_PATH}/VOEUX.refresh.sh "${PLAYER}" "${MOATS}" ~/.zen/tmp/${IPFSNODEID}/TW/${PLAYER}/index.html
|
||||
else
|
||||
echo "[]" > ~/.zen/tmp/${MOATS}/CESIUM.json
|
||||
fi
|
||||
#####################################################################
|
||||
########## $:/moa picture ## CREATE EMAIL from email tiddler ########
|
||||
## GET $:/moa Tiddlers ####################################### START
|
||||
echo "GET $:/moa Tiddlers"
|
||||
###################################################### [tag[$:/moa]] used for "DID" declaration
|
||||
tiddlywiki --load ~/.zen/tmp/${IPFSNODEID}/TW/${PLAYER}/index.html \
|
||||
--output ~/.zen/tmp/${MOATS} \
|
||||
--render '.' 'FRIENDS.json' 'text/plain' '$:/core/templates/exporters/JsonFile' 'exportFilter' '[tag[$:/moa]]' ## $:/moa EMAIL Tiddlers
|
||||
#####################################################################
|
||||
fplayers=($(cat ~/.zen/tmp/${MOATS}/FRIENDS.json | jq -rc .[].title))
|
||||
echo "${fplayers[@]}"
|
||||
UPLAYERSTIDS=()
|
||||
for fp in ${fplayers[@]}; do
|
||||
|
||||
###################
|
||||
# REFRESH PLAYER_feed #
|
||||
##################################
|
||||
echo "# TW : GW API + LightBeam Feed + Friends"
|
||||
TUBE=$(head -n 2 ~/.zen/Astroport.ONE/A_boostrap_nodes.txt | tail -n 1 | cut -d ' ' -f 3)
|
||||
[[ ! "${fp}" =~ ^[a-zA-Z0-9.%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,4}$ ]] && echo "BAD ${fp} FORMAT" && continue
|
||||
[[ "${fp}" == "${PLAYER}" ]] && echo "IT'S ME - CONTINUE" && continue
|
||||
|
||||
FEEDNS=$(ipfs key list -l | grep -w "${PLAYER}_feed" | cut -d ' ' -f 1)
|
||||
[[ ! ${FEEDNS} ]] && echo ">>>>> ERROR ${PLAYER}_feed IPNS KEY NOT FOUND - ERROR" && continue
|
||||
FPLAYER=$(cat ~/.zen/tmp/${MOATS}/FRIENDS.json | jq .[] | jq -r 'select(.title=="'${fp}'") | .player')
|
||||
[[ $FPLAYER == 'null' || $FPLAYER == '' ]] \
|
||||
&& echo "FPLAYER null - NOGOOD${fp} -" \
|
||||
&& continue
|
||||
# AUTO CORRECT : sed -i "s~${fp}~NOGOOD${fp}~g" ~/.zen/tmp/${IPFSNODEID}/TW/${PLAYER}/index.html \
|
||||
|
||||
# WRITE lightbeam params
|
||||
echo '[{"title":"$:/plugins/astroport/lightbeams/saver/ipns/lightbeam-name","text":"'${PLAYER}_feed'","tags":""}]' > ~/.zen/tmp/${MOATS}/lightbeam-name.json
|
||||
echo '[{"title":"$:/plugins/astroport/lightbeams/saver/ipns/lightbeam-key","text":"'${FEEDNS}'","tags":""}]' > ~/.zen/tmp/${MOATS}/lightbeam-key.json
|
||||
FTW=$(cat ~/.zen/tmp/${MOATS}/FRIENDS.json | jq .[] | jq -r 'select(.title=="'${fp}'") | .tw')
|
||||
[[ ${FTW} == "/ipns/" || ${FTW} == "null" || ${FTW} == "" ]] && echo "WEIRD FTW ${FTW} - CONTINUE" && continue
|
||||
|
||||
###########################
|
||||
# Tiddlers controling GW & API
|
||||
#~ echo '[{"title":"$:/ipfs/saver/api/http/localhost/5001","tags":"$:/ipfs/core $:/ipfs/saver/api","text":"'$(myPlayerApiGw)'"}]' > ~/.zen/tmp/${MOATS}/5001.json
|
||||
#~ echo '[{"title":"$:/ipfs/saver/gateway/http/localhost","tags":"$:/ipfs/core $:/ipfs/saver/gateway","text":"'$myIPFS'"}]' > ~/.zen/tmp/${MOATS}/8080.json
|
||||
FG1PUB=$(cat ~/.zen/tmp/${MOATS}/FRIENDS.json | jq .[] | jq -r 'select(.title=="'${fp}'") | .g1pub')
|
||||
[[ $FG1PUB == 'null' || $FG1PUB == '' ]] && echo "FG1PUB null - CONTINUE" && continue
|
||||
|
||||
## COPY DATA PRODUCED BY GCHANGE STAR EXTRACTION
|
||||
FRIENDSFEEDS=$(cat ~/.zen/tmp/${IPFSNODEID}/RSS/${PLAYER}/FRIENDSFEEDS 2>/dev/null)
|
||||
echo "★★★★★ FRIENDS FEEDS : "${FRIENDSFEEDS}
|
||||
ASTRONAUTES=$(cat ~/.zen/tmp/${IPFSNODEID}/RSS/${PLAYER}/ASTRONAUTES 2>/dev/null)
|
||||
echo "★★★★★ FRIENDS TW : "${ASTRONAUTES}
|
||||
IHASH=$(cat ~/.zen/tmp/${MOATS}/FRIENDS.json | jq .[] | jq -r 'select(.title=="'${fp}'") | .text' | sha256sum | cut -d ' ' -f 1)
|
||||
|
||||
## Change TW FRIENDFEED ie PLAYER RSS IPNS (must fix TW plugin to work)
|
||||
#~ echo '[{"title":"$:/plugins/astroport/lightbeams/state/subscriptions","text":"'${FRIENDSFEEDS}'","tags":""}]' > ~/.zen/tmp/${MOATS}/friends.json
|
||||
#~ ## ADD --import "$HOME/.zen/tmp/${MOATS}/friends.json" "application/json" \ ## MANUAL TW RSS REGISTRATION
|
||||
echo ":: coucou :: $FPLAYER :: (ᵔ◡◡ᵔ) ::"
|
||||
echo "TW: $FTW"
|
||||
echo "G1: $FG1PUB"
|
||||
echo "IHASH: $IHASH"
|
||||
UPLAYERSTIDS=("${UPLAYERSTIDS[@]}" "[[${FPLAYER^^}|${FPLAYER^^}]]")
|
||||
|
||||
## WRITE TIDDLERS IN TW
|
||||
## GET ORIGINH FROM LAST KNOWN TW STATE
|
||||
mkdir -p ~/.zen/game/players/${PLAYER}/FRIENDS/${FPLAYER}
|
||||
|
||||
## CHECK ALREADY IN ${FPLAYER^^} IHASH
|
||||
rm -f ~/.zen/tmp/${MOATS}/finside.json
|
||||
tiddlywiki --load ~/.zen/tmp/${IPFSNODEID}/TW/${PLAYER}/index.html \
|
||||
--import ~/.zen/tmp/${MOATS}/lightbeam-name.json "application/json" \
|
||||
--import ~/.zen/tmp/${MOATS}/lightbeam-key.json "application/json" \
|
||||
--output ~/.zen/tmp/${IPFSNODEID}/TW/${PLAYER} --render "$:/core/save/all" "newindex.html" "text/plain"
|
||||
--output ~/.zen/tmp/${MOATS} \
|
||||
--render '.' 'finside.json' 'text/plain' '$:/core/templates/exporters/JsonFile' 'exportFilter' "${FPLAYER^^}" ## ${FPLAYER^^} autoload Tiddlers
|
||||
|
||||
## CHECK IT IS OK
|
||||
[[ -s ~/.zen/tmp/${IPFSNODEID}/TW/${PLAYER}/newindex.html ]] \
|
||||
INSIDEH=$(cat ~/.zen/tmp/${MOATS}/finside.json | jq -rc '.[].ihash')
|
||||
echo "INSIDEH: $INSIDEH"
|
||||
|
||||
if [[ -s ~/.zen/game/players/${PLAYER}/FRIENDS/${FPLAYER}/index.html ]]; then
|
||||
tiddlywiki --load ~/.zen/game/players/${PLAYER}/FRIENDS/${FPLAYER}/index.html \
|
||||
--output ~/.zen/tmp/${MOATS} \
|
||||
--render '.' "${FPLAYER}.json" 'text/plain' '$:/core/templates/exporters/JsonFile' 'exportFilter' "${FPLAYER}" ## GET ORIGIN
|
||||
|
||||
ORIGINH=$(cat ~/.zen/tmp/${MOATS}/${FPLAYER}.json | jq -r '.[].text' | sha256sum | cut -d ' ' -f 1)
|
||||
## CAN USE IPFSH=$(cat ~/.zen/tmp/${MOATS}/${FPLAYER}.json | jq -r '.[].text' | ipfs add -q)
|
||||
## TODO MICROLEDGER TIDDLER...
|
||||
# we are monitoring email tiddler image change (the G1BILLET background can be made of).
|
||||
echo "ORIGINH: $ORIGINH"
|
||||
else
|
||||
ORIGINH="$INSIDEH"
|
||||
fi
|
||||
|
||||
( ## REFRESH LOCAL PLAYER CACHE with FRIEND ACTUAL TW (&) will be used TOMORROW
|
||||
ipfs --timeout 480s cat --progress="false" ${FTW} > ~/.zen/game/players/${PLAYER}/FRIENDS/${FPLAYER}/index.html
|
||||
) &
|
||||
|
||||
## UPDATE IF IHASH CHANGED -> New drawing => Friend get informed
|
||||
if [[ -z $INSIDEH || $INSIDEH != $IHASH || $ORIGINH != $INSIDEH ]]; then
|
||||
cat ${MY_PATH}/../templates/data/_UPPERFPLAYER_.json \
|
||||
| sed -e "s~_UPPERFPLAYER_~${FPLAYER^^}~g" \
|
||||
-e "s~_FPLAYER_~${FPLAYER}~g" \
|
||||
-e "s~_MOATS_~${MOATS}~g" \
|
||||
-e "s~_IHASH_~${IHASH}~g" \
|
||||
-e "s~_FRIENDTW_~${FTW}~g" \
|
||||
-e "s~_PLAYER_~${PLAYER}~g" \
|
||||
> ~/.zen/tmp/${MOATS}/${FPLAYER^^}.json
|
||||
|
||||
echo "Insert New ${FPLAYER^^}.json"
|
||||
#~ cat ~/.zen/tmp/${MOATS}/${FPLAYER^^}.json | jq
|
||||
|
||||
tiddlywiki --load ~/.zen/tmp/${IPFSNODEID}/TW/${PLAYER}/index.html \
|
||||
--import ${HOME}/.zen/tmp/${MOATS}/${FPLAYER^^}.json 'application/json' \
|
||||
--output ~/.zen/tmp/${IPFSNODEID}/TW/${PLAYER} \
|
||||
--render "$:/core/save/all" "newindex.html" "text/plain"
|
||||
[[ -s ~/.zen/tmp/${IPFSNODEID}/TW/${PLAYER}/newindex.html ]] \
|
||||
&& cp ~/.zen/tmp/${IPFSNODEID}/TW/${PLAYER}/newindex.html ~/.zen/tmp/${IPFSNODEID}/TW/${PLAYER}/index.html \
|
||||
&& rm ~/.zen/tmp/${IPFSNODEID}/TW/${PLAYER}/newindex.html
|
||||
###########################
|
||||
&& rm ~/.zen/tmp/${IPFSNODEID}/TW/${PLAYER}/newindex.html \
|
||||
|| echo "ERROR - CANNOT IMPORT ${FPLAYER^^}.json - ERROR"
|
||||
|
||||
if [[ $ORIGINH != $INSIDEH && $ORIGINH != "" ]]; then
|
||||
echo "ORIGINH Update"
|
||||
rm -f ~/.zen/tmp/${IPFSNODEID}/TW/${PLAYER}/newindex.html
|
||||
tiddlywiki --load ~/.zen/tmp/${IPFSNODEID}/TW/${PLAYER}/index.html \
|
||||
--import ${HOME}/.zen/tmp/${MOATS}/${FPLAYER}.json 'application/json' \
|
||||
--output ~/.zen/tmp/${IPFSNODEID}/TW/${PLAYER} \
|
||||
--render "$:/core/save/all" "newindex.html" "text/plain"
|
||||
[[ -s ~/.zen/tmp/${IPFSNODEID}/TW/${PLAYER}/newindex.html ]] \
|
||||
&& cp ~/.zen/tmp/${IPFSNODEID}/TW/${PLAYER}/newindex.html ~/.zen/tmp/${IPFSNODEID}/TW/${PLAYER}/index.html \
|
||||
&& rm ~/.zen/tmp/${IPFSNODEID}/TW/${PLAYER}/newindex.html \
|
||||
|| echo "ERROR - CANNOT IMPORT ${FPLAYER}.json - ERROR"
|
||||
fi
|
||||
|
||||
fi
|
||||
|
||||
done
|
||||
## GET $:/moa Tiddlers ####################################### END
|
||||
|
||||
################## PREPARE LIST TO INSERT IN SECTORTW_NEWS TID
|
||||
echo "${UPLAYERSTIDS[@]}"
|
||||
UPLAYERSTIDS_STR=""
|
||||
for item in "${UPLAYERSTIDS[@]}"; do
|
||||
UPLAYERSTIDS_STR+="\n* $item"
|
||||
done
|
||||
# Trim leading space
|
||||
UPLAYERSTIDS_STR="${UPLAYERSTIDS_STR# }"
|
||||
######################################
|
||||
# (RE)MAKE "SECTORTW_NEWS" TIDDLER
|
||||
cat ${MY_PATH}/../templates/data/SECTORTW_NEWS.json \
|
||||
| sed -e "s~_SECTOR_~${SECTOR}~g" \
|
||||
-e "s~_MOATS_~${MOATS}~g" \
|
||||
-e "s~_UPLANET_~https://qo-op.com~g" \
|
||||
-e "s~_UPLAYERSTIDS_~${UPLAYERSTIDS_STR}~g" \
|
||||
-e "s~_SECTORTW_~${SECTORIPNS}/TW~g" \
|
||||
> ~/.zen/tmp/${MOATS}/SECTORTW_NEWS.json
|
||||
|
||||
echo "SECTORTW_NEWS $SECTOR SECTORTW=${SECTORIPNS}/TW :: ~/.zen/tmp/${MOATS}/SECTORTW_NEWS.json"
|
||||
${MY_PATH}/TW/import_tiddler.sh \
|
||||
~/.zen/tmp/${IPFSNODEID}/TW/${PLAYER}/index.html \
|
||||
~/.zen/tmp/${MOATS}/SECTORTW_NEWS.json
|
||||
|
||||
#############################################################
|
||||
# Connect_PLAYER_To_Gchange.sh : Sync FRIENDS TW - TODO : REWRITE
|
||||
######################################### BETTER USE json FILE IN /ipns/$IPFSNODEID/COINS
|
||||
#~ echo "##################################################################"
|
||||
|
||||
[[ -s ~/.zen/tmp/coucou/${G1PUB}.gchange.json ]] \
|
||||
&& echo "## Connect_PLAYER_To_Gchange.sh (★★★★★)" \
|
||||
&& ${MY_PATH}/../tools/Connect_PLAYER_To_Gchange.sh "${PLAYER}" \
|
||||
|| echo "NO Gchange account found"
|
||||
|
||||
##############################################################
|
||||
# G1PalPay - 2 G1 mini -> Check for G1 TX incoming comments #
|
||||
##############################################################
|
||||
if [[ $(echo "$COINS >= 2" | bc -l) -eq 1 ]]; then
|
||||
##############################################################
|
||||
# G1PalPay.sh #
|
||||
##############################################################
|
||||
echo "## RUNNING G1PalPay Wallet Monitoring "
|
||||
${MY_PATH}/G1PalPay.sh ~/.zen/tmp/${IPFSNODEID}/TW/${PLAYER}/index.html "${PLAYER}"
|
||||
|
||||
##############################################################
|
||||
# VOEUX.create.sh #
|
||||
##############################################################
|
||||
${MY_PATH}/VOEUX.create.sh ~/.zen/tmp/${IPFSNODEID}/TW/${PLAYER}/index.html "${PLAYER}" "${G1PUB}"
|
||||
|
||||
##############################################################
|
||||
# VOEUX.refresh.sh #
|
||||
##############################################################
|
||||
${MY_PATH}/VOEUX.refresh.sh "${PLAYER}" "${MOATS}" ~/.zen/tmp/${IPFSNODEID}/TW/${PLAYER}/index.html
|
||||
|
||||
else
|
||||
echo "> ZenCard not activated ($ZEN ZEN)"
|
||||
fi
|
||||
|
||||
##################################
|
||||
## PATCH : RESTORE PLAYER GPS.json (protect cache erased by WISH treatment)
|
||||
cp -f ~/.zen/game/players/${PLAYER}/GPS.json ~/.zen/tmp/${MOATS}/
|
||||
## WRITE TIDDLERS IN TW SECTORTW_NEWS.json
|
||||
tiddlywiki --load ~/.zen/tmp/${IPFSNODEID}/TW/${PLAYER}/index.html \
|
||||
--import ~/.zen/tmp/${MOATS}/SECTORTW_NEWS.json "application/json" \
|
||||
--import ~/.zen/tmp/${MOATS}/GPS.json "application/json" \
|
||||
--import ~/.zen/tmp/${MOATS}/VISIO.json "application/json" \
|
||||
--import ~/.zen/tmp/${MOATS}/CESIUM.json "application/json" \
|
||||
--output ~/.zen/tmp/${IPFSNODEID}/TW/${PLAYER} --render "$:/core/save/all" "newindex.html" "text/plain"
|
||||
|
||||
## CHECK IT IS OK
|
||||
[[ -s ~/.zen/tmp/${IPFSNODEID}/TW/${PLAYER}/newindex.html ]] \
|
||||
&& cp ~/.zen/tmp/${IPFSNODEID}/TW/${PLAYER}/newindex.html ~/.zen/tmp/${IPFSNODEID}/TW/${PLAYER}/index.html \
|
||||
&& rm ~/.zen/tmp/${IPFSNODEID}/TW/${PLAYER}/newindex.html \
|
||||
&& echo "TW UPlanet tiddlers updated" \
|
||||
|| echo "ERROR - CANNOT CREATE TW NEWINDEX - ERROR"
|
||||
###########################
|
||||
|
||||
########################
|
||||
## SEND TODAY ZINE
|
||||
#### UPlanetZINE/day${days}/index.${lang}.html
|
||||
TODAYZINE="${MY_PATH}/../templates/UPlanetZINE/day${days}/index.${lang}.html"
|
||||
[[ ! -s ${TODAYZINE} ]] && TODAYZINE="${MY_PATH}/../templates/UPlanetZINE/day${days}/index.html"
|
||||
[[ -s ${TODAYZINE} && ${days} -gt 0 ]] \
|
||||
&& echo "SENDING TODAYZINE DAY ${days} + mailjet TW import " \
|
||||
&& ${MY_PATH}/../tools/mailjet.sh "${PLAYER}" ${TODAYZINE} "ZINE #${days}" "${HOME}/.zen/tmp/${IPFSNODEID}/TW/${PLAYER}/index.html" \
|
||||
|| echo "NO ZINE FOR DAY ${days}"
|
||||
|
||||
|
||||
####################
|
||||
|
||||
## ANY CHANGES ?
|
||||
## TW NEWINDEX .... #####
|
||||
##############################################################
|
||||
DIFF=$(diff ~/.zen/tmp/${IPFSNODEID}/TW/${PLAYER}/index.html ~/.zen/game/players/${PLAYER}/ipfs/moa/index.html)
|
||||
if [[ $DIFF ]]; then
|
||||
echo "DIFFERENCE DETECTED !! "
|
||||
echo "Backup & Upgrade TW local copy..."
|
||||
cp ~/.zen/tmp/${IPFSNODEID}/TW/${PLAYER}/index.html ~/.zen/game/players/${PLAYER}/ipfs/moa/index.html
|
||||
echo "LOCAL BACKUP + MICROLEDGER TW"
|
||||
cp ~/.zen/tmp/${IPFSNODEID}/TW/${PLAYER}/index.html ~/.zen/game/players/${PLAYER}/ipfs/moa/index.html
|
||||
|
||||
[[ -s ~/.zen/game/players/${PLAYER}/ipfs/moa/.chain ]] \
|
||||
&& ZCHAIN=$(cat ~/.zen/game/players/${PLAYER}/ipfs/moa/.chain) \
|
||||
&& echo "# CHAIN : ${CURCHAIN} -> ${ZCHAIN}" \
|
||||
&& [[ ${CURCHAIN} != "" && ${ZCHAIN} != "" ]] \
|
||||
&& sed -i "s~${CURCHAIN}~${ZCHAIN}~g" ~/.zen/game/players/${PLAYER}/ipfs/moa/index.html
|
||||
else
|
||||
## COUNT NO CHANGE
|
||||
try=$(cat ~/.zen/game/players/${PLAYER}/ipfs/_nochange 2>/dev/null) || try=0
|
||||
((try++)) && echo $try > ~/.zen/game/players/${PLAYER}/ipfs/_nochange
|
||||
echo "NO CHANGE $try TIMES"
|
||||
fi
|
||||
##############################################################
|
||||
[[ -s ~/.zen/game/players/${PLAYER}/ipfs/moa/.chain ]] \
|
||||
&& ZCHAIN=$(cat ~/.zen/game/players/${PLAYER}/ipfs/moa/.chain) \
|
||||
&& echo "# CHAIN : ${CURCHAIN} -> ${ZCHAIN}" \
|
||||
&& [[ ${CURCHAIN} != "" && ${ZCHAIN} != "" ]] \
|
||||
&& sed -i "s~${CURCHAIN}~${ZCHAIN}~g" ~/.zen/game/players/${PLAYER}/ipfs/moa/index.html
|
||||
|
||||
##################################################
|
||||
##################################################
|
||||
################## UPDATING PLAYER MOA
|
||||
[[ $DIFF ]] && cp ~/.zen/game/players/${PLAYER}/ipfs/moa/.chain \
|
||||
~/.zen/game/players/${PLAYER}/ipfs/moa/.chain.$(cat ~/.zen/game/players/${PLAYER}/ipfs/moa/.moats)
|
||||
######## UPDATING ${PLAYER}/ipfs/moa/.chain
|
||||
cp ~/.zen/game/players/${PLAYER}/ipfs/moa/.chain \
|
||||
~/.zen/game/players/${PLAYER}/ipfs/moa/.chain.$(cat ~/.zen/game/players/${PLAYER}/ipfs/moa/.moats)
|
||||
|
||||
## CLEAN .chain CACHE
|
||||
find ~/.zen/game/players/${PLAYER}/ipfs/moa/ -mtime +30 -type f -exec rm -f '{}' \;
|
||||
|
||||
##########################################
|
||||
## TW IPFS ADD & PUBLISH
|
||||
##########################################
|
||||
TW=$(ipfs add -Hq ~/.zen/game/players/${PLAYER}/ipfs/moa/index.html | tail -n 1)
|
||||
ipfs name publish --key=${PLAYER} /ipfs/${TW}
|
||||
|
||||
[[ $DIFF ]] && echo ${TW} > ~/.zen/game/players/${PLAYER}/ipfs/moa/.chain
|
||||
ipfs --timeout 720s name publish --key=${PLAYER} /ipfs/${TW}
|
||||
|
||||
## LOCAL PLAYER CACHING
|
||||
echo ${TW} > ~/.zen/game/players/${PLAYER}/ipfs/moa/.chain
|
||||
echo ${MOATS} > ~/.zen/game/players/${PLAYER}/ipfs/moa/.moats
|
||||
|
||||
echo "================================================"
|
||||
echo " NEW TW ${PLAYER} : = ${myIPFS}/ipfs/${TW}"
|
||||
echo " $myIPFSGW/ipns/${ASTRONAUTENS}"
|
||||
echo "================================================"
|
||||
ipfs pin rm ${CURCHAIN}
|
||||
|
||||
echo "(☉_☉ ) (☉_☉ ) (☉_☉ ) RSS"
|
||||
## CREATING 30 DAYS JSON RSS STREAM
|
||||
tiddlywiki --load ~/.zen/tmp/${IPFSNODEID}/TW/${PLAYER}/index.html \
|
||||
--output ~/.zen/game/players/${PLAYER}/ipfs --render '.' "${PLAYER}.rss.json" 'text/plain' '$:/core/templates/exporters/JsonFile' 'exportFilter' '[days:created[-30]!is[system]!tag[G1Voeu]]'
|
||||
[[ ! -s ~/.zen/game/players/${PLAYER}/ipfs/${PLAYER}.rss.json ]] && echo "NO ${PLAYER} RSS - BAD ~/.zen/game/players/${PLAYER}/ipfs/${PLAYER}.rss.json -"
|
||||
|
||||
## TODO CREATING 30 DAYS XML RSS STREAM
|
||||
## https://talk.tiddlywiki.org/t/has-anyone-generated-an-rss-feed-from-tiddlywiki/966/26
|
||||
# tiddlywiki.js --load my-wiki.html --render "[[$:/plugins/sq/feeds/templates/rss]]" "feed.xml" "text/plain" "$:/core/templates/wikified-tiddler"
|
||||
### $:/plugins/sycom/atom-feed/atom.xml
|
||||
#~ tiddlywiki --load ~/.zen/tmp/${IPFSNODEID}/TW/${PLAYER}/index.html \
|
||||
#~ --output ~/.zen/game/players/${PLAYER}/ipfs --render '.' "${PLAYER}.rss.xml" 'text/plain' "$:/core/templates/wikified-tiddler" 'exportFilter' '[days:created[-30]!is[system]!tag[G1Voeu]]'
|
||||
|
||||
SBIRTH=$(${MY_PATH}/../tools/MOATS2seconds.sh ${BIRTHDATE})
|
||||
SNOW=$(${MY_PATH}/../tools/MOATS2seconds.sh ${MOATS})
|
||||
DIFF_SECONDS=$(( SNOW - SBIRTH ))
|
||||
days=$((DIFF_SECONDS / 60 / 60 / 24))
|
||||
echo "PLAYER TW was created $days ago"
|
||||
|
||||
##################################
|
||||
#### PLAYER ACCOUNT CLEANING #########
|
||||
## IF ZEN < 11
|
||||
## && EMPTY RSS + 30 DAYS BIRTHDATE
|
||||
## ==> UNPLUG
|
||||
[[ $(cat ~/.zen/game/players/${PLAYER}/ipfs/${PLAYER}.rss.json) == "[]" ]] \
|
||||
&& echo "RSS IS EMPTY -- COINS=$COINS / ZEN=$ZEN --" \
|
||||
&& [[ $(echo "$COINS < 2.1" | bc -l) -eq 1 ]] \
|
||||
&& [[ ${DIFF_SECONDS} -gt $(( 27 * 24 * 60 * 60 )) ]] \
|
||||
&& echo "<html><body><h1>WARNING.</h1> Your TW will be UNPLUGGED and stop being published..." > ~/.zen/tmp/alert \
|
||||
&& echo "<br><h3>TW : <a href=$(myIpfsGw)/ipfs/${CURCHAIN}> ${PLAYER}</a></h3>ZEN=$ZEN </body></html>" >> ~/.zen/tmp/alert \
|
||||
&& ${MY_PATH}/../tools/mailjet.sh "${PLAYER}" ~/.zen/tmp/alert "TW ALERT" \
|
||||
&& echo "<<<< PLAYER TW WARNING <<<< ${DIFF_SECONDS} > ${days} days" \
|
||||
&& [[ ${DIFF_SECONDS} -gt $(( 30 * 24 * 60 * 60 )) ]] \
|
||||
&& echo ">>>> PLAYER TW UNPLUG >>>>> ${days} days => BYE BYE ${PLAYER} ZEN=$ZEN" \
|
||||
&& ${MY_PATH}/../tools/PLAYER.unplug.sh ~/.zen/game/players/${PLAYER}/ipfs/moa/index.html ${PLAYER} \
|
||||
&& continue
|
||||
#################################### UNPLUG ACCOUNT
|
||||
|
||||
IRSS=$(ipfs add -q ~/.zen/game/players/${PLAYER}/ipfs/${PLAYER}.rss.json | tail -n 1) \
|
||||
&& ipfs name publish --key="${PLAYER}_feed" /ipfs/${IRSS}
|
||||
|
||||
######################### REPLACE TW with REDIRECT to latest IPFS or IPNS (reduce 12345 cache size)
|
||||
######################### REPLACE TW with REDIRECT to latest IPFS or IPNS (reduce 12345 cache size)
|
||||
[[ ! -z ${TW} ]] && TWLNK="/ipfs/${TW}" || TWLNK="/ipns/${ASTRONAUTENS}"
|
||||
echo "<meta http-equiv=\"refresh\" content=\"0; url='${TWLNK}'\" />${PLAYER}" \
|
||||
> ~/.zen/tmp/${IPFSNODEID}/TW/${PLAYER}/index.html
|
||||
|
||||
echo "<meta http-equiv=\"refresh\" content=\"0; url='/ipfs/${IRSS}'\" />${PLAYER}" \
|
||||
> ~/.zen/tmp/${IPFSNODEID}/TW/${PLAYER}.feed.html
|
||||
#########################################################
|
||||
##### TW JSON RSS EXPORT
|
||||
###################
|
||||
# REFRESH PLAYER_feed KEY
|
||||
echo "(☉_☉ ) (☉_☉ ) (☉_☉ ) RSS"
|
||||
|
||||
#########################################################################################
|
||||
## CREATING 30 DAYS JSON RSS STREAM
|
||||
# [days:created[-30]!is[system]!tag[G1Voeu]!externalTiddler[yes]!tag[load-external]]
|
||||
#########################################################################################
|
||||
tiddlywiki --load ~/.zen/tmp/${IPFSNODEID}/TW/${PLAYER}/index.html \
|
||||
--output ~/.zen/game/players/${PLAYER}/ipfs \
|
||||
--render '.' "${PLAYER}.rss.json" 'text/plain' '$:/core/templates/exporters/JsonFile' 'exportFilter' '[days:created[-30]!is[system]!tag[G1Voeu]!externalTiddler[yes]!tag[load-external]]'
|
||||
|
||||
if [[ ${LAT} && ${LON} ]]; then
|
||||
## SECTOR BANK COORD
|
||||
SECLAT="${LAT::-1}"
|
||||
SECLON="${LON::-1}"
|
||||
## REGION
|
||||
REGLAT=$(echo ${LAT} | cut -d '.' -f 1)
|
||||
REGLON=$(echo ${LON} | cut -d '.' -f 1)
|
||||
[[ ! -s ~/.zen/game/players/${PLAYER}/ipfs/${PLAYER}.rss.json ]] \
|
||||
&& echo "NO ${PLAYER} RSS - BAD "
|
||||
|
||||
## IPFSNODEID 12345 CACHE UPLANET/__/_*_*/_*.?_*.?/_*.??_*.??
|
||||
mkdir -p ~/.zen/tmp/${IPFSNODEID}/UPLANET/__/_${REGLAT}_${REGLON}/_${SECLAT}_${SECLON}/_${LAT}_${LON}/RSS/
|
||||
echo "~/.zen/game/players/${PLAYER}/ipfs/${PLAYER}.rss.json"
|
||||
|
||||
cp ~/.zen/game/players/${PLAYER}/ipfs/${PLAYER}.rss.json \
|
||||
~/.zen/tmp/${IPFSNODEID}/UPLANET/__/_${REGLAT}_${REGLON}/_${SECLAT}_${SECLON}/_${LAT}_${LON}/RSS/
|
||||
########################################################
|
||||
#### PLAYER ACCOUNT HAVE NEW TIDDLER or NOT #########
|
||||
if [[ $(cat ~/.zen/game/players/${PLAYER}/ipfs/${PLAYER}.rss.json) == "[]" && "${CURRENT}" != "${PLAYER}" ]]; then
|
||||
echo "ALERT -- RSS IS EMPTY -- COINS=$COINS / ZEN=$ZEN -- $days DAYS"
|
||||
## DEAD PLAYER ??
|
||||
if [[ ${days} -eq 27 ]]; then
|
||||
echo "<html><head><meta charset='UTF-8'>
|
||||
<style>
|
||||
body {
|
||||
font-family: 'Courier New', monospace;
|
||||
}
|
||||
pre {
|
||||
white-space: pre-wrap;
|
||||
}
|
||||
</style></head><body><h1>🔋WARNING</h1>" > ~/.zen/tmp/alert
|
||||
echo "<br><h3><a href=$(myIpfsGw)/ipfs/${CURCHAIN}> ${PLAYER} TW 🔌📺 </a></h3> 🌥 $ZEN ZEN 🌥 </body></html>" >> ~/.zen/tmp/alert
|
||||
|
||||
${MY_PATH}/../tools/json_dir.all.sh ~/.zen/tmp/${IPFSNODEID}/UPLANET/__/_${REGLAT}_${REGLON}/_${SECLAT}_${SECLON}/_${LAT}_${LON}/RSS/
|
||||
mkdir -p ~/.zen/tmp/${IPFSNODEID}/UPLANET/__/_${REGLAT}_${REGLON}/_${SECLAT}_${SECLON}/_${LAT}_${LON}/TW/${PLAYER}
|
||||
cp ~/.zen/tmp/${IPFSNODEID}/TW/${PLAYER}/index.html ~/.zen/tmp/${IPFSNODEID}/UPLANET/__/_${REGLAT}_${REGLON}/_${SECLAT}_${SECLON}/_${LAT}_${LON}/TW/${PLAYER}/
|
||||
echo "<meta http-equiv=\"refresh\" content=\"0; url='${UMAPNS}'\" />" > ~/.zen/tmp/${IPFSNODEID}/UPLANET/__/_${REGLAT}_${REGLON}/_${SECLAT}_${SECLON}/_${LAT}_${LON}/_index.html
|
||||
${MY_PATH}/../tools/mailjet.sh "${PLAYER}" ~/.zen/tmp/alert "TW ZEN ALERT"
|
||||
echo "<<<< PLAYER TW WARNING <<<< ${DIFF_SECONDS} > ${days} days"
|
||||
fi
|
||||
if [[ ${days} -gt 29 ]]; then
|
||||
#################################### UNPLUG ACCOUNT
|
||||
echo ">>>> PLAYER TW UNPLUG >>>>> ${days} days => BYE BYE ${PLAYER} ZEN=$ZEN"
|
||||
${MY_PATH}/PLAYER.unplug.sh ~/.zen/game/players/${PLAYER}/ipfs/moa/index.html ${PLAYER} "ALL"
|
||||
continue
|
||||
fi
|
||||
|
||||
## PAY 1 ZEN TO UMAPG1PUB
|
||||
[[ "${UMAPG1PUB}" != "" ]] \
|
||||
&& ${MY_PATH}/../tools/PAY4SURE.sh "${HOME}/.zen/game/players/${PLAYER}/secret.dunikey" "0.1" "${UMAPG1PUB}" "UPLANET:TW:${YOUSER}:/ipfs/${TW}"
|
||||
|
||||
else
|
||||
|
||||
### PLAYER ALIVE PUBLISH RSS &
|
||||
FEEDNS=$(ipfs key list -l | grep -w "${PLAYER}_feed" | cut -d ' ' -f 1)
|
||||
[[ ${FEEDNS} ]] \
|
||||
&& IRSS=$(ipfs add --pin=false -q ~/.zen/game/players/${PLAYER}/ipfs/${PLAYER}.rss.json | tail -n 1) \
|
||||
&& echo "Publishing ${PLAYER}_feed: /ipns/${FEEDNS} => /ipfs/${IRSS}" \
|
||||
&& ipfs --timeout 300s name publish --key="${PLAYER}_feed" /ipfs/${IRSS} \
|
||||
|| echo ">>>>> WARNING ${PLAYER}_feed IPNS KEY PUBLISHING CUT - WARNING"
|
||||
|
||||
fi
|
||||
|
||||
ls -al ~/.zen/tmp/${IPFSNODEID}/UPLANET/__/_${REGLAT}_${REGLON}/_${SECLAT}_${SECLON}/_${LAT}_${LON} 2>/dev/null
|
||||
echo "<meta http-equiv=\"refresh\" content=\"0; url='/ipfs/${IRSS}'\" />${PLAYER}" \
|
||||
> ~/.zen/tmp/${IPFSNODEID}/TW/${PLAYER}.feed.html
|
||||
|
||||
#########################################################
|
||||
## TODO CREATING 30 DAYS XML RSS STREAM ???
|
||||
## https://talk.tiddlywiki.org/t/has-anyone-generated-an-rss-feed-from-tiddlywiki/966/26
|
||||
# tiddlywiki.js --load my-wiki.html --render "[[$:/plugins/sq/feeds/templates/rss]]" "feed.xml" "text/plain" "$:/core/templates/wikified-tiddler"
|
||||
### $:/plugins/sycom/atom-feed/atom.xml
|
||||
#~ tiddlywiki --load ~/.zen/tmp/${IPFSNODEID}/TW/${PLAYER}/index.html \
|
||||
#~ --output ~/.zen/game/players/${PLAYER}/ipfs --render '.' "${PLAYER}.rss.xml" 'text/plain' "$:/core/templates/wikified-tiddler" 'exportFilter' '[days:created[-30]!is[system]!tag[G1Voeu]]'
|
||||
|
||||
|
||||
#################################################
|
||||
################### COPY DATA TO UP LEVEL GRIDS
|
||||
#################################################
|
||||
## SECTOR BANK COORD
|
||||
SLAT="${LAT::-1}"
|
||||
SLON="${LON::-1}"
|
||||
## REGION
|
||||
RLAT=$(echo ${LAT} | cut -d '.' -f 1)
|
||||
RLON=$(echo ${LON} | cut -d '.' -f 1)
|
||||
|
||||
echo "(⌐■_■) /UPLANET/__/_${RLAT}_${RLON}/_${SLAT}_${SLON}/_${LAT}_${LON}"
|
||||
## IPFSNODEID 12345 CACHE UPLANET/__/_*_*/_*.?_*.?/_*.??_*.??
|
||||
mkdir -p ~/.zen/tmp/${IPFSNODEID}/UPLANET/__/_${RLAT}_${RLON}/_${SLAT}_${SLON}/_${LAT}_${LON}/RSS/
|
||||
|
||||
cp ~/.zen/game/players/${PLAYER}/ipfs/${PLAYER}.rss.json \
|
||||
~/.zen/tmp/${IPFSNODEID}/UPLANET/__/_${RLAT}_${RLON}/_${SLAT}_${SLON}/_${LAT}_${LON}/RSS/
|
||||
#### CREATE ALL JSON COMPILATION
|
||||
${MY_PATH}/../tools/json_dir.all.sh \
|
||||
~/.zen/tmp/${IPFSNODEID}/UPLANET/__/_${RLAT}_${RLON}/_${SLAT}_${SLON}/_${LAT}_${LON}/RSS/
|
||||
|
||||
## IPFS PLAYER TW #
|
||||
mkdir -p ~/.zen/tmp/${IPFSNODEID}/UPLANET/__/_${RLAT}_${RLON}/_${SLAT}_${SLON}/_${LAT}_${LON}/TW/${PLAYER}
|
||||
# /ipfs/${TW} = /TW/${PLAYER}/index.html
|
||||
echo "<meta http-equiv=\"refresh\" content=\"0; url='/ipfs/${TW}'\" />${TODATE}:${PLAYER}" \
|
||||
> ~/.zen/tmp/${IPFSNODEID}/UPLANET/__/_${RLAT}_${RLON}/_${SLAT}_${SLON}/_${LAT}_${LON}/TW/${PLAYER}/index.html
|
||||
# /ipns/${ASTRONAUTENS} = /TW/${PLAYER}/_index.html
|
||||
echo "<meta http-equiv=\"refresh\" content=\"0; url='/ipns/${ASTRONAUTENS}'\" />${PLAYER}" \
|
||||
> ~/.zen/tmp/${IPFSNODEID}/UPLANET/__/_${RLAT}_${RLON}/_${SLAT}_${SLON}/_${LAT}_${LON}/TW/${PLAYER}/_index.html
|
||||
## IPNS UMAP _index.html ##
|
||||
echo "<meta http-equiv=\"refresh\" content=\"0; url='/ipns/${UMAPNS}'\" />${TODATE}:_${LAT}_${LON}" \
|
||||
> ~/.zen/tmp/${IPFSNODEID}/UPLANET/__/_${RLAT}_${RLON}/_${SLAT}_${SLON}/_${LAT}_${LON}/_index.html
|
||||
|
||||
ls -al ~/.zen/tmp/${IPFSNODEID}/UPLANET/__/_${RLAT}_${RLON}/_${SLAT}_${SLON}/_${LAT}_${LON} 2>/dev/null
|
||||
echo "(☉_☉ ) (☉_☉ ) (☉_☉ )"
|
||||
|
||||
#####################################################################
|
||||
## DAY=7 : SEND ${G1LEVEL1} G1 to PLAYER
|
||||
[[ ${days} -eq 7 && "${CURRENT}" != "${PLAYER}" && "${CURRENT}" != "" ]] \
|
||||
&& echo "7 DAY. PLAYER STEP ONE SUCCEED." \
|
||||
&& MIUSER=$(${MY_PATH}/../tools/clyuseryomail.sh "${CURRENT}") \
|
||||
&& ${MY_PATH}/../tools/PAY4SURE.sh "${HOME}/.zen/game/players/.current/secret.dunikey" "${G1LEVEL1}" "${G1PUB}" "UPLANET:WELCOME:${MIUSER}:${YOUSER}" \
|
||||
&& echo "UPLANET:WELCOME:${MIUSER}:${YOUSER}" && echo "(⌐■_■) ~~~ OFFICIAL ~~ _${LAT}_${LON} ~~~ $ASTRONAUTENS"
|
||||
|
||||
#####################################################################
|
||||
############ CURRENT #################### _ForkUPlanetZERO ?
|
||||
if [[ $(echo "$COINS > 100" | bc -l) -eq 1 ]]; then
|
||||
[[ ${CURRENT} == ${PLAYER} ]] && ${MY_PATH}/../ASTROBOT/_ForkUPlanetZERO.sh
|
||||
fi
|
||||
#################################### NEED > 100 G1 ##################
|
||||
#####################################################################
|
||||
#####################################################################
|
||||
|
||||
## MAINTAIN R/RW TW STATE
|
||||
[[ ${ASTRONS} == "" ]] \
|
||||
&& echo "${PLAYER} DISCONNECT" \
|
||||
|
@ -394,8 +674,14 @@ for PLAYER in ${PLAYERONE[@]}; do
|
|||
|
||||
## CLEANING CACHE
|
||||
rm -Rf ~/.zen/tmp/${MOATS}
|
||||
echo
|
||||
|
||||
end=`date +%s`
|
||||
dur=`expr $end - $start`
|
||||
echo "${PLAYER} refreshing took $dur seconds (${MOATS})"
|
||||
|
||||
done
|
||||
echo "============================================ PLAYER.refresh DONE."
|
||||
|
||||
|
||||
exit 0
|
||||
|
|
|
@ -6,7 +6,7 @@
|
|||
################################################################################
|
||||
MY_PATH="`dirname \"$0\"`" # relative
|
||||
MY_PATH="`( cd \"$MY_PATH\" && pwd )`" # absolutized and normalized
|
||||
. "$MY_PATH/my.sh"
|
||||
. "$MY_PATH/../tools/my.sh"
|
||||
################################################################################
|
||||
## UNPLUG A PLAYER FROM ASTROPORT STATION
|
||||
############################################
|
||||
|
@ -20,6 +20,10 @@ PLAYER="$2"
|
|||
|
||||
ONE="$3"
|
||||
|
||||
## EXPLAIN WHY !
|
||||
SHOUT="$4"
|
||||
|
||||
|
||||
MOATS=$(date -u +"%Y%m%d%H%M%S%4N")
|
||||
mkdir -p ~/.zen/tmp/${MOATS}
|
||||
|
||||
|
@ -30,49 +34,46 @@ mkdir -p ~/.zen/tmp/${MOATS}
|
|||
--render '.' 'GPS.json' 'text/plain' '$:/core/templates/exporters/JsonFile' 'exportFilter' 'GPS' ## GPS Tiddler
|
||||
TWMAPNS=$(cat ~/.zen/tmp/${MOATS}/GPS.json | jq -r .[].umap)
|
||||
LAT=$(cat ~/.zen/tmp/${MOATS}/GPS.json | jq -r .[].lat)
|
||||
[[ $LAT == "null" || $LAT == "" ]] && LAT="0.00"
|
||||
LON=$(cat ~/.zen/tmp/${MOATS}/GPS.json | jq -r .[].lon)
|
||||
[[ $LON == "null" || $LON == "" ]] && LON="0.00"
|
||||
echo "LAT=${LAT}; LON=${LON}; UMAPNS=${TWMAPNS}"
|
||||
rm ~/.zen/tmp/${MOATS}/GPS.json
|
||||
|
||||
## COULD TRANSERT TO my_swarm G1PUB (IPFSNODEID/MACHINE RELATED KEY)
|
||||
#~ SWARMG1PUB=$(cat ~/.zen/game/myswarm_secret.dunikey | grep "pub:" | cut -d ' ' -f 2)
|
||||
########## SEND COINS TO SECTORG1PUB - ẐEN VIRTUAL BANK - EVERY 800 METERS - ;)
|
||||
LAT=$(makecoord $LAT)
|
||||
LON=$(makecoord $LON)
|
||||
##############################################################
|
||||
# UMAPG1PUB=$(${MY_PATH}/keygen -t duniter "${UPLANETNAME}${LAT}" "${UPLANETNAME}${LON}")
|
||||
##############################################################
|
||||
SECLAT="${LAT::-1}"
|
||||
SECLON="${LON::-1}"
|
||||
SECTOR="_${SECLAT}_${SECLON}"
|
||||
##############################################################
|
||||
SECTORG1PUB=$(${MY_PATH}/../tools/keygen -t duniter "${UPLANETNAME}${SECTOR}" "${UPLANETNAME}${SECTOR}")
|
||||
##############################################################
|
||||
## POPULATE UMAP IPNS & G1PUB
|
||||
$($MY_PATH/../tools/getUMAP_ENV.sh ${LAT} ${LON} | tail -n 1)
|
||||
|
||||
COINS=$($MY_PATH/../tools/COINScheck.sh ${SECTORG1PUB} | tail -n 1)
|
||||
echo "SECTOR WALLET = ${COINS} G1 : ${SECTORG1PUB}"
|
||||
## GET COINS
|
||||
COINS=$($MY_PATH/../tools/COINScheck.sh ${SECTORG1PUB} | tail -n 1)
|
||||
echo "SECTOR WALLET = ${COINS} G1 : ${SECTORG1PUB}"
|
||||
|
||||
## UNPLUG => SEND 10 Zen to SECTORG1PUB
|
||||
## UNPLUG => SEND 10 ZEN to SECTORG1PUB
|
||||
## ALL => SEND ALL to $WORLDG1PUB
|
||||
|
||||
ALL="ALL"
|
||||
[[ $ONE == "ONE" ]] && ALL=1
|
||||
[[ $ALL == "ALL" ]] && SECTORG1PUB=${WORLDG1PUB} && echo "DEST = WORLDG1PUB"
|
||||
[[ $ALL == "ALL" ]] && SECTORG1PUB=${WORLDG1PUB} && echo "DEST = WORLDG1PUB: ${WORLDG1PUB}"
|
||||
|
||||
YOUSER=$(${MY_PATH}/../tools/clyuseryomail.sh ${PLAYER})
|
||||
[[ ! -z ${SECTORG1PUB} ]] \
|
||||
&& echo "> PAY4SURE ZEN:${ALL} WALLET MOVE" \
|
||||
&& ${MY_PATH}/PAY4SURE.sh "${HOME}/.zen/game/players/${PLAYER}/secret.dunikey" "${ALL}" "${SECTORG1PUB}" "UNPLUG:${ALL}"
|
||||
&& ${MY_PATH}/../tools/PAY4SURE.sh "${HOME}/.zen/game/players/${PLAYER}/secret.dunikey" "${ALL}" "${SECTORG1PUB}" "UPLANET:UNPLUG:${YOUSER}:${ALL}"
|
||||
|
||||
## REMOVING PLAYER from ASTROPORT
|
||||
ipfs key rm ${PLAYER}; ipfs key rm ${PLAYER}_feed; ipfs key rm ${G1PUB};
|
||||
G1PUB=$(cat ~/.zen/game/players/${PLAYER}/.g1pub)
|
||||
ipfs key rm "${PLAYER}" "${PLAYER}_feed" "${G1PUB}"
|
||||
for vk in $(ls -d ~/.zen/game/players/${PLAYER}/voeux/*/* 2>/dev/null | rev | cut -d / -f 1 | rev); do
|
||||
echo "removing wish ${vk}"
|
||||
ipfs key rm ${vk}
|
||||
[[ ${vk} != "" ]] && ipfs key rm ${vk}
|
||||
done
|
||||
|
||||
## SEND PLAYER LAST KNOW TW
|
||||
TW=$(ipfs add -Hq ${INDEX} | tail -n 1)
|
||||
${MY_PATH}/../tools/mailjet.sh "${PLAYER}" "<html><body><h1>Hello ${PLAYER},</h1> Your TW is unplugged from Astroport : <a href='${myIPFSGW}/ipfs/${TW}'>LAST TW STATE</a>.<br><h3>May the force be with you.</h3></body></html>" "LAST MESSAGE"
|
||||
${MY_PATH}/../tools/mailjet.sh "${PLAYER}" "<html><body><h1>Ciao ${PLAYER},</h1> Your TW is unplugged from Astroport : <a href='/ipfs/${TW}'>TW (${TW})</a>.<br>$(cat ~/.zen/game/players/${PLAYER}/secret.june)<br><h3>May the force be with you.</h3></body></html>" "BYE BYE MESSAGE $SHOUT"
|
||||
|
||||
echo "PLAYER IPNS KEYS UNPLUGED"
|
||||
echo "#######################"
|
|
@ -12,7 +12,15 @@ MY_PATH="`( cd \"$MY_PATH\" && pwd )`" # absolutized and normalized
|
|||
# UMAP > SECTOR > REGION
|
||||
## Get from 100 sectors tiddlers with more than 2 signatures
|
||||
############################################
|
||||
echo
|
||||
echo
|
||||
echo "############################################"
|
||||
echo "############################################"
|
||||
echo "############################################"
|
||||
echo "# # # # RUNNING REGION.refresh"
|
||||
echo "############################################"
|
||||
echo "############################################"
|
||||
echo "############################################"
|
||||
[[ ${IPFSNODEID} == "" ]] && echo "IPFSNODEID is empty - EXIT -" && exit 1
|
||||
|
||||
MOATS=$(date -u +"%Y%m%d%H%M%S%4N")
|
||||
|
@ -23,9 +31,15 @@ for i in $*; do
|
|||
UMAPS=("$i" ${UMAPS[@]})
|
||||
done
|
||||
|
||||
[[ ${#UMAPS[@]} == 0 ]] && UMAPS="_0.00_0.00"
|
||||
## NO $i PARAMETERS - GET ALL UMAPS
|
||||
if [[ ${#UMAPS[@]} == 0 ]]; then
|
||||
MEMAPS=($(ls -td ~/.zen/tmp/${IPFSNODEID}/UPLANET/__/_*_*/_*.?_*.?/* 2>/dev/null | rev | cut -d '/' -f 1 | rev | sort | uniq))
|
||||
SWARMMAPS=($(ls -Gd ~/.zen/tmp/swarm/*/UPLANET/__/_*_*/_*.?_*.?/* 2>/dev/null | rev | cut -d '/' -f 1 | rev | sort | uniq))
|
||||
combined=("${MEMAPS[@]}" "${SWARMMAPS[@]}")
|
||||
UMAPS=($(echo "${combined[@]}" | tr ' ' '\n' | sort -u))
|
||||
fi
|
||||
|
||||
######## INIT REGIONS ########################
|
||||
######## DETERMINE REGIONS FOR ALL UMAPS ################
|
||||
for UMAP in ${UMAPS[@]}; do
|
||||
|
||||
LAT=$(echo ${UMAP} | cut -d '_' -f 2)
|
||||
|
@ -34,10 +48,10 @@ for UMAP in ${UMAPS[@]}; do
|
|||
[[ ${LAT} == "" || ${LON} == "" ]] && echo ">> ERROR BAD ${LAT} ${LON}" && continue
|
||||
[[ ${LAT} == "null" || ${LON} == "null" ]] && echo ">> ERROR BAD ${LAT} ${LON}" && continue
|
||||
|
||||
REGLAT=$(echo ${LAT} | cut -d '.' -f 1)
|
||||
REGLON=$(echo ${LON} | cut -d '.' -f 1)
|
||||
RLAT=$(echo ${LAT} | cut -d '.' -f 1)
|
||||
RLON=$(echo ${LON} | cut -d '.' -f 1)
|
||||
|
||||
MYREGIONS=("_${REGLAT}_${REGLON}" ${MYREGIONS[@]})
|
||||
MYREGIONS=("_${RLAT}_${RLON}" ${MYREGIONS[@]})
|
||||
|
||||
done
|
||||
|
||||
|
@ -49,26 +63,27 @@ REGIONS=($(echo "${MYREGIONS[@]}" | tr ' ' '\n' | sort -u))
|
|||
echo "ACTIVATED REGIONS : ${REGIONS[@]}"
|
||||
|
||||
for REGION in ${REGIONS[@]}; do
|
||||
|
||||
echo "_____REGION ${REGION}"
|
||||
echo "-------------------------------------------------------------------"
|
||||
echo "_____REGION ${REGION} $(date)"
|
||||
mkdir -p ~/.zen/tmp/${MOATS}/${REGION}
|
||||
REGLAT=$(echo ${REGION} | cut -d '_' -f 2)
|
||||
REGLON=$(echo ${REGION} | cut -d '_' -f 3)
|
||||
RLAT=$(echo ${REGION} | cut -d '_' -f 2)
|
||||
RLON=$(echo ${REGION} | cut -d '_' -f 3)
|
||||
|
||||
################################## TODO : make sharing key protocol evolve
|
||||
## FOR NOW ONLY 1ST BOOSTRAP PUBLISH REGION KEYS
|
||||
# with bigger planetary swam will be closest "IA Station", or it could be choosen according to ZEN value...
|
||||
STRAPS=($(cat ~/.zen/Astroport.ONE/A_boostrap_nodes.txt | grep -Ev "#" | rev | cut -d '/' -f 1 | rev | grep -v '^[[:space:]]*$')) ## ${STRAPS[@]}
|
||||
ACTINGNODE=${STRAPS[0]} ## FIST NODE IN STRAPS
|
||||
[[ "${ACTINGNODE}" != "${IPFSNODEID}" ]] \
|
||||
&& echo ">> ACTINGNODE=${ACTINGNODE} is not ME - CONTINUE -" \
|
||||
&& continue
|
||||
|
||||
if [[ "${ACTINGNODE}" != "${IPFSNODEID}" ]]; then
|
||||
echo ">> ACTINGNODE=${ACTINGNODE} is not ME - CONTINUE -"
|
||||
continue
|
||||
fi
|
||||
##############################################################
|
||||
REGIONG1PUB=$(${MY_PATH}/../tools/keygen -t duniter "${UPLANETNAME}${REGION}" "${UPLANETNAME}${REGION}")
|
||||
[[ ! ${REGIONG1PUB} ]] && echo "ERROR generating REGION WALLET" && exit 1
|
||||
COINS=$($MY_PATH/../tools/COINScheck.sh ${REGIONG1PUB} | tail -n 1)
|
||||
echo "REGION : ${REGION} (${COINS} G1) WALLET : ${REGIONG1PUB}"
|
||||
|
||||
COINS=$($MY_PATH/../tools/COINScheck.sh ${REGIONG1PUB} | tail -n 1)
|
||||
echo "REGION : ${REGION} (${COINS} G1) WALLET : ${REGIONG1PUB}"
|
||||
|
||||
${MY_PATH}/../tools/keygen -t ipfs -o ~/.zen/tmp/${MOATS}/REGION.priv "${UPLANETNAME}${REGION}" "${UPLANETNAME}${REGION}"
|
||||
ipfs key rm ${REGIONG1PUB} > /dev/null 2>&1 ## AVOID ERROR ON IMPORT
|
||||
|
@ -83,73 +98,81 @@ for REGION in ${REGIONS[@]}; do
|
|||
TODATEREGIONNS=$(ipfs key import ${TODATE}${REGIONG1PUB} -f pem-pkcs8-cleartext ~/.zen/tmp/${MOATS}/REGION.priv)
|
||||
##############################################################
|
||||
## GET from IPNS
|
||||
ipfs --timeout 180s get -o ~/.zen/tmp/${MOATS}/${REGION}/ /ipns/${YESTERDATEREGIONNS}/
|
||||
# >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
|
||||
# >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
|
||||
mkdir -p ~/.zen/tmp/${MOATS}/${REGION}/RSS
|
||||
rm -f ~/.zen/tmp/${MOATS}/${REGION}/RSS/_${REGLAT}_${REGLON}.week.rss.json
|
||||
rm -f ~/.zen/tmp/${MOATS}/${REGION}/JOURNAL
|
||||
ipfs --timeout 240s get --progress=false -o ~/.zen/tmp/${MOATS}/${REGION}/ /ipns/${YESTERDATEREGIONNS}/
|
||||
# >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
|
||||
## SHOULD NEED 12 SIGNATURES
|
||||
## FULL REFRESH DEMO... ZEN CHAINING COMING LATER
|
||||
# >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
|
||||
mkdir -p ~/.zen/tmp/${MOATS}/${REGION}/RSS
|
||||
rm -f ~/.zen/tmp/${MOATS}/${REGION}/RSS/_${RLAT}_${RLON}.week.rss.json
|
||||
rm -f ~/.zen/tmp/${MOATS}/${REGION}/JOURNAL
|
||||
|
||||
## START WITH LOCAL SECTORS RSS WEEK
|
||||
RSSNODE=($(ls ~/.zen/tmp/${IPFSNODEID}/SECTORS/_${REGLAT}*_${REGLON}*.week.rss.json 2>/dev/null))
|
||||
for RSS in ${RSSNODE[@]}; do
|
||||
[[ $(cat ${RSS}) != "[]" ]] \
|
||||
&& cp ${RSS} ~/.zen/tmp/${MOATS}/${REGION}/RSS/ \
|
||||
&& ${MY_PATH}/../tools/RSS2WEEKnewsfile.sh ${RSS} >> ~/.zen/tmp/${MOATS}/${REGION}/JOURNAL
|
||||
done
|
||||
NL=${#RSSNODE[@]}
|
||||
## START WITH LOCAL SECTORS RSS WEEK
|
||||
RSSNODE=($(ls ~/.zen/tmp/${IPFSNODEID}/UPLANET/SECTORS/_${RLAT}*_${RLON}*/_${RLAT}*_${RLON}*/_${RLAT}*_${RLON}*.week.rss.json 2>/dev/null))
|
||||
for RSS in ${RSSNODE[@]}; do
|
||||
[[ $(cat ${RSS}) != "[]" ]] \
|
||||
&& cp ${RSS} ~/.zen/tmp/${MOATS}/${REGION}/RSS/ \
|
||||
&& ${MY_PATH}/../tools/RSS2WEEKnewsfile.sh ${RSS} >> ~/.zen/tmp/${MOATS}/${REGION}/JOURNAL
|
||||
done
|
||||
NL=${#RSSNODE[@]}
|
||||
|
||||
## ADD SWARM SECTORS RSS WEEK
|
||||
RSSWARM=($(ls ~/.zen/tmp/swarm/*/SECTORS/_${REGLAT}*_${REGLON}*.week.rss.json 2>/dev/null))
|
||||
for RSS in ${RSSWARM[@]}; do
|
||||
[[ $(cat ${RSS}) != "[]" ]] \
|
||||
&& cp ${RSS} ~/.zen/tmp/${MOATS}/${REGION}/RSS/ \
|
||||
&& ${MY_PATH}/../tools/RSS2WEEKnewsfile.sh ${RSS} >> ~/.zen/tmp/${MOATS}/${REGION}/JOURNAL
|
||||
done
|
||||
NS=${#RSSWARM[@]}
|
||||
echo "
|
||||
---
|
||||
" >> ~/.zen/tmp/${MOATS}/${REGION}/JOURNAL
|
||||
|
||||
## CREATE /.all.json FROM *.rss.json
|
||||
${MY_PATH}/../tools/json_dir.all.sh ~/.zen/tmp/${MOATS}/${REGION}/RSS
|
||||
## ADD SWARM SECTORS RSS WEEK
|
||||
RSSWARM=($(ls ~/.zen/tmp/swarm/*/UPLANET/SECTORS/_${RLAT}*_${RLON}*/_${RLAT}*_${RLON}*/_${RLAT}*_${RLON}*.week.rss.json 2>/dev/null))
|
||||
for RSS in ${RSSWARM[@]}; do
|
||||
[[ $(cat ${RSS}) != "[]" ]] \
|
||||
&& cp ${RSS} ~/.zen/tmp/${MOATS}/${REGION}/RSS/ \
|
||||
&& ${MY_PATH}/../tools/RSS2WEEKnewsfile.sh ${RSS} >> ~/.zen/tmp/${MOATS}/${REGION}/JOURNAL
|
||||
done
|
||||
NS=${#RSSWARM[@]}
|
||||
|
||||
## REMOVE SECTORS PARTS
|
||||
rm -f ~/.zen/tmp/${MOATS}/${REGION}/RSS/*.week.rss.json
|
||||
## CREATE /.all.json FROM *.rss.json
|
||||
${MY_PATH}/../tools/json_dir.all.sh ~/.zen/tmp/${MOATS}/${REGION}/RSS
|
||||
|
||||
## MAKE FINAL _${REGLAT}_${REGLON}.week.rss.json
|
||||
mv ~/.zen/tmp/${MOATS}/${REGION}/RSS/.all.json \
|
||||
~/.zen/tmp/${MOATS}/${REGION}/RSS/_${REGLAT}_${REGLON}.week.rss.json
|
||||
## REMOVE SECTORS PARTS
|
||||
rm -f ~/.zen/tmp/${MOATS}/${REGION}/RSS/*.week.rss.json
|
||||
|
||||
## PREPARING AiApi link
|
||||
mkdir -p ~/.zen/tmp/${IPFSNODEID}/REGIONS
|
||||
RWEEKCID=$(ipfs add -q ~/.zen/tmp/${MOATS}/${REGION}/JOURNAL)
|
||||
## MAKE FINAL _${RLAT}_${RLON}.week.rss.json
|
||||
mv ~/.zen/tmp/${MOATS}/${REGION}/RSS/.all.json \
|
||||
~/.zen/tmp/${MOATS}/${REGION}/RSS/_${RLAT}_${RLON}.week.rss.json
|
||||
|
||||
cp ~/.zen/tmp/${MOATS}/${REGION}/JOURNAL \
|
||||
~/.zen/tmp/${IPFSNODEID}/REGIONS/_${REGLAT}_${REGLON}.JOURNAL.md
|
||||
## PREPARING JOURNAL
|
||||
mkdir -p ~/.zen/tmp/${IPFSNODEID}/UPLANET/REGIONS/_${RLAT}_${RLON}
|
||||
|
||||
rm ~/.zen/tmp/${IPFSNODEID}/REGIONS/_${REGLAT}_${REGLON}.week.cid 2>/dev/null ## TODO REMOVE
|
||||
###################################
|
||||
## NODE PUBLISH REGION TODATENS LINK
|
||||
echo "<meta http-equiv=\"refresh\" content=\"0; url='/ipns/${TODATEREGIONNS}'\" />/_${RLAT}_${RLON}" \
|
||||
> ~/.zen/tmp/${IPFSNODEID}/UPLANET/REGIONS/_${RLAT}_${RLON}/_index.html
|
||||
|
||||
## DEMO : PREPARE Ask.IA link - PROD will be launched during RUNTIME.
|
||||
echo "<meta http-equiv=\"refresh\" content=\"0; url='https://api.copylaradio.com/tellme/?cid=/ipfs/${RWEEKCID}'\" />" \
|
||||
> ~/.zen/tmp/${MOATS}/${REGION}/Ask.IA._${REGLAT}_${REGLON}.redir.html
|
||||
#~ ## DEMO : PREPARE Ask.IA link - PROD will be launched during RUNTIME.
|
||||
#~ echo "<meta http-equiv=\"refresh\" content=\"0; url='https://api.copylaradio.com/tellme/?cid=/ipfs/${RWEEKCID}'\" />" \
|
||||
#~ > ~/.zen/tmp/${MOATS}/${REGION}/Ask.IA._${RLAT}_${RLON}.redir.html
|
||||
|
||||
|
||||
TOTL=$((${NL}+${NS}))
|
||||
# >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
|
||||
TOTL=$((${NL}+${NS}))
|
||||
# >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
|
||||
echo "Numbers of REGION WEEK RSS : ${NL} + ${NS} : "${TOTL}
|
||||
|
||||
echo "SHOW TROPHY" > ~/.zen/tmp/${MOATS}/${REGION}/TODO
|
||||
rm ~/.zen/tmp/${MOATS}/${REGION}/N_* 2>/dev/null
|
||||
|
||||
rm ~/.zen/tmp/${MOATS}/${REGION}/RWEEKCID 2>/dev/null ## TODO REMOVE
|
||||
echo ${TOTL} > ~/.zen/tmp/${MOATS}/${REGION}/N_${TOTL}
|
||||
|
||||
echo ${TOTL} > ~/.zen/tmp/${MOATS}/${REGION}/N
|
||||
RWEEKCID=$(ipfs add -q ~/.zen/tmp/${MOATS}/${REGION}/JOURNAL 2>/dev/null)
|
||||
if [[ ${RWEEKCID} ]]; then
|
||||
echo "<meta http-equiv=\"refresh\" content=\"0; url='/ipfs/QmYNH85cJCwSVw4c7SyHtc2jtgh7dL5RegozX7e8Re28a9/md.htm?src=/ipfs/${RWEEKCID}'\" />" \
|
||||
> ~/.zen/tmp/${MOATS}/${REGION}/Journal._${RLAT}_${RLON}.view.html
|
||||
|
||||
echo "<meta http-equiv=\"refresh\" content=\"0; url='/ipfs/${RWEEKCID}'\" />" \
|
||||
> ~/.zen/tmp/${MOATS}/${REGION}/Journal._${REGLAT}_${REGLON}.redir.html
|
||||
cp ~/.zen/tmp/${MOATS}/${REGION}/JOURNAL \
|
||||
~/.zen/tmp/${IPFSNODEID}/UPLANET/REGIONS/_${RLAT}_${RLON}/JOURNAL.md
|
||||
fi
|
||||
|
||||
IPFSPOP=$(ipfs add -rwq ~/.zen/tmp/${MOATS}/${REGION}/* | tail -n 1)
|
||||
ipfs name publish -k ${TODATE}${REGIONG1PUB} /ipfs/${IPFSPOP}
|
||||
IPFSPOP=$(ipfs add -rwq ~/.zen/tmp/${MOATS}/${REGION}/* | tail -n 1)
|
||||
ipfs --timeout 180s name publish -k ${TODATE}${REGIONG1PUB} /ipfs/${IPFSPOP}
|
||||
|
||||
|
||||
ipfs key rm ${REGIONG1PUB} ${YESTERDATE}${REGIONG1PUB} ${TODATE}${REGIONG1PUB} > /dev/null 2>&1
|
||||
ipfs key rm ${REGIONG1PUB} ${YESTERDATE}${REGIONG1PUB} > /dev/null 2>&1
|
||||
|
||||
done
|
||||
|
||||
|
|
|
@ -0,0 +1,282 @@
|
|||
#!/bin/bash
|
||||
########################################################################
|
||||
# Version: 0.1
|
||||
# License: AGPL-3.0 (https://choosealicense.com/licenses/agpl-3.0/)
|
||||
########################################################################
|
||||
# INSERT NEW TIDDLERS FROM RSS JSON INTO UPLANET TW
|
||||
# DETECTING CONFLICT WITH SAME TITLE
|
||||
# ASKING TO EXISTING SIGNATURES TO UPDATE THEIR TW OR FORK TITLE
|
||||
# CALLED BY "SECTOR.refresh.sh"
|
||||
# SEND 10 ZEN TO EACH SIGNATURE
|
||||
########################################################################
|
||||
MY_PATH="`dirname \"$0\"`" # relative
|
||||
MY_PATH="`( cd \"$MY_PATH\" && pwd )`" # absolutized and normalized
|
||||
ME="${0##*/}"
|
||||
. "$MY_PATH/../tools/my.sh"
|
||||
|
||||
RSS=$1 ## filepath to RSS
|
||||
SECTOR=$2 ## Sector identifier _0.0_0.0
|
||||
MOATS=$3 ## temp cache access
|
||||
INDEX=$4 ## SECTOR TW index file
|
||||
|
||||
echo
|
||||
|
||||
[[ ! -s ${RSS} ]] && echo "BAD RSS INPUT" && exit 1
|
||||
[[ "$(cat ${RSS})" == "[]" ]] && echo "EMPTY RSS " && exit 0
|
||||
|
||||
[[ ! -d ~/.zen/tmp/${MOATS}/${SECTOR}/ ]] && echo "- ERROR - BAD UPLANET CONTEXT - look inside code - " && exit 1
|
||||
[[ ! -s ${INDEX} ]] \
|
||||
&& sed "s~_SECTOR_~${SECTOR}~g" ${MY_PATH}/../templates/twsector.html > ${INDEX} \
|
||||
&& echo "- WARNING - REFRESHING SECTOR FROM empty TEMPLATE *****"
|
||||
|
||||
## EXTRACT PLAYER FROM RSS FILE NAME
|
||||
PLAYER=$(echo ${RSS} | rev | cut -d '/' -f 1 | rev | sed "s~.rss.json~~g")
|
||||
## GET PLAYER INFORMATION
|
||||
$($MY_PATH/../tools/search_for_this_email_in_players.sh ${PLAYER})
|
||||
echo "export ASTROPORT=${ASTROPORT} ASTROTW=${ASTROTW} ASTROG1=${ASTROG1} ASTROMAIL=${EMAIL} ASTROFEED=${FEEDNS}"
|
||||
|
||||
echo "======= ${INDEX} =======
|
||||
SECTOR ${SECTOR} TW INSERTING ${PLAYER}
|
||||
${RSS}
|
||||
=================================================================="
|
||||
cat "${RSS}" | jq 'sort_by(.created) | reverse | .[]' | jq -r '.title' > ~/.zen/tmp/${MOATS}/${SECTOR}/tiddlers.list
|
||||
##
|
||||
gloops=0
|
||||
signatures=0
|
||||
|
||||
while read title; do
|
||||
|
||||
[[ ${floop} -gt 1 ]] && echo "Other Tiddlers are similaR... BREAK LOOP" && break
|
||||
|
||||
# FILTER "UPPERCASE" + Astroport Tid, less than 4 characters title Tiddlers (ex: GPS, ...).
|
||||
[[ ${title} == "GettingStarted" || "${title^^}" == "${title}" || "${title::3}" == '$:/' || ${title::4} == ${title} || ${title} == "AstroID" || ${title} == "Voeu1.png" || ${title} == "Astroport" || ${title} == "MadeInZion" || ${title} == "G1Visa" || ${title} == "ZenCard" || ${title::5} == "Draft" ]] \
|
||||
&& echo "FILTERED TITLE ${title}" && continue
|
||||
|
||||
## CHECK FOR TIDDLER WITH SAME TITTLE IN SECTOR TW
|
||||
rm -f ~/.zen/tmp/${MOATS}/TMP.json
|
||||
tiddlywiki --load ${INDEX} --output ~/.zen/tmp/${MOATS} --render '.' 'TMP.json' 'text/plain' '$:/core/templates/exporters/JsonFile' 'exportFilter' "${title}"
|
||||
ISHERE=$(cat ~/.zen/tmp/${MOATS}/TMP.json | jq -r ".[].title")
|
||||
|
||||
[[ ! "${ISHERE}" ]] && echo "No Tiddler found in ${INDEX}"
|
||||
|
||||
TMPTAGS=$(cat ~/.zen/tmp/${MOATS}/TMP.json | jq -r .[].tags)
|
||||
TMPEMAILS=($(echo "$TMPTAGS" | grep -E -o "\b[a-zA-Z0-9.%+-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,6}\b"))
|
||||
TMPSIGN=${#TMPEMAILS[@]}
|
||||
#~ echo "INSIDE TIDDLER HAVE ${TMPSIGN} SIGNATURE(S)"
|
||||
|
||||
if [[ "${ISHERE}" != "${title}" || ${TMPSIGN} == 0 ]]; then
|
||||
|
||||
## NEW TIDDLER
|
||||
echo "Importing Title: $title"
|
||||
cat "${RSS}" | jq -rc ".[] | select(.title == \"$title\")" > ~/.zen/tmp/${MOATS}/NEW.json
|
||||
|
||||
#~ echo "DEBUG"
|
||||
#~ cat ~/.zen/tmp/${MOATS}/NEW.json | jq
|
||||
#~ echo "tiddlywiki --load ${INDEX} --import ~/.zen/tmp/${MOATS}/NEW.json 'application/json' --output ~/.zen/tmp/${MOATS}/${SECTOR} --render '$:/core/save/all' '"${SECTOR}.html"' 'text/plain'"
|
||||
|
||||
tiddlywiki --load ${INDEX} \
|
||||
--import ~/.zen/tmp/${MOATS}/NEW.json 'application/json' \
|
||||
--output ~/.zen/tmp/${MOATS}/${SECTOR} --render '$:/core/save/all' "${SECTOR}.html" 'text/plain'
|
||||
|
||||
[[ -s ~/.zen/tmp/${MOATS}/${SECTOR}/${SECTOR}.html ]] \
|
||||
&& rm ${INDEX} \
|
||||
&& mv ~/.zen/tmp/${MOATS}/${SECTOR}/${SECTOR}.html ${INDEX} \
|
||||
&& ((gloops++)) \
|
||||
&& echo "GLOOPS (${gloops}) : ${title}" \
|
||||
&& signatures=$((signatures + TMPSIGN))
|
||||
|
||||
[[ ! -s ${INDEX} ]] && echo "ERROR. TW could not ingest ~/.zen/tmp/${MOATS}/NEW.json" && exit 1
|
||||
|
||||
else
|
||||
|
||||
## SAME TIDDLER
|
||||
echo "TIDDLER : $title (${TMPSIGN} signature(s)) ... ALREADY EXISTS..."
|
||||
|
||||
## Remove [] and put inline to compare
|
||||
cat ~/.zen/tmp/${MOATS}/TMP.json | jq -rc .[] > ~/.zen/tmp/${MOATS}/INSIDE.json
|
||||
cat "${RSS}" | jq -rc ".[] | select(.title == \"$title\")" > ~/.zen/tmp/${MOATS}/NEW.json
|
||||
|
||||
if [[ $(diff ~/.zen/tmp/${MOATS}/NEW.json ~/.zen/tmp/${MOATS}/INSIDE.json) == "" ]]; then
|
||||
echo "... Tiddlers are similar ..."
|
||||
((floop++))
|
||||
continue
|
||||
fi
|
||||
floop=1
|
||||
## LOG TIDDLERS
|
||||
#~ echo
|
||||
#~ echo "=========== INSIDE.json"
|
||||
#~ cat ~/.zen/tmp/${MOATS}/INSIDE.json | jq -c
|
||||
#~ echo
|
||||
#~ echo "=========== NEW.json"
|
||||
#~ cat ~/.zen/tmp/${MOATS}/NEW.json | jq -c
|
||||
#~ echo
|
||||
## TODO EXTEND CONTROL TO text & ipfs & _canonical_url
|
||||
## NEED SIGNATURES & TIDDLER SIMILARITY TO COME UP
|
||||
|
||||
## CHECK FOR EMAIL SIGNATURES DIFFERENCE
|
||||
NTAGS=$(cat ~/.zen/tmp/${MOATS}/NEW.json | jq -r .tags)
|
||||
NEMAILS=($(echo "$NTAGS" | grep -E -o "\b[a-zA-Z0-9.%+-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,6}\b"))
|
||||
NSIGN=${#NEMAILS[@]}
|
||||
echo "New Tiddler $NSIGN signatures : ${NEMAILS[*]}"
|
||||
|
||||
ITAGS=$(cat ~/.zen/tmp/${MOATS}/INSIDE.json | jq -r .tags)
|
||||
IEMAILS=($(echo "$ITAGS" | grep -E -o "\b[a-zA-Z0-9.%+-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,6}\b"))
|
||||
ISIGN=${#IEMAILS[@]}
|
||||
echo "Inside Tiddler $ISIGN signatures : ${IEMAILS[*]}"
|
||||
|
||||
## New should have more signatures than Inside
|
||||
[[ ${NSIGN} -le ${ISIGN} ]] && echo "Most signed already in..." && continue
|
||||
## UPLANET GRID COLLISION PARAM ###
|
||||
# [[ ${NSIGN} -le 3 ]] && update TW OR continue
|
||||
# https://www.copylaradio.com/blog/blog-1/post/decentralized-information-ecosystem-51
|
||||
|
||||
if [[ "${NEMAILS[*]}" != "${IEMAILS[*]}" ]]; then
|
||||
|
||||
## SEARCH FOR DIFFERENCE IN EMAIL SIGNATURES TAGS
|
||||
COMMON=(); NUNIQUE=(); IUNIQUE=()
|
||||
|
||||
# Detect common and unique elements
|
||||
for email in "${NEMAILS[@]}"; do
|
||||
if [[ " ${IEMAILS[*]} " == *" $email "* ]]; then
|
||||
COMMON+=("$email")
|
||||
else
|
||||
NUNIQUE+=("$email")
|
||||
fi
|
||||
done
|
||||
|
||||
for email in "${IEMAILS[@]}"; do
|
||||
if [[ " ${NEMAILS[*]} " != *" $email "* ]]; then
|
||||
IUNIQUE+=("$email")
|
||||
fi
|
||||
done
|
||||
|
||||
# Print the results
|
||||
echo "Common email addresses : ${COMMON[*]}"
|
||||
echo "Email addresses unique in NEW Tiddler : ${NUNIQUE[*]}"
|
||||
echo "Email addresses unique in INSIDE Tiddler : ${IUNIQUE[*]}"
|
||||
|
||||
combined=("${IEMAILS[@]}" "${NEMAILS[@]}")
|
||||
unique_combined=($(echo "${combined[@]}" | tr ' ' '\n' | sort -u))
|
||||
|
||||
NEWTID=$(ipfs add -q ~/.zen/tmp/${MOATS}/NEW.json | tail -n 1)
|
||||
INSIDETID=$(ipfs add -q ~/.zen/tmp/${MOATS}/INSIDE.json | tail -n 1)
|
||||
|
||||
###############################
|
||||
## TODO : check STAR level and activate auto merge
|
||||
|
||||
for email in "${unique_combined[@]}"; do
|
||||
|
||||
echo "<html>
|
||||
<head>
|
||||
<style>
|
||||
body {
|
||||
font-family: 'Courier New', monospace;
|
||||
}
|
||||
pre {
|
||||
white-space: pre-wrap;
|
||||
}
|
||||
</style></head>
|
||||
<body>
|
||||
<h1>$(date)</h1>
|
||||
|
||||
<h2>$title</h2>
|
||||
Tiddler appears in <b>${unique_combined[*]}</b> TW(s)
|
||||
<br>
|
||||
<ul>
|
||||
<li><a href='$(myIpfsGw)/ipfs/${INSIDETID}'>Actual Tiddler</a></li>
|
||||
<li><a href='$(myIpfsGw)/ipfs/${NEWTID}'>NEW Tiddler</a> being overwrite by ${NUNIQUE[*]}</li>
|
||||
</ul>
|
||||
<h2><a href='$(myIpfsGw)${VDONINJA}/?room=${MOATS}'>Record VISIO for this event...</a></h2>
|
||||
</body></html>" > ~/.zen/tmp/${MOATS}/g1message
|
||||
|
||||
${MY_PATH}/../tools/mailjet.sh "$email" ~/.zen/tmp/${MOATS}/g1message "Upgrade Tiddler : ${title}"
|
||||
|
||||
done
|
||||
|
||||
## SEND ZEN G1PalPay Signal
|
||||
|
||||
#~ ##############################################################
|
||||
#~ G1AMOUNT=$(echo "$NSIGN / 10" | bc -l | xargs printf "%.2f" | sed "s~,~.~g" )
|
||||
#~ G1AMOUNT=$NSIGN ## SEND FLUID COIN
|
||||
#~ echo "***** SECTOR $SECTOR REWARD *****************"
|
||||
#~ echo "SPREAD $NSIGN G1 TO ${unique_combined[@]} SIGNATURES
|
||||
#~ to ${PLAYER} WALLET ${ASTROG1}"
|
||||
#~ echo "************************************************************"
|
||||
#~ ${MY_PATH}/../tools/PAY4SURE.sh ~/.zen/tmp/${MOATS}/sector.dunikey "${$G1AMOUNT}" "${ASTROG1}" "${unique_combined[@]}"
|
||||
#~ ################################################ GRATITUDE SENT
|
||||
|
||||
## AND OVER WRITE TIDDLER...
|
||||
|
||||
|
||||
else
|
||||
|
||||
echo "SIGNATURES ARE THE SAME : ${NEMAILS[*]}"
|
||||
|
||||
fi
|
||||
|
||||
echo "______________________"
|
||||
#~ echo "CHECKING DIFFERENCES"
|
||||
#~ diff ~/.zen/tmp/${MOATS}/NEW.json ~/.zen/tmp/${MOATS}/INSIDE.json
|
||||
|
||||
## TODO CHECK MORE DIFFERENCE
|
||||
DATENEW=$(cat ~/.zen/tmp/${MOATS}/NEW.json | jq -r .modified)
|
||||
TEXTNEW=$(cat ~/.zen/tmp/${MOATS}/NEW.json | jq -r .text)
|
||||
TAGSNEW=$(cat ~/.zen/tmp/${MOATS}/NEW.json | jq -r .tags)
|
||||
DATEINSIDE=$(cat ~/.zen/tmp/${MOATS}/INSIDE.json | jq -r .modified)
|
||||
TEXTINSIDE=$(cat ~/.zen/tmp/${MOATS}/INSIDE.json | jq -r .text)
|
||||
TAGSINSIDE=$(cat ~/.zen/tmp/${MOATS}/INSIDE.json | jq -r .tags)
|
||||
|
||||
TIDLEREMAILSNEW=($(echo "$TAGSNEW" | grep -E -o "\b[a-zA-Z0-9.%+-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,6}\b")) ## MUST BE SAME IN BOTH
|
||||
TIDLEREMAILSINSIDE=($(echo "$TAGSINSIDE" | grep -E -o "\b[a-zA-Z0-9.%+-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,6}\b")) ## MUST BE SAME IN BOTH
|
||||
# [[ "${TIDLEREMAILSNEW[*]}" == "${TIDLEREMAILSINSIDE[*]}" ]]
|
||||
|
||||
if [ ${DATENEW} -gt ${DATEINSIDE} ]; then
|
||||
|
||||
echo "Newer Tiddler version... Updating SECTOR TW"
|
||||
|
||||
tiddlywiki --load ${INDEX} \
|
||||
--import ~/.zen/tmp/${MOATS}/NEW.json "application/json" \
|
||||
--output ~/.zen/tmp/${MOATS} --render "$:/core/save/all" "${SECTOR}.html" "text/plain"
|
||||
|
||||
[[ -s ~/.zen/tmp/${MOATS}/${SECTOR}.html ]] \
|
||||
&& rm ${INDEX} \
|
||||
&& mv ~/.zen/tmp/${MOATS}/${SECTOR}.html ${INDEX} \
|
||||
|| ((gloops--))
|
||||
|
||||
signatures=$((signatures + ISIGN))
|
||||
|
||||
fi
|
||||
|
||||
fi
|
||||
|
||||
## CLEANING
|
||||
rm ~/.zen/tmp/${MOATS}/INSIDE.json 2>/dev/null
|
||||
rm ~/.zen/tmp/${MOATS}/TMP.json 2>/dev/null
|
||||
rm ~/.zen/tmp/${MOATS}/NEW.json 2>/dev/null
|
||||
|
||||
done < ~/.zen/tmp/${MOATS}/${SECTOR}/tiddlers.list
|
||||
|
||||
####################################################
|
||||
################################################ ${signatures} -gt ${gloops}
|
||||
## SECTOR SENDS GRATITUDE TO PUBLISHING PLAYER
|
||||
###################################################
|
||||
|
||||
#~ if [[ ${gloops} -gt 0 && ${signatures} -gt ${gloops} && ${ASTROG1} ]]; then
|
||||
#~ # GENERATE SECTOR PRIVATE KEY ################################
|
||||
#~ ${MY_PATH}/../tools/keygen -t duniter -o ~/.zen/tmp/${MOATS}/sector.dunikey "${UPLANETNAME}${SECTOR}" "${UPLANETNAME}${SECTOR}"
|
||||
#~ G1SECTOR=$(cat ~/.zen/tmp/${MOATS}/sector.dunikey | grep 'pub:' | cut -d ' ' -f 2)
|
||||
|
||||
#~ cp -f ~/.zen/tmp/coucou/${G1SECTOR}.COINS ~/.zen/tmp/${IPFSNODEID}/${SECTOR}.COINS
|
||||
|
||||
#~ ##############################################################
|
||||
#~ GRATITUDE=$($MY_PATH/../tools/getcoins_from_gratitude_box.sh)
|
||||
#~ G1AMOUNT=$(echo "$GRATITUDE / 10" | bc -l | xargs printf "%.2f" | sed "s~,~.~g" )
|
||||
#~ echo "***** SECTOR $SECTOR REWARD *****************"
|
||||
#~ echo "GRATITUDE ${GRATITUDE} ZEN = ${G1AMOUNT} G1
|
||||
#~ to ${PLAYER} WALLET ${ASTROG1} (${gloops} Tiddlers)"
|
||||
#~ echo "************************************************************"
|
||||
#~ ${MY_PATH}/../tools/PAY4SURE.sh ~/.zen/tmp/${MOATS}/sector.dunikey "${G1AMOUNT}" "${ASTROG1}" "THANKS ${gloops} GLOOPS"
|
||||
#~ ################################################ GRATITUDE SENT
|
||||
#~ fi
|
||||
|
||||
exit 0
|
|
@ -12,7 +12,13 @@ start=`date +%s`
|
|||
## SECTOR REFRESH
|
||||
# SHARE & UPDATE IPNS TOGETHER
|
||||
############################################
|
||||
echo
|
||||
echo
|
||||
echo "############################################"
|
||||
echo "############################################"
|
||||
echo "> RUNNING SECTOR.refresh"
|
||||
echo "############################################"
|
||||
echo "############################################"
|
||||
[[ ${IPFSNODEID} == "" ]] && echo "IPFSNODEID is empty - EXIT -" && exit 1
|
||||
|
||||
MOATS=$(date -u +"%Y%m%d%H%M%S%4N")
|
||||
|
@ -23,8 +29,13 @@ for i in $*; do
|
|||
UMAPS=("$i" ${UMAPS[@]})
|
||||
done
|
||||
|
||||
[[ ${#UMAPS[@]} == 0 ]] && UMAPS="_0.00_0.00"
|
||||
|
||||
## NO $i PARAMETERS - GET ALL UMAPS
|
||||
if [[ ${#UMAPS[@]} == 0 ]]; then
|
||||
MEMAPS=($(ls -td ~/.zen/tmp/${IPFSNODEID}/UPLANET/__/_*_*/_*.?_*.?/* 2>/dev/null | rev | cut -d '/' -f 1 | rev | sort | uniq))
|
||||
SWARMMAPS=($(ls -Gd ~/.zen/tmp/swarm/*/UPLANET/__/_*_*/_*.?_*.?/* 2>/dev/null | rev | cut -d '/' -f 1 | rev | sort | uniq))
|
||||
combined=("${MEMAPS[@]}" "${SWARMMAPS[@]}")
|
||||
UMAPS=($(echo "${combined[@]}" | tr ' ' '\n' | sort -u))
|
||||
fi
|
||||
######## INIT SECTORS ########################
|
||||
for UMAP in ${UMAPS[@]}; do
|
||||
|
||||
|
@ -34,10 +45,10 @@ for UMAP in ${UMAPS[@]}; do
|
|||
[[ ${LAT} == "" || ${LON} == "" ]] && echo ">> ERROR BAD ${LAT} ${LON}" && continue
|
||||
[[ ${LAT} == "null" || ${LON} == "null" ]] && echo ">> ERROR BAD ${LAT} ${LON}" && continue
|
||||
|
||||
SECLAT="${LAT::-1}"
|
||||
SECLON="${LON::-1}"
|
||||
SLAT="${LAT::-1}"
|
||||
SLON="${LON::-1}"
|
||||
|
||||
MYSECTORS=("_${SECLAT}_${SECLON}" ${MYSECTORS[@]})
|
||||
MYSECTORS=("_${SLAT}_${SLON}" ${MYSECTORS[@]})
|
||||
|
||||
done
|
||||
|
||||
|
@ -49,56 +60,66 @@ SECTORS=($(echo "${MYSECTORS[@]}" | tr ' ' '\n' | sort -u))
|
|||
echo "ACTIVATED SECTORS : ${SECTORS[@]}"
|
||||
|
||||
for SECTOR in ${SECTORS[@]}; do
|
||||
|
||||
echo "############################################"
|
||||
echo "_____SECTOR ${SECTOR}"
|
||||
echo "################################ $(date)"
|
||||
mkdir -p ~/.zen/tmp/${MOATS}/${SECTOR}/CHAIN/
|
||||
SLAT=$(echo ${SECTOR} | cut -d '_' -f 2)
|
||||
SLON=$(echo ${SECTOR} | cut -d '_' -f 3)
|
||||
|
||||
##############################################################
|
||||
G1PUB=$(${MY_PATH}/../tools/keygen -t duniter "${UPLANETNAME}${SECTOR}" "${UPLANETNAME}${SECTOR}")
|
||||
${MY_PATH}/../tools/keygen -t duniter -o ~/.zen/tmp/${MOATS}/${SECTOR}.dunikey "${UPLANETNAME}${SECTOR}" "${UPLANETNAME}${SECTOR}"
|
||||
G1PUB=$(cat ~/.zen/tmp/${MOATS}/${SECTOR}.dunikey | grep 'pub:' | cut -d ' ' -f 2)
|
||||
[[ ! ${G1PUB} ]] && echo "ERROR generating SECTOR WALLET" && exit 1
|
||||
|
||||
COINS=$($MY_PATH/../tools/COINScheck.sh ${G1PUB} | tail -n 1)
|
||||
echo "SECTOR : ${SECTOR} (${COINS} G1) WALLET : ${G1PUB}"
|
||||
ZEN=$(echo "($COINS - 1) * 10" | bc | cut -d '.' -f 1)
|
||||
|
||||
${MY_PATH}/../tools/keygen -t ipfs -o ~/.zen/tmp/${MOATS}/${SECTOR}.priv "${UPLANETNAME}${SECTOR}" "${UPLANETNAME}${SECTOR}"
|
||||
ipfs key rm ${G1PUB} > /dev/null 2>&1 ## AVOID ERROR ON IMPORT
|
||||
SECTORNS=$(ipfs key import ${G1PUB} -f pem-pkcs8-cleartext ~/.zen/tmp/${MOATS}/${SECTOR}.priv)
|
||||
rm ~/.zen/tmp/${MOATS}/${SECTOR}.priv
|
||||
|
||||
echo "ORIGIN : ${myIPFS}/ipns/${SECTORNS}/"
|
||||
echo "___ ORIGIN ___ ${myIPFS}/ipns/${SECTORNS}/"
|
||||
echo "SECTOR : ${SECTOR} (${COINS} G1 <=> ${ZEN} ZEN) : ${G1PUB}"
|
||||
|
||||
###################### SPATIO TEMPORAL KEYS
|
||||
## YESTERDATE ###############
|
||||
YESTERDATE=$(date -d "yesterday 13:00" '+%Y-%m-%d')
|
||||
${MY_PATH}/../tools/keygen -t ipfs -o ~/.zen/tmp/${MOATS}/${YESTERDATE}.priv "${YESTERDATE}${UPLANETNAME}${SECTOR}" "${YESTERDATE}${UPLANETNAME}${SECTOR}"
|
||||
ipfs key rm ${YESTERDATE}${G1PUB} > /dev/null 2>&1
|
||||
YESTERDATENS=$(ipfs key import ${YESTERDATE}${G1PUB} -f pem-pkcs8-cleartext ~/.zen/tmp/${MOATS}/${YESTERDATE}.priv)
|
||||
echo "YESTERDAY : ${myIPFS}/ipns/${YESTERDATENS}"
|
||||
###################### SPATIO TEMPORAL KEYS
|
||||
## YESTERDATE ###############
|
||||
${MY_PATH}/../tools/keygen -t ipfs -o ~/.zen/tmp/${MOATS}/${YESTERDATE}.priv "${YESTERDATE}${UPLANETNAME}${SECTOR}" "${YESTERDATE}${UPLANETNAME}${SECTOR}"
|
||||
ipfs key rm ${YESTERDATE}${G1PUB} > /dev/null 2>&1
|
||||
YESTERDATENS=$(ipfs key import ${YESTERDATE}${G1PUB} -f pem-pkcs8-cleartext ~/.zen/tmp/${MOATS}/${YESTERDATE}.priv)
|
||||
echo "YESTERDAY : ${myIPFS}/ipns/${YESTERDATENS}"
|
||||
|
||||
## TODATE #########################################
|
||||
TODATE=$(date -d "today 13:00" '+%Y-%m-%d')
|
||||
${MY_PATH}/../tools/keygen -t ipfs -o ~/.zen/tmp/${MOATS}/${TODATE}.priv "${TODATE}${UPLANETNAME}${SECTOR}" "${TODATE}${UPLANETNAME}${SECTOR}"
|
||||
ipfs key rm ${TODATE}${G1PUB} > /dev/null 2>&1
|
||||
TODATENS=$(ipfs key import ${TODATE}${G1PUB} -f pem-pkcs8-cleartext ~/.zen/tmp/${MOATS}/${TODATE}.priv)
|
||||
echo "TODAY : ${myIPFS}/ipns/${TODATENS}"
|
||||
## TODATE #########################################
|
||||
${MY_PATH}/../tools/keygen -t ipfs -o ~/.zen/tmp/${MOATS}/${TODATE}.priv "${TODATE}${UPLANETNAME}${SECTOR}" "${TODATE}${UPLANETNAME}${SECTOR}"
|
||||
ipfs key rm ${TODATE}${G1PUB} > /dev/null 2>&1
|
||||
TODATENS=$(ipfs key import ${TODATE}${G1PUB} -f pem-pkcs8-cleartext ~/.zen/tmp/${MOATS}/${TODATE}.priv)
|
||||
echo "TODAY : ${myIPFS}/ipns/${TODATENS}"
|
||||
|
||||
# >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
|
||||
start=`date +%s`
|
||||
start=`date +%s`
|
||||
# >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
|
||||
#~ ## IPFS GET ONLINE YESTERDATE SECTORNS
|
||||
ipfs --timeout 180s get -o ~/.zen/tmp/${MOATS}/${SECTOR}/ /ipns/${YESTERDATENS}/
|
||||
ipfs --timeout 180s get --progress=false -o ~/.zen/tmp/${MOATS}/${SECTOR}/ /ipns/${YESTERDATENS}/
|
||||
if [[ $? != 0 ]]; then
|
||||
echo "(╥☁╥ ) swarm memory empty (╥☁╥ )"
|
||||
# Try retieve memory from UPlanet ZEN Memory
|
||||
[[ ${ZEN} -gt 0 ]] \
|
||||
&& echo "INTERCOM Refreshing from ZEN MEMORY" \
|
||||
&& ${MY_PATH}/../RUNTIME/ZEN.SECTOR.memory.sh "${SECTOR}" "${MOATS}" "${G1PUB}"
|
||||
fi
|
||||
# >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
|
||||
end=`date +%s`
|
||||
echo "_____SECTOR${SECTOR} GET time was "`expr $end - $start` seconds.
|
||||
end=`date +%s`
|
||||
echo "_____SECTOR${SECTOR} GET time was "`expr $end - $start` seconds.
|
||||
# >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
|
||||
|
||||
### SHOW ${SECTOR}
|
||||
mkdir -p ~/.zen/tmp/${MOATS}/${SECTOR}/${SECTOR}
|
||||
## CONTROL CHAIN TIME
|
||||
ZCHAIN=$(cat ~/.zen/tmp/${MOATS}/${SECTOR}/CHAIN/_chain | rev | cut -d ':' -f 1 | rev 2>/dev/null)
|
||||
ZMOATS=$(cat ~/.zen/tmp/${MOATS}/${SECTOR}/CHAIN/_moats 2>/dev/null)
|
||||
[[ ${ZCHAIN} && ${ZMOATS} ]] \
|
||||
&& cp ~/.zen/tmp/${MOATS}/${SECTOR}/CHAIN/_chain ~/.zen/tmp/${MOATS}/${SECTOR}/CHAIN/_chain.${ZMOATS} \
|
||||
&& echo "UPDATING MOATS"
|
||||
&& echo "UPDATING MOATS ${MOATS}"
|
||||
|
||||
MOATS_SECONDS=$(${MY_PATH}/../tools/MOATS2seconds.sh ${MOATS})
|
||||
ZMOATS_SECONDS=$(${MY_PATH}/../tools/MOATS2seconds.sh ${ZMOATS})
|
||||
|
@ -107,16 +128,9 @@ for SECTOR in ${SECTORS[@]}; do
|
|||
minutes=$(( (DIFF_SECONDS % 3600) / 60 ))
|
||||
seconds=$((DIFF_SECONDS % 60))
|
||||
echo "SECTOR DATA is ${hours} hours ${minutes} minutes ${seconds} seconds OLD"
|
||||
if [ ${DIFF_SECONDS} -lt $(( 5 * 60 * 60 )) ]; then
|
||||
echo "GETTING YESTERDAY SECTOR.refresher"
|
||||
YESTERDAY=$(ipfs cat /ipfs/${ZCHAIN}/CHAIN/SECTOR.refresher | head -n 1)
|
||||
## GET UMAP.refresher from PREVIOUS _chain ...
|
||||
echo "TODAY : $(cat ~/.zen/tmp/${MOATS}/${SECTOR}/CHAIN/SECTOR.refresher | head -n 1)"
|
||||
echo "YESTERDAY : ${YESTERDAY}"
|
||||
continue
|
||||
fi
|
||||
|
||||
# >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
|
||||
## CONTROL ACTINGNODE SWAPPING
|
||||
## CONTROL ACTINGNODE : BOOSTRAP DISTRIBUTED (jeu du mouchoir, token ring aléatoire)
|
||||
UREFRESH="${HOME}/.zen/tmp/${MOATS}/${SECTOR}/CHAIN/SECTOR.refresher"
|
||||
ALLNODES=($(cat ${UREFRESH} | grep -v '^[[:space:]]*$' 2>/dev/null)) # ${ALLNODES[@]} without empty line
|
||||
STRAPS=($(cat ~/.zen/Astroport.ONE/A_boostrap_nodes.txt | grep -Ev "#" | rev | cut -d '/' -f 1 | rev | grep -v '^[[:space:]]*$')) ## ${STRAPS[@]}
|
||||
|
@ -133,25 +147,37 @@ for SECTOR in ${SECTORS[@]}; do
|
|||
## IN CASE OLD BOOSTRAP IS STILL IN CHARGE - CHOOSE 1ST STRAP -
|
||||
[[ ! $(echo ${STRAPS[@]} | grep ${ACTINGNODE}) ]] && ACTINGNODE=${STRAPS[0]}
|
||||
|
||||
## IF NOT UPDATED FOR TOO LONG
|
||||
[ ${DIFF_SECONDS} -gt $(( 24 * 60 * 60 )) ] \
|
||||
&& echo "More than 24H update" \
|
||||
## IF NOT UPDATED FOR TOO LONG : STRAPS[0] get key control
|
||||
[ ${DIFF_SECONDS} -gt $(( 26 * 60 * 60 )) ] \
|
||||
&& echo ">>>>>>>>>>>>>> More than 26H update - BOOSTRAP 0 ACTION -" \
|
||||
&& ACTINGNODE=${STRAPS[0]}
|
||||
|
||||
[[ "${ACTINGNODE}" != "${IPFSNODEID}" ]] \
|
||||
&& echo ">> ACTINGNODE=${ACTINGNODE} is not ME - CONTINUE -" \
|
||||
&& continue
|
||||
echo "* ACTINGNODE=${ACTINGNODE}"
|
||||
|
||||
if [[ "${ACTINGNODE}" != "${IPFSNODEID}" ]]; then
|
||||
echo ">> ACTINGNODE NOT ME - CONTINUE -"
|
||||
ipfs key rm "${TODATE}${G1PUB}" "${YESYERDATE}${G1PUB}" "${G1PUB}"
|
||||
echo "------8<-------------8<------------------8<-----------------8<-----------------8<"
|
||||
continue
|
||||
fi
|
||||
### NEXT REFRESHER SHUFFLE
|
||||
rm ${UREFRESH}
|
||||
for STRAP in ${STRAPS[@]}; do
|
||||
echo ${STRAP} >> ${UREFRESH} ## RESET SECTOR.refresher file with actual STRAPS
|
||||
echo ${STRAP} >> ${UREFRESH} ## RESET SECTOR.refresher file with actual STRAPS
|
||||
done
|
||||
# SHUFFLE UMAP.refresher
|
||||
cat ${UREFRESH} | sort | uniq | shuf > ${UREFRESH}.shuf
|
||||
mv ${UREFRESH}.shuf ${UREFRESH}
|
||||
echo "SETTING NEXT REFRESHER : $(cat ${UREFRESH} | head -n 1)"
|
||||
|
||||
############ 101 ZEN (11.1 G1) REFILL ?!
|
||||
CURRENT=$(readlink ~/.zen/game/players/.current | rev | cut -d '/' -f 1 | rev)
|
||||
[[ ${COINS} == "" || ${COINS} == "null" ]] \
|
||||
&& [[ ${ZEN} -lt 100 && ${CURRENT} != "" ]] \
|
||||
&& MIUSER=$(${MY_PATH}/../tools/clyuseryomail.sh "${CURRENT}") \
|
||||
&& ${MY_PATH}/../tools/PAY4SURE.sh "${HOME}/.zen/game/players/.current/secret.dunikey" "11.1" "${G1PUB}" "UPLANET:101ZEN:${SECTOR}:${MIUSER}" \
|
||||
&& echo "UPLANET:101:${SECTOR}:${MIUSER}" && echo " ~~~ (♥‿‿♥) ~~ ${SECTOR} ~~ (♥‿‿♥) ~~~ "
|
||||
|
||||
##############################################################
|
||||
## FEED SECTOR TW WITH UMAPS RSS
|
||||
mkdir -p ~/.zen/tmp/${MOATS}/${SECTOR}/TW
|
||||
|
@ -160,16 +186,26 @@ for SECTOR in ${SECTORS[@]}; do
|
|||
## NEW TW TEMPLATE
|
||||
[[ ! -s ${INDEX} ]] \
|
||||
&& sed "s~_SECTOR_~${SECTOR}~g" ${MY_PATH}/../templates/twsector.html > ${INDEX} \
|
||||
&& echo "REFRESHING SECTOR FROM empty TEMPLATE *****"
|
||||
&& echo "REFRESHING SECTOR FROM empty TEMPLATE *****" \
|
||||
&& [[ ${IPFSNODEID} != ${STRAPS[0]} ]] && echo "1ST BOOSTRAP JOB" && continue
|
||||
|
||||
## SET SECTOR
|
||||
sed -i "s~_SECTOR_~${SECTOR}~g" ${INDEX}
|
||||
|
||||
## REFRESH ALL TWs in that SECTOR
|
||||
rm -Rf ~/.zen/tmp/${MOATS}/${SECTOR}/TWz
|
||||
mkdir -p ~/.zen/tmp/${MOATS}/${SECTOR}/TWz
|
||||
|
||||
cp -rf ~/.zen/tmp/swarm/12D*/UPLANET/__/_*_*/_${SLAT}_${SLON}/_*_*/TW/* \
|
||||
~/.zen/tmp/${MOATS}/${SECTOR}/TWz
|
||||
cp -rf ~/.zen/tmp/${IPFSNODEID}/UPLANET/__/_*_*/_${SLAT}_${SLON}/_*_*/TW/* \
|
||||
~/.zen/tmp/${MOATS}/${SECTOR}/TWz 2>/dev/null
|
||||
|
||||
## GET ALL RSS json's AND Feed SECTOR TW with it
|
||||
RSSNODE=($(ls ~/.zen/tmp/${IPFSNODEID}/UPLANET/__/_*_*/_${SLAT}*_${SLON}*/RSS/*.rss.json 2>/dev/null))
|
||||
RSSNODE=($(ls ~/.zen/tmp/${IPFSNODEID}/UPLANET/__/_*_*/_${SLAT}_${SLON}/_*_*/RSS/*.rss.json 2>/dev/null))
|
||||
NL=${#RSSNODE[@]}
|
||||
|
||||
RSSWARM=($(ls ~/.zen/tmp/swarm/12D*/UPLANET/__/_*_*/_${SLAT}*_${SLON}*/RSS/*.rss.json 2>/dev/null))
|
||||
RSSWARM=($(ls ~/.zen/tmp/swarm/12D*/UPLANET/__/_*_*/_${SLAT}_${SLON}/_*_*/RSS/*.rss.json 2>/dev/null))
|
||||
NS=${#RSSWARM[@]}
|
||||
|
||||
combinedrss=("${RSSNODE[@]}" "${RSSWARM[@]}")
|
||||
|
@ -177,118 +213,127 @@ for SECTOR in ${SECTORS[@]}; do
|
|||
|
||||
mkdir -p ~/.zen/tmp/${MOATS}/${SECTOR}/RSS
|
||||
rm -f ~/.zen/tmp/${MOATS}/${SECTOR}/RSS/_all.json
|
||||
################################## TRANSFER SIGNED TIDDLER IN SECTOR TW
|
||||
|
||||
#################### RSS2UPlanetSECTORTW #########################
|
||||
############################ TRANSFER SIGNED TIDDLER IN SECTOR TW
|
||||
for RSS in ${RSSALL[@]}; do
|
||||
############################################################
|
||||
## Extract New Tiddlers and maintain fusion in Sector TW.
|
||||
${MY_PATH}/../tools/RSS2UPlanetTW.sh "${RSS}" "${SECTOR}" "${MOATS}" "${INDEX}"
|
||||
############################################################
|
||||
${MY_PATH}/RSS2UPlanetSECTORTW.sh "${RSS}" "${SECTOR}" "${MOATS}" "${INDEX}"
|
||||
############################################################
|
||||
## create sector RSS _all.json
|
||||
cat ${RSS} >> ~/.zen/tmp/${MOATS}/${SECTOR}/RSS/_all.json
|
||||
############################################################
|
||||
done
|
||||
TOTL=$((${NL}+${NS}))
|
||||
##############################################################
|
||||
##############################################################
|
||||
|
||||
# Update COIN & ZEN value
|
||||
echo ${COINS} > ~/.zen/tmp/${MOATS}/${SECTOR}/COINS
|
||||
echo ${ZEN} > ~/.zen/tmp/${MOATS}/${SECTOR}/ZEN
|
||||
|
||||
echo "Number of RSS : "${TOTL}
|
||||
rm ~/.zen/tmp/${MOATS}/${SECTOR}/N_RSS* ## TODO REMOVE
|
||||
echo ${TOTL} > ~/.zen/tmp/${MOATS}/${SECTOR}/N
|
||||
|
||||
###########################################################################################
|
||||
## MAKE SECTOR PLANET WITH ASTONAUTENS LINKS
|
||||
###########################################################################################
|
||||
###########################################################################################
|
||||
## PREPARE Ŋ1 WORLD MAP ##################################################################
|
||||
echo "var examples = {};
|
||||
examples['locations'] = function() {
|
||||
var locations = {
|
||||
" > ~/.zen/tmp/world.js
|
||||
floop=1
|
||||
## PREPARE Ŋ1 WORLD MAP ##################################################################
|
||||
echo "var examples = {};
|
||||
examples['locations'] = function() {
|
||||
var locations = {
|
||||
" > ~/.zen/tmp/world.js
|
||||
floop=1
|
||||
|
||||
SWARMTW=($(ls ~/.zen/tmp/swarm/*/UPLANET/__/_*_*/_${SLAT}*_${SLON}*/TW/*/index.html 2>/dev/null))
|
||||
NODETW=($(ls ~/.zen/tmp/${IPFSNODEID}/UPLANET/__/_*_*/_${SLAT}*_${SLON}*/TW/*/index.html 2>/dev/null))
|
||||
TWFILES=("${SWARMTW[@]}" "${NODETW[@]}")
|
||||
SWARMTW=($(ls ~/.zen/tmp/swarm/*/UPLANET/__/_*_*/_${SLAT}_${SLON}/_*_*/TW/*/index.html 2>/dev/null))
|
||||
NODETW=($(ls ~/.zen/tmp/${IPFSNODEID}/UPLANET/__/_*_*/_${SLAT}_${SLON}/_*_*/TW/*/index.html 2>/dev/null))
|
||||
TWFILES=("${SWARMTW[@]}" "${NODETW[@]}")
|
||||
|
||||
for TWRED in ${TWFILES[@]}; do
|
||||
ZMAIL=$(echo ${TWRED} | rev | cut -d '/' -f 2 | rev)
|
||||
TWADD=$(cat ${TWRED} | grep -o "/ipns/[^\"]*" | sed "s/'$//")
|
||||
[[ -z ${TWADD} ]] && TWADD=$(cat ${TWRED} | grep -o "/ipfs/[^\"]*" | sed "s/'$//")
|
||||
for TWRED in ${TWFILES[@]}; do
|
||||
ZMAIL=$(echo ${TWRED} | rev | cut -d '/' -f 2 | rev)
|
||||
TWADD=$(cat ${TWRED} | grep -o "/ipns/[^\"]*" | sed "s/'$//")
|
||||
[[ -z ${TWADD} ]] && TWADD=$(cat ${TWRED} | grep -o "/ipfs/[^\"]*" | sed "s/'$//")
|
||||
|
||||
## ADD ASTRONAUTNS ON SECTOR WORLD MAP
|
||||
echo "${floop}: {
|
||||
alpha: Math.random() * 2 * Math.PI,
|
||||
delta: Math.random() * 2 * Math.PI,
|
||||
name: '"${ZMAIL}"',
|
||||
link: '"${TWADD}"'
|
||||
}
|
||||
," >> ~/.zen/tmp/world.js
|
||||
## ADD ASTRONAUTNS ON SECTOR WORLD MAP
|
||||
echo "${floop}: {
|
||||
alpha: Math.random() * 2 * Math.PI,
|
||||
delta: Math.random() * 2 * Math.PI,
|
||||
name: '"${ZMAIL}"',
|
||||
link: '"${TWADD}"'
|
||||
}
|
||||
," >> ~/.zen/tmp/world.js
|
||||
|
||||
((floop++))
|
||||
done
|
||||
((floop++))
|
||||
done
|
||||
|
||||
# REMOVE la dernière virgule
|
||||
sed -i '$ d' ~/.zen/tmp/world.js
|
||||
##################################
|
||||
## FINISH LOCATIONS
|
||||
echo "
|
||||
};
|
||||
\$('#sphere').earth3d({
|
||||
locationsElement: \$('#locations'),
|
||||
dragElement: \$('#locations'),
|
||||
locations: locations
|
||||
});
|
||||
};
|
||||
" >> ~/.zen/tmp/world.js
|
||||
# REMOVE la dernière virgule
|
||||
sed -i '$ d' ~/.zen/tmp/world.js
|
||||
##################################
|
||||
## FINISH LOCATIONS
|
||||
echo "
|
||||
};
|
||||
\$('#sphere').earth3d({
|
||||
locationsElement: \$('#locations'),
|
||||
dragElement: \$('#locations'),
|
||||
locations: locations
|
||||
});
|
||||
};
|
||||
" >> ~/.zen/tmp/world.js
|
||||
|
||||
IAMAP=$(ipfs add -qw ~/.zen/tmp/world.js | tail -n 1)
|
||||
echo "JSON WISH WORLD READY /ipfs/${IAMAP}/world.js"
|
||||
###########################################################################################
|
||||
### APPLY ON APP MODEL TODATE REGIONNS LINKING
|
||||
REGLAT=$(echo ${LAT} | cut -d '.' -f 1)
|
||||
REGLON=$(echo ${LON} | cut -d '.' -f 1)
|
||||
REGION="_${REGLAT}_${REGLON}"
|
||||
TODATEREGIONNS=$(${MY_PATH}/../tools/keygen -t ipfs "${TODATE}${UPLANETNAME}${REGION}" "${TODATE}${UPLANETNAME}${REGION}")
|
||||
IAMAP=$(ipfs add -qw ~/.zen/tmp/world.js | tail -n 1)
|
||||
echo "JSON WISH WORLD READY /ipfs/${IAMAP}/world.js"
|
||||
|
||||
PHONEBOOTH="${G1PUB::30}"
|
||||
cat ${MY_PATH}/../templates/UPlanetSector/index.html \
|
||||
| sed -e "s~_ZONE_~SECTOR ${SECTOR}~g" \
|
||||
-e "s~_UPZONE_~REGION ${REGION}~g" \
|
||||
-e "s~QmYdWBx32dP14XcbXF7hhtDq7Uu6jFmDaRnuL5t7ARPYkW/index_fichiers/world.js~${IAMAP}/world.js~g" \
|
||||
-e "s~_ZONENS_~${TODATENS}~g" \
|
||||
-e "s~_UPZONENS_~${TODATEREGIONNS}~g" \
|
||||
-e "s~_SECTORG1PUB_~${G1PUB}~g" \
|
||||
-e "s~_PHONEBOOTH_~${PHONEBOOTH}~g" \
|
||||
-e "s~_LAT_~${REGLAT}~g" \
|
||||
-e "s~_LON_~${REGLON}~g" \
|
||||
-e "s~_EARTHCID_~${EARTHCID}~g" \
|
||||
-e "s~_DATE_~$(date +%A-%d_%m_%Y)~g" \
|
||||
-e "s~_UPLANETLINK_~${EARTHCID}/map_render.html\?southWestLat=${REGLAT}\&southWestLon=${REGLON}\°=0.1~g" \
|
||||
-e "s~http://127.0.0.1:8080~~g" \
|
||||
> ~/.zen/tmp/${MOATS}/${SECTOR}/_index.html
|
||||
###########################################################################################
|
||||
## ADD SECTOR ZENPUB.png & INFO.png
|
||||
convert -font 'Liberation-Sans' \
|
||||
-pointsize 80 -fill purple -draw 'text 50,120 "'"${ZEN} Zen"'"' \
|
||||
-pointsize 30 -fill purple -draw 'text 40, 180 "'"${SECTOR}:${YESTERDATE}"'"' \
|
||||
$MY_PATH/../images/G1WorldMap.png "${HOME}/.zen/tmp/${MOATS}/${SECTOR}.png"
|
||||
# CREATE G1PUB AMZQR
|
||||
amzqr ${G1PUB} -l H -p "$MY_PATH/../images/zenticket.png" -c -n ZENPUB.png -d ~/.zen/tmp/${MOATS}/${SECTOR}/
|
||||
convert ~/.zen/tmp/${MOATS}/${SECTOR}/ZENPUB.png -resize 250 ~/.zen/tmp/${MOATS}/ZENPUB.png
|
||||
# ADD IT
|
||||
composite -compose Over -gravity NorthEast -geometry +0+0 ~/.zen/tmp/${MOATS}/ZENPUB.png ~/.zen/tmp/${MOATS}/${SECTOR}.png ~/.zen/tmp/${MOATS}/${SECTOR}/INFO.png
|
||||
|
||||
## TODO get from ~/.zen/tmp/${IPFSNODEID}/REGIONS/_${REGLAT}_${REGLON}.week.cid produced by REGION.refresh
|
||||
# -e "s~_RWEEKCID_~/ipfs/QmY4rLRgSXjhhsW3WoKUJYpLe2A1dJCFXb7stNLcAp95w9~g" \
|
||||
## zday marking
|
||||
rm ~/.zen/tmp/${MOATS}/${SECTOR}/z* 2>/dev/null
|
||||
echo "<meta http-equiv=\"refresh\" content=\"0; url='/ipfs/${ZCHAIN}'\" />${TODATE} ${SECTOR}" > ~/.zen/tmp/${MOATS}/${SECTOR}/z$(date +%A-%d_%m_%Y).html
|
||||
|
||||
##################################
|
||||
cp -f ~/.zen/tmp/${MOATS}/${SECTOR}/_index.html ~/.zen/tmp/${MOATS}/${SECTOR}/index.html
|
||||
###########################################################################################
|
||||
### APPLY ON APP MODEL TODATE REGIONNS LINKING
|
||||
RLAT=$(echo ${SLAT} | cut -d '.' -f 1)
|
||||
RLON=$(echo ${SLON} | cut -d '.' -f 1)
|
||||
REGION="_${RLAT}_${RLON}"
|
||||
TODATEREGIONNS=$(${MY_PATH}/../tools/keygen -t ipfs "${TODATE}${UPLANETNAME}${REGION}" "${TODATE}${UPLANETNAME}${REGION}")
|
||||
REGIONG1PUB=$(${MY_PATH}/../tools/keygen -t duniter "${TODATE}${UPLANETNAME}${REGION}" "${TODATE}${UPLANETNAME}${REGION}")
|
||||
|
||||
###########################################################################################
|
||||
## ADD SECTOR ZENPUB.png & INFO.png
|
||||
convert -font 'Liberation-Sans' \
|
||||
-pointsize 80 -fill purple -draw 'text 50,120 "'"${ZEN} Zen"'"' \
|
||||
-pointsize 30 -fill purple -draw 'text 40, 180 "'"${SECTOR}"'"' \
|
||||
$MY_PATH/../images/G1WorldMap.png "${HOME}/.zen/tmp/${MOATS}/${SECTOR}.png"
|
||||
# CREATE G1PUB AMZQR
|
||||
amzqr ${G1PUB} -l H -p "$MY_PATH/../images/zenticket.png" -c -n ZENPUB.png -d ~/.zen/tmp/${MOATS}/${SECTOR}/
|
||||
convert ~/.zen/tmp/${MOATS}/${SECTOR}/ZENPUB.png -resize 250 ~/.zen/tmp/${MOATS}/ZENPUB.png
|
||||
# ADD IT
|
||||
composite -compose Over -gravity NorthEast -geometry +0+0 ~/.zen/tmp/${MOATS}/ZENPUB.png ~/.zen/tmp/${MOATS}/${SECTOR}.png ~/.zen/tmp/${MOATS}/${SECTOR}/INFO.png
|
||||
|
||||
## zday marking
|
||||
rm ~/.zen/tmp/${MOATS}/${SECTOR}/z* 2>/dev/null
|
||||
ZCHAIN=$(cat ~/.zen/tmp/${MOATS}/${SECTOR}/CHAIN/_chain | rev | cut -d ':' -f 1 | rev 2>/dev/null)
|
||||
echo "<meta http-equiv=\"refresh\" content=\"0; url='/ipfs/${ZCHAIN}' />${TODATE} ${SECTOR}" > ~/.zen/tmp/${MOATS}/${SECTOR}/z$(date +%A-%d_%m_%Y).html
|
||||
PHONEBOOTH="${G1PUB::30}"
|
||||
cat ${MY_PATH}/../templates/UPlanetSector/index.html \
|
||||
| sed -e "s~_ZONE_~SECTOR ${SECTOR}~g" \
|
||||
-e "s~_UPZONE_~REGION ${REGION}~g" \
|
||||
-e "s~QmYdWBx32dP14XcbXF7hhtDq7Uu6jFmDaRnuL5t7ARPYkW/index_fichiers/world.js~${IAMAP}/world.js~g" \
|
||||
-e "s~_ZONENS_~${TODATENS}~g" \
|
||||
-e "s~_ZCHAIN_~${ZCHAIN}~g" \
|
||||
-e "s~_UPZONENS_~${TODATEREGIONNS}~g" \
|
||||
-e "s~_SECTORG1PUB_~${G1PUB}~g" \
|
||||
-e "s~_IPFSNINJA_~${VDONINJA}~g" \
|
||||
-e "s~_CESIUMIPFS_~${CESIUMIPFS}~g" \
|
||||
-e "s~_HACKGIPFS_~${HACKGIPFS}~g" \
|
||||
-e "s~_PHONEBOOTH_~${PHONEBOOTH}~g" \
|
||||
-e "s~_LAT_~${SLAT}~g" \
|
||||
-e "s~_LON_~${SLON}~g" \
|
||||
-e "s~_EARTHCID_~${EARTHCID}~g" \
|
||||
-e "s~_ZCHAIN_~${ZCHAIN}~g" \
|
||||
-e "s~_DATE_~$(date +%A-%d_%m_%Y)~g" \
|
||||
-e "s~_UPLANETLINK_~${EARTHCID}/map_render.html\?southWestLat=${RLAT}\&southWestLon=${RLON}\°=1~g" \
|
||||
-e "s~http://127.0.0.1:8080~~g" \
|
||||
> ~/.zen/tmp/${MOATS}/${SECTOR}/_index.html
|
||||
|
||||
##################################
|
||||
cp -f ~/.zen/tmp/${MOATS}/${SECTOR}/_index.html ~/.zen/tmp/${MOATS}/${SECTOR}/index.html
|
||||
rm ~/.zen/tmp/${MOATS}/${SECTOR}/index.html ## MAKE SECTOR VISIBLE ##
|
||||
###################################################### CHAINING BACKUP
|
||||
IPFSPOP=$(ipfs add -rwq ~/.zen/tmp/${MOATS}/${SECTOR}/* | tail -n 1)
|
||||
|
||||
|
@ -298,28 +343,46 @@ echo "<meta http-equiv=\"refresh\" content=\"0; url='/ipfs/${ZCHAIN}' />${TODATE
|
|||
&& echo "${MOATS}" > ~/.zen/tmp/${MOATS}/${SECTOR}/CHAIN/_moats \
|
||||
&& IPFSPOP=$(ipfs add -rwq ~/.zen/tmp/${MOATS}/${SECTOR}/* | tail -n 1) && echo "ROOT was ${ZCHAIN}"
|
||||
######################################################
|
||||
|
||||
echo "% START PUBLISHING ${SECTOR} ${myIPFS}/ipns/${TODATENS}"
|
||||
start=`date +%s`
|
||||
ipfs name publish -k ${TODATE}${G1PUB} /ipfs/${IPFSPOP}
|
||||
ipfs key rm ${TODATE}${G1PUB} ${YESYERDATE}${G1PUB} ${G1PUB} > /dev/null 2>&1
|
||||
end=`date +%s`
|
||||
echo "_____SECTOR${SECTOR} PUBLISH time was "`expr $end - $start` seconds.
|
||||
## ZEN CHAINING
|
||||
# Send 1 ZEN to UPlanet REGIONG1PUB Wallet containing REGION TW HASH
|
||||
INTERCOM="UPLANET:${SECTOR}:${TODATE}:/ipfs/${IPFSPOP}"
|
||||
echo "> INTERCOM ${INTERCOM} (${ZEN} ZEN)"
|
||||
if [[ ${ZEN} -gt 11 ]]; then
|
||||
echo "---ZZZ-- SECTOR 2 REGION ZEN CHAINING ---ZZZ------ZZZ----"
|
||||
${MY_PATH}/../tools/PAY4SURE.sh ~/.zen/tmp/${MOATS}/${SECTOR}.dunikey "0.1" "${REGIONG1PUB}" "${INTERCOM}"
|
||||
fi
|
||||
##############################################################
|
||||
## PUBLISHING ${SECTOR}
|
||||
###############################
|
||||
echo "% PUBLISHING ${SECTOR} ${myIPFS}/ipns/${TODATENS}"
|
||||
start=`date +%s`
|
||||
ipfs --timeout 240s name publish -k ${TODATE}${G1PUB} /ipfs/${IPFSPOP}
|
||||
ipfs key rm ${YESTERDATE}${G1PUB} ${G1PUB} > /dev/null 2>&1
|
||||
|
||||
######################################################
|
||||
rm ~/.zen/tmp/${MOATS}/${SECTOR}.dunikey
|
||||
[[ ${ZCHAIN} != "" ]] && ipfs pin rm ${ZCHAIN}
|
||||
|
||||
###################################################
|
||||
## EXTRACT SECTOR LAST WEEK TIDDLERS TO IPFSNODEID CACHE
|
||||
echo "(☉_☉ ) ${REGION}.week.rss.json (☉_☉ )"
|
||||
|
||||
mkdir -p ~/.zen/tmp/${IPFSNODEID}/SECTORS/
|
||||
rm -f ~/.zen/tmp/${IPFSNODEID}/SECTORS/${SECTOR}.week.rss.json
|
||||
rm -Rf ~/.zen/tmp/${IPFSNODEID}/SECTORS/ ## TODO REMOVE
|
||||
mkdir -p ~/.zen/tmp/${IPFSNODEID}/UPLANET/SECTORS/_${RLAT}_${RLON}/_${SLAT}_${SLON}
|
||||
## CREATING 7 DAYS JSON RSS STREAM
|
||||
tiddlywiki --load ${INDEX} \
|
||||
--output ~/.zen/tmp/${IPFSNODEID}/SECTORS --render '.' "${SECTOR}.week.rss.json" 'text/plain' '$:/core/templates/exporters/JsonFile' 'exportFilter' '[days:created[-7]!is[system]!tag[G1Voeu]]'
|
||||
--output ~/.zen/tmp/${IPFSNODEID}/UPLANET/SECTORS/_${RLAT}_${RLON}/_${SLAT}_${SLON} \
|
||||
--render '.' "${SECTOR}.week.rss.json" 'text/plain' '$:/core/templates/exporters/JsonFile' 'exportFilter' '[days:created[-7]!is[system]!tag[G1Voeu]]'
|
||||
|
||||
###################################
|
||||
## NODE CACHE SECTOR TODATENS
|
||||
echo "<meta http-equiv=\"refresh\" content=\"0; url='/ipns/${TODATENS}'\" />_${SLAT}_${SLON}" \
|
||||
> ~/.zen/tmp/${IPFSNODEID}/UPLANET/SECTORS/_${RLAT}_${RLON}/_${SLAT}_${SLON}/_index.html
|
||||
|
||||
## TODO FILTER INFORMATION WITH MULTIPLE SIGNATURES (DONE in REGION.refresh.sh)
|
||||
## TODO EXPORT AS RSS ## https://talk.tiddlywiki.org/t/has-anyone-generated-an-rss-feed-from-tiddlywiki/966/28
|
||||
end=`date +%s`
|
||||
echo "_____SECTOR${SECTOR} TREATMENT time was "`expr $end - $start` seconds.
|
||||
|
||||
done
|
||||
|
||||
|
|
|
@ -0,0 +1,7 @@
|
|||
[
|
||||
{
|
||||
"title": "/TEST/ForemostPoets-Moonraker.mp3",
|
||||
"text": "<audio controls><source src='/ipfs/Qmc799UU3zqFojnR13qSiJYKx8mKPXJ3CXMgKyLGvVndUD' type='audio/mpeg'>Your browser does not support the audio element.</audio>",
|
||||
"tags": "mp3"
|
||||
}
|
||||
]
|
|
@ -0,0 +1,33 @@
|
|||
#!/bin/bash
|
||||
|
||||
# Generate a unique timestamp
|
||||
MOATS=$(date -u +"%Y%m%d%H%M%S%4N")
|
||||
|
||||
# Check if TiddlyWiki file exists
|
||||
TW="$1"
|
||||
[[ ! -s $TW ]] && echo "No TiddlyWiki found at: $TW" && exit 1
|
||||
|
||||
# Check if Tiddler title is provided
|
||||
TITLE="$2"
|
||||
[[ -z $TITLE ]] && echo "Need a Tiddler title" && exit 1
|
||||
|
||||
# Delete the specified Tiddler from the TiddlyWiki
|
||||
echo "Deleting Tiddler: $TITLE"
|
||||
tiddlywiki --load $TW \
|
||||
--deletetiddlers "$TITLE" \
|
||||
--output ~/.zen/tmp --render "$:/core/save/all" "${MOATS}.html" "text/plain"
|
||||
|
||||
# Check if deletion was successful
|
||||
if [[ -s ~/.zen/tmp/${MOATS}.html ]]; then
|
||||
echo "Tiddler deleted successfully."
|
||||
cp ~/.zen/tmp/${MOATS}.html ${TW}
|
||||
rm ~/.zen/tmp/${MOATS}.html
|
||||
echo "Updated TiddlyWiki:
|
||||
${TW}"
|
||||
else
|
||||
echo "ERROR: Cannot delete $TITLE from
|
||||
$TW"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
exit 0
|
|
@ -0,0 +1,41 @@
|
|||
#!/bin/bash
|
||||
|
||||
# Generate a unique timestamp
|
||||
MOATS=$(date -u +"%Y%m%d%H%M%S%4N")
|
||||
|
||||
# Check if TiddlyWiki file exists
|
||||
TW="$1"
|
||||
[[ ! -s $TW ]] \
|
||||
&& echo "Missing TiddlyWiki index.html \$1: $TW" \
|
||||
&& exit 1
|
||||
|
||||
# Check if Tiddler JSON file exists
|
||||
TIDDLER="$2"
|
||||
[[ ! -s $TIDDLER || $TIDDLER == "" ]] \
|
||||
&& echo "Missing Tiddler JSON file \$2: $TIDDLER" \
|
||||
&& exit 1
|
||||
|
||||
# Add created and modified fields to the Tiddler JSON file
|
||||
echo "Putting ${TIDDLER} in ${TW}"
|
||||
jq '.[] + {created: $MOATS, modified: $MOATS}' --arg MOATS "$MOATS" "$TIDDLER" > "${TIDDLER}.tmp"
|
||||
|
||||
# Run TiddlyWiki import command
|
||||
echo "Running TiddlyWiki import..."
|
||||
tiddlywiki --load "${TW}" \
|
||||
--import "${TIDDLER}.tmp" 'application/json' \
|
||||
--output /tmp \
|
||||
--render '$:/core/save/all' "${MOATS}.html" 'text/plain'
|
||||
|
||||
# Check if import was successful
|
||||
if [[ -s /tmp/${MOATS}.html ]]; then
|
||||
echo "Import successful."
|
||||
cp /tmp/${MOATS}.html ${TW}
|
||||
rm /tmp/${MOATS}.html
|
||||
rm "${TIDDLER}.tmp"
|
||||
echo "Updated TiddlyWiki:
|
||||
${TW}"
|
||||
exit 0
|
||||
else
|
||||
echo "ERROR"
|
||||
exit 1
|
||||
fi
|
|
@ -0,0 +1,19 @@
|
|||
TiddlyWiki acts as a distributed object database
|
||||
|
||||
this scripts provides elemental TW interactions
|
||||
|
||||
* Import a Tiddler (json) in a TiddliWiki
|
||||
|
||||
```./import_tiddler.sh tiddlywiki.html ForemostPoets-Moonraker.json```
|
||||
|
||||
https://talk.tiddlywiki.org/t/how-to-add-extract-modify-tiddlers-from-command-line-to-do-ipfs-media-transfer/4345?u=papiche
|
||||
|
||||
* Delete a Tiddler (title) from a TiddliWiki
|
||||
|
||||
```./delete_tiddler.sh tiddlywiki.html "/TEST/ForemostPoets-Moonraker.mp3"```
|
||||
|
||||
https://talk.tiddlywiki.org/t/how-to-filter-and-delete-multiple-tiddlers/4950
|
||||
|
||||
|
||||
you can add more complex queries ....
|
||||
|
|
@ -11,7 +11,20 @@ MY_PATH="`( cd \"$MY_PATH\" && pwd )`" # absolutized and normalized
|
|||
## SEEK FOR UPLANET KEYS
|
||||
# GET & UPDATE IPNS
|
||||
############################################
|
||||
echo "## RUNNING UPLANET.refresh"
|
||||
echo "############################################"
|
||||
echo "
|
||||
_________________________
|
||||
< RUNNING UPLANET.refresh >
|
||||
-------------------------
|
||||
\ ^__^
|
||||
\ (oo)\_______
|
||||
(__)\ )\\/\\
|
||||
||----w |
|
||||
|| ||
|
||||
|
||||
"
|
||||
echo "############################################"
|
||||
echo "############################################"
|
||||
[[ ${IPFSNODEID} == "" ]] && echo "IPFSNODEID is empty - EXIT -" && exit 1
|
||||
|
||||
MOATS=$(date -u +"%Y%m%d%H%M%S%4N")
|
||||
|
@ -20,156 +33,175 @@ mkdir ~/.zen/tmp/${MOATS}
|
|||
#################################################################
|
||||
## IPFSNODEID ASTRONAUTES SIGNALING ## 12345 port
|
||||
############################
|
||||
## RUNING FOR ALL UMAP FOUND IN STATION MAP CACHE : "_LAT_LON"
|
||||
## RUNING FOR ALL UMAP FOUND IN STATION MAP CACHE : "_LAT_LON"
|
||||
|
||||
## SEARCH UMAP (created by PLAYER.refresh.sh) /UPLANET/__/_*_*/_*.?_*.?/_*.??_*.??
|
||||
MEMAPS=($(ls -t ~/.zen/tmp/${IPFSNODEID}/UPLANET/__/_*_*/_*.?_*.?/ 2>/dev/null))
|
||||
SWARMMAPS=($(ls -Gd ~/.zen/tmp/swarm/*/UPLANET/__/_*_*/_*.?_*.?/* | rev | cut -d '/' -f 1 | rev | sort | uniq 2>/dev/null) )
|
||||
combined=("${MEMAPS[@]}" "${SWARMMAPS[@]}")
|
||||
unique_combined=($(echo "${combined[@]}" | tr ' ' '\n' | sort -u))
|
||||
echo "ACTIVATED UMAPS : ${unique_combined[@]}" # "_LAT_LON" directories
|
||||
## SEARCH UMAP (created by PLAYER.refresh.sh) /UPLANET/__/_*_*/_*.?_*.?/_*.??_*.??
|
||||
MEMAPS=($(ls -td ~/.zen/tmp/${IPFSNODEID}/UPLANET/__/_*_*/_*.?_*.?/* 2>/dev/null | rev | cut -d '/' -f 1 | rev | sort | uniq))
|
||||
SWARMMAPS=($(ls -Gd ~/.zen/tmp/swarm/*/UPLANET/__/_*_*/_*.?_*.?/* 2>/dev/null | rev | cut -d '/' -f 1 | rev | sort | uniq))
|
||||
combined=("${MEMAPS[@]}" "${SWARMMAPS[@]}")
|
||||
unique_combined=($(echo "${combined[@]}" | tr ' ' '\n' | sort -u))
|
||||
echo "ACTIVATED ${#unique_combined[@]} UMAPS : ${unique_combined[@]}" # "_LAT_LON" directories
|
||||
|
||||
for UMAP in ${unique_combined[@]}; do
|
||||
######################################################
|
||||
### LEVEL 1 ###########################################
|
||||
######################################################
|
||||
for UMAP in ${unique_combined[@]}; do
|
||||
|
||||
start=`date +%s`
|
||||
echo "____________REFRESHING ${UMAP}__________"
|
||||
LAT=$(echo ${UMAP} | cut -d '_' -f 2)
|
||||
LON=$(echo ${UMAP} | cut -d '_' -f 3)
|
||||
start=`date +%s`
|
||||
echo
|
||||
echo "-------------------------------------------------------------------"
|
||||
echo "____________REFRESHING ${UMAP}__________ $(date)"
|
||||
LAT=$(echo ${UMAP} | cut -d '_' -f 2)
|
||||
LON=$(echo ${UMAP} | cut -d '_' -f 3)
|
||||
|
||||
[[ ${LAT} == "" || ${LON} == "" ]] && echo ">> ERROR BAD ${LAT} ${LON}" && continue
|
||||
[[ ${LAT} == "null" || ${LON} == "null" ]] && echo ">> ERROR BAD ${LAT} ${LON}" && continue
|
||||
[[ ${LAT} == "" || ${LON} == "" ]] && echo ">> ERROR BAD ${LAT} ${LON}" && continue
|
||||
[[ ${LAT} == "null" || ${LON} == "null" ]] && echo ">> ERROR BAD ${LAT} ${LON}" && continue
|
||||
|
||||
## SECTOR BANK COORD
|
||||
SECLAT="${LAT::-1}"
|
||||
SECLON="${LON::-1}"
|
||||
## REGION
|
||||
REGLAT=$(echo ${LAT} | cut -d '.' -f 1)
|
||||
REGLON=$(echo ${LON} | cut -d '.' -f 1)
|
||||
## SECTOR BANK COORD
|
||||
SLAT="${LAT::-1}"
|
||||
SLON="${LON::-1}"
|
||||
## REGION
|
||||
RLAT=$(echo ${LAT} | cut -d '.' -f 1)
|
||||
RLON=$(echo ${LON} | cut -d '.' -f 1)
|
||||
|
||||
##############################################################
|
||||
## UMAP WALLET CHECK
|
||||
##############################################################
|
||||
G1PUB=$(${MY_PATH}/../tools/keygen -t duniter "${UPLANETNAME}${LAT}" "${UPLANETNAME}${LON}")
|
||||
[[ ! ${G1PUB} ]] && echo "ERROR generating WALLET" && exit 1
|
||||
COINS=$($MY_PATH/../tools/COINScheck.sh ${G1PUB} | tail -n 1)
|
||||
echo "UMAP (${COINS} G1) WALLET : ${G1PUB}"
|
||||
##############################################################
|
||||
## UMAP WALLET CHECK
|
||||
##############################################################
|
||||
${MY_PATH}/../tools/keygen -t duniter -o ~/.zen/tmp/${MOATS}/${UMAP}.dunikey "${UPLANETNAME}${LAT}" "${UPLANETNAME}${LON}"
|
||||
G1PUB=$(cat ~/.zen/tmp/${MOATS}/${UMAP}.dunikey | grep 'pub:' | cut -d ' ' -f 2)
|
||||
[[ ! ${G1PUB} ]] && echo "ERROR generating UMAP WALLET" && exit 1
|
||||
|
||||
## ORIGIN ##########################################################
|
||||
## CALCULATE INITIAL UMAP GEOSPACIAL IPNS KEY
|
||||
${MY_PATH}/../tools/keygen -t ipfs -o ~/.zen/tmp/${MOATS}/${UMAP}.priv "${UPLANETNAME}${LAT}" "${UPLANETNAME}${LON}"
|
||||
ipfs key rm ${G1PUB} > /dev/null 2>&1
|
||||
UMAPNS=$(ipfs key import ${G1PUB} -f pem-pkcs8-cleartext ~/.zen/tmp/${MOATS}/${UMAP}.priv)
|
||||
echo "ORIGIN : ${myIPFS}/ipns/${UMAPNS}"
|
||||
COINS=$($MY_PATH/../tools/COINScheck.sh ${G1PUB} | tail -n 1)
|
||||
ZEN=$(echo "($COINS - 1) * 10" | bc | cut -d '.' -f 1)
|
||||
|
||||
###################### SPATIO TEMPORAL KEYS
|
||||
## YESTERDATE ###############
|
||||
${MY_PATH}/../tools/keygen -t ipfs -o ~/.zen/tmp/${MOATS}/${YESTERDATE}.priv "${YESTERDATE}${UPLANETNAME}${LAT}" "${YESTERDATE}${UPLANETNAME}${LON}"
|
||||
ipfs key rm ${YESTERDATE}${G1PUB} > /dev/null 2>&1
|
||||
YESTERDATENS=$(ipfs key import ${YESTERDATE}${G1PUB} -f pem-pkcs8-cleartext ~/.zen/tmp/${MOATS}/${YESTERDATE}.priv)
|
||||
echo "YESTERDAY : ${myIPFS}/ipns/${YESTERDATENS}"
|
||||
echo "UMAP (${COINS} G1) ${ZEN} ZEN : ${G1PUB}"
|
||||
|
||||
## TODATE #########################################
|
||||
${MY_PATH}/../tools/keygen -t ipfs -o ~/.zen/tmp/${MOATS}/${TODATE}.priv "${TODATE}${UPLANETNAME}${LAT}" "${TODATE}${UPLANETNAME}${LON}"
|
||||
ipfs key rm ${TODATE}${G1PUB} > /dev/null 2>&1
|
||||
TODATENS=$(ipfs key import ${TODATE}${G1PUB} -f pem-pkcs8-cleartext ~/.zen/tmp/${MOATS}/${TODATE}.priv)
|
||||
echo "TODAY : ${myIPFS}/ipns/${TODATENS}"
|
||||
## ORIGIN ##########################################################
|
||||
## CALCULATE INITIAL UMAP GEOSPACIAL IPNS KEY
|
||||
${MY_PATH}/../tools/keygen -t ipfs -o ~/.zen/tmp/${MOATS}/${UMAP}.priv "${UPLANETNAME}${LAT}" "${UPLANETNAME}${LON}"
|
||||
ipfs key rm ${G1PUB} > /dev/null 2>&1
|
||||
UMAPNS=$(ipfs key import ${G1PUB} -f pem-pkcs8-cleartext ~/.zen/tmp/${MOATS}/${UMAP}.priv)
|
||||
echo "ORIGIN : ${myIPFS}/ipns/${UMAPNS}"
|
||||
|
||||
# >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
|
||||
# >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
|
||||
## IPFS GET YESTERDATENS
|
||||
mkdir ~/.zen/tmp/${MOATS}/${UMAP}
|
||||
ipfs --timeout 180s get -o ~/.zen/tmp/${MOATS}/${UMAP}/ /ipns/${YESTERDATENS}/
|
||||
# >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
|
||||
# >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
|
||||
###################### SPATIO TEMPORAL KEYS
|
||||
## TODATE #########################################
|
||||
${MY_PATH}/../tools/keygen -t ipfs -o ~/.zen/tmp/${MOATS}/${TODATE}.priv "${TODATE}${UPLANETNAME}${LAT}" "${TODATE}${UPLANETNAME}${LON}"
|
||||
ipfs key rm ${TODATE}${G1PUB} > /dev/null 2>&1
|
||||
TODATENS=$(ipfs key import ${TODATE}${G1PUB} -f pem-pkcs8-cleartext ~/.zen/tmp/${MOATS}/${TODATE}.priv)
|
||||
echo "TODAY : ${myIPFS}/ipns/${TODATENS}"
|
||||
|
||||
## FORMAT CONTROL WARNING
|
||||
[[ ! -d ~/.zen/tmp/${MOATS}/${UMAP}/${G1PUB}:ZEN || ! -d ~/.zen/tmp/${MOATS}/${UMAP}/${LAT}_${LON} ]] \
|
||||
&& echo ">>> INFO - INTIALIZE UMAP FORMAT - NEW UMAP KEY -" \
|
||||
&& mkdir -p ~/.zen/tmp/${MOATS}/${UMAP}/${LAT}_${LON} \
|
||||
&& mkdir -p ~/.zen/tmp/${MOATS}/${UMAP}/${G1PUB}:ZEN
|
||||
## YESTERDATE ###############
|
||||
${MY_PATH}/../tools/keygen -t ipfs -o ~/.zen/tmp/${MOATS}/${YESTERDATE}.priv "${YESTERDATE}${UPLANETNAME}${LAT}" "${YESTERDATE}${UPLANETNAME}${LON}"
|
||||
ipfs key rm ${YESTERDATE}${G1PUB} > /dev/null 2>&1
|
||||
YESTERDATENS=$(ipfs key import ${YESTERDATE}${G1PUB} -f pem-pkcs8-cleartext ~/.zen/tmp/${MOATS}/${YESTERDATE}.priv)
|
||||
echo "YESTERDAY : ${myIPFS}/ipns/${YESTERDATENS}"
|
||||
|
||||
mkdir -p ~/.zen/tmp/${MOATS}/${UMAP}/RSS
|
||||
mkdir -p ~/.zen/tmp/${MOATS}/${UMAP}/TW
|
||||
# >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
|
||||
start=`date +%s`
|
||||
# >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
|
||||
mkdir ~/.zen/tmp/${MOATS}/${UMAP}
|
||||
echo "## IPFS GET YESTERDATENS /ipns/${YESTERDATENS}/"
|
||||
ipfs --timeout 300s get --progress=false -o ~/.zen/tmp/${MOATS}/${UMAP}/ /ipns/${YESTERDATENS}/
|
||||
if [[ $? != 0 ]]; then
|
||||
echo "(╥☁╥ ) swarm online memory empty (╥☁╥ )"
|
||||
# Try retieve memory from UPlanet ZEN Memory
|
||||
[[ ${ZEN} -gt 0 ]] \
|
||||
&& echo "INTERCOM Refreshing from ZEN MEMORY" \
|
||||
&& ${MY_PATH}/../RUNTIME/ZEN.UMAP.memory.sh "${UMAP}" "${MOATS}" "${G1PUB}"
|
||||
fi
|
||||
# >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
|
||||
end=`date +%s`
|
||||
echo "_____UMAP${UMAP} GET time was "`expr $end - $start` seconds.
|
||||
# >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
|
||||
|
||||
## FORMAT CONTROL WARNING
|
||||
[[ ! -d ~/.zen/tmp/${MOATS}/${UMAP}/${G1PUB}:ZEN || ! -d ~/.zen/tmp/${MOATS}/${UMAP}/${LAT}_${LON} ]] \
|
||||
&& echo ">>> INFO - INTIALIZE UMAP FORMAT - NEW UMAP KEY -" \
|
||||
&& mkdir -p ~/.zen/tmp/${MOATS}/${UMAP}/${LAT}_${LON} \
|
||||
&& mkdir -p ~/.zen/tmp/${MOATS}/${UMAP}/${G1PUB}:ZEN \
|
||||
&& echo ${MOATS} > ~/.zen/tmp/${MOATS}/${UMAP}/${G1PUB}:ZEN/_moats
|
||||
|
||||
mkdir -p ~/.zen/tmp/${MOATS}/${UMAP}/RSS
|
||||
mkdir -p ~/.zen/tmp/${MOATS}/${UMAP}/TW
|
||||
|
||||
echo "~/.zen/tmp/${MOATS}/${UMAP}/${G1PUB}:ZEN/"
|
||||
|
||||
## zday of the week for IPFSNODEID
|
||||
rm ~/.zen/tmp/${MOATS}/${UMAP}/z* ## TODO RESTRICT T O z*.html
|
||||
ZCHAIN=$(cat ~/.zen/tmp/${MOATS}/${UMAP}/${G1PUB}:ZEN/_chain | rev | cut -d ':' -f 1 | rev 2>/dev/null)
|
||||
echo "<meta http-equiv=\"refresh\" content=\"0; url='/ipfs/${ZCHAIN}'\" />" > ~/.zen/tmp/${MOATS}/${UMAP}/z$(date +%A-%d_%m_%Y).html
|
||||
## zday of the week for IPFSNODEID
|
||||
rm -f ~/.zen/tmp/${MOATS}/${UMAP}/z*.html 2>/dev/null
|
||||
ZCHAIN=$(cat ~/.zen/tmp/${MOATS}/${UMAP}/${G1PUB}:ZEN/_chain 2>/dev/null | rev | cut -d ':' -f 1 | rev 2>/dev/null)
|
||||
[[ "${ZCHAIN}" != "" ]] \
|
||||
&& echo "<meta http-equiv=\"refresh\" content=\"0; url='/ipfs/${ZCHAIN}'\" />" > ~/.zen/tmp/${MOATS}/${UMAP}/z$(date +%A-%d_%m_%Y).html
|
||||
|
||||
########################################################
|
||||
## NODE SELECTION in UMAP.refresher
|
||||
UREFRESH="${HOME}/.zen/tmp/${MOATS}/${UMAP}/${LAT}_${LON}/UMAP.refresher"
|
||||
ALLNODES=($(cat ${UREFRESH} 2>/dev/null)) # ${ALLNODES[@]}
|
||||
STRAPS=($(cat ~/.zen/Astroport.ONE/A_boostrap_nodes.txt | grep -Ev "#" | rev | cut -d '/' -f 1 | rev | grep -v '^[[:space:]]*$')) ## ${STRAPS[@]}
|
||||
|
||||
# ++++++++++++++++++++ - - - - ADAPT TO NODE TREATMENT TIME
|
||||
ZMOATS=$(cat ~/.zen/tmp/${MOATS}/${UMAP}/${G1PUB}:ZEN/_moats 2>/dev/null)
|
||||
# ZMOATS SHOULD BE MORE THAT 5 HOURS.
|
||||
MOATS_SECONDS=$(${MY_PATH}/../tools/MOATS2seconds.sh ${MOATS})
|
||||
ZMOATS_SECONDS=$(${MY_PATH}/../tools/MOATS2seconds.sh ${ZMOATS})
|
||||
DIFF_SECONDS=$((MOATS_SECONDS - ZMOATS_SECONDS))
|
||||
hours=$((DIFF_SECONDS / 3600))
|
||||
minutes=$(( (DIFF_SECONDS % 3600) / 60 ))
|
||||
seconds=$((DIFF_SECONDS % 60))
|
||||
echo "UMAP DATA is ${hours} hours ${minutes} minutes ${seconds} seconds "
|
||||
|
||||
# IF LESS THAN 5 HOURS
|
||||
if [ ${DIFF_SECONDS} -lt $(( 5 * 60 * 60 )) ]; then
|
||||
echo "GETTING YESTERDAY UMAP.refresher"
|
||||
YESTERDAY=$(ipfs cat /ipfs/${ZCHAIN}/${LAT}_${LON}/UMAP.refresher | head -n 1)
|
||||
## GET UMAP.refresher from PREVIOUS _chain ...
|
||||
TODAY=$(cat ~/.zen/tmp/${MOATS}/${UMAP}/${LAT}_${LON}/UMAP.refresher | head -n 1)
|
||||
echo "TODAY : ${TODAY}"
|
||||
echo "YESTERDAY : ${YESTERDAY}"
|
||||
echo "------------------------------------------------->>>>>>>>>>>>>>>>"
|
||||
continue
|
||||
fi
|
||||
|
||||
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
########################################################
|
||||
## NODE SELECTION in UMAP.refresher
|
||||
UREFRESH="${HOME}/.zen/tmp/${MOATS}/${UMAP}/${LAT}_${LON}/UMAP.refresher"
|
||||
ALLNODES=($(cat ${UREFRESH} 2>/dev/null)) # ${ALLNODES[@]}
|
||||
STRAPS=($(cat ~/.zen/Astroport.ONE/A_boostrap_nodes.txt | grep -Ev "#" | rev | cut -d '/' -f 1 | rev | grep -v '^[[:space:]]*$')) ## ${STRAPS[@]}
|
||||
|
||||
if [[ ${ALLNODES[@]} == "" ]]; then
|
||||
for STRAP in ${STRAPS[@]}; do
|
||||
echo ${STRAP} >> ${UREFRESH} ## FILL UMAP.refresher file with all STRAPS
|
||||
done
|
||||
ALLNODES=($(cat ${UREFRESH} 2>/dev/null)) # ${ALLNODES[@]}
|
||||
fi
|
||||
|
||||
ACTINGNODE=${ALLNODES[0]} ## FIST NODE IN UMAP.refresher
|
||||
|
||||
## IN CASE OLD BOOSTRAP IS STILL IN CHARGE - CHOOSE 1ST STRAP -
|
||||
[[ ! $(echo ${STRAPS[@]} | grep ${ACTINGNODE}) ]] && ACTINGNODE=${STRAPS[0]}
|
||||
|
||||
## IF NOT UPDATED FOR TOO LONG
|
||||
[ ${DIFF_SECONDS} -gt 100800 ] \
|
||||
&& echo "More than 28H update" \
|
||||
&& ACTINGNODE=${STRAPS[0]}
|
||||
|
||||
echo "* ACTINGNODE=${ACTINGNODE}"
|
||||
|
||||
[[ "${ACTINGNODE}" != "${IPFSNODEID}" ]] \
|
||||
&& echo ">> ACTINGNODE=${ACTINGNODE} is not ME - CONTINUE -" \
|
||||
&& continue
|
||||
########################################
|
||||
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ PASSING THERE MAKE IPFSNODEID UMAP REFRESHER
|
||||
|
||||
## NEXT REFRESHER
|
||||
# TODO: INTRODUCE NODE BALANCE AND CHOOSE THE MOST CONFIDENT ONE
|
||||
rm ${UREFRESH}
|
||||
if [[ ${ALLNODES[@]} == "" ]]; then
|
||||
for STRAP in ${STRAPS[@]}; do
|
||||
echo ${STRAP} >> ${UREFRESH} ## FILL UMAP.refresher file with all STRAPS
|
||||
done
|
||||
# SHUFFLE UMAP.refresher
|
||||
cat ${UREFRESH} | sort | uniq | shuf > ${UREFRESH}.shuf
|
||||
mv ${UREFRESH}.shuf ${UREFRESH}
|
||||
## NEXT REFRESHER
|
||||
echo ">> NEXT REFRESHER WILL BE $(cat ${UREFRESH} | head -n 1)"
|
||||
######################################################## # NODE SELECTION in UMAP.refresher
|
||||
ALLNODES=($(cat ${UREFRESH} 2>/dev/null)) # ${ALLNODES[@]}
|
||||
fi
|
||||
|
||||
# %%%%%%%%%% ##################################################
|
||||
## SECTOR LINKING >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>${SLAT}_${SLON}
|
||||
# %%%%%%%%%% ##################################################
|
||||
ACTINGNODE=${ALLNODES[0]} ## FIST NODE IN UMAP.refresher
|
||||
|
||||
## IN CASE OLD BOOSTRAP IS STILL IN CHARGE - CHOOSE 1ST STRAP -
|
||||
[[ ! $(echo ${STRAPS[@]} | grep ${ACTINGNODE}) ]] && ACTINGNODE=${STRAPS[0]}
|
||||
|
||||
# ++++++++++++++++++++ - - - - FIND LAST TREATMENT TIME
|
||||
ZMOATS=$(cat ~/.zen/tmp/${MOATS}/${UMAP}/${G1PUB}:ZEN/_moats 2>/dev/null) || ZMOATS=${MOATS}
|
||||
# ZMOATS SHOULD BE MORE THAT 5 HOURS.
|
||||
MOATS_SECONDS=$(${MY_PATH}/../tools/MOATS2seconds.sh ${MOATS})
|
||||
ZMOATS_SECONDS=$(${MY_PATH}/../tools/MOATS2seconds.sh ${ZMOATS})
|
||||
DIFF_SECONDS=$((MOATS_SECONDS - ZMOATS_SECONDS))
|
||||
hours=$((DIFF_SECONDS / 3600))
|
||||
minutes=$(( (DIFF_SECONDS % 3600) / 60 ))
|
||||
seconds=$((DIFF_SECONDS % 60))
|
||||
echo "UMAP DATA is ${hours} hours ${minutes} minutes ${seconds} seconds "
|
||||
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
## IF NOT UPDATED FOR TOO LONG
|
||||
[[ ${DIFF_SECONDS} -gt $(( 26 * 60 * 60 )) || ${DIFF_SECONDS} -eq 0 ]] \
|
||||
&& echo ">>>>>>>>>>>>>> More than 26H update - BOOSTRAP 0 ACTION -" \
|
||||
&& ACTINGNODE=${STRAPS[0]}
|
||||
|
||||
echo "* ACTINGNODE=${ACTINGNODE}"
|
||||
|
||||
if [[ "${ACTINGNODE}" != "${IPFSNODEID}" ]]; then
|
||||
echo ">> ACTINGNODE NOT ME - CONTINUE -"
|
||||
ipfs key rm "${TODATE}${G1PUB}" "${YESTERDATE}${G1PUB}" "${G1PUB}"
|
||||
echo "------8<-------------8<------------------8<-----------------8<-----------------8<"
|
||||
continue
|
||||
fi
|
||||
################################################################################
|
||||
# ~~~~~~~~~~~~~ GOING FURTHER ~~~ MEANS IPFSNODEID IS UMAP REFRESHER ~~~~~~~~~~~
|
||||
################################################################################
|
||||
## NEXT REFRESHER
|
||||
# TODO: INTRODUCE NODE BALANCE AND CHOOSE THE MOST CONFIDENT ONE
|
||||
rm ${UREFRESH}
|
||||
for STRAP in ${STRAPS[@]}; do
|
||||
echo ${STRAP} >> ${UREFRESH} ## FILL UMAP.refresher file with all STRAPS
|
||||
done
|
||||
# SHUFFLE UMAP.refresher
|
||||
cat ${UREFRESH} | sort | uniq | shuf > ${UREFRESH}.shuf
|
||||
mv ${UREFRESH}.shuf ${UREFRESH}
|
||||
## NEXT REFRESHER
|
||||
echo ">> NEXT REFRESHER WILL BE $(cat ${UREFRESH} | head -n 1)"
|
||||
######################################################## # NODE SELECTION in UMAP.refresher
|
||||
|
||||
############ 101 ZEN (11.1 G1) REFILL ?!
|
||||
CURRENT=$(readlink ~/.zen/game/players/.current | rev | cut -d '/' -f 1 | rev)
|
||||
[[ ${COINS} == "" || ${COINS} == "null" ]] \
|
||||
&& [[ ${ZEN} -lt 100 && ${CURRENT} != "" ]] \
|
||||
&& MIUSER=$(${MY_PATH}/../tools/clyuseryomail.sh "${CURRENT}") \
|
||||
&& ${MY_PATH}/../tools/PAY4SURE.sh "${HOME}/.zen/game/players/.current/secret.dunikey" "11.1" "${G1PUB}" "UPLANET:101ZEN:${UMAP}:${MIUSER}" \
|
||||
&& echo "UPLANET:101:${UMAP}:${MIUSER}" && echo " ~~~ (ZEN‿‿ZEN) ~~ _${LAT}_${LON} ~~ (ZEN‿‿ZEN) ~~~ "
|
||||
|
||||
# %%%%%%%%%% ##################################################
|
||||
## SECTOR LINKING >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>${SLAT}_${SLON}
|
||||
# %%%%%%%%%% ##################################################
|
||||
SLAT="${LAT::-1}"
|
||||
SLON="${LON::-1}"
|
||||
SECTOR="_${SLAT}_${SLON}"
|
||||
|
@ -180,7 +212,7 @@ echo "<meta http-equiv=\"refresh\" content=\"0; url='/ipfs/${ZCHAIN}'\" />" > ~/
|
|||
COINS=$($MY_PATH/../tools/COINScheck.sh ${SECTORG1PUB} | tail -n 1)
|
||||
echo "SECTOR : ${SECTOR} (${COINS} G1) WALLET : ${SECTORG1PUB}"
|
||||
|
||||
${MY_PATH}/../tools/keygen -t ipfs -o ~/.zen/tmp/${MOATS}/${SECTOR}.priv "${UPLANETNAME}${SECTOR}" "${UPLANETNAME}${SECTOR}"
|
||||
${MY_PATH}/../tools/keygen -t ipfs -o ~/.zen/tmp/${MOATS}/${SECTOR}.priv "${TODATE}${UPLANETNAME}${SECTOR}" "${TODATE}${UPLANETNAME}${SECTOR}"
|
||||
ipfs key rm ${SECTORG1PUB} > /dev/null 2>&1 ## AVOID ERROR ON IMPORT
|
||||
SECTORNS=$(ipfs key import ${SECTORG1PUB} -f pem-pkcs8-cleartext ~/.zen/tmp/${MOATS}/${SECTOR}.priv)
|
||||
ipfs key rm ${SECTORG1PUB}
|
||||
|
@ -188,9 +220,9 @@ echo "<meta http-equiv=\"refresh\" content=\"0; url='/ipfs/${ZCHAIN}'\" />" > ~/
|
|||
mkdir -p ~/.zen/tmp/${MOATS}/${UMAP}/${SLAT}_${SLON}
|
||||
echo "<meta http-equiv=\"refresh\" content=\"0; url='/ipns/${SECTORNS}'\" />" > ~/.zen/tmp/${MOATS}/${UMAP}/${SLAT}_${SLON}/index.html
|
||||
|
||||
# %%%%%%%%%% ##################################################
|
||||
## REGION LINKING >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> ${RLAT}_${RLON}
|
||||
# %%%%%%%%%% ##################################################
|
||||
# %%%%%%%%%% ##################################################
|
||||
## REGION LINKING >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> ${RLAT}_${RLON}
|
||||
# %%%%%%%%%% ##################################################
|
||||
RLAT=$(echo ${LAT} | cut -d '.' -f 1)
|
||||
RLON=$(echo ${LON} | cut -d '.' -f 1)
|
||||
REGION="_${RLAT}_${RLON}"
|
||||
|
@ -209,35 +241,107 @@ echo "<meta http-equiv=\"refresh\" content=\"0; url='/ipfs/${ZCHAIN}'\" />" > ~/
|
|||
mkdir -p ~/.zen/tmp/${MOATS}/${UMAP}/${RLAT}_${RLON}
|
||||
echo "<meta http-equiv=\"refresh\" content=\"0; url='/ipns/${TODATEREGIONNS}'\" />" > ~/.zen/tmp/${MOATS}/${UMAP}/${RLAT}_${RLON}/index.html
|
||||
|
||||
# %%%%%%%%%% ##################################################
|
||||
## COLLECT RSS FROM ALL PLAYERS WITH SAME UMAP IN SWARM MEMORY /UPLANET/__/_*_*/_*.?_*.?/_*.??_*.??
|
||||
# %%%%%%%%%% ##################################################
|
||||
cp ~/.zen/tmp/${IPFSNODEID}/UPLANET/__/_*_*/_*.?_*.?/_${LAT}_${LON}/RSS/*.rss.json ~/.zen/tmp/${MOATS}/${UMAP}/RSS/ 2>/dev/null
|
||||
RSSFILES=($(ls ~/.zen/tmp/swarm/*/UPLANET/__/_*_*/_*.?_*.?/_${LAT}_${LON}/RSS/*.rss.json 2>/dev/null))
|
||||
for RSSFILE in ${RSSFILES[@]}; do
|
||||
cp ${RSSFILE} ~/.zen/tmp/${MOATS}/${UMAP}/RSS/
|
||||
done
|
||||
####################################################################################
|
||||
#######################################################################################
|
||||
echo "# NEXTNS : UMAP, SECTOR, REGION ## BOOSTRAP TO SWARM ##"
|
||||
mkdir -p ~/.zen/tmp/${IPFSNODEID}/UPLANET/__/_${RLAT}_${RLON}/_${SLAT}_${SLON}/_${LAT}_${LON}/
|
||||
####################################################################################
|
||||
#################################################################################
|
||||
## DEMAIN DATA
|
||||
####################################################################################
|
||||
## UMAP NEXTNS ############### INFORM "PLAYER.refresh.sh" WITH _next.umap
|
||||
${MY_PATH}/../tools/keygen -t ipfs -o ~/.zen/tmp/${MOATS}/next.priv "${DEMAINDATE}${UPLANETNAME}${LAT}" "${DEMAINDATE}${UPLANETNAME}${LON}"
|
||||
ipfs key rm "next" > /dev/null 2>&1
|
||||
NEXTNS=$(ipfs key import "next" -f pem-pkcs8-cleartext ~/.zen/tmp/${MOATS}/next.priv)
|
||||
echo "UMAP NEXTNS : ${myIPFS}/ipns/${NEXTNS}"
|
||||
ipfs key rm "next" > /dev/null 2>&1
|
||||
rm ~/.zen/tmp/${MOATS}/next.priv
|
||||
## BOOSTRAP SWARM PUBLICATION _next.umapns
|
||||
echo "${G1PUB}:${DEMAINDATE}:${NEXTNS}" \
|
||||
> ~/.zen/tmp/${MOATS}/${UMAP}/_next.umapns
|
||||
|
||||
# %%%%%%%%%% ##################################################
|
||||
## COLLECT TW LINKS FROM NODE & SWARM
|
||||
# %%%%%%%%%% ##################################################
|
||||
cp -r ~/.zen/tmp/${IPFSNODEID}/UPLANET/__/_*_*/_*.?_*.?/_${LAT}_${LON}/TW/* ~/.zen/tmp/${MOATS}/${UMAP}/TW/ 2>/dev/null
|
||||
TWFILES=($(ls ~/.zen/tmp/swarm/*/UPLANET/__/_*_*/_*.?_*.?/_${LAT}_${LON}/TW/*/index.html 2>/dev/null))
|
||||
for TWRED in ${TWFILES[@]}; do
|
||||
ZMAIL=$(echo ${TWRED} | rev | cut -d '/' -f 2 | rev)
|
||||
mkdir -p ~/.zen/tmp/${MOATS}/${UMAP}/TW/${ZMAIL}
|
||||
cp ${TWRED} ~/.zen/tmp/${MOATS}/${UMAP}/TW/${ZMAIL}/
|
||||
done
|
||||
cp ~/.zen/tmp/${MOATS}/${UMAP}/_next.umapns \
|
||||
~/.zen/tmp/${IPFSNODEID}/UPLANET/__/_${RLAT}_${RLON}/_${SLAT}_${SLON}/_${LAT}_${LON}/
|
||||
|
||||
##################################
|
||||
## SECTOR NEXTNS ############### INFORM "PLAYER.refresh.sh" WITH _next.sector
|
||||
${MY_PATH}/../tools/keygen -t ipfs -o ~/.zen/tmp/${MOATS}/next.priv "${DEMAINDATE}${UPLANETNAME}${SECTOR}" "${DEMAINDATE}${UPLANETNAME}${SECTOR}"
|
||||
ipfs key rm "next" > /dev/null 2>&1
|
||||
NEXTNS=$(ipfs key import "next" -f pem-pkcs8-cleartext ~/.zen/tmp/${MOATS}/next.priv)
|
||||
echo "SECTOR NEXTNS : ${myIPFS}/ipns/${NEXTNS}"
|
||||
ipfs key rm "next" > /dev/null 2>&1
|
||||
rm ~/.zen/tmp/${MOATS}/next.priv
|
||||
## BOOSTRAP SWARM PUBLICATION _next.sectorns
|
||||
echo "${SECTORG1PUB}:${DEMAINDATE}:${NEXTNS}" \
|
||||
> ~/.zen/tmp/${MOATS}/${UMAP}/_next.sectorns
|
||||
|
||||
cp ~/.zen/tmp/${MOATS}/${UMAP}/_next.sectorns \
|
||||
~/.zen/tmp/${IPFSNODEID}/UPLANET/__/_${RLAT}_${RLON}/_${SLAT}_${SLON}/_${LAT}_${LON}/
|
||||
|
||||
## REGION NEXTNS ############### INFORM "PLAYER.refresh.sh" WITH _next.region
|
||||
${MY_PATH}/../tools/keygen -t ipfs -o ~/.zen/tmp/${MOATS}/next.priv "${DEMAINDATE}${UPLANETNAME}${REGION}" "${DEMAINDATE}${UPLANETNAME}${REGION}"
|
||||
ipfs key rm "next" > /dev/null 2>&1
|
||||
NEXTNS=$(ipfs key import "next" -f pem-pkcs8-cleartext ~/.zen/tmp/${MOATS}/next.priv)
|
||||
echo "REGION NEXTNS : ${myIPFS}/ipns/${NEXTNS}"
|
||||
ipfs key rm "next" > /dev/null 2>&1
|
||||
rm ~/.zen/tmp/${MOATS}/next.priv
|
||||
## BOOSTRAP SWARM PUBLICATION _next.regionns
|
||||
echo "${REGIONG1PUB}:${DEMAINDATE}:${NEXTNS}" \
|
||||
> ~/.zen/tmp/${MOATS}/${UMAP}/_next.regionns
|
||||
|
||||
cp ~/.zen/tmp/${MOATS}/${UMAP}/_next.regionns \
|
||||
~/.zen/tmp/${IPFSNODEID}/UPLANET/__/_${RLAT}_${RLON}/_${SLAT}_${SLON}/_${LAT}_${LON}/
|
||||
|
||||
####################################################################################
|
||||
## TODATE DATA
|
||||
echo "WRITE $TODATE DATA ~/.zen/tmp/${IPFSNODEID}/UPLANET/__/_${RLAT}_${RLON}/_${SLAT}_${SLON}/_${LAT}_${LON}"
|
||||
####################################################################################
|
||||
echo "${TODATENS}" \
|
||||
> ~/.zen/tmp/${IPFSNODEID}/UPLANET/__/_${RLAT}_${RLON}/_${SLAT}_${SLON}/_${LAT}_${LON}/TODATENS
|
||||
echo "${SECTORNS}" \
|
||||
> ~/.zen/tmp/${IPFSNODEID}/UPLANET/__/_${RLAT}_${RLON}/_${SLAT}_${SLON}/_${LAT}_${LON}/SECTORNS
|
||||
echo "${TODATEREGIONNS}" \
|
||||
> ~/.zen/tmp/${IPFSNODEID}/UPLANET/__/_${RLAT}_${RLON}/_${SLAT}_${SLON}/_${LAT}_${LON}/REGIONNS
|
||||
echo "${G1PUB}" \
|
||||
> ~/.zen/tmp/${IPFSNODEID}/UPLANET/__/_${RLAT}_${RLON}/_${SLAT}_${SLON}/_${LAT}_${LON}/G1PUB
|
||||
echo "${SECTORG1PUB}" \
|
||||
> ~/.zen/tmp/${IPFSNODEID}/UPLANET/__/_${RLAT}_${RLON}/_${SLAT}_${SLON}/_${LAT}_${LON}/SECTORG1PUB
|
||||
echo "${REGIONG1PUB}" \
|
||||
> ~/.zen/tmp/${IPFSNODEID}/UPLANET/__/_${RLAT}_${RLON}/_${SLAT}_${SLON}/_${LAT}_${LON}/REGIONG1PUB
|
||||
|
||||
####################################################################################
|
||||
ls ~/.zen/tmp/${IPFSNODEID}/UPLANET/__/_${RLAT}_${RLON}/_${SLAT}_${SLON}/_${LAT}_${LON}/
|
||||
|
||||
# %%%%%%%%%% ##################################################
|
||||
## COLLECT RSS FROM ALL PLAYERS WITH SAME UMAP IN SWARM MEMORY /UPLANET/__/_*_*/_*.?_*.?/_*.??_*.??
|
||||
# %%%%%%%%%% ##################################################
|
||||
cp ~/.zen/tmp/${IPFSNODEID}/UPLANET/__/_*_*/_*.?_*.?/_${LAT}_${LON}/RSS/*.rss.json \
|
||||
~/.zen/tmp/${MOATS}/${UMAP}/RSS/ 2>/dev/null
|
||||
RSSFILES=($(ls ~/.zen/tmp/swarm/*/UPLANET/__/_*_*/_*.?_*.?/_${LAT}_${LON}/RSS/*.rss.json 2>/dev/null))
|
||||
for RSSFILE in ${RSSFILES[@]}; do
|
||||
cp ${RSSFILE} ~/.zen/tmp/${MOATS}/${UMAP}/RSS/
|
||||
done
|
||||
|
||||
# %%%%%%%%%% ##################################################
|
||||
## COLLECT TW LINKS FROM NODE & SWARM
|
||||
# %%%%%%%%%% ##################################################
|
||||
cp -r ~/.zen/tmp/${IPFSNODEID}/UPLANET/__/_*_*/_*.?_*.?/_${LAT}_${LON}/TW/* \
|
||||
~/.zen/tmp/${MOATS}/${UMAP}/TW/ 2>/dev/null
|
||||
TWFILES=($(ls ~/.zen/tmp/swarm/*/UPLANET/__/_*_*/_*.?_*.?/_${LAT}_${LON}/TW/*/index.html 2>/dev/null))
|
||||
for TWRED in ${TWFILES[@]}; do
|
||||
ZMAIL=$(echo ${TWRED} | rev | cut -d '/' -f 2 | rev)
|
||||
mkdir -p ~/.zen/tmp/${MOATS}/${UMAP}/TW/${ZMAIL}
|
||||
cp ${TWRED} ~/.zen/tmp/${MOATS}/${UMAP}/TW/${ZMAIL}/
|
||||
done
|
||||
|
||||
##################################
|
||||
## OSM2IPFS
|
||||
### UMAP = 0.01° Planet Slice
|
||||
UMAPGEN="${EARTHCID}/Umap.html?southWestLat=${LAT}&southWestLon=${LON}°=0.01&ipns=${UMAPNS}/_index.html"
|
||||
USATGEN="${EARTHCID}/Usat.html?southWestLat=${LAT}&southWestLon=${LON}°=0.01&ipns=${UMAPNS}/_index.html"
|
||||
echo "<meta http-equiv=\"refresh\" content=\"0; url='${UMAPGEN}'\" />" > ~/.zen/tmp/${MOATS}/${UMAP}/Umap.html
|
||||
echo "<meta http-equiv=\"refresh\" content=\"0; url='${USATGEN}'\" />" > ~/.zen/tmp/${MOATS}/${UMAP}/Usat.html
|
||||
### UMAP = 0.01° Planet Slice
|
||||
UMAPGEN="${EARTHCID}/Umap.html?southWestLat=${LAT}&southWestLon=${LON}°=0.01&ipns=${TODATENS}/_index.html"
|
||||
USATGEN="${EARTHCID}/Usat.html?southWestLat=${LAT}&southWestLon=${LON}°=0.01&ipns=${TODATENS}/_index.html"
|
||||
echo "<meta http-equiv=\"refresh\" content=\"0; url='${UMAPGEN}'\" />" > ~/.zen/tmp/${MOATS}/${UMAP}/Umap.html
|
||||
echo "<meta http-equiv=\"refresh\" content=\"0; url='${USATGEN}'\" />" > ~/.zen/tmp/${MOATS}/${UMAP}/Usat.html
|
||||
|
||||
## ¤$£€ removed copy OSM map to IPFS. TODO. scrap tiles instead of screen copy
|
||||
## ¤$£€ removed copy OSM map to IPFS. TODO. scrap tiles instead of screen copy
|
||||
## TODO # GET SCREENSHOT UMAP SECTOR & REGION JPG
|
||||
## PROBLEM ON LIBRA ... MORE TEST NEEDED ...
|
||||
#~ [[ ! -s ~/.zen/tmp/${MOATS}/${UMAP}/Umap.jpg ]] \
|
||||
|
@ -247,9 +351,9 @@ echo "<meta http-equiv=\"refresh\" content=\"0; url='/ipfs/${ZCHAIN}'\" />" > ~/
|
|||
#~ [[ ! -s ~/.zen/tmp/${MOATS}/${UMAP}/Usat.jpg ]] \
|
||||
#~ && python ${MY_PATH}/../tools/page_screenshot.py "${myIPFS}${USATGEN}" ~/.zen/tmp/${MOATS}/${UMAP}/Usat.jpg 900 900 2>/dev/null \
|
||||
#~ && [[ ! -s ~/.zen/tmp/${MOATS}/${UMAP}/Usat.jpg ]] && killall chrome
|
||||
#### NOT WORKING !!!
|
||||
#### NOT WORKING !!!
|
||||
|
||||
## GEOLINKING CALCULATE SURROUNDING UMAPS ###############################
|
||||
## GEOLINKING CALCULATE SURROUNDING UMAPS ###############################
|
||||
#~ if [[ ! -s ~/.zen/tmp/${MOATS}/${UMAP}/geolinks.json ]]; then
|
||||
|
||||
#~ ${MY_PATH}/../tools/Umap_geolinks.sh "${LAT}" "${LON}" "${UMAP}" "${MOATS}" "${UMAPNS}"
|
||||
|
@ -258,149 +362,201 @@ echo "<meta http-equiv=\"refresh\" content=\"0; url='/ipfs/${ZCHAIN}'\" />" > ~/
|
|||
#~ ### SET navigator.html ## MAKE EVOLVE template/umap.html
|
||||
#~ cp ${MY_PATH}/../templates/umap.html ~/.zen/tmp/${MOATS}/${UMAP}/navigator_Umap.html
|
||||
#~ cat ~/.zen/tmp/${MOATS}/${UMAP}/navigator_Umap.html | sed "s~Umap~Usat~g" > ~/.zen/tmp/${MOATS}/${UMAP}/navigator_Usat.html
|
||||
#### IS IT USEFUL ?..??
|
||||
#### IS IT USEFUL ?..??
|
||||
|
||||
####################################
|
||||
# %%%%%%%%%% ##################################################
|
||||
####################################
|
||||
# %%%%%%%%%% ##################################################
|
||||
## GET FROM WEB2.0 POI's AROUND >>>>>>>>>>>>>>>>>>>>>>>>>
|
||||
# %%%%%%%%%% ##################################################
|
||||
####################################
|
||||
echo "################### WEB2.0 SCRAPING TIME >>>>>>>>>>>>>>>>"
|
||||
## RECORD P4N SPOT DATA
|
||||
echo "* park4night : https://www.park4night.com/api/places/around?lat=${LAT}&lng=${LON}&radius=200&filter=%7B%7D&lang=fr"
|
||||
[[ ! -s ~/.zen/tmp/${MOATS}/${UMAP}/p4n.json ]] && touch ~/.zen/tmp/${MOATS}/${UMAP}/p4n.json
|
||||
[[ ! -s ~/.zen/tmp/${MOATS}/${UMAP}/fetch.json ]] \
|
||||
&& curl -s "https://www.park4night.com/api/places/around?lat=${LAT}&lng=${LON}&radius=200&filter=%7B%7D&lang=fr" -o ~/.zen/tmp/${MOATS}/${UMAP}/fetch.json \
|
||||
&& [[ $(stat -c %s ~/.zen/tmp/${MOATS}/${UMAP}/fetch.json) -gt $(stat -c %s ~/.zen/tmp/${MOATS}/${UMAP}/p4n.json) ]] \
|
||||
&& mv ~/.zen/tmp/${MOATS}/${UMAP}/fetch.json ~/.zen/tmp/${MOATS}/${UMAP}/p4n.json \
|
||||
&& echo "UPDATED PARK4NIGHT" \
|
||||
|| rm ~/.zen/tmp/${MOATS}/${UMAP}/fetch.json
|
||||
# %%%%%%%%%% ##################################################
|
||||
####################################
|
||||
echo "################### WEB2.0 SCRAPING TIME >>>>>>>>>>>>>>>>"
|
||||
## RECORD P4N SPOT DATA
|
||||
echo "* park4night : https://www.park4night.com/api/places/around?lat=${LAT}&lng=${LON}&radius=200&filter=%7B%7D&lang=fr"
|
||||
[[ ! -s ~/.zen/tmp/${MOATS}/${UMAP}/p4n.json ]] && touch ~/.zen/tmp/${MOATS}/${UMAP}/p4n.json
|
||||
[[ ! -s ~/.zen/tmp/${MOATS}/${UMAP}/fetch.json ]] \
|
||||
&& curl -s -L "https://www.park4night.com/api/places/around?lat=${LAT}&lng=${LON}&radius=200&filter=%7B%7D&lang=fr" -o ~/.zen/tmp/${MOATS}/${UMAP}/fetch.json \
|
||||
&& [[ $(stat -c %s ~/.zen/tmp/${MOATS}/${UMAP}/fetch.json) -gt $(stat -c %s ~/.zen/tmp/${MOATS}/${UMAP}/p4n.json) ]] \
|
||||
&& mv ~/.zen/tmp/${MOATS}/${UMAP}/fetch.json ~/.zen/tmp/${MOATS}/${UMAP}/p4n.json \
|
||||
&& echo "UPDATED PARK4NIGHT" \
|
||||
|| rm ~/.zen/tmp/${MOATS}/${UMAP}/fetch.json
|
||||
|
||||
####################################
|
||||
echo "* gchange : ./tools/gchange_get_50km_around_LAT_LON_ads.sh ${LAT} ${LON}"
|
||||
## GET 100KM GCHANGE ADS ( https://data.gchange.fr )
|
||||
${MY_PATH}/../tools/gchange_get_50km_around_LAT_LON_ads.sh ${LAT} ${LON} > ~/.zen/tmp/${MOATS}/${UMAP}/gchange50.json
|
||||
####################################
|
||||
echo "* gchange : ./tools/gchange_get_50km_around_LAT_LON_ads.sh ${LAT} ${LON}"
|
||||
## GET 100KM GCHANGE ADS ( https://data.gchange.fr )
|
||||
${MY_PATH}/../tools/gchange_get_50km_around_LAT_LON_ads.sh ${LAT} ${LON} > ~/.zen/tmp/${MOATS}/${UMAP}/gchange50.json
|
||||
|
||||
echo "MAKING _index.p4n.html with ./templates/P4N/index.html"
|
||||
## CREATE INDEX LOADING JSONs ON OPENSTREETMAP
|
||||
cat ${MY_PATH}/../templates/P4N/index.html \
|
||||
| sed -e "s~43.2218~${LAT}~g" \
|
||||
-e "s~1.3977~${LON}~g" \
|
||||
-e "s~_SERVICE_~Commons~g" \
|
||||
-e "s~_UMAP_~${UMAP}~g" \
|
||||
-e "s~http://127.0.0.1:8080~~g" \
|
||||
> ~/.zen/tmp/${MOATS}/${UMAP}/_index.p4n.html
|
||||
## GET ALL WALLETS
|
||||
echo "* GET WALLETS https://g1-stats.axiom-team.fr/data/geoloc-members.json"
|
||||
[[ ! -s ~/.zen/tmp/${MOATS}/${UMAP}/wallall.json ]] && touch ~/.zen/tmp/${MOATS}/${UMAP}/wallall.json
|
||||
[[ ! -s ~/.zen/tmp/${MOATS}/${UMAP}/fetch.json ]] \
|
||||
&& curl -s "https://g1-stats.axiom-team.fr/data/geoloc-members.json" -o ~/.zen/tmp/${MOATS}/${UMAP}/fetch.json \
|
||||
&& [[ $(stat -c %s ~/.zen/tmp/${MOATS}/${UMAP}/fetch.json) -gt $(stat -c %s ~/.zen/tmp/${MOATS}/${UMAP}/wallall.json) ]] \
|
||||
&& mv ~/.zen/tmp/${MOATS}/${UMAP}/fetch.json ~/.zen/tmp/${MOATS}/${UMAP}/wallall.json \
|
||||
&& echo "UPDATED WALLALL" \
|
||||
|| rm ~/.zen/tmp/${MOATS}/${UMAP}/fetch.json
|
||||
|
||||
# %%%%%%%%%% ##################################################
|
||||
########################################################
|
||||
echo "CREATING SPHERICAL LOCATIONS"
|
||||
# %%%%%%%%%% ##################################################
|
||||
## PREPARE SPHERE MAP ##################################################################
|
||||
echo "var examples = {};
|
||||
examples['locations'] = function() {
|
||||
var locations = {
|
||||
" > ~/.zen/tmp/world.js
|
||||
floop=1
|
||||
## FILTER LOCAL WALLETS
|
||||
target_lat=${LAT}
|
||||
target_lon=${LON}
|
||||
precision=0.1
|
||||
jq --argjson target_lat "$target_lat" \
|
||||
--argjson target_lon "$target_lon" \
|
||||
--argjson precision "$precision" \
|
||||
'.wallets | map(select((.geoPoint.lat | tonumber) >= ($target_lat - $precision) and (.geoPoint.lat | tonumber) <= ($target_lat + $precision) and (.geoPoint.lon | tonumber) >= ($target_lon - $precision) and (.geoPoint.lon | tonumber) <= ($target_lon + $precision)))' ~/.zen/tmp/${MOATS}/${UMAP}/wallall.json \
|
||||
> ~/.zen/tmp/${MOATS}/${UMAP}/wallets.json
|
||||
|
||||
SWARMTW=($(ls ~/.zen/tmp/swarm/*/UPLANET/__/_*_*/_*.?_*.?/_${LAT}_${LON}/TW/*/index.html 2>/dev/null))
|
||||
NODETW=($(ls ~/.zen/tmp/${IPFSNODEID}/UPLANET/__/_*_*/_*.?_*.?/_${LAT}_${LON}/TW/*/index.html 2>/dev/null))
|
||||
TWFILES=("${SWARMTW[@]}" "${NODETW[@]}")
|
||||
echo "MAKING _index.p4n.html with ./templates/P4N/index.html"
|
||||
## CREATE INDEX LOADING JSONs ON OPENSTREETMAP
|
||||
cat ${MY_PATH}/../templates/P4N/index.html \
|
||||
| sed -e "s~43.61000~${LAT}~g" \
|
||||
-e "s~1.43000~${LON}~g" \
|
||||
-e "s~_SERVICE_~Commons~g" \
|
||||
-e "s~_UMAP_~${UMAP}~g" \
|
||||
-e "s~http://127.0.0.1:8080~~g" \
|
||||
> ~/.zen/tmp/${MOATS}/${UMAP}/_index.p4n.html
|
||||
|
||||
for TWRED in ${TWFILES[@]}; do
|
||||
ZMAIL=$(echo ${TWRED} | rev | cut -d '/' -f 2 | rev)
|
||||
TWADD=$(cat ${TWRED} | grep -o "/ipns/[^\"]*" | sed "s/'$//")
|
||||
[[ -z ${TWADD} ]] && TWADD=$(cat ${TWRED} | grep -o "/ipfs/[^\"]*" | sed "s/'$//")
|
||||
# %%%%%%%%%% ##################################################
|
||||
########################################################
|
||||
echo "CREATING SPHERICAL LOCATIONS"
|
||||
# %%%%%%%%%% ##################################################
|
||||
## PREPARE SPHERE MAP ##################################################################
|
||||
echo "var examples = {};
|
||||
examples['locations'] = function() {
|
||||
var locations = {
|
||||
" > ~/.zen/tmp/world.js
|
||||
floop=1
|
||||
|
||||
## ADD ASTRONAUTNS ON SECTOR WORLD MAP
|
||||
echo "${floop}: {
|
||||
alpha: Math.random() * 2 * Math.PI,
|
||||
delta: Math.random() * 2 * Math.PI,
|
||||
name: '"${ZMAIL}"',
|
||||
link: '"${TWADD}"'
|
||||
}
|
||||
," >> ~/.zen/tmp/world.js
|
||||
SWARMTW=($(ls ~/.zen/tmp/swarm/*/UPLANET/__/_*_*/_*.?_*.?/_${LAT}_${LON}/TW/*/index.html 2>/dev/null))
|
||||
NODETW=($(ls ~/.zen/tmp/${IPFSNODEID}/UPLANET/__/_*_*/_*.?_*.?/_${LAT}_${LON}/TW/*/index.html 2>/dev/null))
|
||||
TWFILES=("${SWARMTW[@]}" "${NODETW[@]}")
|
||||
|
||||
((floop++))
|
||||
done
|
||||
for TWRED in ${TWFILES[@]}; do
|
||||
ZMAIL=$(echo ${TWRED} | rev | cut -d '/' -f 2 | rev)
|
||||
TWADD=$(cat ${TWRED} | grep -o "/ipns/[^\"]*" | sed "s/'$//")
|
||||
[[ -z ${TWADD} ]] && TWADD=$(cat ${TWRED} | grep -o "/ipfs/[^\"]*" | sed "s/'$//")
|
||||
|
||||
# REMOVE la dernière virgule
|
||||
sed -i '$ d' ~/.zen/tmp/world.js
|
||||
##################################
|
||||
## FINISH LOCATIONS
|
||||
echo "
|
||||
};
|
||||
\$('#sphere').earth3d({
|
||||
locationsElement: \$('#locations'),
|
||||
dragElement: \$('#locations'),
|
||||
locations: locations
|
||||
});
|
||||
};
|
||||
" >> ~/.zen/tmp/world.js
|
||||
|
||||
IAMAP=$(ipfs add -qw ~/.zen/tmp/world.js | tail -n 1)
|
||||
echo "JSON UMAP WORLD READY /ipfs/${IAMAP}/world.js"
|
||||
###########################################################################################
|
||||
### APPLY ON APP MODEL
|
||||
SECLAT="${LAT::-1}"
|
||||
SECLON="${LON::-1}"
|
||||
SECTOR="_${SECLAT}_${SECLON}"
|
||||
TODATESECTORNS=$(${MY_PATH}/../tools/keygen -t ipfs "${TODATE}${UPLANETNAME}${SECTOR}" "${TODATE}${UPLANETNAME}${SECTOR}")
|
||||
|
||||
PHONEBOOTH="${G1PUB::30}"
|
||||
cat ${MY_PATH}/../templates/UPlanetUmap/index.html \
|
||||
| sed -e "s~_ZONE_~UMAP ${UMAP}~g" \
|
||||
-e "s~_UPZONE_~SECTOR ${SECTOR}~g" \
|
||||
-e "s~QmYdWBx32dP14XcbXF7hhtDq7Uu6jFmDaRnuL5t7ARPYkW/index_fichiers/world.js~${IAMAP}/world.js~g" \
|
||||
-e "s~_ZONENS_~${TODATENS}~g" \
|
||||
-e "s~_UPZONENS_~${TODATESECTORNS}~g" \
|
||||
-e "s~_PHONEBOOTH_~${PHONEBOOTH}~g" \
|
||||
-e "s~_DATE_~$(date +%A-%d_%m_%Y)~g" \
|
||||
-e "s~_UPLANETLINK_~${EARTHCID}/map_render.html\?southWestLat=${LAT}\&southWestLon=${LON}\°=0.01~g" \
|
||||
-e "s~http://127.0.0.1:8080~~g" \
|
||||
> ~/.zen/tmp/${MOATS}/${UMAP}/_index.html
|
||||
|
||||
## Make it root App
|
||||
#~ mv ~/.zen/tmp/${MOATS}/${UMAP}/_index.html \
|
||||
#~ ~/.zen/tmp/${MOATS}/${UMAP}/index.html
|
||||
##################################
|
||||
|
||||
###########################################################################################
|
||||
########################################################
|
||||
## CREATE .all.json for RSS in this UMAP
|
||||
${MY_PATH}/../tools/json_dir.all.sh ~/.zen/tmp/${MOATS}/${UMAP}/RSS
|
||||
|
||||
##############################################################
|
||||
############################ PUBLISHING UMAP
|
||||
##############################################################
|
||||
UMAPROOT=$(ipfs add -rwHq ~/.zen/tmp/${MOATS}/${UMAP}/* | tail -n 1)
|
||||
|
||||
ZCHAIN=$(cat ~/.zen/tmp/${MOATS}/${UMAP}/${G1PUB}:ZEN/_chain | rev | cut -d ':' -f 1 | rev 2>/dev/null)
|
||||
ZMOATS=$(cat ~/.zen/tmp/${MOATS}/${UMAP}/${G1PUB}:ZEN/_moats 2>/dev/null)
|
||||
[[ ${ZCHAIN} && ${ZMOATS} ]] \
|
||||
&& cp ~/.zen/tmp/${MOATS}/${UMAP}/${G1PUB}:ZEN/_chain ~/.zen/tmp/${MOATS}/${UMAP}/${G1PUB}:ZEN/_chain.${ZMOATS} \
|
||||
&& echo "UPDATING MOATS"
|
||||
|
||||
## MICRO LEDGER CHAIN CHANGED or INIT ?
|
||||
[[ ${ZCHAIN} != ${UMAPROOT} || ${ZCHAIN} == "" ]] \
|
||||
&& echo "${MOATS}:${IPFSNODEID}:${UMAPROOT}" > ~/.zen/tmp/${MOATS}/${UMAP}/${G1PUB}:ZEN/_chain \
|
||||
&& echo "${MOATS}" > ~/.zen/tmp/${MOATS}/${UMAP}/${G1PUB}:ZEN/_moats \
|
||||
&& UMAPROOT=$(ipfs add -rwHq ~/.zen/tmp/${MOATS}/${UMAP}/* | tail -n 1) && echo "ROOT was ${ZCHAIN}"
|
||||
|
||||
echo "PUBLISHING ${TODATE} UMAPROOT : ${myIPFS}/ipfs/${UMAPROOT}"
|
||||
|
||||
ipfs name publish --key=${TODATE}${G1PUB} /ipfs/${UMAPROOT}
|
||||
end=`date +%s`
|
||||
ipfs key rm ${TODATE}${G1PUB} ${YESYERDATE}${G1PUB} ${G1PUB} ## REMOVE IPNS KEY
|
||||
|
||||
echo "(UMAP) ${UMAP} ${TODATE} PUBLISH time was "`expr $end - $start` seconds.
|
||||
## ADD ASTRONAUTNS ON SECTOR WORLD MAP
|
||||
echo "${floop}: {
|
||||
alpha: Math.random() * 2 * Math.PI,
|
||||
delta: Math.random() * 2 * Math.PI,
|
||||
name: '"${ZMAIL}"',
|
||||
link: '"${TWADD}"'
|
||||
}
|
||||
," >> ~/.zen/tmp/world.js
|
||||
|
||||
((floop++))
|
||||
done
|
||||
|
||||
# REMOVE la dernière virgule
|
||||
sed -i '$ d' ~/.zen/tmp/world.js
|
||||
##################################
|
||||
## FINISH LOCATIONS
|
||||
echo "
|
||||
};
|
||||
\$('#sphere').earth3d({
|
||||
locationsElement: \$('#locations'),
|
||||
dragElement: \$('#locations'),
|
||||
locations: locations
|
||||
});
|
||||
};
|
||||
" >> ~/.zen/tmp/world.js
|
||||
|
||||
IAMAP=$(ipfs add -qw ~/.zen/tmp/world.js | tail -n 1)
|
||||
echo "JSON UMAP WORLD READY /ipfs/${IAMAP}/world.js"
|
||||
###########################################################################################
|
||||
### APPLY ON APP MODEL
|
||||
SLAT="${LAT::-1}"
|
||||
SLON="${LON::-1}"
|
||||
SECTOR="_${SLAT}_${SLON}"
|
||||
TODATESECTORNS=$(${MY_PATH}/../tools/keygen -t ipfs "${TODATE}${UPLANETNAME}${SECTOR}" "${TODATE}${UPLANETNAME}${SECTOR}")
|
||||
|
||||
PHONEBOOTH="${G1PUB::30}"
|
||||
cat ${MY_PATH}/../templates/UPlanetUmap/index.html \
|
||||
| sed -e "s~_ZONE_~${UMAP}~g" \
|
||||
-e "s~QmYdWBx32dP14XcbXF7hhtDq7Uu6jFmDaRnuL5t7ARPYkW/index_fichiers/world.js~${IAMAP}/world.js~g" \
|
||||
-e "s~_ZONENS_~${TODATENS}~g" \
|
||||
-e "s~_ZCHAIN_~${ZCHAIN}~g" \
|
||||
-e "s~_IPFSNINJA_~${VDONINJA}~g" \
|
||||
-e "s~_HACKGIPFS_~${HACKGIPFS}~g" \
|
||||
-e "s~_UPZONE_~SECTOR ${SECTOR}~g" \
|
||||
-e "s~_UPZONENS_~${TODATESECTORNS}~g" \
|
||||
-e "s~_UPUPZONE_~REGION ${REGION}~g" \
|
||||
-e "s~_UPUPZONENS_~${TODATEREGIONNS}~g" \
|
||||
-e "s~_PHONEBOOTH_~${PHONEBOOTH}~g" \
|
||||
-e "s~_CESIUMIPFS_~${CESIUMIPFS}~g" \
|
||||
-e "s~_G1PUB_~${G1PUB}~g" \
|
||||
-e "s~_DATE_~$(date +%A-%d_%m_%Y)~g" \
|
||||
-e "s~_UPLANETLINK_~${EARTHCID}/map_render.html\?southWestLat=${LAT}\&southWestLon=${LON}\°=0.01~g" \
|
||||
-e "s~http://127.0.0.1:8080~~g" \
|
||||
> ~/.zen/tmp/${MOATS}/${UMAP}/_index.html
|
||||
|
||||
## Make it root App
|
||||
#~ mv ~/.zen/tmp/${MOATS}/${UMAP}/_index.html \
|
||||
#~ ~/.zen/tmp/${MOATS}/${UMAP}/index.html
|
||||
##################################
|
||||
|
||||
###########################################################################################
|
||||
########################################################
|
||||
## CREATE .all.json for RSS in this UMAP
|
||||
${MY_PATH}/../tools/json_dir.all.sh ~/.zen/tmp/${MOATS}/${UMAP}/RSS
|
||||
|
||||
##############################################################
|
||||
############################ PUBLISHING UMAP
|
||||
##############################################################
|
||||
UMAPROOT=$(ipfs add -rwHq ~/.zen/tmp/${MOATS}/${UMAP}/* | tail -n 1)
|
||||
|
||||
ZCHAIN=$(cat ~/.zen/tmp/${MOATS}/${UMAP}/${G1PUB}:ZEN/_chain | rev | cut -d ':' -f 1 | rev 2>/dev/null)
|
||||
ZMOATS=$(cat ~/.zen/tmp/${MOATS}/${UMAP}/${G1PUB}:ZEN/_moats 2>/dev/null)
|
||||
[[ ${ZCHAIN} && ${ZMOATS} ]] \
|
||||
&& cp ~/.zen/tmp/${MOATS}/${UMAP}/${G1PUB}:ZEN/_chain ~/.zen/tmp/${MOATS}/${UMAP}/${G1PUB}:ZEN/_chain.${ZMOATS} \
|
||||
&& echo "UPDATING MOATS=${MOATS}"
|
||||
|
||||
######################################################
|
||||
## ZEN CHAINING
|
||||
# Send 1 ZEN to UPlanet SECTORG1PUB Wallet containing REGION TW HASH
|
||||
INTERCOM="UPLANET:${UMAP}:${TODATE}:/ipfs/${UMAPROOT}"
|
||||
echo "> INTERCOM ${INTERCOM} (${ZEN} ZEN > 11 ?)"
|
||||
if [[ ${ZEN} -gt 11 ]]; then
|
||||
echo "---ZZZ-- UMAP 2 SECTOR ZEN CHAINING ---ZZZ------ZZZ----"
|
||||
${MY_PATH}/../tools/PAY4SURE.sh ~/.zen/tmp/${MOATS}/${UMAP}.dunikey "0.1" "${SECTORG1PUB}" "${INTERCOM}"
|
||||
fi
|
||||
|
||||
## MICRO LEDGER CHAIN CHANGED or INIT ?
|
||||
[[ ${ZCHAIN} != ${UMAPROOT} || ${ZCHAIN} == "" ]] \
|
||||
&& echo "${MOATS}:${IPFSNODEID}:${UMAPROOT}" > ~/.zen/tmp/${MOATS}/${UMAP}/${G1PUB}:ZEN/_chain \
|
||||
&& echo "${MOATS}" > ~/.zen/tmp/${MOATS}/${UMAP}/${G1PUB}:ZEN/_moats \
|
||||
&& UMAPROOT=$(ipfs add -rwHq ~/.zen/tmp/${MOATS}/${UMAP}/* | tail -n 1) \
|
||||
&& echo "ROOT was ${ZCHAIN}"
|
||||
|
||||
echo "PUBLISHING ${TODATE} UMAPROOT : ${myIPFS}/ipfs/${UMAPROOT}"
|
||||
|
||||
ipfs --timeout 300s name publish --key=${TODATE}${G1PUB} /ipfs/${UMAPROOT}
|
||||
end=`date +%s`
|
||||
echo "(UMAP) ${UMAP} ${TODATE} PUBLISH time was "`expr $end - $start` seconds.
|
||||
|
||||
ipfs key rm "${TODATE}${G1PUB}" "${YESTERDATE}${G1PUB}" "${G1PUB}" ## REMOVE IPNS KEY
|
||||
[[ ${ZCHAIN} != "" ]] && ipfs pin rm ${ZCHAIN}
|
||||
|
||||
rm ~/.zen/tmp/${MOATS}/*.priv
|
||||
rm ~/.zen/tmp/${MOATS}/${UMAP}.dunikey
|
||||
|
||||
done
|
||||
|
||||
|
||||
######################################################
|
||||
### LEVEL 2 ###########################################
|
||||
######################################################
|
||||
### SECTOR = 0.1° Planet Slice
|
||||
${MY_PATH}/SECTOR.refresh.sh "${unique_combined[@]}"
|
||||
${MY_PATH}/SECTOR.refresh.sh "${unique_combined[@]}"
|
||||
|
||||
######################################################
|
||||
### LEVEL 3 ###########################################
|
||||
######################################################
|
||||
### REGION = 1° Planet Slice
|
||||
${MY_PATH}/REGION.refresh.sh "${unique_combined[@]}"
|
||||
${MY_PATH}/REGION.refresh.sh "${unique_combined[@]}"
|
||||
######################################################
|
||||
|
||||
|
||||
######################################################
|
||||
exit 0
|
||||
######################################################
|
||||
|
|
|
@ -19,29 +19,32 @@ SALT="$1"
|
|||
PEPPER="$2"
|
||||
PLAYER="$3"
|
||||
PSEUDO="$4"
|
||||
[[ $PSEUDO == "" ]] && PSEUDO="Anonymous"
|
||||
|
||||
## Fill UP TW with VIDEO URL or UMAP NS
|
||||
URL="$5"
|
||||
LANG="$5"
|
||||
[[ $LANG == "" ]] && LANG="_LANG_"
|
||||
|
||||
## UPLANET SECTOR
|
||||
## UPLANET UMAP
|
||||
LAT="$6"
|
||||
[[ $LAT == "" ]] && LAT="0.00"
|
||||
LON="$7"
|
||||
[[ $LON == "" ]] && LON="0.00"
|
||||
|
||||
################################################################################
|
||||
YOU=$(myIpfsApi);
|
||||
LIBRA=$(head -n 2 ${MY_PATH}/../A_boostrap_nodes.txt | tail -n 1 | cut -d ' ' -f 2)
|
||||
################################################################################
|
||||
## LIST TW MODELS
|
||||
################################################################################
|
||||
TWMODEL="/ipfs/bafybeie6sx76balvpeehvbh5du7oc5fhjuwydryympeh3qnm5s3b2jrvwe"
|
||||
# ipfs cat $TWMODEL > templates/twdefault.html
|
||||
MINIMAL="/ipfs/bafybeicpfrsx44lkib4352eulvohmgdpaww3sau3qtbj7fzj6qw7xsokhy"
|
||||
# ipfs cat $MINIMAL > templates/twuplanet.html
|
||||
#~ TWMODEL="/ipfs/bafybeid7xwuqkgyiffehs77x3wky3dghjncxepr5ln6dewapgvbwrqi7n4"
|
||||
#~ # ipfs cat $TWMODEL > templates/twdefault.html
|
||||
TWUPLANET="/ipfs/bafybeigpwapdih24vnakummoyj6vodxiem4i6ezp5hxa35yt3paxpqz53y" ## WITH LIGHTBEAMS SAVER
|
||||
TWUPLANET="/ipfs/bafybeidxa45qgbf34p7uvmphj5zt6jp2zgpw7ouwb3e3urnbu4jrt2dgiq" ## WITH IPFS SAVER
|
||||
# ipfs cat $TWUPLANET > templates/twuplanet.html
|
||||
################################################################################
|
||||
|
||||
mkdir -p ~/.zen/tmp/${MOATS}/TW
|
||||
|
||||
## Chargement TW !!!
|
||||
## TEST chargement ONLINE TW !!!
|
||||
if [[ $SALT != "" && PEPPER != "" ]]; then
|
||||
|
||||
## Creating SALT/PEPPER IPNS KEY
|
||||
|
@ -51,59 +54,67 @@ if [[ $SALT != "" && PEPPER != "" ]]; then
|
|||
|
||||
echo "SCANNING /ipns/${ASTRONAUTENS} for 180s"
|
||||
## GETTING LAST TW via IPFS or HTTP GW
|
||||
[[ $YOU ]] \
|
||||
&& ipfs --timeout 180s cat /ipns/${ASTRONAUTENS} > ~/.zen/tmp/${MOATS}/TW/index.html
|
||||
ipfs --timeout 180s cat --progress=false /ipns/${ASTRONAUTENS} > ~/.zen/tmp/${MOATS}/TW/index.html
|
||||
|
||||
[[ $XDG_SESSION_TYPE == 'x11' || $XDG_SESSION_TYPE == 'wayland' ]] \
|
||||
&& [[ -s ~/.zen/tmp/${MOATS}/TW/index.html ]] \
|
||||
&& echo "TW FOUND ENTER 'yes' TO RESET TW. HIT ENTER TO KEEP IT." \
|
||||
&& read ENTER \
|
||||
&& [[ $ENTER != "" ]] && rm ~/.zen/tmp/${MOATS}/TW/index.html
|
||||
if [[ -s ~/.zen/tmp/${MOATS}/TW/index.html ]]; then
|
||||
echo "TW FOUND... BACKUP TIDDLERS"
|
||||
# BACKUP tiddlers
|
||||
tiddlywiki --load ~/.zen/tmp/${MOATS}/TW/index.html --output ~/.zen/tmp/${MOATS} \
|
||||
--render '.' 'backup.json' 'text/plain' '$:/core/templates/exporters/JsonFile' 'exportFilter' '[!is[system]]'
|
||||
|
||||
# EXTEND SEARCH IN WEB2.0
|
||||
#~ [[ ! -s ~/.zen/tmp/${MOATS}/TW/index.html ]] \
|
||||
#~ && echo "Trying curl on $LIBRA" \
|
||||
#~ && curl -m 30 -so ~/.zen/tmp/${MOATS}/TW/index.html "$LIBRA/ipns/${ASTRONAUTENS}"
|
||||
[[ -s ~/.zen/tmp/${MOATS}/backup.json ]] \
|
||||
&& echo ">> Tiddlers Backup : ~/.zen/tmp/${MOATS}/backup.json" \
|
||||
|| echo "ERROR EXTRACTING TIDDLERS"
|
||||
|
||||
rm ~/.zen/tmp/${MOATS}/TW/index.html
|
||||
fi
|
||||
|
||||
#############################################
|
||||
## AUCUN RESULTAT
|
||||
if [ ! -s ~/.zen/tmp/${MOATS}/TW/index.html ]; then
|
||||
## CREATE NEW TW FROM TEMPLATE
|
||||
cp ${MY_PATH}/../templates/twuplanet.html ~/.zen/tmp/${MOATS}/TW/index.html
|
||||
|
||||
# COPY TW TEMPLATE
|
||||
[[ ${LON} && ${LAT} ]] \
|
||||
&& cp ${MY_PATH}/../templates/twuplanet.html ~/.zen/tmp/${MOATS}/TW/index.html \
|
||||
|| cp ${MY_PATH}/../templates/twdefault.html ~/.zen/tmp/${MOATS}/TW/index.html
|
||||
#### REFILL WITH BACKUP
|
||||
if [[ -s ~/.zen/tmp/${MOATS}/backup.json ]]; then
|
||||
|
||||
else
|
||||
tiddlywiki --load ~/.zen/tmp/${MOATS}/TW/index.html \
|
||||
--import ~/.zen/tmp/${MOATS}/backup.json "application/json" \
|
||||
--output ~/.zen/tmp/${MOATS} --render "$:/core/save/all" "tw.html" "text/plain"
|
||||
|
||||
[[ -s ~/.zen/tmp/${MOATS}/tw.html ]] \
|
||||
&& cp -f ~/.zen/tmp/${MOATS}/tw.html ~/.zen/tmp/${MOATS}/TW/index.html
|
||||
|
||||
echo "BACKUP RESTORED"
|
||||
fi
|
||||
#############################################
|
||||
# EXISTING TW : DATA TESTING & CACHE
|
||||
rm -f ~/.zen/tmp/${MOATS}/Astroport.json
|
||||
tiddlywiki --load ~/.zen/tmp/${MOATS}/TW/index.html --output ~/.zen/tmp/${MOATS} --render '.' 'Astroport.json' 'text/plain' '$:/core/templates/exporters/JsonFile' 'exportFilter' 'Astroport'
|
||||
ASTROPORT=$(cat ~/.zen/tmp/${MOATS}/Astroport.json | jq -r .[].astroport)
|
||||
echo "ASTROPORT=${ASTROPORT}"
|
||||
tiddlywiki --load ~/.zen/tmp/${MOATS}/TW/index.html --output ~/.zen/tmp/${MOATS} --render '.' 'AstroID.json' 'text/plain' '$:/core/templates/exporters/JsonFile' 'exportFilter' 'AstroID'
|
||||
AstroID=$(cat ~/.zen/tmp/${MOATS}/AstroID.json | jq -r .[]._canonical_uri)
|
||||
HPass=$(cat ~/.zen/tmp/${MOATS}/AstroID.json | jq -r .[].HPASS)
|
||||
echo "AstroID=$AstroID ($HPass)"
|
||||
tiddlywiki --load ~/.zen/tmp/${MOATS}/TW/index.html --output ~/.zen/tmp/${MOATS} --render '.' 'ZenCard.json' 'text/plain' '$:/core/templates/exporters/JsonFile' 'exportFilter' 'ZenCard'
|
||||
ZenCard=$(cat ~/.zen/tmp/${MOATS}/ZenCard.json | jq -r .[]._canonical_uri)
|
||||
echo "ZenCard=$ZenCard"
|
||||
rm -f ~/.zen/tmp/${MOATS}/Astroport.json
|
||||
tiddlywiki --load ~/.zen/tmp/${MOATS}/TW/index.html --output ~/.zen/tmp/${MOATS} --render '.' 'Astroport.json' 'text/plain' '$:/core/templates/exporters/JsonFile' 'exportFilter' 'Astroport'
|
||||
ASTROPORT=$(cat ~/.zen/tmp/${MOATS}/Astroport.json | jq -r .[].astroport)
|
||||
HPass=$(cat ~/.zen/tmp/${MOATS}/Astroport.json | jq -r .[].HPASS)
|
||||
echo "ASTROPORT=${ASTROPORT}"
|
||||
tiddlywiki --load ~/.zen/tmp/${MOATS}/TW/index.html --output ~/.zen/tmp/${MOATS} --render '.' 'AstroID.json' 'text/plain' '$:/core/templates/exporters/JsonFile' 'exportFilter' 'AstroID'
|
||||
AstroID=$(cat ~/.zen/tmp/${MOATS}/AstroID.json | jq -r .[]._canonical_uri) ## Can be deleted
|
||||
[[ -z $HPass ]] && HPass=$(cat ~/.zen/tmp/${MOATS}/AstroID.json | jq -r .[].HPASS) ## Double HPASS
|
||||
echo "AstroID=$AstroID ($HPass)"
|
||||
tiddlywiki --load ~/.zen/tmp/${MOATS}/TW/index.html --output ~/.zen/tmp/${MOATS} --render '.' 'ZenCard.json' 'text/plain' '$:/core/templates/exporters/JsonFile' 'exportFilter' 'ZenCard'
|
||||
ZenCard=$(cat ~/.zen/tmp/${MOATS}/ZenCard.json | jq -r .[]._canonical_uri)
|
||||
echo "ZenCard=$ZenCard"
|
||||
|
||||
if [[ ${ASTROPORT} != "" && ${ASTROPORT} != "null" ]]; then
|
||||
if [[ ${ASTROPORT} != "" && ${ASTROPORT} != "null" ]]; then
|
||||
|
||||
IPNSTAIL=$(echo ${ASTROPORT} | rev | cut -f 1 -d '/' | rev) # Remove "/ipns/" part
|
||||
echo "TW ASTROPORT GATEWAY : ${ASTROPORT}"
|
||||
echo "---> CONNECTING PLAYER $(cat ~/.zen/tmp/${MOATS}/Astroport.json | jq -r .[].pseudo) TW NOW with $IPFSNODEID"
|
||||
IPNSTAIL=$(echo ${ASTROPORT} | rev | cut -f 1 -d '/' | rev) # Remove "/ipns/" part
|
||||
echo "TW ASTROPORT GATEWAY : ${ASTROPORT}"
|
||||
echo "---> CONNECTING PLAYER $(cat ~/.zen/tmp/${MOATS}/Astroport.json | jq -r .[].pseudo) TW NOW with $IPFSNODEID"
|
||||
|
||||
else
|
||||
else
|
||||
|
||||
echo ">> NO ACTIVE TW - CREATING FRESH NEW ONE"
|
||||
cp ${MY_PATH}/../templates/twdefault.html ~/.zen/tmp/${MOATS}/TW/index.html
|
||||
|
||||
fi
|
||||
echo ">> NO ACTIVE TW - CREATING FRESH NEW ONE"
|
||||
cp ${MY_PATH}/../templates/twuplanet.html ~/.zen/tmp/${MOATS}/TW/index.html
|
||||
|
||||
fi
|
||||
|
||||
|
||||
|
||||
ipfs key rm ${MOATS} 2>/dev/null ## CLEANING MOATS KEY
|
||||
|
||||
fi
|
||||
|
@ -124,7 +135,7 @@ fi
|
|||
[[ $SALT == "" ]] && SALT=$(${MY_PATH}/../tools/diceware.sh 4 | xargs)
|
||||
#~ echo "-> ID : $SALT"
|
||||
|
||||
[[ $PEPPER == "" ]] && PEPPER=$(${MY_PATH}/../tools/diceware.sh 2 | xargs)
|
||||
[[ $PEPPER == "" ]] && PEPPER=$(${MY_PATH}/../tools/diceware.sh 4 | xargs)
|
||||
#~ echo "-> PASS : $PEPPER"
|
||||
|
||||
[[ ! $PSEUDO ]] && PSEUDO=${PLAYER%%[0-9]*}
|
||||
|
@ -132,8 +143,9 @@ fi
|
|||
[[ $(ls ~/.zen/game/players/$PSEUDO 2>/dev/null) ]] && echo "$PSEUDO EST DEJA UN PLAYER. EXIT" && exit 1
|
||||
|
||||
# PSEUDO=${PSEUDO,,} #lowercase
|
||||
[[ ! ${PLAYER} ]] && PLAYER=${PSEUDO}${RANDOM:0:3}@$(${MY_PATH}/../tools/diceware.sh 1 | xargs).${RANDOM:0:3} \
|
||||
&& echo "ADRESSE EMAIL ?" && read OPLAYER && [[ $OPLAYER ]] && PLAYER=$OPLAYER
|
||||
[[ ! ${PLAYER} ]] \
|
||||
&& PLAYER=${PSEUDO}${RANDOM:0:3}@$(${MY_PATH}/../tools/diceware.sh 1 | xargs).${RANDOM:0:3} \
|
||||
&& echo "ADRESSE EMAIL ?" && read OPLAYER && [[ $OPLAYER ]] && PLAYER=$OPLAYER ## CLI MODE
|
||||
|
||||
PLAYER=${PLAYER,,}
|
||||
|
||||
|
@ -141,336 +153,330 @@ PLAYER=${PLAYER,,}
|
|||
PASS=$(echo "${RANDOM}${RANDOM}${RANDOM}${RANDOM}" | tail -c-5)
|
||||
|
||||
############################################################
|
||||
######### TODO Ajouter d'autres clefs IPNS, GPG ?
|
||||
# MOANS=$(ipfs key gen moa_${PLAYER})
|
||||
# MOAKEYFILE=$(${MY_PATH}/give_me_keystore_filename.py "moa_${PLAYER}")
|
||||
# echo "Coffre personnel multimedia journalisé dans votre 'Astroport' (amis de niveau 3)"
|
||||
# echo "Votre clef moa_${PLAYER} <=> $MOANS ($MOAKEYFILE)"; sleep 2
|
||||
############################################################
|
||||
|
||||
${MY_PATH}/../tools/keygen -t duniter -o ~/.zen/tmp/${MOATS}/secret.dunikey "$SALT" "$PEPPER"
|
||||
|
||||
G1PUB=$(cat ~/.zen/tmp/${MOATS}/secret.dunikey | grep 'pub:' | cut -d ' ' -f 2)
|
||||
|
||||
[[ ! $G1PUB ]] && echo "Désolé. clef Cesium absente. ERROR" && exit 1
|
||||
|
||||
## CREATE Player personnal files storage and IPFS publish directory
|
||||
mkdir -p ~/.zen/game/players/${PLAYER}/.ipfs # Prepare PLAYER datastructure
|
||||
echo "/ip4/127.0.0.1/tcp/5001" > ~/.zen/game/players/${PLAYER}/.ipfs/api
|
||||
## CREATE Player personnal files storage and IPFS publish directory
|
||||
mkdir -p ~/.zen/game/players/${PLAYER}/.ipfs # Prepare PLAYER datastructure
|
||||
echo "/ip4/127.0.0.1/tcp/5001" > ~/.zen/game/players/${PLAYER}/.ipfs/api
|
||||
|
||||
# PLAYER=geg-la_debrouille@super.chez-moi.com
|
||||
YUSER=$(echo ${PLAYER} | cut -d '@' -f1) # YUSER=geg-la_debrouille
|
||||
LYUSER=($(echo "$YUSER" | sed 's/[^a-zA-Z0-9]/\ /g')) # LYUSER=(geg la debrouille)
|
||||
CLYUSER=$(printf '%s\n' "${LYUSER[@]}" | tac | tr '\n' '.' ) # CLYUSER=debrouille.la.geg.
|
||||
YOMAIN=$(echo ${PLAYER} | cut -d '@' -f 2) # YOMAIN=super.chez-moi.com
|
||||
# echo "NEXT STYLE GW : https://ipfs.$CLYUSER$YOMAIN.$(myHostName)"
|
||||
# echo "MY PLAYER API GW : $(myPlayerApiGw)"
|
||||
## secret.june = SALT PEPPER CREDENTIALS
|
||||
echo "SALT=\"$SALT\"" > ~/.zen/game/players/${PLAYER}/secret.june
|
||||
echo "PEPPER=\"$PEPPER\"" >> ~/.zen/game/players/${PLAYER}/secret.june
|
||||
####
|
||||
## MOVE ${MOATS} secret.dunikey IN PLAYER DIRECTORY
|
||||
mv ~/.zen/tmp/${MOATS}/secret.dunikey ~/.zen/game/players/${PLAYER}/
|
||||
|
||||
NID="${myIPFS}"
|
||||
WID="https://ipfs.$CLYUSER$YOMAIN.$(myHostName)/api" ## Next Generation API # TODO PLAYER IPFS Docker entrance
|
||||
WID="https://ipfs.$(myHostName)/api"
|
||||
WID="https://ipfs.$(myHostName)/api"
|
||||
WID="${myAPI}" ## https://ipfs.libra.copylaradio.com
|
||||
|
||||
# WID="http://ipfs.$(myHostName):5001"
|
||||
[[ $isLAN ]] && NID="http://ipfs.localhost:8080" \
|
||||
&& WID="http://ipfs.localhost:5001"
|
||||
|
||||
# Create ${PLAYER} "IPNS Key"
|
||||
ipfs key rm ${PLAYER} >/dev/null 2>&1
|
||||
ipfs key rm ${G1PUB} >/dev/null 2>&1
|
||||
${MY_PATH}/../tools/keygen -t ipfs -o ~/.zen/game/players/${PLAYER}/secret.player "$SALT" "$PEPPER"
|
||||
TWNS=$(ipfs key import ${PLAYER} -f pem-pkcs8-cleartext ~/.zen/game/players/${PLAYER}/secret.player)
|
||||
ASTRONAUTENS=$(ipfs key import ${G1PUB} -f pem-pkcs8-cleartext ~/.zen/game/players/${PLAYER}/secret.player)
|
||||
|
||||
## TODO MAKE CLEANER
|
||||
mkdir -p ~/.zen/game/players/${PLAYER}/ipfs/G1SSB # Prepare astrXbian sub-datastructure "old scarf code"
|
||||
qrencode -s 12 -o ~/.zen/game/players/${PLAYER}/QR.png "$G1PUB" ## Check by VISA.print.sh
|
||||
cp ~/.zen/game/players/${PLAYER}/QR.png ~/.zen/game/players/${PLAYER}/ipfs/QR.png
|
||||
echo "$G1PUB" > ~/.zen/game/players/${PLAYER}/ipfs/G1SSB/_g1.pubkey # G1SSB NOTATION (astrXbian compatible)
|
||||
qrencode -s 12 -o ~/.zen/game/players/${PLAYER}/QR.ASTRONAUTENS.png "$myLIBRA/ipns/${ASTRONAUTENS}"
|
||||
|
||||
############################################################################
|
||||
## SEC PASS PROTECTED QRCODE : base58 secret.june / openssl(pass)
|
||||
#~ secFromDunikey=$(cat ~/.zen/game/players/${PLAYER}/secret.dunikey | grep "sec" | cut -d ' ' -f2)
|
||||
#~ echo "$secFromDunikey" > ~/.zen/tmp/${MOATS}/${PSEUDO}.sec
|
||||
|
||||
USALT=$(echo "$SALT" | jq -Rr @uri)
|
||||
UPEPPER=$(echo "$PEPPER" | jq -Rr @uri)
|
||||
DISCO="/?salt=${USALT}&pepper=${UPEPPER}"
|
||||
|
||||
[[ $isLAN ]] && NID="http://ipfs.localhost:8080" \
|
||||
&& WID="http://ipfs.localhost:5001"
|
||||
## PGP ENCODING SALT/PEPPER API ACCESS
|
||||
echo "${DISCO}" > ~/.zen/tmp/${MOATS}/topgp
|
||||
cat ~/.zen/tmp/${MOATS}/topgp | gpg --symmetric --armor --batch --passphrase "$PASS" -o ~/.zen/tmp/${MOATS}/gpg.${PSEUDO}.asc
|
||||
rm ~/.zen/tmp/${MOATS}/topgp
|
||||
#~ openssl enc -aes-256-cbc -md sha512 -pbkdf2 -iter 100000 -salt -in ~/.zen/game/players/${PLAYER}/secret.june -out "$HOME/.zen/tmp/${MOATS}/enc.${PSEUDO}.sec" -k "$PASS"
|
||||
#~ PASsec=$(cat ~/.zen/tmp/${MOATS}/enc.${PSEUDO}.sec | base64 -w 0 | jq -sRr '@uri' )
|
||||
#~ HPass=$(echo "$PASS" | sha512sum | cut -d ' ' -f 1)
|
||||
#~ qrencode -s 12 -o $HOME/.zen/game/players/${PLAYER}/QRsec.png $PASsec
|
||||
|
||||
####
|
||||
## Add logo to QRCode
|
||||
cp ${MY_PATH}/../images/astrologo_nb.png ~/.zen/tmp/${MOATS}/fond.png
|
||||
|
||||
mv ~/.zen/tmp/${MOATS}/secret.dunikey ~/.zen/game/players/${PLAYER}/
|
||||
## ASTROID ~~~~~
|
||||
ASTROIDQR="$(cat ~/.zen/tmp/${MOATS}/gpg.${PSEUDO}.asc | tr '-' '~' | tr '\n' '-' | tr '+' '_' | jq -Rr @uri )"
|
||||
## MAKE amzqr ASTROID PGP QRCODE
|
||||
amzqr "${ASTROIDQR}" \
|
||||
-d ~/.zen/tmp/${MOATS} \
|
||||
-l H \
|
||||
-p ~/.zen/tmp/${MOATS}/fond.png 1>/dev/null
|
||||
|
||||
# Create Player "IPNS Key" (key import)
|
||||
ipfs key rm ${PLAYER}
|
||||
${MY_PATH}/../tools/keygen -t ipfs -o ~/.zen/game/players/${PLAYER}/secret.player "$SALT" "$PEPPER"
|
||||
TWNS=$(ipfs key import ${PLAYER} -f pem-pkcs8-cleartext ~/.zen/game/players/${PLAYER}/secret.player)
|
||||
ASTRONAUTENS=$(ipfs key import $G1PUB -f pem-pkcs8-cleartext ~/.zen/game/players/${PLAYER}/secret.player)
|
||||
## ADD PLAYER EMAIL
|
||||
convert -gravity northwest -pointsize 28 -fill black -draw "text 5,5 \"$PLAYER\"" ~/.zen/tmp/${MOATS}/fond_qrcode.png ~/.zen/game/players/${PLAYER}/result_qrcode.png
|
||||
convert ~/.zen/game/players/${PLAYER}/result_qrcode.png -resize 480 ~/.zen/game/players/${PLAYER}/AstroID.png
|
||||
|
||||
mkdir -p ~/.zen/game/players/${PLAYER}/ipfs/G1SSB # Prepare astrXbian sub-datastructure "old scarf code"
|
||||
ASTROQR="/ipfs/$(ipfs add -q $HOME/.zen/game/players/${PLAYER}/AstroID.png | tail -n 1)"
|
||||
|
||||
qrencode -s 12 -o ~/.zen/game/players/${PLAYER}/QR.png "$G1PUB"
|
||||
cp ~/.zen/game/players/${PLAYER}/QR.png ~/.zen/game/players/${PLAYER}/ipfs/QR.png
|
||||
echo "$G1PUB" > ~/.zen/game/players/${PLAYER}/ipfs/G1SSB/_g1.pubkey # G1SSB NOTATION (astrXbian compatible)
|
||||
|
||||
qrencode -s 12 -o ~/.zen/game/players/${PLAYER}/QR.ASTRONAUTENS.png "$myLIBRA/ipns/${ASTRONAUTENS}"
|
||||
|
||||
############################################################################
|
||||
## SEC PASS PROTECTED QRCODE : base58 secret.june / openssl(pass)
|
||||
#~ secFromDunikey=$(cat ~/.zen/game/players/${PLAYER}/secret.dunikey | grep "sec" | cut -d ' ' -f2)
|
||||
#~ echo "$secFromDunikey" > ~/.zen/tmp/${MOATS}/${PSEUDO}.sec
|
||||
|
||||
## PGP ENCODING SALT/PEPPER API ACCESS
|
||||
echo "${DISCO}" > ~/.zen/tmp/${MOATS}/topgp
|
||||
cat ~/.zen/tmp/${MOATS}/topgp | gpg --symmetric --armor --batch --passphrase "$PASS" -o ~/.zen/tmp/${MOATS}/gpg.${PSEUDO}.asc
|
||||
rm ~/.zen/tmp/${MOATS}/topgp
|
||||
#~ openssl enc -aes-256-cbc -md sha512 -pbkdf2 -iter 100000 -salt -in ~/.zen/game/players/${PLAYER}/secret.june -out "$HOME/.zen/tmp/${MOATS}/enc.${PSEUDO}.sec" -k "$PASS"
|
||||
#~ PASsec=$(cat ~/.zen/tmp/${MOATS}/enc.${PSEUDO}.sec | base64 -w 0 | jq -sRr '@uri' )
|
||||
#~ HPass=$(echo "$PASS" | sha512sum | cut -d ' ' -f 1)
|
||||
#~ qrencode -s 12 -o $HOME/.zen/game/players/${PLAYER}/QRsec.png $PASsec
|
||||
|
||||
## Add logo to QRCode
|
||||
cp ${MY_PATH}/../images/astrologo_nb.png ~/.zen/tmp/${MOATS}/fond.png
|
||||
|
||||
## ASTROID ~~~~~ || &&&&&
|
||||
ASTROIDQR="$(cat ~/.zen/tmp/${MOATS}/gpg.${PSEUDO}.asc | tr '-' '~' | tr '\n' '-' | tr '+' '_' | jq -Rr @uri )"
|
||||
[[ ${PSEUDO} == "UPlanet" ]] && ASTROIDQR="$(cat ~/.zen/tmp/${MOATS}/gpg.${PSEUDO}.asc | tr '-' '&' | tr '\n' '-' | tr '+' '_' | jq -Rr @uri )"
|
||||
## MAKE amzqr ASTROID PGP QRCODE
|
||||
amzqr "${ASTROIDQR}" \
|
||||
-d ~/.zen/tmp/${MOATS} \
|
||||
-l H \
|
||||
-p ~/.zen/tmp/${MOATS}/fond.png 1>/dev/null
|
||||
|
||||
## ADD PLAYER EMAIL
|
||||
convert -gravity northwest -pointsize 28 -fill black -draw "text 5,5 \"$PLAYER\"" ~/.zen/tmp/${MOATS}/fond_qrcode.png ~/.zen/game/players/${PLAYER}/result_qrcode.png
|
||||
convert ~/.zen/game/players/${PLAYER}/result_qrcode.png -resize 480 ~/.zen/game/players/${PLAYER}/AstroID.png
|
||||
|
||||
ASTROQR="/ipfs/$(ipfs add -q $HOME/.zen/game/players/${PLAYER}/AstroID.png | tail -n 1)"
|
||||
## DO NOT PIN ASTROID QRCODE
|
||||
ipfs pin rm ${ASTROQR}
|
||||
|
||||
############################################################################ TW
|
||||
### INITALISATION WIKI dans leurs répertoires de publication IPFS
|
||||
mkdir -p ~/.zen/game/players/${PLAYER}/ipfs/moa/
|
||||
### INITALISATION WIKI dans leurs répertoires de publication IPFS
|
||||
mkdir -p ~/.zen/game/players/${PLAYER}/ipfs/moa/
|
||||
|
||||
[[ ! -s ~/.zen/tmp/${MOATS}/TW/index.html ]] && cp ${MY_PATH}/../templates/twdefault.html ~/.zen/tmp/${MOATS}/TW/index.html
|
||||
sed "s~_BIRTHDATE_~${MOATS}~g" ~/.zen/tmp/${MOATS}/TW/index.html > ~/.zen/game/players/${PLAYER}/ipfs/moa/index.html
|
||||
[[ ! -s ~/.zen/tmp/${MOATS}/TW/index.html ]] \
|
||||
&& cp ${MY_PATH}/../templates/twuplanet.html ~/.zen/tmp/${MOATS}/TW/index.html
|
||||
|
||||
# INSERT ASTROPORT ADDRESS
|
||||
tiddlywiki --load ~/.zen/game/players/${PLAYER}/ipfs/moa/index.html --output ~/.zen/tmp/${MOATS} --render '.' 'Astroport.json' 'text/plain' '$:/core/templates/exporters/JsonFile' 'exportFilter' 'Astroport'
|
||||
ASTROPORT=$(cat ~/.zen/tmp/${MOATS}/Astroport.json | jq -r .[].astroport)
|
||||
sed -i "s~${ASTROPORT}~/ipns/${IPFSNODEID}~g" ~/.zen/game/players/${PLAYER}/ipfs/moa/index.html
|
||||
sed "s~_BIRTHDATE_~${MOATS}~g" ~/.zen/tmp/${MOATS}/TW/index.html \
|
||||
> ~/.zen/game/players/${PLAYER}/ipfs/moa/index.html
|
||||
|
||||
# TW CHAIN INIT WITH TWMODEL
|
||||
sed -i "s~_MOATS_~${MOATS}~g" ~/.zen/game/players/${PLAYER}/ipfs/moa/index.html
|
||||
sed -i "s~_CHAIN_~${TWMODEL}~g" ~/.zen/game/players/${PLAYER}/ipfs/moa/index.html
|
||||
sed -i "s~_TWMODEL_~${TWMODEL}~g" ~/.zen/game/players/${PLAYER}/ipfs/moa/index.html
|
||||
sed -i "s~_TW_~/ipns/${ASTRONAUTENS}~g" ~/.zen/game/players/${PLAYER}/ipfs/moa/index.html
|
||||
# INSERT ASTROPORT ADDRESS
|
||||
tiddlywiki --load ~/.zen/game/players/${PLAYER}/ipfs/moa/index.html --output ~/.zen/tmp/${MOATS} --render '.' 'Astroport.json' 'text/plain' '$:/core/templates/exporters/JsonFile' 'exportFilter' 'Astroport'
|
||||
ASTROPORT=$(cat ~/.zen/tmp/${MOATS}/Astroport.json | jq -r .[].astroport)
|
||||
sed -i "s~${ASTROPORT}~/ipns/${IPFSNODEID}~g" ~/.zen/game/players/${PLAYER}/ipfs/moa/index.html
|
||||
|
||||
## AND HACK QRCODE.sh FOR _PGP KEY_ TO VERIFY LAST HASH OF PROVIDED PASS
|
||||
HPASS=$(echo $PASS | sha512sum | cut -d ' ' -f 1)
|
||||
[[ ${HPass} != "" ]] && SRCPASS=${HPass} || SRCPASS="_HPASS_"
|
||||
sed -i "s~${SRCPASS}~${HPASS}~g" ~/.zen/game/players/${PLAYER}/ipfs/moa/index.html
|
||||
# TW CHAIN INIT WITH TWMODEL
|
||||
sed -i "s~_MOATS_~${MOATS}~g" ~/.zen/game/players/${PLAYER}/ipfs/moa/index.html
|
||||
sed -i "s~_CHAIN_~${TWUPLANET}~g" ~/.zen/game/players/${PLAYER}/ipfs/moa/index.html
|
||||
sed -i "s~_TWMODEL_~${TWUPLANET}~g" ~/.zen/game/players/${PLAYER}/ipfs/moa/index.html
|
||||
sed -i "s~_ASTRONAUTENS_~/ipns/${ASTRONAUTENS}~g" ~/.zen/game/players/${PLAYER}/ipfs/moa/index.html
|
||||
|
||||
## RESET WISHES TO DEPLOY DERIVATED KEYS ON HOST AGAIN ( DONE IN PLAYER_REFRESH )
|
||||
#~ sed -i "s~G1Voeu~voeu~g" ~/.zen/game/players/${PLAYER}/ipfs/moa/index.html
|
||||
## AND HACK QRCODE.sh FOR _PGP KEY_ TO VERIFY LAST HASH OF PROVIDED PASS
|
||||
HPASS=$(echo $PASS | sha512sum | cut -d ' ' -f 1)
|
||||
[[ ${HPass} != "" && ${HPass} != "null" ]] && SRCPASS=${HPass} || SRCPASS="_HPASS_"
|
||||
sed -i "s~${SRCPASS}~${HPASS}~g" ~/.zen/game/players/${PLAYER}/ipfs/moa/index.html
|
||||
|
||||
## Fill ♥BOX - CopierYoutube Tiddler
|
||||
sed -i "s~_URL_~${URL}~g" ~/.zen/game/players/${PLAYER}/ipfs/moa/index.html
|
||||
## RESET WISHES TO DEPLOY DERIVATED KEYS ON HOST AGAIN ( DONE IN PLAYER_REFRESH )
|
||||
#~ sed -i "s~G1Voeu~voeu~g" ~/.zen/game/players/${PLAYER}/ipfs/moa/index.html
|
||||
|
||||
# INSERT PLAYER DATA
|
||||
sed -i "s~_PLAYER_~${PLAYER}~g" ~/.zen/game/players/${PLAYER}/ipfs/moa/index.html
|
||||
sed -i "s~_PSEUDO_~${PSEUDO}~g" ~/.zen/game/players/${PLAYER}/ipfs/moa/index.html
|
||||
sed -i "s~_WISHKEY_~${G1PUB}~g" ~/.zen/game/players/${PLAYER}/ipfs/moa/index.html
|
||||
# INSERT PLAYER DATA
|
||||
CURRENT=$(readlink ~/.zen/game/players/.current | rev | cut -d '/' -f 1 | rev)
|
||||
[[ -z ${CURRENT} ]] && CURRENT=${PLAYER}
|
||||
sed -i "s~_PLAYER_~${PLAYER}~g" ~/.zen/game/players/${PLAYER}/ipfs/moa/index.html
|
||||
sed -i "s~_CURRENT_~${CURRENT}~g" ~/.zen/game/players/${PLAYER}/ipfs/moa/index.html
|
||||
sed -i "s~_PSEUDO_~${PSEUDO}~g" ~/.zen/game/players/${PLAYER}/ipfs/moa/index.html
|
||||
sed -i "s~_G1PUB_~${G1PUB}~g" ~/.zen/game/players/${PLAYER}/ipfs/moa/index.html
|
||||
#~ sed -i "s~_QRSEC_~${PASsec}~g" ~/.zen/game/players/${PLAYER}/ipfs/moa/index.html
|
||||
|
||||
sed -i "s~_G1PUB_~${G1PUB}~g" ~/.zen/game/players/${PLAYER}/ipfs/moa/index.html
|
||||
#~ sed -i "s~_QRSEC_~${PASsec}~g" ~/.zen/game/players/${PLAYER}/ipfs/moa/index.html
|
||||
# La Clef IPNS porte comme nom G1PUB et ${PLAYER}
|
||||
sed -i "s~_MEDIAKEY_~${PLAYER}~g" ~/.zen/game/players/${PLAYER}/ipfs/moa/index.html
|
||||
sed -i "s~k2k4r8kxfnknsdf7tpyc46ks2jb3s9uvd3lqtcv9xlq9rsoem7jajd75~${ASTRONAUTENS}~g" ~/.zen/game/players/${PLAYER}/ipfs/moa/index.html
|
||||
|
||||
ASTRONAUTENS=$(ipfs key list -l | grep -w "${PLAYER}" | cut -d ' ' -f 1)
|
||||
# La Clef IPNS porte comme nom G1PUB et ${PLAYER}
|
||||
sed -i "s~_MEDIAKEY_~${PLAYER}~g" ~/.zen/game/players/${PLAYER}/ipfs/moa/index.html
|
||||
sed -i "s~k2k4r8kxfnknsdf7tpyc46ks2jb3s9uvd3lqtcv9xlq9rsoem7jajd75~${ASTRONAUTENS}~g" ~/.zen/game/players/${PLAYER}/ipfs/moa/index.html
|
||||
|
||||
sed -i "s~_ASTRONAUTENS_~/ipns/${ASTRONAUTENS}~g" ~/.zen/game/players/${PLAYER}/ipfs/moa/index.html
|
||||
## AstroID Tiddler UPGRADE
|
||||
cat ${MY_PATH}/../templates/data/AstroID.json \
|
||||
| sed -e "s~/ipfs/bafybeifbebc3ewnzrzbm44arddedbralegnxklhua5d5ymzaqtf2kaub7i~${ASTROQR}~g" \
|
||||
-e "s~_PLAYER_~${PLAYER}~g" \
|
||||
-e "s~_MOATS_~${MOATS}~g" \
|
||||
-e "s~_G1PUB_~${G1PUB}~g" \
|
||||
-e "s~_ASTRONAUTENS_~${ASTRONAUTENS}~g" \
|
||||
-e "s~_HPASS_~${HPASS}~g" \
|
||||
> ~/.zen/tmp/${MOATS}/AstroID.json
|
||||
|
||||
## AstroID Tiddler UPGRADE
|
||||
cat ${MY_PATH}/../templates/data/AstroID.json \
|
||||
| sed -e "s~/ipfs/bafybeifbebc3ewnzrzbm44arddedbralegnxklhua5d5ymzaqtf2kaub7i~${ASTROQR}~g" \
|
||||
-e "s~_PLAYER_~${PLAYER}~g" \
|
||||
-e "s~_G1PUB_~${G1PUB}~g" \
|
||||
-e "s~_ASTRONAUTENS_~${ASTRONAUTENS}~g" \
|
||||
-e "s~_HPASS_~${HPASS}~g" \
|
||||
> ~/.zen/tmp/${MOATS}/AstroID.json
|
||||
sed -i "s~tube.copylaradio.com~$myTUBE~g" ~/.zen/game/players/${PLAYER}/ipfs/moa/index.html
|
||||
sed -i "s~ipfs.copylaradio.com~$myTUBE~g" ~/.zen/game/players/${PLAYER}/ipfs/moa/index.html
|
||||
|
||||
sed -i "s~${AstroID}~${ASTROQR}~g" ~/.zen/game/players/${PLAYER}/ipfs/moa/index.html ## NOT CYPHERED AstroID
|
||||
## PREPARE UMAP LAT LON replacement
|
||||
[[ ! ${LAT} ]] && LAT="0.00"
|
||||
[[ ! ${LON} ]] && LON="0.00"
|
||||
|
||||
sed -i "s~tube.copylaradio.com~$myTUBE~g" ~/.zen/game/players/${PLAYER}/ipfs/moa/index.html
|
||||
sed -i "s~ipfs.copylaradio.com~$myTUBE~g" ~/.zen/game/players/${PLAYER}/ipfs/moa/index.html
|
||||
SECTOR="_${LAT::-1}_${LON::-1}" ### SECTOR = 0.1° Planet Slice in MadeInZion Tiddler
|
||||
echo "UPlanet 0.1° SECTOR : ${SECTOR}"
|
||||
PLAYERONE=($(ls -t ~/.zen/game/players/ | grep "@" 2>/dev/null))
|
||||
sed -i "s~_SECTOR_~${SECTOR}~g" ~/.zen/game/players/${PLAYER}/ipfs/moa/index.html ## MadeInZion
|
||||
sed -i "s~_DAO_~${LANG}~g" ~/.zen/game/players/${PLAYER}/ipfs/moa/index.html ## MadeInZion
|
||||
sed -i "s~_NUMBER_~${#PLAYERONE[@]}~g" ~/.zen/game/players/${PLAYER}/ipfs/moa/index.html ## MadeInZion
|
||||
|
||||
## PREPARE UMAP LAT LON replacement
|
||||
[[ ! ${LAT} ]] && LAT="0.00"
|
||||
[[ ! ${LON} ]] && LON="0.00"
|
||||
UMAP=${URL}
|
||||
[[ ! $(echo ${UMAP} | grep "/ipns/") ]] && UMAP="/ipns/k51qzi5uqu5djg1gqzujq5p60w25mi235gdg0lgkk5qztkfrpi5c22oolrriyu" ## DEFAULT = 0.00
|
||||
# GET ACTUAL GPS VALUES
|
||||
tiddlywiki --load ~/.zen/game/players/${PLAYER}/ipfs/moa/index.html \
|
||||
--output ~/.zen/tmp/${MOATS} \
|
||||
--render '.' 'GPS.json' 'text/plain' '$:/core/templates/exporters/JsonFile' 'exportFilter' 'GPS'
|
||||
|
||||
if [[ ${LAT} && ${LON} ]]; then
|
||||
# GET ACTUAL GPS VALUES
|
||||
tiddlywiki --load ~/.zen/game/players/${PLAYER}/ipfs/moa/index.html --output ~/.zen/tmp/${MOATS} --render '.' 'GPS.json' 'text/plain' '$:/core/templates/exporters/JsonFile' 'exportFilter' 'GPS'
|
||||
OLAT=$(cat ~/.zen/tmp/${MOATS}/GPS.json | jq -r .[].lat)
|
||||
OLON=$(cat ~/.zen/tmp/${MOATS}/GPS.json | jq -r .[].lon)
|
||||
OUMAP=$(cat ~/.zen/tmp/${MOATS}/GPS.json | jq -r .[].umap)
|
||||
# REPLACE WITH NEW LAT LON UMAP
|
||||
sed -i "s~${OLAT}~${LAT}~g" ~/.zen/tmp/${MOATS}/GPS.json
|
||||
sed -i "s~${OLON}~${LON}~g" ~/.zen/tmp/${MOATS}/GPS.json
|
||||
sed -i "s~${OUMAP}~${UMAP}~g" ~/.zen/tmp/${MOATS}/GPS.json
|
||||
fi
|
||||
OLAT=$(cat ~/.zen/tmp/${MOATS}/GPS.json | jq -r .[].lat)
|
||||
OLON=$(cat ~/.zen/tmp/${MOATS}/GPS.json | jq -r .[].lon)
|
||||
|
||||
SECTOR="_${LAT::-1}_${LON::-1}" ### SECTOR = 0.1° Planet Slice in MadeInZion Tiddler
|
||||
echo "UPlanet 0.1° SECTOR : ${SECTOR}"
|
||||
sed -i "s~_SECTOR_~${SECTOR}~g" ~/.zen/game/players/${PLAYER}/ipfs/moa/index.html
|
||||
## Change myIP
|
||||
#~ sed -i "s~127.0.0.1~$myIP~g" ~/.zen/game/players/${PLAYER}/ipfs/moa/index.html # 8080 & 5001 BEING THE RECORDING GATEWAY (WAN or ipfs.localhost)
|
||||
# REPLACE WITH NEW LAT LON UMAP
|
||||
sed -i "s~${OLAT}~${LAT}~g" ~/.zen/tmp/${MOATS}/GPS.json
|
||||
sed -i "s~${OLON}~${LON}~g" ~/.zen/tmp/${MOATS}/GPS.json
|
||||
## Add _SECTORTW_
|
||||
cat ~/.zen/tmp/${MOATS}/GPS.json | jq '.[0] + {"sectortw": "_SECTORTW_"}' \
|
||||
> ~/.zen/tmp/${MOATS}/GPStw.json \
|
||||
&& mv ~/.zen/tmp/${MOATS}/GPStw.json ~/.zen/tmp/${MOATS}/GPS.json
|
||||
|
||||
###########
|
||||
## GET OLD16
|
||||
tiddlywiki --load ~/.zen/game/players/${PLAYER}/ipfs/moa/index.html --output ~/.zen/tmp/${MOATS} --render '.' 'MIZ.json' 'text/plain' '$:/core/templates/exporters/JsonFile' 'exportFilter' 'MadeInZion'
|
||||
OLD16=$(cat ~/.zen/tmp/${MOATS}/MIZ.json | jq -r ".[].secret")
|
||||
[[ ${OLD16} == "" || ${OLD16} == "null" ]] && OLD16="_SECRET_"
|
||||
## GET OLD16 FROM MadeInZion
|
||||
tiddlywiki \
|
||||
--load ~/.zen/game/players/${PLAYER}/ipfs/moa/index.html \
|
||||
--output ~/.zen/tmp/${MOATS} \
|
||||
--render '.' 'MIZ.json' 'text/plain' '$:/core/templates/exporters/JsonFile' 'exportFilter' 'MadeInZion'
|
||||
OLD16=$(cat ~/.zen/tmp/${MOATS}/MIZ.json | jq -r ".[].secret")
|
||||
[[ ${OLD16} == "" || ${OLD16} == "null" ]] && OLD16="_SECRET_"
|
||||
echo "${OLD16}"
|
||||
|
||||
## USING SWARMKEY (derivated from IPFSNODE "/proc/cpuinfo" key made by _12345.sh) ## HARDWARE SPECIFIC KEY ##
|
||||
# TODO : NODE COULD FORGET PASS THEN DECODE ${PLAYER}/secret.dunikey FROM TW # PROD #
|
||||
MACHINEPUB=$(cat $HOME/.zen/game/myswarm_secret.dunikey | grep pub | cut -d ' ' -f 2)
|
||||
#~ echo "# CRYPTO ENCODING _SECRET_ "
|
||||
${MY_PATH}/../tools/natools.py encrypt -p ${MACHINEPUB} -i $HOME/.zen/game/players/${PLAYER}/secret.dunikey -o $HOME/.zen/tmp/${MOATS}/secret.dunikey.$G1PUB.enc
|
||||
ENCODING=$(cat ~/.zen/tmp/${MOATS}/secret.dunikey.$G1PUB.enc | base16)
|
||||
sed -i "s~${OLD16}~${ENCODING}~g" ~/.zen/game/players/${PLAYER}/ipfs/moa/index.html
|
||||
# IN CASE ORIGINAL STATION NEEDS ACCESS # COULD BE REMOVED ?
|
||||
###########
|
||||
#~ echo "# CRYPTO DECODING TESTING..."
|
||||
tiddlywiki --load ~/.zen/game/players/${PLAYER}/ipfs/moa/index.html --output ~/.zen/tmp/${MOATS} --render '.' 'MadeInZion.json' 'text/plain' '$:/core/templates/exporters/JsonFile' 'exportFilter' 'MadeInZion'
|
||||
cat ~/.zen/tmp/${MOATS}/MadeInZion.json | jq -r ".[].secret" | base16 -d > ~/.zen/tmp/${MOATS}/crypto.$G1PUB.enc.2
|
||||
${MY_PATH}/../tools/natools.py decrypt -f pubsec -k $HOME/.zen/game/myswarm_secret.dunikey -i $HOME/.zen/tmp/${MOATS}/crypto.$G1PUB.enc.2 -o $HOME/.zen/tmp/${MOATS}/crypto.2
|
||||
#~ echo "DEBUG : $(cat $HOME/.zen/tmp/${MOATS}/crypto.2)"
|
||||
###########
|
||||
## CRYPTO PROCESS VALIDATED
|
||||
[[ -s ~/.zen/tmp/${MOATS}/crypto.2 ]] && echo "NATOOLS LOADED STATION TW KEY " \
|
||||
|| echo "NATOOLS ERRORS - CHECK STATION" # MACHINEPUB CRYPTO ERROR
|
||||
# TODO : MAKE NODE FORGET PASS THEN DECODE ${PLAYER}/secret.june FROM TW # PROD #
|
||||
MACHINEPUB=$(cat $HOME/.zen/game/myswarm_secret.dunikey | grep pub | cut -d ' ' -f 2)
|
||||
|
||||
if [[ "${MACHINEPUB}" != "" ]]; then
|
||||
#~ echo "# CRYPTO ENCODING PLAYER KEY WITH MACHINEPUB
|
||||
${MY_PATH}/../tools/natools.py encrypt \
|
||||
-p ${MACHINEPUB} \
|
||||
-i $HOME/.zen/game/players/${PLAYER}/secret.june \
|
||||
-o $HOME/.zen/tmp/${MOATS}/secret.june.${G1PUB}.enc
|
||||
ENCODING=$(cat ~/.zen/tmp/${MOATS}/secret.june.$G1PUB.enc | base16)
|
||||
sed -i "s~${OLD16}~${ENCODING}~g" ~/.zen/game/players/${PLAYER}/ipfs/moa/index.html
|
||||
echo "ENCODING: ${ENCODING}"
|
||||
|
||||
# GIVE ZEN STATION TW ACCESS #
|
||||
###########
|
||||
#~ echo "# CRYPTO DECODING TESTING..."
|
||||
tiddlywiki \
|
||||
--load ~/.zen/game/players/${PLAYER}/ipfs/moa/index.html \
|
||||
--output ~/.zen/tmp/${MOATS} \
|
||||
--render '.' 'MadeInZion.json' 'text/plain' '$:/core/templates/exporters/JsonFile' 'exportFilter' 'MadeInZion'
|
||||
|
||||
cat ~/.zen/tmp/${MOATS}/MadeInZion.json \
|
||||
| jq -r ".[].secret" | base16 -d \
|
||||
> ~/.zen/tmp/${MOATS}/crypto.$G1PUB.enc.2
|
||||
|
||||
${MY_PATH}/../tools/natools.py decrypt \
|
||||
-f pubsec \
|
||||
-k $HOME/.zen/game/myswarm_secret.dunikey \
|
||||
-i $HOME/.zen/tmp/${MOATS}/crypto.$G1PUB.enc.2 \
|
||||
-o $HOME/.zen/tmp/${MOATS}/crypto.2
|
||||
#~ echo "DEBUG : $(cat $HOME/.zen/tmp/${MOATS}/crypto.2)"
|
||||
###########
|
||||
## CRYPTO PROCESS VALIDATED
|
||||
[[ -s ~/.zen/tmp/${MOATS}/crypto.2 ]] \
|
||||
&& echo "NATOOLS LOADED STATION TW KEY " \
|
||||
|| echo "NATOOLS ERRORS - CHECK STATION" # MACHINEPUB CRYPTO ERROR
|
||||
|
||||
else
|
||||
echo " - WARNING - MISSING ~/.zen/game/myswarm_secret.dunikey - WARNING -"
|
||||
fi
|
||||
########### SECTOR = 0.1° UPLANET SLICE
|
||||
OSECTOR=$(cat ~/.zen/tmp/${MOATS}/MadeInZion.json | jq -r .[].sector)
|
||||
[[ ${OSECTOR} != "null" ]] && sed -i "s~${OSECTOR}~${SECTOR}~g" ~/.zen/tmp/${MOATS}/MadeInZion.json
|
||||
OSECTOR=$(cat ~/.zen/tmp/${MOATS}/MadeInZion.json | jq -r .[].sector)
|
||||
[[ ${OSECTOR} != "null" ]] && sed -i "s~${OSECTOR}~${SECTOR}~g" ~/.zen/tmp/${MOATS}/MadeInZion.json
|
||||
|
||||
### CREATE ${NID} ADDRESS FOR API & ROUND ROBIN FOR GW
|
||||
cat ${MY_PATH}/../templates/data/local.api.json | sed "s~_NID_~${WID}~g" > ~/.zen/tmp/${MOATS}/local.api.json
|
||||
cat ${MY_PATH}/../templates/data/local.gw.json | sed "s~_NID_~${NID}~g" > ~/.zen/tmp/${MOATS}/local.gw.json
|
||||
### CREATE ${NID} ADDRESS FOR API & ROUND ROBIN FOR GW
|
||||
cat ${MY_PATH}/../templates/data/local.api.json | sed "s~_NID_~${WID}~g" > ~/.zen/tmp/${MOATS}/local.api.json
|
||||
cat ${MY_PATH}/../templates/data/local.gw.json | sed "s~_NID_~${NID}~g" > ~/.zen/tmp/${MOATS}/local.gw.json
|
||||
|
||||
# Create"${PLAYER}_feed" Key ! DERIVATED ! "$SALT" "$PEPPER $G1PUB"
|
||||
${MY_PATH}/../tools/keygen -t ipfs -o ~/.zen/tmp/${MOATS}/feed.ipfskey "$SALT" "$PEPPER $G1PUB"
|
||||
FEEDNS=$(ipfs key import "${PLAYER}_feed" -f pem-pkcs8-cleartext ~/.zen/tmp/${MOATS}/feed.ipfskey)
|
||||
# Create"${PLAYER}_feed" Key ! DERIVATED ! "$SALT" "$PEPPER $G1PUB"
|
||||
ipfs key rm "${PLAYER}_feed" 2>/dev/null
|
||||
${MY_PATH}/../tools/keygen -t ipfs -o ~/.zen/tmp/${MOATS}/feed.ipfskey "$SALT" "$PEPPER $G1PUB"
|
||||
FEEDNS=$(ipfs key import "${PLAYER}_feed" -f pem-pkcs8-cleartext ~/.zen/tmp/${MOATS}/feed.ipfskey)
|
||||
|
||||
## MAKE LightBeam Plugin Tiddler ${PLAYER}_feed
|
||||
# $:/plugins/astroport/lightbeams/saver/ipns/lightbeam-key
|
||||
echo '[{"title":"$:/plugins/astroport/lightbeams/saver/ipns/lightbeam-name","text":"'${PLAYER}_feed'","tags":""}]' > ~/.zen/tmp/${MOATS}/lightbeam-name.json
|
||||
echo '[{"title":"$:/plugins/astroport/lightbeams/saver/ipns/lightbeam-key","text":"'${FEEDNS}'","tags":""}]' > ~/.zen/tmp/${MOATS}/lightbeam-key.json
|
||||
## MAKE LightBeam Plugin Tiddler ${PLAYER}_feed
|
||||
# $:/plugins/astroport/lightbeams/saver/ipns/lightbeam-key
|
||||
echo '[{"title":"$:/plugins/astroport/lightbeams/saver/ipns/lightbeam-name","text":"'${PLAYER}_feed'","tags":""}]' > ~/.zen/tmp/${MOATS}/lightbeam-name.json
|
||||
echo '[{"title":"$:/plugins/astroport/lightbeams/saver/ipns/lightbeam-key","text":"'${FEEDNS}'","tags":""}]' > ~/.zen/tmp/${MOATS}/lightbeam-key.json
|
||||
|
||||
## NATOOLS ENCRYPT
|
||||
#~ echo "# NATOOLS ENCODING MYSELF feed.ipfskey (TODO: could be decoded to compare with G1lib.js) "
|
||||
${MY_PATH}/../tools/natools.py encrypt -p $G1PUB -i $HOME/.zen/tmp/${MOATS}/feed.ipfskey -o $HOME/.zen/tmp/${MOATS}/feed.ipfskey.$G1PUB.enc
|
||||
ENCODING=$(cat $HOME/.zen/tmp/${MOATS}/feed.ipfskey.$G1PUB.enc | base16)
|
||||
#~ echo ${ENCODING}
|
||||
echo '[{"title":"$:/plugins/astroport/lightbeams/saver/g1/lightbeam-natools-feed","text":"'${ENCODING}'","tags":""}]' > ~/.zen/tmp/${MOATS}/lightbeam-natools.json
|
||||
## ADD SYSTEM TW
|
||||
tiddlywiki --load ~/.zen/game/players/${PLAYER}/ipfs/moa/index.html \
|
||||
--import ~/.zen/tmp/${MOATS}/lightbeam-name.json "application/json" \
|
||||
--import ~/.zen/tmp/${MOATS}/lightbeam-key.json "application/json" \
|
||||
--import ~/.zen/tmp/${MOATS}/local.api.json "application/json" \
|
||||
--import ~/.zen/tmp/${MOATS}/local.gw.json "application/json" \
|
||||
--import ~/.zen/tmp/${MOATS}/GPS.json "application/json" \
|
||||
--import ~/.zen/tmp/${MOATS}/AstroID.json "application/json" \
|
||||
--import ~/.zen/tmp/${MOATS}/MadeInZion.json "application/json" \
|
||||
--import "${MY_PATH}/../templates/tw/\$ _ipfs_saver_api.json" "application/json" \
|
||||
--import "${MY_PATH}/../templates/tw/\$ _ipfs_saver_gateway.json" "application/json" \
|
||||
--output ~/.zen/tmp/${MOATS} --render "$:/core/save/all" "tw.html" "text/plain"
|
||||
|
||||
#~ echo
|
||||
#~ echo "IPFS GATEWAY : ${NID}"
|
||||
# cat ~/.zen/tmp/${MOATS}/local.gw.json | jq -r
|
||||
#~ echo "IPFS API : ${WID}"
|
||||
# cat ~/.zen/tmp/${MOATS}/local.api.json | jq -r
|
||||
#~ echo ">>> RSS FEED : ${myIPFS}/ipns/${FEEDNS}"
|
||||
#~ ## CHANGE SELECTED GW & API
|
||||
|
||||
## ADD SYSTEM TW
|
||||
tiddlywiki --load ~/.zen/game/players/${PLAYER}/ipfs/moa/index.html \
|
||||
--import ~/.zen/tmp/${MOATS}/lightbeam-name.json "application/json" \
|
||||
--import ~/.zen/tmp/${MOATS}/lightbeam-key.json "application/json" \
|
||||
--import ~/.zen/tmp/${MOATS}/lightbeam-natools.json "application/json" \
|
||||
--import ~/.zen/tmp/${MOATS}/local.api.json "application/json" \
|
||||
--import ~/.zen/tmp/${MOATS}/local.gw.json "application/json" \
|
||||
--import ~/.zen/tmp/${MOATS}/GPS.json "application/json" \
|
||||
--import ~/.zen/tmp/${MOATS}/AstroID.json "application/json" \
|
||||
--import ~/.zen/tmp/${MOATS}/MadeInZion.json "application/json" \
|
||||
--import "${MY_PATH}/../templates/tw/\$ _ipfs_saver_api.json" "application/json" \
|
||||
--import "${MY_PATH}/../templates/tw/\$ _ipfs_saver_gateway.json" "application/json" \
|
||||
--output ~/.zen/tmp/${MOATS} --render "$:/core/save/all" "tw.html" "text/plain"
|
||||
|
||||
## COPY TO LOCAL & 12345 IPFSNODEID MAP
|
||||
[[ -s ~/.zen/tmp/${MOATS}/tw.html ]] \
|
||||
&& cp -f ~/.zen/tmp/${MOATS}/tw.html ~/.zen/game/players/${PLAYER}/ipfs/moa/index.html \
|
||||
&& mkdir -p ~/.zen/tmp/${IPFSNODEID}/TW/${PLAYER} \
|
||||
&& cp ~/.zen/game/players/${PLAYER}/ipfs/moa/index.html ~/.zen/tmp/${IPFSNODEID}/TW/${PLAYER}/ \
|
||||
|| ( echo "Problem with TW - EXIT" && exit 1 )
|
||||
## COPY TO LOCAL & 12345 IPFSNODEID MAP
|
||||
[[ -s ~/.zen/tmp/${MOATS}/tw.html ]] \
|
||||
&& cp -f ~/.zen/tmp/${MOATS}/tw.html ~/.zen/game/players/${PLAYER}/ipfs/moa/index.html \
|
||||
&& mkdir -p ~/.zen/tmp/${IPFSNODEID}/TW/${PLAYER} \
|
||||
&& cp ~/.zen/game/players/${PLAYER}/ipfs/moa/index.html ~/.zen/tmp/${IPFSNODEID}/TW/${PLAYER}/ \
|
||||
|| ( echo "Problem with TW - EXIT" && exit 1 )
|
||||
|
||||
############################################################################ G1TW
|
||||
#### MAKE G1TW
|
||||
[[ -s ~/.zen/G1BILLET/MAKE_G1BILLET.sh ]] && \
|
||||
~/.zen/G1BILLET/MAKE_G1BILLET.sh "$SALT" "$PEPPER" "___" "$G1PUB" "${PASS}" "${PSEUDO-xastro}" "$ASTRONAUTENS" "$PLAYER"
|
||||
[[ -s ~/.zen/G1BILLET/MAKE_G1BILLET.sh ]] && \
|
||||
~/.zen/G1BILLET/MAKE_G1BILLET.sh "$SALT" "$PEPPER" "___" "$G1PUB" "${PASS}" "${PSEUDO-xastro}" "$ASTRONAUTENS" "$PLAYER"
|
||||
#### MADE # BILLETNAME=$(echo "$SALT" | sed 's/ /_/g') ##
|
||||
# IMAGE ~/.zen/G1BILLET/tmp/g1billet/${PASS}/${BILLETNAME}.BILLET.jpg
|
||||
############################################################################
|
||||
|
||||
## MAKE IMAGE AVATAR WITH G1PUB QRCODE
|
||||
if [[ $(which amzqr) ]]; then
|
||||
## MAKE IMAGE AVATAR WITH G1PUB QRCODE
|
||||
if [[ $(which amzqr) ]]; then
|
||||
|
||||
GIMG="${MY_PATH}/../images/moa_net.png"
|
||||
CIMG="${MY_PATH}/../images/zenticket.png"
|
||||
GIMG="${MY_PATH}/../images/moa_net.png"
|
||||
CIMG="${MY_PATH}/../images/zenticket.png"
|
||||
|
||||
# QRG1avatar.png
|
||||
[[ ! -s ~/.zen/game/players/${PLAYER}/QRG1avatar.png ]] && amzqr "${G1PUB}" -l H -p "$CIMG" -c -n QRG1avatar.png -d ~/.zen/game/players/${PLAYER}/ 1>/dev/null
|
||||
# QRTWavatar.png
|
||||
[[ ! -s ~/.zen/game/players/${PLAYER}/QRTWavatar.png ]] && amzqr "${myIPFSGW}/ipns/${ASTRONAUTENS}" -l H -p "$GIMG" -c -n QRTWavatar.png -d ~/.zen/game/players/${PLAYER}/ 1>/dev/null
|
||||
# QRG1avatar.png
|
||||
[[ ! -s ~/.zen/game/players/${PLAYER}/QRG1avatar.png ]] && amzqr "${G1PUB}" -l H -p "$CIMG" -c -n QRG1avatar.png -d ~/.zen/game/players/${PLAYER}/ 1>/dev/null
|
||||
# QRTWavatar.png
|
||||
[[ ! -s ~/.zen/game/players/${PLAYER}/QRTWavatar.png ]] && amzqr "${myIPFSGW}/ipns/${ASTRONAUTENS}" -l H -p "$GIMG" -c -n QRTWavatar.png -d ~/.zen/game/players/${PLAYER}/ 1>/dev/null
|
||||
|
||||
else
|
||||
else
|
||||
|
||||
[[ ! -s ~/.zen/game/players/${PLAYER}/QRG1avatar.png ]] \
|
||||
&& cp ~/.zen/game/players/${PLAYER}/QR.png ~/.zen/game/players/${PLAYER}/QRG1avatar.png
|
||||
[[ ! -s ~/.zen/game/players/${PLAYER}/QRG1avatar.png ]] \
|
||||
&& cp ~/.zen/game/players/${PLAYER}/QR.png ~/.zen/game/players/${PLAYER}/QRG1avatar.png
|
||||
|
||||
[[ ! -s ~/.zen/game/players/${PLAYER}/QRTWavatar.png ]] \
|
||||
&& cp ~/.zen/game/players/${PLAYER}/QR.ASTRONAUTENS.png ~/.zen/game/players/${PLAYER}/QRTWavatar.png
|
||||
[[ ! -s ~/.zen/game/players/${PLAYER}/QRTWavatar.png ]] \
|
||||
&& cp ~/.zen/game/players/${PLAYER}/QR.ASTRONAUTENS.png ~/.zen/game/players/${PLAYER}/QRTWavatar.png
|
||||
|
||||
fi
|
||||
fi
|
||||
|
||||
## ID CARD & QRCODE
|
||||
convert ~/.zen/game/players/${PLAYER}/QRG1avatar.png -resize 300 ~/.zen/tmp/${MOATS}/QR.png 2>/dev/null
|
||||
convert ~/.zen/game/players/${PLAYER}/QRTWavatar.png -resize 240 ~/.zen/tmp/${MOATS}/TW.png 2>/dev/null
|
||||
convert ${MY_PATH}/../images/astroport.jpg -resize 240 ~/.zen/tmp/${MOATS}/ASTROPORT.png 2>/dev/null
|
||||
## ID CARD & QRCODE
|
||||
convert ~/.zen/game/players/${PLAYER}/QRG1avatar.png -resize 300 ~/.zen/tmp/${MOATS}/QR.png 2>/dev/null
|
||||
convert ~/.zen/game/players/${PLAYER}/QRTWavatar.png -resize 240 ~/.zen/tmp/${MOATS}/TW.png 2>/dev/null
|
||||
convert ${MY_PATH}/../images/astroport.jpg -resize 240 ~/.zen/tmp/${MOATS}/ASTROPORT.png 2>/dev/null
|
||||
|
||||
|
||||
composite -compose Over -gravity SouthEast -geometry +5+5 ~/.zen/tmp/${MOATS}/ASTROPORT.png ${MY_PATH}/../images/Brother_600x400.png ~/.zen/tmp/${MOATS}/astroport.png 2>/dev/null
|
||||
composite -compose Over -gravity NorthEast -geometry +10+55 ~/.zen/tmp/${MOATS}/TW.png ~/.zen/tmp/${MOATS}/astroport.png ~/.zen/tmp/${MOATS}/astroport2.png 2>/dev/null
|
||||
composite -compose Over -gravity NorthWest -geometry +0+0 ~/.zen/tmp/${MOATS}/QR.png ~/.zen/tmp/${MOATS}/astroport2.png ~/.zen/tmp/${MOATS}/one.png 2>/dev/null
|
||||
convert -gravity SouthWest -pointsize 12 -fill black -draw "text 5,3 \"$G1PUB\"" ~/.zen/tmp/${MOATS}/one.png ~/.zen/tmp/${MOATS}/txt.png
|
||||
composite -compose Over -gravity SouthEast -geometry +5+5 ~/.zen/tmp/${MOATS}/ASTROPORT.png ${MY_PATH}/../images/Brother_600x400.png ~/.zen/tmp/${MOATS}/astroport.png 2>/dev/null
|
||||
composite -compose Over -gravity NorthEast -geometry +10+55 ~/.zen/tmp/${MOATS}/TW.png ~/.zen/tmp/${MOATS}/astroport.png ~/.zen/tmp/${MOATS}/astroport2.png 2>/dev/null
|
||||
composite -compose Over -gravity NorthWest -geometry +0+0 ~/.zen/tmp/${MOATS}/QR.png ~/.zen/tmp/${MOATS}/astroport2.png ~/.zen/tmp/${MOATS}/one.png 2>/dev/null
|
||||
convert -gravity SouthWest -pointsize 12 -fill black -draw "text 5,3 \"$G1PUB\"" ~/.zen/tmp/${MOATS}/one.png ~/.zen/tmp/${MOATS}/txt.png
|
||||
|
||||
# composite -compose Over -gravity NorthWest -geometry +280+280 ~/.zen/game/players/.current/QRsec.png ~/.zen/tmp/${MOATS}/one.png ~/.zen/tmp/${MOATS}/image.png
|
||||
# composite -compose Over -gravity NorthWest -geometry +280+280 ~/.zen/game/players/.current/QRsec.png ~/.zen/tmp/${MOATS}/one.png ~/.zen/tmp/${MOATS}/image.png
|
||||
|
||||
convert -gravity northwest -pointsize 25 -fill black -draw "text 50,300 \"$PSEUDO\"" ~/.zen/tmp/${MOATS}/txt.png ~/.zen/tmp/${MOATS}/image.png
|
||||
convert -gravity northwest -pointsize 20 -fill black -draw "text 300,40 \"${PLAYER}\"" ~/.zen/tmp/${MOATS}/image.png ~/.zen/tmp/${MOATS}/pseudo.png
|
||||
convert -gravity northwest -pointsize 25 -fill black -draw "text 50,300 \"$PSEUDO\"" ~/.zen/tmp/${MOATS}/txt.png ~/.zen/tmp/${MOATS}/image.png
|
||||
convert -gravity northwest -pointsize 20 -fill black -draw "text 300,40 \"${PLAYER}\"" ~/.zen/tmp/${MOATS}/image.png ~/.zen/tmp/${MOATS}/pseudo.png
|
||||
|
||||
|
||||
## WITH CONFIDENTIAL (LOCAL PRINT)
|
||||
convert -gravity northeast -pointsize 25 -fill black -draw "text 20,180 \"$PASS\"" ~/.zen/tmp/${MOATS}/pseudo.png ~/.zen/tmp/${MOATS}/pass.png
|
||||
convert -gravity northwest -pointsize 25 -fill black -draw "text 300,100 \"$SALT\"" ~/.zen/tmp/${MOATS}/pass.png ~/.zen/tmp/${MOATS}/salt.png
|
||||
convert -gravity northwest -pointsize 25 -fill black -draw "text 300,140 \"$PEPPER\"" ~/.zen/tmp/${MOATS}/salt.png ~/.zen/game/players/${PLAYER}/ID.png
|
||||
## WITH CONFIDENTIAL (LOCAL PRINT)
|
||||
convert -gravity northeast -pointsize 25 -fill black -draw "text 20,180 \"$PASS\"" ~/.zen/tmp/${MOATS}/pseudo.png ~/.zen/tmp/${MOATS}/pass.png
|
||||
convert -gravity northwest -pointsize 25 -fill black -draw "text 300,100 \"$SALT\"" ~/.zen/tmp/${MOATS}/pass.png ~/.zen/tmp/${MOATS}/salt.png
|
||||
convert -gravity northwest -pointsize 25 -fill black -draw "text 300,140 \"$PEPPER\"" ~/.zen/tmp/${MOATS}/salt.png ~/.zen/game/players/${PLAYER}/ID.png
|
||||
|
||||
# INSERTED IMAGE IPFS
|
||||
# IASTRO=$(ipfs add -Hq ~/.zen/game/players/${PLAYER}/ID.png | tail -n 1) ## ZENCARD PUBLIC / PRIVATE
|
||||
IASTRO="/ipfs/$(ipfs add -Hq ~/.zen/tmp/${MOATS}/pseudo.png | tail -n 1)" ## ZENCARD PUBLIC ONLY
|
||||
# INSERTED IMAGE IPFS
|
||||
# IASTRO=$(ipfs add -Hq ~/.zen/game/players/${PLAYER}/ID.png | tail -n 1) ## ZENCARD PUBLIC / PRIVATE
|
||||
IASTRO="/ipfs/$(ipfs add -Hq ~/.zen/tmp/${MOATS}/pseudo.png | tail -n 1)" ## ZENCARD PUBLIC ONLY
|
||||
|
||||
## Update ZenCard
|
||||
[[ ! $ZenCard ]] && ZenCard="/ipfs/bafybeidhghlcx3zdzdah2pzddhoicywmydintj4mosgtygr6f2dlfwmg7a"
|
||||
sed -i "s~${ZenCard}~${IASTRO}~g" ~/.zen/game/players/${PLAYER}/ipfs/moa/index.html
|
||||
## Update ZenCard
|
||||
[[ ! $ZenCard ]] && ZenCard="/ipfs/bafybeidhghlcx3zdzdah2pzddhoicywmydintj4mosgtygr6f2dlfwmg7a"
|
||||
sed -i "s~${ZenCard}~${IASTRO}~g" ~/.zen/game/players/${PLAYER}/ipfs/moa/index.html
|
||||
|
||||
echo
|
||||
echo "♥ IPFS Ŋ1 TW INIT ♥"
|
||||
echo "TW ${NID}/ipns/${ASTRONAUTENS}/"
|
||||
IPUSH=$(ipfs add -Hq ~/.zen/game/players/${PLAYER}/ipfs/moa/index.html | tail -n 1)
|
||||
echo $IPUSH > ~/.zen/game/players/${PLAYER}/ipfs/moa/.chain # Contains last IPFS backup PLAYER KEY
|
||||
echo $MOATS > ~/.zen/game/players/${PLAYER}/ipfs/moa/.moats
|
||||
echo
|
||||
echo "♥ IPFS Ŋ1 TW INIT ♥"
|
||||
echo "TW ${NID}/ipns/${ASTRONAUTENS}/"
|
||||
IPUSH=$(ipfs add -Hq ~/.zen/game/players/${PLAYER}/ipfs/moa/index.html | tail -n 1)
|
||||
echo $IPUSH > ~/.zen/game/players/${PLAYER}/ipfs/moa/.chain # Contains last IPFS backup PLAYER KEY
|
||||
echo $MOATS > ~/.zen/game/players/${PLAYER}/ipfs/moa/.moats
|
||||
|
||||
(
|
||||
#~ echo "$MOATS :: /ipfs/$IPUSH"
|
||||
ipfs name publish --key=${PLAYER} /ipfs/$IPUSH
|
||||
#~ echo "TW PUBLISHING DONE"
|
||||
) &
|
||||
(
|
||||
#~ echo "$MOATS :: /ipfs/$IPUSH"
|
||||
ipfs name publish --key=${PLAYER} /ipfs/$IPUSH
|
||||
#~ echo "TW PUBLISHING DONE"
|
||||
) &
|
||||
|
||||
## MEMORISE PLAYER Ŋ1 ZONE
|
||||
echo "${PLAYER}" > ~/.zen/game/players/${PLAYER}/.player
|
||||
echo "$PSEUDO" > ~/.zen/game/players/${PLAYER}/.pseudo
|
||||
echo "$G1PUB" > ~/.zen/game/players/${PLAYER}/.g1pub
|
||||
## MEMORISE PLAYER Ŋ1 ZONE
|
||||
echo "${PLAYER}" > ~/.zen/game/players/${PLAYER}/.player
|
||||
echo "$PSEUDO" > ~/.zen/game/players/${PLAYER}/.pseudo
|
||||
echo "$G1PUB" > ~/.zen/game/players/${PLAYER}/.g1pub
|
||||
|
||||
echo "${ASTRONAUTENS}" > ~/.zen/game/players/${PLAYER}/.playerns
|
||||
|
||||
echo "SALT=\"$SALT\"" > ~/.zen/game/players/${PLAYER}/secret.june
|
||||
echo "PEPPER=\"$PEPPER\"" >> ~/.zen/game/players/${PLAYER}/secret.june
|
||||
echo "${ASTRONAUTENS}" > ~/.zen/game/players/${PLAYER}/.playerns
|
||||
|
||||
#~ echo; echo "Création Clefs et QR codes pour accès au niveau Astroport Ŋ1"; sleep 1
|
||||
|
||||
|
@ -479,9 +485,10 @@ echo "--- PLAYER : ${PLAYER} - DATA PROTOCOL LAYER LOADED";
|
|||
|
||||
[[ $XDG_SESSION_TYPE == 'x11' || $XDG_SESSION_TYPE == 'wayland' ]] && xdg-open "${myIPFS}/ipns/${ASTRONAUTENS}" && espeak "YOUR PASS IS $PASS"
|
||||
|
||||
################# PREPARE DOCKERIZATION
|
||||
#~ [[ -l ~/.zen/game/players/.current ]] \
|
||||
#~ && ln -s ~/.zen/game/players/${PLAYER} ~/.zen/game/players/.current
|
||||
####### CORRECT NO CURRENT ? PLAYER = .current
|
||||
[[ ! -e ~/.zen/game/players/.current ]] \
|
||||
&& rm ~/.zen/game/players/.current 2>/dev/null \
|
||||
&& ln -s ~/.zen/game/players/${PLAYER} ~/.zen/game/players/.current
|
||||
|
||||
. "${MY_PATH}/../tools/my.sh"
|
||||
|
||||
|
@ -499,12 +506,8 @@ echo "$PASS" > ~/.zen/game/players/${PLAYER}/.pass
|
|||
# TODO : Allow Astronaut PASS change ;)
|
||||
#####################################################
|
||||
|
||||
## DISCONNECT AND CONNECT CURRENT PLAYER
|
||||
#~ rm -f ~/.zen/game/players/.current
|
||||
#~ ln -s ~/.zen/game/players/${PLAYER} ~/.zen/game/players/.current
|
||||
|
||||
## MANAGE GCHANGE+ & Ŋ1 EXPLORATION
|
||||
${MY_PATH}/../tools/Connect_PLAYER_To_Gchange.sh "${PLAYER}" 1>/dev/null
|
||||
${MY_PATH}/../tools/Connect_PLAYER_To_Gchange.sh "${PLAYER}"
|
||||
|
||||
### IF PRINTER -> PRINT VISA
|
||||
LP=$(ls /dev/usb/lp* 2>/dev/null)
|
||||
|
@ -515,72 +518,121 @@ LP=$(ls /dev/usb/lp* 2>/dev/null)
|
|||
## NO. GCHANGE+ IS THE MAIN INTERFACE, astrXbian manage
|
||||
echo "%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%"
|
||||
echo "$(${MY_PATH}/../tools/face.sh cool)"
|
||||
echo " 'Astronaute' $PSEUDO"
|
||||
echo " 'Astronaut' $PSEUDO"
|
||||
echo
|
||||
echo "* ZenCard : Public Key and Wallet
|
||||
${NID}/ipns/${ASTRONAUTENS}#ZenCard"
|
||||
echo " "
|
||||
echo "* AstroID : AstroID with PASS : $PASS"
|
||||
echo "* AstroID : with PASS : $PASS"
|
||||
echo "${NID}/ipns/${ASTRONAUTENS}#AstroID"
|
||||
echo
|
||||
echo "* UMap : registration at ${LAT}, ${LON}
|
||||
${myIPFS}${URL}"
|
||||
echo "* UMap : registration at ${LAT}, ${LON}"
|
||||
echo
|
||||
echo "%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%"
|
||||
#~ echo "BIENVENUE"
|
||||
#~ echo "https://monnaie-libre.fr (ğ1) : $G1PUB"; # sleep 1
|
||||
#~ echo "
|
||||
#~ Vos Secrets :
|
||||
#~ $SALT
|
||||
#~ $PEPPER
|
||||
|
||||
#~ * WALLET : https://cesium.app
|
||||
#~ * MARKET : https://gchange.fr
|
||||
|
||||
#~ U Planet : ${myUPLANET}
|
||||
#~ Astroport.ONE ★ PKI ★ Ğ1/Ŋ1 ★ DAO ★ Libre ★"; # sleep 1
|
||||
#~ echo "$(${MY_PATH}/../tools/face.sh friendly) ★ GCHANGE LIBRE MARKET ★"
|
||||
#~ echo "Use $SALT and $PEPPER to register on https://cesium.app and https://gchange.fr to ★ friends"
|
||||
echo ""
|
||||
|
||||
echo $PSEUDO > ~/.zen/tmp/PSEUDO ## Return data to command.sh # KEEP IT
|
||||
echo "%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%"
|
||||
echo "export ASTROTW=/ipns/$ASTRONAUTENS ASTROG1=$G1PUB ASTROMAIL=$PLAYER ASTROFEED=$FEEDNS PASS=$PASS"
|
||||
####tools##########################################getUMAP_ENV.sh
|
||||
$(${MY_PATH}/../tools/getUMAP_ENV.sh "${LAT}" "${LON}" | tail -n 1)
|
||||
|
||||
### SEND AstroID and ZenCard to EMAIL
|
||||
(
|
||||
echo "<html><body><h1>UPlanet : ZenCard</h1>
|
||||
This is your ZenCard : your public key (your flag)" > ~/.zen/tmp/${MOATS}/ZenCard.txt
|
||||
echo "<br><a href='${myIPFSGW}${IASTRO}'>ZenCard</a><br><img src='${myIPFSGW}${IASTRO}'\>
|
||||
<br>it contains you Ẑen and TW address
|
||||
<br></body></html>" >> ~/.zen/tmp/${MOATS}/ZenCard.txt
|
||||
|
||||
$MY_PATH/../tools/mailjet.sh "${PLAYER}" ~/.zen/tmp/${MOATS}/ZenCard.txt "ZenCard"
|
||||
ipns2did=""
|
||||
|
||||
#~ mpack -a -s "✅ UPlanet : ZenCard" -d ~/.zen/tmp/${MOATS}/intro.txt \
|
||||
#~ ~/.zen/tmp/${MOATS}/pseudo.png ${PLAYER}
|
||||
# Loop through the ASTRONAUTENS two characters at a time
|
||||
for ((i = 0; i < ${#ASTRONAUTENS}; i += 2)); do
|
||||
ipns2did+=" ${ASTRONAUTENS:i:2}"
|
||||
# Check if 12 doublets have been added
|
||||
if (( (i / 2 + 1) % 12 == 0 )); then
|
||||
ipns2did+="<br>" # Add a newline character
|
||||
fi
|
||||
done
|
||||
|
||||
echo "<html><body>
|
||||
<h1>UPlanet : AstroID ($PASS)</h1>
|
||||
This is your AstroID : your private key (your ring)" > ~/.zen/tmp/${MOATS}/AstroID.txt
|
||||
echo "
|
||||
<br>You own one of the 'Rings of the Lords' on <a href='https://qo-op.com'>Uplanet</a> 0.1° SECTOR : ${SECTOR}
|
||||
<br>it is forged from SECRET1=$SALT SECRET2=$PEPPER then secured by PIN : $PASS
|
||||
<br>
|
||||
<br>Your ASTROPORT STATION is <a href='${myAPI}'>NODE#${IPFSNODEID}</a>
|
||||
" >> ~/.zen/tmp/${MOATS}/AstroID.txt
|
||||
echo "<br><a href='${myIPFS}/ipns/${ASTROTW}#AstroID'>AstroID</a><br><img src='${myIPFSGW}${ASTROQR}'\>
|
||||
<br>
|
||||
<br>Print it and delete from TW to keep it secure.
|
||||
</body></html>" >> ~/.zen/tmp/${MOATS}/AstroID.txt
|
||||
# Print the result with leading space removed
|
||||
echo -e "${ipns2did:1}"
|
||||
####################################################### EMAIL
|
||||
[[ -s ${MY_PATH}/../templates/UPlanetZINE/day0/index.${LANG}.html ]] \
|
||||
&& ZINE="${MY_PATH}/../templates/UPlanetZINE/day0/index.${LANG}.html" \
|
||||
|| ZINE="${MY_PATH}/../templates/UPlanetZINE/day0/index.html"
|
||||
##UPlanetZine::/ipfs/QmUjgQYK74UgRoyLFfmR2LMX7rd6vNxmtWeUtRxjemELuZ - chained release -
|
||||
cat ${ZINE} \
|
||||
| sed -e "s~/ipfs/QmdmeZhD8ncBFptmD5VSJoszmu41edtT265Xq3HVh8PhZP~${ASTROQR}~g" \
|
||||
-e "s~/ipfs/QmTL7VDgkYjpYC2qiiFCfah2pSqDMkTANMeMtjMndwXq9y~${IASTRO}~g" \
|
||||
-e "s~_MOATS_~${MOATS}~g" \
|
||||
-e "s~_PLAYER_~${PLAYER}~g" \
|
||||
-e "s~_G1PUB_~${G1PUB}~g" \
|
||||
-e "s~_ASTRONAUTENS_~${ASTRONAUTENS}~g" \
|
||||
-e "s~_ASTRODID_~${ipns2did:1}~g" \
|
||||
-e "s~0448~${PASS}~g" \
|
||||
-e "s~_SALT_~${SALT}~g" \
|
||||
-e "s~_PEPPER_~${PEPPER}~g" \
|
||||
-e "s~_IPFSNODEID_~${IPFSNODEID}~g" \
|
||||
-e "s~_EARTHCID_~${EARTHCID}~g" \
|
||||
-e "s~_SECTOR_~${SECTOR}~g" \
|
||||
-e "s~_SLAT_~${SLAT}~g" \
|
||||
-e "s~_SLON_~${SLON}~g" \
|
||||
> ~/.zen/tmp/${MOATS}/UPlanetZine.html
|
||||
|
||||
$MY_PATH/../tools/mailjet.sh "${PLAYER}" ~/.zen/tmp/${MOATS}/AstroID.txt "AstroID"
|
||||
|
||||
$MY_PATH/../tools/mailjet.sh "${PLAYER}" ~/.zen/tmp/${MOATS}/UPlanetZine.html "${PLAYER} MULTIPASS"
|
||||
|
||||
#####################################################################"_EARTHCID_
|
||||
|
||||
#~ echo "<html><head>
|
||||
#~ <style>
|
||||
#~ body {
|
||||
#~ font-family: 'Courier New', monospace;
|
||||
#~ }
|
||||
#~ pre {
|
||||
#~ white-space: pre-wrap;
|
||||
#~ }
|
||||
#~ </style></head>
|
||||
#~ <body>
|
||||
#~ <center>
|
||||
#~ <h3><a href='${myUPLANET}'>UPlanet</a></h3>
|
||||
#~ <h1>\"<a target='TW' href='$(myIpfsGw)/ipns/${ASTRONAUTENS}'>TW5</a>\"</h1>
|
||||
#~ did:/ipns/${ASTRONAUTENS}
|
||||
#~ <hr>
|
||||
#~ <hr><a target='TW' href='$(myIpfsGw)/ipns/${ASTRONAUTENS}#AstroID'>AstroID<br>
|
||||
#~ <img width=300px src='$(myIpfsGw)${ASTROQR}'\></a><br>
|
||||
#~ <h2>SECRET1=\"$SALT\"<br>SECRET2=\"$PEPPER\"</h2>
|
||||
#~ <h2> CODE : $PASS </h2>
|
||||
#~ <hr>
|
||||
#~ <a target='TW' href='$(myIpfsGw)/ipns/${ASTRONAUTENS}#ZenCard' title='${G1PUB}'>ZenCard</a><br>
|
||||
#~ <img src='$(myIpfsGw)${IASTRO}'\><br><hr>
|
||||
#~ ${G1PUB}" > ~/.zen/tmp/${MOATS}/AstroID.html
|
||||
|
||||
#~ echo "
|
||||
#~ <h3> /-> ASTROPORT : <a href='$(myIpfsGw)/ipns/${IPFSNODEID}'>/ipns/${IPFSNODEID}</a></h3>
|
||||
#~ <h3> /--> SECTOR : <a href='${EARTHCID}/map_render.html?southWestLat=${LAT::-1}&southWestLon=${LON::-1}°=0.1'>${SECTOR}</a></h3>
|
||||
#~ " >> ~/.zen/tmp/${MOATS}/AstroID.html
|
||||
|
||||
#~ asciiart="${MY_PATH}/../images/logoastro.art"
|
||||
#~ while IFS= read -r line
|
||||
#~ do
|
||||
#~ echo "$line" | sed "s~ ~\ ~g" >> ~/.zen/tmp/${MOATS}/AstroID.html
|
||||
#~ echo "<br>" >> ~/.zen/tmp/${MOATS}/AstroID.html
|
||||
#~ done <"$asciiart"
|
||||
|
||||
#~ echo "<br>${MOATS}<br>- print a copy -</center></body></html>" >> ~/.zen/tmp/${MOATS}/AstroID.html
|
||||
|
||||
#~ $MY_PATH/../tools/mailjet.sh "${PLAYER}" ~/.zen/tmp/${MOATS}/AstroID.html "TW5 & AstroID"
|
||||
|
||||
#~ mpack -a -s "✅ UPlanet : AstroID ($PASS)" -d ~/.zen/tmp/${MOATS}/intro.txt \
|
||||
#~ $HOME/.zen/game/players/${PLAYER}/AstroID.png ${PLAYER}
|
||||
|
||||
## CLEANING CACHE
|
||||
rm -Rf ~/.zen/tmp/${MOATS}
|
||||
) &
|
||||
|
||||
|
||||
#####################################################################"
|
||||
|
||||
## CHECK .current
|
||||
[[ ! -d $(readlink ~/.zen/game/players/.current) ]] \
|
||||
&& rm ~/.zen/game/players/.current 2>/dev/null \
|
||||
&& ln -s ~/.zen/game/players/${PLAYER} ~/.zen/game/players/.current
|
||||
|
||||
|
||||
echo $PSEUDO > ~/.zen/tmp/PSEUDO ## Return data to command.sh # KEEP IT
|
||||
echo "%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%"
|
||||
################################################ LAST LINE REPORT VALUES TO CALLING SCRIPT | tail -n 1
|
||||
echo "export ASTROTW=/ipns/$ASTRONAUTENS ASTROG1=$G1PUB ASTROMAIL=$PLAYER ASTROFEED=$FEEDNS PASS=$PASS"
|
||||
exit 0
|
||||
|
|
|
@ -15,6 +15,8 @@ MY_PATH="`( cd \"$MY_PATH\" && pwd )`" # absolutized and normalized
|
|||
# ~/.zen/game/players/${PLAYER}/G1${WISHNAME}/${G1PUB}/*
|
||||
# _PLAYER.json
|
||||
|
||||
# change SWARM memory
|
||||
### # ~/.zen/tmp/${IPFSNODEID}/WISH/${WISHNAME}/${PLAYER}/*
|
||||
|
||||
PLAYER="$1" ## IPNS KEY NAME - G1PUB - PLAYER ...
|
||||
[[ ! ${PLAYER} ]] && echo "Please provide PLAYER publish key" && exit 1
|
||||
|
@ -37,9 +39,6 @@ INDEX="$3"
|
|||
|
||||
mkdir -p ~/.zen/tmp/${IPFSNODEID}/WISH/${PLAYER}/g1voeu
|
||||
|
||||
## PROTOCOL EVOLUTION RUN & REMOVE
|
||||
rm -Rf ~/.zen/tmp/${IPFSNODEID}/${PLAYER}
|
||||
|
||||
###############################
|
||||
####### NEED G1 / ZEN TO RUN
|
||||
[[ ${COINS} == "null" || ${COINS} == "" ]] \
|
||||
|
@ -51,13 +50,14 @@ echo "%% ${COINS} %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%"
|
|||
|
||||
###############################
|
||||
## EXTRACT G1Voeu from PLAYER TW
|
||||
echo "Exporting ${PLAYER} TW [tag[G1Voeu]]"
|
||||
echo "Exporting ${PLAYER} TW [days:created[-360]tag[G1Voeu]]"
|
||||
rm -f ~/.zen/tmp/${IPFSNODEID}/WISH/${PLAYER}/g1voeu/${PLAYER}.g1voeu.json
|
||||
tiddlywiki --load ${INDEX} --output ~/.zen/tmp/${IPFSNODEID}/WISH/${PLAYER}/g1voeu --render '.' "${PLAYER}.g1voeu.json" 'text/plain' '$:/core/templates/exporters/JsonFile' 'exportFilter' '[tag[G1Voeu]]'
|
||||
tiddlywiki --load ${INDEX} --output ~/.zen/tmp/${IPFSNODEID}/WISH/${PLAYER}/g1voeu --render '.' "${PLAYER}.g1voeu.json" 'text/plain' '$:/core/templates/exporters/JsonFile' 'exportFilter' '[days:created[-360]tag[G1Voeu]]'
|
||||
|
||||
[[ ! -s ~/.zen/tmp/${IPFSNODEID}/WISH/${PLAYER}/g1voeu/${PLAYER}.g1voeu.json ]] && echo "AUCUN G1VOEU - EXIT -" && exit 0
|
||||
[[ ! -s ~/.zen/tmp/${IPFSNODEID}/WISH/${PLAYER}/g1voeu/${PLAYER}.g1voeu.json ]] \
|
||||
&& echo "AUCUN G1VOEU - EXIT -" && exit 0
|
||||
|
||||
cat ~/.zen/tmp/${IPFSNODEID}/WISH/${PLAYER}/g1voeu/${PLAYER}.g1voeu.json | jq -r '.[].wish' > ~/.zen/tmp/${IPFSNODEID}/WISH/${PLAYER}/g1voeu/${PLAYER}.g1wishes.txt
|
||||
cat ~/.zen/tmp/${IPFSNODEID}/WISH/${PLAYER}/g1voeu/${PLAYER}.g1voeu.json | jq -r 'map(select(.wish != null)) | .[].wish' > ~/.zen/tmp/${IPFSNODEID}/WISH/${PLAYER}/g1voeu/${PLAYER}.g1wishes.txt
|
||||
wishnumbers=$(cat ~/.zen/tmp/${IPFSNODEID}/WISH/${PLAYER}/g1voeu/${PLAYER}.g1wishes.txt | wc -l)
|
||||
echo "${wishnumbers} VOEUX : ~/.zen/tmp/${IPFSNODEID}/WISH/${PLAYER}/g1voeu/${PLAYER}.g1wishes.txt "
|
||||
|
||||
|
@ -92,14 +92,16 @@ do
|
|||
|
||||
## RUNNING WISH REFRESH : PLAYER CACHE
|
||||
mkdir -p ~/.zen/tmp/${IPFSNODEID}/WISH/${PLAYER}/g1voeu/${WISHNAME}/${WISH}
|
||||
|
||||
cat ~/.zen/tmp/${IPFSNODEID}/WISH/${PLAYER}/g1voeu/${PLAYER}.g1voeu.json \
|
||||
| jq .[] | jq -r 'select(.wish=="'${WISH}'")' \
|
||||
> ~/.zen/tmp/${MOATS}/${WISH}.json
|
||||
##########################################################################
|
||||
##########################################################################
|
||||
## RUN SPECIFIC G1Voeu ASTROBOT PROGRAM (like G1CopierYoutube.sh)
|
||||
if [[ -s $MY_PATH/../ASTROBOT/G1${WISHNAME}.sh ]]; then
|
||||
echo "........................ Astrobot G1${WISHNAME}.sh PROGRAM FOUND !"
|
||||
echo "________________________________ Running it *****"
|
||||
${MY_PATH}/../ASTROBOT/G1${WISHNAME}.sh "$INDEX" "${PLAYER}" "$MOATS"
|
||||
${MY_PATH}/../ASTROBOT/G1${WISHNAME}.sh "$INDEX" "${PLAYER}" "$MOATS" "~/.zen/tmp/${MOATS}/${WISH}.json"
|
||||
echo "________________________________ Finished ******"
|
||||
else
|
||||
echo "......................... NO G1${WISHNAME} PROGRAM... "
|
||||
|
@ -165,7 +167,27 @@ do
|
|||
&& rm ~/.zen/tmp/${IPFSNODEID}/WISH/${PLAYER}/g1voeu/${WISHNAME}/_${APLAYER}.tiddlers.rss.json \
|
||||
&& continue
|
||||
|
||||
#####################################################
|
||||
echo "## TIDDLERS FOUND ;) MIAM >>> (◕‿‿◕) <<<"
|
||||
##############################
|
||||
## WRITE FRIEND SAME WISH TIDDLERS IN PLAYER TW ########
|
||||
##############################
|
||||
## SIGN Tiddlers
|
||||
cat ~/.zen/tmp/${IPFSNODEID}/WISH/${PLAYER}/g1voeu/${WISHNAME}/_${APLAYER}.tiddlers.rss.json \
|
||||
| sed "s~${PLAYER}~~g" \
|
||||
| sed "s~${APLAYER}~${APLAYER} ${PLAYER}~g" \
|
||||
> ~/.zen/tmp/${IPFSNODEID}/WISH/${PLAYER}/g1voeu/${WISHNAME}/_${APLAYER}.tiddlers.signed.json
|
||||
|
||||
## ADD TO TW
|
||||
tiddlywiki --load ${INDEX} \
|
||||
--import ~/.zen/tmp/${IPFSNODEID}/WISH/${PLAYER}/g1voeu/${WISHNAME}/_${APLAYER}.tiddlers.signed.json "application/json" \
|
||||
--output ~/.zen/tmp/${MOATS} --render "$:/core/save/all" "newindex.html" "text/plain"
|
||||
## CHECK IT IS OK
|
||||
[[ -s ~/.zen/tmp/${MOATS}/newindex.html ]] \
|
||||
&& cp ~/.zen/tmp/${MOATS}/newindex.html ${INDEX} \
|
||||
&& rm ~/.zen/tmp/${MOATS}/newindex.html
|
||||
|
||||
##############################
|
||||
echo ">>> G1FRIEND § $myIPFS${IPNS_VOEUNS}/_${APLAYER}.tiddlers.rss.json ${WISHNAME}"
|
||||
|
||||
# Extract Origin G1Voeu Tiddler
|
||||
|
@ -255,16 +277,22 @@ do
|
|||
${MY_PATH}/../tools/json_dir.all.sh ~/.zen/tmp/${IPFSNODEID}/WISH/${PLAYER}/g1voeu/${WISHNAME}
|
||||
|
||||
WISHFLUX=$(ipfs add -qHwr ~/.zen/tmp/${IPFSNODEID}/WISH/${PLAYER}/g1voeu/${WISHNAME}/* | tail -n 1) # ADDING JSONS TO IPFS
|
||||
ipfs name publish -k $VOEUKEY /ipfs/$WISHFLUX # PUBLISH $VOEUKEY
|
||||
ipfs --timeout 180s name publish -k $VOEUKEY /ipfs/$WISHFLUX # PUBLISH $VOEUKEY
|
||||
|
||||
echo "## ASK ${myIPFSGW}${IPNS_VOEUNS} TO REFRESH" ## TODO LOOP BOOSTRAP & ONLINE FRIENDS
|
||||
curl -m 120 -so ~/.zen/tmp/${WISHNAME}.astroindex.html "${myIPFSGW}${IPNS_VOEUNS}" &
|
||||
|
||||
## MOVE INTO PLAYER AREA
|
||||
echo ">>> ${PLAYER} G1${WISHNAME} Ŋ1 FLUX $(myIpfsGw)/${IPNS_VOEUNS}"
|
||||
echo ">>> ${PLAYER} G1${WISHNAME} Ŋ1 FLUX $(myIpfsGw)${IPNS_VOEUNS}"
|
||||
echo "WALLET ${VOEUKEY} FOUNDED by ${G1PUB}"
|
||||
cp -f ~/.zen/tmp/${IPFSNODEID}/WISH/${PLAYER}/g1voeu/${WISHNAME}/* ~/.zen/game/players/${PLAYER}/G1${WISHNAME}/${G1PUB}/ 2>/dev/null
|
||||
|
||||
echo "%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%"
|
||||
echo "SEARCH WORLD SAME WISH CACHE"
|
||||
[[ "$WISHNAME" != "" ]] && cat ~/.zen/game/world/$WISHNAME/*/.link 2>/dev/null
|
||||
## ANYTIME A PLAYER CHOOSE AN ASTROPORT - LOCAL WISH CACHE IS EXTENDED -
|
||||
echo "%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%"
|
||||
|
||||
done < ~/.zen/tmp/${IPFSNODEID}/WISH/${PLAYER}/g1voeu/${PLAYER}.g1wishes.txt
|
||||
|
||||
################################################
|
||||
|
@ -275,38 +303,32 @@ if [[ ${wishnumbers} -gt 0 ]]; then
|
|||
--output ~/.zen/tmp/${MOATS} \
|
||||
--render '.' 'GPS.json' 'text/plain' '$:/core/templates/exporters/JsonFile' 'exportFilter' 'GPS' ## GPS Tiddler
|
||||
TWMAPNS=$(cat ~/.zen/tmp/${MOATS}/GPS.json | jq -r .[].umap)
|
||||
[[ $TWMAPNS == "null" || $TWMAPNS == "" ]] && TWMAPNS="/ipns/k51qzi5uqu5djg1gqzujq5p60w25mi235gdg0lgkk5qztkfrpi5c22oolrriyu"
|
||||
LAT=$(cat ~/.zen/tmp/${MOATS}/GPS.json | jq -r .[].lat)
|
||||
[[ ${LAT} == "null" ]] && LAT="0.00"
|
||||
[[ ${LAT} == "null" || ${LAT} == "" ]] && LAT="0.00"
|
||||
LAT=$(makecoord $LAT)
|
||||
LON=$(cat ~/.zen/tmp/${MOATS}/GPS.json | jq -r .[].lon)
|
||||
[[ ${LON} == "null" ]] && LON="0.00"
|
||||
[[ ${LON} == "null" || ${LON} == "" ]] && LON="0.00"
|
||||
LON=$(makecoord $LON)
|
||||
echo "LAT=${LAT}; LON=${LON}; UMAPNS=${TWMAPNS}"
|
||||
rm ~/.zen/tmp/${MOATS}/GPS.json
|
||||
SECLAT="${LAT::-1}"
|
||||
SECLON="${LON::-1}"
|
||||
SECTOR="_${SECLAT}_${SECLON}"
|
||||
##############################################################
|
||||
SECTORG1PUB=$(${MY_PATH}/../tools/keygen -t duniter "${UPLANETNAME}${SECTOR}" "${UPLANETNAME}${SECTOR}")
|
||||
|
||||
## GET UMAP ENV
|
||||
$(${MY_PATH}/../tools/getUMAP_ENV.sh ${LAT} ${LON} | tail -n 1)
|
||||
echo "export UMAPG1PUB=$UMAPG1PUB UMAPIPNS=$UMAPIPNS SECTOR=$SECTOR SECTORG1PUB=$SECTORG1PUB SECTORIPNS=$SECTORIPNS REGION=$REGION REGIONG1PUB=$REGIONG1PUB REGIONIPNS=$REGIONIPNS LAT=$LAT LON=$LON SLAT=$SLAT SLON=$SLON RLAT=$RLAT RLON=$RLON"
|
||||
|
||||
##############################################################
|
||||
GRATITUDE=$($MY_PATH/../tools/getcoins_from_gratitude_box.sh)
|
||||
G1AMOUNT=$(echo "$GRATITUDE / 10" | bc -l | xargs printf "%.2f" | sed "s~,~.~g" )
|
||||
echo "***** PLAYER $PLAYER *************************************"
|
||||
echo "GRATITUDE ${GRATITUDE} ZEN = ${G1AMOUNT} G1
|
||||
to ${SECTOR} WALLET ${SECTORG1PUB}"
|
||||
echo "GRATITUDE ${GRATITUDE} ZEN (${G1AMOUNT} G1)
|
||||
to UMAP_${LAT}_${LON} WALLET ${UMAPG1PUB}"
|
||||
echo "************************************************************"
|
||||
YOUSER=$($MY_PATH/../tools/clyuseryomail.sh "${PLAYER}")
|
||||
MYWISHFLUX=$(ipfs add -qHwr ~/.zen/tmp/${IPFSNODEID}/WISH/${PLAYER}/g1voeu/* | tail -n 1) # ADDING JSONS TO IPFS
|
||||
${MY_PATH}/../tools/PAY4SURE.sh "${HOME}/.zen/game/players/${PLAYER}/secret.dunikey" "${G1AMOUNT}" "${SECTORG1PUB}" "ipfs://${MYWISHFLUX}"
|
||||
${MY_PATH}/../tools/PAY4SURE.sh "${HOME}/.zen/game/players/${PLAYER}/secret.dunikey" "${G1AMOUNT}" "${UMAPG1PUB}" "UPLANET:UWISH:$YOUSER:/ipfs/${MYWISHFLUX}"
|
||||
fi
|
||||
################################################
|
||||
################################################ GRATITUDE SENT TO SECTOR
|
||||
|
||||
echo "%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%"
|
||||
echo "TODO : REFRESH WORLD SAME WISH CACHE"
|
||||
cat ~/.zen/game/world/$WISHNAME/*/.link 2>/dev/null
|
||||
## ANYTIME A PLAYER CHOOSE AN ASTROPORT - LOCAL WISH CACHE IS EXTENDED -
|
||||
echo "%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%"
|
||||
|
||||
############################################
|
||||
|
||||
exit 0
|
||||
|
|
|
@ -0,0 +1,76 @@
|
|||
################################################################################
|
||||
# Author: Fred (support@qo-op.com)
|
||||
# Version: 0.1
|
||||
# License: AGPL-3.0 (https://choosealicense.com/licenses/agpl-3.0/)
|
||||
################################################################################
|
||||
#~ ZEN.SECTOR.memory.sh
|
||||
#~ Search for last "UPLANET:$1:..." in UPLANETG1PUB wallet history
|
||||
#~ INTERCOM="UPLANET:${SECTOR}:${TODATE}:/ipfs/${IPFSPOP}" TX COMMENT are made during SECTOR.refresh.sh
|
||||
#~ ~/.zen/tmp/${MOATS}/${SECTOR} <=> "/ipfs/$ipfs_pop"
|
||||
################################################################################
|
||||
################################################################################
|
||||
MY_PATH="`dirname \"$0\"`" # relative
|
||||
MY_PATH="`( cd \"$MY_PATH\" && pwd )`" # absolutized and normalized
|
||||
. "${MY_PATH}/../tools/my.sh"
|
||||
################################################################################
|
||||
|
||||
SECTOR="$1"
|
||||
[[ $SECTOR == "" ]] && echo "MISSING SECTOR ADRESS" && exit 1
|
||||
MOATS="$2"
|
||||
G1PUB="$3"
|
||||
|
||||
## CHECK FOR BAD PARAM
|
||||
[[ ! -d ~/.zen/tmp/${MOATS-empty}/${SECTOR-empty}/ ]] \
|
||||
&& echo "BAD ~/.zen/tmp/${MOATS}/${SECTOR}" \
|
||||
&& exit 1
|
||||
|
||||
## STARTING
|
||||
start=`date +%s`
|
||||
|
||||
## CORRESPONDING REGION UKEY
|
||||
LAT=$(echo ${SECTOR} | cut -d '_' -f 2)
|
||||
LON=$(echo ${SECTOR} | cut -d '_' -f 3)
|
||||
RLAT=$(echo ${LAT} | cut -d '.' -f 1)
|
||||
RLON=$(echo ${LON} | cut -d '.' -f 1)
|
||||
|
||||
REGION="_${RLAT}_${RLON}"
|
||||
${MY_PATH}/../tools/keygen -t duniter -o ~/.zen/tmp/${MOATS}/${REGION}.priv "${UPLANETNAME}${REGION}" "${UPLANETNAME}${REGION}"
|
||||
REGIONG1PUB=$(cat ~/.zen/tmp/${MOATS}/${REGION}.priv | grep "pub:" | cut -d ' ' -f 2)
|
||||
[[ ! ${REGIONG1PUB} ]] && echo "ERROR generating REGION WALLET" && exit 1
|
||||
COINS=$($MY_PATH/../tools/COINScheck.sh ${REGIONG1PUB} | tail -n 1)
|
||||
echo "REGION : ${REGION} (${COINS} G1) WALLET : ${REGIONG1PUB}"
|
||||
|
||||
## RETRIEVE FROM REGION UKEY
|
||||
${MY_PATH}/../tools/timeout.sh -t 20 ${MY_PATH}/../tools/jaklis/jaklis.py history -n 40 -p ${REGIONG1PUB} -j \
|
||||
> ~/.zen/tmp/${MOATS}/${REGION}.g1history.json
|
||||
|
||||
## SCAN FOR UPLANET:${SECTOR} in TX
|
||||
if [[ -s ~/.zen/tmp/${MOATS}/${REGION}.g1history.json ]]; then
|
||||
|
||||
intercom=$(jq -r '.[] | select(.comment | test("UPLANET:'"${SECTOR}"'")) | .comment' ~/.zen/tmp/${MOATS}/${REGION}.g1history.json | tail -n 1)
|
||||
ipfs_pop=$(echo "$intercom" | rev | cut -d ':' -f 1 | rev)
|
||||
todate=$(echo "$intercom" | rev | cut -d ':' -f 2 | rev)
|
||||
echo "SYNC ${SECTOR} <= $todate (=${YESTERDATE})=> $ipfs_pop"
|
||||
|
||||
[[ ${todate} != ${YESTERDATE} ]] && echo "NO GOOD MEMORY - EXIT" && exit 1
|
||||
|
||||
## TODO: SECURITY PATCH : check payment emitter is from BOOSTRAP
|
||||
if [[ $ipfs_pop ]]; then
|
||||
g1pub=$(jq -r '.[] | select(.comment | test("UPLANET:'"${SECTOR}"'")) | .pubkey' ~/.zen/tmp/${MOATS}/${REGION}.g1history.json | tail -n 1)
|
||||
echo "INFO :: $g1pub Memory updater"
|
||||
ipfs --timeout 180s get --progress="false" -o ~/.zen/tmp/${MOATS}/${SECTOR} $ipfs_pop \
|
||||
&& ipfs pin rm $ipfs_pop \
|
||||
|| echo "$ipfs_pop ERROR ... "
|
||||
else
|
||||
echo "WARNING cannot revover any memory !!"
|
||||
fi
|
||||
|
||||
else
|
||||
echo "FATAL ERROR cannot access to REGIONG1PUB history"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
end=`date +%s`
|
||||
echo "(${SECTOR}.memory) ${todate} get time : "`expr $end - $start` seconds.
|
||||
|
||||
exit 0
|
|
@ -0,0 +1,89 @@
|
|||
################################################################################
|
||||
# Author: Fred (support@qo-op.com)
|
||||
# Version: 0.1
|
||||
# License: AGPL-3.0 (https://choosealicense.com/licenses/agpl-3.0/)
|
||||
################################################################################
|
||||
#~ ZEN.UMAP.memory.sh
|
||||
#~ Search for last "UPLANET:$1:..." in UPLANETG1PUB wallet history
|
||||
#~ INTERCOM="UPLANET:${UMAP}:${TODATE}:/ipfs/${IPFSPOP}" TX COMMENT are made during UPLANET.refresh.sh
|
||||
#~ ~/.zen/tmp/${MOATS}/${UMAP} <=> "/ipfs/$ipfs_pop"
|
||||
################################################################################
|
||||
################################################################################
|
||||
MY_PATH="`dirname \"$0\"`" # relative
|
||||
MY_PATH="`( cd \"$MY_PATH\" && pwd )`" # absolutized and normalized
|
||||
. "${MY_PATH}/../tools/my.sh"
|
||||
################################################################################
|
||||
|
||||
UMAP="$1"
|
||||
[[ $UMAP == "" ]] && echo "MISSING UMAP ADRESS" && exit 1
|
||||
MOATS="$2"
|
||||
G1PUB="$3"
|
||||
|
||||
## CHECK FOR BAD PARAM
|
||||
[[ ! -d ~/.zen/tmp/${MOATS-empty}/${UMAP-empty}/ ]] \
|
||||
&& echo "BAD ~/.zen/tmp/${MOATS}/${UMAP}" \
|
||||
&& exit 1
|
||||
|
||||
## STARTING
|
||||
start=`date +%s`
|
||||
|
||||
## CORRESPONDING SECTOR UKEY
|
||||
LAT=$(echo ${UMAP} | cut -d '_' -f 2)
|
||||
LON=$(echo ${UMAP} | cut -d '_' -f 3)
|
||||
|
||||
## SECTOR COORD
|
||||
SLAT="${LAT::-1}"
|
||||
SLON="${LON::-1}"
|
||||
|
||||
SECTOR="_${SLAT}_${SLON}"
|
||||
|
||||
${MY_PATH}/../tools/keygen -t duniter -o ~/.zen/tmp/${MOATS}/${SECTOR}.priv "${UPLANETNAME}${SECTOR}" "${UPLANETNAME}${SECTOR}"
|
||||
SECTORG1PUB=$(cat ~/.zen/tmp/${MOATS}/${SECTOR}.priv | grep "pub:" | cut -d ' ' -f 2)
|
||||
[[ ! ${SECTORG1PUB} ]] && echo "ERROR generating SECTOR WALLET" && exit 1
|
||||
COINS=$($MY_PATH/../tools/COINScheck.sh ${SECTORG1PUB} | tail -n 1)
|
||||
echo "SECTOR : ${SECTOR} (${COINS} G1) WALLET : ${SECTORG1PUB}"
|
||||
|
||||
## RETRIEVE FROM SECTOR UKEY
|
||||
${MY_PATH}/../tools/timeout.sh -t 20 ${MY_PATH}/../tools/jaklis/jaklis.py history -n 40 -p ${SECTORG1PUB} -j \
|
||||
> ~/.zen/tmp/${MOATS}/${SECTOR}.g1history.json
|
||||
|
||||
## SCAN FOR UPLANET:${UMAP} in TX
|
||||
if [[ -s ~/.zen/tmp/${MOATS}/${SECTOR}.g1history.json ]]; then
|
||||
|
||||
intercom=$(jq -r '.[] | select(.comment | test("UPLANET:'"${UMAP}"'")) | .comment' ~/.zen/tmp/${MOATS}/${SECTOR}.g1history.json | tail -n 1)
|
||||
ipfs_pop=$(echo "$intercom" | rev | cut -d ':' -f 1 | rev)
|
||||
todate=$(echo "$intercom" | rev | cut -d ':' -f 2 | rev)
|
||||
echo "SYNC ${UMAP} <= $todate (=${YESTERDATE})=> $ipfs_pop"
|
||||
|
||||
[[ ${todate} != ${YESTERDATE} ]] && echo "NO GOOD MEMORY - EXIT" && exit 1
|
||||
|
||||
if [[ $ipfs_pop ]]; then
|
||||
echo "FOUND $todate MEMORY SLOT"
|
||||
g1pub=$(jq -r '.[] | select(.comment | test("UPLANET:'"${UMAP}"'")) | .pubkey' ~/.zen/tmp/${MOATS}/${SECTOR}.g1history.json | tail -n 1)
|
||||
echo "INFO :: $g1pub Memory updater"
|
||||
|
||||
## ADD SECURITY : check payment emitter is a "BOOSTRAP" (TODO)
|
||||
nodeid=$(${MY_PATH}/../tools/g1_to_ipfs.py $g1pub)
|
||||
|
||||
ipfs --timeout 360s get --progress="false" -o ~/.zen/tmp/${MOATS}/${UMAP} $ipfs_pop \
|
||||
&& ipfs pin rm $ipfs_pop \
|
||||
|| echo "$ipfs_pop ERROR ... "
|
||||
else
|
||||
echo "WARNING cannot revover any memory !!"
|
||||
fi
|
||||
|
||||
## REMOVE PREVIOUS PIN (in case last one was not mine)
|
||||
antecom=$(jq -r '.[] | select(.comment | test("UPLANET:'"${UMAP}"'")) | .comment' ~/.zen/tmp/${MOATS}/${SECTOR}.g1history.json | tail -n 2 | head -n 1)
|
||||
ipfs_b=$(echo "$antecom" | rev | cut -d ':' -f 1 | rev)
|
||||
[[ ! -z ${ipfs_b} ]] && ipfs pin rm ${ipfs_b}
|
||||
|
||||
|
||||
else
|
||||
echo "FATAL ERROR cannot access to SECTORG1PUB history"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
end=`date +%s`
|
||||
echo "(${UMAP}.memory) ${todate} get time : "`expr $end - $start` seconds.
|
||||
|
||||
exit 0
|
|
@ -0,0 +1,42 @@
|
|||
#!/bin/bash
|
||||
####################################
|
||||
# stats.sh
|
||||
# analyse LOCAL & SWARM data structure
|
||||
####################################
|
||||
MY_PATH="`dirname \"$0\"`" # relative
|
||||
MY_PATH="`( cd \"$MY_PATH\" && pwd )`" # absolutized and normalized
|
||||
ME="${0##*/}"
|
||||
|
||||
. "${MY_PATH}/tools/my.sh"
|
||||
echo "==========================================================="
|
||||
|
||||
####################################
|
||||
# search for active TWS
|
||||
####################################
|
||||
echo " ## SEARCH TW in UPLANET/__/_*_*/_*.?_*.?/_*.??_*.??/TW/*"
|
||||
METW=($(ls -d ~/.zen/tmp/${IPFSNODEID}/UPLANET/__/_*_*/_*.?_*.?/_*.??_*.??/TW/* 2>/dev/null | rev | cut -d '/' -f 1 | rev | sort | uniq))
|
||||
SWARMTW=($(ls -d ~/.zen/tmp/swarm/*/UPLANET/__/_*_*/_*.?_*.?/_*.??_*.??/TW/* 2>/dev/null | rev | cut -d '/' -f 1 | rev | sort | uniq))
|
||||
combined=("${METW[@]}" "${SWARMTW[@]}")
|
||||
unique_combined=($(echo "${combined[@]}" | tr ' ' '\n' | sort -u))
|
||||
|
||||
echo "${#unique_combined[@]} TW(S) : ${unique_combined[@]}"
|
||||
echo "==========================================================="
|
||||
|
||||
####################################
|
||||
# search for active UMAPS
|
||||
####################################
|
||||
echo " ## SEARCH UMAPS in UPLANET/__/_*_*/_*.?_*.?/*"
|
||||
MEMAPS=($(ls -td ~/.zen/tmp/${IPFSNODEID}/UPLANET/__/_*_*/_*.?_*.?/* 2>/dev/null | rev | cut -d '/' -f 1 | rev | sort | uniq))
|
||||
SWARMMAPS=($(ls -Gd ~/.zen/tmp/swarm/*/UPLANET/__/_*_*/_*.?_*.?/* 2>/dev/null | rev | cut -d '/' -f 1 | rev | sort | uniq))
|
||||
combined=("${MEMAPS[@]}" "${SWARMMAPS[@]}")
|
||||
unique_combined=($(echo "${combined[@]}" | tr ' ' '\n' | sort -u))
|
||||
|
||||
echo "${#unique_combined[@]} UMAP(S) : ${unique_combined[@]}"
|
||||
echo "==========================================================="
|
||||
for umap in ${unique_combined[@]}; do
|
||||
lat=$(echo $umap | cut -d '_' -f 2)
|
||||
lon=$(echo $umap | cut -d '_' -f 3)
|
||||
echo $lat $lon
|
||||
${MY_PATH}/tools/getUMAP_ENV.sh $lat $lon | tail -n 1
|
||||
echo
|
||||
done
|
|
@ -170,7 +170,7 @@
|
|||
let durees = [];
|
||||
|
||||
// Récupérer les données
|
||||
fetch('http://127.0.0.1:8080_VOEUNS_/__PLAYER_.tiddlers.json')
|
||||
fetch('http://127.0.0.1:8080_VOEUNS_/__PLAYER_.tiddlers.rss.json')
|
||||
.then(res => res.json())
|
||||
.then(data => {
|
||||
// Extraire les gifanime
|
||||
|
|
|
@ -0,0 +1,3 @@
|
|||
# Images & icons
|
||||
|
||||
Add favicon from the web2.0 you wish to copy to WEB3
|
Before Width: | Height: | Size: 3.7 KiB After Width: | Height: | Size: 3.7 KiB |
Before Width: | Height: | Size: 17 KiB After Width: | Height: | Size: 17 KiB |
Before Width: | Height: | Size: 6.6 KiB After Width: | Height: | Size: 6.6 KiB |
After Width: | Height: | Size: 20 KiB |
Before Width: | Height: | Size: 25 KiB After Width: | Height: | Size: 25 KiB |
Before Width: | Height: | Size: 3.3 KiB After Width: | Height: | Size: 3.3 KiB |
Before Width: | Height: | Size: 17 KiB After Width: | Height: | Size: 17 KiB |
After Width: | Height: | Size: 3.6 KiB |
After Width: | Height: | Size: 2.9 KiB |
Before Width: | Height: | Size: 318 B After Width: | Height: | Size: 318 B |
Before Width: | Height: | Size: 5.3 KiB After Width: | Height: | Size: 5.3 KiB |
Before Width: | Height: | Size: 15 KiB After Width: | Height: | Size: 15 KiB |
Before Width: | Height: | Size: 4.0 KiB After Width: | Height: | Size: 4.0 KiB |
After Width: | Height: | Size: 7.6 KiB |
Before Width: | Height: | Size: 1.6 KiB After Width: | Height: | Size: 1.6 KiB |
Before Width: | Height: | Size: 1.1 KiB After Width: | Height: | Size: 1.1 KiB |
Before Width: | Height: | Size: 6.0 KiB After Width: | Height: | Size: 6.0 KiB |
Before Width: | Height: | Size: 13 KiB After Width: | Height: | Size: 13 KiB |
Before Width: | Height: | Size: 628 B After Width: | Height: | Size: 628 B |
Before Width: | Height: | Size: 16 KiB After Width: | Height: | Size: 16 KiB |
Before Width: | Height: | Size: 36 KiB After Width: | Height: | Size: 36 KiB |
Before Width: | Height: | Size: 3.0 KiB After Width: | Height: | Size: 3.0 KiB |
Before Width: | Height: | Size: 5.0 KiB After Width: | Height: | Size: 5.0 KiB |
Before Width: | Height: | Size: 870 B After Width: | Height: | Size: 870 B |
Before Width: | Height: | Size: 9.4 KiB After Width: | Height: | Size: 9.4 KiB |
Before Width: | Height: | Size: 1.6 KiB After Width: | Height: | Size: 1.6 KiB |
Before Width: | Height: | Size: 5.6 KiB After Width: | Height: | Size: 5.6 KiB |
Before Width: | Height: | Size: 1.2 KiB After Width: | Height: | Size: 1.2 KiB |
Before Width: | Height: | Size: 1.1 KiB After Width: | Height: | Size: 1.1 KiB |
Before Width: | Height: | Size: 1.4 KiB After Width: | Height: | Size: 1.4 KiB |
Before Width: | Height: | Size: 5.4 KiB After Width: | Height: | Size: 5.4 KiB |
Before Width: | Height: | Size: 822 B After Width: | Height: | Size: 822 B |
Before Width: | Height: | Size: 198 B After Width: | Height: | Size: 198 B |
Before Width: | Height: | Size: 15 KiB After Width: | Height: | Size: 15 KiB |
After Width: | Height: | Size: 14 KiB |
|
@ -0,0 +1,13 @@
|
|||
# WWW
|
||||
|
||||
|
||||
This directory contains "ASTROBOT" programs templates
|
||||
+ some icons and favicons for web scraping services included in UMAP during ```/RUNTIME/UPLANET.refresh.sh```
|
||||
|
||||
* example:
|
||||
```/ASTROBOT/G1CopierYoutube.sh```
|
||||
```/WWW/CopierYoutube/```
|
||||
|
||||
_sandbox
|
||||
|
||||
just piece of code... you can use and make official
|
|
@ -0,0 +1,61 @@
|
|||
# SCRIPT01/BLOCKCHAIN01
|
||||
|
||||
## ssh
|
||||
|
||||
https://pad.p2p.legal/keygen
|
||||
|
||||
## git
|
||||
|
||||
```
|
||||
git add .
|
||||
git commit -m "mon commentaire"
|
||||
git push
|
||||
```
|
||||
|
||||
## $() function
|
||||
|
||||
```
|
||||
. ${MY_PATH}/my.sh
|
||||
|
||||
```
|
||||
|
||||
## Absolute ${MY_PATH}
|
||||
|
||||
```
|
||||
MY_PATH="`dirname \"$0\"`" # relative
|
||||
MY_PATH="`( cd \"$MY_PATH\" && pwd )`" # absolutized and normalized
|
||||
ME="${0##*/}"
|
||||
```
|
||||
|
||||
## ${} variable
|
||||
|
||||
```
|
||||
VAR="value or list of terms"
|
||||
TAB=("value or list of terms")
|
||||
|
||||
echo ${VAR}
|
||||
echo ${TAB}
|
||||
echo ${TAB[@]}
|
||||
|
||||
# for, while, select, ... done (< read source)
|
||||
|
||||
```
|
||||
|
||||
## bug des leviers
|
||||
|
||||
```
|
||||
sed -i='' 's/off/on/' ../logic/stationlogic.ben
|
||||
```
|
||||
|
||||
## WSL problème décodage
|
||||
|
||||
```
|
||||
dos2unix
|
||||
```
|
||||
|
||||
|
||||
# FORMATION WEB3 : https://chaton.g1sms.fr
|
||||
|
||||
Ajoutez une "Zen Station" à votre Région.
|
||||
|
||||
* Installez Astroport.ONE et suivez la procédure : https://pad.p2p.legal/keygen pour relier votre clef SSH à IPFS et rejoindre la toile de confiance des Dragons, hébergeurs collectifs "LeClaude"
|
351
_12345.sh
|
@ -12,15 +12,16 @@ MY_PATH="`( cd \"$MY_PATH\" && pwd )`" # absolutized and normalized
|
|||
. "${MY_PATH}/tools/my.sh"
|
||||
|
||||
## SEND LOG TO ~/.zen/tmp/_12345.log
|
||||
rm ~/.zen/tmp/_12345.log
|
||||
exec 2>&1 >> ~/.zen/tmp/_12345.log
|
||||
|
||||
PORT=12345
|
||||
|
||||
YOU=$(myIpfsApi); ## API of $USER running ipfs
|
||||
LIBRA=$(head -n 2 ~/.zen/Astroport.ONE/A_boostrap_nodes.txt | tail -n 1 | cut -d ' ' -f 2) ## SWARM#0 ENTRANCE URL
|
||||
LIBRA=$(head -n 2 ~/.zen/Astroport.ONE/A_boostrap_nodes.txt | tail -n 1 | xargs | cut -d ' ' -f 2) ## SWARM#0 ENTRANCE URL
|
||||
|
||||
## KILLING OLD DAEMON OF MYSELF
|
||||
ncrunning=$(ps axf --sort=+utime | grep -w 'nc -l -p 12345' | grep -v -E 'color=auto|grep' | tail -n 1 | cut -d " " -f 2)
|
||||
ncrunning=$(ps axf --sort=+utime | grep -w 'nc -l -p 12345' | grep -v -E 'color=auto|grep' | tail -n 1 | xargs | cut -d " " -f 1)
|
||||
[[ $ncrunning != "" ]] && echo "(≖‿‿≖) - KILLING Already Running MAP Server - (≖‿‿≖) " && kill -9 $ncrunning
|
||||
|
||||
## WHAT IS NODEG1PUB
|
||||
|
@ -43,206 +44,238 @@ echo "$(date -u)" > ~/.zen/tmp/${IPFSNODEID}/_MySwarm.staom
|
|||
## MySwarm KEY INIT & SET
|
||||
############################################################
|
||||
## CREATE CHAN = MySwarm_${IPFSNODEID}
|
||||
CHAN=$(ipfs key list -l | grep -w "MySwarm_${IPFSNODEID}" | cut -d ' ' -f 1)
|
||||
CHAN=$(ipfs key list -l | grep -w "MySwarm_${IPFSNODEID}" | cut -d ' ' -f 1)
|
||||
|
||||
#######################################################
|
||||
## CREATE MySwarm KEYS ?
|
||||
if [[ ${CHAN} == "" || ${CHAN} == "null" ]]; then
|
||||
echo "## MAKE /proc/cpuinfo IPFSNODEID DERIVATED KEY ##"
|
||||
SECRET1=$(cat /proc/cpuinfo | grep -Ev MHz | sha512sum | cut -d ' ' -f 1)
|
||||
SECRET2=${IPFSNODEID}
|
||||
echo "SALT=$SECRET1 && PEPPER=$SECRET2" > ~/.zen/game/myswarm_secret.june
|
||||
${MY_PATH}/tools/keygen -t ipfs -o ~/.zen/game/myswarm_secret.ipfskey "$SECRET1" "$SECRET2"
|
||||
${MY_PATH}/tools/keygen -t duniter -o ~/.zen/game/myswarm_secret.dunikey "$SECRET1" "$SECRET2"
|
||||
ipfs key import "MySwarm_${IPFSNODEID}" -f pem-pkcs8-cleartext ~/.zen/game/myswarm_secret.ipfskey
|
||||
CHAN=$(ipfs key list -l | grep -w "MySwarm_${IPFSNODEID}" | cut -d ' ' -f 1 )
|
||||
fi
|
||||
######################################################## MAKE IPFS NODE CHAN ID CPU RELATED
|
||||
#######################################################
|
||||
## CREATE MySwarm KEYS ?
|
||||
if [[ ${CHAN} == "" || ${CHAN} == "null" || ! -s ~/.zen/game/myswarm_secret.june ]]; then
|
||||
echo "## MAKE /proc/cpuinfo IPFSNODEID DERIVATED KEY ##"
|
||||
SECRET1=$(cat /proc/cpuinfo | grep -Ev MHz | sha512sum | cut -d ' ' -f 1)
|
||||
SECRET2=${IPFSNODEID}
|
||||
ipfs key rm "MySwarm_${IPFSNODEID}"
|
||||
echo "SALT=$SECRET1 && PEPPER=$SECRET2" > ~/.zen/game/myswarm_secret.june
|
||||
${MY_PATH}/tools/keygen -t ipfs -o ~/.zen/game/myswarm_secret.ipfskey "$SECRET1" "$SECRET2"
|
||||
${MY_PATH}/tools/keygen -t duniter -o ~/.zen/game/myswarm_secret.dunikey "$SECRET1" "$SECRET2"
|
||||
ipfs key import "MySwarm_${IPFSNODEID}" -f pem-pkcs8-cleartext ~/.zen/game/myswarm_secret.ipfskey
|
||||
CHAN=$(ipfs key list -l | grep -w "MySwarm_${IPFSNODEID}" | cut -d ' ' -f 1 )
|
||||
fi
|
||||
######################################################## MAKE IPFS NODE CHAN ID CPU RELATED
|
||||
|
||||
## PUBLISH CHANNEL IPNS
|
||||
echo "<meta http-equiv=\"refresh\" content=\"0; url='/ipns/${CHAN}'\" />" > ~/.zen/tmp/${IPFSNODEID}/_MySwarm.$(myHostName).html
|
||||
echo "<meta http-equiv=\"refresh\" content=\"0; url='/ipns/${CHAN}'\" />" > ~/.zen/tmp/${IPFSNODEID}/_MySwarm.$(myHostName).html
|
||||
|
||||
############################################################
|
||||
############################################################
|
||||
echo 0 > ~/.zen/tmp/random.sleep
|
||||
###################
|
||||
# NEVER ENDING LOOP
|
||||
###################################################################
|
||||
###############################################
|
||||
##############################
|
||||
#### UPLANET GEOKEYS_refresh
|
||||
${MY_PATH}/RUNTIME/GEOKEYS_refresh.sh &
|
||||
|
||||
###################################################################
|
||||
## WILL SCAN ALL BOOSTRAP - REFRESH "SELF IPNS BALISE" - RECEIVE UPLINK ORDERS
|
||||
###################################################################
|
||||
###################
|
||||
# NEVER ENDING LOOP
|
||||
while true; do
|
||||
|
||||
start=`date +%s`
|
||||
MOATS=$(date -u +"%Y%m%d%H%M%S%4N")
|
||||
[[ ${myIP} == "" ]] && source "${MY_PATH}/tools/my.sh" ## correct 1st run DHCP latency
|
||||
echo "/ip4/${myIP}/tcp/4001/p2p/${IPFSNODEID}" > ~/.zen/tmp/${IPFSNODEID}/myIPFS.txt
|
||||
|
||||
lastrun=$(cat ~/.zen/tmp/${IPFSNODEID}/_MySwarm.moats)
|
||||
duree=$(expr ${MOATS} - $lastrun)
|
||||
|
||||
## FIXING TIC TAC FOR NODE & SWARM REFRESH ( 1H )
|
||||
if [[ ${duree} -gt 3600000 ]]; then
|
||||
## FIXING TIC TAC FOR NODE & SWARM REFRESH ( 1H in ms )
|
||||
if [[ ${duree} -gt 3600000 || ${duree} == "" ]]; then
|
||||
|
||||
#####################################
|
||||
( ##### SUB-PROCESS RUN
|
||||
exec 2>&1 >> ~/.zen/tmp/_12345.log
|
||||
start=`date +%s`
|
||||
### STOP SWARM SYNC 1H BEFORE 20H12
|
||||
if [[ -s /tmp/20h12.log ]]; then
|
||||
current_time=$(date +%s)
|
||||
file_modification_time=$(stat -c %Y "/tmp/20h12.log")
|
||||
time_difference=$((current_time - file_modification_time))
|
||||
[ "$time_difference" -ge $(( 23 * 60 * 60 )) ] \
|
||||
&& echo "$(date +"%H%M") : 20H12 is coming... " && continue
|
||||
fi
|
||||
PLAYERONE=($(ls -t ~/.zen/game/players/ | grep "@" 2>/dev/null))
|
||||
[[ ${PLAYERONE[@]} == "" ]] && echo "EMPTY ASTROPORT - NO PLAYER - NO PUBLISHING" && continue
|
||||
|
||||
# MONITOR pending
|
||||
for player in ${PLAYERONE[@]}; do
|
||||
g1pub=$(cat ~/.zen/game/players/${player}/.g1pub 2>/dev/null)
|
||||
# Check Station PLAYER payments
|
||||
PENDINGS=($(ls "$HOME/.zen/game/pending/${g1pub}/*.TX"))
|
||||
for pending in "${PENDINGS[@]}"; do
|
||||
echo ${pending}
|
||||
# TODO TREAT PENDINGS
|
||||
#
|
||||
## CHECK IF IPFS NODE IS RESPONDING
|
||||
ipfs --timeout=30s swarm peers 2>/dev/null > ~/.zen/tmp/ipfs.swarm.peers
|
||||
[[ ! -s ~/.zen/tmp/ipfs.swarm.peers || $? != 0 ]] \
|
||||
&& echo "---- SWARM COMMUNICATION BROKEN / RESTARTING IPFS DAEMON ----" \
|
||||
&& sudo systemctl restart ipfs \
|
||||
&& sleep 60
|
||||
|
||||
${MY_PATH}/ping_bootstrap.sh
|
||||
|
||||
#### UPLANET FLASHMEM UPDATES
|
||||
${MY_PATH}/RUNTIME/GEOKEYS_refresh.sh &
|
||||
|
||||
#####################################
|
||||
( ##### SUB-PROCESS £
|
||||
start=`date +%s`
|
||||
|
||||
# MONITOR pending
|
||||
for player in ${PLAYERONE[@]}; do
|
||||
g1pub=$(cat ~/.zen/game/players/${player}/.g1pub 2>/dev/null)
|
||||
# Check Station PLAYER payments
|
||||
PENDINGS=($(ls "$HOME/.zen/game/pending/${g1pub}/*.TX" 2>/dev/null))
|
||||
for pending in "${PENDINGS[@]}"; do
|
||||
echo ${pending}
|
||||
# TODO TREAT PENDINGS
|
||||
#
|
||||
done
|
||||
done
|
||||
done
|
||||
|
||||
############# GET BOOSTRAP SWARM DATA
|
||||
for bootnode in $(cat ~/.zen/Astroport.ONE/A_boostrap_nodes.txt | grep -Ev "#" | grep -v '^[[:space:]]*$') # remove comments and empty lines
|
||||
do
|
||||
############# GET BOOSTRAP SWARM DATA
|
||||
for bootnode in $(cat ~/.zen/Astroport.ONE/A_boostrap_nodes.txt | grep -Ev "#" | grep -v '^[[:space:]]*$') # remove comments and empty lines
|
||||
do
|
||||
|
||||
## ex: /ip4/149.102.158.67/tcp/4001/p2p/12D3KooWL2FcDJ41U9SyLuvDmA5qGzyoaj2RoEHiJPpCvY8jvx9u)
|
||||
echo "############# RUN LOOP ######### $(date)"
|
||||
ipfsnodeid=${bootnode##*/}
|
||||
## ex: /ip4/149.102.158.67/tcp/4001/p2p/12D3KooWL2FcDJ41U9SyLuvDmA5qGzyoaj2RoEHiJPpCvY8jvx9u)
|
||||
echo "############# RUN LOOP ######### $(date)"
|
||||
ipfsnodeid=${bootnode##*/}
|
||||
|
||||
[[ ${ipfsnodeid} == ${IPFSNODEID} ]] && echo "MYSELF : ${IPFSNODEID} - CONTINUE" && continue
|
||||
[[ ${ipfsnodeid} == ${IPFSNODEID} ]] && echo "MYSELF : ${IPFSNODEID} - CONTINUE" && continue
|
||||
|
||||
[[ ${ipfsnodeid} == "null" || ${ipfsnodeid} == "" ]] && echo "BAD ${IPFSNODEID} - CONTINUE" && continue
|
||||
[[ ${ipfsnodeid} == "null" || ${ipfsnodeid} == "" ]] && echo "BAD ${IPFSNODEID} - CONTINUE" && continue
|
||||
|
||||
## SWARM CONNECT
|
||||
ipfs swarm connect ${bootnode}
|
||||
## SWARM CONNECT
|
||||
ipfs swarm connect ${bootnode}
|
||||
|
||||
## PREPARE TO REFRESH SWARM LOCAL CACHE
|
||||
mkdir -p ~/.zen/tmp/swarm/${ipfsnodeid}
|
||||
mkdir -p ~/.zen/tmp/-${ipfsnodeid}
|
||||
## PREPARE TO REFRESH SWARM LOCAL CACHE
|
||||
mkdir -p ~/.zen/tmp/swarm/${ipfsnodeid}
|
||||
mkdir -p ~/.zen/tmp/-${ipfsnodeid}
|
||||
|
||||
## GET bootnode IP
|
||||
iptype=$(echo ${bootnode} | cut -d '/' -f 2)
|
||||
nodeip=$(echo ${bootnode} | cut -d '/' -f 3)
|
||||
## GET bootnode IP
|
||||
iptype=$(echo ${bootnode} | cut -d '/' -f 2)
|
||||
nodeip=$(echo ${bootnode} | cut -d '/' -f 3)
|
||||
|
||||
## IPFS GET TO /swarm/${ipfsnodeid}
|
||||
echo "GETTING ${nodeip} : /ipns/${ipfsnodeid}"
|
||||
ipfs --timeout 720s get -o ~/.zen/tmp/-${ipfsnodeid}/ /ipns/${ipfsnodeid}/
|
||||
## IPFS GET TO /swarm/${ipfsnodeid}
|
||||
echo "GETTING ${nodeip} : /ipns/${ipfsnodeid}"
|
||||
ipfs --timeout 720s get --progress="false" -o ~/.zen/tmp/-${ipfsnodeid}/ /ipns/${ipfsnodeid}/
|
||||
|
||||
## SHOW WHAT WE GET
|
||||
echo "__________________________________________________"
|
||||
ls ~/.zen/tmp/-${ipfsnodeid}/
|
||||
echo "__________________________________________________"
|
||||
## SHOW WHAT WE GET
|
||||
echo "__________________________________________________"
|
||||
ls ~/.zen/tmp/-${ipfsnodeid}/
|
||||
echo "__________________________________________________"
|
||||
|
||||
## LOCAL CACHE SWITCH WITH LATEST
|
||||
if [[ -s ~/.zen/tmp/-${ipfsnodeid}/_MySwarm.moats ]]; then
|
||||
if [[ $(diff ~/.zen/tmp/-${ipfsnodeid}/_MySwarm.moats ~/.zen/tmp/swarm/${ipfsnodeid}/_MySwarm.moats) || $(cat ~/.zen/tmp/swarm/${ipfsnodeid}/_MySwarm.moats 2>/dev/null) == "" ]]; then
|
||||
rm -Rf ~/.zen/tmp/swarm/${ipfsnodeid}
|
||||
mv ~/.zen/tmp/-${ipfsnodeid} ~/.zen/tmp/swarm/${ipfsnodeid}
|
||||
echo "UPDATED : ~/.zen/tmp/swarm/${ipfsnodeid}"
|
||||
## LOCAL CACHE SWITCH WITH LATEST
|
||||
if [[ -s ~/.zen/tmp/-${ipfsnodeid}/_MySwarm.moats ]]; then
|
||||
if [[ $(diff ~/.zen/tmp/-${ipfsnodeid}/_MySwarm.moats ~/.zen/tmp/swarm/${ipfsnodeid}/_MySwarm.moats) || $(cat ~/.zen/tmp/swarm/${ipfsnodeid}/_MySwarm.moats 2>/dev/null) == "" ]]; then
|
||||
rm -Rf ~/.zen/tmp/swarm/${ipfsnodeid}
|
||||
mv ~/.zen/tmp/-${ipfsnodeid} ~/.zen/tmp/swarm/${ipfsnodeid}
|
||||
echo "UPDATED : ~/.zen/tmp/swarm/${ipfsnodeid}"
|
||||
else
|
||||
echo "TimeStamp unchanged : $(cat ~/.zen/tmp/swarm/${ipfsnodeid}/_MySwarm.moats)"
|
||||
rm -Rf ~/.zen/tmp/-${ipfsnodeid}/
|
||||
continue
|
||||
fi
|
||||
else
|
||||
echo "TimeStamp unchanged : $(cat ~/.zen/tmp/swarm/${ipfsnodeid}/_MySwarm.moats)"
|
||||
rm -Rf ~/.zen/tmp/-${ipfsnodeid}/
|
||||
echo "UNREACHABLE /ipns/${ipfsnodeid}/"
|
||||
continue
|
||||
fi
|
||||
else
|
||||
echo "UNREACHABLE /ipns/${ipfsnodeid}/"
|
||||
continue
|
||||
fi
|
||||
|
||||
## ASK BOOSTRAP NODE TO GET MY MAP UPSYNC
|
||||
## - MAKES MY BALISE PRESENT IN BOOSTRAP SWARM KEY -
|
||||
if [[ $iptype == "ip4" || $iptype == "ip6" ]]; then
|
||||
## ASK BOOSTRAP NODE TO GET MY MAP UPSYNC
|
||||
## - MAKES MY BALISE PRESENT IN BOOSTRAP SWARM KEY -
|
||||
if [[ $iptype == "ip4" || $iptype == "ip6" ]]; then
|
||||
|
||||
############ UPSYNC CALL
|
||||
echo "STATION MAP UPSYNC : curl -s http://${nodeip}:12345/?${NODEG1PUB}=${IPFSNODEID}"
|
||||
curl -s -m 10 http://${nodeip}:12345/?${NODEG1PUB}=${IPFSNODEID} -o ~/.zen/tmp/swarm/${ipfsnodeid}/map.${nodeip}.json
|
||||
############ UPSYNC CALL
|
||||
echo "STATION MAP UPSYNC : curl -s http://${nodeip}:12345/?${NODEG1PUB}=${IPFSNODEID}"
|
||||
curl -s -m 10 http://${nodeip}:12345/?${NODEG1PUB}=${IPFSNODEID} \
|
||||
-o ~/.zen/tmp/swarm/${ipfsnodeid}/12345.${nodeip}.json
|
||||
|
||||
## LOOKING IF ITS SWARM MAP COULD COMPLETE MINE
|
||||
echo "ANALYSING BOOSTRAP SWARM MAP"
|
||||
itipnswarmap=$(cat ~/.zen/tmp/swarm/${ipfsnodeid}/map.${nodeip}.json | jq -r '.g1swarm' | rev | cut -d '/' -f 1 | rev )
|
||||
ipfs ls /ipns/${itipnswarmap} | rev | cut -d ' ' -f 1 | rev | cut -d '/' -f 1 > ~/.zen/tmp/_swarm.${ipfsnodeid}
|
||||
## LOOKING IF ITS SWARM MAP COULD COMPLETE MINE
|
||||
echo "ANALYSING BOOSTRAP SWARM MAP"
|
||||
itipnswarmap=$(cat ~/.zen/tmp/swarm/${ipfsnodeid}/12345.${nodeip}.json | jq -r '.g1swarm' | rev | cut -d '/' -f 1 | rev )
|
||||
ipfs ls /ipns/${itipnswarmap} | rev | cut -d ' ' -f 1 | rev | cut -d '/' -f 1 > ~/.zen/tmp/_swarm.${ipfsnodeid}
|
||||
|
||||
echo "================ ${nodeip}:12345 ZNODS LIST"
|
||||
cat ~/.zen/tmp/_swarm.${ipfsnodeid}
|
||||
echo "============================================"
|
||||
for znod in $(cat ~/.zen/tmp/_swarm.${ipfsnodeid}); do
|
||||
# CHECK znod validity
|
||||
cznod=$(${MY_PATH}/tools/ipfs_to_g1.py ${znod} 2>/dev/null)
|
||||
[[ ${cznod} == "" || ${cznod} == "null" ]] && echo "xxxxxxxxxxxx BAD ${znod} xxxx ON xxxxxx ${ipfsnodeid} - ERROR - CONTINUE" && continue
|
||||
echo "================ ${nodeip}:12345 ZNODS LIST"
|
||||
cat ~/.zen/tmp/_swarm.${ipfsnodeid}
|
||||
echo "============================================"
|
||||
for znod in $(cat ~/.zen/tmp/_swarm.${ipfsnodeid}); do
|
||||
# CHECK znod validity
|
||||
cznod=$(${MY_PATH}/tools/ipfs_to_g1.py ${znod} 2>/dev/null)
|
||||
[[ ${cznod} == "" || ${cznod} == "null" ]] \
|
||||
&& echo "xxxxxxxxxxxx BAD ${znod} xxxx ON xxxxxx ${ipfsnodeid} - ERROR - CONTINUE" \
|
||||
&& continue
|
||||
[[ ${cznod} == ${IPFSNODEID} ]] \
|
||||
&& echo "IPFSNODEID MIRROR ME" \
|
||||
&& continue
|
||||
|
||||
if [[ ! -d ~/.zen/tmp/swarm/${znod} ]]; then
|
||||
echo "COMPLETING MY SWARM DATA WITH ZNOD=${znod}"
|
||||
echo "REFRESHING MY SWARM DATA WITH ZNOD=${znod}"
|
||||
mkdir -p ~/.zen/tmp/swarm/${znod}
|
||||
ipfs --timeout 180s get -o ~/.zen/tmp/swarm/${znod} /ipns/${znod}
|
||||
else
|
||||
echo "____________ KNOW ${znod}"
|
||||
# TODO : SPEEDUP REFRESH COMPARE _MySwarm.moats AND KEEP LASTEST
|
||||
fi
|
||||
ipfs --timeout 180s get --progress="false" -o ~/.zen/tmp/swarm/${znod} /ipns/${znod}
|
||||
|
||||
ZMOATS=$(cat ~/.zen/tmp/swarm/${znod}/_MySwarm.moats 2>/dev/null)
|
||||
MOATS_SECONDS=$(${MY_PATH}/tools/MOATS2seconds.sh ${MOATS})
|
||||
ZMOATS_SECONDS=$(${MY_PATH}/tools/MOATS2seconds.sh ${ZMOATS})
|
||||
DIFF_SECONDS=$((MOATS_SECONDS - ZMOATS_SECONDS))
|
||||
if [ ${DIFF_SECONDS} -gt $(( 3 * 24 * 60 * 60 )) ]; then
|
||||
echo "STATION IS STUCK... FOR TOO LONG... REMOVING FROM SWARM"
|
||||
rm -Rf ~/.zen/tmp/swarm/${znod}/
|
||||
else
|
||||
echo "${DIFF_SECONDS} seconds old"
|
||||
fi
|
||||
ZMOATS=$(cat ~/.zen/tmp/swarm/${znod}/_MySwarm.moats 2>/dev/null)
|
||||
MOATS_SECONDS=$(${MY_PATH}/tools/MOATS2seconds.sh ${MOATS})
|
||||
ZMOATS_SECONDS=$(${MY_PATH}/tools/MOATS2seconds.sh ${ZMOATS})
|
||||
DIFF_SECONDS=$((MOATS_SECONDS - ZMOATS_SECONDS))
|
||||
if [ ${DIFF_SECONDS} -gt $(( 3 * 24 * 60 * 60 )) ]; then
|
||||
echo "STATION IS STUCK... FOR TOO LONG... REMOVING ${znod} FROM SWARM"
|
||||
rm -Rf ~/.zen/tmp/swarm/${znod}/
|
||||
else
|
||||
echo "${DIFF_SECONDS} seconds old"
|
||||
fi
|
||||
|
||||
done
|
||||
echo "============================================"
|
||||
done
|
||||
echo "============================================"
|
||||
|
||||
fi ## IP4 WAN BOOTSRAP UPSYNC FINISHED
|
||||
fi ## IP4 WAN BOOTSRAP UPSYNC FINISHED
|
||||
|
||||
done
|
||||
done
|
||||
|
||||
#############################################
|
||||
# ERASE EMPTY DIRECTORIES
|
||||
du -b ~/.zen/tmp/swarm > /tmp/du
|
||||
while read branch; do [[ $branch =~ "4096" ]] && echo "empty $branch" && rm -Rf $(echo $branch | cut -f 2 -d ' '); done < /tmp/du
|
||||
############### UPDATE MySwarm CHAN
|
||||
ls ~/.zen/tmp/swarm
|
||||
SWARMSIZE=$(du -b ~/.zen/tmp/swarm | tail -n 1 | cut -f 1)
|
||||
#############################################
|
||||
# ERASE EMPTY DIRECTORIES
|
||||
du -b ~/.zen/tmp/swarm > /tmp/du
|
||||
while read branch; do [[ $branch =~ "4096" ]] && echo "empty $branch" && rm -Rf $(echo $branch | cut -f 2 -d ' '); done < /tmp/du
|
||||
############### UPDATE MySwarm CHAN
|
||||
ls ~/.zen/tmp/swarm
|
||||
SWARMSIZE=$(du -b ~/.zen/tmp/swarm | tail -n 1 | xargs | cut -f 1)
|
||||
|
||||
## SIZE MODIFIED => PUBLISH MySwarm_${IPFSNODEID}
|
||||
[[ ${SWARMSIZE} != $(cat ~/.zen/tmp/swarm/.bsize 2>/dev/null) ]] \
|
||||
&& echo ${SWARMSIZE} > ~/.zen/tmp/swarm/.bsize \
|
||||
&& SWARMH=$(ipfs add -rwq ~/.zen/tmp/swarm/* | tail -n 1 ) \
|
||||
&& echo "=== ~/.zen/tmp/swarm EVOLVED : PUBLISHING NEW STATE ===" \
|
||||
&& ipfs name publish --key "MySwarm_${IPFSNODEID}" /ipfs/${SWARMH}
|
||||
#############################################
|
||||
## SIZE MODIFIED => PUBLISH MySwarm_${IPFSNODEID}
|
||||
[[ ${SWARMSIZE} != $(cat ~/.zen/tmp/swarm/.bsize 2>/dev/null) ]] \
|
||||
&& echo ${SWARMSIZE} > ~/.zen/tmp/swarm/.bsize \
|
||||
&& SWARMH=$(ipfs add -rwq ~/.zen/tmp/swarm/* | tail -n 1 ) \
|
||||
&& echo "=== ~/.zen/tmp/swarm EVOLVED : PUBLISHING NEW STATE ===" \
|
||||
&& ipfs name publish --key "MySwarm_${IPFSNODEID}" /ipfs/${SWARMH}
|
||||
#############################################
|
||||
|
||||
######################################
|
||||
############# RE PUBLISH SELF BALISE
|
||||
######################################
|
||||
############# RE PUBLISH SELF BALISE
|
||||
|
||||
# Clean Empty Directory (inode dependancy BUG ??)
|
||||
du -b ~/.zen/tmp/${IPFSNODEID} > /tmp/du
|
||||
while read branch; do [[ $branch =~ "4096" ]] && echo "empty $branch" && rm -Rf $(echo $branch | cut -f 2 -d ' '); done < /tmp/du
|
||||
# Clean Empty Directory
|
||||
du -b ~/.zen/tmp/${IPFSNODEID} > /tmp/du
|
||||
while read branch; do [[ $branch =~ "4096" ]] && echo "empty $branch" && rm -Rf $(echo $branch | cut -f 2 -d ' '); done < /tmp/du
|
||||
|
||||
# Scan local cache
|
||||
ls ~/.zen/tmp/${IPFSNODEID}/
|
||||
BSIZE=$(du -b ~/.zen/tmp/${IPFSNODEID} | tail -n 1 | cut -f 1)
|
||||
# Scan IPFSNODEID cache
|
||||
ls ~/.zen/tmp/${IPFSNODEID}/
|
||||
BSIZE=$(du -b ~/.zen/tmp/${IPFSNODEID} | tail -n 1 | xargs | cut -f 1)
|
||||
|
||||
## IPFS GET LAST PUBLISHED MAP VERSION
|
||||
rm -Rf ~/.zen/tmp/_${IPFSNODEID} 2>/dev/null
|
||||
mkdir -p ~/.zen/tmp/_${IPFSNODEID}
|
||||
ipfs get -o ~/.zen/tmp/_${IPFSNODEID}/ /ipns/${IPFSNODEID}/
|
||||
NSIZE=$(du -b ~/.zen/tmp/_${IPFSNODEID} | tail -n 1 | cut -f 1)
|
||||
## IPFS GET LAST ONLINE IPFSNODEID MAP
|
||||
rm -Rf ~/.zen/tmp/_${IPFSNODEID} 2>/dev/null
|
||||
mkdir -p ~/.zen/tmp/_${IPFSNODEID}
|
||||
ipfs get --progress="false" -o ~/.zen/tmp/_${IPFSNODEID}/ /ipns/${IPFSNODEID}/
|
||||
NSIZE=$(du -b ~/.zen/tmp/_${IPFSNODEID} | tail -n 1 | xargs | cut -f 1)
|
||||
|
||||
### CHECK IF SIZE DIFFERENCE ?
|
||||
## Local / IPNS size differ => FUSION LOCAL OVER ONLINE & PUBLISH
|
||||
[[ ${BSIZE} != ${NSIZE} ]] \
|
||||
&& echo "${MOATS}" > ~/.zen/tmp/${IPFSNODEID}/_MySwarm.moats \
|
||||
&& MYCACHE=$(ipfs add -rwq ~/.zen/tmp/${IPFSNODEID}/* | tail -n 1 ) \
|
||||
&& echo "PUBLISHING NEW BALISE STATE FOR STATION /ipns/${IPFSNODEID} INDEXES = $BSIZE octets" \
|
||||
&& ipfs name publish /ipfs/${MYCACHE}
|
||||
### CHECK IF SIZE DIFFERENCE ?
|
||||
## Local / IPNS size differ => FUSION LOCAL OVER ONLINE & PUBLISH
|
||||
[[ ${BSIZE} != ${NSIZE} ]] \
|
||||
&& echo "${MOATS}" > ~/.zen/tmp/${IPFSNODEID}/_MySwarm.moats \
|
||||
&& MYCACHE=$(ipfs add -rwq ~/.zen/tmp/${IPFSNODEID}/* | tail -n 1 ) \
|
||||
&& echo "PUBLISHING NEW BALISE STATE FOR STATION /ipns/${IPFSNODEID} INDEXES = $BSIZE octets" \
|
||||
&& ipfs name publish /ipfs/${MYCACHE}
|
||||
|
||||
end=`date +%s`
|
||||
echo "(*__*) MySwam Update ($BSIZE B) duration was "`expr $end - $start`' seconds. '$(date)
|
||||
end=`date +%s`
|
||||
echo "(*__*) MySwam Update ($BSIZE B) duration was "`expr $end - $start`' seconds. '$(date)
|
||||
|
||||
) & ##### SUB-PROCESS
|
||||
) & ##### SUB-PROCESS
|
||||
|
||||
# last run recording
|
||||
echo "${MOATS}" > ~/.zen/tmp/${IPFSNODEID}/_MySwarm.moats
|
||||
echo "$(date -u)" > ~/.zen/tmp/${IPFSNODEID}/_MySwarm.staom
|
||||
# last run recording
|
||||
echo "${MOATS}" > ~/.zen/tmp/${IPFSNODEID}/_MySwarm.moats
|
||||
echo "$(date -u)" > ~/.zen/tmp/${IPFSNODEID}/_MySwarm.staom
|
||||
|
||||
else
|
||||
|
||||
|
@ -279,6 +312,7 @@ Content-Type: application/json; charset=UTF-8
|
|||
|
||||
if [[ $T2WAIT == 0 || $T2WAIT != $(cat ~/.zen/tmp/random.sleep 2>/dev/null) ]]; then
|
||||
(
|
||||
echo "# AUTO RELAUNCH IN $T2WAIT SECONDS"
|
||||
echo $T2WAIT > ~/.zen/tmp/random.sleep
|
||||
sleep $T2WAIT && rm ~/.zen/tmp/random.sleep
|
||||
curl -s "http://127.0.0.1:12345"
|
||||
|
@ -299,26 +333,35 @@ Content-Type: application/json; charset=UTF-8
|
|||
arr=(${URL//[=&]/ })
|
||||
|
||||
#####################################################################
|
||||
### UPSYNC STATION REQUEST /?G1PUB=g1_to_ipfs(G1PUB)&...
|
||||
### UPSYNC STATION REQUEST :12345/?G1PUB=g1_to_ipfs(G1PUB)&...
|
||||
## & JOIN 1234
|
||||
### TODO : include CODE HASH & TOKEN ....
|
||||
#####################################################################
|
||||
if [[ ${arr[0]} != "" ]]; then
|
||||
|
||||
## CHECK URL CONSISTENCY ( G1PUB=IPNSPUB is right ? )
|
||||
## CHECK URL CONSISTENCY ( do we get G1PUB=IPNSPUB right ? )
|
||||
GPUB=${arr[0]}
|
||||
ASTROTOIPFS=$(${MY_PATH}/tools/g1_to_ipfs.py ${arr[0]} 2>/dev/null)
|
||||
|
||||
if [[ "${ASTROTOIPFS}" == "${arr[1]}" && ${ASTROTOIPFS} != "" && ${arr[1]} != "" ]]; then
|
||||
## WE SPEAK THE SAME PROTOCOL
|
||||
echo "MAJOR TOM TO GROUD CONTROL"
|
||||
echo "WE HAVE A STATION ${GPUB} CONTACT"
|
||||
(
|
||||
timeon=`date +%s`
|
||||
mkdir -p ~/.zen/tmp/swarm/${ASTROTOIPFS}
|
||||
echo "UPSYNC TO ~/.zen/tmp/swarm/${ASTROTOIPFS}"
|
||||
ipfs --timeout 180s get -o ~/.zen/tmp/swarm/${ASTROTOIPFS} /ipns/${ASTROTOIPFS}
|
||||
echo "<<< MAJOR TOM TO GROUND CONTROL >>> UPSYNC TO ~/.zen/tmp/swarm/${ASTROTOIPFS}"
|
||||
ipfs --timeout 240s get --progress="false" -o ~/.zen/tmp/swarm/${ASTROTOIPFS} /ipns/${ASTROTOIPFS}
|
||||
timeoff=`date +%s`
|
||||
echo ">>> GROUND CONTROL FINISH in $(( timeoff - timeon )) sec <<<"
|
||||
) &
|
||||
|
||||
fi
|
||||
|
||||
### PATCH 1234 : send & forget mode
|
||||
if [[ ${arr[0]} == "salt" ]]; then
|
||||
echo "'(ᵔ◡◡ᵔ)' SALT MODE RECEIVED... "
|
||||
## JUST ADD SOME LINE OF CODE ...
|
||||
fi
|
||||
|
||||
fi
|
||||
|
||||
#### 12345 NETWORK MAP TOKEN
|
||||
|
|
|
@ -0,0 +1 @@
|
|||
12D3KooWK1ACupF7RD3MNvkBFU9Z6fX11pKRAR99WDzEUiYp5t8j
|
|
@ -0,0 +1 @@
|
|||
|