std::tuple<int, std::string, std::string, std::string> Database::GetLog(const int id) { std::stringstream ss; ss << "select id, Title, Date, Log from Log where id="<< id; QSqlQuery query(tr(ss.str().c_str())); if (query.lastError().isValid()) { QMessageBox::critical(0,"Error",query.lastError().text() ); } query.next(); return std::make_tuple(query.value(0).toInt(), StripSlashes(query.value(1).toString().toStdString()), query.value(2).toString().toStdString(), StripSlashes(query.value(3).toString().toStdString())); }
FILE *create_digest_file(struct ctdlroom *room, int forceCreate) { struct stat stbuf; char fn[PATH_MAX]; int exists; FILE *fp; snprintf(fn, PATH_MAX, "%s/%ld.eml", ctdl_netdigest_dir, room->QRnumber); StripSlashes(fn, 0); exists = stat(fn, &stbuf); if (!forceCreate && (exists == -1)) return NULL; fp = fopen(fn, "w+"); if (fp == NULL) { syslog(LOG_EMERG, "failed to create digest file %s: %s", fn, strerror(errno)); } return fp; }
void remove_digest_file(struct ctdlroom *room) { char buf[PATH_MAX]; snprintf(buf, PATH_MAX, "%s/%ld.eml", ctdl_netdigest_dir, room->QRnumber); StripSlashes(buf, 0); unlink(buf); }
std::string Database::GetName(const uint32_t id) { std::stringstream ss; ss << "SELECT Name from Person where id=" << id; QSqlQuery query(ss.str().c_str()); if (query.lastError().isValid()) { QMessageBox::critical(0,"Error",query.lastError().text() ); } query.next(); return StripSlashes(query.value(0).toString().toStdString()); }
std::deque<std::pair<int, std::string>> Database::GetNames() const { std::deque<std::pair<int, std::string>> ret; QSqlQuery query("SELECT * from Person"); if (query.lastError().isValid()) { QMessageBox::critical(0,"Error",query.lastError().text() ); } while (query.next()) { ret.push_back(std::make_pair(query.value(0).toInt(), StripSlashes(query.value(1).toString().toStdString()))); } return ret; }
std::deque< std::tuple<int, std::string, std::string> > Database::GetLogsFor(const int id) { std::stringstream ss; ss << "select id, Title, Date from Log where PersonId="<< id << " ORDER BY Date DESC"; QSqlQuery query(tr(ss.str().c_str())); if (query.lastError().isValid()) { QMessageBox::critical(0,"Error",query.lastError().text() ); } std::deque< std::tuple<int, std::string, std::string> > ret; while (query.next()) { ret.push_back(std::make_tuple(query.value(0).toInt(), StripSlashes(query.value(1).toString().toStdString()), query.value(2).toString().toStdString())); } return ret; }
const RemoteProfile* eSettings::GetRemoteProfileFromUrl(const wxString& url, bool withDir) { // Split url up in elements wxRegEx reUrl(wxT("([[:alpha:]]+)://(([^:@]*):([^:@]*)@)?([^/]+)(.*)")); if (!reUrl.Matches(url)) return NULL; // invalid url const wxString protocol = reUrl.GetMatch(url, 1); const wxString username = reUrl.GetMatch(url, 3); const wxString pwd = reUrl.GetMatch(url, 4); const wxString address = reUrl.GetMatch(url, 5); const wxString dir = reUrl.GetMatch(url, 6); const wxString sDir = StripSlashes(dir); // See if we can find a matching profile in cache for (auto_vector<RemoteProfile>::iterator p = m_tempRemotes.begin(); p != m_tempRemotes.end(); ++p) { RemoteProfile* rp = (*p); if (rp->IsActive() && rp->m_address == address && rp->m_protocol == protocol) { if (!username.empty() && rp->m_username != username) continue; if (withDir && StripSlashes(rp->m_dir) != sDir) continue; if (!pwd.empty() && rp->m_pwd != pwd) { rp->m_pwd = pwd; // Password may have changed if (!rp->IsTemp()) SaveRemoteProfile(rp); } return rp; } } // See if we can find a matching profile in settings const wxJSONValue remotes = m_jsonRoot.ItemAt(wxT("remoteProfiles")); const int profile_count = remotes.Size(); for (int i = 0; i < profile_count; ++i) { const wxJSONValue profile = remotes.ItemAt(i); if (profile.ItemAt(wxT("address")).AsString() != address) continue; // Ftp is default protocol wxString prot = profile.ItemAt(wxT("protocol")).AsString(); if (prot.empty()) prot = wxT("ftp"); if (prot != protocol) continue; // ftp is default if (!username.empty() && profile.ItemAt(wxT("username")).AsString() != username) continue; RemoteProfile* rp = DoGetRemoteProfile(i); if (withDir && StripSlashes(rp->m_dir) != sDir) continue; // Password may have changed if (!pwd.empty() && rp->m_pwd != pwd) { rp->m_pwd = pwd; SaveRemoteProfile(rp); } return rp; } // Add new temp profile auto_ptr<RemoteProfile> newRp(new RemoteProfile()); newRp->m_protocol = protocol; newRp->m_name = address; newRp->m_address = address; newRp->m_dir = dir; newRp->m_username = username; newRp->m_pwd = pwd; m_tempRemotes.push_back(newRp); return m_tempRemotes.back(); }
void calc_dirs_n_files(int relh, int home, const char *relhome, char *ctdldir, int dbg) { const char* basedir = ""; char dirbuffer[PATH_MAX] = ""; /* * Ok, we keep our binaries either in the citadel base dir, * or in /usr/sbin / /usr/bin */ StripSlashes(ctdldir, 1); #ifdef HAVE_ETC_DIR snprintf(ctdl_sbin_dir, sizeof ctdl_sbin_dir, "/usr/sbin/"); snprintf(ctdl_bin_dir, sizeof ctdl_bin_dir, "/usr/bin/"); #else snprintf(ctdl_sbin_dir, sizeof ctdl_sbin_dir, ctdldir); snprintf(ctdl_bin_dir, sizeof ctdl_bin_dir, ctdldir); #endif StripSlashes(ctdl_sbin_dir, 1); StripSlashes(ctdl_bin_dir, 1); #ifndef HAVE_AUTO_ETC_DIR basedir=ctdldir; #else basedir=AUTO_ETC_DIR; #endif COMPUTE_DIRECTORY(ctdl_autoetc_dir); StripSlashes(ctdl_autoetc_dir, 1); #ifndef HAVE_ETC_DIR basedir=ctdldir; #else basedir=ETC_DIR; #endif COMPUTE_DIRECTORY(ctdl_netcfg_dir); COMPUTE_DIRECTORY(ctdl_etc_dir); StripSlashes(ctdl_netcfg_dir, 1); StripSlashes(ctdl_etc_dir, 1); #ifndef HAVE_UTILBIN_DIR basedir=ctdldir; #else basedir=UTILBIN_DIR; #endif COMPUTE_DIRECTORY(ctdl_utilbin_dir); StripSlashes(ctdl_utilbin_dir, 1); #ifndef HAVE_RUN_DIR basedir=ctdldir; #else basedir=RUN_DIR; #endif COMPUTE_DIRECTORY(ctdl_run_dir); StripSlashes(ctdl_run_dir, 1); #ifndef HAVE_STATICDATA_DIR basedir=ctdldir; #else basedir=STATICDATA_DIR; #endif COMPUTE_DIRECTORY(ctdl_message_dir); StripSlashes(ctdl_message_dir, 1); #ifndef HAVE_HELP_DIR basedir=ctdldir; #else basedir=HELP_DIR; #endif COMPUTE_DIRECTORY(ctdl_hlp_dir); StripSlashes(ctdl_hlp_dir, 1); COMPUTE_DIRECTORY(ctdl_shared_dir); StripSlashes(ctdl_shared_dir, 1); #ifndef HAVE_DATA_DIR basedir=ctdldir; #else basedir=DATA_DIR; #endif COMPUTE_DIRECTORY(ctdl_bio_dir); COMPUTE_DIRECTORY(ctdl_bb_dir); COMPUTE_DIRECTORY(ctdl_data_dir); COMPUTE_DIRECTORY(ctdl_dspam_dir); COMPUTE_DIRECTORY(ctdl_file_dir); COMPUTE_DIRECTORY(ctdl_image_dir); COMPUTE_DIRECTORY(ctdl_info_dir); COMPUTE_DIRECTORY(ctdl_usrpic_dir); COMPUTE_DIRECTORY(ctdl_bbsbase_dir); StripSlashes(ctdl_bio_dir, 1); StripSlashes(ctdl_bb_dir, 1); StripSlashes(ctdl_data_dir, 1); StripSlashes(ctdl_dspam_dir, 1); StripSlashes(ctdl_file_dir, 1); StripSlashes(ctdl_image_dir, 1); StripSlashes(ctdl_info_dir, 1); StripSlashes(ctdl_usrpic_dir, 1); StripSlashes(ctdl_bbsbase_dir, 1); #ifndef HAVE_SPOOL_DIR basedir=ctdldir; #else basedir=SPOOL_DIR; #endif COMPUTE_DIRECTORY(ctdl_spool_dir); COMPUTE_DIRECTORY(ctdl_netout_dir); COMPUTE_DIRECTORY(ctdl_netin_dir); COMPUTE_DIRECTORY(ctdl_netdigest_dir); COMPUTE_DIRECTORY(ctdl_nettmp_dir); StripSlashes(ctdl_spool_dir, 1); StripSlashes(ctdl_netout_dir, 1); StripSlashes(ctdl_netin_dir, 1); StripSlashes(ctdl_netdigest_dir, 1); StripSlashes(ctdl_nettmp_dir, 1); /* ok, now we know the dirs, calc some commonly used files */ snprintf(file_arcq, sizeof file_arcq, "%srefcount_adjustments.dat", ctdl_autoetc_dir); StripSlashes(file_arcq, 0); snprintf(file_citadel_control, sizeof file_citadel_control, "%scitadel.control", ctdl_autoetc_dir ); StripSlashes(file_citadel_control, 0); snprintf(file_citadel_config, sizeof file_citadel_config, "%scitadel.config", ctdl_autoetc_dir); StripSlashes(file_citadel_config, 0); snprintf(file_citadel_urlshorteners, sizeof file_citadel_urlshorteners, "%scitadel_urlshorteners.rc", ctdl_etc_dir); StripSlashes(file_citadel_urlshorteners, 0); snprintf(file_lmtp_socket, sizeof file_lmtp_socket, "%slmtp.socket", ctdl_run_dir); StripSlashes(file_lmtp_socket, 0); snprintf(file_lmtp_unfiltered_socket, sizeof file_lmtp_socket, "%slmtp-unfiltered.socket", ctdl_run_dir); StripSlashes(file_lmtp_unfiltered_socket, 0); snprintf(file_citadel_socket, sizeof file_citadel_socket, "%scitadel.socket", ctdl_run_dir); StripSlashes(file_citadel_socket, 0); snprintf(file_citadel_admin_socket, sizeof file_citadel_admin_socket, "%scitadel-admin.socket", ctdl_run_dir); StripSlashes(file_citadel_admin_socket, 0); snprintf(file_pid_file, sizeof file_pid_file, "%scitadel.pid", ctdl_run_dir); StripSlashes(file_pid_file, 0); snprintf(file_pid_paniclog, sizeof file_pid_paniclog, "%spanic.log", ctdl_home_directory); StripSlashes(file_pid_paniclog, 0); snprintf(file_crpt_file_key, sizeof file_crpt_file_key, "%s/citadel.key", ctdl_key_dir); StripSlashes(file_crpt_file_key, 0); snprintf(file_crpt_file_csr, sizeof file_crpt_file_csr, "%s/citadel.csr", ctdl_key_dir); StripSlashes(file_crpt_file_csr, 0); snprintf(file_crpt_file_cer, sizeof file_crpt_file_cer, "%s/citadel.cer", ctdl_key_dir); StripSlashes(file_crpt_file_cer, 0); snprintf(file_chkpwd, sizeof file_chkpwd, "%schkpwd", ctdl_utilbin_dir); StripSlashes(file_chkpwd, 0); snprintf(file_base64, sizeof file_base64, "%sbase64", ctdl_utilbin_dir); StripSlashes(file_base64, 0); snprintf(file_guesstimezone, sizeof file_guesstimezone, "%sguesstimezone.sh", ctdl_utilbin_dir); snprintf(file_dpsam_conf, sizeof file_dpsam_conf, "%sdspam.conf", ctdl_etc_dir); StripSlashes(file_dpsam_conf, 0); snprintf(file_dspam_log, sizeof file_dspam_log, "%sdspam.log", ctdl_home_directory); StripSlashes(file_dspam_log, 0); /* * DIRTY HACK FOLLOWS! due to configs in the network dir in the * legacy installations, we need to calculate ifdeffed here. */ snprintf(file_mail_aliases, sizeof file_mail_aliases, "%smail.aliases", #ifdef HAVE_ETC_DIR ctdl_etc_dir #else ctdl_spool_dir #endif ); StripSlashes(file_mail_aliases, 0); snprintf(file_funambol_msg, sizeof file_funambol_msg, "%sfunambol_newmail_soap.xml", ctdl_shared_dir); StripSlashes(file_funambol_msg, 0); DBG_PRINT(ctdl_bio_dir); DBG_PRINT(ctdl_bb_dir); DBG_PRINT(ctdl_data_dir); DBG_PRINT(ctdl_dspam_dir); DBG_PRINT(ctdl_file_dir); DBG_PRINT(ctdl_hlp_dir); DBG_PRINT(ctdl_image_dir); DBG_PRINT(ctdl_info_dir); DBG_PRINT(ctdl_key_dir); DBG_PRINT(ctdl_message_dir); DBG_PRINT(ctdl_usrpic_dir); DBG_PRINT(ctdl_etc_dir); DBG_PRINT(ctdl_run_dir); DBG_PRINT(ctdl_spool_dir); DBG_PRINT(ctdl_netout_dir); DBG_PRINT(ctdl_netin_dir); DBG_PRINT(ctdl_netdigest_dir); DBG_PRINT(ctdl_nettmp_dir); DBG_PRINT(ctdl_netcfg_dir); DBG_PRINT(ctdl_bbsbase_dir); DBG_PRINT(ctdl_sbin_dir); DBG_PRINT(ctdl_bin_dir); DBG_PRINT(ctdl_utilbin_dir); DBG_PRINT(file_citadel_control); DBG_PRINT(file_citadel_config); DBG_PRINT(file_lmtp_socket); DBG_PRINT(file_lmtp_unfiltered_socket); DBG_PRINT(file_arcq); DBG_PRINT(file_citadel_socket); DBG_PRINT(file_mail_aliases); DBG_PRINT(file_pid_file); DBG_PRINT(file_pid_paniclog); DBG_PRINT(file_crpt_file_key); DBG_PRINT(file_crpt_file_csr); DBG_PRINT(file_crpt_file_cer); DBG_PRINT(file_chkpwd); DBG_PRINT(file_base64); DBG_PRINT(file_guesstimezone); DBG_PRINT(file_funambol_msg); }