TableWindow::TableWindow(QWidget *parent, QString login) : QMainWindow(parent), ui(new Ui::TableWindow) { ui->setupUi(this); this->login = login; ui->actionConnect->connect(ui->actionConnect, SIGNAL(triggered()), this, SLOT(Connect())); ui->actionFind->connect(ui->actionFind, SIGNAL(triggered()), this, SLOT(Find())); ui->actionChange_password->connect(ui->actionChange_password, SIGNAL(triggered()), this, SLOT(ChangePassword())); ui->actionAdd_new_user->connect(ui->actionAdd_new_user, SIGNAL(triggered()), this, SLOT(AddNewUser())); ui->actionExit->connect(ui->actionExit, SIGNAL(triggered()), this, SLOT(CloseTableWindow())); Users *user = new Users(); ui->actionAdd_new_user->setVisible(user->userCanEdit(login)); }
int main(int argc, char **argv) { register int i; char *current; char *next; char *uid; char *pw; int rc; int fd; struct stat buff; char *auid = 0; char *apw = 0; char *filenm = 0; char *area = 0; RPC2_EncryptionKey key; /* parse arguments */ for (i = 1; i < argc; i++) { if (argv[i][0] == '-') { if (strcmp(argv[i], "-f") == 0) { filenm = argv[++i]; continue; } break; } if (auid == 0) { auid = argv[i]; continue; } if (apw == 0) { apw = argv[i]; continue; } break; } if (!auid || !apw || !filenm) { printf("usage: newuser -f filename authuserid authpasswd\n"); fflush(stdout); exit(-1); } /* Bind to auth server using auid and apw */ U_InitRPC(); memset(key, 0, sizeof(RPC2_EncryptionKey)); strncpy(key, apw, sizeof(RPC2_EncryptionKey)); rc = U_BindToServer(1, auid, key, &AuthID); if(rc != AUTH_SUCCESS) { printf("Bind to Auth Server failed %s\n",U_Error(rc)); fflush(stdout); exit(-2); } /* open input file and read it into area malloc */ if(stat(filenm, &buff)) { printf("Could not stat %s because %d\n",filenm, errno); fflush(stdout); exit(-3); } area = (char *)malloc(buff.st_size+1); fd = open(filenm, O_RDONLY, 0); if(fd <= 0) { printf("Could not open %s because %d\n",filenm, errno); fflush(stdout); exit(-4); } rc = read(fd, area, buff.st_size); if(rc != buff.st_size) { printf("Could nor read %s got %d bytes instead of %d, error = %d\n", filenm, rc, buff.st_size, errno); fflush(stdout); exit(-5); } close(fd); *(area+buff.st_size+1) = '\0'; /* parse data in area and pass it to AddNewUser. The first field in each line is the uid, the second field in each line is the password. Fields are blank separated */ for(current = area; current < area+buff.st_size; current = next) { next = NextRecord(current); /* next line */ uid = current; /* use first field */ pw = NextField(uid); /* use second field */ MakeString(uid); /* make uid a string */ MakeString(pw); /* make pw a string */ AddNewUser(uid, pw); } /* clean up and Unbind the connection */ if(area) free(area); RPC2_Unbind(AuthID); return(0); }