You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 

39 lines
653 B

  1. //Config
  2. const validModPatterns = ['.png', '/ui/', '/clientComponents/', '/audio/'];
  3. //Methods
  4. const appRoot = (req, res) => {
  5. res.sendFile('index.html');
  6. };
  7. const appFile = (req, res) => {
  8. let root = req.url.split('/')[1];
  9. let file = req.params[0];
  10. file = file.replace('/' + root + '/', '');
  11. const validRequest = (
  12. root !== 'server' ||
  13. (
  14. root === 'server' &&
  15. file.startsWith('clientComponents/')
  16. ) ||
  17. (
  18. file.includes('mods/') &&
  19. validModPatterns.some(v => file.includes(v))
  20. )
  21. );
  22. if (!validRequest)
  23. return null;
  24. res.sendFile(file, {
  25. root: '../' + root
  26. });
  27. };
  28. //Exports
  29. module.exports = {
  30. appRoot,
  31. appFile
  32. };