All Projects → kivutar → socialfs

kivutar / socialfs

Licence: other
A peer2peer social network, written in go using 9p and tls

Programming Languages

go
31211 projects - #10 most used programming language

Spec

The fs looks like this

/public
/private
/contacts
/chans/#9me
       #socialfs
/circles/work
         familly
         friends
/status 

The fs maintains his own list of know users (go9p supports that). Authentification is done with rsa keys. The rights on the files and folders are different depending if you are mounting your own socialfs or the socialfs of one of your contacts.

  • public is of type Chat, everybody should have read and write permissions on it. If you want to speak publicly to someone, mount his socialfs and write to his public. See this as a "wall" in facebook
  • private is of type Chat also, you can only write to it. Except if you mount your own socialfs, in this special case you can read incoming private messages from your contacts
  • contact When read, contact prints the list of your contacts, this means their nick in your file system plus their public key plus the circles they belongs to. When written, it can be used to add a new contact to your own socialfs, or to suggest a new contact to a socialfs whom the owner has given write permissions to others
  • chans/ Contains files of type Chat, use touch to create a chan, read and write have the same behaviour as public
  • circles/ is used to manage circles of contacts. Use touch to create a new circle. Writing to a circle could be redirected to each private of your contacts belonging to this circle. But I don't know if it is a good idea yet. Also, reading a circle could return a merge of all your contact's public (only their own messages though)
  • status is used to share your status with others. You can write to it if you've mounted your own socialfs, and everybody can read it.

TODO

First:

  • Understand why golang cannot read certificates generated by plan9port, run factotum, then use srv to post a pre-authenticated session, and mount it with 9pfuse
  • Manage users and permissions, treat user as admin if his private key match the server certificate

Worth reading

An exemple of p9sk authentication (we don't want that):

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].