diff options
author | Andreas Baumann <mail@andreasbaumann.cc> | 2015-04-22 13:33:09 +0200 |
---|---|---|
committer | Andreas Baumann <mail@andreasbaumann.cc> | 2015-04-22 13:33:09 +0200 |
commit | dec1359e90e847c90629e43ef3744539e8fb41c8 (patch) | |
tree | da2d2ea07745c4eff127e4c62113e5f197dbc8c1 /src/user.cpp | |
parent | d6e6f65a1cf8723a398689b549dd970121655053 (diff) | |
download | aCms-dec1359e90e847c90629e43ef3744539e8fb41c8.tar.gz aCms-dec1359e90e847c90629e43ef3744539e8fb41c8.tar.bz2 |
added base64 coding/decoding libary
showing captcha in login page (not verifying yet)
Diffstat (limited to 'src/user.cpp')
-rw-r--r-- | src/user.cpp | 34 |
1 files changed, 33 insertions, 1 deletions
diff --git a/src/user.cpp b/src/user.cpp index 8f18706..d94cd6f 100644 --- a/src/user.cpp +++ b/src/user.cpp @@ -7,6 +7,8 @@ #include <cppdb/frontend.h> #include <cppcms/session_interface.h> #include <booster/posix_time.h> +#include <b64/encode.h> +#include <sstream> namespace apps { @@ -81,10 +83,40 @@ 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 ); - c.captcha = ">> CAPTCHA <<"; + unsigned char l[6]; + unsigned char *im = new unsigned char[70*200]; + unsigned char *gif = new unsigned char[gifsize]; + + captcha( im, l ); + c.captcha_text = std::string( (char *)l ); + + 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; } } // namespace apps |