Example #1
0
 private function writePool($instanceNumber, $instanceId, $poolNumber, $poolId, PoolConfig $poolConfig)
 {
     $range = new IP($poolConfig->v('range'));
     $range6 = new IP($poolConfig->v('range6'));
     $processCount = $poolConfig->v('processCount');
     $splitRange = $range->split($processCount);
     $splitRange6 = $range6->split($processCount);
     $processConfig = ['managementIp' => sprintf('127.42.%d.%d', 100 + $instanceNumber, 100 + $poolNumber)];
     for ($i = 0; $i < $processCount; ++$i) {
         // protocol is udp unless it is the last process when there is
         // not just one process
         if (1 === $processCount || $i !== $processCount - 1) {
             $proto = 'udp';
             $port = 1194 + $i;
         } else {
             $proto = 'tcp';
             $port = 1194;
         }
         $processConfig['range'] = $splitRange[$i];
         $processConfig['range6'] = $splitRange6[$i];
         $processConfig['dev'] = sprintf('tun-%d-%d-%d', $instanceNumber, $poolNumber, $i);
         $processConfig['proto'] = $proto;
         $processConfig['port'] = $port;
         $processConfig['managementPort'] = 11940 + $i;
         $processConfig['configName'] = sprintf('server-%s-%s-%d.conf', $instanceId, $poolId, $i);
         $this->writeProcess($instanceId, $poolId, $poolConfig, $processConfig);
     }
 }