aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorFChannel <>2021-06-28 11:08:15 -0700
committerFChannel <>2021-06-28 11:08:15 -0700
commit94c92948ae7ae669b6b6466ef4b7f00cc430f7ef (patch)
treed832efcc1590d0d7b40ef639712324a0103fb070
parent34fa3d38b97ff08130e8709c4820915dfd684b19 (diff)
added proxy wrapper with tor support
-rw-r--r--cacheDatabase.go2
-rw-r--r--client.go34
-rw-r--r--main.go24
-rw-r--r--outboxPost.go35
4 files changed, 20 insertions, 75 deletions
diff --git a/cacheDatabase.go b/cacheDatabase.go
index 5acead7..22a4a79 100644
--- a/cacheDatabase.go
+++ b/cacheDatabase.go
@@ -258,7 +258,7 @@ func WriteObjectReplyCache(db *sql.DB, obj ObjectBase) {
}
func WriteActorToCache(db *sql.DB, actorID string) {
- actor := GetActor(actorID)
+ actor := FingerActor(actorID)
collection := GetActorCollection(actor.Outbox)
for _, e := range collection.OrderedItems {
diff --git a/client.go b/client.go
index 91f5f1f..b7f1938 100644
--- a/client.go
+++ b/client.go
@@ -9,8 +9,6 @@ import "strings"
import "strconv"
import "sort"
import "regexp"
-import "io/ioutil"
-import "encoding/json"
import "os"
var Key *string = new(string)
@@ -241,43 +239,13 @@ func PostGet(w http.ResponseWriter, r *http.Request, db *sql.DB){
t.ExecuteTemplate(w, "layout", returnData)
}
-func GetRemoteActor(id string) Actor {
-
- var respActor Actor
-
- id = StripTransferProtocol(id)
-
- req, err := http.NewRequest("GET", "http://" + id, nil)
-
- CheckError(err, "error with getting actor req")
-
- req.Header.Set("Accept", activitystreams)
-
- resp, err := http.DefaultClient.Do(req)
-
- if err != nil || resp.StatusCode != 200 {
- fmt.Println("could not get actor from " + id)
- return respActor
- }
-
- defer resp.Body.Close()
-
- body, _ := ioutil.ReadAll(resp.Body)
-
- err = json.Unmarshal(body, &respActor)
-
- CheckError(err, "error getting actor from body")
-
- return respActor
-}
-
func GetBoardCollection(db *sql.DB) []Board {
var collection []Board
for _, e := range FollowingBoards {
var board Board
boardActor := GetActorFromDB(db, e.Id)
if boardActor.Id == "" {
- boardActor = GetRemoteActor(e.Id)
+ boardActor = FingerActor(e.Id)
}
board.Name = "/" + boardActor.Name + "/"
board.PrefName = boardActor.PreferredUsername
diff --git a/main.go b/main.go
index 4333d36..c632e53 100644
--- a/main.go
+++ b/main.go
@@ -35,9 +35,7 @@ var SiteEmailPassword = GetConfigValue("emailpass")
var SiteEmailServer = GetConfigValue("emailserver") //mail.fchan.xyz
var SiteEmailPort = GetConfigValue("emailport") //587
-var TorProxy = "127.0.0.1:9050"
-
-var ldjson = "application/ld+json"
+var TorProxy = GetConfigValue("torproxy") //127.0.0.1:9050
var activitystreams = "application/ld+json; profile=\"https://www.w3.org/ns/activitystreams\""
@@ -370,7 +368,7 @@ func main() {
req.Header.Set("Content-Type", we.FormDataContentType())
- resp, err := http.DefaultClient.Do(req)
+ resp, err := RouteProxy(req)
CheckError(err, "error with post form resp")
@@ -1502,7 +1500,7 @@ func CheckValidActivity(id string) (Collection, bool) {
req.Header.Set("Accept", activitystreams)
- resp, err := http.DefaultClient.Do(req)
+ resp, err := RouteProxy(req)
if err != nil {
fmt.Println("error with response")
@@ -1542,7 +1540,7 @@ func GetActor(id string) Actor {
req.Header.Set("Accept", activitystreams)
- resp, err := http.DefaultClient.Do(req)
+ resp, err := RouteProxy(req)
if err != nil {
fmt.Println("error with getting actor resp " + id)
@@ -1573,7 +1571,7 @@ func GetActorCollection(collection string) Collection {
req.Header.Set("Accept", activitystreams)
- resp, err := http.DefaultClient.Do(req)
+ resp, err := RouteProxy(req)
if err != nil {
fmt.Println("error with getting actor collection resp " + collection)
@@ -1849,7 +1847,7 @@ func MakeActivityRequestOutbox(db *sql.DB, activity Activity) {
req.Header.Set("Signature", signature)
req.Host = instance
- _, err = http.DefaultClient.Do(req)
+ _, err = RouteProxy(req)
CheckError(err, "error with sending activity resp to")
}
@@ -1887,7 +1885,7 @@ func MakeActivityRequest(db *sql.DB, activity Activity) {
req.Header.Set("Signature", signature)
req.Host = instance
- _, err = http.DefaultClient.Do(req)
+ _, err = RouteProxy(req)
CheckError(err, "error with sending activity resp to")
}
@@ -1905,7 +1903,7 @@ func GetCollectionFromID(id string) Collection {
req.Header.Set("Accept", activitystreams)
- resp, err := http.DefaultClient.Do(req)
+ resp, err := RouteProxy(req)
if err != nil {
return nColl
@@ -2162,7 +2160,7 @@ func GetActorCollectionReq(r *http.Request, collection string) Collection {
req.Header.Set("Authorization", "Basic " + pass)
- resp, err := http.DefaultClient.Do(req)
+ resp, err := RouteProxy(req)
CheckError(err, "error with getting actor collection resp " + collection)
@@ -2327,7 +2325,7 @@ func FingerRequest(actor string, instance string) (*http.Response){
CheckError(err, "could not get finger request from id req")
- resp, err := http.DefaultClient.Do(req)
+ resp, err := RouteProxy(req)
var finger Webfinger
@@ -2354,7 +2352,7 @@ func FingerRequest(actor string, instance string) (*http.Response){
req.Header.Set("Accept", activitystreams)
- resp, err := http.DefaultClient.Do(req)
+ resp, err := RouteProxy(req)
return resp
}
}
diff --git a/outboxPost.go b/outboxPost.go
index 5772932..cc66677 100644
--- a/outboxPost.go
+++ b/outboxPost.go
@@ -366,8 +366,7 @@ func ObjectFromForm(r *http.Request, db *sql.DB, obj ObjectBase) ObjectBase {
if originalPost.Id != "" {
if !IsActivityLocal(db, activity) {
- id := FingerActor(originalPost.Id).Id
- actor := GetActor(id)
+ actor := FingerActor(originalPost.Id)
if !IsInStringArray(obj.To, actor.Id) {
obj.To = append(obj.To, actor.Id)
}
@@ -395,8 +394,7 @@ func ObjectFromForm(r *http.Request, db *sql.DB, obj ObjectBase) ObjectBase {
activity.To = append(activity.To, e.Id)
if !IsActivityLocal(db, activity) {
- id := FingerActor(e.Id).Id
- actor := GetActor(id)
+ actor := FingerActor(e.Id)
if !IsInStringArray(obj.To, actor.Id) {
obj.To = append(obj.To, actor.Id)
}
@@ -579,10 +577,14 @@ func ParseInboxRequest(w http.ResponseWriter, r *http.Request, db *sql.DB) {
func MakeActivityFollowingReq(w http.ResponseWriter, r *http.Request, activity Activity) bool {
actor := GetActor(activity.Object.Id)
- resp, err := http.NewRequest("POST", actor.Inbox, nil)
+ req, err := http.NewRequest("POST", actor.Inbox, nil)
CheckError(err, "Cannot make new get request to actor inbox for following req")
+ resp, err := RouteProxy(req)
+
+ CheckError(err, "could not make remote actor auth resp")
+
defer resp.Body.Close()
body, _ := ioutil.ReadAll(resp.Body)
@@ -597,26 +599,3 @@ func MakeActivityFollowingReq(w http.ResponseWriter, r *http.Request, activity A
return false
}
-
-func RemoteActorHasAuth(actor string, code string) bool {
-
- if actor == "" || code == "" {
- return false
- }
-
- req, err := http.NewRequest("GET", actor + "/verification&code=" + code, nil)
-
- CheckError(err, "could not make remote actor auth req")
-
- resp, err := http.DefaultClient.Do(req)
-
- CheckError(err, "could not make remote actor auth resp")
-
- defer resp.Body.Close()
-
- if resp.StatusCode == 200 {
- return true
- }
-
- return false
-}