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

📄 main.cpp

📁 一百个病毒的源代码 包括熊猫烧香等 极其具有研究价值
💻 CPP
字号:
/*	main.cpp*/#include <stdio.h>#include <stdlib.h>	//getenv,free #include <string.h>#include <unistd.h>	//getuid#include <syslog.h>#include <sys/stat.h>#include "main.h"#include "headers.h"#include "environment.h"#include "parse_form.h"#include "login_authenticate.h"#include "session.h"#include "login_page.h"#include "inbox_page.h"#include "logout_page.h"#include "err_page.h"#include "action.h"#include "view_message.h"#include "view_attachment.h"#include "delete_message.h"#include "edit_addr_book_page.h"#include "edit_addr_book.h"#include "view_addresses.h"#include "compose_message_page.h"#include "send_message.h"#include "config.h"#include "preferences.h"#include "import_addr_page.h"#include "do_import_addr.h"#include "export_addr.h"#include "edit_pref_page.h"int init_global_variables(void);int parse_action(enum web_action);int command_line(void);int nmail(void);uid_t ruid;uid_t euid;gid_t rgid;gid_t egid;////////////////////////////////////////////////////////////////////////////// Startup - disable any special privledges, then see if called from//    command line or from http server and service request appropriatelyint main(void){   int err=0;   ruid=getuid();   euid=geteuid();   rgid=getgid();   egid=getegid();   setuid(ruid);   setgid(rgid);   umask(0777);   if(getenv("SCRIPT_NAME") == NULL)      err=command_line();   else      err=nmail();   return(err);}////////////////////////////////////////////////////////////////////////////// This gets run when nmail is called from the command line. Things to //    add here later include checking of permissions on directories and//    reporting the status as such and how to fix. For now, just report //    the version.int command_line(void){   printf("NMAIL  version " VERSION "\n\n");   return(0);}////////////////////////////////////////////////////////////////////////////// This gets run when the program is invoked from a http serverint nmail(void){   int err=0;   /* Don't allow SUID root */   if(ruid == 0 || euid == 0)   {      syslog(LOG_MAIL | LOG_ERR,"nmail will not allow you to run as root");      err_page();      return(EXIT_FAILURE);   }   init_global_variables();   /* get environment variables */   if(init_user_env() != 0)   {      syslog(LOG_MAIL | LOG_ERR,"problems with environment");      err_page();      return(EXIT_FAILURE);   }   /* read in and separate cgi stuff */   if(init_cgi_env() != 0)   {      syslog(LOG_MAIL | LOG_ERR,"problems with cgi stuff");      err_page();      return(EXIT_FAILURE);   }   /* get action and sessionid */   find_action_and_session();   if(mail_action == none)   {      login_page();      destroy_user_env();      destroy_cgi_env();      return(EXIT_SUCCESS);   }   err=login_authenticate();            if(err != 0)   {      if(err == 1)         err_bad_user_page();      else if(err == 2)         err_timeout_page();      else         err_page();      destroy_user_env();      destroy_cgi_env();      destroy_user_ses();      return(EXIT_FAILURE);   }   get_user_pref();   parse_action(mail_action);   destroy_user_env();   destroy_cgi_env();   destroy_user_ses();   destroy_user_pref();   return(EXIT_SUCCESS);}////////////////////////////////////////////////////////////////////////////int init_global_variables(void){   init_user_ses();   init_user_pref();   return(0);}////////////////////////////////////////////////////////////////////////////// This calls the appropriate function to service the users request//    (ie: viewing inbox, viewing message, saving preferences, ...)int parse_action(enum web_action mail_action){   switch (mail_action)   {      case login:      case view_inbox:         inbox_action();         break;      case logout:         logout_action();         break;      case view_message:         view_message_action();         break;      case view_attachment:         view_attachment_action();         break;      case delete_message:      case delete_messages:         delete_msg();         break;      case view_addr_book:         view_addr_book_action();         break;      case edit_addr_book:         edit_addr_book_action();         break;      case import_addr_book:         import_addr_page();         break;      case do_import_addr:         do_import_addr_action();         break;      case export_addr_book:         export_addr_action();         break;      case edit_pref:         edit_pref_page();         break;      case save_pref:         save_pref_action();         break;      case compose_message:      case reply_message:      case reply_all_message:      case forward_message:         compose_message_action();         break;      case view_addresses:         view_addresses_action();         break;      case send_message:         send_message_action();         break;      default:         syslog(LOG_MAIL | LOG_ERR,"Action not found");         err_page();   }   return(0);}////////////////////////////////////////////////////////////////////////////

⌨️ 快捷键说明

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