UserManageDlg::UserManageDlg() { SET_FONT setWindowTitle(tr("用户管理")); m_pUserCenter = USERCENTER::instance(); CreateToolBar(); userTable_ = new QTableWidget(this); userTable_->setRowCount(0); userTable_->setColumnCount(2); userTable_->setColumnWidth(0, 130); userTable_->setColumnWidth(1, 200); userTable_->setFrameStyle(QFrame::Plain); userTable_->setEditTriggers(QAbstractItemView::NoEditTriggers); userTable_->setSelectionBehavior(QAbstractItemView::SelectRows); userTable_->setSelectionMode(QAbstractItemView::SingleSelection); QStringList headList; headList << "用户名" << "用户角色"; userTable_->setHorizontalHeaderLabels(headList); QVBoxLayout *layout = new QVBoxLayout(); layout->addWidget(toolBar_); layout->addWidget(userTable_); setLayout(layout); connect(addUserAct_, SIGNAL(triggered()), this, SLOT(AddUser())); connect(delUserAct_, SIGNAL(triggered()), this, SLOT(DelUser())); connect(editUserAct_, SIGNAL(triggered()), this, SLOT(EditUser())); DisplayUsers(); }
int procFunc(int p) { int message; if (CheckAuthority(p, inOperation)) switch(p) { case 0 : message = SignIn(); break; case 1 : message = Login(); break; case -2 : message = Finalization(); break; case 2 : message = Logout(); break; case -3 : message = SearchBookByKeyword();break; case 3 : message = BorBook(); break; case 4 : message = RetBook(); break; case -4 : message = ShowSpecificBook(); break; case 5 : message = ChangeNickName(); break; case 6 : message = ChangePassword(); break; case 7 : message = AddBook(); break; case 8 : message = DelBook(); break; case 9 : message = EditBook(); break; case 10 : message = DelUser(); break; case -10 : message = 0; break; case 11 : message = ChangeUserAuthority(); break; default : break; } return message; }
void qserver_cleanup(UNUSED_ARG(void *extra)) { unsigned int ii; ioset_close(qserver_listener, 1); for (ii = 0; ii < qserver_nbots; ++ii) if (qserver_clients[ii]) DelUser(qserver_clients[ii]->user, NULL, 0, "module finalizing"); dict_delete(qserver_dict); }
static void qserver_destroy_fd(struct io_fd *fd) { struct qserverClient *client; client = fd->data; assert(client->fd == fd); dict_remove(qserver_dict, client->user->nick); DelUser(client->user, NULL, 0, "client disconnected"); qserver_clients[client->id] = NULL; free(client); }
bool CTuopList::triggerSlot(WObject *sender, const WSlot_ *slot, void **args) { if (slot == slots_ + 0) { sender_ = sender; EditUserName(*((const std::string *)args[0])); return true; } if (slot == slots_ + 1) { sender_ = sender; OpenTuop(*((const std::string *)args[0])); return true; } if (slot == slots_ + 2) { sender_ = sender; SelAll(); return true; } if (slot == slots_ + 3) { sender_ = sender; SelNone(); return true; } if (slot == slots_ + 4) { sender_ = sender; SelInvert(); return true; } if (slot == slots_ + 5) { sender_ = sender; BeforeDelUser(); return true; } if (slot == slots_ + 6) { sender_ = sender; DelUser(); return true; } if (slot == slots_ + 7) { sender_ = sender; EditReturn(*((int *)args[0])); return true; } if (slot == slots_ + 8) { sender_ = sender; Translate(); return true; } if (slot == slots_ + 9) { sender_ = sender; ExChange(); return true; } if (slot == slots_ + 10) { sender_ = sender; Sort(); return true; } if (slot == slots_ + 11) { sender_ = sender; SortOk(); return true; } return WContainerWidget::triggerSlot(sender, slot, args); }
int UserManageInterface(char* command[2]){ FILE* uFile = NULL; int hasUserList = 0; char userid[255]; if (strcmp(command[0], "Reg") == 0 || strcmp(command[0], "Del") == 0){ uFile = fopen(Userdata, "r"); if (uFile == NULL){ sprintf(now_display.message, "%s is unknown.", Userdata); return 0; } else{ while (!feof(uFile)){ fscanf(uFile, "%s\n", userid); if (strcmp(userid, command[1]) == 0){ hasUserList = 1; break; } } } fclose(uFile); } if (strcmp(command[0], "Reg") == 0){ if (hasUserList == 1){ sprintf(now_display.message, "%s is already registered.\n", command[1]); RejectUser(); return 0; } AddUser(command[1]); } else if (strcmp(command[0], "Del") == 0){ if (hasUserList == 0){ sprintf(now_display.message, "%s is not exist in User database.\n", command[1]); RejectUser(); return 0; } DelUser(command[1]); } else if (strcmp(command[0], "Show") == 0 && strcmp(command[1], "UserList") == 0){ ShowUserList(); } else{ sprintf(now_display.message, "Wrong Command.Try Again.\n(ex.\"Admin Reg UserA\" or \"Admin Del UserA\""); } }
void Channel::DelUser(User* user) { MemberMap::iterator it = userlist.find(user); if (it != userlist.end()) DelUser(it); }
void *ClientHandler(void *arg) { struct Client *client = ((struct Client *)arg); struct ParsedMsg msg; struct ThreadChanList chan_list = { .size = 0, .head = NULL }; struct NamesList name_list = { .cnt = 0, .names = NULL }; struct ThreadChanNode *ptr; union RegistrationFlags registered; char raw_msg[IRC_MSG_MAX_LENGTH]; char send_msg[IRC_MSG_MAX_LENGTH]; char nick[IRC_NICK_BUF_SIZE]; ssize_t bytes = 0; int ret, index, connect = 1; pthread_setcancelstate(PTHREAD_CANCEL_ENABLE, NULL); pthread_setcanceltype(PTHREAD_CANCEL_ASYNCHRONOUS, NULL); registered.clear = 0; memset(&raw_msg, 0, IRC_MSG_MAX_LENGTH); memset(&send_msg, 0, IRC_MSG_MAX_LENGTH); memset(&nick, 0, IRC_NICK_BUF_SIZE); while (registered.flags.user == 0 || registered.flags.nick == 0) { if ((bytes = IRCMsgRead(client->sockfd, raw_msg)) < 0) { printf("disconnected\n"); registered.flags.fail = 1; break; } printf("raw: %s len %d\n", raw_msg, (int)strlen(raw_msg)); FormParsedMsg(raw_msg, &msg); if (msg.cmd == IRCCMD_QUIT) { registered.flags.fail = 1; break; } if (msg.cmd == IRCCMD_USER) { registered.flags.user = 1; } else if (msg.cmd == IRCCMD_NICK) { if (registered.flags.nick == 0) { if (msg.cnt == 0) { ErrorHandler(client->sockfd, "nickname parameter expected for a command and isn’t found", ERR_ERRONEUSNICKNAME); FreeParsedMsg(&msg); continue; } if (msg.params[0][0] == '#') { ErrorHandler(client->sockfd, "USER NICK: #nick invalid", ERR_ERRONEUSNICKNAME); FreeParsedMsg(&msg); continue; } ret = AddUser(&all_users, msg.params[0], client); if (ret == IRC_USERERR_EXIST) { ErrorHandler(client->sockfd, "NICK already exist", ERR_NICKNAMEINUSE); FreeParsedMsg(&msg); continue; } else if (ret == IRC_USERERR_NICK) { ErrorHandler(client->sockfd, "INCORRECT NICK", ERR_ERRONEUSNICKNAME); FreeParsedMsg(&msg); continue; } else if (ret == IRC_USERERR_CANTADD) { ErrorHandler(client->sockfd, "USER CANT ADD", IRC_USERERR_CANTADD); FreeParsedMsg(&msg); registered.flags.fail = 1; } else { ret = strlen(msg.params[0]); strncpy(nick, msg.params[0], ret); nick[ret] = '\0'; registered.flags.nick = 1; } } } FreeParsedMsg(&msg); } if (!registered.flags.fail) { printf("successfully registered user: %s\n", nick); registered.flags.connect = 1; SendConnectMsg(&all_users, "anonimus", nick); while (registered.flags.connect) { if ((bytes = IRCMsgRead(client->sockfd, raw_msg)) < 0) { printf("disconnected...\n"); break; } printf("raw: %s len %d\n", raw_msg, (int)strlen(raw_msg)); FormParsedMsg(raw_msg, &msg); switch (msg.cmd) { case IRCCMD_QUIT: registered.flags.connect = 0; if (chan_list.size > 0) { if (FormSendMsg(send_msg, raw_msg, nick) == 0) { for (ptr = chan_list.head; ptr != NULL; ptr = ptr->next) SendMsgToChannel(&all_chan, &all_users, ptr->chan, nick, send_msg); } } break; case IRCCMD_JOIN: if (msg.cnt == 0) { ErrorHandler(client->sockfd, "JOIN :Not enough parameters", ERR_NEEDMOREPARAMS); break; } if (AddUserToChannel(&all_chan, &all_users, msg.params[0], nick) == 0) { printf("add to channel %s\n", msg.params[0]); chan_list.head = ThrListAddFront(&chan_list, msg.params[0]); if (FormSendMsg(send_msg, raw_msg, nick) == 0) { SendMsgToUser(&all_users, nick, send_msg); SendMsgToChannel(&all_chan, &all_users, msg.params[0], nick, send_msg); pthread_mutex_lock(&client->send_lock); SendChannelList(client->sockfd, &all_chan, &all_users, msg.params[0], "anonimous", nick); pthread_mutex_unlock(&client->send_lock); } printf("TO SEND: %s\n", send_msg); } else { ErrorHandler(client->sockfd, "Cannot join channel", ERR_CHANNELISFULL); } break; case IRCCMD_PRIVMSG: if (msg.cnt == 2) { if (FormSendMsg(send_msg, raw_msg, nick) == 0) { printf("send %s \nto %s len %d\n", send_msg, msg.params[0], (int)strlen(send_msg)); if (msg.params[0][0] == '#') { if (SendMsgToChannel(&all_chan, &all_users, msg.params[0], nick, send_msg) < 0) perror("SendMsgToChannel failed"); } else { SendMsgToUser(&all_users, msg.params[0], send_msg); } } } else { ErrorHandler(client->sockfd, "PRIVMSG: Not enough parameters", ERR_NEEDMOREPARAMS); } break; case IRCCMD_PART: if (msg.cnt != 0) { RemoveUserFromChannel(&all_chan, &all_users, msg.params[0], nick); chan_list.head = DeleteThrNode(&chan_list, msg.params[0]); if (FormSendMsg(send_msg, raw_msg, nick) == 0) { printf("send %s \nto %s\n", send_msg, msg.params[0]); SendMsgToUser(&all_users, nick, send_msg); SendMsgToChannel(&all_chan, &all_users, msg.params[0], nick, send_msg); } } else { ErrorHandler(client->sockfd, "PART: Not enough parameters", ERR_NEEDMOREPARAMS); } break; case IRCCMD_NICK: if (msg.cnt == 0) { ErrorHandler(client->sockfd, "nickname parameter expected for a command and isn’t found", ERR_ERRONEUSNICKNAME); break; } if (msg.params[0][0] == '#') { ErrorHandler(client->sockfd, "USER NICK: #nick invalid", ERR_ERRONEUSNICKNAME); break; } printf("change nick: %s -> %s\n", nick, msg.params[0]); if ((ret = RenameUser(&all_users, nick, msg.params[0])) == 0) { ret = strlen(msg.params[0]); strncpy(nick, msg.params[0], ret); nick[ret] = '\0'; } else { if (ret == IRC_USERERR_NOTFOUND) { ErrorHandler(client->sockfd, "User not found", ERR_NICKNAMEINUSE); } else if (ret == IRC_USERERR_EXIST) { ErrorHandler(client->sockfd, "User exist", ERR_NICKNAMEINUSE); } perror("RenameUser"); } break; case IRCCMD_PING: if (msg.cnt == 1) { FormPongMsg(&all_users, raw_msg, nick); } else { ErrorHandler(client->sockfd, "PING: Not enough parameters", ERR_NEEDMOREPARAMS); } break; case IRCCMD_LIST: pthread_mutex_lock(&client->send_lock); SendAllChannelsList(client->sockfd, &all_chan, &all_users, "anonimous", nick); pthread_mutex_unlock(&client->send_lock); break; } FreeParsedMsg(&msg); } } if (chan_list.size > 0) { for (ptr = chan_list.head; ptr != NULL; ptr = ptr->next) RemoveUserFromChannel(&all_chan, &all_users, ptr->chan, nick); FreeThreadList(&chan_list); } close(client->sockfd); pthread_mutex_destroy(&client->send_lock); DelUser(&all_users, (const char *)&nick); free(client); printf("close... %s\n", nick); pthread_exit(NULL); } int main(int argc, char *argv[]) { struct sockaddr_in ser_addr, cl_addr; struct Client *client; int listen_sock, connect; socklen_t len = (socklen_t)sizeof(struct sockaddr_in); pthread_attr_t attr; const int kOpt = 1; if (argc != 3) { printf("format: IP_ADDR PORT\n"); exit(EXIT_FAILURE); } listen_sock = socket(AF_INET, SOCK_STREAM, 0); if (listen_sock < 0) { perror("socket"); exit(EXIT_FAILURE); } if (setsockopt(listen_sock, SOL_SOCKET, SO_REUSEADDR, &kOpt, sizeof(int)) == -1 ) { perror("setsockopt"); } memset(&ser_addr, 0, sizeof(struct sockaddr_in)); ser_addr.sin_family = AF_INET; ser_addr.sin_addr.s_addr = inet_addr(argv[1]); ser_addr.sin_port = htons(atoi(argv[2])); if (bind(listen_sock, (struct sockaddr *)&ser_addr, len) < 0) { perror("bind"); exit(EXIT_FAILURE); } if (listen(listen_sock, IRC_USERS_MAX) < 0) { perror("listen"); exit(EXIT_FAILURE); } UsersInit(&all_users); ChannelsInit(&all_chan); pthread_attr_init(&attr); pthread_attr_setdetachstate(&attr, PTHREAD_CREATE_DETACHED); while (1) { if ((connect = accept(listen_sock, (struct sockaddr *)&cl_addr, &len)) > 0) { client = (struct Client *)malloc(sizeof(struct Client)); if (client == NULL) { perror("malloc"); break; } client->sockfd = connect; pthread_mutex_init(&client->send_lock, NULL); if (pthread_create(&(client->pid), &attr, ClientHandler, (void *)client) > 0) { perror("pthread_create"); } } else { perror("accept"); break; } } pthread_attr_destroy(&attr); pthread_mutex_destroy(&all_users.lock); pthread_mutex_destroy(&all_chan.lock); close(listen_sock); return 0; }
void CTuopList::ShowMainTable() { //strNullList = "空的列表"; m_pMainTable = new WSVMainTable(this,strMainTitle,false); //if(m_pMainTable->pHelpImg) //{ // connect(m_pMainTable->pHelpImg,SIGNAL(click()),this,SLOT(ShowHelp())); //} //拓扑列表界面 m_pTopologyListTable = new WSVFlexTable(m_pMainTable->GetContentTable()->elementAt(0,0),List, strTitle); if (m_pTopologyListTable->GetContentTable() != NULL) { m_pTopologyListTable->AppendColumn("",WLength(40,WLength::Pixel)); m_pTopologyListTable->SetDataRowStyle("table_data_grid_item_text"); m_pTopologyListTable->AppendColumn(strLoginLabel,WLength(70,WLength::Percentage)); m_pTopologyListTable->SetDataRowStyle("table_data_grid_item_text"); m_pTopologyListTable->AppendColumn(strNameUse,WLength(10,WLength::Percentage)); m_pTopologyListTable->SetDataRowStyle("table_data_grid_item_text"); m_pTopologyListTable->AppendColumn(strNameEdit,WLength(10,WLength::Percentage)); m_pTopologyListTable->SetDataRowStyle("table_data_grid_item_text"); } if (m_pTopologyListTable->GetActionTable() != NULL) { m_pTopologyListTable->AddStandardSelLink(strAllSel ,strAllNotSel,strFanSel); connect(m_pTopologyListTable->pSelAll, SIGNAL(clicked()), this, SLOT(SelAll())); connect(m_pTopologyListTable->pSelNone, SIGNAL(clicked()), this, SLOT(SelNone())); connect(m_pTopologyListTable->pSelReverse, SIGNAL(clicked()), this, SLOT(SelInvert())); WTable *pTbl; m_pTopologyListTable->GetActionTable()->elementAt(0,1)->setContentAlignment(AlignCenter); m_pTopologyListTable->GetActionTable()->elementAt(0,1)->setStyleClass("textbold"); pTbl = new WTable(m_pTopologyListTable->GetActionTable()->elementAt(0,1)); pTbl->setStyleClass("widthauto"); WSVButton * pDel = new WSVButton(pTbl->elementAt(0,1),strDelete, "button_bg_del.png", "", false); if (pDel) { connect(pDel, SIGNAL(clicked()), this, SLOT(BeforeDelUser())); } //新增 //WSVButton * pSort = new WSVButton(pTbl->elementAt(0,2), "排序", "button_bg_taxis.png", "", false); WSVButton * pSort = new WSVButton(pTbl->elementAt(0,2), strSort, "button_bg_taxis.png", "", false); if (pSort) { connect(pSort, SIGNAL(clicked()), this, SLOT(Sort())); } //WTable *pTbl2; m_pTopologyListTable->GetActionTable()->elementAt(0, 2)->setContentAlignment(AlignRight); strcpy(m_pTopologyListTable->GetActionTable()->elementAt(0, 2)->contextmenu_, "nowrap"); //Tuopu 发布插件下载 string strTuopPluginJs = "window.open('../TuopoClient.exe','newwindow')"; string szLink = "<a href='#'>" + szTuopDown + "</a> "; WText * pTuopPlugin = new WText(szLink, (WContainerWidget *)m_pTopologyListTable->GetActionTable()->elementAt(0, 2)); connect(pTuopPlugin, SIGNAL(clicked()),strTuopPluginJs.c_str() ,WObject::JAVASCRIPT); } m_pTopologyListTable->SetNullTipInfo(strNullList); //拓扑排序列表界面 //pSortTable = new WSVFlexTable(m_pMainTable->GetContentTable()->elementAt(1,0), List, "拓扑排序列表"); pSortTable = new WSVFlexTable(m_pMainTable->GetContentTable()->elementAt(1,0), List, strTuoPuSortList); if (pSortTable->GetContentTable() != NULL) { pSortTable->AppendColumn("",WLength(40,WLength::Pixel)); pSortTable->SetDataRowStyle("table_data_grid_item_text"); //pSortTable->AppendColumn("名称",WLength(50,WLength::Percentage)); pSortTable->AppendColumn(strName,WLength(50,WLength::Percentage)); pSortTable->SetDataRowStyle("table_data_grid_item_text"); //pSortTable->AppendColumn("序号",WLength(50,WLength::Percentage)); pSortTable->AppendColumn(strSequenceNo,WLength(50,WLength::Percentage)); pSortTable->SetDataRowStyle("table_data_grid_item_text"); } if (pSortTable->GetActionTable() != NULL) { WTable *pTbl1; pSortTable->GetActionTable()->elementAt(0,1)->setContentAlignment(AlignCenter); pSortTable->GetActionTable()->elementAt(0,1)->setStyleClass("textbold"); pTbl1 = new WTable(pSortTable->GetActionTable()->elementAt(0,1)); pTbl1->setStyleClass("widthauto"); //WSVButton * pSortOkBtn = new WSVButton(pTbl1->elementAt(0, 1), "确 定", "button_bg_m.png", "", false); WSVButton * pSortOkBtn = new WSVButton(pTbl1->elementAt(0, 1), strAffirm, "button_bg_m.png", "", false); if(pSortOkBtn) { connect(pSortOkBtn,SIGNAL(clicked()),this,SLOT(SortOk())); } } //编辑事件 std::string strIndex; std::list<string> m_pList; std::list<string>::iterator m_pItem; #ifdef Tuopu m_pList = ReadFileName(GetSiteViewRootPath() + "\\htdocs\\tuoplist"); #else m_pList = ReadFileName(GetSiteViewRootPath() + "\\htdocs\\maintainlist"); #endif std::list<string> m_pVList; std::list<string>::iterator m_pVItem; #ifdef Tuopu m_pVList = ReadVSDName(GetSiteViewRootPath() + "\\htdocs\\tuoplist"); #else m_pVList = ReadVSDName(GetSiteViewRootPath() + "\\htdocs\\maintainlist"); #endif m_pVItem = m_pVList.begin(); for(m_pItem = m_pList.begin(); m_pItem != m_pList.end(); m_pItem++) { std::string strUserName = *m_pItem; std::string strVSD = *m_pVItem; OneRecord list; list.strUserName = strUserName; //vsd文件始终不会更改, 所以用它来制造key list.strBackName = ReplaceStdString(strVSD, ".vsd", ".htm"); list.strTuop = strVSD; //读取tuopfile.ini的sort信息并赋值给OneRecord变量。: //如果没有预先设置的sort信息则按什么规则自动赋值? ---》先是读预先设置的序号, 为默认值 则不存在 意味着是新发布的 //---》规则(读一遍ini, 找到序号最大值, 加1 并写到tuopfile.ini文件中) int nSort = GetIniFileInt("sort", strVSD, -1, "tuopfile.ini"); if(nSort != -1) { list.nSort = nSort; } else { //获取序号最大值, 加1 list.nSort = GetMaxSortId() + 1; //写序号值到ini #ifdef Tuopu WriteIniFileInt("sort", strVSD, list.nSort, "tuopfile.ini"); #else WriteIniFileInt("sort", strVSD, list.nSort, "maintainfile.ini"); #endif } RecordList.push_back(list); m_pVItem++; } //绑定编辑事件 connect(&m_userMapper, SIGNAL(mapped(const std::string)), this, SLOT(EditUserName(const std::string))); //显示列表 int i = 1; std::string strOpen; for(m_pRecordList=RecordList.begin(); m_pRecordList != RecordList.end(); m_pRecordList ++) { m_pTopologyListTable->InitRow(i); pSortTable->InitRow(i); i++; } i = 1; for(m_pRecordList=RecordList.begin(); m_pRecordList != RecordList.end(); m_pRecordList ++) { //列表数据界面初始化 m_pTopologyListTable->GeDataTable()->elementAt(m_pRecordList->nSort, 0)->setContentAlignment(AlignCenter); m_pRecordList->pCheckBox = new WCheckBox("", (WContainerWidget*)m_pTopologyListTable->GeDataTable()->elementAt(m_pRecordList->nSort, 0)); strOpen = "<a href=./showtuopu.exe?pageid="; strOpen += ReplaceStdString(m_pRecordList->strBackName, ".htm", ""); #ifdef Tuopu strOpen += "&version=0"; #else strOpen += "&version=0&usrleader=0&maintain=1"; #endif strOpen += " target=_blank>"; strOpen += m_pRecordList->strUserName; strOpen += "</a>"; m_pTopologyListTable->GeDataTable()->elementAt(m_pRecordList->nSort, 2)->setContentAlignment(AlignCenter); m_pRecordList->pstrUserName = new WText(strOpen, (WContainerWidget*)m_pTopologyListTable->GeDataTable()->elementAt(m_pRecordList->nSort, 2)); m_pRecordList->pLineEdit = new WLineEdit(m_pRecordList->strUserName,m_pTopologyListTable->GeDataTable()->elementAt(m_pRecordList->nSort, 2)); m_pRecordList->pLineEdit->hide(); m_pTopologyListTable->GeDataTable()->elementAt(m_pRecordList->nSort, 4)->setContentAlignment(AlignCenter); m_pRecordList->pTuop = new WImage("../Images/resource.gif",m_pTopologyListTable->GeDataTable()->elementAt(m_pRecordList->nSort, 4)); m_pRecordList->pTuop->setToolTip(strTuopTip); m_pRecordList->pTuop->setStyleClass("hand"); //绑定visio事件 std::string strJavascript; #ifdef Tuopu strJavascript = "window.open('../tuoplist/" + m_pRecordList->strTuop + "','newwindow')"; #else strJavascript = "window.open('../maintainlist/" + m_pRecordList->strTuop + "','newwindow')"; #endif connect(m_pRecordList->pTuop, SIGNAL(clicked()),strJavascript.c_str() ,WObject::JAVASCRIPT ); m_pTopologyListTable->GeDataTable()->elementAt(m_pRecordList->nSort, 6)->setContentAlignment(AlignCenter); m_pRecordList->pEdit = new WImage("/Images/edit.gif",m_pTopologyListTable->GeDataTable()->elementAt(m_pRecordList->nSort, 6)); m_pRecordList->pEdit->setToolTip(strEditTip); m_pRecordList->pEdit->setStyleClass("hand"); strIndex=m_pRecordList->strUserName.c_str(); m_userMapper.setMapping(m_pRecordList->pEdit, strIndex); connect(m_pRecordList->pEdit, SIGNAL(clicked()), &m_userMapper, SLOT(map())); connect(m_pRecordList->pLineEdit, SIGNAL(keyWentDown(int)), this, SLOT(EditReturn(int))); i++; //排序数据界面初始化 pSortTable->GeDataTable()->elementAt(m_pRecordList->nSort, 2)->setContentAlignment(AlignCenter); WText * pTmpText = new WText(m_pRecordList->strUserName, pSortTable->GeDataTable()->elementAt(m_pRecordList->nSort, 2)); char chItem[32] = {0}; sprintf(chItem, "%d", m_pRecordList->nSort); string strSort = chItem; pSortTable->GeDataTable()->elementAt(m_pRecordList->nSort, 4)->setContentAlignment(AlignCenter); WLineEdit * pTmpEdit = new WLineEdit(strSort, pSortTable->GeDataTable()->elementAt(m_pRecordList->nSort, 4)); //放到sv_table里去 SVTableCell ce; ce.setType(adText); ce.setValue(pTmpText); m_svSortList.WriteCell(m_pRecordList->strTuop, 0, ce); ce.setType(adLineEdit); ce.setValue(pTmpEdit); m_svSortList.WriteCell(m_pRecordList->strTuop, 1, ce); } m_pList.clear(); m_pVList.clear(); //列表为空 if(RecordList.size() <= 0) { m_pTopologyListTable->ShowNullTip(); } else { m_pTopologyListTable->HideNullTip(); } pSortTable->hide(); //隐藏按钮 pHideBtn = new WPushButton("hide button",this); if(pHideBtn) { pHideBtn->setToolTip("Hide Button"); connect(pHideBtn,SIGNAL(clicked()),this,SLOT(DelUser())); pHideBtn->hide(); } pTranslateBtn = new WPushButton("Translate",this); pExChangeBtn = new WPushButton("Refresh",this); //翻译 int bTrans = GetIniFileInt("translate", "translate", 0, "general.ini"); if(bTrans == 1) { this->pTranslateBtn->show(); connect(this->pTranslateBtn, SIGNAL(clicked()), this, SLOT(Translate())); this->pExChangeBtn->show(); connect(this->pExChangeBtn, SIGNAL(clicked()), this, SLOT(ExChange())); } else { this->pTranslateBtn->hide(); this->pExChangeBtn->hide(); } }
virtual void OnModCommand(const CString& sLine) { CString sCommand = sLine.Token(0).AsUpper(); if (sCommand.Equals("HELP")) { PutModule("Commands are: ListUsers, AddChans, DelChans, AddUser, DelUser"); } else if (sCommand.Equals("TIMERS")) { ListTimers(); } else if (sCommand.Equals("ADDUSER") || sCommand.Equals("DELUSER")) { CString sUser = sLine.Token(1); CString sHost = sLine.Token(2); CString sKey = sLine.Token(3); if (sCommand.Equals("ADDUSER")) { if (sHost.empty()) { PutModule("Usage: " + sCommand + " <user> <hostmask> <key> [channels]"); } else { CAutoOpUser* pUser = AddUser(sUser, sKey, sHost, sLine.Token(4, true)); if (pUser) { SetNV(sUser, pUser->ToString()); } } } else { DelUser(sUser); DelNV(sUser); } } else if (sCommand.Equals("LISTUSERS")) { if (m_msUsers.empty()) { PutModule("There are no users defined"); return; } CTable Table; Table.AddColumn("User"); Table.AddColumn("Hostmask"); Table.AddColumn("Key"); Table.AddColumn("Channels"); for (map<CString, CAutoOpUser*>::iterator it = m_msUsers.begin(); it != m_msUsers.end(); it++) { Table.AddRow(); Table.SetCell("User", it->second->GetUsername()); Table.SetCell("Hostmask", it->second->GetHostmask()); Table.SetCell("Key", it->second->GetUserKey()); Table.SetCell("Channels", it->second->GetChannels()); } PutModule(Table); } else if (sCommand.Equals("ADDCHANS") || sCommand.Equals("DELCHANS")) { CString sUser = sLine.Token(1); CString sChans = sLine.Token(2, true); if (sChans.empty()) { PutModule("Usage: " + sCommand + " <user> <channel> [channel] ..."); return; } CAutoOpUser* pUser = FindUser(sUser); if (!pUser) { PutModule("No such user"); return; } if (sCommand.Equals("ADDCHANS")) { pUser->AddChans(sChans); PutModule("Channel(s) added to user [" + pUser->GetUsername() + "]"); } else { pUser->DelChans(sChans); PutModule("Channel(s) Removed from user [" + pUser->GetUsername() + "]"); } SetNV(pUser->GetUsername(), pUser->ToString()); } else { PutModule("Unknown command, try HELP"); } }
void Channel::DelUser(User* user) { UserMembIter it = userlist.find(user); if (it != userlist.end()) DelUser(it); }
uint8_t RecvCommand() { uint8_t Cmd; char Username[32]; uint8_t TargetUser = MAX_USERS+1; uint8_t DeviceType; uint16_t DeviceId; uint16_t AlarmId; uint8_t NewDevice; uint8_t UserId; // Read in the one-byte command if (!ReadBytes((unsigned char *)&Cmd, 1)) { return(0); } switch (Cmd) { case CMD_POWER_OFF: SendResp(RESP_SUCCESS, NULL); return(0); break; case CMD_ADD_USER: if (!AddUser()) { SendResp(RESP_ADD_USER_FAILED, NULL); return(1); } SendResp(RESP_SUCCESS, NULL); break; case CMD_DEL_USER: if (!DelUser()) { SendResp(RESP_DEL_USER_FAILED, NULL); return(1); } SendResp(RESP_SUCCESS, NULL); break; case CMD_ADD_DEVICE: // Read in the device type if (!ReadBytes((unsigned char *)&DeviceType, 1)) { return(0); } // Find the next available device slot if ((NewDevice = FindAvailableDevice()) >= MAX_DEVICES) { SendResp(RESP_INVALID_CMD, NULL); return(0); } switch (DeviceType) { case DEVICE_KEYPAD: if (!(DeviceId = NewGenericDevice(DeviceType, NewDevice))) { SendResp(RESP_ADD_DEVICE_FAILED, NULL); return(0); } break; case DEVICE_SWIPE: if (!(DeviceId = NewGenericDevice(DeviceType, NewDevice))) { SendResp(RESP_ADD_DEVICE_FAILED, NULL); return(0); } break; case DEVICE_CONTACT: if (!(DeviceId = NewContact(NewDevice))) { SendResp(RESP_ADD_DEVICE_FAILED, NULL); return(0); } break; case DEVICE_MOTION: if (!(DeviceId = NewMotion(NewDevice))) { SendResp(RESP_ADD_DEVICE_FAILED, NULL); return(0); } break; case DEVICE_HEAT: if (!(DeviceId = NewHeat(NewDevice))) { SendResp(RESP_ADD_DEVICE_FAILED, NULL); return(0); } break; case DEVICE_SMOKE: if (!(DeviceId = NewSmoke(NewDevice))) { SendResp(RESP_ADD_DEVICE_FAILED, NULL); return(0); } break; case DEVICE_ALARM: if (!(DeviceId = NewGenericDevice(DeviceType, NewDevice))) { SendResp(RESP_ADD_DEVICE_FAILED, NULL); return(1); } break; default: SendResp(RESP_ADD_DEVICE_FAILED, NULL); break; } // Send success along with the generated DeviceId SendResp(RESP_SUCCESS, (unsigned char *)&DeviceId); break; case CMD_DEL_DEVICE: // Read in the device id if (!ReadBytes((unsigned char *)&DeviceId, 2)) { return(0); } if (!DeleteDevice(DeviceId)) { SendResp(RESP_DEL_DEVICE_FAILED, NULL); return(1); } SendResp(RESP_SUCCESS, NULL); break; case CMD_GRANT_ACCESS: // Read in the device id if (!ReadBytes((unsigned char *)&DeviceId, 2)) { return(0); } // Read in the user id if (!ReadBytes((unsigned char *)&UserId, 1)) { return(0); } if (!GrantAccess(DeviceId, UserId)) { SendResp(RESP_GRANT_FAILED, NULL); return(1); } SendResp(RESP_SUCCESS, NULL); break; case CMD_UPDATE_DEVICE: // Read in the device id if (!ReadBytes((unsigned char *)&DeviceId, 2)) { return(0); } if (!UpdateDevice(DeviceId)) { SendResp(RESP_UPDATE_DEVICE_FAILED, NULL); return(1); } SendResp(RESP_SUCCESS, NULL); break; case CMD_ADD_DEVICE_TO_ALARM: // Read in the device id if (!ReadBytes((unsigned char *)&DeviceId, 2)) { return(0); } // Read in the alarm id if (!ReadBytes((unsigned char *)&AlarmId, 2)) { return(0); } if (!AddDeviceToAlarm(DeviceId, AlarmId)) { SendResp(RESP_ADD_DEVICE_TO_ALARM_FAILED, NULL); return(0); } SendResp(RESP_SUCCESS, NULL); break; case CMD_LIST_ALARM_CODES: // Read in the device id if (!ReadBytes((unsigned char *)&DeviceId, 2)) { return(0); } if (!ListValidAlarmCodes(DeviceId)) { SendResp(RESP_INVALID_CMD, NULL); return(0); } break; default: SendResp(RESP_INVALID_CMD, NULL); return(1); break; } return(1); }