1
0
Fork 0
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:
Kane York 2016-06-02 08:47:07 -07:00
parent 10feaee470
commit b94bcf743e
5 changed files with 18 additions and 22 deletions

View file

@ -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
}

View file

@ -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

View file

@ -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 {

View file

@ -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)

View file

@ -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