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