Updated fedilogue and fedicti to use shared package

This commit is contained in:
Farhan Khan 2021-09-29 03:31:33 +00:00
parent b053d1b99a
commit a9bf0f8017
10 changed files with 24 additions and 288 deletions

View File

@ -1,6 +1,7 @@
package main package main
import ( import (
"gitlab.com/khanzf/fedilogue/shared"
"encoding/binary" "encoding/binary"
"encoding/json" "encoding/json"
"flag" "flag"
@ -21,8 +22,8 @@ func main() {
/* Condition verification */ /* Condition verification */
totalflags := 0 totalflags := 0
var commandMap CommandMap var commandMap shared.CommandMap
var responseback ResponseBack var responseback shared.ResponseBack
if *shutdownPtr { if *shutdownPtr {
totalflags++ totalflags++

5
fedictl/go.mod Normal file
View File

@ -0,0 +1,5 @@
module gitlab.com/khanzf/fedilogue/fedictl
go 1.16
require gitlab.com/khanzf/fedilogue/shared v0.0.0-20210929025148-677dab517028

View File

@ -1,100 +0,0 @@
package main
import (
"net/http"
)
const (
NEW_INSTANCE = 0
RUNNING = 200
UNAUTHORIZED = 401
FORBIDDEN = 403
NOT_FOUND = 404
UNPROCESSABLE_ENTITY = 422
TOOMANYREQUESTS = 429
INTERNAL_ERROR = 500
CLIENT_ISSUE = 600
ONION_PROTOCOL = 601
BAD_RESPONSE = 602
BAD_NODEINFO = 604
UNSUPPORTED_INSTANCE = 605
STREAM_ENDED = 606
KEEPALIVE = 607
)
type ObjectType struct {
Id string `json:"id"`
}
// Parsing Unmarshal JSON type
type ReportActivity struct {
// Retrieved values
Id string `json:"id"`
Uri string `json:"uri"`
Account AccountType
Content string `json:"content"`
Created_at string `json:"created_at"`
// Derived values
normalized string
}
type AccountType struct {
Acct string `json:"acct"`
Avatar string `json:"avatar"`
Bot bool `json:"bot"`
Created_at string `json:"created_at"`
Display_name string `json:"display_name"`
Url string `json:"url"`
}
// Instance's new min_id value
type RunningInstance struct {
Software string `json:"software"`
Version string `json:"version"`
Status int `json:"status"`
LastRun string `json:"lastrun"`
CaptureType string `json:"capturetype"`
client http.Client
client_id string
client_secret string
recentactivities *UniqueFifo
recentactors *UniqueFifo
}
type NodeInfoSoftware struct {
Name string `json:"name"`
Version string `json:"version"`
}
type NodeInfo struct {
Software NodeInfoSoftware `json:"software"`
}
type CommandMap struct {
Type string `json:"Type"`
Endpoint string `json:"Endpoint"`
}
type ResponseBack struct {
Type string `json:"Type"`
Message string `json:"Message"`
RunningInstances map[string]RunningInstance `json:"RunningInstances"`
}
type Userinfo struct {
Id string `"json:id"`
Type string `"json:type"`
Following string `"json:following"`
Followers string `"json:followers"`
Inbox string `"json:inbox"`
Outbox string `"json:outbox"`
Featured string `"json:featured"`
PreferredUsername string `"json:preferredUsername"`
Name string `"json:name"`
Summary string `"json:summary"`
Url string `"json:Url"`
ManuallyApprovesFollowers string `"json:manuallyApprovesFollowers"`
Discoverable string `"json:discoverable"`
}

View File

@ -1,82 +0,0 @@
package main
import (
"sync"
)
type UniqueFifo struct {
slice []string
mu sync.Mutex
size int
}
func newUniqueFifo(size int) *UniqueFifo {
q := UniqueFifo{}
q.slice = make([]string, 0)
q.size = size
return &q
}
func (q *UniqueFifo) Add(v string) bool {
ret := false
if len(q.slice) == 0 {
q.slice = append(q.slice, v)
//logDebug.Print("Condition 1 for ", v)
ret = false
} else {
i := q.Contains(v)
if i != -1 {
q.Remove(i)
//logDebug.Print("Condition 2 for ", v)
ret = true
} else {
//logDebug.Print("Condition 3 for ", v)
ret = false
}
q.slice = append(q.slice, "")
copy(q.slice[1:], q.slice)
q.slice[0] = v
if len(q.slice) <= q.size {
q.slice = q.slice[:len(q.slice)]
} else {
q.slice = q.slice[:q.size]
}
}
return ret
}
func (q *UniqueFifo) Remove(r int) {
f := q.slice[:r]
e := q.slice[r+1:]
q.slice = f
q.slice = append(q.slice, e...)
}
func (q *UniqueFifo) Contains(v string) int {
for i, val := range q.slice {
if val == v {
return i
}
}
return -1
}
/*
func main() {
u := newUniqueFifo(3)
u.Add("First")
u.Add("First")
fmt.Println(u)
u.Add("Second")
fmt.Println(u)
u.Add("First")
fmt.Println(u)
u.Add("Third")
fmt.Println(u)
u.Add("Fourth")
fmt.Println(u)
}
*/

View File

@ -1,9 +0,0 @@
#!/bin/sh
sleep 15
route add default gw vpn
/usr/bin/psql -h db fedilogue fedilogue < tables.sql
cat tables.sql
echo /usr/bin/psql -h db fedilogue fedilogue
./fedilogue

View File

@ -1,9 +1,10 @@
module gitlab.com/khanzf/fedilogue/fedilogue module gitlab.com/khanzf/fedilogue/fedilogue
go 1.15 go 1.16
require ( require (
github.com/jackc/pgx/v4 v4.10.1 github.com/jackc/pgx/v4 v4.10.1
github.com/microcosm-cc/bluemonday v1.0.4 github.com/microcosm-cc/bluemonday v1.0.4
gitlab.com/khanzf/fedilogue/shared v0.0.0-20210929025148-677dab517028
muzzammil.xyz/jsonc v0.0.0-20201229145248-615b0916ca38 muzzammil.xyz/jsonc v0.0.0-20201229145248-615b0916ca38
) )

View File

@ -1,6 +1,7 @@
package main package main
import ( import (
"gitlab.com/khanzf/fedilogue/shared"
"net/http" "net/http"
) )
@ -59,8 +60,8 @@ type RunningInstance struct {
client http.Client client http.Client
client_id string client_id string
client_secret string client_secret string
recentactivities *UniqueFifo recentactivities *shared.UniqueFifo
recentactors *UniqueFifo recentactors *shared.UniqueFifo
} }
type NodeInfoSoftware struct { type NodeInfoSoftware struct {

View File

@ -1,6 +1,7 @@
package main package main
import ( import (
"gitlab.com/khanzf/fedilogue/shared"
"encoding/json" "encoding/json"
"io/ioutil" "io/ioutil"
"net/http" "net/http"
@ -63,8 +64,8 @@ func GetRunner(endpoint string) (RunningInstance, bool) {
o = RunningInstance{} o = RunningInstance{}
o.client = BuildClient(endpoint) o.client = BuildClient(endpoint)
o.Status = KEEPALIVE o.Status = KEEPALIVE
o.recentactivities = newUniqueFifo(10) o.recentactivities = shared.NewUniqueFifo(10)
o.recentactors = newUniqueFifo(10) o.recentactors = shared.NewUniqueFifo(10)
runninginstances[endpoint] = o runninginstances[endpoint] = o
} }
ri_mutex.Unlock() ri_mutex.Unlock()
@ -175,8 +176,8 @@ func CheckInstance(newinstance string, callerEndpoint string) {
if exists == false || o.Status == KEEPALIVE { if exists == false || o.Status == KEEPALIVE {
m := RunningInstance{} m := RunningInstance{}
m.client = BuildClient(newinstance) m.client = BuildClient(newinstance)
m.recentactivities = newUniqueFifo(10) m.recentactivities = shared.NewUniqueFifo(10)
m.recentactors = newUniqueFifo(10) m.recentactors = shared.NewUniqueFifo(10)
runninginstances[newinstance] = m runninginstances[newinstance] = m
go StartInstance(newinstance) go StartInstance(newinstance)
} }

View File

@ -91,14 +91,14 @@ func check_activity(uri string) {
o, _ := GetRunner(activityjson.instance) o, _ := GetRunner(activityjson.instance)
// Check if there were any recent requests on this // Check if there were any recent requests on this
o.recentactivities.mu.Lock() o.recentactivities.Mu.Lock()
if o.recentactivities.Add(uri) == true { if o.recentactivities.Add(uri) == true {
o.recentactivities.mu.Unlock() o.recentactivities.Mu.Unlock()
//return activityjson, errors.New("Recently requested within local cache") //return activityjson, errors.New("Recently requested within local cache")
return return
} }
o.recentactivities.mu.Unlock() o.recentactivities.Mu.Unlock()
var jsondocument string var jsondocument string
// jsonmap := make(map[string]interface{}) // jsonmap := make(map[string]interface{})
@ -190,13 +190,13 @@ func check_actor(uri string) {
// Check if there were any recent requests on this // Check if there were any recent requests on this
o, _ := GetRunner(actorjson.instance) o, _ := GetRunner(actorjson.instance)
o.recentactors.mu.Lock() o.recentactors.Mu.Lock()
if o.recentactors.Add(uri) == true { if o.recentactors.Add(uri) == true {
o.recentactors.mu.Unlock() o.recentactors.Mu.Unlock()
return return
// return actorjson, errors.New("Recently requested actor within local cache") // return actorjson, errors.New("Recently requested actor within local cache")
} }
o.recentactors.mu.Unlock() o.recentactors.Mu.Unlock()
// jsonmap := make(map[string]interface{}) // jsonmap := make(map[string]interface{})
selectRet := pool.QueryRow(context.Background(), "SELECT FROM actors WHERE document->>'id' = $1", uri) selectRet := pool.QueryRow(context.Background(), "SELECT FROM actors WHERE document->>'id' = $1", uri)

View File

@ -1,82 +0,0 @@
package main
import (
"sync"
)
type UniqueFifo struct {
slice []string
mu sync.Mutex
size int
}
func newUniqueFifo(size int) *UniqueFifo {
q := UniqueFifo{}
q.slice = make([]string, 0)
q.size = size
return &q
}
func (q *UniqueFifo) Add(v string) bool {
ret := false
if len(q.slice) == 0 {
q.slice = append(q.slice, v)
//logDebug.Print("Condition 1 for ", v)
ret = false
} else {
i := q.Contains(v)
if i != -1 {
q.Remove(i)
//logDebug.Print("Condition 2 for ", v)
ret = true
} else {
//logDebug.Print("Condition 3 for ", v)
ret = false
}
q.slice = append(q.slice, "")
copy(q.slice[1:], q.slice)
q.slice[0] = v
if len(q.slice) <= q.size {
q.slice = q.slice[:len(q.slice)]
} else {
q.slice = q.slice[:q.size]
}
}
return ret
}
func (q *UniqueFifo) Remove(r int) {
f := q.slice[:r]
e := q.slice[r+1:]
q.slice = f
q.slice = append(q.slice, e...)
}
func (q *UniqueFifo) Contains(v string) int {
for i, val := range q.slice {
if val == v {
return i
}
}
return -1
}
/*
func main() {
u := newUniqueFifo(3)
u.Add("First")
u.Add("First")
fmt.Println(u)
u.Add("Second")
fmt.Println(u)
u.Add("First")
fmt.Println(u)
u.Add("Third")
fmt.Println(u)
u.Add("Fourth")
fmt.Println(u)
}
*/