<?xml version="1.0" encoding="UTF-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
  <title>log for hellnet</title>
  <updated>2010-09-03T12:30:12+00:00</updated>
  <link href="http://bitcheese.net/wiki/log/hellnet"/>
  <entry>
    <title>update</title>
    <updated>2010-09-03T12:30:12+00:00</updated>
    <link href="http://bitcheese.net/wiki/diff/bb51ffb9961b44054113506f995136015428ae61"/>
    <author>
      <name>Voker57</name>
    </author>
    <content type="html">&lt;p&gt;&lt;strong&gt;update&lt;/strong&gt;&lt;/p&gt;&lt;span style='color: #FF9EA0'&gt;--- a/hellnet/hspawn/use&lt;/span&gt;&lt;br /&gt;&lt;span style='color: #8AFF63'&gt;+++ b/hellnet/hspawn/use&lt;/span&gt;&lt;br /&gt;&lt;span style='color: #E200FF'&gt;@@ -4,7 +4,7 @@&lt;/span&gt;&lt;br /&gt; &lt;br /&gt; h3. Simple data storage&lt;br /&gt; &lt;br /&gt;&lt;span style='color: #FF9EA0'&gt;-All the data in Hellnet is stored in 64kb chunks. You can see your current cache in ~/.hellnet/store.&lt;/span&gt;&lt;br /&gt;&lt;span style='color: #8AFF63'&gt;+All the data in Hellnet is stored in 256kb chunks. You can see your current cache in ~/.hellnet/store.&lt;/span&gt;&lt;br /&gt; &lt;br /&gt; A chunk may be a [[/hellnet/tech/recursive-filelinks|filelink]], which stores information about chunks that form a file.&lt;br /&gt; </content>
  </entry>
  <entry>
    <title>RIP Hellage</title>
    <updated>2010-09-03T11:24:22+00:00</updated>
    <link href="http://bitcheese.net/wiki/diff/6d71bd3a967c591a903ea8e9cf42251c56675f2e"/>
    <author>
      <name>Voker57</name>
    </author>
    <content type="html">&lt;p&gt;&lt;strong&gt;RIP Hellage&lt;/strong&gt;&lt;/p&gt;&lt;span style='color: #FF9EA0'&gt;--- a/hellnet/hellage/admin&lt;/span&gt;&lt;br /&gt;&lt;span style='color: #8AFF63'&gt;+++ /dev/null&lt;/span&gt;&lt;br /&gt;&lt;span style='color: #E200FF'&gt;@@ -1,14 +1 @@&lt;/span&gt;&lt;br /&gt;&lt;span style='color: #FF9EA0'&gt;-h1. How to run your own Hellage index&lt;/span&gt;&lt;br /&gt;&lt;span style='color: #FF9EA0'&gt;-&lt;/span&gt;&lt;br /&gt;&lt;span style='color: #FF9EA0'&gt;-First, see [[use]] for installing Hellage.&lt;/span&gt;&lt;br /&gt;&lt;span style='color: #FF9EA0'&gt;-&lt;/span&gt;&lt;br /&gt;&lt;span style='color: #FF9EA0'&gt;-Then, see [[/hellnet/hspawn/use#metatrees]] for information how to create your own meta key.&lt;/span&gt;&lt;br /&gt;&lt;span style='color: #FF9EA0'&gt;-&lt;/span&gt;&lt;br /&gt;&lt;span style='color: #FF9EA0'&gt;-Last, run&lt;/span&gt;&lt;br /&gt;&lt;span style='color: #FF9EA0'&gt;-&lt;/span&gt;&lt;br /&gt;&lt;span style='color: #FF9EA0'&gt;-bc. $ hellage-genmeta mykey hackage&lt;/span&gt;&lt;br /&gt;&lt;span style='color: #FF9EA0'&gt;-&lt;/span&gt;&lt;br /&gt;&lt;span style='color: #FF9EA0'&gt;-Where @mykey@ is your key alias and @hackage@ is your meta name.&lt;/span&gt;&lt;br /&gt;&lt;span style='color: #FF9EA0'&gt;-&lt;/span&gt;&lt;br /&gt;&lt;span style='color: #FF9EA0'&gt;-This will download index and packages from [http://hackage.haskell.org] and store links in your meta. If download of certain package is stalled for too long, feel free to interrupt the program; next time it will start where it ended, only need to re-download index.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style='color: #FF9EA0'&gt;--- a/hellnet/hellage/index&lt;/span&gt;&lt;br /&gt;&lt;span style='color: #8AFF63'&gt;+++ /dev/null&lt;/span&gt;&lt;br /&gt;&lt;span style='color: #E200FF'&gt;@@ -1,5 +1 @@&lt;/span&gt;&lt;br /&gt;&lt;span style='color: #FF9EA0'&gt;-use - How to use it&lt;/span&gt;&lt;br /&gt;&lt;span style='color: #FF9EA0'&gt;-admin - How to run your own mirror&lt;/span&gt;&lt;br /&gt;&lt;span style='color: #FF9EA0'&gt;-&lt;/span&gt;&lt;br /&gt;&lt;span style='color: #FF9EA0'&gt;-Hellage is a distributed &amp;quot;Hackage&amp;quot;:http://hackage.haskell.org/ haskell packages' repository mirror.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style='color: #FF9EA0'&gt;--- a/hellnet/hellage/use&lt;/span&gt;&lt;br /&gt;&lt;span style='color: #8AFF63'&gt;+++ /dev/null&lt;/span&gt;&lt;br /&gt;&lt;span style='color: #E200FF'&gt;@@ -1,73 +1 @@&lt;/span&gt;&lt;br /&gt;&lt;span style='color: #FF9EA0'&gt;-h1. How to use Hellage&lt;/span&gt;&lt;br /&gt;&lt;span style='color: #FF9EA0'&gt;-&lt;/span&gt;&lt;br /&gt;&lt;span style='color: #FF9EA0'&gt;-h2. Install&lt;/span&gt;&lt;br /&gt;&lt;span style='color: #FF9EA0'&gt;-&lt;/span&gt;&lt;br /&gt;&lt;span style='color: #FF9EA0'&gt;-This may be insanely difficult. Or not.&lt;/span&gt;&lt;br /&gt;&lt;span style='color: #FF9EA0'&gt;-&lt;/span&gt;&lt;br /&gt;&lt;span style='color: #FF9EA0'&gt;-If you can't build from source, get the [[../hspawn/jumpstart]] package.&lt;/span&gt;&lt;br /&gt;&lt;span style='color: #FF9EA0'&gt;-&lt;/span&gt;&lt;br /&gt;&lt;span style='color: #FF9EA0'&gt;-h3. Otherwise&lt;/span&gt;&lt;br /&gt;&lt;span style='color: #FF9EA0'&gt;-&lt;/span&gt;&lt;br /&gt;&lt;span style='color: #FF9EA0'&gt;-First, &amp;quot;install Hellnet&amp;quot;:/hellnet/hspawn/build. If you manage it, the rest is simple:&lt;/span&gt;&lt;br /&gt;&lt;span style='color: #FF9EA0'&gt;-&lt;/span&gt;&lt;br /&gt;&lt;span style='color: #FF9EA0'&gt;-bc. $ cabal install hellage&lt;/span&gt;&lt;br /&gt;&lt;span style='color: #FF9EA0'&gt;-&lt;/span&gt;&lt;br /&gt;&lt;span style='color: #FF9EA0'&gt;-or, @git clone git://git.bitcheese.net/hellage &amp;amp;&amp;amp; cd hellage &amp;amp;&amp;amp; runghc Setup.hs install@ and have fun.&lt;/span&gt;&lt;br /&gt;&lt;span style='color: #FF9EA0'&gt;-&lt;/span&gt;&lt;br /&gt;&lt;span style='color: #FF9EA0'&gt;-h2. Actually use it&lt;/span&gt;&lt;br /&gt;&lt;span style='color: #FF9EA0'&gt;-&lt;/span&gt;&lt;br /&gt;&lt;span style='color: #FF9EA0'&gt;-First, you need to add at least one Hellnet node to your nodelist. You can use bitcheese.net:6666 for now.&lt;/span&gt;&lt;br /&gt;&lt;span style='color: #FF9EA0'&gt;-&lt;/span&gt;&lt;br /&gt;&lt;span style='color: #FF9EA0'&gt;-bc. $ hell-nodes handshake bitcheese.net 6666&lt;/span&gt;&lt;br /&gt;&lt;span style='color: #FF9EA0'&gt;-&lt;/span&gt;&lt;br /&gt;&lt;span style='color: #FF9EA0'&gt;-Then you need to run hellage daemon on your machine:&lt;/span&gt;&lt;br /&gt;&lt;span style='color: #FF9EA0'&gt;-&lt;/span&gt;&lt;br /&gt;&lt;span style='color: #FF9EA0'&gt;-bc. $ hellage 8da7ec91e46c4b1444bd1b1a151a038a0544fad23266111a8a84178efb9499cb756a265bbe456bd9ec9ba309bf146f8453ba17201ff968e181e36b5efe54fc1f hackage&lt;/span&gt;&lt;br /&gt;&lt;span style='color: #FF9EA0'&gt;-&lt;/span&gt;&lt;br /&gt;&lt;span style='color: #FF9EA0'&gt;-Here, *8da7ec...* is my encryption key ID and *hackage* is meta name of hellage. If you plan to use this (or any other) key often, you can create an alias:&lt;/span&gt;&lt;br /&gt;&lt;span style='color: #FF9EA0'&gt;-&lt;/span&gt;&lt;br /&gt;&lt;span style='color: #FF9EA0'&gt;-bc. $ hell-meta alias add voker57_key 8da7ec91e46c4b1444bd1b1a151a038a0544fad23266111a8a84178efb9499cb756a265bbe456bd9ec9ba309bf146f8453ba17201ff968e181e36b5efe54fc1f&lt;/span&gt;&lt;br /&gt;&lt;span style='color: #FF9EA0'&gt;-&lt;/span&gt;&lt;br /&gt;&lt;span style='color: #FF9EA0'&gt;-and then refer to this key as &amp;quot;voker57&amp;quot; everywhere:&lt;/span&gt;&lt;br /&gt;&lt;span style='color: #FF9EA0'&gt;-&lt;/span&gt;&lt;br /&gt;&lt;span style='color: #FF9EA0'&gt;-bc. $ hellage voker57_key hackage&lt;/span&gt;&lt;br /&gt;&lt;span style='color: #FF9EA0'&gt;-&lt;/span&gt;&lt;br /&gt;&lt;span style='color: #FF9EA0'&gt;-This command will run hellage on its default port, which is 6609. If you want to change it, run hellage with -p 64657.&lt;/span&gt;&lt;br /&gt;&lt;span style='color: #FF9EA0'&gt;-&lt;/span&gt;&lt;br /&gt;&lt;span style='color: #FF9EA0'&gt;-*WARNING WARNING*: Currently hellage does not bind to localhost, thus anybody with access to port can use it. Use firewalls or whatever to protect.&lt;/span&gt;&lt;br /&gt;&lt;span style='color: #FF9EA0'&gt;-&lt;/span&gt;&lt;br /&gt;&lt;span style='color: #FF9EA0'&gt;-Now, let's add hellage to cabal's sources:&lt;/span&gt;&lt;br /&gt;&lt;span style='color: #FF9EA0'&gt;-&lt;/span&gt;&lt;br /&gt;&lt;span style='color: #FF9EA0'&gt;-bc. $ editor ~/.cabal/config&lt;/span&gt;&lt;br /&gt;&lt;span style='color: #FF9EA0'&gt;-&lt;/span&gt;&lt;br /&gt;&lt;span style='color: #FF9EA0'&gt;-Search out the @remote-repo:@, comment it out and add hellage:&lt;/span&gt;&lt;br /&gt;&lt;span style='color: #FF9EA0'&gt;-&lt;/span&gt;&lt;br /&gt;&lt;span style='color: #FF9EA0'&gt;-bc. -- remote-repo: hackage.haskell.org:http://hackage.haskell.org/packages/archive&lt;/span&gt;&lt;br /&gt;&lt;span style='color: #FF9EA0'&gt;-remote-repo: hellage:http://localhost:6609&lt;/span&gt;&lt;br /&gt;&lt;span style='color: #FF9EA0'&gt;-&lt;/span&gt;&lt;br /&gt;&lt;span style='color: #FF9EA0'&gt;-Update the hellage index:&lt;/span&gt;&lt;br /&gt;&lt;span style='color: #FF9EA0'&gt;-&lt;/span&gt;&lt;br /&gt;&lt;span style='color: #FF9EA0'&gt;-bc. $ wget http://localhost:6609/update -O- 2&amp;gt;/dev/null&lt;/span&gt;&lt;br /&gt;&lt;span style='color: #FF9EA0'&gt;-Success&lt;/span&gt;&lt;br /&gt;&lt;span style='color: #FF9EA0'&gt;-&lt;/span&gt;&lt;br /&gt;&lt;span style='color: #FF9EA0'&gt;-If result is &amp;quot;Failed&amp;quot; then something went wrong and hellage won't work. Check node connectivity.&lt;/span&gt;&lt;br /&gt;&lt;span style='color: #FF9EA0'&gt;-&lt;/span&gt;&lt;br /&gt;&lt;span style='color: #FF9EA0'&gt;-Then, run @cabal update@ to get package index:&lt;/span&gt;&lt;br /&gt;&lt;span style='color: #FF9EA0'&gt;-&lt;/span&gt;&lt;br /&gt;&lt;span style='color: #FF9EA0'&gt;-bc. $ cabal update&lt;/span&gt;&lt;br /&gt;&lt;span style='color: #FF9EA0'&gt;-&lt;/span&gt;&lt;br /&gt;&lt;span style='color: #FF9EA0'&gt;-If everything was OK, then you can download packages now:&lt;/span&gt;&lt;br /&gt;&lt;span style='color: #FF9EA0'&gt;-&lt;/span&gt;&lt;br /&gt;&lt;span style='color: #FF9EA0'&gt;-bc. $ cabal install empty&lt;/span&gt;&lt;br /&gt;&lt;span style='color: #FF9EA0'&gt;-&lt;/span&gt;&lt;br /&gt;&lt;span style='color: #FF9EA0'&gt;-Congratulations! You got hellage up and running.&lt;/span&gt;&lt;br /&gt;&lt;span style='color: #FF9EA0'&gt;-&lt;/span&gt;&lt;br /&gt;&lt;span style='color: #FF9EA0'&gt;-h2. Tricks&lt;/span&gt;&lt;br /&gt;&lt;span style='color: #FF9EA0'&gt;-&lt;/span&gt;&lt;br /&gt;&lt;span style='color: #FF9EA0'&gt;-* If you don't like to keep a terminal emulator constantly running, i suggest using &amp;quot;daemontools&amp;quot;:http://packages.debian.org/sid/daemontools or &amp;quot;dtach&amp;quot;:http://dtach.sourceforge.net/ or &amp;quot;screen&amp;quot;:http://www.gnu.org/software/screen/ for daemonizing hellage.&lt;/span&gt;&lt;br /&gt;&lt;span style='color: #FF9EA0'&gt;-* You can update hellage via hellage!&lt;/span&gt;&lt;br /&gt;&lt;span style='color: #FF9EA0'&gt;-&lt;/span&gt;&lt;br /&gt;&lt;span style='color: #FF9EA0'&gt;-h2. Troubleshooting / Feedback&lt;/span&gt;&lt;br /&gt;&lt;span style='color: #FF9EA0'&gt;-&lt;/span&gt;&lt;br /&gt;&lt;span style='color: #FF9EA0'&gt;-If you succeeded, or failed, in installing hellage by this manual, share your experience in &amp;quot;hellnet mailing list&amp;quot;:http://groups.google.com/group/hellnet.&lt;/span&gt;</content>
  </entry>
  <entry>
    <title>delimiters</title>
    <updated>2010-06-15T12:16:52+00:00</updated>
    <link href="http://bitcheese.net/wiki/diff/51bd82a37d218c04917623beffa7a43da06c46ba"/>
    <author>
      <name>Voker57</name>
    </author>
    <content type="html">&lt;p&gt;&lt;strong&gt;delimiters&lt;/strong&gt;&lt;/p&gt;&lt;span style='color: #FF9EA0'&gt;--- /dev/null&lt;/span&gt;&lt;br /&gt;&lt;span style='color: #8AFF63'&gt;+++ b/code/delimiters_must_die&lt;/span&gt;&lt;br /&gt;&lt;span style='color: #E200FF'&gt;@@ -1 +1,83 @@&lt;/span&gt;&lt;br /&gt;&lt;span style='color: #8AFF63'&gt;+h1. On delimiters&lt;/span&gt;&lt;br /&gt;&lt;span style='color: #8AFF63'&gt;+&lt;/span&gt;&lt;br /&gt;&lt;span style='color: #8AFF63'&gt;+h2. Escaping from backslash hell&lt;/span&gt;&lt;br /&gt;&lt;span style='color: #8AFF63'&gt;+&lt;/span&gt;&lt;br /&gt;&lt;span style='color: #8AFF63'&gt;+OK, so you want to use simple comma-separated format to store your data.&lt;/span&gt;&lt;br /&gt;&lt;span style='color: #8AFF63'&gt;+&lt;/span&gt;&lt;br /&gt;&lt;span style='color: #8AFF63'&gt;+bc. one,two,three,four&lt;/span&gt;&lt;br /&gt;&lt;span style='color: #8AFF63'&gt;+five,six,seven,eight&lt;/span&gt;&lt;br /&gt;&lt;span style='color: #8AFF63'&gt;+&lt;/span&gt;&lt;br /&gt;&lt;span style='color: #8AFF63'&gt;+Good! Simple and clean, human readable too. You separate entries with , and series with newlines (\n). But then, you need to store comma inside of one of values. So you decide to escape commas with \, like all decent people do.&lt;/span&gt;&lt;br /&gt;&lt;span style='color: #8AFF63'&gt;+&lt;/span&gt;&lt;br /&gt;&lt;span style='color: #8AFF63'&gt;+bc. one\,two,thr\,ee,four&lt;/span&gt;&lt;br /&gt;&lt;span style='color: #8AFF63'&gt;+five,six,seven,eight&lt;/span&gt;&lt;br /&gt;&lt;span style='color: #8AFF63'&gt;+&lt;/span&gt;&lt;br /&gt;&lt;span style='color: #8AFF63'&gt;+Blech! Your parser cannot simply split lines by &amp;quot;,&amp;quot;. It must check if \ doesn't precede it, and if it does, then strip \. But that still works.&lt;/span&gt;&lt;br /&gt;&lt;span style='color: #8AFF63'&gt;+&lt;/span&gt;&lt;br /&gt;&lt;span style='color: #8AFF63'&gt;+Now, you see that \ can be encountered too, and maybe even directly before ,. So, let's escape it with itself.&lt;/span&gt;&lt;br /&gt;&lt;span style='color: #8AFF63'&gt;+&lt;/span&gt;&lt;br /&gt;&lt;span style='color: #8AFF63'&gt;+bc. one\\\,two,thr\,ee,four&lt;/span&gt;&lt;br /&gt;&lt;span style='color: #8AFF63'&gt;+five,six,seven,eight&lt;/span&gt;&lt;br /&gt;&lt;span style='color: #8AFF63'&gt;+&lt;/span&gt;&lt;br /&gt;&lt;span style='color: #8AFF63'&gt;+Three slashes! Isn't that fancy? Not much changed for your parser, you just tell him to strip one backslash from \\.&lt;/span&gt;&lt;br /&gt;&lt;span style='color: #8AFF63'&gt;+&lt;/span&gt;&lt;br /&gt;&lt;span style='color: #8AFF63'&gt;+Now to think of it, newlines can be encountered inside entries too. So, let's make it \n (and \r for these obscene OSes).&lt;/span&gt;&lt;br /&gt;&lt;span style='color: #8AFF63'&gt;+&lt;/span&gt;&lt;br /&gt;&lt;span style='color: #8AFF63'&gt;+bc. one\\\,two,thr\,ee,four&lt;/span&gt;&lt;br /&gt;&lt;span style='color: #8AFF63'&gt;+five,\\nsix,se\nven,eight&lt;/span&gt;&lt;br /&gt;&lt;span style='color: #8AFF63'&gt;+&lt;/span&gt;&lt;br /&gt;&lt;span style='color: #8AFF63'&gt;+Senven? What the fuck.&lt;/span&gt;&lt;br /&gt;&lt;span style='color: #8AFF63'&gt;+&lt;/span&gt;&lt;br /&gt;&lt;span style='color: #8AFF63'&gt;+Well, if you made it similar so far, congrats, you are a decent man. If not, you might have used quotes.&lt;/span&gt;&lt;br /&gt;&lt;span style='color: #8AFF63'&gt;+&lt;/span&gt;&lt;br /&gt;&lt;span style='color: #8AFF63'&gt;+bc. one\\\,&amp;quot;two thr\,ee&amp;quot;,four&lt;/span&gt;&lt;br /&gt;&lt;span style='color: #8AFF63'&gt;+five,\\nsix,se\nven,e\&amp;quot;ig\&amp;quot;ht&lt;/span&gt;&lt;br /&gt;&lt;span style='color: #8AFF63'&gt;+&lt;/span&gt;&lt;br /&gt;&lt;span style='color: #8AFF63'&gt;+Such a fine backslash soup! Now, imagine you would want to pack all this inside of another CSV entry. You get something like this:&lt;/span&gt;&lt;br /&gt;&lt;span style='color: #8AFF63'&gt;+&lt;/span&gt;&lt;br /&gt;&lt;span style='color: #8AFF63'&gt;+bc. one\\\\\\\,\&amp;quot;two thr\\\,ee\&amp;quot;\,four\nfive\,\\\\nsix\,se\\nven,e\\&amp;quot;ig\\&amp;quot;ht&lt;/span&gt;&lt;br /&gt;&lt;span style='color: #8AFF63'&gt;+&lt;/span&gt;&lt;br /&gt;&lt;span style='color: #8AFF63'&gt;+Well, I made up this example, but try coding in shell (which involves), and you'll understand all this.&lt;/span&gt;&lt;br /&gt;&lt;span style='color: #8AFF63'&gt;+&lt;/span&gt;&lt;br /&gt;&lt;span style='color: #8AFF63'&gt;+h2. I Will Never Encounter This Set Of Bytes&lt;/span&gt;&lt;br /&gt;&lt;span style='color: #8AFF63'&gt;+&lt;/span&gt;&lt;br /&gt;&lt;span style='color: #8AFF63'&gt;+Let's make up a bizarre, totally random string. It will never ever appear in our data, I'm assuring you. We'll start our entry with it and end with it.&lt;/span&gt;&lt;br /&gt;&lt;span style='color: #8AFF63'&gt;+&lt;/span&gt;&lt;br /&gt;&lt;span style='color: #8AFF63'&gt;+bc. %%%%%%%%%%DATA BOUNDARY srfg345632rfefh56t34freg56y43rffgmy/dev/urandomsays hello#$^#$%TR%%%%%%%%%%%&lt;/span&gt;&lt;br /&gt;&lt;span style='color: #8AFF63'&gt;+SRgwerg24yg!#RG@2365u246jh4fgb345ik54y245g56u234rgfw43r8ty2348we9fuhg309ekxc09w3fu8tu32598jf03928qrg2938rhy093rjg293riyjg92384fj8934rjhg28975y	10wejmwodkvnn32w9048hjfq 3984hf9q38hf 398rh 93q8r hg98q2hr 9g813h9rthg9 3rhf98h219hgf1923gh9	qhf91jhgh1&lt;/span&gt;&lt;br /&gt;&lt;span style='color: #8AFF63'&gt;+%%%%%%%%%%DATA END srfg345632rfefh56t34freg56y43rffgmy/dev/urandomsays hello#$^#$%TR%%%%%%%%%%%&lt;/span&gt;&lt;br /&gt;&lt;span style='color: #8AFF63'&gt;+&lt;/span&gt;&lt;br /&gt;&lt;span style='color: #8AFF63'&gt;+Know what? IT FUCKING WILL APPEAR. And if you want your system not to fail miserably, you have to scan through all this data and make sure it's not there. Not worth it. And anyway, scanning for this string is rather complicated.&lt;/span&gt;&lt;br /&gt;&lt;span style='color: #8AFF63'&gt;+&lt;/span&gt;&lt;br /&gt;&lt;span style='color: #8AFF63'&gt;+Another good example (besides &amp;quot;HTTP multipart boundary&amp;quot;:http://www.w3.org/Protocols/rfc1341/7_2_Multipart.html mocked above) is &amp;quot;CDATA&amp;quot;:http://en.wikipedia.org/wiki/CDATA.&lt;/span&gt;&lt;br /&gt;&lt;span style='color: #8AFF63'&gt;+&lt;/span&gt;&lt;br /&gt;&lt;span style='color: #8AFF63'&gt;+h2. Taboo delimiter&lt;/span&gt;&lt;br /&gt;&lt;span style='color: #8AFF63'&gt;+&lt;/span&gt;&lt;br /&gt;&lt;span style='color: #8AFF63'&gt;+People will never ever need ASCII 0 in their strings! I assure you! Let's use it as delimiter. No other options.&lt;/span&gt;&lt;br /&gt;&lt;span style='color: #8AFF63'&gt;+&lt;/span&gt;&lt;br /&gt;&lt;span style='color: #8AFF63'&gt;+h2. Tolerable delimiting&lt;/span&gt;&lt;br /&gt;&lt;span style='color: #8AFF63'&gt;+&lt;/span&gt;&lt;br /&gt;&lt;span style='color: #8AFF63'&gt;+Is implemented in &amp;quot;JSON&amp;quot;:http://www.json.org/. It uses backslashes plus very limited set of what can follow them. The format is quite readable and writeable by humans and parser-friendly. And also its page has nice graphics, I'd like to be able to make such myself. &lt;/span&gt;&lt;br /&gt;&lt;span style='color: #8AFF63'&gt;+&lt;/span&gt;&lt;br /&gt;&lt;span style='color: #8AFF63'&gt;+h2. (in search of) Perfect delimiting&lt;/span&gt;&lt;br /&gt;&lt;span style='color: #8AFF63'&gt;+&lt;/span&gt;&lt;br /&gt;&lt;span style='color: #8AFF63'&gt;+If you need simple strings, that will not encounter one character, you can delimit with that character. But for god's sake, do not try to allow strings do contain this character escaped.&lt;/span&gt;&lt;br /&gt;&lt;span style='color: #8AFF63'&gt;+&lt;/span&gt;&lt;br /&gt;&lt;span style='color: #8AFF63'&gt;+bc. very long value&lt;/span&gt;&lt;br /&gt;&lt;span style='color: #8AFF63'&gt;+&lt;/span&gt;&lt;br /&gt;&lt;span style='color: #8AFF63'&gt;+There is \n at and.&lt;/span&gt;&lt;br /&gt;&lt;span style='color: #8AFF63'&gt;+&lt;/span&gt;&lt;br /&gt;&lt;span style='color: #8AFF63'&gt;+If you need byte strings that can contain any byte, specify length before data.&lt;/span&gt;&lt;br /&gt;&lt;span style='color: #8AFF63'&gt;+&lt;/span&gt;&lt;br /&gt;&lt;span style='color: #8AFF63'&gt;+bc. 64 �d��W��uu&amp;amp;f(�69��須��?K4{u�&lt;/span&gt;&lt;br /&gt;&lt;span style='color: #8AFF63'&gt;+�@�����Ӌ*�yT��O;��|ÑZT}����Kn�&lt;/span&gt;&lt;br /&gt;&lt;span style='color: #8AFF63'&gt;+52 �d��W��uu&amp;amp;�d��&lt;/span&gt;&lt;br /&gt;&lt;span style='color: #8AFF63'&gt;+��uu&amp;amp;�d��W��uu&amp;amp;�d��W��uu&amp;amp;&lt;/span&gt;&lt;br /&gt;&lt;span style='color: #8AFF63'&gt;+�d��W��uu&amp;amp;}&lt;/span&gt;&lt;br /&gt;&lt;span style='color: #8AFF63'&gt;+&lt;/span&gt;&lt;br /&gt;&lt;span style='color: #8AFF63'&gt;+Lines _start_ with \n, there is single space after numbers, numbers consist of 0-9.&lt;/span&gt;&lt;br /&gt;&lt;span style='color: #8AFF63'&gt;+&lt;/span&gt;&lt;br /&gt;&lt;span style='color: #8AFF63'&gt;+So, to summarize it: very strict format, *NO* escaping, taboo *OR* skip-n-bytes delimiting.&lt;/span&gt;&lt;br /&gt;&lt;span style='color: #8AFF63'&gt;+&lt;/span&gt;&lt;br /&gt;&lt;span style='color: #8AFF63'&gt;+This kind of escaping is implemented in my serialization format called [[transfer]].&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style='color: #FF9EA0'&gt;--- /dev/null&lt;/span&gt;&lt;br /&gt;&lt;span style='color: #8AFF63'&gt;+++ b/code/transfer&lt;/span&gt;&lt;br /&gt;&lt;span style='color: #E200FF'&gt;@@ -1 +1,50 @@&lt;/span&gt;&lt;br /&gt;&lt;span style='color: #8AFF63'&gt;+h1. &amp;quot;Transfer&amp;quot; data transfer protocol&lt;/span&gt;&lt;br /&gt;&lt;span style='color: #8AFF63'&gt;+&lt;/span&gt;&lt;br /&gt;&lt;span style='color: #8AFF63'&gt;+This protocol can be used to transfer associative arrays with bytestrings over any byte transferring connection.&lt;/span&gt;&lt;br /&gt;&lt;span style='color: #8AFF63'&gt;+&lt;/span&gt;&lt;br /&gt;&lt;span style='color: #8AFF63'&gt;+h2. Text mode commands&lt;/span&gt;&lt;br /&gt;&lt;span style='color: #8AFF63'&gt;+&lt;/span&gt;&lt;br /&gt;&lt;span style='color: #8AFF63'&gt;+All fields are separated with single space, 'data' in FLD may contain spaces though.&lt;/span&gt;&lt;br /&gt;&lt;span style='color: #8AFF63'&gt;+&lt;/span&gt;&lt;br /&gt;&lt;span style='color: #8AFF63'&gt;+I will use pseudo-abnf here, because plain abnf sucks. (something) in parentheses denotes &amp;quot;something&amp;quot; field, $something later refers to its value&lt;/span&gt;&lt;br /&gt;&lt;span style='color: #8AFF63'&gt;+&lt;/span&gt;&lt;br /&gt;&lt;span style='color: #8AFF63'&gt;+Definitions:&lt;/span&gt;&lt;br /&gt;&lt;span style='color: #8AFF63'&gt;+&lt;/span&gt;&lt;br /&gt;&lt;span style='color: #8AFF63'&gt;+space     = ASCII 32&lt;/span&gt;&lt;br /&gt;&lt;span style='color: #8AFF63'&gt;+lf        = ASCII 10&lt;/span&gt;&lt;br /&gt;&lt;span style='color: #8AFF63'&gt;+non-lf    = anything but lf&lt;/span&gt;&lt;br /&gt;&lt;span style='color: #8AFF63'&gt;+non-space = anything but space&lt;/span&gt;&lt;br /&gt;&lt;span style='color: #8AFF63'&gt;+&lt;/span&gt;&lt;br /&gt;&lt;span style='color: #8AFF63'&gt;+h3. MOD module_name&lt;/span&gt;&lt;br /&gt;&lt;span style='color: #8AFF63'&gt;+&lt;/span&gt;&lt;br /&gt;&lt;span style='color: #8AFF63'&gt;+modCommand = &amp;quot;MOD&amp;quot; space *non-lf&lt;/span&gt;&lt;br /&gt;&lt;span style='color: #8AFF63'&gt;+&lt;/span&gt;&lt;br /&gt;&lt;span style='color: #8AFF63'&gt;+Means start of data structure named 'module_name'. If another module have already been started, throw error.&lt;/span&gt;&lt;br /&gt;&lt;span style='color: #8AFF63'&gt;+&lt;/span&gt;&lt;br /&gt;&lt;span style='color: #8AFF63'&gt;+h3. FLD name data&lt;/span&gt;&lt;br /&gt;&lt;span style='color: #8AFF63'&gt;+&lt;/span&gt;&lt;br /&gt;&lt;span style='color: #8AFF63'&gt;+fldCommand = &amp;quot;FLD&amp;quot; space *non-space space *non-lf&lt;/span&gt;&lt;br /&gt;&lt;span style='color: #8AFF63'&gt;+&lt;/span&gt;&lt;br /&gt;&lt;span style='color: #8AFF63'&gt;+Textual field 'name' with 'data' as content. 'data' may contain any character except of \n. Used for transferring small amount of data without linebreaks.&lt;/span&gt;&lt;br /&gt;&lt;span style='color: #8AFF63'&gt;+&lt;/span&gt;&lt;br /&gt;&lt;span style='color: #8AFF63'&gt;+h3. DAT name size&lt;/span&gt;&lt;br /&gt;&lt;span style='color: #8AFF63'&gt;+&lt;/span&gt;&lt;br /&gt;&lt;span style='color: #8AFF63'&gt;+datCommand = &amp;quot;DAT&amp;quot; space *non-space(name) space *digit(size) lf *&amp;lt;$size&amp;gt;any-byte(data)&lt;/span&gt;&lt;br /&gt;&lt;span style='color: #8AFF63'&gt;+&lt;/span&gt;&lt;br /&gt;&lt;span style='color: #8AFF63'&gt;+Initiates data mode for field 'name'. Right after delimiting \n recipient should start reading data and switch back to lines mode after exactly 'size' bytes of data.&lt;/span&gt;&lt;br /&gt;&lt;span style='color: #8AFF63'&gt;+&lt;/span&gt;&lt;br /&gt;&lt;span style='color: #8AFF63'&gt;+h3. END&lt;/span&gt;&lt;br /&gt;&lt;span style='color: #8AFF63'&gt;+&lt;/span&gt;&lt;br /&gt;&lt;span style='color: #8AFF63'&gt;+Ends a module&lt;/span&gt;&lt;br /&gt;&lt;span style='color: #8AFF63'&gt;+&lt;/span&gt;&lt;br /&gt;&lt;span style='color: #8AFF63'&gt;+Example of correct structure transfer:&lt;/span&gt;&lt;br /&gt;&lt;span style='color: #8AFF63'&gt;+&lt;/span&gt;&lt;br /&gt;&lt;span style='color: #8AFF63'&gt;+bc. MOD query&lt;/span&gt;&lt;br /&gt;&lt;span style='color: #8AFF63'&gt;+FLD hops 1&lt;/span&gt;&lt;br /&gt;&lt;span style='color: #8AFF63'&gt;+FLD query hash&lt;/span&gt;&lt;br /&gt;&lt;span style='color: #8AFF63'&gt;+DAT args 64&lt;/span&gt;&lt;br /&gt;&lt;span style='color: #8AFF63'&gt;+�d��W��uu&amp;amp;f(�69��須��?K4{u��@�����Ӌ*�yT��O;��|ÑZT}����Kn��&lt;/span&gt;&lt;br /&gt;&lt;span style='color: #8AFF63'&gt;+END&lt;/span&gt;&lt;br /&gt;&lt;span style='color: #8AFF63'&gt;+&lt;/span&gt;&lt;br /&gt;&lt;span style='color: #8AFF63'&gt;+Example of protocol implementation in Haskell can be seen here: [http://git.bitcheese.net/?a=summary&amp;amp;p=transfer]&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style='color: #FF9EA0'&gt;--- a/hellnet/protocols/transfer&lt;/span&gt;&lt;br /&gt;&lt;span style='color: #8AFF63'&gt;+++ /dev/null&lt;/span&gt;&lt;br /&gt;&lt;span style='color: #E200FF'&gt;@@ -1,39 +1 @@&lt;/span&gt;&lt;br /&gt;&lt;span style='color: #FF9EA0'&gt;-h1. DEPRECATED&lt;/span&gt;&lt;br /&gt;&lt;span style='color: #FF9EA0'&gt;-&lt;/span&gt;&lt;br /&gt;&lt;span style='color: #FF9EA0'&gt;-This page contains deprecated information. This has been replaced with [[http|HTTP interfaces]].&lt;/span&gt;&lt;br /&gt;&lt;span style='color: #FF9EA0'&gt;-&lt;/span&gt;&lt;br /&gt;&lt;span style='color: #FF9EA0'&gt;-h1. HellNet data transfer protocol&lt;/span&gt;&lt;br /&gt;&lt;span style='color: #FF9EA0'&gt;-&lt;/span&gt;&lt;br /&gt;&lt;span style='color: #FF9EA0'&gt;-This protocol is used to transfer data structures between HellNet nodes.&lt;/span&gt;&lt;br /&gt;&lt;span style='color: #FF9EA0'&gt;-&lt;/span&gt;&lt;br /&gt;&lt;span style='color: #FF9EA0'&gt;-Conversation consists of lines, separated by \n (text mode) or data chunks (data mode).&lt;/span&gt;&lt;br /&gt;&lt;span style='color: #FF9EA0'&gt;-&lt;/span&gt;&lt;br /&gt;&lt;span style='color: #FF9EA0'&gt;-h2. Text mode commands&lt;/span&gt;&lt;br /&gt;&lt;span style='color: #FF9EA0'&gt;-&lt;/span&gt;&lt;br /&gt;&lt;span style='color: #FF9EA0'&gt;-All fields are separated with single space, 'data' in FLD may contain spaces though.&lt;/span&gt;&lt;br /&gt;&lt;span style='color: #FF9EA0'&gt;-&lt;/span&gt;&lt;br /&gt;&lt;span style='color: #FF9EA0'&gt;-h3. MOD module_name&lt;/span&gt;&lt;br /&gt;&lt;span style='color: #FF9EA0'&gt;-&lt;/span&gt;&lt;br /&gt;&lt;span style='color: #FF9EA0'&gt;-Means start of data structure named 'module_name'. If another module have already been started, throw error.&lt;/span&gt;&lt;br /&gt;&lt;span style='color: #FF9EA0'&gt;-&lt;/span&gt;&lt;br /&gt;&lt;span style='color: #FF9EA0'&gt;-h3. FLD name data&lt;/span&gt;&lt;br /&gt;&lt;span style='color: #FF9EA0'&gt;-&lt;/span&gt;&lt;br /&gt;&lt;span style='color: #FF9EA0'&gt;-Textual field 'name' with 'data' as content. 'data' may contain any character except of \n. Used for transferring small amount of data without linebreaks.&lt;/span&gt;&lt;br /&gt;&lt;span style='color: #FF9EA0'&gt;-&lt;/span&gt;&lt;br /&gt;&lt;span style='color: #FF9EA0'&gt;-h3. DAT name size&lt;/span&gt;&lt;br /&gt;&lt;span style='color: #FF9EA0'&gt;-&lt;/span&gt;&lt;br /&gt;&lt;span style='color: #FF9EA0'&gt;-Initiates data mode for field 'name'. Right after delimiting \n recipient should start reading data and switch back to lines mode after exactly 'size' bytes of data&lt;/span&gt;&lt;br /&gt;&lt;span style='color: #FF9EA0'&gt;-&lt;/span&gt;&lt;br /&gt;&lt;span style='color: #FF9EA0'&gt;-h3. END&lt;/span&gt;&lt;br /&gt;&lt;span style='color: #FF9EA0'&gt;-&lt;/span&gt;&lt;br /&gt;&lt;span style='color: #FF9EA0'&gt;-Ends a module&lt;/span&gt;&lt;br /&gt;&lt;span style='color: #FF9EA0'&gt;-&lt;/span&gt;&lt;br /&gt;&lt;span style='color: #FF9EA0'&gt;-Example of correct structure transfer:&lt;/span&gt;&lt;br /&gt;&lt;span style='color: #FF9EA0'&gt;-&lt;/span&gt;&lt;br /&gt;&lt;span style='color: #FF9EA0'&gt;-bc. MOD query&lt;/span&gt;&lt;br /&gt;&lt;span style='color: #FF9EA0'&gt;-FLD hops 1&lt;/span&gt;&lt;br /&gt;&lt;span style='color: #FF9EA0'&gt;-FLD query hash&lt;/span&gt;&lt;br /&gt;&lt;span style='color: #FF9EA0'&gt;-DAT args 64&lt;/span&gt;&lt;br /&gt;&lt;span style='color: #FF9EA0'&gt;-�d��W��uu&amp;amp;f(�69��須��?K4{u��@�����Ӌ*�yT��O;��|ÑZT}����Kn��&lt;/span&gt;&lt;br /&gt;&lt;span style='color: #FF9EA0'&gt;-END&lt;/span&gt;</content>
  </entry>
  <entry>
    <title>Jumpstart</title>
    <updated>2010-03-03T08:30:31+00:00</updated>
    <link href="http://bitcheese.net/wiki/diff/7829fdabe1b8474e9f44e646186f0ac1638e17eb"/>
    <author>
      <name>Voker57</name>
    </author>
    <content type="html">&lt;p&gt;&lt;strong&gt;Jumpstart&lt;/strong&gt;&lt;/p&gt;&lt;span style='color: #FF9EA0'&gt;--- a/hellnet/hellage/use&lt;/span&gt;&lt;br /&gt;&lt;span style='color: #8AFF63'&gt;+++ b/hellnet/hellage/use&lt;/span&gt;&lt;br /&gt;&lt;span style='color: #E200FF'&gt;@@ -4,6 +4,10 @@&lt;/span&gt;&lt;br /&gt; &lt;br /&gt; This may be insanely difficult. Or not.&lt;br /&gt; &lt;br /&gt;&lt;span style='color: #8AFF63'&gt;+If you can't build from source, get the [[../hspawn/jumpstart]] package.&lt;/span&gt;&lt;br /&gt;&lt;span style='color: #8AFF63'&gt;+&lt;/span&gt;&lt;br /&gt;&lt;span style='color: #8AFF63'&gt;+h3. Otherwise&lt;/span&gt;&lt;br /&gt;&lt;span style='color: #8AFF63'&gt;+&lt;/span&gt;&lt;br /&gt; First, &amp;quot;install Hellnet&amp;quot;:/hellnet/hspawn/build. If you manage it, the rest is simple:&lt;br /&gt; &lt;br /&gt; bc. $ cabal install hellage&lt;br /&gt;&lt;br /&gt;&lt;span style='color: #FF9EA0'&gt;--- a/hellnet/hspawn/build&lt;/span&gt;&lt;br /&gt;&lt;span style='color: #8AFF63'&gt;+++ b/hellnet/hspawn/build&lt;/span&gt;&lt;br /&gt;&lt;span style='color: #E200FF'&gt;@@ -26,5 +26,9 @@&lt;/span&gt;&lt;br /&gt; &lt;br /&gt; And pray, since not all packages on hackage are ready for GHC 6.12 and you may have to patch them.&lt;br /&gt; &lt;br /&gt;&lt;span style='color: #8AFF63'&gt;+h2. Jumpstart&lt;/span&gt;&lt;br /&gt;&lt;span style='color: #8AFF63'&gt;+&lt;/span&gt;&lt;br /&gt;&lt;span style='color: #8AFF63'&gt;+Last resort: download [[jumpstart]] package, extract &amp;amp; launch.&lt;/span&gt;&lt;br /&gt;&lt;span style='color: #8AFF63'&gt;+&lt;/span&gt;&lt;br /&gt; Now, to the next step, [[use]].&lt;br /&gt;&lt;br /&gt;&lt;span style='color: #FF9EA0'&gt;--- /dev/null&lt;/span&gt;&lt;br /&gt;&lt;span style='color: #8AFF63'&gt;+++ b/hellnet/hspawn/jumpstart&lt;/span&gt;&lt;br /&gt;&lt;span style='color: #E200FF'&gt;@@ -1 +1,8 @@&lt;/span&gt;&lt;br /&gt;&lt;span style='color: #8AFF63'&gt;+h1. Hellnet jumpstart package&lt;/span&gt;&lt;br /&gt;&lt;span style='color: #8AFF63'&gt;+&lt;/span&gt;&lt;br /&gt;&lt;span style='color: #8AFF63'&gt;+If you can't build hellnet from hackage, this package is probably for you.&lt;/span&gt;&lt;br /&gt;&lt;span style='color: #8AFF63'&gt;+&lt;/span&gt;&lt;br /&gt;&lt;span style='color: #8AFF63'&gt;+This archive contains all required Hellnet &amp;amp;&amp;amp; Hellage linux-x86 executables, built statically. They may require openssl, libffi and whatever your system will notify you on launch.&lt;/span&gt;&lt;br /&gt;&lt;span style='color: #8AFF63'&gt;+&lt;/span&gt;&lt;br /&gt;&lt;span style='color: #8AFF63'&gt;+&amp;quot;0.1-1-gdd80491&amp;quot;:http://dump.bitcheese.net/files/hellnet-bin.tar.bz2 12 MB&lt;/span&gt;</content>
  </entry>
  <entry>
    <title>Massive hellnet update</title>
    <updated>2010-03-02T19:49:12+00:00</updated>
    <link href="http://bitcheese.net/wiki/diff/4e15a6cfb3b9e169288e53dab852233a9f89c131"/>
    <author>
      <name>Voker57</name>
    </author>
    <content type="html">&lt;p&gt;&lt;strong&gt;Massive hellnet update&lt;/strong&gt;&lt;/p&gt;&lt;span style='color: #FF9EA0'&gt;--- /dev/null&lt;/span&gt;&lt;br /&gt;&lt;span style='color: #8AFF63'&gt;+++ b/hellnet/feedback&lt;/span&gt;&lt;br /&gt;&lt;span style='color: #E200FF'&gt;@@ -1 +1,4 @@&lt;/span&gt;&lt;br /&gt;&lt;span style='color: #8AFF63'&gt;+h1. Hellnet feedback&lt;/span&gt;&lt;br /&gt;&lt;span style='color: #8AFF63'&gt;+&lt;/span&gt;&lt;br /&gt;&lt;span style='color: #8AFF63'&gt;+Hellnet &amp;quot;mailing list&amp;quot;:mailto:hellnet@googlegroups.com (&amp;quot;web&amp;quot;:http://groups.google.com/group/hellnet)&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style='color: #FF9EA0'&gt;--- /dev/null&lt;/span&gt;&lt;br /&gt;&lt;span style='color: #8AFF63'&gt;+++ b/hellnet/hspawn/serve&lt;/span&gt;&lt;br /&gt;&lt;span style='color: #E200FF'&gt;@@ -1 +1,25 @@&lt;/span&gt;&lt;br /&gt;&lt;span style='color: #8AFF63'&gt;+h1. Running your own Hellnet node&lt;/span&gt;&lt;br /&gt;&lt;span style='color: #8AFF63'&gt;+&lt;/span&gt;&lt;br /&gt;&lt;span style='color: #8AFF63'&gt;+First: You will not be serving unrelated content, only stuff you downloaded.&lt;/span&gt;&lt;br /&gt;&lt;span style='color: #8AFF63'&gt;+&lt;/span&gt;&lt;br /&gt;&lt;span style='color: #8AFF63'&gt;+h2. Why?&lt;/span&gt;&lt;br /&gt;&lt;span style='color: #8AFF63'&gt;+&lt;/span&gt;&lt;br /&gt;&lt;span style='color: #8AFF63'&gt;+* That is the only way to publish your own metatrees for now&lt;/span&gt;&lt;br /&gt;&lt;span style='color: #8AFF63'&gt;+* You help the network&lt;/span&gt;&lt;br /&gt;&lt;span style='color: #8AFF63'&gt;+&lt;/span&gt;&lt;br /&gt;&lt;span style='color: #8AFF63'&gt;+h2. How?&lt;/span&gt;&lt;br /&gt;&lt;span style='color: #8AFF63'&gt;+&lt;/span&gt;&lt;br /&gt;&lt;span style='color: #8AFF63'&gt;+[[build|Install hellnet]].&lt;/span&gt;&lt;br /&gt;&lt;span style='color: #8AFF63'&gt;+&lt;/span&gt;&lt;br /&gt;&lt;span style='color: #8AFF63'&gt;+bc. $ hell-serve 6666&lt;/span&gt;&lt;br /&gt;&lt;span style='color: #8AFF63'&gt;+&lt;/span&gt;&lt;br /&gt;&lt;span style='color: #8AFF63'&gt;+6666 is server port, which should be open to Internet. This will launch Hellnet server.&lt;/span&gt;&lt;br /&gt;&lt;span style='color: #8AFF63'&gt;+&lt;/span&gt;&lt;br /&gt;&lt;span style='color: #8AFF63'&gt;+Now,&lt;/span&gt;&lt;br /&gt;&lt;span style='color: #8AFF63'&gt;+&lt;/span&gt;&lt;br /&gt;&lt;span style='color: #8AFF63'&gt;+bc. $ hell-nodes handshake bitcheese.net 6666&lt;/span&gt;&lt;br /&gt;&lt;span style='color: #8AFF63'&gt;+&lt;/span&gt;&lt;br /&gt;&lt;span style='color: #8AFF63'&gt;+If response is &amp;quot;Handshake successful&amp;quot;, all is good. Server have added you to its nodelist and will announce your address to everybody, who in turn will be able to download your chunks and metatrees.&lt;/span&gt;&lt;br /&gt;&lt;span style='color: #8AFF63'&gt;+&lt;/span&gt;&lt;br /&gt;&lt;span style='color: #8AFF63'&gt;+Otherwise, read the message and fix the error.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style='color: #FF9EA0'&gt;--- a/hellnet/index&lt;/span&gt;&lt;br /&gt;&lt;span style='color: #8AFF63'&gt;+++ b/hellnet/index&lt;/span&gt;&lt;br /&gt;&lt;span style='color: #E200FF'&gt;@@ -3,8 +3,12 @@&lt;/span&gt;&lt;br /&gt; protocols - protocols' documentation&lt;br /&gt; crypto - cryptographic stuff used in Hellnet&lt;br /&gt; hellage - distributed hackage mirror using Hellnet&lt;br /&gt;&lt;span style='color: #8AFF63'&gt;+philosophy - about the project, its goals and idea&lt;/span&gt;&lt;br /&gt;&lt;span style='color: #8AFF63'&gt;+feedback - how to provide feedback &amp;amp; get help on Hellnet&lt;/span&gt;&lt;br /&gt; &lt;br /&gt; Hellnet is a project to create simple, distributed, anonymous data sharing network.&lt;br /&gt; &lt;br /&gt; You can see current state of matters on [[status]] page.&lt;br /&gt;&lt;span style='color: #8AFF63'&gt;+&lt;/span&gt;&lt;br /&gt;&lt;span style='color: #8AFF63'&gt;+Current use cases: [[hellage]], [[general file sharing &amp;amp; setup|hspawn/use]]&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style='color: #FF9EA0'&gt;--- /dev/null&lt;/span&gt;&lt;br /&gt;&lt;span style='color: #8AFF63'&gt;+++ b/hellnet/philosophy&lt;/span&gt;&lt;br /&gt;&lt;span style='color: #E200FF'&gt;@@ -1 +1,10 @@&lt;/span&gt;&lt;br /&gt;&lt;span style='color: #8AFF63'&gt;+h1. Hellnet philosophy&lt;/span&gt;&lt;br /&gt;&lt;span style='color: #8AFF63'&gt;+&lt;/span&gt;&lt;br /&gt;&lt;span style='color: #8AFF63'&gt;+Hellnet is simple. It tries to rely on already existing things.&lt;/span&gt;&lt;br /&gt;&lt;span style='color: #8AFF63'&gt;+&lt;/span&gt;&lt;br /&gt;&lt;span style='color: #8AFF63'&gt;+Hellnet is not for playing hide-and-seek with law enforcement. It's for simple, reliable distribution of legal content. No esprit de corps: you store only what you like to store, no other people's CP on your hard drive.&lt;/span&gt;&lt;br /&gt;&lt;span style='color: #8AFF63'&gt;+&lt;/span&gt;&lt;br /&gt;&lt;span style='color: #8AFF63'&gt;+_...or is it me too lazy to write code for sophisticated routing and shared storage?_&lt;/span&gt;&lt;br /&gt;&lt;span style='color: #8AFF63'&gt;+&lt;/span&gt;&lt;br /&gt;&lt;span style='color: #8AFF63'&gt;+Hellnet is named so because I like this name.&lt;/span&gt;</content>
  </entry>
  <entry>
    <title>Hellnet &amp; hellspawn update</title>
    <updated>2010-02-28T16:29:42+00:00</updated>
    <link href="http://bitcheese.net/wiki/diff/a8f6ae0553596707fbac6a8c628d4e778a4c12fc"/>
    <author>
      <name>Voker57</name>
    </author>
    <content type="html">&lt;p&gt;&lt;strong&gt;Hellnet &amp; hellspawn update&lt;/strong&gt;&lt;/p&gt;&lt;span style='color: #FF9EA0'&gt;--- /dev/null&lt;/span&gt;&lt;br /&gt;&lt;span style='color: #8AFF63'&gt;+++ b/hellnet/hellage/admin&lt;/span&gt;&lt;br /&gt;&lt;span style='color: #E200FF'&gt;@@ -1 +1,14 @@&lt;/span&gt;&lt;br /&gt;&lt;span style='color: #8AFF63'&gt;+h1. How to run your own Hellage index&lt;/span&gt;&lt;br /&gt;&lt;span style='color: #8AFF63'&gt;+&lt;/span&gt;&lt;br /&gt;&lt;span style='color: #8AFF63'&gt;+First, see [[use]] for installing Hellage.&lt;/span&gt;&lt;br /&gt;&lt;span style='color: #8AFF63'&gt;+&lt;/span&gt;&lt;br /&gt;&lt;span style='color: #8AFF63'&gt;+Then, see [[/hellnet/hspawn/use#metatrees]] for information how to create your own meta key.&lt;/span&gt;&lt;br /&gt;&lt;span style='color: #8AFF63'&gt;+&lt;/span&gt;&lt;br /&gt;&lt;span style='color: #8AFF63'&gt;+Last, run&lt;/span&gt;&lt;br /&gt;&lt;span style='color: #8AFF63'&gt;+&lt;/span&gt;&lt;br /&gt;&lt;span style='color: #8AFF63'&gt;+bc. $ hellage-genmeta mykey hackage&lt;/span&gt;&lt;br /&gt;&lt;span style='color: #8AFF63'&gt;+&lt;/span&gt;&lt;br /&gt;&lt;span style='color: #8AFF63'&gt;+Where @mykey@ is your key alias and @hackage@ is your meta name.&lt;/span&gt;&lt;br /&gt;&lt;span style='color: #8AFF63'&gt;+&lt;/span&gt;&lt;br /&gt;&lt;span style='color: #8AFF63'&gt;+This will download index and packages from [http://hackage.haskell.org] and store links in your meta. If download of certain package is stalled for too long, feel free to interrupt the program; next time it will start where it ended, only need to re-download index.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style='color: #FF9EA0'&gt;--- /dev/null&lt;/span&gt;&lt;br /&gt;&lt;span style='color: #8AFF63'&gt;+++ b/hellnet/hellage/index&lt;/span&gt;&lt;br /&gt;&lt;span style='color: #E200FF'&gt;@@ -1 +1,5 @@&lt;/span&gt;&lt;br /&gt;&lt;span style='color: #8AFF63'&gt;+use - How to use it&lt;/span&gt;&lt;br /&gt;&lt;span style='color: #8AFF63'&gt;+admin - How to run your own mirror&lt;/span&gt;&lt;br /&gt;&lt;span style='color: #8AFF63'&gt;+&lt;/span&gt;&lt;br /&gt;&lt;span style='color: #8AFF63'&gt;+Hellage is a distributed &amp;quot;Hackage&amp;quot;:http://hackage.haskell.org/ haskell packages' repository mirror.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style='color: #FF9EA0'&gt;--- /dev/null&lt;/span&gt;&lt;br /&gt;&lt;span style='color: #8AFF63'&gt;+++ b/hellnet/hellage/use&lt;/span&gt;&lt;br /&gt;&lt;span style='color: #E200FF'&gt;@@ -1 +1,69 @@&lt;/span&gt;&lt;br /&gt;&lt;span style='color: #8AFF63'&gt;+h1. How to use Hellage&lt;/span&gt;&lt;br /&gt;&lt;span style='color: #8AFF63'&gt;+&lt;/span&gt;&lt;br /&gt;&lt;span style='color: #8AFF63'&gt;+h2. Install&lt;/span&gt;&lt;br /&gt;&lt;span style='color: #8AFF63'&gt;+&lt;/span&gt;&lt;br /&gt;&lt;span style='color: #8AFF63'&gt;+This may be insanely difficult. Or not.&lt;/span&gt;&lt;br /&gt;&lt;span style='color: #8AFF63'&gt;+&lt;/span&gt;&lt;br /&gt;&lt;span style='color: #8AFF63'&gt;+First, &amp;quot;install Hellnet&amp;quot;:/hellnet/hspawn/build. If you manage it, the rest is simple:&lt;/span&gt;&lt;br /&gt;&lt;span style='color: #8AFF63'&gt;+&lt;/span&gt;&lt;br /&gt;&lt;span style='color: #8AFF63'&gt;+bc. $ cabal install hellage&lt;/span&gt;&lt;br /&gt;&lt;span style='color: #8AFF63'&gt;+&lt;/span&gt;&lt;br /&gt;&lt;span style='color: #8AFF63'&gt;+or, @git clone git://git.bitcheese.net/hellage &amp;amp;&amp;amp; cd hellage &amp;amp;&amp;amp; runghc Setup.hs install@ and have fun.&lt;/span&gt;&lt;br /&gt;&lt;span style='color: #8AFF63'&gt;+&lt;/span&gt;&lt;br /&gt;&lt;span style='color: #8AFF63'&gt;+h2. Actually use it&lt;/span&gt;&lt;br /&gt;&lt;span style='color: #8AFF63'&gt;+&lt;/span&gt;&lt;br /&gt;&lt;span style='color: #8AFF63'&gt;+First, you need to add at least one Hellnet node to your nodelist. You can use bitcheese.net:6666 for now.&lt;/span&gt;&lt;br /&gt;&lt;span style='color: #8AFF63'&gt;+&lt;/span&gt;&lt;br /&gt;&lt;span style='color: #8AFF63'&gt;+bc. $ hell-nodes handshake bitcheese.net 6666&lt;/span&gt;&lt;br /&gt;&lt;span style='color: #8AFF63'&gt;+&lt;/span&gt;&lt;br /&gt;&lt;span style='color: #8AFF63'&gt;+Then you need to run hellage daemon on your machine:&lt;/span&gt;&lt;br /&gt;&lt;span style='color: #8AFF63'&gt;+&lt;/span&gt;&lt;br /&gt;&lt;span style='color: #8AFF63'&gt;+bc. $ hellage 8da7ec91e46c4b1444bd1b1a151a038a0544fad23266111a8a84178efb9499cb756a265bbe456bd9ec9ba309bf146f8453ba17201ff968e181e36b5efe54fc1f hackage&lt;/span&gt;&lt;br /&gt;&lt;span style='color: #8AFF63'&gt;+&lt;/span&gt;&lt;br /&gt;&lt;span style='color: #8AFF63'&gt;+Here, *8da7ec...* is my encryption key ID and *hackage* is meta name of hellage. If you plan to use this (or any other) key often, you can create an alias:&lt;/span&gt;&lt;br /&gt;&lt;span style='color: #8AFF63'&gt;+&lt;/span&gt;&lt;br /&gt;&lt;span style='color: #8AFF63'&gt;+bc. $ hell-meta alias add voker57_key 8da7ec91e46c4b1444bd1b1a151a038a0544fad23266111a8a84178efb9499cb756a265bbe456bd9ec9ba309bf146f8453ba17201ff968e181e36b5efe54fc1f&lt;/span&gt;&lt;br /&gt;&lt;span style='color: #8AFF63'&gt;+&lt;/span&gt;&lt;br /&gt;&lt;span style='color: #8AFF63'&gt;+and then refer to this key as &amp;quot;voker57&amp;quot; everywhere:&lt;/span&gt;&lt;br /&gt;&lt;span style='color: #8AFF63'&gt;+&lt;/span&gt;&lt;br /&gt;&lt;span style='color: #8AFF63'&gt;+bc. $ hellage voker57_key hackage&lt;/span&gt;&lt;br /&gt;&lt;span style='color: #8AFF63'&gt;+&lt;/span&gt;&lt;br /&gt;&lt;span style='color: #8AFF63'&gt;+This command will run hellage on its default port, which is 6609. If you want to change it, run hellage with -p 64657.&lt;/span&gt;&lt;br /&gt;&lt;span style='color: #8AFF63'&gt;+&lt;/span&gt;&lt;br /&gt;&lt;span style='color: #8AFF63'&gt;+*WARNING WARNING*: Currently hellage does not bind to localhost, thus anybody with access to port can use it. Use firewalls or whatever to protect.&lt;/span&gt;&lt;br /&gt;&lt;span style='color: #8AFF63'&gt;+&lt;/span&gt;&lt;br /&gt;&lt;span style='color: #8AFF63'&gt;+Now, let's add hellage to cabal's sources:&lt;/span&gt;&lt;br /&gt;&lt;span style='color: #8AFF63'&gt;+&lt;/span&gt;&lt;br /&gt;&lt;span style='color: #8AFF63'&gt;+bc. $ editor ~/.cabal/config&lt;/span&gt;&lt;br /&gt;&lt;span style='color: #8AFF63'&gt;+&lt;/span&gt;&lt;br /&gt;&lt;span style='color: #8AFF63'&gt;+Search out the @remote-repo:@, comment it out and add hellage:&lt;/span&gt;&lt;br /&gt;&lt;span style='color: #8AFF63'&gt;+&lt;/span&gt;&lt;br /&gt;&lt;span style='color: #8AFF63'&gt;+bc. -- remote-repo: hackage.haskell.org:http://hackage.haskell.org/packages/archive&lt;/span&gt;&lt;br /&gt;&lt;span style='color: #8AFF63'&gt;+remote-repo: hellage:http://localhost:6609&lt;/span&gt;&lt;br /&gt;&lt;span style='color: #8AFF63'&gt;+&lt;/span&gt;&lt;br /&gt;&lt;span style='color: #8AFF63'&gt;+Update the hellage index:&lt;/span&gt;&lt;br /&gt;&lt;span style='color: #8AFF63'&gt;+&lt;/span&gt;&lt;br /&gt;&lt;span style='color: #8AFF63'&gt;+bc. $ wget http://localhost:6609/update -O- 2&amp;gt;/dev/null&lt;/span&gt;&lt;br /&gt;&lt;span style='color: #8AFF63'&gt;+Success&lt;/span&gt;&lt;br /&gt;&lt;span style='color: #8AFF63'&gt;+&lt;/span&gt;&lt;br /&gt;&lt;span style='color: #8AFF63'&gt;+If result is &amp;quot;Failed&amp;quot; then something went wrong and hellage won't work. Check node connectivity.&lt;/span&gt;&lt;br /&gt;&lt;span style='color: #8AFF63'&gt;+&lt;/span&gt;&lt;br /&gt;&lt;span style='color: #8AFF63'&gt;+Then, run @cabal update@ to get package index:&lt;/span&gt;&lt;br /&gt;&lt;span style='color: #8AFF63'&gt;+&lt;/span&gt;&lt;br /&gt;&lt;span style='color: #8AFF63'&gt;+bc. $ cabal update&lt;/span&gt;&lt;br /&gt;&lt;span style='color: #8AFF63'&gt;+&lt;/span&gt;&lt;br /&gt;&lt;span style='color: #8AFF63'&gt;+If everything was OK, then you can download packages now:&lt;/span&gt;&lt;br /&gt;&lt;span style='color: #8AFF63'&gt;+&lt;/span&gt;&lt;br /&gt;&lt;span style='color: #8AFF63'&gt;+bc. $ cabal install empty&lt;/span&gt;&lt;br /&gt;&lt;span style='color: #8AFF63'&gt;+&lt;/span&gt;&lt;br /&gt;&lt;span style='color: #8AFF63'&gt;+Congratulations! You got hellage up and running.&lt;/span&gt;&lt;br /&gt;&lt;span style='color: #8AFF63'&gt;+&lt;/span&gt;&lt;br /&gt;&lt;span style='color: #8AFF63'&gt;+h2. Tricks&lt;/span&gt;&lt;br /&gt;&lt;span style='color: #8AFF63'&gt;+&lt;/span&gt;&lt;br /&gt;&lt;span style='color: #8AFF63'&gt;+* If you don't like to keep a terminal emulator constantly running, i suggest using &amp;quot;daemontools&amp;quot;:http://packages.debian.org/sid/daemontools or &amp;quot;dtach&amp;quot;:http://dtach.sourceforge.net/ or &amp;quot;screen&amp;quot;:http://www.gnu.org/software/screen/ for daemonizing hellage.&lt;/span&gt;&lt;br /&gt;&lt;span style='color: #8AFF63'&gt;+* You can update hellage via hellage!&lt;/span&gt;&lt;br /&gt;&lt;span style='color: #8AFF63'&gt;+&lt;/span&gt;&lt;br /&gt;&lt;span style='color: #8AFF63'&gt;+h2. Troubleshooting / Feedback&lt;/span&gt;&lt;br /&gt;&lt;span style='color: #8AFF63'&gt;+&lt;/span&gt;&lt;br /&gt;&lt;span style='color: #8AFF63'&gt;+If you succeeded, or failed, in installing hellage by this manual, share your experience in &amp;quot;hellnet mailing list&amp;quot;:http://groups.google.com/group/hellnet.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style='color: #FF9EA0'&gt;--- a/hellnet/hspawn/build&lt;/span&gt;&lt;br /&gt;&lt;span style='color: #8AFF63'&gt;+++ b/hellnet/hspawn/build&lt;/span&gt;&lt;br /&gt;&lt;span style='color: #E200FF'&gt;@@ -2,11 +2,11 @@&lt;/span&gt;&lt;br /&gt; &lt;br /&gt; Warning: this requires lot of magic&lt;br /&gt; &lt;br /&gt;&lt;span style='color: #FF9EA0'&gt;-h2. Downloading&lt;/span&gt;&lt;br /&gt;&lt;span style='color: #8AFF63'&gt;+h2. Manually&lt;/span&gt;&lt;br /&gt; &lt;br /&gt; Get the latest source from git: @git clone git://git.bitcheese.net/Hellnet@&lt;br /&gt; &lt;br /&gt;&lt;span style='color: #FF9EA0'&gt;-Requirements are: &amp;quot;GHC&amp;quot;:http://haskell.org/ghc 6.10 (didn't check with other compilers), &amp;quot;Cabal&amp;quot;:http://haskell.org/cabal (you will have to install them manually, as described &amp;quot;here&amp;quot;:http://book.realworldhaskell.org/read/installing-ghc-and-haskell-libraries.html) HTTP, Lucu, Crypto (these are Cabal packages, you can install them with @cabal install name@)&lt;/span&gt;&lt;br /&gt;&lt;span style='color: #8AFF63'&gt;+Requirements are: &amp;quot;GHC&amp;quot;:http://haskell.org/ghc 6.12 (didn't check with other compilers), &amp;quot;Cabal&amp;quot;:http://haskell.org/cabal (you will have to install them manually, as described &amp;quot;here&amp;quot;:http://book.realworldhaskell.org/read/installing-ghc-and-haskell-libraries.html) HTTP, Lucu, Crypto (these are Cabal packages, you can install them with @cabal install name@)&lt;/span&gt;&lt;br /&gt; &lt;br /&gt; Once you have all those installed, Hellnet can be built with&lt;br /&gt; &lt;br /&gt;&lt;span style='color: #E200FF'&gt;@@ -17,6 +17,14 @@&lt;/span&gt;&lt;br /&gt; On first stage, Cabal may complain about missing dependencies, you'll have to install them.&lt;br /&gt; &lt;br /&gt; Alternatively, if you don't want to mess with Cabal, you can just run 'make', it will compile all the executables in current folder. They are static and can be safely moved.&lt;br /&gt;&lt;span style='color: #8AFF63'&gt;+&lt;/span&gt;&lt;br /&gt;&lt;span style='color: #8AFF63'&gt;+h2. Via cabal&lt;/span&gt;&lt;br /&gt;&lt;span style='color: #8AFF63'&gt;+&lt;/span&gt;&lt;br /&gt;&lt;span style='color: #8AFF63'&gt;+Hellnet is available on Hackage. To install it, you'll need working Cabal setup (see above). Then&lt;/span&gt;&lt;br /&gt;&lt;span style='color: #8AFF63'&gt;+&lt;/span&gt;&lt;br /&gt;&lt;span style='color: #8AFF63'&gt;+bc. $ cabal install hellnet&lt;/span&gt;&lt;br /&gt;&lt;span style='color: #8AFF63'&gt;+&lt;/span&gt;&lt;br /&gt;&lt;span style='color: #8AFF63'&gt;+And pray, since not all packages on hackage are ready for GHC 6.12 and you may have to patch them.&lt;/span&gt;&lt;br /&gt; &lt;br /&gt; Now, to the next step, [[use]].&lt;br /&gt;&lt;br /&gt;&lt;span style='color: #FF9EA0'&gt;--- a/hellnet/hspawn/use&lt;/span&gt;&lt;br /&gt;&lt;span style='color: #8AFF63'&gt;+++ b/hellnet/hspawn/use&lt;/span&gt;&lt;br /&gt;&lt;span style='color: #E200FF'&gt;@@ -51,7 +51,7 @@&lt;/span&gt;&lt;br /&gt; &lt;br /&gt; And after short wait read the text of GPL.&lt;br /&gt; &lt;br /&gt;&lt;span style='color: #FF9EA0'&gt;-h2. Meta trees&lt;/span&gt;&lt;br /&gt;&lt;span style='color: #8AFF63'&gt;+h2(#metatrees). Meta trees&lt;/span&gt;&lt;br /&gt; &lt;br /&gt; [[/hellnet/tech/metatrees|Meta trees]] are tool to publish named information to Hellnet and keep it updated. Authenticity of information is guaranteed via digital signatures.&lt;br /&gt; &lt;br /&gt;&lt;br /&gt;&lt;span style='color: #FF9EA0'&gt;--- a/hellnet/index&lt;/span&gt;&lt;br /&gt;&lt;span style='color: #8AFF63'&gt;+++ b/hellnet/index&lt;/span&gt;&lt;br /&gt;&lt;span style='color: #E200FF'&gt;@@ -1,3 +1,9 @@&lt;/span&gt;&lt;br /&gt;&lt;span style='color: #8AFF63'&gt;+tech - descriptions of technologies used in Hellnet&lt;/span&gt;&lt;br /&gt;&lt;span style='color: #8AFF63'&gt;+hspawn - documentation related to Haskell implementation&lt;/span&gt;&lt;br /&gt;&lt;span style='color: #8AFF63'&gt;+protocols - protocols' documentation&lt;/span&gt;&lt;br /&gt;&lt;span style='color: #8AFF63'&gt;+crypto - cryptographic stuff used in Hellnet&lt;/span&gt;&lt;br /&gt;&lt;span style='color: #8AFF63'&gt;+hellage - distributed hackage mirror using Hellnet&lt;/span&gt;&lt;br /&gt;&lt;span style='color: #8AFF63'&gt;+&lt;/span&gt;&lt;br /&gt; Hellnet is a project to create simple, distributed, anonymous data sharing network.&lt;br /&gt; &lt;br /&gt; You can see current state of matters on [[status]] page.</content>
  </entry>
  <entry>
    <title>updated short meta res. desc.</title>
    <updated>2010-02-19T22:24:30+00:00</updated>
    <link href="http://bitcheese.net/wiki/diff/fe8d958048342100813c7a183aa68fbe6d71e0a7"/>
    <author>
      <name>Voker57</name>
    </author>
    <content type="html">&lt;p&gt;&lt;strong&gt;updated short meta res. desc.&lt;/strong&gt;&lt;/p&gt;&lt;span style='color: #FF9EA0'&gt;--- a/hellnet/protocols/http/index&lt;/span&gt;&lt;br /&gt;&lt;span style='color: #8AFF63'&gt;+++ b/hellnet/protocols/http/index&lt;/span&gt;&lt;br /&gt;&lt;span style='color: #E200FF'&gt;@@ -6,7 +6,7 @@&lt;/span&gt;&lt;br /&gt; &lt;br /&gt; |_. Query |_. Path 					|_. Static/dynamic	|_. Description |&lt;br /&gt; | GET | @/chunks/([0-9a-f]+)@	| static 				| [[/hellnet/tech/chunk|Chunk]] with hash $1	|&lt;br /&gt;&lt;span style='color: #FF9EA0'&gt;-| GET	| @/meta/([0-9a-f]+)/([^/]+){,\.key,\.sign}@	| static					| [[../tech/metatrees|Metatree]] of key $1 and name $2, and its signature &amp;amp; date |&lt;/span&gt;&lt;br /&gt;&lt;span style='color: #8AFF63'&gt;+| GET	| @^hell://meta/([0-9a-f]{64})/([^/]+)/(.*)(/.*)$@ | static					| [[../tech/metatrees|Metatree]] of key $1 and name $2 |&lt;/span&gt;&lt;br /&gt; | GET, HEAD | @/hello@ | static | Check whether node is up |&lt;br /&gt; | POST | @/handshake@ | dynamic | Establish a link to node |</content>
  </entry>
  <entry>
    <title>More hellnet updates</title>
    <updated>2010-02-19T22:07:16+00:00</updated>
    <link href="http://bitcheese.net/wiki/diff/d4717ef115dbe0a7e24ea85e307026692192b315"/>
    <author>
      <name>Voker57</name>
    </author>
    <content type="html">&lt;p&gt;&lt;strong&gt;More hellnet updates&lt;/strong&gt;&lt;/p&gt;&lt;span style='color: #FF9EA0'&gt;--- a/hellnet/hspawn/use&lt;/span&gt;&lt;br /&gt;&lt;span style='color: #8AFF63'&gt;+++ b/hellnet/hspawn/use&lt;/span&gt;&lt;br /&gt;&lt;span style='color: #E200FF'&gt;@@ -1,11 +1,9 @@&lt;/span&gt;&lt;br /&gt; h1. Usage of Hellnet&lt;br /&gt; &lt;br /&gt;&lt;span style='color: #FF9EA0'&gt;-Currently, the only thing Hellnet can do is file storage and retrieval.&lt;/span&gt;&lt;br /&gt;&lt;span style='color: #8AFF63'&gt;+*WARNING: This part contains much unsettled stuff and interfaces that can be not convenient to use yet. This will change.*&lt;/span&gt;&lt;br /&gt; &lt;br /&gt;&lt;span style='color: #FF9EA0'&gt;-h2. How it works&lt;/span&gt;&lt;br /&gt;&lt;span style='color: #8AFF63'&gt;+h3. Simple data storage&lt;/span&gt;&lt;br /&gt; &lt;br /&gt;&lt;span style='color: #FF9EA0'&gt;-h3. Data storage&lt;/span&gt;&lt;br /&gt;&lt;span style='color: #FF9EA0'&gt;-&lt;/span&gt;&lt;br /&gt; All the data in Hellnet is stored in 64kb chunks. You can see your current cache in ~/.hellnet/store.&lt;br /&gt; &lt;br /&gt; A chunk may be a [[/hellnet/tech/recursive-filelinks|filelink]], which stores information about chunks that form a file.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style='color: #E200FF'&gt;@@ -20,38 +18,88 @@&lt;/span&gt;&lt;br /&gt; &lt;br /&gt; So, let's assume you need to share a copy of GPL[2]. It's named COPYING and located in current folder. Here you go:&lt;br /&gt; &lt;br /&gt;&lt;span style='color: #FF9EA0'&gt;-bc. hell-insert COPYING&lt;/span&gt;&lt;br /&gt;&lt;span style='color: #FF9EA0'&gt;-COPYING: hell://file/361e6d35ac16281294314c5b40b57ccd3f0d5e6ab2ed6088e346f8e181ec4c89ac141a9a786a1f0afc454610f4db8c00af98272f44490a6f601fa08293a13be9/COPYING&lt;/span&gt;&lt;br /&gt;&lt;span style='color: #8AFF63'&gt;+bc. % hell-insert COPYING&lt;/span&gt;&lt;br /&gt;&lt;span style='color: #8AFF63'&gt;+COPYING: hell://file/361e6d35ac16281294314c5b40b57ccd3f0d5e6ab2ed6088e346f8e181ec4c89ac141a9a786a1f0afc454610f4db8c00af98272f44490a6f601fa08293a13be9?name=COPYING&lt;/span&gt;&lt;br /&gt; &lt;br /&gt; Hellnet *inserts* the file in local storage and gives you a link to the file. You might as well request to encrypt the file, to protect your privacy:&lt;br /&gt; &lt;br /&gt;&lt;span style='color: #FF9EA0'&gt;-bc. hell-insert -e COPYING&lt;/span&gt;&lt;br /&gt;&lt;span style='color: #FF9EA0'&gt;-COPYING:  hell://file/04e69a4c0cf881dfe487cb76551e0cbfabde629453765dd647f2ee5bddd3d4298a78bae8bc4094e3c4df3f76ad7bdf5112592d85f6dab3571a931a145854a391.9f85e591452b21f9390bc75a5bb016da4a73a13e58e7649bc9a748c4a80b49cf/COPYING&lt;/span&gt;&lt;br /&gt;&lt;span style='color: #8AFF63'&gt;+bc. % hell-insert -e COPYING&lt;/span&gt;&lt;br /&gt;&lt;span style='color: #8AFF63'&gt;+COPYING:  hell://file/04e69a4c0cf881dfe487cb76551e0cbfabde629453765dd647f2ee5bddd3d4298a78bae8bc4094e3c4df3f76ad7bdf5112592d85f6dab3571a931a145854a391?name=COPYING&amp;amp;key=9f85e591452b21f9390bc75a5bb016da4a73a13e58e7649bc9a748c4a80b49cf&lt;/span&gt;&lt;br /&gt; &lt;br /&gt; Link here consists of three or two parts, first is hash, second is encryption key. Third may be the file name. If you are using a link without filename, contents will be printed to STDOUT.&lt;br /&gt; &lt;br /&gt; You can test how file is inserted then:&lt;br /&gt; &lt;br /&gt;&lt;span style='color: #FF9EA0'&gt;-bc. hell-get hell://file/04e69a4c0cf881dfe487cb76551e0cbfabde629453765dd647f2ee5bddd3d4298a78bae8bc4094e3c4df3f76ad7bdf5112592d85f6dab3571a931a145854a391.9f85e591452b21f9390bc75a5bb016da4a73a13e58e7649bc9a748c4a80b49cf/COPYING.2&lt;/span&gt;&lt;br /&gt;&lt;span style='color: #8AFF63'&gt;+bc. % hell-get &amp;quot;hell://file/04e69a4c0cf881dfe487cb76551e0cbfabde629453765dd647f2ee5bddd3d4298a78bae8bc4094e3c4df3f76ad7bdf5112592d85f6dab3571a931a145854a391?name=COPYING2&amp;amp;key=9f85e591452b21f9390bc75a5bb016da4a73a13e58e7649bc9a748c4a80b49cf&amp;quot;&lt;/span&gt;&lt;br /&gt; diff COPYING COPYING.2&lt;br /&gt; &lt;br /&gt; Now let's assume you have a friend who needs to receive a copy of GPL. First, you should bring up Hellnet server on your side:&lt;br /&gt; &lt;br /&gt;&lt;span style='color: #FF9EA0'&gt;-bc. hell-serve 12345 &amp;amp;&lt;/span&gt;&lt;br /&gt;&lt;span style='color: #8AFF63'&gt;+bc. % hell-serve 12345 &amp;amp;&lt;/span&gt;&lt;br /&gt; &lt;br /&gt; where 12345 is port on your machine which is open to the world.&lt;br /&gt; &lt;br /&gt; Then, your friend should run:&lt;br /&gt; &lt;br /&gt;&lt;span style='color: #FF9EA0'&gt;-bc. hell-nodes add 123.12.1.0 12345&lt;/span&gt;&lt;br /&gt;&lt;span style='color: #8AFF63'&gt;+bc. % hell-nodes add 123.12.1.0 12345&lt;/span&gt;&lt;br /&gt; &lt;br /&gt; where *123.12.1.0* is *your* host and 12345 is *your* open port.&lt;br /&gt; &lt;br /&gt; Then he can type as well:&lt;br /&gt; &lt;br /&gt;&lt;span style='color: #FF9EA0'&gt;-bc. hell-get hell://file/04e69a4c0cf881dfe487cb76551e0cbfabde629453765dd647f2ee5bddd3d4298a78bae8bc4094e3c4df3f76ad7bdf5112592d85f6dab3571a931a145854a391.9f85e591452b21f9390bc75a5bb016da4a73a13e58e7649bc9a748c4a80b49cf/COPYING&lt;/span&gt;&lt;br /&gt;&lt;span style='color: #8AFF63'&gt;+bc. % hell-get &amp;quot;hell://file/04e69a4c0cf881dfe487cb76551e0cbfabde629453765dd647f2ee5bddd3d4298a78bae8bc4094e3c4df3f76ad7bdf5112592d85f6dab3571a931a145854a391?name=COPYING&amp;amp;key=9f85e591452b21f9390bc75a5bb016da4a73a13e58e7649bc9a748c4a80b49cf&amp;quot;&lt;/span&gt;&lt;br /&gt; &lt;br /&gt; And after short wait read the text of GPL.&lt;br /&gt;&lt;span style='color: #8AFF63'&gt;+&lt;/span&gt;&lt;br /&gt;&lt;span style='color: #8AFF63'&gt;+h2. Meta trees&lt;/span&gt;&lt;br /&gt;&lt;span style='color: #8AFF63'&gt;+&lt;/span&gt;&lt;br /&gt;&lt;span style='color: #8AFF63'&gt;+[[/hellnet/tech/metatrees|Meta trees]] are tool to publish named information to Hellnet and keep it updated. Authenticity of information is guaranteed via digital signatures.&lt;/span&gt;&lt;br /&gt;&lt;span style='color: #8AFF63'&gt;+&lt;/span&gt;&lt;br /&gt;&lt;span style='color: #8AFF63'&gt;+h3. Create a key&lt;/span&gt;&lt;br /&gt;&lt;span style='color: #8AFF63'&gt;+&lt;/span&gt;&lt;br /&gt;&lt;span style='color: #8AFF63'&gt;+First step is to create your own key that will be used to sign content.&lt;/span&gt;&lt;br /&gt;&lt;span style='color: #8AFF63'&gt;+&lt;/span&gt;&lt;br /&gt;&lt;span style='color: #8AFF63'&gt;+bc. % hell-meta genkey&lt;/span&gt;&lt;br /&gt;&lt;span style='color: #8AFF63'&gt;+Generating keys...&lt;/span&gt;&lt;br /&gt;&lt;span style='color: #8AFF63'&gt;+Your key ID is 02883714ac21fc87478e91cb0204a9cff2c82a1368b03aed84bfe1c3567268a7331fa5d04e8a9725b0d18094ab546068b6e569e15c09277f1ca9cd89a8ff10e9&lt;/span&gt;&lt;br /&gt;&lt;span style='color: #8AFF63'&gt;+&lt;/span&gt;&lt;br /&gt;&lt;span style='color: #8AFF63'&gt;+This key ID is effectively public key's hash. It's rather long and hard to remember, so we can create client-side alias:&lt;/span&gt;&lt;br /&gt;&lt;span style='color: #8AFF63'&gt;+&lt;/span&gt;&lt;br /&gt;&lt;span style='color: #8AFF63'&gt;+bc. % hell-meta alias add testkey 02883714ac21fc87478e91cb0204a9cff2c82a1368b03aed84bfe1c3567268a7331fa5d04e8a9725b0d18094ab546068b6e569e15c09277f1ca9cd89a8ff10e9&lt;/span&gt;&lt;br /&gt;&lt;span style='color: #8AFF63'&gt;+&lt;/span&gt;&lt;br /&gt;&lt;span style='color: #8AFF63'&gt;+Now you can refer to your key as &amp;quot;testkey&amp;quot;&lt;/span&gt;&lt;br /&gt;&lt;span style='color: #8AFF63'&gt;+&lt;/span&gt;&lt;br /&gt;&lt;span style='color: #8AFF63'&gt;+h3. Write a meta&lt;/span&gt;&lt;br /&gt;&lt;span style='color: #8AFF63'&gt;+&lt;/span&gt;&lt;br /&gt;&lt;span style='color: #8AFF63'&gt;+Second step is editing your meta file. It's &amp;quot;JSON&amp;quot;:http://json.org and represents a filesystem of Hellnet links. Let us add our homepage:&lt;/span&gt;&lt;br /&gt;&lt;span style='color: #8AFF63'&gt;+&lt;/span&gt;&lt;br /&gt;&lt;span style='color: #8AFF63'&gt;+bc. % echo &amp;quot;&amp;lt;html&amp;gt;Hallo thar&amp;lt;/html&amp;gt;&amp;quot; &amp;gt; index.html&lt;/span&gt;&lt;br /&gt;&lt;span style='color: #8AFF63'&gt;+% hell-insert index.html&lt;/span&gt;&lt;br /&gt;&lt;span style='color: #8AFF63'&gt;+hell://file/6890e1d532ac7a8f21453f86a082bad7109eb452589bd19606b7251973a63bbeeb9e4d66b99a0411f7d3c897445ef2dc1c8fd0da678604caff10d72bddc25e2f?name=index.html&lt;/span&gt;&lt;br /&gt;&lt;span style='color: #8AFF63'&gt;+&lt;/span&gt;&lt;br /&gt;&lt;span style='color: #8AFF63'&gt;+OK, we got a helllink to our home page. Let's insert it into meta:&lt;/span&gt;&lt;br /&gt;&lt;span style='color: #8AFF63'&gt;+&lt;/span&gt;&lt;br /&gt;&lt;span style='color: #8AFF63'&gt;+bc. % hell-meta new testkey homepage&lt;/span&gt;&lt;br /&gt;&lt;span style='color: #8AFF63'&gt;+% hell-meta edit testkey homepage&lt;/span&gt;&lt;br /&gt;&lt;span style='color: #8AFF63'&gt;+&lt;/span&gt;&lt;br /&gt;&lt;span style='color: #8AFF63'&gt;+This will launch your favourite (or default) editor and open meta content in it. Editing, saving and exiting will overwrite meta content and update the meta. Let's write the following:&lt;/span&gt;&lt;br /&gt;&lt;span style='color: #8AFF63'&gt;+&lt;/span&gt;&lt;br /&gt;&lt;span style='color: #8AFF63'&gt;+bc. {&lt;/span&gt;&lt;br /&gt;&lt;span style='color: #8AFF63'&gt;+	&amp;quot;index.html&amp;quot; : &amp;quot;hell://file/6890e1d532ac7a8f21453f86a082bad7109eb452589bd19606b7251973a63bbeeb9e4d66b99a0411f7d3c897445ef2dc1c8fd0da678604caff10d72bddc25e2f&amp;quot;&lt;/span&gt;&lt;br /&gt;&lt;span style='color: #8AFF63'&gt;+}&lt;/span&gt;&lt;br /&gt;&lt;span style='color: #8AFF63'&gt;+&lt;/span&gt;&lt;br /&gt;&lt;span style='color: #8AFF63'&gt;+Save &amp;amp; exit. Now you can get your homepage by these tricky commands:&lt;/span&gt;&lt;br /&gt;&lt;span style='color: #8AFF63'&gt;+&lt;/span&gt;&lt;br /&gt;&lt;span style='color: #8AFF63'&gt;+bc. % hell-meta get testkey homepage /index.html&lt;/span&gt;&lt;br /&gt;&lt;span style='color: #8AFF63'&gt;+&amp;quot;hell://file/6890e1d532ac7a8f21453f86a082bad7109eb452589bd19606b7251973a63bbeeb9e4d66b99a0411f7d3c897445ef2dc1c8fd0da678604caff10d72bddc25e2f&amp;quot;&lt;/span&gt;&lt;br /&gt;&lt;span style='color: #8AFF63'&gt;+% hell-get hell://file/6890e1d532ac7a8f21453f86a082bad7109eb452589bd19606b7251973a63bbeeb9e4d66b99a0411f7d3c897445ef2dc1c8fd0da678604caff10d72bddc25e2f&lt;/span&gt;&lt;br /&gt;&lt;span style='color: #8AFF63'&gt;+&amp;lt;html&amp;gt;Hallo thar&amp;lt;/html&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style='color: #8AFF63'&gt;+&lt;/span&gt;&lt;br /&gt;&lt;span style='color: #8AFF63'&gt;+Other people can get it too, only using you key's real ID instead of &amp;quot;testkey&amp;quot;.&lt;/span&gt;&lt;br /&gt;&lt;span style='color: #8AFF63'&gt;+&lt;/span&gt;&lt;br /&gt;&lt;span style='color: #8AFF63'&gt;+h2. Discover more nodes&lt;/span&gt;&lt;br /&gt;&lt;span style='color: #8AFF63'&gt;+&lt;/span&gt;&lt;br /&gt;&lt;span style='color: #8AFF63'&gt;+If you have already discovered at least one Hellnet node, you can use @hell-nodes discover@ to scan the net for more. All found nodes will be added to your nodelist.&lt;/span&gt;&lt;br /&gt; &lt;br /&gt; fn1. Or run out of nodes&lt;br /&gt; </content>
  </entry>
  <entry>
    <title>Hellnet: meta</title>
    <updated>2010-02-19T21:41:16+00:00</updated>
    <link href="http://bitcheese.net/wiki/diff/208b21b5fc13dee1c301f4fe750ab5f207094607"/>
    <author>
      <name>Voker57</name>
    </author>
    <content type="html">&lt;p&gt;&lt;strong&gt;Hellnet: meta&lt;/strong&gt;&lt;/p&gt;&lt;span style='color: #FF9EA0'&gt;--- a/hellnet/status&lt;/span&gt;&lt;br /&gt;&lt;span style='color: #8AFF63'&gt;+++ b/hellnet/status&lt;/span&gt;&lt;br /&gt;&lt;span style='color: #E200FF'&gt;@@ -4,5 +4,5 @@&lt;/span&gt;&lt;br /&gt; &lt;br /&gt; *Hellspawn* -- Hellnet daemon in Qt/C++. Supports data inserting, retrieving, [[protocols/transfer|message]] parsing and even some network connectivity. Doesn't work out of localhost, development is stopped in favour of hspawn.&lt;br /&gt; &lt;br /&gt;&lt;span style='color: #FF9EA0'&gt;-*[[hspawn|Hspawn]]* -- Hellnet daemon in Haskell. Currently supports data inserting and retrieval (optionally [[crypto/symmetric|encrypted]]), [[tech/metatrees]] with manual server discovery&lt;/span&gt;&lt;br /&gt;&lt;span style='color: #8AFF63'&gt;+*[[hspawn|Hspawn]]* -- Hellnet daemon in Haskell. Currently supports data inserting and retrieval (optionally [[crypto/symmetric|encrypted]]), [[tech/metatrees]], manual bootstrapping and semi-automatic server discovery.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style='color: #FF9EA0'&gt;--- a/hellnet/tech/URIs/meta&lt;/span&gt;&lt;br /&gt;&lt;span style='color: #8AFF63'&gt;+++ b/hellnet/tech/URIs/meta&lt;/span&gt;&lt;br /&gt;&lt;span style='color: #E200FF'&gt;@@ -2,15 +2,20 @@&lt;/span&gt;&lt;br /&gt; &lt;br /&gt; h2. Regex&lt;br /&gt; &lt;br /&gt;&lt;span style='color: #FF9EA0'&gt;-@^hell://meta/([0-9a-f]{64})/([^/]+)/(.*)$@&lt;/span&gt;&lt;br /&gt;&lt;span style='color: #8AFF63'&gt;+@^hell://meta/([0-9a-f]{64})/([^/]+)/(.*)(/.*)$@&lt;/span&gt;&lt;br /&gt; &lt;br /&gt; $1: public key hash&lt;br /&gt; $2: meta name&lt;br /&gt;&lt;span style='color: #8AFF63'&gt;+$3: JPath to meta content&lt;/span&gt;&lt;br /&gt; &lt;br /&gt; h2. Optional parameters&lt;br /&gt; &lt;br /&gt; name: Any string, contents' filename&lt;br /&gt; key: hex number, symmetric encryption key&lt;br /&gt;&lt;span style='color: #8AFF63'&gt;+&lt;/span&gt;&lt;br /&gt;&lt;span style='color: #8AFF63'&gt;+h2. Returned data&lt;/span&gt;&lt;br /&gt;&lt;span style='color: #8AFF63'&gt;+&lt;/span&gt;&lt;br /&gt;&lt;span style='color: #8AFF63'&gt;+JSON structure (meta content with possibly applied JPath).&lt;/span&gt;&lt;br /&gt; &lt;br /&gt; h2. How it works&lt;br /&gt; </content>
  </entry>
  <entry>
    <title>hell-updat</title>
    <updated>2010-01-03T20:05:20+00:00</updated>
    <link href="http://bitcheese.net/wiki/diff/3863226b8dc44779c5422a8979ff93f1392b0f90"/>
    <author>
      <name>Voker57</name>
    </author>
    <content type="html">&lt;p&gt;&lt;strong&gt;hell-updat&lt;/strong&gt;&lt;/p&gt;&lt;span style='color: #FF9EA0'&gt;--- a/hellnet/tech/metatrees&lt;/span&gt;&lt;br /&gt;&lt;span style='color: #8AFF63'&gt;+++ b/hellnet/tech/metatrees&lt;/span&gt;&lt;br /&gt;&lt;span style='color: #E200FF'&gt;@@ -8,7 +8,7 @@&lt;/span&gt;&lt;br /&gt; &lt;br /&gt; bc. {&lt;br /&gt; 	&amp;quot;updated&amp;quot; : 1258639915,&lt;br /&gt;&lt;span style='color: #FF9EA0'&gt;-	&amp;quot;key&amp;quot; : &amp;quot;hell://chunk/22fea70fde222e2463b1dd716fa9f7faf75d90ebc6517333643826348c05950021fd2a2b31dcb23c1971149adf952bd1f38763b2338708acd12e97823a5017d2?key=a1234567&amp;quot;,&lt;/span&gt;&lt;br /&gt;&lt;span style='color: #8AFF63'&gt;+	&amp;quot;key&amp;quot; : &amp;quot;22fea70fde222e2463b1dd716fa9f7faf75d90ebc6517333643826348c05950021fd2a2b31dcb23c1971149adf952bd1f38763b2338708acd12e97823a5017d2&amp;quot;,&lt;/span&gt;&lt;br /&gt; 	&amp;quot;name&amp;quot; : &amp;quot;test&amp;quot;&lt;br /&gt; 	&amp;quot;content&amp;quot; : &amp;quot;hell://chunk/e4dfde12d6612f9816d1e924c274689e5236af74db23d14cf76bee0fc49690398f1c32bce9db951305a62906c4344c04a5682b1c6bdf64e219c2dde2810b44da&amp;quot;&lt;br /&gt; }&lt;br /&gt;&lt;span style='color: #E200FF'&gt;@@ -18,7 +18,7 @@&lt;/span&gt;&lt;br /&gt; Description of top-level fields:&lt;br /&gt; &lt;br /&gt; &amp;quot;updated&amp;quot; : UNIX timestamp of last update&lt;br /&gt;&lt;span style='color: #FF9EA0'&gt;-&amp;quot;key&amp;quot; : link to public key&lt;/span&gt;&lt;br /&gt;&lt;span style='color: #8AFF63'&gt;+&amp;quot;key&amp;quot; : public key hash&lt;/span&gt;&lt;br /&gt; &amp;quot;name&amp;quot; : name of this meta&lt;br /&gt; &amp;quot;content&amp;quot; : link to meta tree&lt;br /&gt; </content>
  </entry>
</feed>
