...
 
Commits (56)
File deleted
......@@ -19,3 +19,15 @@ Supports will include
- The ability to use other front end clients such as brutaldon
Comments, suggestions and issues welcome.
To install correctly, install certbot as well, then run,
certbot certonly
And copy the fullchain.pem to the location indicated by server.rsa.cert
And the privkey.pem to the location indicated by server.rsa.key
......@@ -6,8 +6,67 @@ type EndpointsS struct {
signClientKey string
sharedInbox []OrderedCollectionS
}
type MobileS struct {
Str int
Dex int
Int int
Wis int
Con int
Tec int
Inventory map[int]string
Equipment map[string]string
Summary string
LastBork string
Source map[string]interface{}
Type string
Following string
Followers string
Liked string
Inbox string
Outbox string
Url string
Attachment AttachmentS
AttributedTo AttributedToS
Audience AudienceS
Content string
Id string
Context interface{}
Name NameS
EndTime EndTimeS
Generator GeneratorS
Icon []string
InReplyTo InReplyToS
Location LocationS
//There is no use for this right now
Preview string
//
Published string
Replies RepliesS
StartTime string
Tag TagS
Updated string
To string
Bto string
Cc string
Bcc string
MediaType string
Duration string
Position celPosS
Streams CollectionS
PreferredUsername string
Endpoints EndpointsS
}
type ActorS struct {
Password string
Str int
Dex int
Int int
Wis int
Con int
Tec int
Inventory map[int]string
Equipment map[string]string
Summary string
LastBork string
Source map[string]interface{}
......
......@@ -2,25 +2,29 @@ package main
import (
"bufio"
"crypto/tls"
"encoding/json"
"fmt"
"io"
"io/ioutil"
"log"
"math/rand"
"net/http"
"os"
"os/exec"
"strconv"
"strings"
"time"
"golang.org/x/crypto/openpgp"
"golang.org/x/crypto/openpgp/armor"
"localtoast.net/localtoast/Ogopogo/libs"
flour "gitlab.com/localtoast/flourPower"
"gitlab.com/owlo/Ogopogo/libs"
)
func validate(signature string, file []byte) {
var hostname string
if signature == "boop" {
func validateLogin(signature string, file []byte, actors []libs.ActorS) bool {
if signature != "" {
bufferedReader, err := os.Create("tests/florp")
if err != nil {
......@@ -28,23 +32,120 @@ func validate(signature string, file []byte) {
}
bufferedReader.Write(file)
bufferedReader.Close()
decrypter := exec.Command("/bin/sh", "-c", "echo crashandburn | gpg --passphrase-fd 0 -o out.json florp")
decrypter := exec.Command("/bin/sh", "-c", "echo crashandburn | gpg --passphrase-fd 0 -o florpfile florp")
decrypter.Dir = "tests/"
decrypter.Run()
defer os.Remove("tests/florp")
florpFile, err := os.Open("tests/florp")
florpFile, err := os.Open("tests/florpfile")
defer os.Remove("tests/florpfile")
florpReader := io.Reader(florpFile)
florpScanner := bufio.NewScanner(florpReader)
for florpScanner.Scan() {
fmt.Println(florpScanner.Text())
//fmt.Println(florpScanner.Text())
if florpScanner.Text() == signature {
florptext := strings.Split(florpScanner.Text(), ":")
for i := range actors {
if florptext[0] == actors[i].PreferredUsername {
if florptext[1] == actors[i].Password {
//Uncomment the line to clone the user at login
//createUser(florptext[0], florptext[1])
fmt.Println("LOGGED THE HECK IN")
return true
}
}
}
}
}
if err != nil {
fmt.Println("\033[2;255;0;0mERROR\033[0m")
fmt.Println(err)
return false
}
}
return false
}
func createMobile(username string) bool {
//AVATARCOMMAND
hostname = "http://snowcrash.network"
UID := UIDMaker("user")
userFile, err := os.Create("tests/mobiles/" + UID)
if err != nil {
fmt.Println("Error creating userfile")
}
var userActor libs.MobileS
userActor.PreferredUsername = username
userActor.Str = 15
userActor.Dex = 15
userActor.Int = 15
userActor.Wis = 15
userActor.Con = 15
userActor.Tec = 1
userActor.Inventory = map[int]string{
0: "A mobile sticker",
}
userActor.Equipment = map[string]string{
"body": "Fur",
}
userActor.Inbox = hostname + "#inbox/" + username
userActor.Outbox = hostname + "#outbox/" + username
userActor.Following = hostname + "#following/" + username
userActor.Followers = hostname + "#followers/" + username
userData, err := json.Marshal(&userActor)
if err != nil {
fmt.Println("Error marshalling json.")
return false
}
userFile.Write(userData)
userFile.Sync()
return true
}
func createUser(username string, password string) bool {
hostname = "http://snowcrash.network"
UID := UIDMaker("user")
userFile, err := os.Create("tests/" + UID)
if err != nil {
fmt.Println("Error creating userfile")
}
var userActor libs.ActorS
userActor.PreferredUsername = username
userActor.Password = password
for i := 0; i < 32; i++ {
fmt.Println("")
}
userActor.Str = 15
userActor.Dex = 15
userActor.Int = 15
userActor.Wis = 15
userActor.Con = 15
userActor.Tec = 1
userActor.Inventory = map[int]string{
0: "A glowing disc.",
}
userActor.Equipment = map[string]string{
"body": "A long flowing rainbow gown.",
}
userActor.Inbox = hostname + "#inbox/" + username
userActor.Outbox = hostname + "#outbox/" + username
userActor.Following = hostname + "#following/" + username
userActor.Followers = hostname + "#followers/" + username
userData, err := json.Marshal(&userActor)
if err != nil {
fmt.Println("Error marshalling json.")
return false
}
userFile.Write(userData)
userFile.Sync()
return true
}
func validate(signature string, file []byte) bool {
bufferedReader, err := os.Create("tests/outfile")
if err != nil {
......@@ -62,7 +163,7 @@ func validate(signature string, file []byte) {
if err != nil {
fmt.Println("\033[2;255;0;0mERROR\033[0m")
}
fmt.Println(UIDed.Id)
//fmt.Println(UIDed.Id)
UIDWriter, err := os.Create("tests/" + string(UIDed.Id))
UIDWriter.Write(UIDData)
......@@ -71,79 +172,44 @@ func validate(signature string, file []byte) {
if err != nil {
fmt.Println("Error running command")
fmt.Println(err)
return false
}
return true
}
func signer(path string) []byte {
const prefix = "/home/twotonne/"
const secretKeyring = prefix + "go/src/localtoast.net/localtoast/skey"
const publicKeyring = prefix + "go/src/localtoast.net/localtoast/keys"
const superSecretKeys = prefix + "go/src/localtoast.net/localtoast/sskey"
secRingBuf, err := os.Open(secretKeyring)
defer secRingBuf.Close()
pubRingBuf, err := os.Open(publicKeyring)
defer pubRingBuf.Close()
sskeyRingBuf, err := os.Open(superSecretKeys)
defer sskeyRingBuf.Close()
if err != nil {
fmt.Println("Error grabbing public/private keyring, have you generated keys yet?")
}
entitiesPrivate, err := openpgp.ReadArmoredKeyRing(secRingBuf)
entities, err := openpgp.ReadArmoredKeyRing(pubRingBuf)
sskey, err := openpgp.ReadArmoredKeyRing(sskeyRingBuf)
for i := range entities {
entitiesPrivate = append(entitiesPrivate, entities[i])
}
for i := range sskey {
entitiesPrivate = append(entitiesPrivate, sskey[i])
}
fmt.Println(entitiesPrivate)
buff, err := os.Create("tests/Buff")
defer buff.Close()
if err != nil {
fmt.Println("Error creating buffer file.")
}
data, err := os.Open(path)
defer data.Close()
err = entitiesPrivate[1].PrivateKey.Decrypt([]byte("crashandburn"))
if err != nil {
fmt.Println("Error decrypting signing key.")
}
bytebuf, err := os.Create("tests/BuffArmored")
//bytebuf := bytes.NewBuffer(nil)
//defer bytebuf.Close()
dataArmor, err := armor.Encode(bytebuf, "PGP SIGNATURE", nil)
message, err := openpgp.Encrypt(dataArmor, entitiesPrivate, entitiesPrivate[1], nil, nil)
defer message.Close()
//err = openpgp.ArmoredDetachSign(buff, entitiesPrivate[1], data, nil)
if err != nil {
fmt.Println("Error creating encrypted file.")
fmt.Println(err)
}
//ciphertext, err := encrypt(data, []byte("CRYPTOGRAPHYFUCK"))
dataRead, err := ioutil.ReadFile(path)
_, err = message.Write(dataRead)
func runHackTrace(user string, target string, initializedActors []libs.ActorS) string {
//encryptedFile, err := os.Create("tests/BuffArmor")
//encryptedReader := io.Writer(encryptedFile)
//defer encryptedFile.Close()
//encrypted := make([]byte)
//_, err = message.Write(encryptedReader)
if err != nil {
fmt.Println("Error reading signed text.")
fmt.Println(err)
}
if err == nil {
message.Close()
dataArmor.Close()
userList := strings.Split(user, ":")
user = userList[0]
//index := 0
for i := range initializedActors {
if initializedActors[i].PreferredUsername == user {
// index = i
break
}
}
returnable, err := ioutil.ReadFile("tests/BuffArmored")
if err != nil {
fmt.Println("Error reading buffarmor")
//if initializedActors[i].Stat > hitCalc()
// return "OK"
//else
// return "NO"
return "OK"
}
func runBattleTrace(user string, target string, initializedActors []libs.ActorS) string {
userList := strings.Split(user, ":")
user = userList[0]
//index := 0
for i := range initializedActors {
if initializedActors[i].PreferredUsername == user {
// index = i
break
}
}
return returnable
//if initializedActors[i].Stat > hitCalc()
// return "OK"
//else
// return "NO"
return "OK"
}
func upBork(borks []libs.ActorS) []byte {
borkFile, err := os.Create("tests/borks.json")
......@@ -156,7 +222,7 @@ func upBork(borks []libs.ActorS) []byte {
fmt.Println("error marshalling borks")
fmt.Println(err)
}
fmt.Println(borkJson)
//fmt.Println(borkJson)
borkFile.Write(borkJson)
return borkJson
......@@ -192,12 +258,12 @@ func updateBork(currentActors string) libs.ActorS {
}
//fmt.Println(k)
//fmt.Println(string(actorReader))
fmt.Println(mockup)
//fmt.Println(mockup)
return mockup
}
func initActors(currentActors string) string {
func initActors(currentActors string) libs.ActorS {
actorFile, err := os.Open(currentActors)
defer actorFile.Close()
if err != nil {
......@@ -228,11 +294,11 @@ func initActors(currentActors string) string {
}
//fmt.Println(k)
//fmt.Println(string(actorReader))
fmt.Println(mockup)
emptyString := ""
//fmt.Println(mockup)
emptyString := mockup
return emptyString
}
func UIDMaker() string {
func UIDMaker(typeS string) string {
hostname := "localhost"
username := "username"
//Inspired by 'Una (unascribed)'s bikeshed
......@@ -298,13 +364,25 @@ func UIDMaker() string {
thedog := rand.Intn(len(nouns))
uniqueFied := fmt.Sprint(uniquefier, hostname, username, adjectives[ind], adjectives[indie], nouns[thedog])
fmt.Println(uniqueFied)
numPosts, err := ioutil.ReadDir("tests/posts/")
if err != nil {
fmt.Println("Error, can't find post directory!")
//fmt.Println(uniqueFied)
if typeS == "post" {
numPosts, err := ioutil.ReadDir("tests/posts/")
if err != nil {
fmt.Println("Error, can't find post directory!")
}
UID := fmt.Sprint("posts/", len(numPosts)+1, uniqueFied)
return UID
}
UID := fmt.Sprint("/posts/", len(numPosts)+1, uniqueFied)
return UID
if typeS == "user" {
numUsers, err := ioutil.ReadDir("tests/users/")
if err != nil {
fmt.Println("Error, can't find post directory!")
}
UID := fmt.Sprint("users/", len(numUsers)+1, uniqueFied)
return UID
}
return "NOT NUMBERWANG"
}
func main() {
......@@ -313,13 +391,29 @@ func main() {
if err != nil {
fmt.Println("No borks!")
}
numBorks := len(dirBorks)
numStringBorks := strconv.Itoa(numBorks)
fmt.Println("DIRBORKS:", dirBorks)
//room init
xvar := 17
yvar := 17
room := flour.Dough(xvar, yvar)
room = flour.Oven(room, "X", xvar, yvar)
room[122].Label = "player"
//end room init
//numBorks := len(dirBorks)
//numStringBorks := strconv.Itoa(numBorks)
fmt.Println("\033[38;2;20;20;255mInitializing actor accounts\033[0m")
initializedActors := initActors("tests/actor.json")
fmt.Println(initializedActors)
currentActors, err := ioutil.ReadDir("tests/users/")
if err != nil {
fmt.Println("Error reading the user directory!")
}
var initializedActors []libs.ActorS
for i := range currentActors {
initializedActors = append(initializedActors, initActors("tests/users/"+currentActors[i].Name()))
}
//fmt.Println(initializedActors)
fmt.Println("\033[48;2;255;20;20mInitialization Complete\033[0m")
fmt.Println(numStringBorks)
//fmt.Println(numStringBorks)
// fmt.Println("\033[38;2;0;255;0mThe most recent post is " + numBorks + "\033[0m")
for {
mux := http.NewServeMux()
......@@ -334,8 +428,11 @@ func main() {
//w.Header().Set("Authentication", signature)
w.WriteHeader(http.StatusOK)
fmt.Println("Signing test json.")
signedContent := signer("tests/post.json")
fmt.Println(string(signedContent))
signedContent, err := ioutil.ReadFile("tests/post.json")
if err != nil {
fmt.Println("Error reading post.")
}
//fmt.Println(string(signedContent))
fmt.Println("Signing complete.")
w.Write(signedContent)
}
......@@ -349,12 +446,65 @@ func main() {
if req.Header.Get("Accept") == "application/ld+json; profile=\"https://www.w3.org/ns/activitystreams\"" {
fmt.Println("Accept header is correct.")
w.Header().Set("Content-Type", "application/ld+json; profile=\"https://www.w3.org/ns/activitystreams\"")
UID := UIDMaker()
UID := UIDMaker("post")
w.Header().Set("UID", UID)
w.WriteHeader(http.StatusOK)
fmt.Println("Signing test json.")
signedContent := signer("tests/post.json")
fmt.Println(string(signedContent))
signedContent, err := ioutil.ReadFile("tests/post.json")
if err != nil {
fmt.Println("Error reading file")
}
//fmt.Println(string(signedContent))
fmt.Println("Signing complete.")
w.Write(signedContent)
}
})
mux.HandleFunc("/exampleMobile", func(w http.ResponseWriter, req *http.Request) {
//AVATARCOMMANDS
// Before any call to WriteHeader or Write, declare
// the trailers you will set during the HTTP
// response. These three headers are actually sent in
// the trailer.
if req.Header.Get("Accept") == "application/ld+json; profile=\"https://www.w3.org/ns/activitystreams\"" {
fmt.Println("Accept header is correct.")
w.Header().Set("Content-Type", "application/ld+json; profile=\"https://www.w3.org/ns/activitystreams\"")
//w.Header().Set("Authentication", signature)
mobile := req.Header.Get("Mobile-Name")
w.WriteHeader(http.StatusOK)
fmt.Println("Signing test json.")
if err != nil {
fmt.Println("Error, user directory empty!")
}
createMobile(mobile)
if err != nil {
fmt.Println("Error reading file")
}
w.Write([]byte("bep"))
}
})
mux.HandleFunc("/examplePC", func(w http.ResponseWriter, req *http.Request) {
// Before any call to WriteHeader or Write, declare
// the trailers you will set during the HTTP
// response. These three headers are actually sent in
// the trailer.
if req.Header.Get("Accept") == "application/ld+json; profile=\"https://www.w3.org/ns/activitystreams\"" {
fmt.Println("Accept header is correct.")
w.Header().Set("Content-Type", "application/ld+json; profile=\"https://www.w3.org/ns/activitystreams\"")
//w.Header().Set("Authentication", signature)
w.WriteHeader(http.StatusOK)
fmt.Println("Signing test json.")
names, err := ioutil.ReadDir("tests/users/")
if err != nil {
fmt.Println("Error, user directory empty!")
}
signedContent, err := ioutil.ReadFile("tests/users/" + names[0].Name())
if err != nil {
fmt.Println("Error reading file")
}
//fmt.Println(string(signedContent))
fmt.Println("Signing complete.")
w.Write(signedContent)
}
......@@ -371,25 +521,249 @@ func main() {
//w.Header().Set("Authentication", signature)
w.WriteHeader(http.StatusOK)
fmt.Println("Signing test json.")
signedContent := signer("tests/post.json")
fmt.Println(string(signedContent))
signedContent, err := ioutil.ReadFile("tests/post.json")
if err != nil {
fmt.Println("Error reading file")
}
//fmt.Println(string(signedContent))
fmt.Println("Signing complete.")
w.Write(signedContent)
}
})
mux.HandleFunc("/examplelogin", func(w http.ResponseWriter, req *http.Request) {
mux.HandleFunc("/getBattleTrace", func(w http.ResponseWriter, req *http.Request) {
// Before any call to WriteHeader or Write, declare
// the trailers you will set during the HTTP
// response. These three headers are actually sent in
// the trailer.
fmt.Println("I HEAR BORK")
fmt.Println("WHO FIGHTING?")
signed := req.Header.Get("Signature")
validate("boop", []byte(signed))
w.Header().Set("Authorization", "ok")
w.WriteHeader(http.StatusOK)
target := req.Header.Get("Target")
// signature := req.Header.Get("Authorization")
//signature, err := ioutil.ReadAll(req.Body)
//fmt.Println(string(signed))
if err != nil {
fmt.Println(err)
}
//ok := validateLogin(signed, []byte(signature), initializedActors)
ok := true
if ok {
w.Header().Set("Authorization", "ok")
w.WriteHeader(http.StatusOK)
//fmt.Println("GOT" + signed)
results := runBattleTrace(signed, target, initializedActors)
w.Header().Set("HackTrace", results)
w.Header().Set("Target", results)
w.Write([]byte(results))
} else {
w.Header().Set("Authorization", "not authorized")
w.Write([]byte("ennt!"))
}
})
mux.HandleFunc("/getHackTrace", func(w http.ResponseWriter, req *http.Request) {
// Before any call to WriteHeader or Write, declare
// the trailers you will set during the HTTP
// response. These three headers are actually sent in
// the trailer.
fmt.Println("WHAT DOING?")
signed := req.Header.Get("Signature")
target := req.Header.Get("Target")
// signature := req.Header.Get("Authorization")
// signature, err := ioutil.ReadAll(req.Body)
//fmt.Println(string(signed))
if err != nil {
fmt.Println(err)
}
//ok := validateLogin(signed, []byte(signature), initializedActors)
ok := true
if ok {
w.Header().Set("Authorization", "ok")
w.WriteHeader(http.StatusOK)
fmt.Println("GOT" + signed)
results := runHackTrace(signed, target, initializedActors)
w.Write([]byte(results))
} else {
w.Header().Set("Authorization", "not authorized")
w.Write([]byte("ennt!"))
}
})
mux.HandleFunc("/getMap", func(w http.ResponseWriter, req *http.Request) {
// Before any call to WriteHeader or Write, declare
// the trailers you will set during the HTTP
// response. These three headers are actually sent in
// the trailer.
fmt.Println("WHER GOING?")
//signed := req.Header.Get("Signature")
// signature := req.Header.Get("Authorization")
// signature, err := ioutil.ReadAll(req.Body)
//fmt.Println(string(signed))
// if err != nil {
// fmt.Println(err)
// }
//ok := validateLogin(signed, []byte(signature), initializedActors)
ok := true
if ok {
w.Header().Set("Authorization", "ok")
dir := req.Header.Get("Direction")
w.Header().Set("Room Desc", "A lone room in a love hotel:There is little in this room of interest.:A door into the verse stands to the east.")
w.Header().Set("Room Actions", "Your body is rezzed into being.")
w.WriteHeader(http.StatusOK)
w.Write([]byte("bop"))
switch dir {
case "east":
for i := range room {
if room[i].Label == "player" {
if room[i+1].Label != "X" {
room[i+1].Label = "player"
room[i].Label = ""
break
}
fmt.Printf("You cannot go that way!")
}
}
case "west":
for i := range room {
if room[i].Label == "player" {
if room[i-1].Label != "X" {
room[i-1].Label = "player"
room[i].Label = ""
break
}
fmt.Printf("You cannot go that way!")
}
}
case "north":
for i := range room {
if room[i].Label == "player" {
if room[i-xvar].Label != "X" {
room[i-xvar].Label = "player"
room[i].Label = ""
break
}
fmt.Printf("You cannot go that way!")
}
}
case "south":
for i := range room {
if room[i].Label == "player" {
if room[i+xvar].Label != "X" {
room[i+xvar].Label = "player"
room[i].Label = ""
break
}
fmt.Printf("You cannot go that way!")
}
}
case "northeast":
for i := range room {
if room[i].Label == "player" {
if room[i-xvar+1].Label != "X" {
room[i-xvar+1].Label = "player"
room[i].Label = ""
break
}
fmt.Printf("You cannot go that way!")
}
}
case "northwest":
for i := range room {
if room[i].Label == "player" {
if room[i-xvar-1].Label != "X" {
room[i-xvar-1].Label = "player"
room[i].Label = ""
break
}
fmt.Printf("You cannot go that way!")
}
}
case "southeast":
for i := range room {
if room[i].Label == "player" {
if room[i+xvar+1].Label != "X" {
room[i+xvar+1].Label = "player"
room[i].Label = ""
break
}
fmt.Printf("You cannot go that way!")
}
}
case "southwest":
for i := range room {
if room[i].Label == "player" {
if room[i+xvar-1].Label != "X" {
room[i+xvar-1].Label = "player"
room[i].Label = ""
break
}
fmt.Printf("You cannot go that way!")
}
}
}
space := ""
for x := range room {
done := false
if room[x].Label == "player" {
space += "@"
done = true
}
if room[x].X > 3 && room[x].Y == 7 && room[x].X < 14 && done == false {
space += " "
room[x].Label = " "
done = true
}
if room[x].X > 3 && room[x].Y == 8 && room[x].X < 14 && done == false {
space += " "
room[x].Label = " "
done = true
}
if room[x].X > 3 && room[x].Y == 6 && room[x].X < 14 && done == false {
space += " "
done = true
room[x].Label = " "
}
if done == false {
space += "X"
room[x].Label = "X"
}
}
w.Write([]byte(space))
} else {
w.Header().Set("Authorization", "not authorized")
w.Write([]byte("ennt!"))
}
})
mux.HandleFunc("/examplelogin", func(w http.ResponseWriter, req *http.Request) {
// Before any call to WriteHeader or Write, declare
// the trailers you will set during the HTTP
// response. These three headers are actually sent in
// the trailer.
fmt.Println("I HEAR BORK")
//signed := req.Header.Get("Signature")
// //signature := req.Header.Get("Authorization")
// signature, err := ioutil.ReadAll(req.Body)
//fmt.Println(string(signed))
// if err != nil {
// fmt.Println(err)
// }
// ok := validateLogin(signed, []byte(//signature), initializedActors)
ok := true
if ok {
w.Header().Set("Authorization", "ok")
w.WriteHeader(http.StatusOK)
w.Write([]byte("bop"))
} else {
w.Header().Set("Authorization", "not authorized")
w.Write([]byte("ennt!"))
}
})
mux.HandleFunc("/examplepost", func(w http.ResponseWriter, req *http.Request) {
// Before any call to WriteHeader or Write, declare
......@@ -407,7 +781,7 @@ func main() {
if req.Header.Get("Accept") == "application/ld+json; profile=\"https://www.w3.org/ns/activitystreams\"" {
fmt.Println("Accept header is correct.")
w.Header().Set("Content-Type", "application/ld+json; profile=\"https://www.w3.org/ns/activitystreams\"")
//w.Header().Set("Authentication", signature)
//w.Header().Set("Authentication", //signature)
var borks []libs.ActorS
for _, v := range posts {
......@@ -415,14 +789,77 @@ func main() {
}
upBork(borks)
signedContent := signer("tests/borks.json")
fmt.Println(string(signedContent))
signedContent, err := ioutil.ReadFile("tests/borks.json")
if err != nil {
fmt.Println("Error reading file")
}
//fmt.Println(string(signedContent))
fmt.Println("Signing complete.")
w.Write(signedContent)
}
})
mux.HandleFunc("/post", func(w http.ResponseWriter, req *http.Request) {
// Before any call to WriteHeader or Write, declare
// the trailers you will set during the HTTP
// response. These three headers are actually sent in
// the trailer.
//w.Header().Set("NumBorks", numPosts)
w.WriteHeader(http.StatusOK)
fmt.Println("Signing test json.")
if req.Header.Get("Accept") == "application/ld+json; profile=\"https://www.w3.org/ns/activitystreams\"" {
fmt.Println("Accept header is correct.")
w.Header().Set("Content-Type", "application/ld+json; profile=\"https://www.w3.org/ns/activitystreams\"")
//w.Header().Set("Authentication", //signature)
signedContent, err := ioutil.ReadAll(req.Body)
if err != nil {
panic(err)
} else {
output := fmt.Sprint("======================", signedContent, "========================")
fmt.Println(output)
}
//TODO
name := UIDMaker("post")
file, err := os.Create("tests/"+name)
defer file.Close()
numBytes, err := file.WriteString(string(signedContent))
if err != nil {
fmt.Println(name)
fmt.Println("ERROR CREATING FILE")
panic(err)
}else {
fmt.Println("Wrote ", numBytes, " bytes")
file.Sync()
}
var borks []libs.ActorS
posts, err := ioutil.ReadDir("tests/posts/")
if err != nil {
fmt.Println(err)
}
for _, v := range posts {
borks = append(borks, updateBork("tests/posts/"+v.Name()))
}
//numPosts := strconv.Itoa(len(posts))
upBork(borks)
w.Write(signedContent)
}
})
//CREATE USER
//END CREATE USER
// mux.HandleFunc("/.well-known/webfinger?resource=acct:guarddoggo@example.com", func(w http.ResponseWriter, req *http.Request) {
// Before any call to WriteHeader or Write, declare
// the trailers you will set during the HTTP
// response. These three headers are actually sent in
// the trailer.
// fmt.Println("SOMEONE IS PREPARING TO BORK.")
mux.HandleFunc("/exampleposter", func(w http.ResponseWriter, req *http.Request) {
// Before any call to WriteHeader or Write, declare
// the trailers you will set during the HTTP
......@@ -438,12 +875,36 @@ func main() {
fmt.Println("Error reading reponse.")
fmt.Println(err)
}
beachBall := object
fmt.Println(beachBall)
UID := UIDMaker()
//beachBall := object
//fmt.Println(beachBall)
UID := UIDMaker("post")
validate(UID, object)
})
http.ListenAndServe(":8080", mux)
prefix := os.Getenv("GOPATH")
mux.HandleFunc("/", func(w http.ResponseWriter, req *http.Request) {
w.Header().Add("Strict-Transport-Security", "max-age=63072000; includeSubDomains")
w.Write([]byte("This is an example server.\n"))
})
cfg := &tls.Config{
MinVersion: tls.VersionTLS12,
CurvePreferences: []tls.CurveID{tls.CurveP521, tls.CurveP384, tls.CurveP256},
PreferServerCipherSuites: true,
CipherSuites: []uint16{
tls.TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384,
tls.TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA,
tls.TLS_RSA_WITH_AES_256_GCM_SHA384,
tls.TLS_RSA_WITH_AES_256_CBC_SHA,
},
}
srv := &http.Server{
Addr: ":8080",
Handler: mux,
TLSConfig: cfg,
TLSNextProto: make(map[string]func(*http.Server, *tls.Conn, http.Handler), 0),
}
log.Fatal(srv.ListenAndServeTLS(prefix+"/gitlab.com/owlo/server.rsa.crt", prefix+"/gitlab.com/owlo/server.rsa.key"))
}
}
This source diff could not be displayed because it is too large. You can view the blob instead.
No preview for this file type
//battle window
fmt.Printf("\033[22;1H\033[0m")
fmt.Printf("\033[23;1H \033[48;2;125;125;225m \033[0m")
fmt.Printf("\033[24;1H\033[48;2;125;125;225m \033[48;2;10;10;20m \033[48;2;125;125;225m \033[0m")
fmt.Printf("\033[25;1H\033[48;2;125;125;225m \033[48;2;10;10;20m \033[48;2;125;125;225m \033[0m")
fmt.Printf("\033[26;1H\033[48;2;125;125;225m \033[48;2;10;10;20m \033[48;2;125;125;225m \033[0m")
fmt.Printf("\033[27;1H\033[48;2;125;125;225m \033[48;2;10;10;20m \033[48;2;125;125;225m \033[0m")
fmt.Printf("\033[28;1H\033[48;2;125;125;225m \033[48;2;10;10;20m \033[48;2;125;125;225m \033[0m")
fmt.Printf("\033[29;1H\033[48;2;125;125;225m \033[48;2;10;10;20m \033[48;2;125;125;225m \033[0m")
fmt.Printf("\033[30;1H\033[48;2;125;125;225m \033[48;2;10;10;20m \033[48;2;125;125;225m \033[0m")
fmt.Printf("\033[31;1H\033[48;2;125;125;225m \033[48;2;10;10;20m HackTrace cel! \033[48;2;125;125;225m \033[0m")
fmt.Printf("\033[32;1H\033[48;2;125;125;225m \033[48;2;10;10;20m \033[48;2;125;125;225m \033[0m")
fmt.Printf("\033[33;1H\033[48;2;125;125;225m \033[48;2;10;10;20m \033[48;2;125;125;225m \033[0m")
fmt.Printf("\033[34;1H\033[48;2;125;125;225m \033[48;2;10;10;20m \033[48;2;125;125;225m \033[0m")
fmt.Printf("\033[35;1H\033[48;2;125;125;225m \033[48;2;10;10;20m \033[48;2;125;125;225m \033[0m")
fmt.Printf("\033[36;1H\033[48;2;125;125;225m \033[48;2;10;10;20m \033[48;2;125;125;225m \033[0m")
fmt.Printf("\033[37;1H\033[48;2;125;125;225m \033[48;2;10;10;20m \033[48;2;125;125;225m \033[0m")
fmt.Printf("\033[38;1H\033[48;2;125;125;225m \033[48;2;10;10;20m \033[48;2;125;125;225m \033[0m")
fmt.Printf("\033[39;1H \033[48;2;125;125;225m \033[0m")
fmt.Printf("\033[40;1H\033[0m")
//battle window
-----BEGIN PGP SIGNATURE-----
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
4bXLAA==
=44Sy
-----END PGP SIGNATURE-----4bXLAA==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
=Luex
-----END PGP SIGNATURE-----pvQCfP6H5Dg1NqBJOcITeML6/Cexwyzi32tvvOEubwA=4Nzh+Gng7+Ti0MHv/obX
7rAVz/pZpPac4jDWYSTh0eLh3c/hix7hxlvpzyFi53b2pOmQxdCzqNOipl0cRRks
hyJsFAkPNcZh21MCW1qIBgcQfl82QNZiUru12/Dh/KWkgtRjKR0DPtZh39DNmiK1
GBx+8Qu+2tHhHtuU3YKW0n4QLOq7WAIDxTYhwTazOvTHkl2SLcpi2cxrliiL8blu
JRXg/g9eEEbTgu74ocVf5DsJvf6FQ+QeMKwNyQws4qfDSU0m7P0rHwkqn7n+S5lv
Si0TtdFH3MhJ6eJXE40IpDUpXAAqTvU3pNvRJ/EAYyCAjdXqSaG8cxvAtiqjNIcK
D+2KkuYLUO7jVYfqOZlTUvN+UFBhRjNriPNaPfNEnGi/MLsl57e0uhhOZpwn957T
gzmiUAkq9NBrV89R9hxfUWIVumbImZjaIHwKMta5miTcae9Lu6Su/pUe3aDNfeaP
QAZXT0A/yL4mWVm40CdbZlFn1DcbwMP7CxaqMwpm4n2/1b45WQP/DF1yozaMVE2b
Yy9iwLsFEncAXrbwoiL6M2Q+W49vZFpgOfJWfhiJz+PPnzlfKRTa7J1QMtU/AMd0
OhrcAeqR2bwbIwb47xMvZq5gai2WavbayxIj2N3RQeVEQjowvbpaszrLiRAmHZ7c
3X1W3S70EhP2bD/n8FoJnKSxF5641GY23FjrYWTXBQVN1YezLsCPE8PjD7UK1OPm
[{"Summary":"othernewbork","LastBork":"","Source":null,"Type":"Post","Following":"https://guarddoggo.snowcrash.network/following.json","Followers":"https://guarddoggo.snowcrash.network/followers.json","Liked":"https://guarddoggo.snowcrash.network/liked.json","Inbox":"https://guarddoggo.snowcrash.network/inbox.json","Outbox":"https://guarddoggo.snowcrash.network/feed.json","Url":"","Attachment":{"TypeS":"","Content":"","Url":""},"AttributedTo":{"TypeS":"","Name":""},"Audience":{"TypeS":"","Name":""},"Content":"borkork","Id":"/posts/20BlocalhostusernameUnlimitedAllocatedSet","Context":["https://www.w3.org/ns/activitystreams",{"@language":"en"}],"Name":{"Context":"","TypeS":"","Name":""