void AuthForm::url_canged(QUrl url) { if (!isAuthSuccess) { setEnabled(true); setWindowOpacity(1.0); if(!url.toString().contains("access_token")) { return; } url = url.toString().replace("#", "?"); token = QUrlQuery(url).queryItemValue("access_token"); Settings::access_token = token; Settings::Save(); } else { token = Settings::access_token; } emit auth_success(token); close(); }
static gboolean account_get_info_cb(XmppStream *stream, xmlnode *root, gpointer user_data) { xmpp_account_process_info(stream, root); auth_success(stream); return FALSE; }
void AuthForm::auth(){ setHidden(false); show(); if(!isAuthSuccess) { ui->webView->load(QUrl("https://oauth.vk.com/authorize?" "client_id=4976727&" "scope=offline,docs&" "redirect_uri=https://oauth.vk.com/blank.html&" "display=popup&" "v=5.34&" "response_type=token" )); } else { emit auth_success(Settings::access_token); close(); } }
int main(int argc, char **argv) { struct sockaddr_in config, peer; struct epoll_event ev, events[EP_SIZE]; struct conn_status status[MAX_FD], *curr; in_port_t port = L_PORT; int listenfd, epfd, connfd; int i, flag, nfds, current_fd; socklen_t len; char buffer[FILE_BUFFER]; // init sockinit(&config); sockset(&config, port, NULL); memset(status, 0, sizeof(status)); memset(buffer, 0, sizeof(buffer)); signal(SIGPIPE, SIG_IGN); // create server listenfd = create_server(&config); if (listenfd < 0) { perror("xtrans: server create failed."); exit(EXIT_FAILURE); } // create epoll fd epfd = ep_ini(); if (epfd < 0) { perror("xtrans: epoll init failed."); exit(EXIT_FAILURE); } // add listen fd to epoll ev.events = EPOLLIN; ev.data.fd = listenfd; if (ep_add(epfd, listenfd, &ev) == -1) { perror("xtrans: add epoll event failed."); exit(EXIT_FAILURE); } // main loop for(;;) { nfds = ep_col(epfd, events); for (i = 0; i < nfds; i++) { current_fd = events[i].data.fd; if (current_fd == listenfd) { connfd = accept(listenfd, (SA *)&peer, &len); if (connfd == -1) { continue; } memcpy(&(status[connfd].client), &peer, sizeof(struct sockaddr_in)); ev.events = EPOLLIN; ev.data.fd = connfd; if (ep_add(epfd, connfd, &ev) == -1) { continue; } flag = welcome(connfd, &(status[connfd])); if (flag >= 0) { x_log(LOG_CONN, &(status[connfd])); } else { x_log(LOG_DISC, &(status[connfd])); terminate(epfd, connfd, &(status[connfd])); } } else if (events[i].events & EPOLLIN) { curr = &(status[current_fd]); switch (curr->status) { case STATUS_INIT: memset(&(curr->username), 0, sizeof(char)*12); flag = readln(current_fd, curr->username, 1); if (flag < 0) { terminate(epfd, current_fd, curr); x_log(LOG_DISC, curr); } flag = get_username(current_fd, curr); if (flag < 0) { terminate(epfd, current_fd, curr); x_log(LOG_DISC, curr); } break; case STATUS_NAME: memset(&(curr->passwd), 0, sizeof(char)*32); flag = readln(current_fd, curr->passwd, 1); if (flag < 0) { terminate(epfd, current_fd, curr); x_log(LOG_DISC, curr); } flag = get_passwd(current_fd, curr); if (flag < 0) { terminate(epfd, current_fd, curr); x_log(LOG_DISC, curr); } flag = auth(curr->username, curr->passwd); if (flag < 0) { flag = auth_failed(current_fd, curr); terminate(epfd, current_fd, curr); x_log(LOG_REFS, curr); } else { flag = auth_success(current_fd, curr); if (flag < 0) { x_log(LOG_DISC, curr); } else { x_log(LOG_LOGI, curr); } } break; case STATUS_SUCC: flag = readFd(current_fd, buffer, 1024); if (flag < 0) { terminate(epfd, current_fd, curr); x_log(LOG_DISC, curr); } curr->recvb = flag; terminate(epfd, current_fd, curr); x_log(LOG_FINS, curr); break; default: perror("xtrans: status not define, default action triggered."); terminate(epfd, current_fd, curr); } } } } return 0; }