summaryrefslogtreecommitdiff
path: root/src/chat/sman.cpp
diff options
context:
space:
mode:
authorPaul Buetow <paul@buetow.org>2013-04-06 13:14:46 +0200
committerPaul Buetow <paul@buetow.org>2013-04-06 13:14:46 +0200
commiteab0b1c2d649fa16707b24cd2a91f195078167b0 (patch)
treee960f351655305e3911089ff75677caef364a280 /src/chat/sman.cpp
parent07706f56cd421bf8b101a5c0fe44674d36e161a0 (diff)
tagging ychat-0.7.2ychat-0.7.2
Diffstat (limited to 'src/chat/sman.cpp')
-rwxr-xr-xsrc/chat/sman.cpp127
1 files changed, 56 insertions, 71 deletions
diff --git a/src/chat/sman.cpp b/src/chat/sman.cpp
index 8246853..464bf24 100755
--- a/src/chat/sman.cpp
+++ b/src/chat/sman.cpp
@@ -6,123 +6,108 @@
#include "../maps/mtools.h"
#include "../contrib/crypt/md5.h"
-sman::sman()
+sman::sman() : smap<sess*,string>::smap(HMAPOCC)
{
- i_session_count = 0;
- pthread_mutex_init( &mut_i_session_count, NULL );
+ i_session_count = 0;
+ pthread_mutex_init( &mut_i_session_count, NULL );
}
sman::~sman()
{
- // Delete each session object of the shashmap!
- shashmap<sess*>::run_func( mtools<sess*>::delete_obj );
- pthread_mutex_destroy( &mut_i_session_count );
+ // Delete each session object of the smap!
+ smap<sess*,string>::run_func( mtools<sess*>::delete_obj );
+ pthread_mutex_destroy( &mut_i_session_count );
}
-string sman::generate_id( int i_len )
+string sman::generate_id( int len )
{
- string s_valid = wrap::CONF->get_elem("chat.session.validchars");
- string s_ret = "";
-
- srand(time(0)+tool::string2int(wrap::CONF->get_elem("chat.session.kloakkey")));
- int i_char;
-
-
- for (int i = 0; i < i_len; i++)
- {
- i_char = rand() % s_valid.length();
- s_ret += s_valid[i_char];
- }
-
- if ( wrap::CONF->get_elem("chat.session.md5hash") == "true" )
- {
- string s_salt = wrap::CONF->get_elem("chat.session.md5salt");
- string s_hash(md5::MD5Crypt(s_ret.c_str(), s_salt.c_str()));
- s_ret.append(s_hash.substr(s_ret.find(s_salt) + s_salt.length() + 3));
- }
-
- // Prove, if the TempID already exists
- sess* p_sess = get_elem(s_ret);
-
- if (p_sess)
- {
- wrap::system_message(SESSEXI);
- return generate_id(i_len);
- }
-
- return s_ret;
+ string valid_chars = wrap::CONF->get_elem("chat.session.validchars");
+ string s_ret = "";
+
+ srand(time(0)+tool::string2int(wrap::CONF->get_elem("chat.session.kloakkey")));
+ int i_char;
+
+ for (int i = 0; i < len; i++)
+ {
+ i_char = rand() % 64;
+ s_ret += valid_chars[i_char];
+ }
+
+ if ( wrap::CONF->get_elem("chat.session.md5hash") == "true" )
+ {
+ string s_salt = wrap::CONF->get_elem("chat.session.md5salt");
+ s_ret = string(md5::MD5Crypt(s_ret.c_str(), s_salt.c_str()));
+ return s_ret.substr(s_ret.find(s_salt) + s_salt.length() + 3);
+ }
+
+ return s_ret;
}
sess *sman::create_session( )
{
- string s_tmpid = generate_id( tool::string2int( wrap::CONF->get_elem( "chat.session.length" ) ) );
+ string s_id = generate_id( tool::string2int( wrap::CONF->get_elem( "chat.session.length" ) ) );
- sess* p_sess = new sess( s_tmpid );
+ sess* p_sess = new sess( s_id );
- pthread_mutex_lock( &mut_i_session_count );
- i_session_count++;
+ pthread_mutex_lock( &mut_i_session_count );
+ i_session_count++;
#ifdef NCURSES
-
- print_sessions();
+ print_sessions();
#endif
+ pthread_mutex_unlock( &mut_i_session_count );
- pthread_mutex_unlock( &mut_i_session_count );
-
- //????
- add_elem( p_sess, s_tmpid );
+ add_elem( p_sess, s_id );
- return p_sess;
+ return p_sess;
}
sess *sman::get_session( string s_id )
{
- return get_elem( s_id );
+ return get_elem( s_id );
}
void
sman::destroy_session( string s_id )
{
- pthread_mutex_lock( &mut_i_session_count );
- i_session_count--;
+ pthread_mutex_lock( &mut_i_session_count );
+ i_session_count--;
#ifdef NCURSES
-
- print_sessions();
+ print_sessions();
#endif
+ pthread_mutex_unlock( &mut_i_session_count );
- pthread_mutex_unlock( &mut_i_session_count );
-
- sess* p_sess = get_elem( s_id );
- del_elem( s_id );
- delete p_sess;
+ sess* p_sess = get_elem( s_id );
+ del_elem( s_id );
+ delete p_sess;
}
#ifdef NCURSES
void sman::print_sessions()
{
- if ( wrap::NCUR->is_ready() )
- {
- mvprintw( NCUR_SESSION_X,NCUR_SESSION_Y, "Sessions: %d ", i_session_count);
- refresh();
- }
+ if ( wrap::NCUR->is_ready() )
+ {
+ mvprintw( NCUR_SESSION_X,NCUR_SESSION_Y, "Sessions: %d ", i_session_count);
+ refresh();
+ }
}
#ifdef NCURSES
void sman::print_init_ncurses()
{
- pthread_mutex_lock( &mut_i_session_count );
- print_sessions();
- pthread_mutex_unlock( &mut_i_session_count );
+ pthread_mutex_lock( &mut_i_session_count );
+ print_sessions();
+ pthread_mutex_unlock( &mut_i_session_count );
}
#endif
int
sman::get_session_count()
{
- int i_ret;
- pthread_mutex_lock( &mut_i_session_count );
- i_ret = i_session_count;
- pthread_mutex_unlock( &mut_i_session_count );
- return i_ret;
+ int i_ret;
+ pthread_mutex_lock( &mut_i_session_count );
+ i_ret = i_session_count;
+ pthread_mutex_unlock( &mut_i_session_count );
+ return i_ret;
}
#endif