Meento Share (aka meshare)

java MesharePrompt

Search a network of
file servers from
one prompt



The goal of Meento is to enable static websites to make their files available for search and download easily.

In other words, think of a simplified network where all transfers occur directly over the HTTP protocol. The "index.php" (or main page) replicates all files it receives directly via the POST method to a list of servers. Searching is performed by requesting the list of all JSON files that each server has. To avoid flooding or overloading (for example, making 200 requests to a server that has 200 JSON files), the user or client does not request the files and hashes it has already downloaded, but rather loads their information locally. To reduce the number of requests per search, the client automatically downloads the JSON metadata found in the search.

Users can now host a list of links in "links.txt" even if they do not host any of the links themselves. They can also use "WebCrawler" to save files from a page using the project's metadata and organization standards.

There are two interesting fields in the JSON file: "public_key" and "server_public_key". There is no concrete implementation of how they should work, but it is presumed that "public_key" should be a key inserted by the user themselves when sending a file to ensure they are the owner. "server_public_key" should be the key of the server hosting the file. Tools and mechanisms for consensus or rewards can be created based on this data, at the discretion of the user, the server, or third parties ('MeshareMiner.java' and 'FileIntegrityChecker.java' are an incipient example of this).

The project now officially uses the MIT license. You can also support the project donating BTC : bc1ql0l8hsnaqgamlz2cvs53hs7ntszwrthera00sz

Three files, one folder

Drop MesharePrompt.java next to a servers.txt that lists one server base URL per line, then compile and run with the standard JDK — nothing else to install.

StepCommand
Compilejavac MesharePrompt.java
Runjava MesharePrompt

Everything happens at the prompt

Plain text searches. Everything else is a flag.

TypeEffect
any textSearch every server, results stream in live
a numberDownload that result (hash-verified)
allDownload every result from the last search
-optionsToggle random tries, set result limit
-getallDownload every file from every server
-helpShow the command list again
-exitQuit

What it actually guarantees

Hash-verified downloads
A file is only saved if its SHA-256 matches the hash in its filename — otherwise nothing is kept.
Skips what you already have
Already-downloaded hashes aren't re-requested or re-fetched, but still appear in results from local cache.
Streams results as it finds them
No waiting for every server to respond — matches print the moment they're confirmed.
Bounded by design
200 results per search, 512 characters per metadata field, both enforced automatically.
Malformed entries are skipped
Any files.txt line that isn't a valid sha256.ext filename is ignored.
Every download is logged
A JSON entry is written to log/ recording what was downloaded and when.
Automatically download all JSON metadata (only GUI)
After the initial request, it is not necessary to request each JSON file from the server, only "files.txt" is needed.
Search by link and name (only GUI)
Servers can also provide a list of links without needing to host the files (links.txt).

What lands on disk

files/ downloaded binaries, named <hash>.<ext> info/ downloaded metadata, named <hash>.json log/ one entry per successful download