Human-readable sharable hashes

This commit is contained in:
idk
2019-08-14 00:46:35 -04:00
parent a812fbd784
commit eff15e73ba
7 changed files with 66 additions and 24 deletions

View File

@ -3,57 +3,58 @@ package samtunnelhandler
func DefaultCSS() string {
return `.server {
width: 63%;
max-width: 63%;
min-height: 15%;
background-color: #9DABD5;
float:left
float: left;
overflow-wrap: break-word;
}
.client {
width: 63%;
max-width: 63%;
min-height: 15%;
background-color: #2D4470;
float:left
float: left;
overflow-wrap: break-word;
}
.http {
width: 63%;
max-width: 63%;
min-height: 15%;
background-color: #00ffff;
float:left
float: left;
overflow-wrap: break-word;
}
.httpclient {
width: 63%;
max-width: 63%;
min-height: 15%;
background-color: #709fa6;
float:left
float: left;
overflow-wrap: break-word;
}
.udpserver {
width: 63%;
max-width: 63%;
min-height: 15%;
background-color: #265ea7;
float:left
float: left;
overflow-wrap: break-word;
}
.udpclient {
width: 63%;
max-width: 63%;
min-height: 15%;
background-color: #222187;
float:left
float: left;
overflow-wrap: break-word;
}
.TunName {
font-weight: bold;
}
.panel {
width: 33%;
max-width: 33%;
float: right;
}
.prop {
}
.prop:hover {
box-shadow: inset 0 0 100px 100px rgba(255, 255, 255, 0.1);
}
.global {
background-color: #00ffff;
@ -62,6 +63,7 @@ body {
background-color: #9e9e9e;
color: #070425;
font-family: "monospace";
font-size: 1rem;
}
a {
color: #080808;
@ -69,6 +71,18 @@ a {
h1 {
background-color: #9e9e9e;
}
span {
float: left;
display: inline;
}
textarea {
display: inline-block;
width: 100%;
resize: none;
height: 1rem;
float: right;
display: inline;
}
.linkstyle {
align-items: normal;
background-color: rgba(0,0,0,0);
@ -77,9 +91,9 @@ h1 {
box-sizing: content-box;
color: rgb(0, 0, 238);
cursor: pointer;
display: inline;
font: inherit;
height: auto;
display: inline;
padding: 0;
perspective-origin: 0 0;
text-align: start;

View File

@ -3,6 +3,7 @@ package samtunnelhandler
import (
"fmt"
"net/http"
"sort"
"strings"
)
@ -29,13 +30,22 @@ func (t *TunnelHandler) Printdivf(id, key, value string, rw http.ResponseWriter,
if strings.HasSuffix(req.URL.Path, "color") {
fmt.Fprintf(rw, " <div id=\"%s\" class=\"%s %s %s %s\" >\n", ID, t.SAMTunnel.ID(), key, t.SAMTunnel.GetType(), prop)
fmt.Fprintf(rw, " <span id=\"%s\" class=\"key\">%s</span>=", ID, key)
fmt.Fprintf(rw, " <span id=\"%s\" class=\"value\">%s</span>\n", ID, value)
fmt.Fprintf(rw, " <textarea id=\"%s\" rows=\"1\" class=\"value\">%s</textarea>\n", ID, value)
fmt.Fprintf(rw, " </div>\n\n")
} else {
fmt.Fprintf(rw, "%s=%s\n", ID, t.SAMTunnel.ID())
}
}
func PropSort(props map[string]string) []string {
var slice []string
for k, v := range props {
slice = append(slice, k+"="+v)
}
sort.Strings(slice)
return slice
}
func (t *TunnelHandler) ServeHTTP(rw http.ResponseWriter, req *http.Request) {
if err := req.ParseForm(); err == nil {
if action := req.PostFormValue("action"); action != "" {
@ -90,9 +100,11 @@ func (t *TunnelHandler) ServeHTTP(rw http.ResponseWriter, req *http.Request) {
fmt.Fprintf(rw, " <a href=\"/%s/color\">Tunnel page</a>\n", t.SAMTunnel.ID())
fmt.Fprintf(rw, " </span>\n")
}
for key, value := range t.SAMTunnel.Props() {
for _, value := range PropSort(t.SAMTunnel.Props()) {
key := strings.SplitN(value, "=", 2)[0]
val := strings.SplitN(value, "=", 2)[1]
if key != "TunName" {
t.Printdivf(key, key, value, rw, req)
t.Printdivf(key, key, val, rw, req)
}
}
if strings.HasSuffix(req.URL.Path, "color") {

View File

@ -30,11 +30,11 @@ func (h *Hasher) Friendly(input string) (string, error) {
if err != nil {
return "", err
}
return strings.Join(slice, "."), nil
return strings.Join(slice, " "), nil
}
func (h *Hasher) Unfriendly(input string) (string, error) {
slice := strings.Split(input, ".")
slice := strings.Split(input, " ")
hash, err := h.hasher.Dehumanize(slice)
if err != nil {
return "", err

View File

@ -118,7 +118,11 @@ func (f *SAMClientForwarder) print() []string {
func (f *SAMClientForwarder) Props() map[string]string {
r := make(map[string]string)
for _, prop := range f.print() {
print := f.print()
print = append(print, "base32="+f.Base32())
print = append(print, "base64="+f.Base64())
print = append(print, "base32words="+f.Base32Readable())
for _, prop := range print {
k, v := sfi2pkeys.Prop(prop)
r[k] = v
}

View File

@ -142,7 +142,11 @@ func (f *SAMForwarder) print() []string {
func (f *SAMForwarder) Props() map[string]string {
r := make(map[string]string)
for _, prop := range f.print() {
print := f.print()
print = append(print, "base32="+f.Base32())
print = append(print, "base64="+f.Base64())
print = append(print, "base32words="+f.Base32Readable())
for _, prop := range print {
k, v := sfi2pkeys.Prop(prop)
r[k] = v
}

View File

@ -131,7 +131,11 @@ func (f *SAMSSUClientForwarder) print() []string {
func (f *SAMSSUClientForwarder) Props() map[string]string {
r := make(map[string]string)
for _, prop := range f.print() {
print := f.print()
print = append(print, "base32="+f.Base32())
print = append(print, "base64="+f.Base64())
print = append(print, "base32words="+f.Base32Readable())
for _, prop := range print {
k, v := sfi2pkeys.Prop(prop)
r[k] = v
}

View File

@ -129,7 +129,11 @@ func (f *SAMSSUForwarder) print() []string {
func (f *SAMSSUForwarder) Props() map[string]string {
r := make(map[string]string)
for _, prop := range f.print() {
print := f.print()
print = append(print, "base32="+f.Base32())
print = append(print, "base64="+f.Base64())
print = append(print, "base32words="+f.Base32Readable())
for _, prop := range print {
k, v := sfi2pkeys.Prop(prop)
r[k] = v
}