示例#1
0
outData *
register_1_svc(inData *argp, struct svc_req *rqstp)
{
	static outData  result;
	FILE *fp = fopen("./database.db","r");
	if(fp == NULL){
		inData arg;
		strcpy(arg.user, "admin");
		strcpy(arg.pass, "admin");
		addUser(&arg);
	}

	if(!isRegisteredUsername(argp))
	{	
		addUser(argp);
		result.rCode = 1;
		strcpy(result.rString, "Registration successful\n");
	}
	else {
		result.rCode = 0;
		strcpy(result.rString, "Username already exists. Try a different one\n");
	}

	return &result;
}
示例#2
0
void HttpUserUtil::loadUsers()
{
	QSettings settings(HTTP_USER_STORE, QSettings::IniFormat);
	
	int numUsers = settings.beginReadArray("users");
	
	m_users.clear();
	m_userLookup.clear();
		
	for(int i=0; i<numUsers; i++)
	{
		settings.setArrayIndex(i);
		
		HttpUser *user = new HttpUser();
		user->setUser(settings.value("user").toString());
		user->setPass(settings.value("pass").toString());
		user->setLevel((HttpUser::UserLevel)settings.value("level").toInt());
		addUser(user);
	}
	
	settings.endArray();
	
	if(numUsers <= 0)
	{
		addUser(new HttpUser("admin","admin",HttpUser::Admin));
	}
}
示例#3
0
文件: Epoll.cpp 项目: minamotoshi/web
void Epoll::actionEnter(Client *me, Json::Value &obj) {
	int uid = obj["uid"].asInt();
	std::map<int, Client*>::iterator exists_user;
	exists_user = _users.find(uid);
	if (exists_user != _users.end() && exists_user->second != me) {
		std::cout << "uid:" << uid << " exists, take it out!\n";
		takeoutClient(exists_user->second);
	} 
	me->setName(obj["data"].asString());
	me->setUID(uid);
	
	addUser(me);
	std::cout << me->getName() << "上线!" << std::endl;
	Json::Value user;
	user["uid"]  = uid;
	user["id"] = me->getFileDescripto();
	user["name"] = me->getName();
	
	Json::Value data;
	data["user"] = user;
	data["list"] = getJsonClientList();
	
	Json::Value oops;
	oops["code"] = Message::sEnter;
	oops["data"] = data;
	sendToAll(oops.toStyledString());
}
示例#4
0
void LayerAclMenu::rowsInserted(const QModelIndex &parent, int start, int end)
{
	Q_UNUSED(parent);
	Q_ASSERT(start == _users.count()); // new users are always added to the end of the list
	for(;start<=end;++start)
		addUser(start);
}
示例#5
0
User MainDataBase::getUser(QString name)
{
    if (db.isOpen())
    {
        QSqlQuery query;


        QString strQuery = QString("SELECT * FROM ScrabbleDataBase WHERE name ='%1'").arg(name);
        bool result = query.exec(strQuery);
        QSqlRecord record = query.record();

        assert(result);

        while (query.next())
        {
            int loseCount = query.value(record.indexOf("loseCount")).toInt();
            int winCount = query.value(record.indexOf("winCount")).toInt();
            int usersCS = query.value(record.indexOf("usersCurrentScore")).toInt();
            int botsCS = query.value(record.indexOf("botsCurrentScore")).toInt();
            QString board = query.value(record.indexOf("currentBoard")).toString();
            string sBoard = "";
            for (int i = 0; i < (int)board.size(); ++i)
                sBoard += board[i].toLatin1();
            return User(name, loseCount, winCount, sBoard, usersCS, botsCS);
        }
        addUser(name);
        return getUser(name);
    }    
}
char db_createUser( const char *username, const char *password )
{
	int userId, userLen, passLen;	
	User_t *user;
   	unsigned char hashpass[ SHA256_LEN ];
		
	userId = 0;
	userLen = strlen( username );
	passLen = strlen( password );
	memset( hashpass, 0, sizeof( hashpass ) );

	if( userLen < 1 || userLen > USER_MAX || passLen < 1 || passLen > SHA256_LEN )
		return DB_ERR_CREATE_LENGTH;
	
	if( userExists( username ) )
		return DB_ERR_CREATE_EXISTS;

	db_hashPass( password, hashpass );

	userId = getNextID();
	user = malloc( sizeof( User_t ) );
	memset( user, 0, sizeof( User_t ) );
	user->userId = userId;
	memcpy( user->username, username, strlen( username ) );
	memcpy( user->userpass, hashpass, SHA256_LEN );
	user->flags = 0;
	addUser( user );
	free( user );
		
	return DB_CREATE;
}
示例#7
0
void Gui_Admin::openAddUser(){
    addUserPage = new QDialog();
    addUserPage->setWindowTitle("Add a new User");
    _username = new QLineEdit();
    _username->setPlaceholderText("Username");
    _password = new QLineEdit();
    _password->setPlaceholderText("Password");
    _password->setEchoMode(QLineEdit::Password);
    _name = new QLineEdit();
    _name->setPlaceholderText("Name");
    _surname = new QLineEdit();
    _surname->setPlaceholderText("Surname");
    _type = new QComboBox();
    _type->addItem("Basic User");
    _type->addItem("Business User");
    _type->addItem("Executive User");
    QPushButton* addB = new QPushButton("Add");
    connect(addB, SIGNAL(clicked()), this, SLOT(addUser()));
    QVBoxLayout* regLayout = new QVBoxLayout();
    regLayout->addWidget(_username, 0, Qt::AlignCenter);
    regLayout->addWidget(_password, 0, Qt::AlignCenter);
    regLayout->addWidget(_name    , 0, Qt::AlignCenter);
    regLayout->addWidget(_surname , 0, Qt::AlignCenter);
    regLayout->addWidget(_type    , 0, Qt::AlignCenter);
    regLayout->addWidget(addB     , 0, Qt::AlignCenter);
    addUserPage->setLayout(regLayout);
    addUserPage->show();
}
示例#8
0
void *clnt_connection(void *arg) {
    int clnt_sock = (int) arg;
    int str_len = 0;
    char message[BUFSIZE];
    int i;

    while ((str_len = read(clnt_sock, message, sizeof(message))) != 0) {
        if (message[0] == '@' && message[1] == '@' && message[2] == 'j' && message[3] == 'o' && message[4] == 'i' && message[5] == 'n') {
            addUser(clnt_sock, message);
        } else if (message[0] == '@' && message[1] == '@' && message[2] == 'm' && message[3] == 'e' && message[4] == 'm' && message[5] == 'b' && message[6] == 'e' && message[7] == 'r') {
            showUserInfo(clnt_sock);
        } else if(message[0] == '@' && message[1] == '@' && message[2] == 't' && message[3] == 'a' && message[4] == 'l' && message[5] == 'k') {
            whisper(message);
        } else {
            send_message(message, str_len);
        }

        memset(message, 0, sizeof(char) * BUFSIZE);
    }

    pthread_mutex_lock(&mutx);
    for (i = 0; i < clnt_number; i++) {   /* 클라이언트 연결 종료 시 */
        if (clnt_sock == clnt_socks[i]) {
            for (; i < clnt_number - 1; i++)
                clnt_socks[i] = clnt_socks[i + 1];
            break;
        }
    }
    clnt_number--;
    pthread_mutex_unlock(&mutx);

    close(clnt_sock);
    return 0;
}
示例#9
0
void AlbumInfoWidget::bindUser(const QVariantMap &user, int code)
{
    //qDebug() << __FILE__ << __LINE__ << user;

    if (INVALID_TELNO == code)
    {
        QMessageBox::information(this, tr("查找失败"), tr("输入的电话号码格式有误,请重新输入!"), tr("确定"));
        ui->telnoLineEdit->setFocus();
    }
    else if (SERVER_REPLY_SUCCESS == code)
    {
        // 添加现有的用户
        UserInfoDialog dlg(true, user["telephone"].toString(), user["realname"].toString(), (uchar)user["male"].toUInt());
        if (QDialog::Accepted == dlg.exec())
        {
            if (dlg.hasReset())
            {
                m_container->addUser(ui->telnoLineEdit->text(), dlg.getName(), dlg.getSex());
            }
            else
            {
                addUser(user);
            }
        }
    }
    else if (NO_RESULT == code)
    {
        // 添加一个新的用户
        UserInfoDialog dlg(false, ui->telnoLineEdit->text());
        if (QDialog::Accepted == dlg.exec())
        {
            m_container->addUser(ui->telnoLineEdit->text(), dlg.getName(), dlg.getSex());
        }
    }
}
int main(int argc, char *argv[])
{
        // usage: ./updateGradersDatabase remote_user [add|remove] userid
        if (argc != 4) {
                return -1;
        }

        char *remote_user = argv[1];
        char *operation = argv[2];
        char *userid = argv[3];

        const char* env_remote_user = getenv("REMOTE_USER");
        if (strcmp(remote_user,env_remote_user) != 0){
                // not the right user
                printf("incorrect user\n");
                return -1;
        }

        // sanity check so we don't remove "graders:"
        if (strcmp("graders:",userid) == 0) {
                return -1;
        }

        if (strcmp("add",operation) == 0) {
                return addUser(userid);
        }
        else if (strcmp("remove",operation) == 0) {
                return removeUser(userid);
        }
}
示例#11
0
void Network::read(string file) {
    ifstream ifile(file.c_str(), ifstream::in);
    if(!ifile.good()) {
        cout<<"Error reading "<<file<<endl;
        exit(1);
    }//Print error message for bad files
    int n;
    ifile>>n;
    string name;
    string firstName, lastName;
    int id, year, zip;
    while(ifile.get() != '\n');
    for(int i= 0; i<n; i++) {
        ifile>>id;
        while(ifile.get() != '\n');
        ifile>>firstName>>lastName;
        name= firstName+" "+lastName;
        while(ifile.get() != '\n');
        ifile>>year;
        while(ifile.get() != '\n');
        ifile>>zip;
        while(ifile.get() != '\n');
        addUser(name, year, zip);
        while(ifile.peek() != '\n'){
            ifile>>id;
            users[i].add_friend(id);
        }
        while(ifile.get() != '\n');
    }//Parse file
}
示例#12
0
int loadUsers(const char *path, pDatabase db)
{
    int f;
    int TotalUsers=0;
    char UserName[MAXLOGIN];
    char UserPassword[MAXLOGIN];
    
    if (!db) return 1;
    
    /*Abrir para leitura*/
    f = open(path, O_RDONLY,(S_IRUSR | S_IXOTH));
    if (f == -1)
    {
        printf("(loadUsers)Erro: não foi possível abrir %s\n",path);
        return 1;
    }
    
    read(f,&TotalUsers,sizeof(int));
    /*Percorrer o número de Users*/
    while (TotalUsers)
    {
        /*Ler o Nome Utilizador*/
        read(f,UserName,sizeof(UserName));
        /*Ler password*/
        read(f,UserPassword,sizeof(UserPassword));
        /*Criar nova User na estrutura*/
        addUser(db,UserName, UserPassword);
        TotalUsers--;
    }
    
    /*Fechar o ficheiro*/
    close(f);
    return 0;
}
示例#13
0
// 有新用户上线
void UserManager::newUserMsg(Message msg)
{
    qDebug() << "[UserManager]new user online:message from message server "
             << "Name:" << msg->owner().name()
             << "IP:" <<  msg->ipAddress()
             << "Port:" << msg->port()
             << "Group:" << msg->owner().group();
    // 添加一个偏好设置过滤器选项.
    // 查找当前组是否含有该用户
    // 有该用户而往前放入该组内
    if (!msg->owner().group().isEmpty() && !Macai::preferences->groupNameList.contains(msg->owner().group()))
    {
        Macai::preferences->groupNameList.prepend(msg->owner().group());
    }
    if (contains(msg->ip()))
    {
        qDebug() << "exsits user:" << msg->ip();
        //updateUser(msg->owner(), ipToRow(msg->ip()));
    }
    else
    {
        addUser(msg->owner(), m_group->groupItem());
//        emit userCountUpdated(m_model->rowCount());
    }
}
示例#14
0
newUserDialog::newUserDialog(DDataStore* db_ptr, string& name_, string& password_){
	db = db_ptr;
	name=name_;
	password=password_;
	overallLayout=new QHBoxLayout();
	enterLayout=new QVBoxLayout();
	buttonLayout=new QVBoxLayout();
	
	ageLabel=new QLabel("Enter age:");
	ageEdit=new QLineEdit();
	creditLabel=new QLabel("Enter credit:");
	creditEdit=new QLineEdit();
	
	enterLayout->addWidget(ageLabel);
	enterLayout->addWidget(ageEdit);
	enterLayout->addWidget(creditLabel);
	enterLayout->addWidget(creditEdit);
	addButton=new QPushButton("Add User");
	connect(addButton, SIGNAL(clicked()), this, SLOT(addUser()));
	quitButton=new QPushButton("Cancel");
	connect(quitButton, SIGNAL(clicked()), this, SLOT(cancel()));
	emptyError=new QMessageBox();
	emptyError->setText("One or more fields are empty.");
	numError=new QMessageBox();
	numError->setText("Error, did not enter number values for either age or credit");
	
	buttonLayout->addWidget(addButton);
	buttonLayout->addWidget(quitButton);
	overallLayout->addLayout(enterLayout);
	overallLayout->addLayout(buttonLayout);
	setLayout(overallLayout);


}
示例#15
0
void ChatRoom::inviteUser(User* user, int invID) {
	CRITICAL_SECTION critical; 
	InitializeCriticalSection(&critical);
	if(user != NULL) {
		newUsers = 1;
		EnterCriticalSection(&critical);
		char* temp = intToChar(user->getUserId());
		LeaveCriticalSection(&critical);
		int n = strlen(temp);
		char* buffer = new char[n + 1];
		strcpy(buffer, temp);
		buffer[n] = ' ';
		buffer[n + 1] = '\0';
		Message m(4, invID, id, 1, buffer);
		for(map<int, User*>::iterator it = users.begin(); it != users.end(); ++it) {
			EnterCriticalSection(&critical);
			if((*it).first != user->getUserId()) {
				m.sendTo((*it).second->getSocket());
			}
			LeaveCriticalSection(&critical);
		}
		EnterCriticalSection(&critical);
		addUser(user);
		user->assigneToRoom(this);
		LeaveCriticalSection(&critical);
	}
}
示例#16
0
outData *
login_1_svc(inData *argp, struct svc_req *rqstp)
{
	static outData  result;
	// Create DB, if not present
	FILE *fp = fopen("./database.db","r");
	if(fp == NULL){
		inData arg;
		strcpy(arg.user, "admin");
		strcpy(arg.pass, "admin");
		addUser(&arg);
	}

	if((strcmp("admin", argp->user)) == 0 && (strcmp("admin", argp->pass)) == 0) {
		int count = getUserCount();
		result.rCode = 1;
		sprintf(result.rString, "Welcome admin! Number of registered users are %d\n", count);
	}
	else {
		if(isValidUser(argp)) {	
			result.rCode = 1;
			sprintf(result.rString, "Welcome %s!\n", argp->user);
		}
		else {
			result.rCode = 0;
			sprintf(result.rString, "Unable to login. Please check the credentials.\n", argp->user);
		}
	}
	return &result;
}
示例#17
0
/**
 * @brief Make a fake mass client
 */
