~bigbes/core-go

f9731e15c37f8591f36a0728fd4d931c3ce1a253 — Drew DeVault 5 years ago 0705661
Various bug fixes per pages.sr.ht
3 files changed, 13 insertions(+), 10 deletions(-)

M auth/middleware.go
M auth/token.go
M config/config.go
M auth/middleware.go => auth/middleware.go +7 -8
@@ 277,7 277,7 @@ func internalAuth(internalNet []*net.IPNet, payload []byte,

	payload = crypto.DecryptWithExpiration(payload, 30*time.Second)
	if payload == nil {
		authError(w, "Invalid Authorization header", http.StatusForbidden)
		authError(w, "Invalid Authorization header (encryption error)", http.StatusForbidden)
		return
	}



@@ 287,7 287,7 @@ func internalAuth(internalNet []*net.IPNet, payload []byte,
	}

	if internalAuth.ClientID == "" || internalAuth.NodeID == "" {
		authError(w, "Invalid Authorization header", http.StatusForbidden)
		authError(w, "Invalid Authorization header (missing Client ID or Node ID)", http.StatusForbidden)
	}

	var auth *AuthContext


@@ 372,7 372,7 @@ func FetchMetaProfile(ctx context.Context, username string, user *AuthContext) e
				$1, $2, $3, $4, $5, $6, $7
			)
			ON CONFLICT DO NOTHING
			RETURNING (
			RETURNING
				id,
				created,
				updated,


@@ 382,13 382,12 @@ func FetchMetaProfile(ctx context.Context, username string, user *AuthContext) e
				url,
				location,
				bio,
				suspension_notice
			);`,
			profile.Username, profile.Email, profile.UserType, profile.URL,
			profile.Location, profile.Bio, profile.SuspensionNotice)
				suspension_notice;`,
			&profile.Username, &profile.Email, &profile.UserType, &profile.URL,
			&profile.Location, &profile.Bio, &profile.SuspensionNotice)

		// TODO: Register webhooks
		if err := row.Scan(&user.UserID, user.Created, user.Updated,
		if err := row.Scan(&user.UserID, &user.Created, &user.Updated,
			&user.Username, &user.Email, &user.UserType, &user.URL,
			&user.Location, &user.Bio, &user.SuspensionNotice); err != nil {
			if err == sql.ErrNoRows {

M auth/token.go => auth/token.go +1 -1
@@ 54,7 54,7 @@ func DecodeToken(token string) *OAuth2Token {
	mac := payload[len(payload)-32:]
	payload = payload[:len(payload)-32]
	if crypto.HMACVerify(payload, mac) == false {
		log.Printf("Invalid bearer token: HMAC verification failed (MAC: [%d]%s; payload: [%d]%s)",
		log.Printf("Invalid bearer token: HMAC verification failed (MAC: [%d]%s; payload: [%d]%s",
			len(mac), hex.EncodeToString(mac), len(payload), hex.EncodeToString(payload))
		return nil
	}

M config/config.go => config/config.go +5 -1
@@ 37,7 37,11 @@ func LoadConfig(defaultAddr string) ini.File {
		}
	}

	for _, path := range []string{"../config.ini", "/etc/sr.ht/config.ini"} {
	for _, path := range []string{
			"config.ini",
			"../config.ini",
			"/etc/sr.ht/config.ini",
		} {
		config, err = ini.LoadFile(path)
		if err == nil {
			break