use .config.js for configuration files, close #301

This commit is contained in:
spencerwooo
2022-01-29 15:40:50 +08:00
parent 940eef458f
commit 7d39a998e1
20 changed files with 114 additions and 56 deletions
+1 -1
View File
@@ -1,4 +1,4 @@
import config from '../config/site.json'
import config from '../config/site.config'
const createFooterMarkup = () => {
return {
+1 -1
View File
@@ -9,7 +9,7 @@ import Image from 'next/image'
import { useRouter } from 'next/router'
import { Fragment, useEffect, useState } from 'react'
import siteConfig from '../config/site.json'
import siteConfig from '../config/site.config'
import SearchModal from './SearchModal'
import useDeviceOS from '../utils/useDeviceOS'
+1 -1
View File
@@ -13,7 +13,7 @@ import { OdDriveItem, OdSearchResult } from '../types'
import { LoadingIcon } from './Loading'
import { getFileIcon } from '../utils/getFileIcon'
import siteConfig from '../config/site.json'
import siteConfig from '../config/site.config'
import { fetcher } from '../utils/fetchWithSWR'
/**
+31
View File
@@ -0,0 +1,31 @@
/**
* This file contains the configuration for the API endpoints and tokens we use.
*
* - If you are a OneDrive International user, you would not have to change anything here.
* - If you are not the admin of your OneDrive for Business account, you may need to define your own clientId/clientSecret,
* check documentation for more details.
* - If you are using a E5 Subscription OneDrive for Business account, the direct links of your files are not the same here.
* In which case you would need to change directLinkRegex.
*/
module.exports = {
// The clientId and clientSecret are used to authenticate the user with Microsoft Graph API using OAuth. You would
// not need to change anything here if you can authenticate with your personal Microsoft account with OneDrive International.
clientId: "d87bcc39-1750-4ca0-ad54-f8d0efbb2735",
obfuscatedClientSecret: "U2FsdGVkX1830zo3/pFDqaBCVBb37iLw3WnBDWGF9GIB2f4apzv0roemp8Y+iIxI3Ih5ecyukqELQEGzZlYiWg==",
// The redirectUri is the URL that the user will be redirected to after they have authenticated with Microsoft Graph API.
// Likewise, you would not need to change redirectUri if you are using your personal Microsoft account with OneDrive International.
redirectUri: "http://localhost",
// These are the URLs of the OneDrive API endpoints. You would not need to change anything here if you are using OneDrive International
// or E5 Subscription OneDrive for Business. You may need to change these if you are using OneDrive 世纪互联.
authApi: "https://login.microsoftonline.com/common/oauth2/v2.0/token",
driveApi: "https://graph.microsoft.com/v1.0/me/drive",
// The scope we require are listed here, in most cases you would not need to change this as well.
scope: "user.read files.read.all offline_access",
// The directLinkRegex is used to match the direct link of the file from the response of the API. We originally use this to prevent
// unauthorised use of the proxied download feature - but that is disabled for now. So you can safely ignore this settings.
directLinkRegex: "public[.].*[.]files[.]1drv[.]com"
}
-9
View File
@@ -1,9 +0,0 @@
{
"clientId": "d87bcc39-1750-4ca0-ad54-f8d0efbb2735",
"obfuscatedClientSecret": "U2FsdGVkX1830zo3/pFDqaBCVBb37iLw3WnBDWGF9GIB2f4apzv0roemp8Y+iIxI3Ih5ecyukqELQEGzZlYiWg==",
"redirectUri": "http://localhost",
"authApi": "https://login.microsoftonline.com/common/oauth2/v2.0/token",
"driveApi": "https://graph.microsoft.com/v1.0/me/drive",
"scope": "user.read files.read.all offline_access",
"directLinkRegex": "public[.].*[.]files[.]1drv[.]com"
}
+64
View File
@@ -0,0 +1,64 @@
/**
* This file contains the configuration used for customising the website, such as the folder to share,
* the title, used Google fonts, site icons, contact info, etc.
*/
module.exports = {
// This is what we use to identify who you are when you are initialising the website for the first time.
// Make sure this is exactly the same as the email address you use to sign into your Microsoft account.
// You can also put this in your Vercel's environment variable 'NEXT_PUBLIC_USER_PRINCIPLE_NAME' if you worry about
// your email being exposed in public.
userPrincipalName: process.env.NEXT_PUBLIC_USER_PRINCIPLE_NAME || "spencer.woo@outlook.com",
// [OPTIONAL] This is the website icon to the left of the title inside the navigation bar. It should be placed under the
// /public directory of your GitHub project (not your OneDrive folder!), and referenced here by its relative path to /public.
icon: "/icons/128.png",
// The name of your website. Present alongside your icon.
title: "Spencer's OneDrive",
// The folder that you are to share publicly with onedrive-vercel-index. Use '/' if you want to share your root folder.
baseDirectory: "/Public",
// [OPTIONAL] This represents the maximum number of items that one directory lists, pagination supported.
// Do note that this is limited up to 200 items by the upstream OneDrive API.
maxItems: 100,
// [OPTIONAL] We use Google Fonts natively for font customisations.
// You can check and generate the required links and names at https://fonts.google.com.
// googleFontSans - the sans serif font used in onedrive-vercel-index.
googleFontSans: "Inter",
// googleFontMono - the monospace font used in onedrive-vercel-index.
googleFontMono: "Fira Mono",
// googleFontLinks - an array of links for referencing the google font assets.
googleFontLinks: [
"https://fonts.googleapis.com/css2?family=Fira+Mono&family=Inter:wght@400;500;700&display=swap"
],
// [OPTIONAL] The footer component of your website. You can write HTML here, but you need to escape double
// quotes - changing " to \". You can write anything here, and if you like badges, generate some with https://shields.io
footer: "Powered by <a href=\"https://github.com/spencerwooo/onedrive-vercel-index\" target=\"_blank\" rel=\"noopener noreferrer\">onedrive-vercel-index</a>. Made with ❤ by SpencerWoo.",
// [OPTIONAL] This is where you specify the folders that are password protected. It is an array of paths pointing to all
// the directories in which you have .password set. Check the documentation for details.
protectedRoutes: [
"/🌞 Private folder/u-need-a-password",
"/🥟 Some test files/Protected route"
],
// [OPTIONAL] Use "" here if you want to remove this email address from the nav bar.
email: "mailto:spencer.wushangbo@gmail.com",
// [OPTIONAL] This is an array of names and links for setting your social information and links.
// In the latest update, all brand icons inside font awesome is supported and the icon to render is based on the name
// you provide. See the documentation for details.
links: [
{
"name": "GitHub",
"link": "https://github.com/spencerwooo/onedrive-vercel-index"
},
{
"name": "Telegram",
"link": "https://t.me/realSpencerWoo"
}
]
}
-28
View File
@@ -1,28 +0,0 @@
{
"userPrincipalName": "spencer.woo@outlook.com",
"icon": "/icons/128.png",
"title": "Spencer's OneDrive",
"baseDirectory": "/Public",
"maxItems": 100,
"googleFontSans": "Inter",
"googleFontMono": "Fira Mono",
"googleFontLinks": [
"https://fonts.googleapis.com/css2?family=Fira+Mono&family=Inter:wght@400;500;700&display=swap"
],
"footer": "Powered by <a href=\"https://github.com/spencerwooo/onedrive-vercel-index\" target=\"_blank\" rel=\"noopener noreferrer\">onedrive-vercel-index</a>. Made with ❤ by SpencerWoo.",
"protectedRoutes": [
"/🌞 Private folder/u-need-a-password",
"/🥟 Some test files/Protected route"
],
"email": "mailto:spencer.wushangbo@gmail.com",
"links": [
{
"name": "GitHub",
"link": "https://github.com/spencerwooo/onedrive-vercel-index"
},
{
"name": "Telegram",
"link": "https://t.me/realSpencerWoo"
}
]
}
+1 -1
View File
@@ -1,7 +1,7 @@
import Head from 'next/head'
import { useRouter } from 'next/router'
import siteConfig from '../config/site.json'
import siteConfig from '../config/site.config'
import Navbar from '../components/Navbar'
import FileListing from '../components/FileListing'
import Footer from '../components/Footer'
+1 -1
View File
@@ -1,5 +1,5 @@
import Document, { Head, Html, Main, NextScript } from 'next/document'
import siteConfig from '../config/site.json'
import siteConfig from '../config/site.config'
class MyDocument extends Document {
render() {
+2 -2
View File
@@ -4,8 +4,8 @@ import type { NextApiRequest, NextApiResponse } from 'next'
import axios from 'axios'
import Cors from 'cors'
import apiConfig from '../../config/api.json'
import siteConfig from '../../config/site.json'
import apiConfig from '../../config/api.config'
import siteConfig from '../../config/site.config'
import { revealObfuscatedToken } from '../../utils/oAuthHandler'
import { compareHashedToken } from '../../utils/protectedRouteHandler'
import { getOdAuthTokens, storeOdAuthTokens } from '../../utils/odAuthTokenStore'
+1 -1
View File
@@ -2,7 +2,7 @@ import axios from 'axios'
import type { NextApiRequest, NextApiResponse } from 'next'
import { getAccessToken } from '.'
import apiConfig from '../../config/api.json'
import apiConfig from '../../config/api.config'
export default async function handler(req: NextApiRequest, res: NextApiResponse) {
// Get access token from storage
+1 -1
View File
@@ -1,7 +1,7 @@
import axios from 'axios'
import type { NextApiRequest, NextApiResponse } from 'next'
import apiConfig from '../../config/api.json'
import apiConfig from '../../config/api.config'
export default async function handler(req: NextApiRequest, res: NextApiResponse) {
// 'inline' is used for previewing PDF files inside the browser directly
+2 -2
View File
@@ -2,8 +2,8 @@ import axios from 'axios'
import type { NextApiRequest, NextApiResponse } from 'next'
import { encodePath, getAccessToken } from '.'
import apiConfig from '../../config/api.json'
import siteConfig from '../../config/site.json'
import apiConfig from '../../config/api.config'
import siteConfig from '../../config/site.config'
/**
* Sanitize the search query
+1 -1
View File
@@ -1,6 +1,6 @@
import Head from 'next/head'
import siteConfig from '../config/site.json'
import siteConfig from '../config/site.config'
import Navbar from '../components/Navbar'
import FileListing from '../components/FileListing'
import Footer from '../components/Footer'
+2 -2
View File
@@ -2,8 +2,8 @@ import Head from 'next/head'
import Image from 'next/image'
import { useRouter } from 'next/router'
import siteConfig from '../../config/site.json'
import apiConfig from '../../config/api.json'
import siteConfig from '../../config/site.config'
import apiConfig from '../../config/api.config'
import Navbar from '../../components/Navbar'
import Footer from '../../components/Footer'
import { FontAwesomeIcon } from '@fortawesome/react-fontawesome'
+1 -1
View File
@@ -4,7 +4,7 @@ import { useRouter } from 'next/router'
import { useState } from 'react'
import { FontAwesomeIcon } from '@fortawesome/react-fontawesome'
import siteConfig from '../../config/site.json'
import siteConfig from '../../config/site.config'
import Navbar from '../../components/Navbar'
import Footer from '../../components/Footer'
import { LoadingIcon } from '../../components/Loading'
+1 -1
View File
@@ -4,7 +4,7 @@ import { useRouter } from 'next/router'
import { useEffect, useState } from 'react'
import { FontAwesomeIcon } from '@fortawesome/react-fontawesome'
import siteConfig from '../../config/site.json'
import siteConfig from '../../config/site.config'
import Navbar from '../../components/Navbar'
import Footer from '../../components/Footer'
+1 -1
View File
@@ -1,6 +1,6 @@
const defaultTheme = require('tailwindcss/defaultTheme')
const colors = require('tailwindcss/colors')
const siteConfig = require('./config/site.json')
const siteConfig = require('./config/site.config')
module.exports = {
mode: 'jit',
+1 -1
View File
@@ -1,7 +1,7 @@
import axios from 'axios'
import CryptoJS from 'crypto-js'
import apiConfig from '../config/api.json'
import apiConfig from '../config/api.config'
// Just a disguise to obfuscate required tokens (including but not limited to client secret,
// access tokens, and refresh tokens), used along with the following two functions
+1 -1
View File
@@ -1,5 +1,5 @@
import sha256 from 'crypto-js/sha256'
import siteConfig from '../config/site.json'
import siteConfig from '../config/site.config'
// Hash password token with SHA256
function encryptToken(token: string): string {