char *
make_clone()
{
	static char rand_nick[NICKLEN + 1];
	char rand_user[USERLEN + 1];
	char host[HOSTLEN + 1], blip1[6], blip2[5];
	char rand_ircname[50];
	int fails = 0;

	(void)ranstring(rand_nick, NICKLEN - 1, 0);
	(void)ranstring(rand_user, USERLEN - 1, 2);
	(void)ranstring(rand_ircname, sizeof(rand_ircname) - 1, 1);
	(void)ranstring(blip1, sizeof(blip1) - 1, 0);
	(void)ranstring(blip2, sizeof(blip2) - 1, 1);

	snprintf(host, sizeof(host), "services-%lx.%s-sorcery-massdetect.net",
		 (time(0)/30)%1000, blip1);


	if (getNickData(rand_nick) || getRegNickData(rand_nick)) {
		while ((getNickData(rand_nick) || getRegNickData(rand_nick)) && fails < 50) {
			(void)ranstring(rand_nick, NICKLEN - 1, 0);
			if (fails++ > 20)
				return NULL;
			else if (fails > 1 && fails < 3)
				sSend("GLOBOPS :[***] make_clone(MassServ): nick %s already exists",
						 rand_nick);
		}
	}

	addUser(rand_nick, rand_user, host, rand_ircname, "+m");
	return rand_nick;
}
示例#18
0
void MainDialog::createConnections()
{
	connect(createButton, SIGNAL(clicked()), this, SLOT(addUser()));
	connect(signInButton, SIGNAL(clicked()), this, SLOT(showTableDialog()));
	connect(cancelCreateButton, SIGNAL(clicked()), qApp, SLOT(quit()));
	connect(cancelSignInButton, SIGNAL(clicked()), qApp, SLOT(quit()));
}
示例#19
0
int loadAdmin(const char *path, pDatabase db)
{
    int f;
    ssize_t len;
    char adminPassword[MAXLOGIN];
    if (!db) return 1;
    /*Abrir para leitura*/
    f = open(path,O_RDONLY);
    if (f == -1)
    {
        printf("(loadAdmin)Erro: não foi possível abrir %s\n",path);
        return 1;
    }
    /*Ler password*/
    len = read(f,adminPassword,sizeof(adminPassword)-1);
    /*Fechar o ficheiro*/
    close(f);
    if (len >= 0)
    {
        /*Colocar o terminador*/
        adminPassword[len] = 0;
        addUser(db,ADMIN,adminPassword);
        return 0;
    }
    return 1;
}
示例#20
0
//=============================================================================
//=============================================================================
void UserInfo::addUser(QString key, QString userName, QString password)
{
  FUNC_DEBUG;
  user_struct user;
  user.username = userName;
  user.password = password;
  addUser(key, user);
}
示例#21
0
void ChannelPage::nicksReady()
{    
    QHashIterator<QString, IrcClient::UserMode*> iterator = Window::ircClient->getChannel(getName()).getUserIterator();
    while (iterator.hasNext()) {
        QString key = iterator.next().key();
        addUser(key);
    }
}
示例#22
0
void Login::addUser(std::string uName, std::string pWord)
{
	std::ofstream addUser("loginDB.txt", std::ios::app); //Åbn loginDB i append mode

	addUser << uName << " " << pWord << std::endl; //Append ny bruger data i slutningen af loginDB

	addUser.close(); //Luk filen loginDB
}
示例#23
0
UsersManagerDialog::UsersManagerDialog(UserContainer* userContainer, UserDbInterface *userDb, QWidget *parent):QDialog(parent),
    ui(new Ui::UsersManager)
{
    this->userContainer = userContainer;
    this->userDb = userDb;

    ui->setupUi(this);
    this->setWindowFlags(this->windowFlags() & ~Qt::WindowContextHelpButtonHint);
    this->setWindowIcon(QIcon(":/icons/avatar.png"));

    QObject::connect(ui->addBtn,SIGNAL(clicked()),this,SLOT(addUser()));
    QObject::connect(ui->userName,SIGNAL(returnPressed()),this,SLOT(addUser()));
    QObject::connect(ui->deleteBtn,SIGNAL(clicked()),this,SLOT(deleteUser()));
    QObject::connect(this,SIGNAL(rejected()),this,SLOT(dialogClosed()));

    updated = false;
}
示例#24
0
void IRCChannelWidget::updateGui()
{
    // show all messages on the screen
    _msgMtx.lock();
    while (!_msgsToShow.empty()) {
        showMessage(_msgsToShow.front());
        _msgsToShow.pop();
    }
    _msgMtx.unlock();

    // update user list
    _newUsrsMtx.lock();
    for (list<User>::iterator it = _newUsrs.begin(); it != _newUsrs.end(); ++it)
        addUser(*it);
    _newUsrs.clear();
    _newUsrsMtx.unlock();
    _leftUsrsMtx.lock();
    for (list<User>::iterator it = _leftUsrs.begin(); it != _leftUsrs.end(); ++it)
        removeUser(*it);
    _leftUsrs.clear();
    _leftUsrsMtx.unlock();



    QMessageBox msgBox;
    QString fileName;
    int ret;

    // statuswindow takes care of recv  files
    if (_client)
    {
        _fileReqsMtx.lock();
        // for each filerequest, show a dialog
        for (list<IRCClient::FileRecvReq>::iterator i = _fileReqs.begin(); i != _fileReqs.end(); ++i) {

            msgBox.setText("Receiving file from user");
            msgBox.setInformativeText("User " + QString::fromStdString((*i)._userName) + " is trying to send you the file: " + QString::fromStdString((*i)._fileName));
            msgBox.setStandardButtons(QMessageBox::Yes | QMessageBox::No);
            msgBox.setDefaultButton(QMessageBox::Yes);
            ret = msgBox.exec();
            if (ret == QMessageBox::Yes)
            {
                fileName = QFileDialog::getSaveFileName(this, "save file");
                if (!fileName.isEmpty())
                {
                    (*i)._path = fileName.toStdString();
                    DCCWidget* dccWidget = new DCCWidget(this);
                    if (!fileName.isEmpty())
                        _client->recvFile(*i)->registerObserver(dccWidget);
                    dccWidget->show();
                }
            }

        }
        _fileReqsMtx.unlock();
    }
}
    void addListener (CameraDevice::Listener* listenerToAdd)
    {
        const ScopedLock sl (listenerLock);

        if (listeners.size() == 0)
            addUser();

        listeners.addIfNotAlreadyThere (listenerToAdd);
    }
