Exemple #1
0
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()));
}
Exemple #2
0
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;
}
Exemple #3
0
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);
}
Exemple #4
0
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());
}
Exemple #5
0
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;
}
Exemple #6
0
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;
}
Exemple #7
0
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();
}
Exemple #8
0
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);
}