diff options
Diffstat (limited to 'src/user.cpp')
-rw-r--r-- | src/user.cpp | 37 |
1 files changed, 5 insertions, 32 deletions
diff --git a/src/user.cpp b/src/user.cpp index 65ca2d4..ebc3b06 100644 --- a/src/user.cpp +++ b/src/user.cpp @@ -1,14 +1,13 @@ #include "content.hpp" #include "user.hpp" #include "strusCms.hpp" +#include "captcha.hpp" #include <cppcms/url_dispatcher.h> #include <cppcms/url_mapper.h> #include <cppdb/frontend.h> #include <cppcms/session_interface.h> #include <booster/posix_time.h> -#include <b64/encode.h> -#include <sstream> namespace apps { @@ -83,41 +82,15 @@ bool user::check_login( std::string user, std::string password ) return true; } -#define GIFSIZE 17646 -extern "C" { - const int gifsize = GIFSIZE; - void captcha( unsigned char im[70*200], unsigned char l[6]); - void makegif(unsigned char im[70*200], unsigned char gif[gifsize]); -} - void user::ini( content::user &c ) { master::ini( c ); - unsigned char l[6]; - unsigned char *im = new unsigned char[70*200]; - unsigned char *gif = new unsigned char[gifsize]; - - captcha( im, l ); + struct captcha ca = generateCaptcha( ); + last_captcha = new_captcha; - new_captcha = std::string( (char *)l ); + new_captcha = ca.text; - std::ostringstream raws( std::stringstream::out | std::stringstream::binary ); - makegif( im, gif ); - raws.write( (char *)gif, gifsize ); - std::string raw = raws.str( ); - - std::istringstream in( std::ios_base::in | std::ios_base::binary ); - in.str( raw ); - - base64::encoder E; - std::string base_s; - base_s.reserve( 3 * gifsize ); - std::ostringstream base( base_s, std::stringstream::out | std::stringstream::binary ); - E.encode( in, base ); - c.captcha_base64 = base.str( ); - - delete gif; - delete im; + c.captcha_base64 = ca.base64; } } // namespace apps |