void t_auth::remove_from_cache(const string &realm) { if (realm.empty()) { cache.clear(); } else { list<t_cr_cache_entry>::iterator i = find_cache_entry(t_url(), realm); if (i != cache.end()) { cache.erase(i); } } }
void WizardForm::validate() { QString s; // Validity check user page // SIP username is mandatory if (usernameLineEdit->text().isEmpty()) { ((t_gui *)ui)->cb_show_msg(this, tr("You must fill in a user name for your SIP account.").toStdString(), MSG_CRITICAL); usernameLineEdit->setFocus(); return; } // SIP user domain is mandatory if (domainLineEdit->text().isEmpty()) { ((t_gui *)ui)->cb_show_msg(this, tr( "You must fill in a domain name for your SIP account.\n" "This could be the hostname or IP address of your PC " "if you want direct PC to PC dialing.").toStdString(), MSG_CRITICAL); domainLineEdit->setFocus(); return; } // SIP proxy if (proxyLineEdit->text() != "") { s = USER_SCHEME; s.append(':').append(proxyLineEdit->text()); t_url u(s.toStdString()); if (!u.is_valid() || u.get_user() != "") { ((t_gui *)ui)->cb_show_msg(this, tr("Invalid value for SIP proxy.").toStdString(), MSG_CRITICAL); proxyLineEdit->setFocus(); proxyLineEdit->selectAll(); return; } } // Register and publish presence at startup if (serviceProviderComboBox->currentText() == tr(PROV_NONE)) { user_config->set_register_at_startup(false); user_config->set_pres_publish_startup(false); } // STUN server if (stunServerLineEdit->text() != "") { s = "stun:"; s.append(stunServerLineEdit->text()); t_url u(s.toStdString()); if (!u.is_valid() || u.get_user() != "") { ((t_gui *)ui)->cb_show_msg(this, tr("Invalid value for STUN server.").toStdString(), MSG_CRITICAL); stunServerLineEdit->setFocus(); stunServerLineEdit->selectAll(); return; } } // Set all values in the user_config object // USER user_config->set_display(displayLineEdit->text().toStdString()); user_config->set_name(usernameLineEdit->text().toStdString()); user_config->set_domain(domainLineEdit->text().toStdString()); user_config->set_auth_name(authNameLineEdit->text().toStdString()); user_config->set_auth_pass(authPasswordLineEdit->text().toStdString()); // SIP SERVER user_config->set_use_outbound_proxy(!proxyLineEdit->text().isEmpty()); s = USER_SCHEME; s.append(':').append(proxyLineEdit->text()); user_config->set_outbound_proxy(t_url(s.toStdString())); // NAT user_config->set_use_stun(!stunServerLineEdit->text().isEmpty()); s = "stun:"; s.append(stunServerLineEdit->text()); user_config->set_stun_server(t_url(s.toStdString())); // Save user config string error_msg; if (!user_config->write_config(user_config->get_filename(), error_msg)) { // Failed to write config file ((t_gui *)ui)->cb_show_msg(this, error_msg, MSG_CRITICAL); return; } emit success(); accept(); }
void apnSettingsDialog::accepted() { // check ip address QRegExp t_ip("(^(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\\.){3}" "(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)$)"); QRegExp t_url("^(https?\\:\\/\\/)?([\\da-z\\.-]+)\\.([a-z\\.]{2,6})([\\/\\w\\.-]*)*\\/?$"); QRegExp t_url2("^(https?\\:\\/\\/)?((?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?))(\\/[\\/\\w\\.-]*)*\\/?$"); // if something goes wrong, put info here QString message; if(!ui->addressEdit->text().isEmpty()) { if(ui->addressModeComboBox->currentIndex()==TEXT) { if(t_url.indexIn(ui->addressEdit->text(), 0)!=0) message.append(tr("\"Address\" seems not to be correct.\n")); } else if(ui->addressModeComboBox->currentIndex()==IP_ADDR) { if(t_url2.indexIn(ui->addressEdit->text(), 0)!=0) message.append(tr("\"Address\" seems not to be correct.\n")); } } if(!ui->dns1Edit->text().isEmpty()) { if(t_ip.indexIn(ui->dns1Edit->text(), 0)!=0) message.append(tr("\"DNS 1\" address is incorrect.\n")); } if(!ui->dns2Edit->text().isEmpty()) { if(t_ip.indexIn(ui->dns2Edit->text(), 0)!=0) message.append(tr("\"DNS 2\" address is incorrect.\n")); } if(!message.isEmpty()) { QMessageBox::warning(this, tr("Incorrect input"), message, QMessageBox::Ok); return; } ap_name_t->clear(); ap_name_t->append(ui->apnEdit->text()); login_t->clear(); login_t->append(ui->loginEdit->text()); password_t->clear(); password_t->append(ui->passwordEdit->text()); (*request_password_t) = ui->requestPassCheckBox->isChecked(); (*use_proxy_t) = ui->useProxyCheckBox->isChecked(); switch(ui->addressModeComboBox->currentIndex()) { case 0: (*addr_mode_t) = IP_ADDR; break; case 1: (*addr_mode_t) = TEXT; break; default: (*addr_mode_t) = IP_ADDR; break; } address_t->clear(); address_t->append(ui->addressEdit->text()); DNS1_t->clear(); DNS1_t->append(ui->dns1Edit->text()); DNS2_t->clear(); DNS2_t->append(ui->dns2Edit->text()); *changed_t = true; this->close(); }
void t_phone_user::registration(t_register_type register_type, bool re_register, unsigned long expires) { // If STUN is enabled, then do a STUN query before registering to // determine the public IP address. if (register_type == REG_REGISTER && use_stun) { if (stun_public_ip_sip == 0) { send_stun_request(); register_after_stun = true; registration_time = expires; return; } stun_binding_inuse_registration = true; } // Stop registration timer for non-query request if (register_type != REG_QUERY) { phone->stop_timer(PTMR_REGISTRATION, this); } // Create call-id if no call-id is created yet if (register_call_id == "") { register_call_id = NEW_CALL_ID(user_config); } // RFC 3261 10.2 // Construct REGISTER request t_request *req = create_request(REGISTER, t_url(string(USER_SCHEME) + ":" + user_config->get_domain())); // To req->hdr_to.set_uri(user_config->create_user_uri(false)); req->hdr_to.set_display(user_config->get_display(false)); //Call-ID req->hdr_call_id.set_call_id(register_call_id); // CSeq req->hdr_cseq.set_method(REGISTER); req->hdr_cseq.set_seqnr(++register_seqnr); // Contact t_contact_param contact; switch (register_type) { case REG_REGISTER: // URI contact.uri.set_url(user_config->create_user_contact(false, h_ip2str(req->get_local_ip()))); // Expires if (expires > 0) { if (user_config->get_registration_time_in_contact()) { contact.set_expires(expires); } else { req->hdr_expires.set_time(expires); } } // q-value if (user_config->get_reg_add_qvalue()) { contact.set_qvalue(user_config->get_reg_qvalue()); } req->hdr_contact.add_contact(contact); break; case REG_DEREGISTER: contact.uri.set_url(user_config->create_user_contact(false, h_ip2str(req->get_local_ip()))); if (user_config->get_registration_time_in_contact()) { contact.set_expires(0); } else { req->hdr_expires.set_time(0); } req->hdr_contact.add_contact(contact); break; case REG_DEREGISTER_ALL: req->hdr_contact.set_any(); req->hdr_expires.set_time(0); break; default: break; } // Allow SET_HDR_ALLOW(req->hdr_allow, user_config); // Store request in the proper place t_tuid tuid; switch(register_type) { case REG_REGISTER: // Delete a possible pending registration request if (r_register) { MEMMAN_DELETE(r_register); delete r_register; } r_register = new t_client_request(user_config, req, 0); MEMMAN_NEW(r_register); tuid = r_register->get_tuid(); // Store expiration time for re-registration. registration_time = expires; break; case REG_QUERY: // Delete a possible pending query registration request if (r_query_register) { MEMMAN_DELETE(r_query_register); delete r_query_register; } r_query_register = new t_client_request(user_config, req, 0); MEMMAN_NEW(r_query_register); tuid = r_query_register->get_tuid(); break; case REG_DEREGISTER: case REG_DEREGISTER_ALL: // Delete a possible pending de-registration request if (r_deregister) { MEMMAN_DELETE(r_deregister); delete r_deregister; } r_deregister = new t_client_request(user_config, req, 0); MEMMAN_NEW(r_deregister); tuid = r_deregister->get_tuid(); break; default: assert(false); } // Send REGISTER authorizor.set_re_register(re_register); ui->cb_register_inprog(user_config, register_type); phone->send_request(user_config, req, tuid); MEMMAN_DELETE(req); delete req; }