opensips将配置文件中的数据库密码加密

本来没想着给数据库密码加密,结果当时用的数据库密码中有个@符号,opensips在解析数据库连接串的时候,会将@字符后的数据认为是数据库地址,导致一直连接失败。

解决方法:

1、配置文件中将数据库密码采用base64加密

opensips.cfg中,将数据库密码采用base64加密,搜索下base64在线加密工具即可。

2、在opensips源码中,将pwd解密,再进行连接

需要修改的源码 modules/db_mysql/my_con.c 

需要修改的方法 int db_mysql_connect(struct my_con* ptr)

具体修改的内容 char pwdbuf[256] = "";
    base64decode(pwdbuf, ptr->id->password, strlen(ptr->id->password));

    if (!mysql_real_connect(ptr->con, ptr->id->host,
            ptr->id->username, pwdbuf,
            ptr->id->database, ptr->id->port, 0,
#if (MYSQL_VERSION_ID >= 40100)
            CLIENT_MULTI_STATEMENTS|CLIENT_REMEMBER_OPTIONS
#else
            CLIENT_REMEMBER_OPTIONS
#endif
    )) {
        LM_ERR("driver error(%d): %s\n",
            mysql_errno(ptr->con), mysql_error(ptr->con));
        mysql_close(ptr->con);
        return -1;
    }

 

 

posted @ 2023-02-14 09:34  郭松  阅读(47)  评论(0编辑  收藏  举报