From: Jeff Halter Date: Sun, 9 Jun 2024 21:03:28 +0000 (-0700) Subject: Remove redundant text encoding func X-Git-Url: https://git.r.bdr.sh/rbdr/mobius/commitdiff_plain/6699cff21c226aa900ed3517c0f7ef3d50cefc17?hp=9cf66aeafbcbb9237fedc2efc97cc2856eb60f7f Remove redundant text encoding func --- diff --git a/hotline/transaction_handlers.go b/hotline/transaction_handlers.go index 4bb956a..ff23684 100644 --- a/hotline/transaction_handlers.go +++ b/hotline/transaction_handlers.go @@ -658,7 +658,7 @@ func HandleSetUser(cc *ClientConn, t *Transaction) (res []Transaction, err error return res, err } - login := decodeString(t.GetField(FieldUserLogin).Data) + login := string(encodeString(t.GetField(FieldUserLogin).Data)) userName := string(t.GetField(FieldUserName).Data) newAccessLvl := t.GetField(FieldUserAccess).Data @@ -783,7 +783,7 @@ func HandleUpdateUser(cc *ClientConn, t *Transaction) (res []Transaction, err er return res, err } - login := decodeString(getField(FieldData, &subFields).Data) + login := string(encodeString(getField(FieldData, &subFields).Data)) cc.logger.Infow("DeleteUser", "login", login) if err := cc.Server.DeleteUser(login); err != nil { @@ -798,9 +798,9 @@ func HandleUpdateUser(cc *ClientConn, t *Transaction) (res []Transaction, err er // If FieldData is included, this is a rename operation where FieldData contains the login of the existing // account and FieldUserLogin contains the new login. if getField(FieldData, &subFields) != nil { - loginToRename = decodeString(getField(FieldData, &subFields).Data) + loginToRename = string(encodeString(getField(FieldData, &subFields).Data)) } - userLogin := decodeString(getField(FieldUserLogin, &subFields).Data) + userLogin := string(encodeString(getField(FieldUserLogin, &subFields).Data)) if loginToRename != "" { accountToUpdate = loginToRename } else { @@ -842,8 +842,8 @@ func HandleUpdateUser(cc *ClientConn, t *Transaction) (res []Transaction, err er } err = cc.Server.UpdateUser( - decodeString(getField(FieldData, &subFields).Data), - decodeString(getField(FieldUserLogin, &subFields).Data), + string(encodeString(getField(FieldData, &subFields).Data)), + string(encodeString(getField(FieldUserLogin, &subFields).Data)), string(getField(FieldUserName, &subFields).Data), acc.Password, acc.Access, @@ -889,7 +889,7 @@ func HandleNewUser(cc *ClientConn, t *Transaction) (res []Transaction, err error return res, err } - login := decodeString(t.GetField(FieldUserLogin).Data) + login := string(encodeString(t.GetField(FieldUserLogin).Data)) // If the account already dataFile, reply with an error if _, ok := cc.Server.Accounts[login]; ok { @@ -925,7 +925,7 @@ func HandleDeleteUser(cc *ClientConn, t *Transaction) (res []Transaction, err er return res, nil } - login := decodeString(t.GetField(FieldUserLogin).Data) + login := string(encodeString(t.GetField(FieldUserLogin).Data)) if err := cc.Server.DeleteUser(login); err != nil { return res, err diff --git a/hotline/user.go b/hotline/user.go index 7d6f851..e64bf84 100644 --- a/hotline/user.go +++ b/hotline/user.go @@ -64,15 +64,6 @@ func (u *User) Write(p []byte) (int, error) { return 8 + namelen, nil } -// decodeString decodes an obfuscated user string from a client -// e.g. 98 8a 9a 8c 8b => "guest" -func decodeString(obfuText []byte) (clearText string) { - for _, char := range obfuText { - clearText += string(rune(255 - uint(char))) - } - return clearText -} - // encodeString takes []byte s containing cleartext and rotates by 255 into obfuscated cleartext. // The Hotline protocol uses this format for sending passwords over network. // Not secure, but hey, it was the 90s! diff --git a/hotline/user_test.go b/hotline/user_test.go index 6258316..c55e35d 100644 --- a/hotline/user_test.go +++ b/hotline/user_test.go @@ -57,34 +57,6 @@ func TestReadUser(t *testing.T) { } } -func TestDecodeUserString(t *testing.T) { - type args struct { - encodedString []byte - } - tests := []struct { - name string - args args - wantDecodedString string - }{ - { - name: "decodes bytes to guest", - args: args{ - encodedString: []byte{ - 0x98, 0x8a, 0x9a, 0x8c, 0x8b, - }, - }, - wantDecodedString: "guest", - }, - } - for _, tt := range tests { - t.Run(tt.name, func(t *testing.T) { - if gotDecodedString := decodeString(tt.args.encodedString); gotDecodedString != tt.wantDecodedString { - t.Errorf("decodeString() = %v, want %v", gotDecodedString, tt.wantDecodedString) - } - }) - } -} - func TestNegatedUserString(t *testing.T) { type args struct { encodedString []byte