FreenetWiki : FreenetFCPDosPuntoCero

HomePage :: Categories :: PageIndex :: RecentChanges :: RecentlyCommented :: Login/Register

Freenet Client Protocol 2.0


FCP (Protocolo del cliente de Freenet) funciona como una interfaz simple, basada en texto, para que aplicaciones de terceros puedan interactuar con el nodo de Freenet. Actualmente sus funcionalidades son:


Las versiones anteriores de FCP no son compatibles con la actual debido a la complejidad de los cambios efectuados en el funcionamiento de la red en esta ultima version.


Transporte


Opera sobre una conexion TCP entre el nodo de Freenet y la otra aplicacion. Se abre un puerto (


Sintaxis Basica


La unidad basica de FCP es el mensaje, que consiste en un nombre del mensaje y ningun o mas de un par de de valores llamados campos. Los nombres de los mensajes y sus campos generalmente se escriben utilizando el estilo CamelCase.


NombreDelMensaje
Campo1=Valor1
Campo2=Valor2
...
End


Comandos/Mensajes Disponibles


A continuacion una lista, explicacion y ejemplo de algunos de los comandos y mensajes disponibles via FCP. Si se los desea probar, se puede iniciar una session de telnet a localhost y el puerto es, en donde corremos el nodo, mas 3000. En mi caso, mi nodo esta corriendo en el puerto 17247 por lo que debo apuntar al puerto 20247 para conectarme.

$ telnet localhost 20247
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.

A partir de aca puedo empezar a enviar los comandos.


ClientHello

Este debe ser el primer comando que tenemos que ejecutar cuando nos conectamos con el nodo. A esto, el nodo responde con un mensaje NodeHello.

ClientHello
Name=conexion-prueba
ExpectedVersion=2.0
EndMessage

El campo 'Name' puede ser cualquier cosa, sirve para identificar los request y, de momento, el campo 'ExpectedVersion' no cumple ninguna funcion.


NodeHello

NodeHello
FCPVersion=2.0
Version=Fred,0.7,1.0,429
Node=Fred
Testnet=true
EndMessage

El nodo responde con algo de informacion sobre el, como la version de FCP, la version de Fred y si esta corriendo en modo 'Testnet'.


ClientGet

Con la instruccion 'ClientGet' pedimos una key y obtenemos su contenido. Podemos especificar si queremos que ignore el DataStore o si el pedido queremos que sea exclusivamente del DataStore. En el campo 'URI' ingresamos la key que queremos solicitar y el campo 'Identifier' para identificar el pedido. Terminamos el comando con un EndMessage.

ClientGet
IgnoreDS=false
DSOnly=false
URI=CHK@IRbQKR6SHxgWfh5owr96~5XaXstzRJMnT9u6ZaAlHw0,QwOCvc04YmuTm6Vgig4xUz7HJNzqQy5UUDrSZPfbCYs,AAEA--8
Identifier=get-prueba
EndMessage

En caso de encontrar el contenido, el nodo respondera de la siguiente manera, indicando que encontro el contenido, la informacion del MetaData, la longitud de los datos en Bytes y a continuacion mostrata el contenido de los datos pedidos despues de la etiqueta 'AllData', mostar el identificador y el tamanio nuevamente. El contenido de lo que pedimos era efectivamente "Esto es una prueba! Y creo que funciona!".

DataFound
Metadata.ContentType=application/octet-stream
Identifier=get-prueba
DataLength=40
EndMessage
AllData
Identifier=get-prueba
DataLength=40
Data
Esto es una prueba! Y creo que funciona!


ClientPut
PutSuccessful
Valid XHTML 1.0 Transitional :: Valid CSS :: Powered by Wikka Wakka Wiki 1.1.6.2
Page was generated in 0.0478 seconds