setStaticNatForServer() public static method

public static setStaticNatForServer ( DBServer $dbServer )
$dbServer DBServer
 public function OnHostInit(\HostInitEvent $event)
 {
     if (!in_array($event->DBServer->platform, array(\SERVER_PLATFORMS::CLOUDSTACK, \SERVER_PLATFORMS::IDCF))) {
         return;
     }
     if ($event->DBServer->farmRoleId) {
         $dbFarmRole = $event->DBServer->GetFarmRoleObject();
         if ($dbFarmRole->GetSetting(\DBFarmRole::SETIING_CLOUDSTACK_USE_STATIC_NAT)) {
             CloudstackHelper::setStaticNatForServer($event->DBServer);
             return true;
         }
         $networkType = $dbFarmRole->GetSetting(\DBFarmRole::SETTING_CLOUDSTACK_NETWORK_TYPE);
         $networkId = $dbFarmRole->GetSetting(\DBFarmRole::SETTING_CLOUDSTACK_NETWORK_ID);
         if ($networkType == 'Direct' || !$networkId) {
             return true;
         }
         if ($networkId == 'SCALR_MANUAL') {
             $map = $dbFarmRole->GetSetting(\DBFarmRole::SETIING_CLOUDSTACK_STATIC_NAT_PRIVATE_MAP);
             $map = explode(";", $map);
             foreach ($map as $ipMapping) {
                 $ipInfo = explode("=", $ipMapping);
                 if ($ipInfo[0] == $event->DBServer->localIp) {
                     $event->DBServer->remoteIp = $ipInfo[1];
                     $event->DBServer->Save();
                 }
             }
         }
         $sharedIpId = $dbFarmRole->GetSetting(\DBFarmRole::SETTING_CLOUDSTACK_SHARED_IP_ID);
     }
     $platform = PlatformFactory::NewPlatform($event->DBServer->platform);
     try {
         $environment = $event->DBServer->GetEnvironmentObject();
         $cloudLocation = $event->DBServer->GetCloudLocation();
         if (!$sharedIpId) {
             $sharedIpId = $platform->getConfigVariable(CloudstackPlatformModule::SHARED_IP_ID . ".{$cloudLocation}", $environment, false);
         }
         if (!$sharedIpId) {
             return true;
         }
         $cs = $environment->cloudstack($event->DBServer->platform);
         // Create port forwarding rules for scalarizr
         $port = $platform->getConfigVariable(CloudstackPlatformModule::SZR_PORT_COUNTER . ".{$cloudLocation}.{$sharedIpId}", $environment, false);
         if (!$port) {
             $port1 = 30000;
             $port2 = 30001;
             $port3 = 30002;
             $port4 = 30003;
         } else {
             $port1 = $port + 1;
             $port2 = $port1 + 1;
             $port3 = $port2 + 1;
             $port4 = $port3 + 1;
         }
         $result2 = $cs->firewall->createPortForwardingRule(array('ipaddressid' => $sharedIpId, 'privateport' => 8014, 'protocol' => "udp", 'publicport' => $port1, 'virtualmachineid' => $event->DBServer->GetProperty(\CLOUDSTACK_SERVER_PROPERTIES::SERVER_ID)));
         $result1 = $cs->firewall->createPortForwardingRule(array('ipaddressid' => $sharedIpId, 'privateport' => 8013, 'protocol' => "tcp", 'publicport' => $port1, 'virtualmachineid' => $event->DBServer->GetProperty(\CLOUDSTACK_SERVER_PROPERTIES::SERVER_ID)));
         $result3 = $cs->firewall->createPortForwardingRule(array('ipaddressid' => $sharedIpId, 'privateport' => 8010, 'protocol' => "tcp", 'publicport' => $port3, 'virtualmachineid' => $event->DBServer->GetProperty(\CLOUDSTACK_SERVER_PROPERTIES::SERVER_ID)));
         $result4 = $cs->firewall->createPortForwardingRule(array('ipaddressid' => $sharedIpId, 'privateport' => 8008, 'protocol' => "tcp", 'publicport' => $port2, 'virtualmachineid' => $event->DBServer->GetProperty(\CLOUDSTACK_SERVER_PROPERTIES::SERVER_ID)));
         $result5 = $cs->firewall->createPortForwardingRule(array('ipaddressid' => $sharedIpId, 'privateport' => 22, 'protocol' => "tcp", 'publicport' => $port4, 'virtualmachineid' => $event->DBServer->GetProperty(\CLOUDSTACK_SERVER_PROPERTIES::SERVER_ID)));
         $event->DBServer->SetProperties(array(\SERVER_PROPERTIES::SZR_CTRL_PORT => $port1, \SERVER_PROPERTIES::SZR_SNMP_PORT => $port1, \SERVER_PROPERTIES::SZR_API_PORT => $port3, \SERVER_PROPERTIES::SZR_UPDC_PORT => $port2, \SERVER_PROPERTIES::CUSTOM_SSH_PORT => $port4));
         $platform->setConfigVariable(array(CloudstackPlatformModule::SZR_PORT_COUNTER . ".{$cloudLocation}.{$sharedIpId}" => $port4), $environment, false);
     } catch (\Exception $e) {
         $this->Logger->fatal(new \FarmLogMessage($this->FarmID, sprintf(_("Cloudstack handler failed: %s."), $e->getMessage())));
     }
 }