forked from electricdusk/rushlink
		
	readme: Updates and typo fixes
This commit is contained in:
		
							parent
							
								
									73814e0f5b
								
							
						
					
					
						commit
						8a34f7e16c
					
				
							
								
								
									
										32
									
								
								README.md
									
									
									
									
									
								
							
							
						
						
									
										32
									
								
								README.md
									
									
									
									
									
								
							@ -11,6 +11,8 @@ are the exceptions:
 | 
			
		||||
- `github.com/gorilla/sessions` for session management.
 | 
			
		||||
- `go.etcd.io/bbolt` is our database driver.
 | 
			
		||||
- `github.com/pkg/errors` provides a [`Wrap`] function.
 | 
			
		||||
- `github.com/prometheus/client_golang/prometheus/...` has easy Prometheus
 | 
			
		||||
  functionality.
 | 
			
		||||
 | 
			
		||||
[`Wrap`]: https://godoc.org/github.com/pkg/errors#Wrap
 | 
			
		||||
 | 
			
		||||
@ -29,18 +31,32 @@ That means that we have to separate every other page with some kind of
 | 
			
		||||
namespace. Ideas:
 | 
			
		||||
 | 
			
		||||
- `/z/` reserved for flat pages.
 | 
			
		||||
- `/p/` reserved for "pastes".
 | 
			
		||||
- `/u/` reserved for "users".
 | 
			
		||||
- `/f/` reserved for "files".
 | 
			
		||||
- `/z/static/` reserved for "static files".
 | 
			
		||||
 | 
			
		||||
## Paste types
 | 
			
		||||
 | 
			
		||||
Previous, I was planning to put pastes (not redirects) in a separate bucket
 | 
			
		||||
and below a url namespace. Then when one was created, we would immediately
 | 
			
		||||
generate a redirect link.
 | 
			
		||||
 | 
			
		||||
Turns out it's easier though to just save a unit (we call it a "paste") which
 | 
			
		||||
can be of different types. For example:
 | 
			
		||||
 | 
			
		||||
- Redirect
 | 
			
		||||
- Paste
 | 
			
		||||
- File
 | 
			
		||||
- Image
 | 
			
		||||
- Hypothetical other stuff:
 | 
			
		||||
    - Dead-drop
 | 
			
		||||
    - [...]?
 | 
			
		||||
 | 
			
		||||
## Shorten keys and collisions
 | 
			
		||||
 | 
			
		||||
First of all: A sexted is a value of 6 bits.
 | 
			
		||||
First of all: A sextet is a value of 6 bits.
 | 
			
		||||
 | 
			
		||||
For generating keys, we will initially generate a random value of 4 sextets,
 | 
			
		||||
where the first bit is set to `0`. If this collides with an existing key, we
 | 
			
		||||
will generate a new one made out of 5 sextexts, and set the prefix bits to
 | 
			
		||||
will generate a new one made out of 5 sextets, and set the prefix bits to
 | 
			
		||||
`0b10`. We will keep doing this until we don't have any collisions anymore.
 | 
			
		||||
 | 
			
		||||
To get proper-looking keys, we format the key to characters using the
 | 
			
		||||
@ -72,10 +88,10 @@ header that the client sends. We can still wrap the plain-text page in a single
 | 
			
		||||
  forever, and store a user's data in there, without having to collect personal
 | 
			
		||||
  data in any way.
 | 
			
		||||
- URL-shortening links will be retained for always, unless the submitter
 | 
			
		||||
  revokes it, in which case it will be replaced by a `410 Gone` page*.
 | 
			
		||||
- The probles of pastes are not solved. This is an unsolved problem*.
 | 
			
		||||
  revokes it, in which case it will be replaced by a `410 Gone` page[*].
 | 
			
		||||
- The probles of pastes are not solved. This is an unsolved problem[*].
 | 
			
		||||
 | 
			
		||||
* In any case, we going to comply with all European laws and reasonable
 | 
			
		||||
[*] In any case, we going to comply with all European laws and reasonable
 | 
			
		||||
  requests for deletion.
 | 
			
		||||
 | 
			
		||||
## Privacy
 | 
			
		||||
 | 
			
		||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user