-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathindex.php
99 lines (73 loc) · 2.65 KB
/
index.php
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
<?php
require './vendor/autoload.php';
require './lib/Composer.php';
/**
* Configuration, change at will
*/
ini_set("display_errors",1);
// Show detailed errors, only for debugging
$config['displayErrorDetails'] = true;
// Allow CORS requests from the following domains, configure for more security
$config['allowedRemoteDomains'] = '*';
$appconfig = json_decode(file_get_contents('config.json'), true);
$config = array_merge($appconfig, $config);
/**
* End of config
*/
/**
* Setup Slim
*/
$composer = new Composer($appconfig['project-path'], $appconfig['composer-binary']);
$app = new \Slim\App(['settings' => $config, 'composer' => $composer]);
$container = $app->getContainer();
$container['cache'] = function () {
return new \Slim\HttpCache\CacheProvider();
};
$container['view'] = function ($container) {
$view = new \Slim\Views\Twig(dirname(__FILE__) . '/twig', [
'cache' => false // dirname(__FILE__) . '/cache'
]);
// Instantiate and add Slim specific extension
$router = $container->get('router');
$uri = \Slim\Http\Uri::createFromEnvironment(new \Slim\Http\Environment($_SERVER));
$view->addExtension(new Slim\Views\TwigExtension($router, $uri));
return $view;
};
$app->add(new \Slim\HttpCache\Cache('public', 86400));
/**
* App Routes
*/
$app->get('/', function ($request, $response, $args) {
$composer = $this->get('composer');
return $this->view->render($response, 'index.twig', [
'fileexists' => $composer->composerFileExists(),
'packages' => $composer->getInstalledPackages(),
'infos' => $composer->getComposerFile(),
'composerfile' => $composer->getComposerFile(true),
'filepath' => $composer->getComposerFilePath(),
'commands' => $this->get('settings')['allowed-commands']
]);
})->setName('home');
$app->post('/savefile', function ($request, $response, $args) {
$data = $request->getParsedBody();
$contents = $data['composerfilecontent'];
if ($contents) {
$composer = $this->get('composer');
$composer->saveComposerFile($contents);
}
$response = $response->withRedirect($this->router->pathFor('home'),303);
return $response;
})->setName('savefile');
$app->post('/execute', function ($request, $response, $args) {
$data = $request->getParsedBody();
$cmd = $data['cmd'];
if (in_array($cmd, $this->get('settings')['allowed-commands'])) {
$composer = $this->get('composer');
echo '<pre>';
$composer->runCommand($cmd);
echo '</pre>';
}
//$response = $response->withRedirect($this->router->pathFor('home'),303);
return $response;
})->setName('execute');
$app->run();