Refactor around translatePassword
authorest31 <MTest31@outlook.com>
Fri, 17 Apr 2015 04:10:30 +0000 (06:10 +0200)
committerest31 <MTest31@outlook.com>
Fri, 17 Apr 2015 04:10:30 +0000 (06:10 +0200)
Change types for passed password from wstring to string, which removes converting
back and forth in most cases. Move the narrow_to_wide conversion, where its neccessary,
closer to irrlicht. Remove trailing spaces in guiPasswordChange.cpp. Make parameters for
translatePassword passed as const reference.

src/client.cpp
src/client.h
src/client/clientlauncher.cpp
src/guiPasswordChange.cpp
src/network/serverpackethandler.cpp
src/script/lua_api/l_util.cpp
src/util/string.cpp
src/util/string.h

index 99ef3c7e126975245339d8e79b2562d6c306992b..ceea56ba0b4886c7d4a62a6bb68c351b14be94c4 100644 (file)
@@ -1062,8 +1062,8 @@ void Client::sendChatMessage(const std::wstring &message)
        Send(&pkt);
 }
 
-void Client::sendChangePassword(const std::wstring &oldpassword,
-        const std::wstring &newpassword)
+void Client::sendChangePassword(const std::string &oldpassword,
+        const std::string &newpassword)
 {
        Player *player = m_env.getLocalPlayer();
        if(player == NULL)
index 7ec405fa6b3c9bf2842fcfe2f7a04cc5b283d0c1..47b3c2e005275810912cdd99a98a13b627a81320 100644 (file)
@@ -407,8 +407,8 @@ public:
                        const std::map<std::string, std::string> &fields);
        void sendInventoryAction(InventoryAction *a);
        void sendChatMessage(const std::wstring &message);
-       void sendChangePassword(const std::wstring &oldpassword,
-                               const std::wstring &newpassword);
+       void sendChangePassword(const std::string &oldpassword,
+                               const std::string &newpassword);
        void sendDamage(u8 damage);
        void sendBreath(u16 breath);
        void sendRespawn();
index fe4dec40f57fa558c9f37fdf4cd149b4b60400bc..5307ccd4bc02647490de048073d196e8b16af50d 100644 (file)
@@ -392,7 +392,7 @@ bool ClientLauncher::launch_game(std::string &error_message,
        else
                playername = menudata.name;
 
-       password = translatePassword(playername, narrow_to_wide(menudata.password));
+       password = translatePassword(playername, menudata.password);
 
        g_settings->set("name", playername);
 
index 0e19f571d9881d9dd6e142b765032ec4b564fb57..1c1a1f06e7c47c437b976cd73e63b253a3ecb2fe 100644 (file)
@@ -79,7 +79,7 @@ void GUIPasswordChange::regenerateGui(v2u32 screensize)
                Remove stuff
        */
        removeChildren();
-       
+
        /*
                Calculate new sizes and positions
        */
@@ -89,7 +89,7 @@ void GUIPasswordChange::regenerateGui(v2u32 screensize)
                        screensize.X/2 + 580/2,
                        screensize.Y/2 + 300/2
        );
-       
+
        DesiredRect = rect;
        recalculateAbsolutePosition(false);
 
@@ -112,7 +112,7 @@ void GUIPasswordChange::regenerateGui(v2u32 screensize)
        {
                core::rect<s32> rect(0, 0, 230, 30);
                rect += topleft_client + v2s32(160, ypos);
-               gui::IGUIEditBox *e = 
+               gui::IGUIEditBox *e =
                Environment->addEditBox(L"", rect, true, this, ID_oldPassword);
                Environment->setFocus(e);
                e->setPasswordBox(true);
@@ -128,7 +128,7 @@ void GUIPasswordChange::regenerateGui(v2u32 screensize)
        {
                core::rect<s32> rect(0, 0, 230, 30);
                rect += topleft_client + v2s32(160, ypos);
-               gui::IGUIEditBox *e = 
+               gui::IGUIEditBox *e =
                Environment->addEditBox(L"", rect, true, this, ID_newPassword1);
                e->setPasswordBox(true);
        }
@@ -143,7 +143,7 @@ void GUIPasswordChange::regenerateGui(v2u32 screensize)
        {
                core::rect<s32> rect(0, 0, 230, 30);
                rect += topleft_client + v2s32(160, ypos);
-               gui::IGUIEditBox *e = 
+               gui::IGUIEditBox *e =
                Environment->addEditBox(L"", rect, true, this, ID_newPassword2);
                e->setPasswordBox(true);
        }
@@ -162,7 +162,7 @@ void GUIPasswordChange::regenerateGui(v2u32 screensize)
                core::rect<s32> rect(0, 0, 300, 20);
                rect += topleft_client + v2s32(35, ypos);
                text = wgettext("Passwords do not match!");
-               IGUIElement *e = 
+               IGUIElement *e =
                Environment->addStaticText(
                        text,
                        rect, false, true, this, ID_message);
@@ -177,7 +177,7 @@ void GUIPasswordChange::drawMenu()
        if (!skin)
                return;
        video::IVideoDriver* driver = Environment->getVideoDriver();
-       
+
        video::SColor bgcolor(140,0,0,0);
        driver->draw2DRectangle(bgcolor, AbsoluteRect, &AbsoluteClippingRect);
 
@@ -203,7 +203,8 @@ bool GUIPasswordChange::acceptInput()
                                e->setVisible(true);
                        return false;
                }
