コード例 #1
0
ファイル: IndexPage.php プロジェクト: paragonie/airship
 /**
  * @route help
  */
 public function helpPage()
 {
     if ($this->isLoggedIn()) {
         $this->storeLensVar('showmenu', true);
         //
         $cabins = $this->getCabinNamespaces();
         // Get debug information.
         $helpInfo = ['cabins' => [], 'cabin_names' => \array_values($cabins), 'gears' => [], 'universal' => []];
         /**
          * This might reveal "sensitive" information. By default, it's
          * locked out of non-administrator users. You can grant access to
          * other users/groups via the Permissions menu.
          */
         if ($this->can('read')) {
             $state = State::instance();
             if (\is_readable(ROOT . '/config/gadgets.json')) {
                 $helpInfo['universal']['gadgets'] = \Airship\loadJSON(ROOT . '/config/gadgets.json');
             }
             if (\is_readable(ROOT . '/config/content_security_policy.json')) {
                 $helpInfo['universal']['content_security_policy'] = \Airship\loadJSON(ROOT . '/config/content_security_policy.json');
             }
             foreach ($cabins as $cabin) {
                 $cabinData = ['config' => \Airship\loadJSON(ROOT . '/Cabin/' . $cabin . '/manifest.json'), 'content_security_policy' => [], 'gadgets' => [], 'motifs' => [], 'user_motifs' => \Airship\LensFunctions\user_motif($this->getActiveUserId(), $cabin)];
                 $prefix = ROOT . '/Cabin/' . $cabin . '/config/';
                 if (\is_readable($prefix . 'gadgets.json')) {
                     $cabinData['gadgets'] = \Airship\loadJSON($prefix . 'gadgets.json');
                 }
                 if (\is_readable($prefix . 'motifs.json')) {
                     $cabinData['motifs'] = \Airship\loadJSON($prefix . 'motifs.json');
                 }
                 if (\is_readable($prefix . 'content_security_policy.json')) {
                     $cabinData['content_security_policy'] = \Airship\loadJSON($prefix . 'content_security_policy.json');
                 }
                 $helpInfo['cabins'][$cabin] = $cabinData;
             }
             $helpInfo['gears'] = [];
             foreach ($state->gears as $gear => $latestGear) {
                 $helpInfo['gears'][$gear] = \Airship\get_ancestors($latestGear);
             }
             // Only grab data likely to be pertinent to common issues:
             $keys = ['airship', 'auto-update', 'debug', 'guzzle', 'notary', 'rate-limiting', 'session_config', 'tor-only', 'twig_cache'];
             $helpInfo['universal']['config'] = \Airship\keySlice($state->universal, $keys);
             $helpInfo['php'] = ['halite' => Halite::VERSION, 'libsodium' => ['major' => \Sodium\library_version_major(), 'minor' => \Sodium\library_version_minor(), 'version' => \Sodium\version_string()], 'version' => \PHP_VERSION, 'versionid' => \PHP_VERSION_ID];
         }
         $this->lens('help', ['active_link' => 'bridge-link-help', 'airship' => \AIRSHIP_VERSION, 'helpInfo' => $helpInfo]);
     } else {
         // Not a registered user? Go read the docs. No info leaks for you!
         \Airship\redirect('https://github.com/paragonie/airship-docs');
     }
 }
コード例 #2
0
ファイル: motifs.php プロジェクト: paragonie/airship
                    if (\is_dir($motifEnd . '/public')) {
                        $motifPublic = CABIN_DIR . '/public/motif/' . $motif;
                        if (!\is_link($motifPublic)) {
                            \symlink($motifEnd . '/public', $motifPublic);
                        }
                    }
                    // Finally, load the configuration:
                    if (\file_exists($motifEnd . '/motif.json')) {
                        $motifConfig['config'] = \Airship\loadJSON($motifEnd . '/motif.json');
                    } else {
                        $motifConfig['config'] = [];
                    }
                    $motifs[$motif] = $motifConfig;
                }
            }
            \Airship\saveJSON($motifCacheFile, $motifs);
            $state->motifs = $motifs;
        } else {
            die(\__("FATAL ERROR: Motifs file is not readable"));
        }
    }
}
$userMotif = \Airship\LensFunctions\user_motif();
if (!empty($userMotif)) {
    $activeMotif = $userMotif['name'];
} elseif (isset($_settings['active-motif'])) {
    $activeMotif = $_settings['active-motif'];
}
if (isset($activeMotif)) {
    $lens->setBaseTemplate($activeMotif)->loadMotifCargo($activeMotif)->loadMotifConfig($activeMotif)->addGlobal('MOTIF', $state->motif_config);
}