Okay, so:
- You can keep it on disk, just encrypt it with an ephemeral key. (In
  the long run).
- How are you handling conflicts?

On Tue, May 30, 2006 at 12:34:54PM +1200, David McNab wrote:
> (this discussion has been moved into its own-thread to get it back on-topic)
> 
> Matthew Toseland wrote:
> > How are you handling committing a directory?
> 
> Hehe, I lost a bit of sleep thinking through that one :)
> 
> What I've come up with is 4 'pseudo-files' that live in the toplevel
> directory of a freedisk:
>  - .status - readonly, when read returns a status keyword, one of:
>       - 'idle' - neither updating nor committing
>       - 'committing' - dusk is syncing back into freenet
>       - 'updating' - disk is syncing locally from freenet
>       - 'failed\n<more details>' - something fatal happened
>  - .publickey - read/write - write an SSK public key into this file to
>    link the local freedisk with an in-freenet directory, so the
>    directory can be mounted readonly
>  - .privatekey - read/write - write an SSK private key into this file to
>    link the local freedisk with an in-freenet directory, so the
>    directory can be mounted read/write
>  - .cmd - write-only - typically one-word commands will be written in,
>    such as 'commit' or 'update'
> 
> While committing or updating, the directory tree will be readonly,
> despite any permissions to the contrary.
> 
> When a freedisk is 'update'd from freenet, only the nodes
> (file/directory records) will be fetched, not the data. When/if an
> individual file is opened in read, update or append mode, the file's
> data will be fetched as a CHK from freenet. If a file is opened in
> write-only mode (ie truncate), no freenet fetch will occur, since the
> file will become a new CHK with no reference to past content.
> 
> When files are locally written, the changes will reside only in memory
> until the next commit.
> 
> I'm working on a command-line utility called 'freedisk' which handles
> all the pseudo-files' I/O in a simple front-end, for example:
> 
>    freedisk -m /mnt/freenet new fred
>        Create a new freedisk called 'fred', at /mnt/freenet/usr/fred,
>        mounted readonly, with new random pub/priv keys
> 
>    freedisk -m /mnt/freenet add foo SSK at yadayadayada
>        Import a freedisk and mount readonlly, at /mnt/freenet/usr/foo
> 
>    freedisk -m /mnt/freenet update foo
>        Update freedisk 'foo' (at /mnt/freenet/usr/foo') from freenet
> 
>    freedisk -m /mnt/freenet add bar SSK at yadayada private
>        Import a freedisk and mount read/write, at /mnt/freenet/usr/bar,
>        using SSK private key SSK at yadayada
> 
>    freedisk -m /mnt/freenet commit bar
>        Commit directory /mnt/freenet/usr/bar back into freenet
> 
> If the environment variable 'FREEDISK_MOUNTPOINT' is set, then the
> '-m /mnt/freenet' option becomes unnecessary.
> 
> Whenever a file's contents are fetched from freenet, it will be cached
> in memory, not on disk - this is for security reasons, since if a PC is
> uplifted by an attacker, a hard disk analysis won't identify anyone as
> having accessed a freedisk (as long as they have an encrypted swapfile,
> that is!)
> 
> In the xml directory file discussed below, the 'hash' attribute will be
> hexadecimal SHA(1) of the file's contents. (Not base64, because of the
> plurality of base64 alphabets).
> 
> >> To be honest, my gut feeling is that it's best for the 'freedisk'
> >> project if I implement my own manifest scheme. The idea would be:
> >>
> >>   - a manifest key, inserted as a single 'text/xml' file into
> >>     USK at blahblahblah/name/n, and of the form:
> >>
> >>       <freedisk name="diskname" owner="nick">
> >>         <node path="/"/>
> >>         <node path="/chinese_democracy.doc"
> >>               hash="yadayada"
> >>               size="nnn"
> >>               mimetype="application/msword"
> >>               uri="CHK at yadayadayada"
> >>               />
> >>         ...
> >>       </freedisk>
> >>
> >>   - CHKs for each file node
> 
> Cheers
> David
> 
> _______________________________________________
> Devl mailing list
> Devl at freenetproject.org
> http://emu.freenetproject.org/cgi-bin/mailman/listinfo/devl
> 

-- 
Matthew J Toseland - toad at amphibian.dyndns.org
Freenet Project Official Codemonkey - http://freenetproject.org/
ICTHUS - Nothing is impossible. Our Boss says so.
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 189 bytes
Desc: Digital signature
URL: 
<https://emu.freenetproject.org/pipermail/devl/attachments/20060531/de13b832/attachment.pgp>

Reply via email to