{ Ask } Question ?
{ FAQ } Help !
{ Video } Tutorials
{ Knowledge } Base
{ ./Basement.cpp }
{ /includes/[Confg & Functions].cpp }
{ /modules/VirtualHost }
{ /modules/wwwFolderStructure }
{ /modules/wwwPHPPreset }
{ /modules/wwwHTMLPreset }
{ /modules/wwwCSSPreset }
{ /modules/wwwJSPreset }
{ /modules/backupFolderStructure }
reference > Basement.cpp

      
#include 
#include 
#include 

#include "includes/Confg.cpp"

#include "modules/VirtualHost/VirtualHost.cpp"
#include "modules/wwwFolderStructure/wwwFolderStructure.cpp"
#include "modules/wwwHTMLPreset/wwwHTMLPreset.cpp"
#include "modules/wwwCSSPreset/wwwCSSPreset.cpp"
#include "modules/wwwJSPreset/wwwJSPreset.cpp"
#include "modules/wwwPHPPreset/wwwPHPPreset.cpp"
#include "modules/backupFolderStructure/backupFolderStructure.cpp"

using namespace std;

map _Confg;
map indexConfg,indexValidCodeConfg,valueValidCodeConfg;
ofstream VirtualHostFile,HTMLFile,CSSFile,JSFile,PHPFile;
string basePath,systemName,domain,ipAddress,email,path;
string wwwFolder,backupFolder,cronsFolder,virtualHostFolder,virtualHostFile;

Confg* Confg_;

void Init()
{   
  systemName = "OVH Server Basement Version 2.0";
  
  // --- Do all initial setups
  
  Confg_ = new Confg(systemName,"/serverroot/etc/ovh/sb/confg/ovh.sb.confg");
  
  basePath = _Functions->trimStr(Confg_->getVal("PATH"));
  ipAddress = Confg_->getNode("IP");
  email = Confg_->getNode("ADMIN[EMAIL]");
  
  // --- If Yes, this means we are on LIVE ubuntu server then no need for the base path
  if(basePath.compare("./")==0)basePath="";
  
  // --- This file structure is for Ubuntu Server OS
  
  wwwFolder = basePath +"/var/www/";
  backupFolder = basePath+"/home/";
  cronsFolder = basePath+"/var/spool/cron/crontabs/";
  virtualHostFolder= basePath +"/etc/apache2/sites-available/";
  virtualHostFile="default";
}

void configurationSetup()
{
    Confg_->PreviewConfg();
    Confg_->EditConfg();
}

void RunSetupWizard()
{
    //cout << "Enter your IP Addess: ";cin >> ipAddress;
    cout << "Enter your Domain Name: ";cin >> domain;
    
    // 1. --- Update Virtual Hosts
    
    VirtualHost* _VH;
    _VH = new VirtualHost(systemName,virtualHostFolder,wwwFolder,virtualHostFile);
    _VH->autoAppendVirtualHost(ipAddress,domain);
    
    cout << "--- [VirtualHost] Successfully Updated.."<< endl;
    
    // 2. --- auto Create WWWFolders
    
    wwwFolderStructure* _wFS = new wwwFolderStructure(wwwFolder);
    _wFS->autoCreateWWWFolders(domain);
    
    cout << "--- ['www' folder structure] Successfully created.."<< endl;
    
    // 3. --- Preset HTML File and auto link its Stylesheet and JavaScript
    
    wwwHTMLPreset* _wHP = new wwwHTMLPreset(systemName,wwwFolder);
    _wHP->autoPresetHTML(domain);
    
    cout << "--- [HTML Preset] Successfully created.."<< endl;
    
    // 4. ------- Preset CSS File
    
    wwwCSSPreset* _wCP = new wwwCSSPreset(systemName,wwwFolder);
    _wCP->autoPresetCSS(domain);
    
    cout << "--- [CSS Preset] Successfully created.."<< endl;
    
    // 5. ------- Preset JavaScript File
    
    wwwJSPreset* _wJP = new wwwJSPreset(systemName,wwwFolder);
    _wJP->autoPresetJS(domain);
    
    cout << "--- [JavaScript Preset] Successfully created.."<< endl;
    
    // 6. ------- Preset JavaScript File
    
    wwwPHPPreset* _wPP = new wwwPHPPreset(systemName,wwwFolder);
    _wPP->autoPresetPHP(domain);
    
    cout << "--- [PHP Preset] Successfully created.."<< endl;
    
    // 7. ------- Create a 'www' folder structure
    
    backupFolderStructure* _bFS = new backupFolderStructure(backupFolder);
    _bFS->autoCreateBackupFolders(domain);
    
    cout << "--- [backup folder structure] Successfully created.."<< endl;
    
    cout << endl;
    cout << "--- Setup Complete!"<< endl;
    cout << "--- NB: You can now RESTART your Web Server i.e.(Apache)"<< endl;
    cout << "--- Thank you"<< endl<< endl;
}

