-
Notifications
You must be signed in to change notification settings - Fork 7
Expand file tree
/
Copy pathrouter.php
More file actions
361 lines (288 loc) · 19 KB
/
router.php
File metadata and controls
361 lines (288 loc) · 19 KB
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
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
<?php
// base code lifted from pixie by parakeet
$dir = __DIR__."/private";
$router = new AltoRouter();
function route($method, $path, $file) {
global $router;
$router->map($method, $path, function(...$params) use ($path, $file) {
$secret_enabled = isset(CONFIG->secret);
if(
$secret_enabled &&
str_starts_with($file, "/private/views/") &&
(!isset($_COOKIE['ANORRL$Hidden$Cookie$yaya']) ||
(isset($_COOKIE['ANORRL$Hidden$Cookie$yaya']) && $_COOKIE['ANORRL$Hidden$Cookie$yaya'] != CONFIG->secret->token))) {
redirect("https://arl.lambda.cam/goodbye");
} else {
$secret_enabled = false;
}
// yeah i just dont feel like it
if(!$secret_enabled) {
if(
$path != "/login" &&
$path != "/register" &&
$path != "/" &&
$path != "/index" &&
str_starts_with($file, "/private/views/") &&
!SESSION
) {
redirect("/login");
}
}
foreach ($params as $key => $value) {
$$key = $value;
}
if(str_ends_with($file, ".json")) {
set_content_type(ARLTYPEJSON);
}
if(str_ends_with($file, ".txt")) {
set_content_type(ARLTYPEPLAIN);
}
if(str_ends_with($file, ".json") || str_ends_with($file, ".js")) {
$file = file_get_contents(__DIR__.$file);
$file = str_replace("{domain}", CONFIG->domain, $file);
echo $file;
} else {
require __DIR__.$file;
}
});
}
function route_api($method, $path) {
global $router;
$file = "/private/api/$path.php";
$router->map($method, "/api/$path", function(...$params) use ($path, $file) {
if(SESSION || (str_starts_with($path, "gameserver") && !str_ends_with($path,"/get"))) {
foreach ($params as $key => $value) {
$$key = $value;
}
require __DIR__.$file;
} else {
die(http_response_code(401));
}
});
}
//route('GET', '/test', '/private/views/test.php');
route('GET', '/', '/private/views/index.php');
route('GET', '/index', '/private/views/index.php');
route('GET|POST', '/login', '/private/views/login.php');
route('GET|POST', '/register', '/private/views/register.php');
route('GET|POST', '/catalog', '/private/views/catalog.php');
route('GET|POST', '/games', '/private/views/games.php');
route('GET|POST', '/vandals', '/private/views/vandals.php');
route('GET|POST', '/edit', '/private/views/edit.php');
route('GET|POST', '/create/[i:placeId]/[*:type]', '/private/views/create_place.php');
route('GET|POST', '/create/[*:type]', '/private/views/create.php');
route('GET|POST', '/create/', '/private/views/create.php');
route('GET|POST', '/create', '/private/views/create.php');
route('GET|POST', '/[*:name]-item', '/private/views/item.php');
$router->map('GET', '/game/[i:id]', function($id) {
$name = "a";
require __DIR__.'/private/views/place.php';
});
route('GET|POST', '/users/[i:id]/profile', '/private/views/users/profile.php');
route('GET', '/users/[i:id]/css', '/private/views/users/css.php');
route('GET', '/users/[i:id]/followers', '/private/views/users/followers.php');
route('GET', '/users/[i:id]/following', '/private/views/users/following.php');
route('GET', '/users/[i:id]/friends', '/private/views/users/friends.php');
route('GET', '/thumbs/profile', '/private/thumbs/profile.php');
route('GET', '/thumbs/player', '/private/thumbs/player.php');
route('GET', '/thumbs/headshot', '/private/thumbs/headshot.php');
route('GET', '/thumbs/', '/private/thumbs/index.php');
route('GET', '/info/credits', '/private/views/info/credits.php');
route('GET', '/download', '/private/views/download/index.php');
route('GET', '/download/', '/private/views/download/index.php');
route('GET', '/download/thankyou', '/private/views/download/thankyou.php');
route('GET|POST', '/my/home', '/private/views/my/home.php');
route('GET|POST', '/my/profile', '/private/views/my/profile.php');
route('GET|POST', '/my/character', '/private/views/my/character.php');
route('GET|POST', '/my/stuff', '/private/views/my/stuff.php');
route('GET|POST', '/my/friends', '/private/views/my/friends.php');
route('GET|POST', '/my/', '/private/views/my/index.php');
route('GET|POST', '/ide/projects', '/private/views/ide/projects.php');
route('GET|POST', '/ide/publish', '/private/views/ide/projects.php');
route('GET', '/badges', '/private/views/badges.php');
route('GET', '/thumbnail/avatar/[*:hash]/mtl', '/private/api/thumbnail/avatar/getters/mtl.php');
route('GET', '/thumbnail/avatar/[*:hash]/obj', '/private/api/thumbnail/avatar/getters/obj.php');
route('GET', '/thumbnail/avatar/[*:hash]/img/[*:image]', '/private/api/thumbnail/avatar/getters/img.php');
route('GET', '/thumbnail/avatar/generate', '/private/api/thumbnail/avatar/generate.php');
route('GET', '/thumbnail/asset/[*:hash]/mtl', '/private/api/thumbnail/asset/getters/mtl.php');
route('GET', '/thumbnail/asset/[*:hash]/obj', '/private/api/thumbnail/asset/getters/obj.php');
route('GET', '/thumbnail/asset/[*:hash]/img/[*:image]', '/private/api/thumbnail/asset/getters/img.php');
route('GET', '/thumbnail/asset/generate', '/private/api/thumbnail/asset/generate.php');
route('GET', '/thumbnail/get', '/private/api/thumbnail/get.php');
// Apis!
route_api('GET|POST', 'catalog');
route_api('GET|POST', 'character');
route_api('GET|POST', 'comment');
route_api('GET|POST', 'favourite');
route_api('GET|POST', 'feeds');
route_api('GET|POST', 'games');
route_api('GET|POST', 'gameservers');
route_api('GET|POST', 'logout');
route_api('GET|POST', 'outfits');
route_api('GET|POST', 'people');
route_api('GET|POST', 'purchase');
route_api('GET|POST', 'stuff');
route_api('GET|POST', 'ticketer');
route_api('GET|POST', 'user');
route_api('GET|POST', 'placestuff');
route_api('GET|POST', 'gameservers/close');
route_api('GET|POST', 'gameservers/removeplayer');
route_api('GET|POST', 'gameservers/validateplayer');
route_api('GET|POST', 'gameservers/renewlease');
route_api('GET', 'gameservers/get');
route_api('POST', 'gameservers/shutdown');
route_api('POST', 'asset/render');
route_api('POST', 'asset/delete');
route_api('POST', 'asset/refund');
// game apis
route('GET', '/asset/', '/private/gameapis/assetdeliverer.php');
route('GET', '/Asset/', '/private/gameapis/assetdeliverer.php');
route('GET', '/users/', '/private/views/users/index.php');
route('GET', '/Users/[i:userId]', '/private/api/users/data.php');
route('GET', '/users/[i:userId]/canmanage/[i:placeId]', '/private/api/users/canmanage.php');
route('GET', '//users/[i:userId]/canmanage/[i:placeId]', '/private/api/users/canmanage.php');
route('GET', '/users/get-by-username', '/private/api/users/get-by-username.php');
route('GET', '/users/emotes', '/private/api/users/emotes.php');
route('GET', '/users/get-icon', '/private/api/users/get-icon.php');
route('GET', '/IDE/Upload.aspx', '/private/views/ide/publish.php');
route('GET|POST', '/IDE/PublishNewPlace.aspx', '/private/views/ide/publishnewplace.php');
route('GET', '/IDE/ClientToolbox.aspx', '/private/views/ide/toolbox.php');
route('GET', '/ide/toolbox', '/private/views/ide/toolbox.php');
route('GET|POST', '/Data/Upload.ashx', '/private/gameapis/ide/upload.php');
route('GET|POST', '/Game/Upload.ashx', '/private/views/ide/goingupload.php');
route('GET|POST', '/ide/toolbox/items', '/private/api/toolbox/items.php');
route('GET|POST', '/IDE/Toolbox/Search', '/private/api/toolbox/search.php');
route('GET|POST', '/IDE/Toolbox/GetTotalNumberOfResults', '/private/api/toolbox/gettotalnumber.php');
route('GET|POST', '/Sets/SetHandler.ashx', '/private/gameapis/sets/setshandler.php');
route('GET', '/Game/Tools/ThumbnailAsset.ashx', '/public/images/unavailable-75.png');
route('GET', '/Thumbs/Avatar.ashx', '/private/thumbs/player.php');
route('GET', '/thumbs/avatar.ashx', '/private/thumbs/player.php');
route('GET', '/Thumbs/RawAsset.ashx', '/private/thumbs/rawasset.php');
route('GET', '/Thumbs/Asset.ashx', '/private/thumbs/rawasset.php');
route('GET', '/thumbnail/avatar-headshot', '/private/thumbs/fakeheadshot.php');
route('GET', '/Game/LuaWebService/HandleSocialRequest.ashx', '/private/gameapis/social/socialrequests.php');
route('GET|POST', '/game/PlaceLauncher.ashx', '/private/gameapis/gamescripts/placelauncher.php');
route('GET|POST', '/Game/PlaceLauncher.ashx', '/private/gameapis/gamescripts/placelauncher.php');
// signed luas
route('GET', '/Game/PlaceSpecificScript.slua', '/private/gameapis/gamescripts/placespecificscript.php');
route('GET', '/Game/LoadPlaceInfo.slua', '/private/gameapis/gamescripts/loadplaceinfo.php');
route('GET', '/game/gameserver.slua', '/private/gameapis/gamescripts/gameserver.php');
route('GET', '/game/visit.slua', '/private/gameapis/gamescripts/visit.php');
route('GET', '/game/edit.slua', '/private/gameapis/gamescripts/edit.php');
route('GET', '/Game/PlaceSpecificScript.ashx', '/private/gameapis/gamescripts/placespecificscript.php');
route('GET', '/Game/LoadPlaceInfo.ashx', '/private/gameapis/gamescripts/loadplaceinfo.php');
route('GET', '/game/join.ashx', '/private/gameapis/gamescripts/join.php');
route('GET', '/game/load-place-info', '/private/gameapis/places/load-place-info.php');
route('GET', '/GetAllowedMD5Hashes/', '/private/gameapis/authentication/getallowedmd5hashes.json');
route('GET', '/GetAllowedSecurityKeys/', '/private/gameapis/authentication/getallowedsecuritykeys.json');
route('GET', '/GetAllowedSecurityVersions/', '/private/gameapis/authentication/getallowedsecurityversions.json');
route('GET', '/Setting/QuietGet/AndroidAppSettings/', '/private/gameapis/settings/ClientSettings.json');
route('GET', '/Setting/QuietGet/ClientAppSettings/', '/private/gameapis/settings/ClientSettings.json');
route('GET', '/Setting/QuietGet/ClientSettings/', '/private/gameapis/settings/ClientSettings.json');
route('GET', '/Setting/QuietGet/ACCService'.CONFIG->arbiter->key.'/', '/private/gameapis/settings/ACCService.json');
route('GET', '/Setting/QuietGet/WindowsBootstrapperSettings/', '/private/gameapis/settings/Bootstrapper.json');
route('GET', '/Setting/QuietGet/WindowsStudioBootstrapperSettings/', '/private/gameapis/settings/Bootstrapper.json');
route('GET|POST', '/v1.0/MultiIncrement/', '/private/templates/responses/nothing.txt');
route('GET|POST', '/Error/Dmp.ashx', '/private/templates/responses/nothing.txt');
route('GET|POST', '/v1.1/Counters/Increment/', '/private/templates/responses/nothing.txt');
route('GET|POST', '/v1.1/counters/increment/', '/private/templates/responses/nothing.txt');
route('GET|POST', '/game/report-stats', '/private/templates/responses/nothing.txt');
route('GET|POST', '/game/validate-machine', '/private/templates/responses/success.json');
route('GET|POST', '/mac-address/validate-machine', '/private/templates/responses/success.json');
route('GET', '/Login/Negotiate.ashx', '/private/gameapis/authentication/negotiate.php');
route('GET', '/Login/RequestAuth.ashx', '/private/gameapis/authentication/requestauth.php');
route('GET', '/login/RequestAuth.ashx', '/private/gameapis/authentication/requestauth.php');
route('GET', '/game/GetCurrentUser.ashx', '/private/gameapis/authentication/getcurrentuser.php');
route('GET', '/Game/GetCurrentUser.ashx', '/private/gameapis/authentication/getcurrentuser.php');
route('GET', '/game/logout.aspx', '/private/api/logout.php');
route('GET', '/Game/logout.aspx', '/private/api/logout.php');
route('GET', '/game/players/[i:id]', '/private/api/users/players.php');
route('GET', '/game/players/[i:id]/', '/private/api/users/players.php');
route('GET|POST', '/persistence/getV2', '/private/gameapis/persistence/getv2.php');
route('POST', '/persistence/getSortedValues', '/private/gameapis/persistence/getsortedvalues.php');
route('POST', '/persistence/increment', '/private/gameapis/persistence/increment.php');
route('POST', '/persistence/set', '/private/gameapis/persistence/set.php');
route('GET|POST', '/Persistence/SetBlob.ashx', '/private/gameapis/datastores/setblob.php');
route('GET|POST', '/Persistence/GetBlob.ashx', '/private/gameapis/datastores/getblob.php');
route('GET', '/userblock/getblockedusers', '/private/gameapis/social/getblockedusers.php');
route('GET', '/user/following-exists', '/private/gameapis/social/following-exists.php');
route('GET', '/user/get-friendship-count', '/private/gameapis/social/get-friendship-count.php');
route('GET|POST', '/user/follow', '/private/gameapis/social/follow.php');
route('GET|POST', '/user/unfollow', '/private/gameapis/social/unfollow.php');
route('GET|POST', '/user/request-friendship', '/private/gameapis/social/request-friendship.php');
route('GET|POST', '/user/decline-friend-request', '/private/gameapis/social/decline-friend-request.php');
route('GET|POST', '/Game/AreFriends', '/private/gameapis/social/arefriends.php');
route('POST', '/Game/Badge/AwardBadge.ashx', '/private/gameapis/badges/award.php');
route('GET|POST', '/Game/Badge/HasBadge.ashx', '/private/gameapis/badges/has.php');
route('GET|POST', '/Game/Badge/IsBadgeDisabled.ashx', '/private/gameapis/badges/isdisabled.php');
route('GET', '/universes/get-universe-containing-place', '/private/gameapis/universes/get-universe-containing-place.php');
route('GET', '/places/[i:placeId]/settings', '/private/gameapis/places/settings.php');
route('GET', '/universes/get-info', '/private/gameapis/universes/get-info.php');
route('GET', '/universes/validate-place-join', '/private/gameapis/universes/validate-place-join.php');
route('GET', '/universes/get-universe-places', '/private/gameapis/universes/get-universe-places.php');
route('GET', '/universes/[i:universeId]/game-start-info', '/private/gameapis/universes/game-start-info.php');
route('POST', '/universes/removeplace', '/private/gameapis/universes/removeplace.php');
route('POST', '/universes/setrootplace', '/private/gameapis/universes/setrootplace.php');
route('GET', '/developerproducts/list', '/private/gameapis/universes/developerproducts.php');
route('GET', '/badges/list-badges-for-place/json', '/private/gameapis/places/list-badges-for-place.php');
route('GET', '/ide/places/defaultsettings', '/private/gameapis/places/defaultsettings.php');
route('POST', '/ide/places/create', '/private/gameapis/places/new.php');
route('POST', '/ide/places/[i:placeId]/updatesettings', '/private/gameapis/places/edit.php');
// aliases
route('GET', '/universes/get-aliases', '/private/gameapis/universes/alias/get.php');
route('POST', '/universes/create-alias', '/private/gameapis/universes/alias/create.php');
route('POST', '/universes/update-alias', '/private/gameapis/universes/alias/update.php');
route('POST', '/universes/delete-alias', '/private/gameapis/universes/alias/remove.php');
// cloud editing
route('GET', '/universes/[i:universeId]/cloudeditenabled', '/private/gameapis/universes/cloudedit/isenabled.php');
route('POST', '/universes/[i:universeId]/enablecloudedit', '/private/gameapis/universes/cloudedit/enable.php');
route('POST', '/universes/[i:universeId]/disablecloudedit', '/private/gameapis/universes/cloudedit/disable.php');
route('GET', '/universes/[i:universeId]/listcloudeditors', '/private/gameapis/universes/cloudedit/editors/list.php');
route('POST', '/universes/[i:universeId]/addcloudeditor', '/private/gameapis/universes/cloudedit/editors/add.php');
route('POST', '/universes/[i:universeId]/removecloudeditor','/private/gameapis/universes/cloudedit/editors/remove.php');
route('POST', '/data/upload/json', '/private/gameapis/universes/upload.php');
route('GET', '/Asset/BodyColors.ashx', '/private/gameapis/character/bodycolors.php');
route('GET', '/Asset/CharacterFetch.ashx', '/private/gameapis/character/characterfetch.php');
route('GET|POST', '/game/MachineConfiguration.ashx', '/private/gameapis/authentication/machineconfiguration.txt');
route('GET|POST', '/Game/MachineConfiguration.ashx', '/private/gameapis/authentication/machineconfiguration.txt');
route('GET', '/Game/Tools/InsertAsset.ashx', '/private/api/insertasset.php');
route('GET', '/UploadMedia/PostImage.aspx', '/private/gameapis/uploadmedia/postimage.php');
route('GET', '/UploadMedia/UploadVideo.aspx', '/private/gameapis/uploadmedia/uploadvideo.php');
route('GET|POST', '/moderation/v2/filtertext', '/private/gameapis/moderation/filtertext.php');
route('GET|POST', '//moderation/filtertext/', '/private/gameapis/moderation/filtertext.php');
route('GET|POST', '/moderation/filtertext/', '/private/gameapis/moderation/filtertext.php');
route('GET', '/marketplace/productinfo', '/private/gameapis/marketplace/productinfo.php');
route('GET', '/Marketplace/ProductInfo', '/private/gameapis/marketplace/productinfo.php');
route('GET', '/marketplace/productDetails', '/private/gameapis/marketplace/productinfo.php');
route('GET', '/marketplace/purchase', '/private/gameapis/marketplace/purchase.php');
route('GET', '/ownership/hasasset', '/private/gameapis/marketplace/hasasset.php');
route('GET', '/ownership/hasAsset', '/private/gameapis/marketplace/hasasset.php');
route('GET', '/gametransactions/getpendingtransactions/', '/private/gameapis/marketplace/getpendingtransactions.php');
route('GET', '/gametransactions/getpendingtransactions', '/private/gameapis/marketplace/getpendingtransactions.php');
route('GET', '/currency/balance', '/private/gameapis/marketplace/balance.php');
route('GET', '/inbox', '/private/views/mobile/inbox.php');
route('GET', '/home', '/private/views/mobile/home.php');
route('GET', '/mobile-app-upgrades/native-ios/bc', '/private/views/mobile/nocurrencylol.php');
route('GET', '/mobile-app-upgrades/native-ios/robux', '/private/views/mobile/nocurrencylol.php');
route('GET', '/mobile/games', '/private/views/mobile/games.php');
route('GET', '/mobile/games/', '/private/views/mobile/games.php');
route('GET', '/signup/is-username-valid', '/private/api/mobile/is-username-valid.php');
route('GET', '/signup/is-password-valid', '/private/api/mobile/is-password-valid.php');
route('GET', '/UserCheck/getrecommendedusername', '/private/api/mobile/getrecommendedusername.php');
route('GET|POST', '/mobileapi/login', '/private/api/mobile/login.php');
route('GET|POST', '/mobileapi/securesignup', '/private/api/mobile/securesignup.php');
route('GET', '/UserCheck/getrecommendedusername', '/private/api/mobile/getrecommendedusername.php');
route('GET|POST', '/[*:name]-place', '/private/views/place.php');
route('GET', '/asset', '/private/gameapis/assetdeliverer.php');
$match = $router->match();
if (is_array($match) && is_callable($match['target'])) {
call_user_func_array($match['target'], $match['params']);
} else {
header($_SERVER["SERVER_PROTOCOL"] . ' 404 Not Found');
if(!SESSION && isset(CONFIG->secret)) {
redirect("https://arl.lambda.cam/goodbye");
}
require __DIR__.'/private/views/errors/404.php';
exit();
}
?>