added: possibility to encode the session cookie (added files core/sessionidmanager.h and core/sessionidmanager.cpp)
added: config options: // whether or not we should encode the session cookie // (we have a special algorithm) // default: false bool session_cookie_encode; // if session_cookie_encode is true then you should provide // a file where AES keys will be stored std::wstring session_keys_file; // each session has an index -- an unsigned int value // this value is sent in the cookie string (is encoded) // and is incremented when session_index_time_increment time is passed since the last incrementing // if a client sent the cookie back the difference between // current index and the index in the cookie should be less than or equal to session_allow_index_difference // default: 8 size_t session_allow_index_difference; // the time which should pass after the session index is incremented // default: 30 // (session_allow_index_difference + 1) * session_index_time_increment should be less than a time // load of a page and all elements on it such as images (of course it depends on client's download too) time_t session_index_time_increment; // time in seconds after a new AES key pair should be generated // we have 256 pairs of keys so this time multiplied by 256 should not be less than // the max time of a session (session_remember_max_idle), // by default: 256 * 2 days = 512 days = 1.4 year > 3 months (session_remember_max_idle) // default: 172800 = 2 days (max: 2678400 = 1 month, min: 10) size_t session_key_renew_time; changed: when printing the time of a request we print only two non-zero digits git-svn-id: svn://ttmath.org/publicrep/winix/trunk@994 e52654a7-88a9-db11-a3e9-0013d4bc506e
This commit is contained in:
@@ -236,6 +236,43 @@ size_t len = sizeof(buffer) / sizeof(wchar_t);
|
||||
|
||||
|
||||
|
||||
void SetNonZeroDigitsAfterComma(char * str, size_t digits)
|
||||
{
|
||||
bool was_comma = false;
|
||||
bool was_not_zero = false;
|
||||
size_t zeroes = 0;
|
||||
size_t not_zeroes = 0;
|
||||
|
||||
for(size_t i=0 ; str[i] != 0 ; ++i)
|
||||
{
|
||||
if( str[i] == '.' || str[i] == ',' )
|
||||
{
|
||||
was_comma = true;
|
||||
}
|
||||
else
|
||||
if( was_comma )
|
||||
{
|
||||
if( str[i] == '0' && !was_not_zero )
|
||||
{
|
||||
zeroes += 1;
|
||||
}
|
||||
else
|
||||
{
|
||||
was_not_zero = true;
|
||||
not_zeroes += 1;
|
||||
|
||||
if( not_zeroes >= digits )
|
||||
{
|
||||
str[i+1] = 0;
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
bool CorrectUrlChar(wchar_t c)
|
||||
{
|
||||
|
Reference in New Issue
Block a user