Ejemplo n.º 1
0
 public function setUp()
 {
     $httpClient = new TestHttpClient();
     $this->service = new Service();
     $this->service->addModule(new AdminPortalModule(new JsonTpl(), new ServerClient($httpClient, 'serverClient')));
     $this->service->addBeforeHook('auth', new NullAuthenticationHook('foo'));
 }
Ejemplo n.º 2
0
    $tpl->setDefault(['requestUri' => $request->getUri(), 'requestRoot' => $request->getRoot(), 'requestRootUri' => $request->getRootUri()]);
    $service = new Service($tpl);
    $service->addBeforeHook('referrer_check', new ReferrerCheckHook());
    $service->addAfterHook('no_cache', new NoCacheHook());
    // Authentication
    $authMethod = $config->v('authMethod');
    $tpl->addDefault(['authMethod' => $authMethod]);
    $session = new Session($request->getServerName(), $request->getRoot(), $config->v('secureCookie'));
    switch ($authMethod) {
        case 'MellonAuthentication':
            $service->addBeforeHook('auth', new MellonAuthenticationHook($config->v('MellonAuthentication', 'attribute')));
            break;
        case 'FormAuthentication':
            $tpl->addDefault(['_show_logout' => true]);
            $service->addBeforeHook('auth', new FormAuthenticationHook($session, $tpl));
            $service->addModule(new FormAuthenticationModule($config->v('FormAuthentication'), $session, $tpl));
            break;
        default:
            throw new RuntimeException('unsupported authentication mechanism');
    }
    // vpn-server-api
    $serverClient = new ServerClient(new GuzzleHttpClient(['defaults' => ['auth' => [$config->v('apiUser'), $config->v('apiPass')]]]), $config->v('apiUri'));
    $service->addBeforehook('two_factor', new TwoFactorHook($session, $tpl, $serverClient));
    // two factor module
    $twoFactorModule = new TwoFactorModule($serverClient, $session, $tpl);
    $service->addModule($twoFactorModule);
    $adminPortalModule = new AdminPortalModule($tpl, $serverClient);
    $service->addModule($adminPortalModule);
    $service->run($request)->send();
} catch (Exception $e) {
    $logger->error($e->getMessage());
Ejemplo n.º 3
0
use SURFnet\VPN\Server\InstanceConfig;
use SURFnet\VPN\Common\Logger;
use SURFnet\VPN\Server\OpenVpn\ManagementSocket;
use SURFnet\VPN\Server\OpenVpn\ServerManager;
$logger = new Logger('vpn-server-api');
try {
    // this is provided by Apache, using CanonicalName
    $request = new Request($_SERVER, $_GET, $_POST);
    $instanceId = $request->getServerName();
    $dataDir = sprintf('%s/data/%s', dirname(__DIR__), $instanceId);
    $configDir = sprintf('%s/config/%s', dirname(__DIR__), $instanceId);
    $config = InstanceConfig::fromFile(sprintf('%s/config.yaml', $configDir));
    $service = new Service();
    $basicAuthentication = new BasicAuthenticationHook($config->v('apiConsumers'), 'vpn-server-api');
    $service->addBeforeHook('auth', $basicAuthentication);
    $service->addModule(new LogModule($dataDir));
    $service->addModule(new OpenVpnModule(new ServerManager($config, new ManagementSocket(), $logger)));
    $service->addModule(new CommonNamesModule(new CommonNames(sprintf('%s/common_names', $dataDir)), $logger));
    $service->addModule(new UsersModule(new Users(sprintf('%s/users', $dataDir)), $logger));
    $groupProviders = [];
    if ($config->e('groupProviders')) {
        foreach (array_keys($config->v('groupProviders')) as $groupProviderId) {
            $groupProviderClass = sprintf('SURFnet\\VPN\\Server\\GroupProvider\\%s', $groupProviderId);
            $groupProviders[] = new $groupProviderClass($dataDir, $config);
        }
    }
    $service->addModule(new GroupsModule($groupProviders, $logger));
    $service->addModule(new InfoModule($config));
    $service->run($request)->send();
} catch (Exception $e) {
    $logger->error($e->getMessage());