Freenet Text Mode Client Interface (TMCI)
The Freenet Text Mode Client Interface (TMCI) is a simple command-line interface to Freenet. It allows you to do things like insert content into Freenet, and to request information from Freenet. It is sometimes referred to as the telnet interface.
To access TMCI, you can use a telnet program to connect to the node (by default to port 2323). You see the current status of TCMI and view/change other TMCI configuration options via the FProxy configuration page, which is available at http://localhost:8888/config/console if your node is running locally and have enabled "advanced mode" in the Web UI. If you are using an older Freenet 0.7 Build (circa 878) then you may wish to search for this option at http://localhost:8888/config
Additional Note: Some aspects of TMCI cannot be changed while your Freenet node is running - these include enabling TMCI, enabling SSL and enabling the std-out/in (aka direct) option. You will need to stop your node, make the required changes to the freenet.ini file and then restart your node.
The freenet.ini configuration options to correctly enable a fully interactive TMCI server are as follows:
console.enabled=true console.directEnabled=true
other TMCI configuration options include:
console.ssl (defaults to false) console.bindTo (defaults to 127.0.0.1,0:0:0:0:0:0:0:1) console.allowedHosts (defaults to 127.0.0.1,0:0:0:0:0:0:0:1) console.port (defaults to 2323)
From a command prompt, enter this:
telnet localhost 2323
You should get back a response that starts something like this:
Trying 127.0.0.1... Connected to localhost. Escape character is '^]'. Trivial Text Mode Client Interface --------------------------------------- Freenet 0.7 Build #878 r9593 Enter one of the following commands:
This is followed by a brief list of commands.
TMCI commands
| Command | Description |
|---|---|
| GET:freenet_key | Fetch a file from Freenet with the given key. The contents of the file are echoed to the console. |
| PUT: Multiple lines of text, like this, ended by a . on a line by itself . |
Insert the file into Freenet and return the key that was used. |
| PUT:A single line of text | Use the single line of text as a file to insert to Freenet, and return the key used. |
| GETCHK: Multiple lines of text, like this, ended by a . on a line by itself . |
Get the key that would be used if the file was inserted to Freenet, but dont actually insert the file. |
| GETCHK:A single line of text | Get the CHK key that would be returned if the line was inserted to Freenet, but don't actually do the insert. |
| PUTFILE:filename PUTFILE:filename#mimetype |
Insert to Freenet the file with full path called filename. Optionally include the MIME type of the file, for example text/html. |
| GETFILE:freenet_key | Fetch a key from Freenet and save it to a file. If the key includes a filename we will use it, but we will not overwrite local files. |
| GETCHKFILE:filename | Get the CHK key that would be returned if we inserted the file to Freenet, but don't actually do the insert. |
| PUTDIR:path PUTDIR:path#defaultfile |
Insert an entire directory to Freenet from disk. Optionally include a default filename |
| GETCHKDIR:path GETCHKDIR:path#defaultfile |
Get the key that would be returned if we'd put the entire directory from disk. |
| MAKESSK | Create an SSK keypair. |
| PUTSSK:insert_uri;redirect_url | Insert an SSK redirect to a file already inserted. |
| PUTSSKDIR:insert_uri#path PUTSSKDIR:insert_uri#path#defaultfile |
Insert an entire directory to an SSK. Optionally include a default file. |
| PLUGLOAD: | Load plugin. (use "PLUGLOAD:?" for more info) |
| PLUGLIST | List all loaded plugins. |
PLUGKILL:| Unload the plugin with the given ID (see PLUGLIST).
| CONNECT:
| see ADDPEER: below
| CONNECT:\r\n | see ADDPEER:\r\n | DISCONNECT:
| see REMOVEPEER: below
| ADDPEER:
| add a peer from its ref in a file/url.
| ADDPEER:\r\n | add a peer by entering a noderef directly.
| DISABLEPEER:
| disable a peer by providing it's ip+port, name, or identity
| ENABLEPEER:
| enable a peer by providing it's ip+port, name, or identity
| SETPEERLISTENONLY:
| set ListenOnly on a peer by providing it's ip+port, name, or identity
| UNSETPEERLISTENONLY:
| unset ListenOnly on a peer by providing it's ip+port, name, or identity
| HAVEPEER:
| report true/false on having a peer by providing it's ip+port, name, or identity
| REMOVEPEER:
| remove a peer by providing it's ip+port, name, or identity
| PEER:
| report the noderef of a peer (without metadata) by providing it's ip+port, name, or identity
| PEERWMD:
| report the noderef of a peer (with metadata) by providing it's ip+port, name, or identity
| PEERS
| report tab delimited list of peers with name, ip+port, identity, location, status and idle time in seconds
| NAME: | change the node's name.
| UPDATE
| ask the node to self-update if possible.
| STATUS
| display some status information on the node including its reference and connections.
| SHUTDOWN
| exit the program
| RESTART
| restart the program
| QUIT
| close the socket
| |