mirror of
https://github.com/FrankerFaceZ/FrankerFaceZ.git
synced 2025-08-11 00:20:54 +00:00
convert (Un)SealRequest
This commit is contained in:
parent
10feaee470
commit
b94bcf743e
5 changed files with 18 additions and 22 deletions
|
@ -92,8 +92,9 @@ func getCacheKey(remoteCommand, data string) string {
|
|||
// The POST arguments are `cmd`, `args`, `channel`, and `scope`.
|
||||
// The `scope` argument is required because no attempt is made to infer the scope from the command, unlike /cached_pub.
|
||||
func HTTPBackendUncachedPublish(w http.ResponseWriter, r *http.Request) {
|
||||
b := Backend
|
||||
r.ParseForm()
|
||||
formData, err := UnsealRequest(r.Form)
|
||||
formData, err := b.UnsealRequest(r.Form)
|
||||
if err != nil {
|
||||
w.WriteHeader(403)
|
||||
fmt.Fprintf(w, "Error: %v", err)
|
||||
|
@ -180,7 +181,7 @@ func (backend *backendInfo) SendRemoteCommand(remoteCommand, data string, auth A
|
|||
formData.Set("authenticated", "0")
|
||||
}
|
||||
|
||||
sealedForm, err := SealRequest(formData)
|
||||
sealedForm, err := backend.SealRequest(formData)
|
||||
if err != nil {
|
||||
return "", err
|
||||
}
|
||||
|
@ -227,7 +228,12 @@ func (backend *backendInfo) SendRemoteCommand(remoteCommand, data string, auth A
|
|||
}
|
||||
|
||||
// SendAggregatedData sends aggregated emote usage and following data to the backend server.
|
||||
func (backend *backendInfo) SendAggregatedData(sealedForm url.Values) error {
|
||||
func (backend *backendInfo) SendAggregatedData(form url.Values) error {
|
||||
sealedForm, err := backend.SealRequest(form)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
resp, err := backend.HTTPClient.PostForm(postStatisticsURL, sealedForm)
|
||||
if err != nil {
|
||||
return err
|
||||
|
@ -278,7 +284,7 @@ func (backend *backendInfo) sendTopicNotice(topic string, added bool) error {
|
|||
formData.Set("added", "f")
|
||||
}
|
||||
|
||||
sealedForm, err := SealRequest(formData)
|
||||
sealedForm, err := backend.SealRequest(formData)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
|
|
@ -390,13 +390,7 @@ func aggregateDataSender_do() {
|
|||
reportForm.Set("emotes", string(emoteJSON))
|
||||
}
|
||||
|
||||
form, err := SealRequest(reportForm)
|
||||
if err != nil {
|
||||
log.Println("error reporting aggregate data:", err)
|
||||
return
|
||||
}
|
||||
|
||||
err = Backend.SendAggregatedData(form)
|
||||
err = Backend.SendAggregatedData(reportForm)
|
||||
if err != nil {
|
||||
log.Println("error reporting aggregate data:", err)
|
||||
return
|
||||
|
|
|
@ -103,7 +103,7 @@ func SetupServerAndHandle(config *ConfigFile, serveMux *http.ServeMux) {
|
|||
serveMux.HandleFunc("/uncached_pub", HTTPBackendUncachedPublish)
|
||||
serveMux.HandleFunc("/cached_pub", HTTPBackendCachedPublish)
|
||||
|
||||
announceForm, err := SealRequest(url.Values{
|
||||
announceForm, err := Backend.SealRequest(url.Values{
|
||||
"startup": []string{"1"},
|
||||
})
|
||||
if err != nil {
|
||||
|
|
|
@ -206,7 +206,7 @@ func GetCommandsOfType(match BacklogCacheType) []Command {
|
|||
|
||||
func HTTPBackendDropBacklog(w http.ResponseWriter, r *http.Request) {
|
||||
r.ParseForm()
|
||||
formData, err := UnsealRequest(r.Form)
|
||||
formData, err := Backend.UnsealRequest(r.Form)
|
||||
if err != nil {
|
||||
w.WriteHeader(403)
|
||||
fmt.Fprintf(w, "Error: %v", err)
|
||||
|
@ -225,7 +225,7 @@ func HTTPBackendDropBacklog(w http.ResponseWriter, r *http.Request) {
|
|||
// `scope` is implicit in the command
|
||||
func HTTPBackendCachedPublish(w http.ResponseWriter, r *http.Request) {
|
||||
r.ParseForm()
|
||||
formData, err := UnsealRequest(r.Form)
|
||||
formData, err := Backend.UnsealRequest(r.Form)
|
||||
if err != nil {
|
||||
w.WriteHeader(403)
|
||||
fmt.Fprintf(w, "Error: %v", err)
|
||||
|
|
|
@ -24,15 +24,11 @@ func FillCryptoRandom(buf []byte) error {
|
|||
return nil
|
||||
}
|
||||
|
||||
func New4KByteBuffer() interface{} {
|
||||
return make([]byte, 0, 4096)
|
||||
}
|
||||
|
||||
func copyString(s string) string {
|
||||
return string([]byte(s))
|
||||
}
|
||||
|
||||
func SealRequest(form url.Values) (url.Values, error) {
|
||||
func (backend *backendInfo) SealRequest(form url.Values) (url.Values, error) {
|
||||
var nonce [24]byte
|
||||
var err error
|
||||
|
||||
|
@ -41,7 +37,7 @@ func SealRequest(form url.Values) (url.Values, error) {
|
|||
return nil, err
|
||||
}
|
||||
|
||||
cipherMsg := box.SealAfterPrecomputation(nil, []byte(form.Encode()), &nonce, &backendSharedKey)
|
||||
cipherMsg := box.SealAfterPrecomputation(nil, []byte(form.Encode()), &nonce, &backend.sharedKey)
|
||||
|
||||
bufMessage := new(bytes.Buffer)
|
||||
enc := base64.NewEncoder(base64.URLEncoding, bufMessage)
|
||||
|
@ -67,7 +63,7 @@ func SealRequest(form url.Values) (url.Values, error) {
|
|||
var ErrorShortNonce = errors.New("Nonce too short.")
|
||||
var ErrorInvalidSignature = errors.New("Invalid signature or contents")
|
||||
|
||||
func UnsealRequest(form url.Values) (url.Values, error) {
|
||||
func (backend *backendInfo) UnsealRequest(form url.Values) (url.Values, error) {
|
||||
var nonce [24]byte
|
||||
|
||||
nonceString := form.Get("nonce")
|
||||
|
@ -87,7 +83,7 @@ func UnsealRequest(form url.Values) (url.Values, error) {
|
|||
cipherBuffer := new(bytes.Buffer)
|
||||
cipherBuffer.ReadFrom(dec)
|
||||
|
||||
message, ok := box.OpenAfterPrecomputation(nil, cipherBuffer.Bytes(), &nonce, &backendSharedKey)
|
||||
message, ok := box.OpenAfterPrecomputation(nil, cipherBuffer.Bytes(), &nonce, &backend.sharedKey)
|
||||
if !ok {
|
||||
Statistics.BackendVerifyFails++
|
||||
return nil, ErrorInvalidSignature
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue