Test Failed
Push — release_2_0 ( 4f5860...ab0402 )
by Tomasz
07:55
created

Devices::listDevices()   B

Complexity

Conditions 1
Paths 1

Size

Total Lines 471
Code Lines 348

Duplication

Lines 0
Ratio 0 %

Importance

Changes 9
Bugs 0 Features 0
Metric Value
eloc 348
c 9
b 0
f 0
dl 0
loc 471
rs 8
cc 1
nc 1
nop 0

How to fix   Long Method   

Long Method

Small methods make your code easier to understand, in particular if combined with a good name. Besides, if your method is small, finding a good name is usually much easier.

For example, if you find yourself adding comments to a method's body, this is usually a good sign to extract the commented part to a new method, and use the comment as a starting point when coming up with a good name for this new method.

Commonly applied refactorings include:

1
<?php
2
3
/*
4
 * *****************************************************************************
5
 * Contributions to this work were made on behalf of the GÉANT project, a 
6
 * project that has received funding from the European Union’s Framework 
7
 * Programme 7 under Grant Agreements No. 238875 (GN3) and No. 605243 (GN3plus),
8
 * Horizon 2020 research and innovation programme under Grant Agreements No. 
9
 * 691567 (GN4-1) and No. 731122 (GN4-2).
10
 * On behalf of the aforementioned projects, GEANT Association is the sole owner
11
 * of the copyright in all material which was developed by a member of the GÉANT
12
 * project. GÉANT Vereniging (Association) is registered with the Chamber of 
13
 * Commerce in Amsterdam with registration number 40535155 and operates in the 
14
 * UK as a branch of GÉANT Vereniging.
15
 * 
16
 * Registered office: Hoekenrode 3, 1102BR Amsterdam, The Netherlands. 
17
 * UK branch address: City House, 126-130 Hills Road, Cambridge CB2 1PQ, UK
18
 *
19
 * License: see the web/copyright.inc.php file in the file structure or
20
 *          <base_url>/copyright.php after deploying the software
21
 */
22
23
/**
24
 * This file contains the Devices class.
25
 *
26
 * @package ModuleWriting
27
 */
28
29
namespace devices;
30
31
/**
32
 * The Devices class holds a list of all devices the CAT knows about
33
 * 
34
 * @author Tomasz Wolniewicz <[email protected]>
35
 * 
36
 * @license see LICENSE file in root directory
37
 * 
38
 * @package ModuleWriting
39
 */
40
class Devices extends \core\common\Entity {
41
42
    const SUPPORT_RSA = 'RSA';
43
    const SUPPORT_ECDSA = 'ECDSA';
44
45
    /**
46
     * This array lists available configuration options for local device management.
47
     * Values from this array will be taken as defaults.
48
     * Do not modify this array unless you really konw what you are doing.
49
     * Default values will be overriden by the settings of options inside
50
     * each device definition
51
     *
52
     * - 'sign' - if set to nonzero will cause installer signing if the module
53
     *         supports this. The default settings for Microsoft and Apple systems
54
     *         is 1, since without signing, installation makes liitle sense. Be aware
55
     *         that you need to set up signers and have proper certificates, if
56
     *         you do not want to do that and you are just testing CAT, then you can
57
     *         switch sign to 0, of course.
58
     * - 'no_cache' if defined and equal to 1 will block installer caching - useful
59
     *         for device development, should not be used in production
60
     * - 'hidden' if defined and equal to 1 will hide the device form listing - 
61
     *         useful for device development 
62
     * - 'redirect if defined and equal to 1 will only show the device on the listing
63
     *         if device redirect has been defined by the admin
64
     * - 'message' if defined will cause a display of the contents of this option as
65
     *         an additional warning
66
     * - 'sb_message' aplickable only in the distribuition of Silverbullet profiles,
67
     *         if defined will cause a display of the contents of this option as
68
     *         an additional message. If the 'message' option is also defined then
69
     *         the sb_message will be displayed in the same window AFTER the contents
70
     *         of the 'message' option if that one.
71
     * - 'device_id' - used in building the installer filename; when this option
72
     *         is not defined, the filename will use the index from 
73
     *         the listDevices array; when defined and not empty, it will be 
74
     *         used in place of this index; when defined as empty will cause
75
     *         the omission of the device part the filename.
76
     *         The default is unset, so it is not listed in the Options array.
77
     * - 'mime' - used to set the MIME type of the installer file;
78
     *         if not set will default to the value provided by PHP finfo.
79
     *         The default is unset, so it is not listed in the Options array.
80
     */
0 ignored issues
show
Coding Style Documentation introduced by
Missing @var tag in member variable comment
Loading history...
81
    public static $Options = [
82
        'sign' => 0,
83
        'no_cache' => 0,
84
        'hidden' => 0,
85
        'redirect' => 0,
86
        'clientcert' => Devices::SUPPORT_RSA,
87
    ];
88
89
    /**
90
     * Each device is defined as a sub-array within this array
91
     *
92
     * Except for changing/adding things inside the options arrays, do not modify
93
     * this array unless you really know what you are doing.
94
     *
95
     * Beware that the entrance page of CAT contains a rolling ad which 
96
     * lists some devices, and also states that certain device modules are signed,
97
     * you should keep this information in sync with your settings in this file
98
     * See web/user/roll.php for settings and more information.
99
     *
100
     * Settings
101
     * - 'group' - caused device grouping used by the entrance screen
102
     * - 'display' is the name shown on the GUI button
103
     * - 'match' - a regular expression which will be matched against HTTP_USER_AGENT
104
     *             to discover the operating system of the user
105
     * - 'directory' is the subdirectory of devices directory, where
106
     *       the device module resides
107
     * - 'module' is the name of the module class, the same name with .php
108
     *       added will be used as the name of the main include file for the module
109
     * - 'signer' if defined points to a script which will sign a file. 
110
     *       The script must be located in the signer subdirectory of CAT.
111
     *       The first argument of this script must be the input file name, 
112
     *       the second - the signed file filename. Signer will not be used
113
     *       unless the sign option is set to nonzero.
114
     * - 'options' - the array of options overriding the default settings.
115
     *       See the descripption of options above.
116
     *
117
     * @example devices/devices-template.php file listing
118
     * @return array the device modules
119
     */
120
    public static function listDevices() {
121
        \core\common\Entity::intoThePotatoes();
122
        $retArray = [
123
            'w10' => [
124
                'group' => "microsoft",
125
                'display' => _("MS Windows 10"),
126
                'match' => 'Windows NT 10',
127
                'directory' => 'ms',
128
                'module' => 'W8_10',
129
                'signer' => 'ms_windows_sign',
130
                'options' => [
131
                    'sign' => 1,
132
                    'device_id' => 'W10',
133
                    'clientcert' => Devices::SUPPORT_ECDSA,
134
                    'mime' => 'application/x-dosexec',
135
                ],
136
            ],
137
            'w8' => [
138
                'group' => "microsoft",
139
                'display' => _("MS Windows 8, 8.1"),
140
                'match' => 'Windows NT 6[._][23]',
141
                'directory' => 'ms',
142
                'module' => 'W8_10',
143
                'signer' => 'ms_windows_sign',
144
                'options' => [
145
                    'sign' => 1,
146
                    'device_id' => 'W8',
147
                    'clientcert' => Devices::SUPPORT_ECDSA,
148
                    'mime' => 'application/x-dosexec',
149
                ],
150
            ],
151
            'w7' => [
152
                'group' => "microsoft",
153
                'display' => _("MS Windows 7"),
154
                'match' => 'Windows NT 6[._]1',
155
                'directory' => 'ms',
156
                'module' => 'Vista7',
157
                'signer' => 'ms_windows_sign',
158
                'options' => [
159
                    'sign' => 1,
160
                    'device_id' => 'W7',
161
                    'mime' => 'application/x-dosexec',
162
                ],
163
            ],
164
            'vista' => [
165
                'group' => "microsoft",
166
                'display' => _("MS Windows Vista"),
167
                'match' => 'Windows NT 6[._]0',
168
                'directory' => 'ms',
169
                'module' => 'Vista7',
170
                'signer' => 'ms_windows_sign',
171
                'options' => [
172
                    'sign' => 1,
173
                    'device_id' => 'Vista',
174
                    'mime' => 'application/x-dosexec',
175
                ],
176
            ],
177
            'win-rt' => [
178
                'group' => "microsoft",
179
                'display' => _("Windows RT"),
180
                'directory' => 'redirect_dev',
181
                'module' => 'RedirectDev',
182
                'options' => [
183
                    'hidden' => 0,
184
                    'redirect' => 1,
185
                ],
186
            ],
187
            'apple_catalina' => [
188
                'group' => "apple",
189
                'display' => _("Apple macOS Catalina / iPadOS 13"),
190
                'match' => 'Mac OS X 10[._]15',
191
                'directory' => 'apple_mobileconfig',
192
                'module' => 'mobileconfig_os_x',
193
                'signer' => 'mobileconfig_sign',
194
                'options' => [
195
                    'sign' => 1,
196
                    'device_id' => 'OS_X',
197
                    'mime' => 'application/x-apple-aspen-config',
198
                    'clientcert' => Devices::SUPPORT_ECDSA,
199
                    'sb_message' => _("During the installation you will be first asked to enter settings for certificate and there you need to enter the import PIN shown on this page. Later you will be prompted to enter your password to allow making changes to the profile, this time it is your computer password."),
200
                ],
201
            ],
202
            'apple_mojave' => [
203
                'group' => "apple",
204
                'display' => _("Apple macOS Mojave"),
205
                'match' => 'Mac OS X 10[._]14',
206
                'directory' => 'apple_mobileconfig',
207
                'module' => 'mobileconfig_os_x',
208
                'signer' => 'mobileconfig_sign',
209
                'options' => [
210
                    'sign' => 1,
211
                    'device_id' => 'OS_X',
212
                    'mime' => 'application/x-apple-aspen-config',
213
                    'clientcert' => Devices::SUPPORT_ECDSA,
214
                    'sb_message' => _("During the installation you will be first asked to enter settings for certificate and there you need to enter the import PIN shown on this page. Later you will be prompted to enter your password to allow making changes to the profile, this time it is your computer password."),
215
                ],
216
            ],
217
            'apple_hi_sierra' => [
218
                'group' => "apple",
219
                'display' => _("Apple macOS High Sierra"),
220
                'match' => 'Mac OS X 10[._]13',
221
                'directory' => 'apple_mobileconfig',
222
                'module' => 'mobileconfig_os_x',
223
                'signer' => 'mobileconfig_sign',
224
                'options' => [
225
                    'sign' => 1,
226
                    'device_id' => 'OS_X',
227
                    'mime' => 'application/x-apple-aspen-config',
228
                    'clientcert' => Devices::SUPPORT_ECDSA,
229
                    'sb_message' => _("During the installation you will be first asked to enter settings for certificate and there you need to enter the import PIN shown on this page. Later you will be prompted to enter your password to allow making changes to the profile, this time it is your computer password."),
230
                ],
231
            ],
232
            'apple_sierra' => [
233
                'group' => "apple",
234
                'display' => _("Apple macOS Sierra"),
235
                'match' => 'Mac OS X 10[._]12',
236
                'directory' => 'apple_mobileconfig',
237
                'module' => 'mobileconfig_os_x',
238
                'signer' => 'mobileconfig_sign',
239
                'options' => [
240
                    'sign' => 1,
241
                    'device_id' => 'OS_X',
242
                    'mime' => 'application/x-apple-aspen-config',
243
                    'sb_message' => _("During the installation you will be first asked to enter settings for certificate and there you need to enter the import PIN shown on this page. Later you will be prompted to enter your password to allow making changes to the profile, this time it is your computer password."),
244
                ],
245
            ],
246
            'apple_el_cap' => [
247
                'group' => "apple",
248
                'display' => _("Apple OS X El Capitan"),
249
                'match' => 'Mac OS X 10[._]11',
250
                'directory' => 'apple_mobileconfig',
251
                'module' => 'mobileconfig_os_x',
252
                'signer' => 'mobileconfig_sign',
253
                'options' => []
254
                    'sign' => 1,
0 ignored issues
show
Bug introduced by
A parse error occurred: Syntax error, unexpected T_CONSTANT_ENCAPSED_STRING, expecting ',' or ']' on line 254 at column 20
Loading history...
255
                    'device_id' => 'OS_X',
256
                    'mime' => 'application/x-apple-aspen-config',
257
                    'sb_message' => _("During the installation you will be first asked to enter settings for certificate and there you need to enter the import PIN shown on this page. Later you will be prompted to enter your password to allow making changes to the profile, this time it is your computer password."),
258
                ],
259
            ],
260
            'apple_yos' => [
261
                'group' => "apple",
262
                'display' => _("Apple OS X Yosemite"),
263
                'match' => 'Mac OS X 10[._]10',
264
                'directory' => 'apple_mobileconfig',
265
                'module' => 'mobileconfig_os_x',
266
                'signer' => 'mobileconfig_sign',
267
                'options' => [
268
                    'sign' => 1,
269
                    'device_id' => 'OS_X',
270
                    'mime' => 'application/x-apple-aspen-config',
271
                    'sb_message' => _("During the installation you will be first asked to enter settings for certificate and there you need to enter the import PIN shown on this page. Later you will be prompted to enter your password to allow making changes to the profile, this time it is your computer password."),
272
                ],
273
            ],
274
            'apple_mav' => [
275
                'group' => "apple",
276
                'display' => _("Apple OS X Mavericks"),
277
                'match' => 'Mac OS X 10[._]9',
278
                'directory' => 'apple_mobileconfig',
279
                'module' => 'mobileconfig_os_x',
280
                'signer' => 'mobileconfig_sign',
281
                'options' => [
282
                    'sign' => 1,
283
                    'device_id' => 'OS_X',
284
                    'mime' => 'application/x-apple-aspen-config',
285
                    'sb_message' => _("During the installation you will be first asked to enter settings for certificate and there you need to enter the import PIN shown on this page. Later you will be prompted to enter your password to allow making changes to the profile, this time it is your computer password."),
286
                ],
287
            ],
288
            'apple_m_lion' => [
289
                'group' => "apple",
290
                'display' => _("Apple OS X Mountain Lion"),
291
                'match' => 'Mac OS X 10[._]8',
292
                'directory' => 'apple_mobileconfig',
293
                'module' => 'mobileconfig_os_x',
294
                'signer' => 'mobileconfig_sign',
295
                'options' => [
296
                    'sign' => 1,
297
                    'device_id' => 'OS_X',
298
                    'mime' => 'application/x-apple-aspen-config',
299
                    'sb_message' => _("During the installation you will be first asked to enter settings for certificate and there you need to enter the import PIN shown on this page. Later you will be prompted to enter your password to allow making changes to the profile, this time it is your computer password."),
300
                ],
301
            ],
302
            'apple_lion' => [
303
                'group' => "apple",
304
                'display' => _("Apple OS X Lion"),
305
                'match' => 'Mac OS X 10[._]7',
306
                'directory' => 'apple_mobileconfig',
307
                'module' => 'mobileconfig_os_x',
308
                'signer' => 'mobileconfig_sign',
309
                'options' => [
310
                    'sign' => 1,
311
                    'device_id' => 'OS_X',
312
                    'mime' => 'application/x-apple-aspen-config',
313
                    'sb_message' => _("During the installation you will be first asked to enter settings for certificate and there you need to enter the import PIN shown on this page. Later you will be prompted to enter your password to allow making changes to the profile, this time it is your computer password."),
314
                ],
315
            ],
316
            'mobileconfig12' => [
317
                'group' => "apple",
318
                'display' => _("Apple iOS mobile devices"),
319
                'match' => '(iPad|iPhone|iPod);.*OS (1[2-9])_',
320
                'directory' => 'apple_mobileconfig',
321
                'module' => 'mobileconfig_ios12plus',
322
                'signer' => 'mobileconfig_sign',
323
                'options' => [
324
                    'sign' => 1,
325
                    'device_id' => 'iOS',
326
                    'mime' => 'application/x-apple-aspen-config',
327
                    'sb_message' => _("During the installation you will be first asked to enter your passcode - this is your device security code! Later on you will be prompted for the password to the certificate and there you need to enter the import PIN shown on this page."),
328
                ],
329
            ],
330
            'mobileconfig' => [
331
                'group' => "apple",
332
                'display' => _("Apple iOS mobile devices (iOS 7-11)"),
333
                'match' => '(iPad|iPhone|iPod);.*OS ([7-9]|1[0-1])_',
334
                'directory' => 'apple_mobileconfig',
335
                'module' => 'mobileconfig_ios7plus',
336
                'signer' => 'mobileconfig_sign',
337
                'options' => [
338
                    'sign' => 1,
339
                    'device_id' => 'iOS',
340
                    'mime' => 'application/x-apple-aspen-config',
341
                    'sb_message' => _("During the installation you will be first asked to enter your passcode - this is your device security code! Later on you will be prompted for the password to the certificate and there you need to enter the import PIN shown on this page."),
342
                ],
343
            ],
344
            'mobileconfig-56' => [
345
                'group' => "apple",
346
                'display' => _("Apple iOS mobile devices (iOS 5 and 6)"),
347
                'match' => '(iPad|iPhone|iPod);.*OS [56]_',
348
                'directory' => 'apple_mobileconfig',
349
                'module' => 'mobileconfig_ios5plus',
350
                'signer' => 'mobileconfig_sign',
351
                'options' => [
352
                    'sign' => 1,
353
                    'device_id' => 'iOS',
354
                    'mime' => 'application/x-apple-aspen-config',
355
                ],
356
            ],
357
            'linux' => [
358
                'group' => "linux",
359
                'display' => _("Linux"),
360
                'match' => 'Linux(?!.*Android)',
361
                'directory' => 'linux',
362
                'module' => 'Linux',
363
                'options' => [
364
                    'mime' => 'application/x-sh',
365
                ],
366
            ],
367
            'chromeos' => [
368
                'group' => "chrome",
369
                'display' => _("Chrome OS"),
370
                'match' => 'CrOS',
371
                'directory' => 'chromebook',
372
                'module' => 'chromebook',
373
                'options' => [
374
                    'mime' => 'application/x-onc',
375
                    'message' => sprintf(_("After downloading the file, open the Chrome browser and browse to this URL: <a href='chrome://net-internals/#chromeos'>chrome://net-internals/#chromeos</a>. Then, use the 'Import ONC file' button. The import is silent; the new network definitions will be added to the preferred networks.")),
376
                ],
377
            ],
378
            'android_q' => [
379
                'group' => "android",
380
                'display' => _("Android 10.0 Q"),
381
                'match' => 'Android 10',
382
                'directory' => 'xml',
383
                'module' => 'Lollipop',
384
                'options' => [
385
                    'mime' => 'application/eap-config',
386
                    'message' => sprintf(_("Before you proceed with installation on Android systems, please make sure that you have installed the %s application. This application is available from %s, %s and %s, and will use the configuration file downloaded from CAT to create all necessary settings."),
387
                            "eduroamCAT",
388
                            "<a target='_blank' href='https://play.google.com/store/apps/details?id=uk.ac.swansea.eduroamcat'>Google Play</a>",
389
                            "<a target='_blank' href='https://www.amazon.com/dp/B01EACCX0S/'>Amazon Appstore</a>",
390
                            "<a target='_blank' href='eduroamCAT-stable.apk'>" . _("as local download") . "</a>"),
391
                ],
392
            ],
393
            'android_pie' => [
394
                'group' => "android",
395
                'display' => _("Android 9.0 Pie"),
396
                'match' => 'Android 9',
397
                'directory' => 'xml',
398
                'module' => 'Lollipop',
399
                'options' => [
400
                    'mime' => 'application/eap-config',
401
                    'message' => sprintf(_("Before you proceed with installation on Android systems, please make sure that you have installed the %s application. This application is available from %s, %s and %s, and will use the configuration file downloaded from CAT to create all necessary settings."),
402
                            "eduroamCAT",
403
                            "<a target='_blank' href='https://play.google.com/store/apps/details?id=uk.ac.swansea.eduroamcat'>Google Play</a>",
404
                            "<a target='_blank' href='https://www.amazon.com/dp/B01EACCX0S/'>Amazon Appstore</a>",
405
                            "<a target='_blank' href='eduroamCAT-stable.apk'>" . _("as local download") . "</a>"),
406
                ],
407
            ],
408
            'android_oreo' => [
409
                'group' => "android",
410
                'display' => _("Android 8.0 Oreo"),
411
                'match' => 'Android 8',
412
                'directory' => 'xml',
413
                'module' => 'Lollipop',
414
                'options' => [
415
                    'mime' => 'application/eap-config',
416
                    'message' => sprintf(_("Before you proceed with installation on Android systems, please make sure that you have installed the %s application. This application is available from %s, %s and %s, and will use the configuration file downloaded from CAT to create all necessary settings."),
417
                            "eduroamCAT",
418
                            "<a target='_blank' href='https://play.google.com/store/apps/details?id=uk.ac.swansea.eduroamcat'>Google Play</a>",
419
                            "<a target='_blank' href='https://www.amazon.com/dp/B01EACCX0S/'>Amazon Appstore</a>",
420
                            "<a target='_blank' href='eduroamCAT-stable.apk'>" . _("as local download") . "</a>"),
421
                ],
422
            ],
423
            'android_nougat' => [
424
                'group' => "android",
425
                'display' => _("Android 7.0 Nougat"),
426
                'match' => 'Android 7',
427
                'directory' => 'xml',
428
                'module' => 'Lollipop',
429
                'options' => [
430
                    'mime' => 'application/eap-config',
431
                    'message' => sprintf(_("Before you proceed with installation on Android systems, please make sure that you have installed the %s application. This application is available from %s, %s and %s, and will use the configuration file downloaded from CAT to create all necessary settings."),
432
                            "eduroamCAT",
433
                            "<a target='_blank' href='https://play.google.com/store/apps/details?id=uk.ac.swansea.eduroamcat'>Google Play</a>",
434
                            "<a target='_blank' href='https://www.amazon.com/dp/B01EACCX0S/'>Amazon Appstore</a>",
435
                            "<a target='_blank' href='eduroamCAT-stable.apk'>" . _("as local download") . "</a>"),
436
                ],
437
            ],
438
            'android_marshmallow' => [
439
                'group' => "android",
440
                'display' => _("Android 6.0 Marshmallow"),
441
                'match' => 'Android 6',
442
                'directory' => 'xml',
443
                'module' => 'Lollipop',
444
                'options' => [
445
                    'mime' => 'application/eap-config',
446
                    'message' => sprintf(_("Before you proceed with installation on Android systems, please make sure that you have installed the %s application. This application is available from %s, %s and %s, and will use the configuration file downloaded from CAT to create all necessary settings."),
447
                            "eduroamCAT",
448
                            "<a target='_blank' href='https://play.google.com/store/apps/details?id=uk.ac.swansea.eduroamcat'>Google Play</a>",
449
                            "<a target='_blank' href='https://www.amazon.com/dp/B01EACCX0S/'>Amazon Appstore</a>",
450
                            "<a target='_blank' href='eduroamCAT-stable.apk'>" . _("as local download") . "</a>"),
451
                ],
452
            ],
453
            'android_lollipop' => [
454
                'group' => "android",
455
                'display' => _("Android 5.0 Lollipop"),
456
                'match' => 'Android 5',
457
                'directory' => 'xml',
458
                'module' => 'Lollipop',
459
                'options' => [
460
                    'mime' => 'application/eap-config',
461
                    'message' => sprintf(_("Before you proceed with installation on Android systems, please make sure that you have installed the %s application. This application is available from %s, %s and %s, and will use the configuration file downloaded from CAT to create all necessary settings."),
462
                            "eduroamCAT",
463
                            "<a target='_blank' href='https://play.google.com/store/apps/details?id=uk.ac.swansea.eduroamcat'>Google Play</a>",
464
                            "<a target='_blank' href='https://www.amazon.com/dp/B01EACCX0S/'>Amazon Appstore</a>",
465
                            "<a target='_blank' href='eduroamCAT-stable.apk'>" . _("as local download") . "</a>"),
466
                ],
467
            ],
468
            'android_kitkat' => [
469
                'group' => "android",
470
                'display' => _("Android 4.4 KitKat"),
471
                'match' => 'Android 4\.[4-9]',
472
                'directory' => 'xml',
473
                'module' => 'KitKat',
474
                'options' => [
475
                    'mime' => 'application/eap-config',
476
                    'message' => sprintf(_("Before you proceed with installation on Android systems, please make sure that you have installed the %s application. This application is available from %s, %s and %s, and will use the configuration file downloaded from CAT to create all necessary settings."),
477
                            "eduroamCAT",
478
                            "<a target='_blank' href='https://play.google.com/store/apps/details?id=uk.ac.swansea.eduroamcat'>Google Play</a>",
479
                            "<a target='_blank' href='https://www.amazon.com/dp/B01EACCX0S/'>Amazon Appstore</a>",
480
                            "<a target='_blank' href='eduroamCAT-stable.apk'>" . _("as local download") . "</a>"),
481
                ],
482
            ],
483
            'android_43' => [
484
                'group' => "android",
485
                'display' => _("Android 4.3"),
486
                'match' => 'Android 4\.3',
487
                'directory' => 'xml',
488
                'module' => 'KitKat',
489
                'options' => [
490
                    'mime' => 'application/eap-config',
491
                    'message' => sprintf(_("Before you proceed with installation on Android systems, please make sure that you have installed the %s application. This application is available from %s, %s and %s, and will use the configuration file downloaded from CAT to create all necessary settings."),
492
                            "eduroamCAT",
493
                            "<a target='_blank' href='https://play.google.com/store/apps/details?id=uk.ac.swansea.eduroamcat'>Google Play</a>",
494
                            "<a target='_blank' href='https://www.amazon.com/dp/B01EACCX0S/'>Amazon Appstore</a>",
495
                            "<a target='_blank' href='eduroamCAT-stable.apk'>" . _("as local download") . "</a>"),
496
                ],
497
            ],
498
            'android_legacy' => [
499
                'group' => "android",
500
                'display' => _("Android"),
501
                'match' => 'Android',
502
                'directory' => 'redirect_dev',
503
                'module' => 'RedirectDev',
504
                'options' => [
505
                    'redirect' => 1,
506
                ],
507
            ],
508
            'eap-config' => [
509
                'group' => "eap-config",
510
                'display' => _("EAP config"),
511
                'directory' => 'xml',
512
                'module' => 'XML_ALL',
513
                'options' => [
514
                    'mime' => 'application/eap-config',
515
                    'message' => sprintf(_("This option provides a generic EAP config XML file, which can be consumed by dedicated applications like eduroamCAT for Android and Linux platforms. This is still an experimental feature.")),
516
                ],
517
            ],
518
            'test' => [
519
                'group' => "other",
520
                'display' => _("Test"),
521
                'directory' => 'test_module',
522
                'module' => 'TestModule',
523
                'options' => [
524
                    'hidden' => 1,
525
                ],
526
            ],
527
        /*
528
529
            'xml-ttls-pap'=> [
530
                'group' => "generic",
531
                'display'=>_("Generic profile TTLS-PAP"),
532
                'directory'=>'xml',
533
                'module'=>'XML_TTLS_PAP',
534
                'options'=>[
535
                    'mime'=>'application/eap-config',
536
                ],
537
            ],
538
539
            'xml-ttls-mschap2'=> [
540
                'group' => "generic",
541
                'display'=>_("Generic profile TTLS-MSCHAPv2"),
542
                'directory'=>'xml',
543
                'module'=>'XML_TTLS_MSCHAP2',
544
                'options'=> [
545
                    'mime'=>'application/eap-config',
546
                ],
547
            ],
548
549
            'xml-peap'=> [
550
                'group' => "generic",
551
                'display'=>_("Generic profile PEAP"),
552
                'directory'=>'xml',
553
                'module'=>'XML_PEAP',
554
                    'options'=> [
555
                    'mime'=>'application/eap-config',
556
                ],
557
            ],
558
559
            'xml-tls'=> [
560
                'group' => "generic",
561
                'display'=>_("Generic profile TLS"),
562
                'directory'=>'xml',
563
                'module'=>'XML_TLS',
564
                'options'=> [
565
                    'mime'=>'application/eap-config',
566
                ],
567
            ],
568
569
            'xml-pwd'=> [
570
                'group' => "generic",
571
                'display'=>_("Generic profile PWD"),
572
                'directory'=>'xml',
573
                'module'=>'XML_PWD',
574
                'options'=> [
575
                    'mime'=>'application/eap-config',
576
                ],
577
            ],
578
                'xml-all'=> [
579
                'group' => "generic",
580
                'display'=>_("Generic profile ALL EAPs"),
581
                'directory'=>'xml',
582
                'module'=>'XML_ALL',
583
                'options'=> [
584
                    'mime'=>'application/eap-config',
585
                ],
586
            ],
587
        */
588
        ];
589
        \core\common\Entity::outOfThePotatoes();
590
        return $retArray;
591
    }
592
}
593