src prod 8 months ago
README.md prod 8 months ago
client.py prod 8 months ago
dammelotutto executable 8 months ago
dub.sdl dub.sdl 8 months ago
README.md

Dammelotutto

Dammelotutto e` un servizio centralizzato per lo scambio di file da cli, pensato per essere usato durante le sessioni di irc. Il servizio supporta testo o stream binari codificati in base64. Si suppone siano testo o immagini.

Si consiglia di eseguire il programma attraverso un utente con permessi di accesso estremamente ridotti.

Uso

Il servizio riceve un comando via HTTP/POST codificato come JSON.

Le azioni possibili richiedibili dal client sono:

  • upload di un immagine
  • upload di testo
  • download di un immagine
  • download di testo

I file vengono rimossi dopo una settimana rispetto alla data di upload. Le chiave vengono mantenute nella memoria volatile, quindi ad ogni riavvio non vi sono file da servire in memoria.

Il server si avvia nel seguente modo: dammelotutto --token <auth-token> --workdir <directory> --port <port> --host <host> and it has no configuration file.

Upload di immagine o testo

Il json dovra` avere i seguenti campi:

  • token: il token globale di autenticazione al servizio, stabilito all'avvio
  • password: password per il singolo file
  • nome: nome del file, agisce come chiave per il retrieval in seguito
  • contenuto: una stringa che rappresenti il contenuto del file. Caratteri liberi nel caso di testo, base64 nel caso di immagini.
  • azione: uno dei due possibili valori, "upload-image" | "upload-text".

Esempio:

{
    "action": "upload-image", 
    "token": "example-auth", 
    "name": "example.txt", 
    "content": "<content>",
    "password": "example-pass"
}

Risposta:

{
    "response": "ok"
}

oppure in caso di errore:

{
    "response": "error",
    "msg": <error message>
}

Download di immagine o testo

Il json dovra` avere i seguenti campi:

  • token: il token globale di autenticazione al servizio, stabilito all'avvio
  • password: password per il singolo file
  • nome: nome del file, intesa come chiave
  • azione: "get".

Esempio:

{
    "action": "download-image",  # or download-text
    "token": "example-auth", 
    "name": "example.txt", 
    "password": "example-pass"
}

Risposta:

{
    "response": "image",  # or text
    "content": <content> # base64 for image
}

oppure in caso di errore:

{
    "response": "error",
    "msg": <error message>
}