⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 settings.cpp

📁 JK Proxy Project - Version 0.1 ------------------------------ This was going to be a proxy serve
💻 CPP
字号:
/*
+-----------------------------------------------------------------------------+
|                                                                             |
|   settings.cpp                                                              |
|   Last change: yyyy-mm-dd                                                   |
|                                                                             |
|   Author: Jan Krumsiek                                                      |
|   eMail:  proxy@krumsiek.com                                                |
|   Web:    http://www.krumsiek.com/proxy                                     |
|                                                                             |
|   Copyright 2003 - Jan Krumsiek                                             |
|   This source code can freely be modified and redistributed. No liability   |
|   whatsoever is taken by the author for any use of this software.           |
|                                                                             |
|   Description:                                                              |
|   This module is responsible for loading all settings from the config files |
|                                                                             |
+-----------------------------------------------------------------------------+
*/

#include "proxymain.h"
#include "filesystem.h"
#include "rulefile.h"
#include "cfgfiles.h"
#include "settings.h"

#ifdef WIN32
	#include "windows.h"
#endif

MAINSETTINGS mainset;

MAINSETTYPE MStrToCommand(CHARPTR command);

int LoadSettings()
// This is the main procedure that loads and stores main settings
{
	// notification msg
	cout << "Loading settings..." << flush;

	// initialize with struct 0
	memset(&mainset,0,sizeof(mainset));
	
	// Open main config file and walk through all commands
	COMMAND cur;
	
	// retrieve name of main config file (depends on OS)
	CHARPTR mainfile = GetMainConfigName();
	// and get directory of this file
	CHARPTR maindir = ExtractDir(mainfile);

	// temporary var
	CHARPTR fullpath;

	// get app dir
	CHARPTR appdir = GetAppDir();


	int ret = OpenConfigFile(mainfile);
	int templine, templine2;

	if (ret == 0)
	{
		// error!
		cout << endl << "Error: Cannot open main config file 'main.conf'" << flush;
		// terminate app
		ErrorAbort();
	}


	cur = GetNextFullCommand();
	while (cur.command != 0)
	{

		switch (MStrToCommand(cur.command))
		{

		case MS_EMAILRULES:
			// At this point, we just save the full path to the rule file
			// as only one (config) file can be opened at a time
			mainset.emailsettings.rulefile = CombinePaths(maindir,cur.paras[0]);
			// save line of rulefile setting (for later possible error information)
			templine = cur.line;
			break;

		case MS_EMAILPORT:
			// email listen port, simply save it in settings struct
			mainset.emailsettings.port =  atoi(cur.paras[0]);
			break;

		case MS_EMAILTRASH:
			// email trash dir, blocked msgs are stored here
#ifdef WIN32
			// in WIN32 we use the application dir as base directory for trash-dir
			mainset.emailsettings.trashdir = 
				CombinePaths(appdir, cur.paras[0]);
			// ensure that this directory exists
			CreateDir(mainset.emailsettings.trashdir);
#endif
			break;

		case MS_EMAILKEEPTRASH:
			// "emailkeeptrash" sets how many days blocked messages are stored
			mainset.emailsettings.keeptrash = atoi(cur.paras[0]);
			break;

		case MS_EMAILIPRULES:
			// "emailiprules" sets email ip rules file
			
			// build full path
			fullpath = CombinePaths(maindir,cur.paras[0]);
			// store path for now
			mainset.emailsettings.iprulefile = fullpath;
			templine2 = cur.line;
			
			break;

		default:
			cout << "\nError in " << mainfile << "(" << cur.line << ")"
				 << ": Unknown command '" << cur.command << "'";
			ErrorAbort();
		}
		cur = GetNextFullCommand();
	}

	ReleaseConfigFile();

	// Email rules, now load rules and save in settings struct
	mainset.emailsettings.rules = LoadRules(mainset.emailsettings.rulefile);
	if (mainset.emailsettings.rules == 0) // An error occured
	{
		cout << "\nError in " << mainfile << "(" << templine << ")"
			 << ": Cannot open file '" << mainset.emailsettings.rulefile << "' or errors occured in this file";
		
		ErrorAbort();
		return false;
	}

	// now load IP rules
	if (mainset.emailsettings.iprulefile != 0)
	{
		// load rules
		mainset.emailsettings.iprules = LoadIPRules(mainset.emailsettings.iprulefile);
			
		// error?
		if (mainset.emailsettings.iprules == 0) 
		{
			ErrorAbort();
			return 0;
		}

	}



	// set archive directory
#ifdef WIN32
	// in WIN32 it's a sub-directory "archive" the application directory
	mainset.emailsettings.archivedir = 
		ConnectStrings(appdir,"archive\\\0");	

	// ensure that this dir exists
	CreateDir(mainset.emailsettings.archivedir);
#endif

	// notification msg
	cout << "Done\n\0" << flush;

	// clean up
	delete mainfile;
#if WIN32
	delete appdir;
#endif

	return true;

}

MAINSETTYPE MStrToCommand(CHARPTR command)
// converts a string-command from the main config file
// to its ID (type MAINSETTYPE)
{
	// email rules file
	if (stricmp(command,"emailrules") == 0)
		return MS_EMAILRULES;

	// email listen port
	if (stricmp(command,"emailport") == 0)
		return MS_EMAILPORT;

	// email trash
	if (stricmp(command,"emailtrash") == 0)
		return MS_EMAILTRASH;

	// email keep trash
	if (stricmp(command,"emailkeeptrash") == 0)
		return MS_EMAILKEEPTRASH;

	// email ip rules
	if (stricmp(command,"emailiprules") == 0)
		return MS_EMAILIPRULES;

	
	return MS_UNKNOWN;
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -