Exemplo n.º 1
0
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;
}
Exemplo n.º 2
0
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();                                  // 定制文件名
}
Exemplo n.º 3
0
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(); //根据当前时间戳,定制一个文件名
}
Exemplo n.º 4
0
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)
  {}
Exemplo n.º 5
0
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;
}