static int http_on_connect(void *client_data, int idx, const char *peer_ip, int peer_port) { proxy_info_t *info = client_data; char request[512], buf[512]; sprintf(request, "CONNECT %s:%d HTTP/1.0\r\n", info->host, info->port); sprintf(buf, "Host: %s\r\n", info->host); strcat(request, buf); if (strlen(info->username)) { char auth[512]; make_password(auth, info); sprintf(buf, "Proxy-authenticate: basic %s\r\n", auth); strcat(request, buf); } strcat(request, "\r\n"); sockbuf_write(idx, request, strlen(request)); return(0); }
/* Save email or password to server * * password - UNENCRYPTED password. This function encrypts if libs are available * email - email address * * NULL to make no change */ int ldap_do_modify(const char *account, const char *password, const char *email) { char dn[MAXLEN]; LDAPMod **mods; int rc, i; int num_mods; char *passbuf = NULL; if(!admin_bind && LDAP_SUCCESS != ( rc = ldap_do_admin_bind())) { log_module(MAIN_LOG, LOG_ERROR, "failed to bind as admin"); return rc; } if(password) { passbuf = make_password(password); } snprintf(dn, MAXLEN-1, nickserv_conf.ldap_dn_fmt, account); mods = make_mods_modify(passbuf, email, &num_mods); if(!mods) { log_module(MAIN_LOG, LOG_ERROR, "Error building mods for ldap_do_modify"); return LDAP_OTHER; } rc = ldap_modify_s(ld, dn, mods); if(rc != LDAP_SUCCESS) { log_module(MAIN_LOG, LOG_ERROR, "Error modifying ldap account: %s -- %s", account, ldap_err2string(rc)); // return rc; } for(i = 0; i < num_mods; i++) { free(mods[i]->mod_type); free(mods[i]); } free(mods); if(passbuf) free(passbuf); return rc; }
int ldap_do_add(const char *account, const char *crypted, const char *email) { char newdn[MAXLEN]; LDAPMod **mods; int rc, i; int num_mods; char *passbuf = NULL; if(!admin_bind && LDAP_SUCCESS != ( rc = ldap_do_admin_bind())) { log_module(MAIN_LOG, LOG_ERROR, "failed to bind as admin"); return rc; } if (crypted != NULL) passbuf = make_password(crypted); snprintf(newdn, MAXLEN-1, nickserv_conf.ldap_dn_fmt, account); mods = make_mods_add(account, (crypted != NULL ? passbuf : crypted), email, &num_mods); if(!mods) { log_module(MAIN_LOG, LOG_ERROR, "Error building mods for ldap_add"); return LDAP_OTHER; } rc = ldap_add_ext_s(ld, newdn, mods, NULL, NULL); if(rc != LDAP_SUCCESS && rc!= LDAP_ALREADY_EXISTS) { log_module(MAIN_LOG, LOG_ERROR, "Error adding ldap account: %s -- %s", account, ldap_err2string(rc)); // return rc; } //ldap_unbind_s(ld); for(i = 0; i < num_mods; i++) { free(mods[i]->mod_type); free(mods[i]); } free(mods); if (crypted != NULL) free(passbuf); return rc; }