bool y::ldap::account::load(const data& d) { _uidNumber.readFromLdap(d); if(_uidNumber().get() == 0) { return false; } for(int i = 0; i < d.elms("objectClass"); i++) { if(d.getValue("objectClass", i) == "schoolPerson") { _hasSchoolPersonClass = true; break; } } _uid .readFromLdap(d); _dn .readFromLdap(d); _cn .readFromLdap(d); _sn .readFromLdap(d); _fullName .readFromLdap(d); _homeDir .readFromLdap(d); _wisaID .readFromLdap(d); _wisaName .readFromLdap(d); _mail .readFromLdap(d); _mailAlias .readFromLdap(d); _birthDay .readFromLdap(d); _password .readFromLdap(d); _role .readFromLdap(d); _groupID .readFromLdap(d); _schoolClass .readFromLdap(d); _classChange .readFromLdap(d); _birthPlace .readFromLdap(d); _gender .readFromLdap(d); _adminGroup .readFromLdap(d); _registerID .readFromLdap(d); _nationality .readFromLdap(d); _stemID .readFromLdap(d); _schoolID .readFromLdap(d); _houseNumber .readFromLdap(d); _houseNumberAdd.readFromLdap(d); _city .readFromLdap(d); _postalCode .readFromLdap(d); _street .readFromLdap(d); _country .readFromLdap(d); if(_role().get() == ROLE::NONE) { y::utils::Log().add("a user exists without a valid schoolrole: "); y::utils::Log().add(_dn().get()); } if(d.getValue("krbName" ).size()) _hasKrbName = true; TODO(this can be removed later) if(_fullName().get() == "System User") { string fn = _cn().get(); fn += " "; fn += _sn().get(); _fullName(FULL_NAME(fn), false); } _new = false; return !_new; }
CNEOLog::CNEOLog(CNEOLowDebug *pDebug, CNEOMemPoolWithLock *pMemPool, //内存指针池 const char *szLogPath, //日志路径 const char *szAppName, //应用名 int nHoldFileMax, //保存的最大文件数 bool bSyslogFlag, //日志级别开关 bool bDebugFlag, bool bDebug2Flag, bool bDebug3Flag, bool bPrintfToScrFlag //是否向屏幕打印 ):m_Lock(),m_pDebug(pDebug),m_pMemPool(pMemPool) { //m_pDebug=pDebug; //m_pMemPool=pMemPool; //拦截信息 m_pInfoOutCallback=m_pDebug->pInfoOutCallback; m_pInfoOutCallbackParam=m_pDebug->pInfoOutCallbackParam; memset(m_szFilePath,0,sizeof(m_szFilePath)); memset(m_szFileName,0,sizeof(m_szFileName)); //利用debug输出启动标志 m_pDebug->DebugToFile("CNEOLog:start~\n"); //获得文件的基准字符 FULL_NAME(szLogPath,szAppName,m_szFilePath,"");//在debug文件中定义 //获得文件目录名的保存文件名 FULL_NAME(szLogPath,szAppName,m_szFileInfoName,"info"); //清空当前文件名缓冲 NEO_CLEAN_CHAR_BUFFER(m_szFileName);//在某个文件中定义 m_nFileSize=0; m_bSysLogFlag=bSyslogFlag; m_bDebugFlag=bDebugFlag; m_bDebug2Flag=bDebug2Flag; m_bDebug3Flag=bDebug3Flag; m_bPrintfToScrFlag=bPrintfToScrFlag; m_nHoldFileMax=nHoldFileMax; m_pFileInfoQueue=new CNEOMemQueue(m_pDebug,m_pMemPool,"CNEOLog::m_pFileInfoQueue"); if(m_pFileInfoQueue)//申请成功,注册到内存池 { m_pMemPool->Register(m_pFileInfoQueue,"CNEOLog::m_pFileInfoQueue"); } m_pFileInfoQueue->ReadFromFile(m_szFileInfoName);//读入上次保留的文件名信息 MakeFileName(); // 定制文件名 }
CTonyXiaoLog::CTonyXiaoLog( CTonyLowDebug* pDebug, //参数介绍略 CTonyMemoryPoolWithLock* pMemPool, char* szLogPath, char* szAppName, int nHoldFileMax, bool bSyslogFlag, bool bDebugFlag, bool bDebug2Flag, bool bDebug3Flag, bool bPrintf2ScrFlag) { m_pDebug = pDebug; //保留Debug 对象指针 m_pMemPool = pMemPool; //保留内存池指针 //请注意,这里从Debug 对象中获得拦截回调函数信息 m_pInfoOutCallback = m_pDebug->m_pInfoOutCallback; m_pInfoOutCallbackParam = m_pDebug->m_pInfoOutCallbackParam; //利用debug 输出启动标志 TONY_DEBUG("CTonyXiaoLog: Start!\n"); //获得日志文件名基准字符串,这里主要使用输入的路径名和应用名生成基本名 //如路径是“/var”,应用名是“test_project”, //则基准名为“/var/test_project”, //这样,以后的文件名,就是在这个基本名后加时间戳实现 //如:/var/test_project_Thu_Jul_16_14_31_44_2009.log FULL_NAME(szLogPath, szAppName, m_szFilePath, ""); //获得日志文件名目录的保存文件名 //如:/var/test_project.info FULL_NAME(szLogPath, szAppName, m_szFileInfoName, "info"); //清空当前文件名缓冲区 TONY_CLEAN_CHAR_BUFFER (m_szFileName); //当前文件尺寸设置为0 m_nFileSize = 0; m_bSyslogFlag = bSyslogFlag; //保存Debug 级别开关变量 m_bDebugFlag = bDebugFlag; //为false 的级别将不会被输出 m_bDebug2Flag = bDebug2Flag; m_bDebug3Flag = bDebug3Flag; m_bPrintf2ScrFlag = bPrintf2ScrFlag; //保存屏幕输出开关 m_nHoldFileMax = nHoldFileMax; //保存最大保留文件个数 m_pFileInfoQueue = new CTonyXiaoMemoryQueue( //实例化文件目录队列对象 pDebug, m_pMemPool, "CTonyXiaoLog::m_pFileInfoQueue"); if (m_pFileInfoQueue) //如果创建成功,注册到内存池 { m_pMemPool->Register(m_pFileInfoQueue, "CTonyXiaoLog::m_pFileInfoQueue"); } m_pFileInfoQueue->ReadFromFile(m_szFileInfoName); //读入上次保留的文件名信息 MakeFileName(); //根据当前时间戳,定制一个文件名 }
y::ldap::account::account(y::ldap::server * server) : server(server), // var name in ldap type and init is int? _uidNumber (TYPE_UIDNUMBER , UID_NUMBER (0 )), _uid (TYPE_UID , UID ("")), _dn ("DN" , DN ("")), _cn (TYPE_CN , CN ("")), _sn ("sn" , SN ("")), _fullName ("displayName" , FULL_NAME ("")), _homeDir ("homeDirectory" , HOMEDIR ("")), _wisaID ("wisaID" , WISA_ID (0 )), _wisaName (TYPE_WISANAME , WISA_NAME ("")), _mail ("mail" , MAIL ("")), _mailAlias ("mailAlias" , MAIL_ALIAS ("")), _birthDay ("birthday" , DATE(DAY(1), MONTH(1), YEAR(1))), _password ("gMailPassword" , PASSWORD ("")), _role ("schoolRole" , ROLE(ROLE::NONE)), _groupID ("gidNumber" , GID_NUMBER (0 )), _schoolClass ("class" , SCHOOLCLASS("")), _classChange ("classChangeDate" , DATE(DAY(1), MONTH(1), YEAR(1))), _birthPlace ("placeOfBirth" , BIRTHPLACE ("")), _gender ("gender" , GENDER(GENDER::MALE) ), _adminGroup ("adminGroupID" , ADMINGROUP (0 )), _registerID ("nationalRegisterID", REGISTER_ID("")), _nationality ("nationality" , NATION ("")), _stemID ("stemID" , STEM_ID (0 )), _schoolID ("schoolID" , SCHOOL_ID (0 )), _houseNumber ("houseNumber" , HOUSENUMBER(0 )), _houseNumberAdd("houseNumberAdd" , HOUSENUMBER_ADD("") ), _city ("location" , CITY ("")), _postalCode ("postalCode" , POSTAL_CODE("")), _street ("street" , STREET ("")), _country ("co" , COUNTRY ("")), _new(true), _hasKrbName(false), _hasSchoolPersonClass(false), _importStatus(WI_NOT_ACCOUNTED), _flaggedForRemoval(false) {}
void y::ldap::account::clear() { _new = true; _hasKrbName = false; _hasSchoolPersonClass = false; _uidNumber .reset(UID_NUMBER (0 )); _uid .reset(UID ("")); _dn .reset(DN ("")); _cn .reset(CN ("")); _sn .reset(SN ("")); _fullName .reset(FULL_NAME ("")); _homeDir .reset(HOMEDIR ("")); _wisaID .reset(WISA_ID (0 )); _wisaName .reset(WISA_NAME ("")); _mail .reset(MAIL ("")); _mailAlias .reset(MAIL_ALIAS ("")); _birthDay .reset(DATE(DAY(1), MONTH(1), YEAR(1))); _password .reset(PASSWORD ("")); _role .reset(ROLE(ROLE::NONE)); _groupID .reset(GID_NUMBER (0 )); _schoolClass .reset(SCHOOLCLASS("")); _birthPlace .reset(BIRTHPLACE ("")); _gender .reset(GENDER(GENDER::MALE)); _adminGroup .reset(ADMINGROUP (0 )); _registerID .reset(REGISTER_ID("")); _nationality .reset(NATION ("")); _stemID .reset(STEM_ID (0 )); _schoolID .reset(SCHOOL_ID (0 )); _street .reset(STREET ("")); _houseNumber .reset(HOUSENUMBER(0 )); _houseNumberAdd.reset(HOUSENUMBER_ADD("")); _city .reset(CITY ("")); _postalCode .reset(POSTAL_CODE("")); _country .reset(COUNTRY ("")); _ssPassword.clear(); _flaggedForRemoval = false; }