Failed Conditions
Pull Request — dev (#132)
by Steve
03:45
created

public/index.php (1 issue)

Upgrade to new PHP Analysis Engine

These results are based on our legacy PHP analysis, consider migrating to our new PHP analysis engine instead. Learn more

1
<?php
2
/**
3
 * Mage Scan
4
 *
5
 * PHP version 5
6
 *
7
 * @category  MageScan
8
 * @package   MageScan
9
 * @author    Steve Robbins <[email protected]>
10
 * @copyright 2015 Steve Robbins
11
 * @license   http://creativecommons.org/licenses/by/4.0/ CC BY 4.0
12
 * @link      https://github.com/steverobbins/magescan
13
 */
14
15
require_once '../vendor/autoload.php';
16
17
use MageScan\Url;
18
use MageScan\Request;
19
20
$suggestUrl = '';
21
if (isset($_GET['url'])) {
22
    $url = $_GET['url'];
23
    $magescanUrl = new Url;
24
    $url = $magescanUrl->clean(urldecode($_GET['url']));
25
    $request = new Request($url, false);
26
    $response = $request->get($url);
0 ignored issues
show
Documentation Bug introduced by
The method get does not exist on object<MageScan\Request>? Since you implemented __call, maybe consider adding a @method annotation.

If you implement __call and you know which methods are available, you can improve IDE auto-completion and static analysis by adding a @method annotation to the class.

This is often the case, when __call is implemented by a parent class and only the child class knows which methods exist:

class ParentClass {
    private $data = array();

    public function __call($method, array $args) {
        if (0 === strpos($method, 'get')) {
            return $this->data[strtolower(substr($method, 3))];
        }

        throw new \LogicException(sprintf('Unsupported method: %s', $method));
    }
}

/**
 * If this class knows which fields exist, you can specify the methods here:
 *
 * @method string getName()
 */
class SomeClass extends ParentClass { }
Loading history...
27
    $headers = $response->getHeaders();
28
    if (isset($headers['Location'])) {
29
        $suggestUrl = $headers['Location'];
30
    }
31
    $suggestUrl = trim($suggestUrl, '/');
32
} else {
33
    $url = false;
34
}
35
36
?><!DOCTYPE html>
37
<html>
38
<head>
39
    <meta charset="UTF-8">
40
    <title>Mage Scan<?php echo $url ? ' - ' .$url : '' ?></title>
41
    <meta name="viewport" content="width=device-width, initial-scale=1">
42
    <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.4/css/bootstrap.min.css">
43
    <link rel="stylesheet" href="css/loaders.min.css">
44
    <link rel="stylesheet" href="css/style.css">
45
</head>
46
<body>
47
    <nav class="navbar navbar-inverse">
48
        <button type="button" class="navbar-toggle collapsed" data-toggle="collapse" data-target="#navbar" aria-expanded="false" aria-controls="navbar">
49
            <span class="sr-only">Toggle navigation</span>
50
            <span class="icon-bar"></span>
51
            <span class="icon-bar"></span>
52
            <span class="icon-bar"></span>
53
        </button>
54
        <div class="container">
55
            <div class="navbar-header">
56
                <a class="navbar-brand" href="/">Mage Scan <?php echo file_get_contents('download/version') ?></a>
57
            </div>
58
            <div id="navbar" class="navbar-collapse collapse">
59
                <ul class="nav navbar-nav">
60
                    <li><a href="https://github.com/steverobbins/magescan">GitHub</a></li>
61
                    <li><a href="download/magescan.phar">Download <strong>magescan.phar</strong></a></li>
62
                </ul>
63
            </div>
64
        </div>
65
    </nav>
66
    <div class="container">
67
        <div class="page-header">
68
            <h1>Scan Your Magento Store</h1>
69
        </div>
70
        <form id="magescan-form" method="get" action="/">
71
            <fieldset>
72
                <input type="text" placeholder="http://store.example.com/" autofocus="autofocus" name="url"<?php echo $url ? ' value="' . $url . '"' : '' ?> />
73
                <input type="submit" value="Scan" />
74
            </fieldset>
75
        </form>
76
        <?php if ($suggestUrl && $url != $suggestUrl): ?>
77
        <div class="suggest">
78
            Did you mean <a href="?url=<?php echo urlencode($suggestUrl) ?>"><?php echo $suggestUrl ?></a>?
79
        </div>
80
        <?php endif ?>
81
    </div>
82
    <?php if ($url): ?>
83
    <div class="container">
84
        <div class="page-header">
85
            <h2>Results for <a href="<?php echo $url ?>"><?php echo $url ?></a></h2>
86
        </div>
87
        <div id="results">
88
            <div class="row">
89
                <div class="col-sm-4" id="magentoinfo">
90
                    <div class="panel panel-default">
91
                        <div class="panel-heading">
92
                            <h3 class="panel-title">Magento</h3>
93
                        </div>
94
                        <div class="panel-body response">
95
                            <div class="loader">
96
                                <div class="loader-inner ball-clip-rotate-multiple">
97
                                    <div></div>
98
                                    <div></div>
99
                                </div>
100
                            </div>
101
                        </div>
102
                    </div>
103
                </div>
104
                <div class="col-sm-4" id="sitemap">
105
                    <div class="panel panel-default">
106
                        <div class="panel-heading">
107
                            <h3 class="panel-title">Sitemap</h3>
108
                        </div>
109
                        <div class="panel-body response">
110
                            <div class="loader">
111
                                <div class="loader-inner ball-clip-rotate-multiple">
112
                                    <div></div>
113
                                    <div></div>
114
                                </div>
115
                            </div>
116
                        </div>
117
                    </div>
118
                </div>
119
                <div class="col-sm-4" id="catalog">
120
                    <div class="panel panel-default">
121
                        <div class="panel-heading">
122
                            <h3 class="panel-title">Catalog <span class="label label-info">?</span></h3>
123
                        </div>
124
                        <div class="panel-body">
125
                            <div class="alert alert-info">This only includes visible and enabled entities for this store view.</div>
126
                            <div class="response">
127
                                <div class="loader">
128
                                    <div class="loader-inner ball-clip-rotate-multiple">
129
                                        <div></div>
130
                                        <div></div>
131
                                    </div>
132
                                </div>
133
                            </div>
134
                        </div>
135
                    </div>
136
                </div>
137
            </div>
138
            <div class="row">
139
                <div class="col-sm-4">
140
                    <div class="panel panel-default" id="servertech">
141
                        <div class="panel-heading">
142
                            <h3 class="panel-title">Technology</h3>
143
                        </div>
144
                        <div class="panel-body response">
145
                            <div class="loader">
146
                                <div class="loader-inner ball-clip-rotate-multiple">
147
                                    <div></div>
148
                                    <div></div>
149
                                </div>
150
                            </div>
151
                        </div>
152
                    </div>
153
                    <div class="panel panel-default" id="patch">
154
                        <div class="panel-heading">
155
                            <h3 class="panel-title">Patches</h3>
156
                        </div>
157
                        <div class="panel-body">
158
                            <div class="magereport">
159
                                Need help? View report on <a href="https://www.magereport.com/scan/?s=<?php echo urlencode($url) ?>">MageReport.com</a>
160
                            </div>
161
                            <div class="response">
162
                                <div class="loader">
163
                                    <div class="loader-inner ball-clip-rotate-multiple">
164
                                        <div></div>
165
                                        <div></div>
166
                                    </div>
167
                                </div>
168
                            </div>
169
                        </div>
170
                    </div>
171
                    <div class="panel panel-default" id="modules">
172
                        <div class="panel-heading">
173
                            <h3 class="panel-title">Modules</h3>
174
                        </div>
175
                        <div class="panel-body response">
176
                            <div class="loader">
177
                                <div class="loader-inner ball-clip-rotate-multiple">
178
                                    <div></div>
179
                                    <div></div>
180
                                </div>
181
                            </div>
182
                        </div>
183
                    </div>
184
                </div>
185
                <div class="col-sm-8" id="unreachablepath">
186
                    <div class="panel panel-default">
187
                        <div class="panel-heading">
188
                            <h3 class="panel-title">Sensitive URLs <span class="label label-info">?</span></h3>
189
                        </div>
190
                        <div class="panel-body">
191
                            <div class="alert alert-info">These are URLs that may reveal sensative information about the system.  They shouldn't be visible to the public.</div>
192
                            <div class="response">
193
                                <div class="loader">
194
                                    <div class="loader-inner ball-clip-rotate-multiple">
195
                                        <div></div>
196
                                        <div></div>
197
                                    </div>
198
                                </div>
199
                            </div>
200
                        </div>
201
                    </div>
202
                </div>
203
            </div>
204
        </div>
205
    </div>
206
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.4/jquery.min.js"></script>
207
    <script src="js/script.js"></script>
208
    <script>
209
        jQuery(document).ready(function() {
210
            MageScan.scan('<?php echo $url ?>');  
211
        })
212
    </script>
213
    <?php endif ?>
214
    <script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.4/js/bootstrap.min.js"></script>
215
    <script>
216
        (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
217
        (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
218
        m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
219
        })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
220
        ga('create', 'UA-16126282-21', 'auto');
221
        ga('send', 'pageview');
222
    </script>
223
</body>
224
</html>
225