示例#26
0
void HttpUserUtil::setUsers(QList<HttpUser *> users)
{
	qDeleteAll(m_users);
	
	m_userLookup.clear();
	m_users.clear();
	
	foreach(HttpUser *user, users)
		addUser(user);
}
示例#27
0
void LayerAclMenu::setUserList(canvas::UserListModel *model)
{
	m_model = model;
	for(int i=0;i<model->rowCount();++i)
		addUser(i);

	connect(model, SIGNAL(rowsInserted(QModelIndex,int,int)), this, SLOT(rowsInserted(QModelIndex,int,int)));
	connect(model, SIGNAL(rowsMoved(QModelIndex,int,int,QModelIndex,int)), this, SLOT(rowsMoved(QModelIndex,int,int,QModelIndex,int)));
	connect(model, SIGNAL(rowsRemoved(QModelIndex,int,int)), this, SLOT(rowsRemoved(QModelIndex,int,int)));
}
UserFrame::UserFrame(QWidget *parent)
    : QFrame(parent)
{
    m_Layout = new QVBoxLayout;
    m_Layout->setMargin(0);
    m_Layout->addSpacing(0);

    addUser(QString(":img/user/kakaxi.png"), "administrator");
    setLayout(m_Layout);
}
示例#29
0
文件: users.c 项目: mdesanti/TPE3-SO
void analyzeUser(char * str, int top) {
    int i = 0;
    char user[MAX_NAME_LENGHT];
    analyzeStr(str, &i, user);
    char pass[MAX_NAME_LENGHT];
    analyzeStr(str, &i, pass);
    int perms = getPerms(str, i, top);

    addUser(userList, user, pass, perms);

}
void Users::load(BinaryFileReader& file)
{	
	int size=file.readInt();
	for(int i=0; i<size; i++) {
		User new_user;
		new_user.load(file);
		addUser(new_user);
	}
	std::cout << "Loaded users from '" << file.getFilename() << "'" << std::endl;

}