-               m_client->sendChangePassword(oldpass, newpass);
+               m_client->sendChangePassword(wide_to_narrow(oldpass),
+                       wide_to_narrow(newpass));
                return true;
 }
 
index 2f0e0b30ca73ab746f0f8e02a1321d45d4259edf..955b1a7dc685b49d3814855f4b66c3d999325d87 100644 (file)
@@ -267,8 +267,8 @@ void Server::handleCommand_Auth(NetworkPacket* pkt)
                        DenyAccess(pkt->getPeerId(), SERVER_ACCESSDENIED_EMPTY_PASSWORD);
                        return;
                }
-               std::wstring raw_default_password =
-                       narrow_to_wide(g_settings->get("default_password"));
+               std::string raw_default_password =
+                       g_settings->get("default_password");
                std::string initial_password =
                        translatePassword(playername, raw_default_password);
 
@@ -571,8 +571,8 @@ void Server::handleCommand_Init_Legacy(NetworkPacket* pkt)
                                        L"disallowed. Set a password and try again.");
                        return;
                }
-               std::wstring raw_default_password =
-                       narrow_to_wide(g_settings->get("default_password"));
+               std::string raw_default_password =
+                       g_settings->get("default_password");
                std::string initial_password =
                        translatePassword(playername, raw_default_password);
 
index 79a5b252a4552106d6cba9bdf7bd2c6dec3ca2e6..0464f46d955f553be1566bd5025b3557f843da12 100644 (file)
@@ -255,8 +255,7 @@ int ModApiUtil::l_get_password_hash(lua_State *L)
        NO_MAP_LOCK_REQUIRED;
        std::string name = luaL_checkstring(L, 1);
        std::string raw_password = luaL_checkstring(L, 2);
-       std::string hash = translatePassword(name,
-                       narrow_to_wide(raw_password));
+       std::string hash = translatePassword(name, raw_password);
        lua_pushstring(L, hash.c_str());
        return 1;
 }
index 02a0586e796031ad166d3707401f2f13f81457cb..c0f0e97fddb985b0774a6e13f4c04eb5ea835a92 100644 (file)
@@ -181,12 +181,13 @@ std::string wide_to_narrow(const std::wstring &wcs)
 // their password. (Exception : if the password field is
 // blank, we send a blank password - this is for backwards
 // compatibility with password-less players).
-std::string translatePassword(std::string playername, std::wstring password)
+std::string translatePassword(const std::string &playername,
+       const std::string &password)
 {
        if (password.length() == 0)
                return "";
 
-       std::string slt = playername + wide_to_narrow(password);
+       std::string slt = playername + password;
        SHA1 sha1;
        sha1.addBytes(slt.c_str(), slt.length());
        unsigned char *digest = sha1.getDigest();
index dc520e3a8947c91e8183873b68fe1d0bb611ccd5..d4bbafd9f59b8b3d4eca36a6fe8ba2f5f6bfc748 100644 (file)
@@ -43,7 +43,8 @@ wchar_t *narrow_to_wide_c(const char *str);
 
 std::wstring narrow_to_wide(const std::string &mbs);
 std::string wide_to_narrow(const std::wstring &wcs);
-std::string translatePassword(std::string playername, std::wstring password);
+std::string translatePassword(const std::string &playername,
+       const std::string &password);
 std::string urlencode(std::string str);
 std::string urldecode(std::string str);
 u32 readFlagString(std::string str, const FlagDesc *flagdesc, u32 *flagmask);