Masterthesis
This commit is contained in:
parent
6de476260d
commit
a21bbcca0e
9 changed files with 140 additions and 211 deletions
|
@ -1,11 +0,0 @@
|
|||
Iteration,Start,End
|
||||
1,1602787120,1602787240
|
||||
2,1602787240,1602787360
|
||||
3,1602787360,1602787480
|
||||
4,1602787480,1602787600
|
||||
5,1602787600,1602787720
|
||||
6,1602787720,1602787840
|
||||
7,1602787840,1602787961
|
||||
8,1602787961,1602788081
|
||||
9,1602788081,1602788201
|
||||
10,1602788201,1602788321
|
|
|
@ -23,8 +23,6 @@ var Signing bool
|
|||
var Encryption bool
|
||||
var HttpString string
|
||||
|
||||
//var BackoffPolicy *backoff.Exponential
|
||||
|
||||
func SetDefaultParams() {
|
||||
Packetloss = 0.0
|
||||
UnavailableTill = time.Now().Unix()
|
||||
|
|
|
@ -49,13 +49,6 @@ func SetParams(w http.ResponseWriter, r *http.Request) {
|
|||
func Reset(w http.ResponseWriter, r *http.Request) {
|
||||
w.Header().Set("Content-Type", "application/json; charset=UTF-8")
|
||||
|
||||
/*
|
||||
if err := device.InitServerSigningKey(); err != nil {
|
||||
log.Fatal(err)
|
||||
}
|
||||
config.VerifyKeys = make(map[string]map[string][]byte)
|
||||
*/
|
||||
|
||||
database.DB.Close()
|
||||
os.Remove("sqlite.db")
|
||||
|
||||
|
|
|
@ -88,26 +88,26 @@ func PostInboxHandler(w http.ResponseWriter, r *http.Request) {
|
|||
}
|
||||
if foundObject == nil {
|
||||
_ = object.CreateObject(newActivity.Object)
|
||||
/*
|
||||
if err != nil {
|
||||
w.WriteHeader(http.StatusBadRequest)
|
||||
if err := json.NewEncoder(w).Encode(fmt.Sprintf("Database Error Creating Object: %s", err)); err != nil {
|
||||
panic(err)
|
||||
}
|
||||
return
|
||||
}
|
||||
*/
|
||||
}
|
||||
_ = CreateCollectionObject(utils.GenerateInboxUrl(actorName), newActivity.Object.Id)
|
||||
/*
|
||||
|
||||
if err != nil {
|
||||
w.WriteHeader(http.StatusBadRequest)
|
||||
if err := json.NewEncoder(w).Encode(fmt.Sprintf("Database Error Creating Collection Object: %s", err)); err != nil {
|
||||
if err := json.NewEncoder(w).Encode(fmt.Sprintf("Database Error Creating Object: %s", err)); err != nil {
|
||||
panic(err)
|
||||
}
|
||||
return
|
||||
}
|
||||
*/
|
||||
|
||||
}
|
||||
_ = CreateCollectionObject(utils.GenerateInboxUrl(actorName), newActivity.Object.Id)
|
||||
|
||||
if err != nil {
|
||||
w.WriteHeader(http.StatusBadRequest)
|
||||
if err := json.NewEncoder(w).Encode(fmt.Sprintf("Database Error Creating Collection Object: %s", err)); err != nil {
|
||||
panic(err)
|
||||
}
|
||||
return
|
||||
}
|
||||
|
||||
log.Printf("%s to %s: %s", newActivity.Actor, newActivity.To, newActivity.Object.Content)
|
||||
} else {
|
||||
w.WriteHeader(http.StatusBadRequest)
|
||||
|
@ -231,8 +231,6 @@ func PostOutboxHandler(w http.ResponseWriter, r *http.Request) {
|
|||
log.Printf("Error Sending Activity, retrying in %ss: %s", duration/1000000000, err)
|
||||
}
|
||||
backoff.RetryNotify(operation, backoff.WithMaxRetries(backoff.NewExponentialBackOff(), 16), notify)
|
||||
|
||||
//go retryActivity(newActivity, recipient, token)
|
||||
}
|
||||
|
||||
response := OutboxResponse{
|
||||
|
@ -246,22 +244,6 @@ func PostOutboxHandler(w http.ResponseWriter, r *http.Request) {
|
|||
}
|
||||
}
|
||||
|
||||
/*
|
||||
func retryActivity(activityToSend *activity.Activity, recipient string, token string) (err error) {
|
||||
b, cancel := config.BackoffPolicy.Start(context.Background())
|
||||
defer cancel()
|
||||
|
||||
for backoff.Continue(b) {
|
||||
err := SendActivity(activityToSend, recipient, token)
|
||||
if err == nil {
|
||||
return nil
|
||||
}
|
||||
}
|
||||
err = errors.New("Not able to send activity")
|
||||
return
|
||||
}
|
||||
*/
|
||||
|
||||
func GetReciepientsForActivity(activityToSend *activity.Activity) (err error, recipientsWithoutDuplicates []string) {
|
||||
recipients := []string{}
|
||||
if strings.Contains(activityToSend.To, config.Homeserver) {
|
||||
|
|
24
main.go
24
main.go
|
@ -33,20 +33,8 @@ var routes = router.Routes{
|
|||
router.Route{"GetPost", "GET", "/{actorName}/posts/{postId}", object.GetPostHandler},
|
||||
|
||||
// Collections
|
||||
/*
|
||||
router.Route{"GetInbox", "GET", "/{actorName}/inbox", collection.GetInboxHandler},
|
||||
router.Route{"GetOutbox", "GET", "/{actorName}/outbox", collection.GetOutboxHandler},
|
||||
router.Route{"GetFollowers", "GET", "/{actorName}/followers", collection.GetFollowersHandler},
|
||||
router.Route{"GetFollowing", "GET", "/{actorName}/following", collection.GetFollowingHandler},
|
||||
router.Route{"GetLiked", "GET", "/{actorName}/liked", collection.GetLikedHandler},
|
||||
*/
|
||||
router.Route{"PostInbox", "POST", "/{actorName}/inbox/", collection.PostInboxHandler},
|
||||
router.Route{"PostOutbox", "POST", "/{actorName}/outbox/", collection.PostOutboxHandler},
|
||||
/*
|
||||
router.Route{"PostFollowers", "POST", "/{actorName}/followers", collection.PostFollowersHandler},
|
||||
router.Route{"PostFollowing", "POST", "/{actorName}/following", collection.PostFollowingHandler},
|
||||
router.Route{"PostLiked", "POST", "/{actorName}/liked", collection.PostLikedHandler},
|
||||
*/
|
||||
}
|
||||
|
||||
func main() {
|
||||
|
@ -57,18 +45,6 @@ func main() {
|
|||
}
|
||||
log.Printf("Start homeserver on name %s", config.Homeserver)
|
||||
|
||||
/*
|
||||
if err := device.InitServerSigningKey(); err != nil {
|
||||
log.Fatal(err)
|
||||
}
|
||||
config.VerifyKeys = make(map[string]map[string][]byte)
|
||||
*/
|
||||
/*
|
||||
config.BackoffPolicy = backoff.NewExponential(
|
||||
backoff.WithInterval(500*time.Millisecond),
|
||||
backoff.WithMaxRetries(16),
|
||||
)
|
||||
*/
|
||||
os.Remove("sqlite.db")
|
||||
|
||||
if err := database.InitDB("sqlite.db"); err != nil {
|
||||
|
|
BIN
sqlite.db
BIN
sqlite.db
Binary file not shown.
|
@ -9,7 +9,6 @@ import (
|
|||
|
||||
var DB *sql.DB
|
||||
|
||||
// TODO: Change DB Structure
|
||||
func InitDB(filepath string) (err error) {
|
||||
DB, err = sql.Open("sqlite3", filepath)
|
||||
if err != nil {
|
||||
|
|
|
@ -1,14 +1,11 @@
|
|||
package utils
|
||||
|
||||
import (
|
||||
"crypto/ed25519"
|
||||
"crypto/rand"
|
||||
"crypto/sha256"
|
||||
"encoding/base64"
|
||||
"fmt"
|
||||
"log"
|
||||
|
||||
"git.nutfactory.org/hoernschen/ActivityPub/config"
|
||||
)
|
||||
|
||||
func CreateToken() (err error, token string) {
|
||||
|
@ -33,7 +30,6 @@ func CreateUUID() (err error, uuid string) {
|
|||
return
|
||||
}
|
||||
|
||||
// TODO: Check if needed
|
||||
func Hash(s []byte) (err error, hashString string) {
|
||||
h := sha256.New()
|
||||
_, err = h.Write(s)
|
||||
|
@ -44,33 +40,3 @@ func Hash(s []byte) (err error, hashString string) {
|
|||
hashString = base64.StdEncoding.EncodeToString(hash)
|
||||
return
|
||||
}
|
||||
|
||||
//TODO: Signing Mechanism?
|
||||
func GenerateKeyPair() (publicKey ed25519.PublicKey, privateKey ed25519.PrivateKey, err error) {
|
||||
publicKey, privateKey, err = ed25519.GenerateKey(nil)
|
||||
return
|
||||
}
|
||||
|
||||
func Sign(message []byte) string {
|
||||
signatureBytes := ed25519.Sign(config.PrivateKey, message)
|
||||
return base64.RawStdEncoding.EncodeToString(signatureBytes)
|
||||
}
|
||||
|
||||
func SignContent(content []byte) (signatures map[string]map[string]string) {
|
||||
if !config.Signing {
|
||||
return
|
||||
}
|
||||
signatures = make(map[string]map[string]string)
|
||||
signatures[config.Homeserver] = make(map[string]string)
|
||||
signatures[config.Homeserver][config.KeyId] = Sign(content)
|
||||
return
|
||||
}
|
||||
|
||||
func VerifySignature(publicKey []byte, message []byte, signature string) bool {
|
||||
signatureBytes, err := base64.RawStdEncoding.DecodeString(signature)
|
||||
if err != nil {
|
||||
return false
|
||||
}
|
||||
ed25519.Verify(config.PublicKey, message, signatureBytes)
|
||||
return true
|
||||
}
|
||||
|
|
|
@ -84,20 +84,33 @@ var users = []map[string][]string{
|
|||
"user4",
|
||||
},
|
||||
},
|
||||
map[string][]string{
|
||||
"localhost": []string{
|
||||
"user1",
|
||||
"user2",
|
||||
"user3",
|
||||
"user4",
|
||||
},
|
||||
},
|
||||
}
|
||||
|
||||
/*
|
||||
var servers = []string{
|
||||
"143.93.38.207",
|
||||
"143.93.38.208",
|
||||
"143.93.38.209",
|
||||
}
|
||||
*/
|
||||
var servers = []string{
|
||||
"localhost",
|
||||
}
|
||||
|
||||
var systemParams = []SystemParams{
|
||||
SystemParams{
|
||||
Id: "111110000",
|
||||
Id: "111110101",
|
||||
BytesToSend: 280,
|
||||
MessagesPerSecond: 1.0,
|
||||
Distribution: users[1],
|
||||
Distribution: users[3],
|
||||
Packetloss: 1,
|
||||
MinutesNotAvailable: 0,
|
||||
Consensus: true,
|
||||
|
@ -105,115 +118,128 @@ var systemParams = []SystemParams{
|
|||
Signing: true,
|
||||
Encryption: true,
|
||||
},
|
||||
SystemParams{
|
||||
Id: "011110000",
|
||||
BytesToSend: 8,
|
||||
MessagesPerSecond: 1.0,
|
||||
Distribution: users[1],
|
||||
Packetloss: 1,
|
||||
MinutesNotAvailable: 0,
|
||||
Consensus: true,
|
||||
AuthentificationCheck: true,
|
||||
Signing: true,
|
||||
Encryption: true,
|
||||
},
|
||||
SystemParams{
|
||||
Id: "211110000",
|
||||
BytesToSend: 512,
|
||||
MessagesPerSecond: 1.0,
|
||||
Distribution: users[1],
|
||||
Packetloss: 1,
|
||||
MinutesNotAvailable: 0,
|
||||
Consensus: true,
|
||||
AuthentificationCheck: true,
|
||||
Signing: true,
|
||||
Encryption: true,
|
||||
},
|
||||
SystemParams{
|
||||
Id: "101110000",
|
||||
BytesToSend: 280,
|
||||
MessagesPerSecond: 0.1,
|
||||
Distribution: users[1],
|
||||
Packetloss: 1,
|
||||
MinutesNotAvailable: 0,
|
||||
Consensus: true,
|
||||
AuthentificationCheck: true,
|
||||
Signing: true,
|
||||
Encryption: true,
|
||||
},
|
||||
SystemParams{
|
||||
Id: "121110000",
|
||||
BytesToSend: 280,
|
||||
MessagesPerSecond: 10.0,
|
||||
Distribution: users[1],
|
||||
Packetloss: 1,
|
||||
MinutesNotAvailable: 0,
|
||||
Consensus: true,
|
||||
AuthentificationCheck: true,
|
||||
Signing: true,
|
||||
Encryption: true,
|
||||
},
|
||||
SystemParams{
|
||||
Id: "110110000",
|
||||
BytesToSend: 280,
|
||||
MessagesPerSecond: 1.0,
|
||||
Distribution: users[0],
|
||||
Packetloss: 1,
|
||||
MinutesNotAvailable: 0,
|
||||
Consensus: true,
|
||||
AuthentificationCheck: true,
|
||||
Signing: true,
|
||||
Encryption: true,
|
||||
},
|
||||
SystemParams{
|
||||
Id: "112110000",
|
||||
BytesToSend: 280,
|
||||
MessagesPerSecond: 1.0,
|
||||
Distribution: users[2],
|
||||
Packetloss: 1,
|
||||
MinutesNotAvailable: 0,
|
||||
Consensus: true,
|
||||
AuthentificationCheck: true,
|
||||
Signing: true,
|
||||
Encryption: true,
|
||||
},
|
||||
SystemParams{
|
||||
Id: "111010000",
|
||||
BytesToSend: 280,
|
||||
MessagesPerSecond: 1.0,
|
||||
Distribution: users[1],
|
||||
Packetloss: 0,
|
||||
MinutesNotAvailable: 0,
|
||||
Consensus: true,
|
||||
AuthentificationCheck: true,
|
||||
Signing: true,
|
||||
Encryption: true,
|
||||
},
|
||||
SystemParams{
|
||||
Id: "111210000",
|
||||
BytesToSend: 280,
|
||||
MessagesPerSecond: 1.0,
|
||||
Distribution: users[1],
|
||||
Packetloss: 20,
|
||||
MinutesNotAvailable: 0,
|
||||
Consensus: true,
|
||||
AuthentificationCheck: true,
|
||||
Signing: true,
|
||||
Encryption: true,
|
||||
},
|
||||
/*
|
||||
SystemParams{
|
||||
Id: "111120000",
|
||||
Id: "111110101",
|
||||
BytesToSend: 280,
|
||||
MessagesPerSecond: 1.0,
|
||||
Distribution: users[1],
|
||||
Packetloss: 1,
|
||||
MinutesNotAvailable: 1,
|
||||
MinutesNotAvailable: 0,
|
||||
Consensus: true,
|
||||
AuthentificationCheck: true,
|
||||
Signing: true,
|
||||
Encryption: true,
|
||||
},
|
||||
SystemParams{
|
||||
Id: "011110101",
|
||||
BytesToSend: 8,
|
||||
MessagesPerSecond: 1.0,
|
||||
Distribution: users[1],
|
||||
Packetloss: 1,
|
||||
MinutesNotAvailable: 0,
|
||||
Consensus: true,
|
||||
AuthentificationCheck: true,
|
||||
Signing: true,
|
||||
Encryption: true,
|
||||
},
|
||||
SystemParams{
|
||||
Id: "211110101",
|
||||
BytesToSend: 512,
|
||||
MessagesPerSecond: 1.0,
|
||||
Distribution: users[1],
|
||||
Packetloss: 1,
|
||||
MinutesNotAvailable: 0,
|
||||
Consensus: true,
|
||||
AuthentificationCheck: true,
|
||||
Signing: true,
|
||||
Encryption: true,
|
||||
},
|
||||
SystemParams{
|
||||
Id: "101110101",
|
||||
BytesToSend: 280,
|
||||
MessagesPerSecond: 0.1,
|
||||
Distribution: users[1],
|
||||
Packetloss: 1,
|
||||
MinutesNotAvailable: 0,
|
||||
Consensus: true,
|
||||
AuthentificationCheck: true,
|
||||
Signing: true,
|
||||
Encryption: true,
|
||||
},
|
||||
SystemParams{
|
||||
Id: "121110101",
|
||||
BytesToSend: 280,
|
||||
MessagesPerSecond: 10.0,
|
||||
Distribution: users[1],
|
||||
Packetloss: 1,
|
||||
MinutesNotAvailable: 0,
|
||||
Consensus: true,
|
||||
AuthentificationCheck: true,
|
||||
Signing: true,
|
||||
Encryption: true,
|
||||
},
|
||||
SystemParams{
|
||||
Id: "110110101",
|
||||
BytesToSend: 280,
|
||||
MessagesPerSecond: 1.0,
|
||||
Distribution: users[0],
|
||||
Packetloss: 1,
|
||||
MinutesNotAvailable: 0,
|
||||
Consensus: true,
|
||||
AuthentificationCheck: true,
|
||||
Signing: true,
|
||||
Encryption: true,
|
||||
},
|
||||
SystemParams{
|
||||
Id: "112110101",
|
||||
BytesToSend: 280,
|
||||
MessagesPerSecond: 1.0,
|
||||
Distribution: users[2],
|
||||
Packetloss: 1,
|
||||
MinutesNotAvailable: 0,
|
||||
Consensus: true,
|
||||
AuthentificationCheck: true,
|
||||
Signing: true,
|
||||
Encryption: true,
|
||||
},
|
||||
SystemParams{
|
||||
Id: "111010101",
|
||||
BytesToSend: 280,
|
||||
MessagesPerSecond: 1.0,
|
||||
Distribution: users[1],
|
||||
Packetloss: 0,
|
||||
MinutesNotAvailable: 0,
|
||||
Consensus: true,
|
||||
AuthentificationCheck: true,
|
||||
Signing: true,
|
||||
Encryption: true,
|
||||
},
|
||||
SystemParams{
|
||||
Id: "111210101",
|
||||
BytesToSend: 280,
|
||||
MessagesPerSecond: 1.0,
|
||||
Distribution: users[1],
|
||||
Packetloss: 20,
|
||||
MinutesNotAvailable: 0,
|
||||
Consensus: true,
|
||||
AuthentificationCheck: true,
|
||||
Signing: true,
|
||||
Encryption: true,
|
||||
},
|
||||
/*
|
||||
SystemParams{
|
||||
Id: "111120000",
|
||||
BytesToSend: 280,
|
||||
MessagesPerSecond: 1.0,
|
||||
Distribution: users[1],
|
||||
Packetloss: 1,
|
||||
MinutesNotAvailable: 1,
|
||||
Consensus: true,
|
||||
AuthentificationCheck: true,
|
||||
Signing: true,
|
||||
Encryption: true,
|
||||
},
|
||||
*/
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in a new issue