void RunSetupAdvanced()
{
    if(Confg_->getNode("IP").empty())
    {
        cout << "Enter your IP Addess: ";cin >> ipAddress;
    }
    
    cout << "Enter your Domain Name: ";cin >> domain;
    cout << endl;
    
    // 1. --- Update Virtual Hosts
    
    VirtualHost* _VH;
    
    _VH = new VirtualHost(systemName,virtualHostFolder,wwwFolder,virtualHostFile);
    _VH->autoAppendVirtualHost(ipAddress,domain);
    
    cout << "--- [VirtualHost] Successfully Updated.."<< endl;
    
    // 2. --- auto Create WWWFolders
    
    wwwFolderStructure* _wFS = new wwwFolderStructure(wwwFolder);
    _wFS->autoCreateWWWFolders(domain);
    
    cout << "--- ['www' folder structure] Successfully created.."<< endl;
    
    // 3. --- Preset HTML File and auto link its Stylesheet and JavaScript
    
    wwwHTMLPreset* _wHP = new wwwHTMLPreset(systemName,wwwFolder);
    _wHP->autoPresetHTML(domain);
    
    cout << "--- [HTML Preset] Successfully created.."<< endl;
    
    // 4. ------- Preset CSS File
    
    wwwCSSPreset* _wCP = new wwwCSSPreset(systemName,wwwFolder);
    _wCP->autoPresetCSS(domain);
    
    cout << "--- [CSS Preset] Successfully created.."<< endl;
    
    // 5. ------- Preset JavaScript File
    
    wwwJSPreset* _wJP = new wwwJSPreset(systemName,wwwFolder);
    _wJP->autoPresetJS(domain);
    
    cout << "--- [JavaScript Preset] Successfully created.."<< endl;
    
    // 6. ------- Preset JavaScript File
    
    wwwPHPPreset* _wPP = new wwwPHPPreset(systemName,wwwFolder);
    _wPP->autoPresetPHP(domain);
    
    cout << "--- [PHP Preset] Successfully created.."<< endl;
    
    // 7. ------- Create a 'www' folder structure
    
    backupFolderStructure* _bFS = new backupFolderStructure(backupFolder);
    _bFS->autoCreateBackupFolders(domain);
    
    cout << "--- [backup folder structure] Successfully created.."<< endl;
    
    cout << endl;
    cout << "--- Setup Complete!"<< endl;
    cout << "--- NB: You can now RESTART your Web Server i.e.(Apache)"<< endl;
    cout << "--- Thank you"<< endl<< endl;
}

int mainMenu() // System main menu
{
    int optMenu;
    // --- Main Menu
    
    cout<< endl;
    cout<<"__________ OVH Server Basement 2.0 _________"<< endl;
    cout<<"|                                          |"<< endl;
    cout<<"|  1 : Run Setup - Wizard (Recommended)    |"<< endl;
    cout<<"|  2 : Run Setup - Auto (Advanced)         |"<< endl;
    cout<<"|  3 : Priveiw Current Configuration       |"<< endl;
    cout<<"|  4 : Configuration Settings              |"<< endl;
    cout<<"|  0 : Exit                                |"<< endl;
    cout<<"____________________________________________"<< endl;
    cout<< endl;
    cout << "Please, enter your option: ";cin >> optMenu;
    cout<< endl;
    
    return optMenu;
}

int main()
{
  // Init method to initialize system default settings i.e. system name and standadrd folders
  Init();
  
  char none; // --- This is simply for wizard traversal purposes
  int optMenu;// --- Main Menu option
  int wrongCount = 0;// --- Main Menu option
  
  while(true)
  {
      if(wrongCount!=3)
      {
          optMenu =  mainMenu(); // Enter main menu
          
          if(optMenu==1)
          {
              RunSetupWizard();
              wrongCount=0;
          }
          else if(optMenu==2)
          {
              RunSetupAdvanced();
              wrongCount=0;
          }
          else if(optMenu==3)
          {
              Confg_->PreviewConfg();
          }
          else if(optMenu==4)
          {
              configurationSetup();Init();
              wrongCount=0;
          }
          else if(optMenu==0) // --- Menu exit
          {
              cout<<"Exiting, Thank you."<< endl<< endl;
              exit(0);
          }else
          {
              cout<< endl<<"Wrong option, please try again."<< endl<< endl;
              wrongCount++;
          }
      }else // --- Exit the system if Error count = 3
      {
          cout<<"You have entered WRONG option 3 times!"<< endl;
          cout<<"Exiting, Thank you."<< endl<< endl;
          exit(0);
      }
  }
  
  return 0;
}
          
 

DEMO