From 99f1890257a5a98b97638acd42968ebb3705c77b Mon Sep 17 00:00:00 2001 From: code002lover Date: Tue, 29 Apr 2025 00:28:50 +0200 Subject: [PATCH] fix error + format --- .github/workflows/node.js.yml | 41 +- .husky/.gitignore | 1 + .husky/pre-commit | 4 + .imgbotconfig | 2 +- .prettierignore | 2 + .prettierrc.toml | 4 + README.md | 3 +- css/authorize.css | 2 +- css/changePW.css | 46 +- css/global.css | 115 +- css/logon.css | 133 +- css/main.css | 61 +- css/posts.css | 99 +- css/search.css | 2 +- css/style.css | 37 +- docker-compose.yml | 62 +- extra_modules/SHA.js | 35 +- extra_modules/ensureExists.js | 26 +- extra_modules/getip.js | 17 +- extra_modules/navbar.html | 20 +- extra_modules/unsign.js | 47 +- extra_modules/xor.js | 25 +- js/addnavbar.js | 4 +- js/changePW.js | 39 +- js/changeUsername.js | 45 +- js/dms.js | 813 +-- js/extend_key.js | 102 +- js/htmlescape.js | 95 +- js/httppost.js | 8 +- js/index.js | 22 +- js/login.js | 28 +- js/markdown.js | 92 +- js/modal.js | 44 +- js/posts.js | 959 ++-- js/register.js | 51 +- js/search.js | 121 +- js/settings.js | 224 +- js/user.js | 83 +- js/warn_message.js | 15 +- package-lock.json | 8280 ++++++++++++++++------------ package.json | 91 +- pnpm-lock.yaml | 1285 +++-- pnpm-workspace.yaml | 2 +- routes/api/all.js | 188 +- routes/api/dms/PersonalMessages.js | 121 +- routes/api/dms/post.js | 128 +- routes/api/getFileIcon.js | 43 +- routes/api/getPosts.js | 94 +- routes/api/options.js | 28 +- routes/api/post.js | 295 +- routes/api/search.js | 62 +- routes/api/settingshandler.js | 77 +- routes/api/userRoutes.js | 415 +- routes/authorize.js | 157 +- routes/logout.js | 17 +- routes/serve_static_files.js | 119 +- routes/setup_all_routes.js | 41 +- routes/user_auth.js | 292 +- routes/userfiles.js | 245 +- server.js | 435 +- server_config.json | 328 +- swagger.cjs | 121 +- tests/index.js | 2 +- 63 files changed, 9380 insertions(+), 7015 deletions(-) create mode 100644 .husky/.gitignore create mode 100755 .husky/pre-commit create mode 100644 .prettierignore create mode 100644 .prettierrc.toml diff --git a/.github/workflows/node.js.yml b/.github/workflows/node.js.yml index 05f5588..1ca9711 100644 --- a/.github/workflows/node.js.yml +++ b/.github/workflows/node.js.yml @@ -4,28 +4,27 @@ name: Node.js CI on: - push: - branches: [ "master" ] - pull_request: - branches: [ "master" ] + push: + branches: ['master'] + pull_request: + branches: ['master'] jobs: - build: + build: + runs-on: ubuntu-latest - runs-on: ubuntu-latest + strategy: + matrix: + node-version: [12.x, 14.x, 16.x] + # See supported Node.js release schedule at https://nodejs.org/en/about/releases/ - strategy: - matrix: - node-version: [12.x, 14.x, 16.x] - # See supported Node.js release schedule at https://nodejs.org/en/about/releases/ - - steps: - - uses: actions/checkout@v3 - - name: Use Node.js ${{ matrix.node-version }} - uses: actions/setup-node@v3 - with: - node-version: ${{ matrix.node-version }} - cache: 'npm' - - run: npm ci - - run: npm run build --if-present - - run: npm test + steps: + - uses: actions/checkout@v3 + - name: Use Node.js ${{ matrix.node-version }} + uses: actions/setup-node@v3 + with: + node-version: ${{ matrix.node-version }} + cache: 'npm' + - run: npm ci + - run: npm run build --if-present + - run: npm test diff --git a/.husky/.gitignore b/.husky/.gitignore new file mode 100644 index 0000000..31354ec --- /dev/null +++ b/.husky/.gitignore @@ -0,0 +1 @@ +_ diff --git a/.husky/pre-commit b/.husky/pre-commit new file mode 100755 index 0000000..36af219 --- /dev/null +++ b/.husky/pre-commit @@ -0,0 +1,4 @@ +#!/bin/sh +. "$(dirname "$0")/_/husky.sh" + +npx lint-staged diff --git a/.imgbotconfig b/.imgbotconfig index 6046bb6..8f538db 100644 --- a/.imgbotconfig +++ b/.imgbotconfig @@ -2,4 +2,4 @@ "minKBReduced": null, "compressWiki": "true", "aggressiveCompression": "true" -} \ No newline at end of file +} diff --git a/.prettierignore b/.prettierignore new file mode 100644 index 0000000..7ed70f2 --- /dev/null +++ b/.prettierignore @@ -0,0 +1,2 @@ +views/ +pnpm-lock.yaml \ No newline at end of file diff --git a/.prettierrc.toml b/.prettierrc.toml new file mode 100644 index 0000000..327d72b --- /dev/null +++ b/.prettierrc.toml @@ -0,0 +1,4 @@ +trailingComma = "es5" +tabWidth = 4 +semi = false +singleQuote = true diff --git a/README.md b/README.md index a0891b3..8ef78f7 100644 --- a/README.md +++ b/README.md @@ -1,3 +1,4 @@ # IPost + IPost, formerly known as "authwebsite" is a chatting platform that also server as a gateway for me to have authentication for my other projects. -You can visit IPost under https://ipost.rocks \ No newline at end of file +You can visit IPost under https://ipost.rocks diff --git a/css/authorize.css b/css/authorize.css index 9a3e35b..c710ab5 100644 --- a/css/authorize.css +++ b/css/authorize.css @@ -18,4 +18,4 @@ body { .hidden { display: none; -} \ No newline at end of file +} diff --git a/css/changePW.css b/css/changePW.css index 0bc5495..124dfda 100644 --- a/css/changePW.css +++ b/css/changePW.css @@ -1,37 +1,37 @@ body { - text-align: center; - background: black; + text-align: center; + background: black; } div { - align-items: center; - text-align: center; - border-radius: 20px; - border: 5px solid black; - display: inline-block; - padding: 5%; - padding-top: 1%; - background-color: darkgray; + align-items: center; + text-align: center; + border-radius: 20px; + border: 5px solid black; + display: inline-block; + padding: 5%; + padding-top: 1%; + background-color: darkgray; } button { - border-radius: 5px; - font-size: 19px; - background-color: purple; - color: white; + border-radius: 5px; + font-size: 19px; + background-color: purple; + color: white; } input { - border-radius: 8px; - font-size: 20px; - text-align: center; - background-color: darkgray; - color: black; + border-radius: 8px; + font-size: 20px; + text-align: center; + background-color: darkgray; + color: black; } label { - display: inline-block; - width: 150px; - text-align: right; - font-size: 18px; + display: inline-block; + width: 150px; + text-align: right; + font-size: 18px; } diff --git a/css/global.css b/css/global.css index 50e0fc5..ea4d060 100644 --- a/css/global.css +++ b/css/global.css @@ -1,131 +1,132 @@ :root { - --green: #C2F9BB; /* links etc */ - --fg-color: #303034; /* post background */ - --bg-color: #1B1B1E; /* page background etc */ - --text-color: #ECEAF1; /* text */ - --blue-ish: #587291; /* buttons etc */ + --green: #c2f9bb; /* links etc */ + --fg-color: #303034; /* post background */ + --bg-color: #1b1b1e; /* page background etc */ + --text-color: #eceaf1; /* text */ + --blue-ish: #587291; /* buttons etc */ } * { - font-family: Arial, Helvetica, sans-serif; + font-family: Arial, Helvetica, sans-serif; } html { - scroll-behavior: smooth; + scroll-behavior: smooth; } body { - margin: 8px; + margin: 8px; } .noselect { - user-select: none; + user-select: none; } #modal-shade, #modal { - display: none; - text-align: center; + display: none; + text-align: center; } #modal-shade { - position: fixed; - z-index: 100; - top: 0; - left: 0; - width: 100%; - height: 100%; + position: fixed; + z-index: 100; + top: 0; + left: 0; + width: 100%; + height: 100%; } #modal { - z-index: 101; - position: fixed; - width: 50%; - height:50%; - left:25%; - right:25%; - top:25%; - + z-index: 101; + position: fixed; + width: 50%; + height: 50%; + left: 25%; + right: 25%; + top: 25%; } #modal-shade { - background: silver; - opacity: 0.5; - filter: alpha(opacity=50); + background: silver; + opacity: 0.5; + filter: alpha(opacity=50); } #modal { - background: rgba(0,0,0,.5); + background: rgba(0, 0, 0, 0.5); } ul { - list-style-type: none; - margin: 0; - padding: 0; - overflow: hidden; - background-color: var(--fg-color); + list-style-type: none; + margin: 0; + padding: 0; + overflow: hidden; + background-color: var(--fg-color); } li { - float: left; + float: left; } li a { - display: block; - color: white; - text-align: center; - padding: 14px 16px; - text-decoration: none; + display: block; + color: white; + text-align: center; + padding: 14px 16px; + text-decoration: none; } .totib { - margin-top: 6.5%; + margin-top: 6.5%; } li a:hover { - background-color: #111; + background-color: #111; } a { - text-decoration: none; + text-decoration: none; } -a:link:not(.no-link-style), a:visited:not(.no-link-style) { - color: var(--green); +a:link:not(.no-link-style), +a:visited:not(.no-link-style) { + color: var(--green); } -.no-link-style:visited, .no-link-style:link { - color: var(--text-color); +.no-link-style:visited, +.no-link-style:link { + color: var(--text-color); } a:hover { - color: red; + color: red; } footer { - color: white; - margin-top: 100px; - background-color: var(--fg-color); + color: white; + margin-top: 100px; + background-color: var(--fg-color); } .right { - float: right; + float: right; } .less_padding { - padding: 6px 14px; + padding: 6px 14px; } .pd-great { - padding: 10px 30px; + padding: 10px 30px; } .bg-light { - background-color: var(--fg-color); + background-color: var(--fg-color); } .bg-dark { - background-color: var(--bg-color); + background-color: var(--bg-color); } .no-bg-img { - background: none; + background: none; } diff --git a/css/logon.css b/css/logon.css index 12c79b5..f392bb6 100644 --- a/css/logon.css +++ b/css/logon.css @@ -1,98 +1,99 @@ * { - padding: 0px; - margin: 0px; + padding: 0px; + margin: 0px; } body { - background-color: var(--bg-color); + background-color: var(--bg-color); } header { - color: white; - display: flex; - align-items: center; - justify-content: center; - height: 15vh; - box-shadow: 5px 5px 10px rgb(0,0,0,0.3); + color: white; + display: flex; + align-items: center; + justify-content: center; + height: 15vh; + box-shadow: 5px 5px 10px rgb(0, 0, 0, 0.3); } h1 { - letter-spacing: 1.5vw; - text-transform: uppercase; - text-align: center; + letter-spacing: 1.5vw; + text-transform: uppercase; + text-align: center; } main { - display: flex; - align-items: center; - justify-content: center; - height: 75vh; - width: 100%; - background: url(https://ipost.rocks/images/Mountains.webp) no-repeat center center; - background-size: cover; + display: flex; + align-items: center; + justify-content: center; + height: 75vh; + width: 100%; + background: url(https://ipost.rocks/images/Mountains.webp) no-repeat center + center; + background-size: cover; } .form_class { - width: 500px; - padding: 40px; - border-radius: 8px; - background-color: var(--bg-color); - color: var(--text-color); - box-shadow: 5px 5px 10px rgb(0,0,0,.3); + width: 500px; + padding: 40px; + border-radius: 8px; + background-color: var(--bg-color); + color: var(--text-color); + box-shadow: 5px 5px 10px rgb(0, 0, 0, 0.3); } .form_div { - text-transform: uppercase; + text-transform: uppercase; } .form_div > label { - letter-spacing: 3px; - font-size: 1rem; + letter-spacing: 3px; + font-size: 1rem; } .info_div { - text-align: center; - margin-top: 20px; + text-align: center; + margin-top: 20px; } .info_div { - letter-spacing: 1px; + letter-spacing: 1px; } .field_class { - width: 100%; - border-radius: 6px; - border-style: solid; - border-width: 1px; - padding: 5px 0px; - text-indent: 6px; - margin-top: 10px; - margin-bottom: 20px; - font-size: 0.9rem; - letter-spacing: 2px; + width: 100%; + border-radius: 6px; + border-style: solid; + border-width: 1px; + padding: 5px 0px; + text-indent: 6px; + margin-top: 10px; + margin-bottom: 20px; + font-size: 0.9rem; + letter-spacing: 2px; } .submit_class { - border-style: none; - border-radius: 5px; - background-color: #FFE6D4; - padding: 8px 20px; - text-transform: uppercase; - letter-spacing: .8px; - display: block; - margin: auto; - margin-top: 10px; - box-shadow: 2px 2px 5px rgb(0,0,0,0.2); - cursor: pointer; + border-style: none; + border-radius: 5px; + background-color: #ffe6d4; + padding: 8px 20px; + text-transform: uppercase; + letter-spacing: 0.8px; + display: block; + margin: auto; + margin-top: 10px; + box-shadow: 2px 2px 5px rgb(0, 0, 0, 0.2); + cursor: pointer; } footer { - height: 10vh; - background-color: black; - color: white; - display: flex; - align-items: center; - justify-content: center; - box-shadow: -5px -5px 10px rgb(0,0,0,0.3); + height: 10vh; + background-color: black; + color: white; + display: flex; + align-items: center; + justify-content: center; + box-shadow: -5px -5px 10px rgb(0, 0, 0, 0.3); } footer > p { - text-align: center; - letter-spacing: 3px; + text-align: center; + letter-spacing: 3px; } footer > p > a { - text-decoration: none; - color: white; - font-weight: bold; + text-decoration: none; + color: white; + font-weight: bold; } a { - color: red; - text-decoration: none; + color: red; + text-decoration: none; } diff --git a/css/main.css b/css/main.css index f7e9b19..044390d 100644 --- a/css/main.css +++ b/css/main.css @@ -1,46 +1,47 @@ * { - padding: 0px; - margin: 0px; + padding: 0px; + margin: 0px; } body { - background-color: lightgreen; + background-color: lightgreen; } header { - background-color: black; - color: white; - display: flex; - align-items: center; - justify-content: center; - height: 15vh; - box-shadow: 5px 5px 10px rgb(0,0,0,0.3); + background-color: black; + color: white; + display: flex; + align-items: center; + justify-content: center; + height: 15vh; + box-shadow: 5px 5px 10px rgb(0, 0, 0, 0.3); } h1 { - letter-spacing: 1.5vw; - text-transform: uppercase; - text-align: center; + letter-spacing: 1.5vw; + text-transform: uppercase; + text-align: center; } main { - display: flex; - align-items: center; - justify-content: center; - height: 75vh; - width: 100%; - background: url(https://upload.wikimedia.org/wikipedia/commons/thumb/0/0b/Mountains-1412683.svg/1280px-Mountains-1412683.svg.png) no-repeat center center; - background-size: cover; + display: flex; + align-items: center; + justify-content: center; + height: 75vh; + width: 100%; + background: url(https://upload.wikimedia.org/wikipedia/commons/thumb/0/0b/Mountains-1412683.svg/1280px-Mountains-1412683.svg.png) + no-repeat center center; + background-size: cover; } .info_div { - text-align: center; - margin-top: 20px; + text-align: center; + margin-top: 20px; } .info_div { - letter-spacing: 1px; + letter-spacing: 1px; } footer { - height: 10vh; - background-color: black; - color: white; - display: flex; - align-items: center; - justify-content: center; - box-shadow: -5px -5px 10px rgb(0,0,0,0.3); + height: 10vh; + background-color: black; + color: white; + display: flex; + align-items: center; + justify-content: center; + box-shadow: -5px -5px 10px rgb(0, 0, 0, 0.3); } diff --git a/css/posts.css b/css/posts.css index a4de1c8..e6d67d9 100644 --- a/css/posts.css +++ b/css/posts.css @@ -1,108 +1,111 @@ #posts > div > p > span:first-child { - color: #BFE7D4; + color: #bfe7d4; } .status { - color: var(--text-color); + color: var(--text-color); } .self { - color: var(--text-color); + color: var(--text-color); } #username-self { - color: #036D19; + color: #036d19; } .specialtext { - color: yellow; + color: yellow; } .crossout { - text-decoration: line-through; + text-decoration: line-through; } .greentext { - color: var(--green); + color: var(--green); } #posts > div { - background-color: var(--fg-color); - padding-left: 5px; - padding-bottom: 2px; + background-color: var(--fg-color); + padding-left: 5px; + padding-bottom: 2px; } .avatar { - margin-right: 5px; - margin-top: 10px; - margin-left: 5px; + margin-right: 5px; + margin-top: 10px; + margin-left: 5px; } .mention { - color: blue; + color: blue; } .user-mention { - color: #036D19; + color: #036d19; } .everyone-mention { - color: aqua; + color: aqua; } body { - background-color: var(--bg-color); + background-color: var(--bg-color); } textarea { - background-color: var(--bg-color); + background-color: var(--bg-color); } button { - background-color: var(--blue-ish); + background-color: var(--blue-ish); } -.post,.self,.status { - padding: 1%; - color: var(--text-color); - width: 50%; - margin-left: 25%; - margin-right: 25%; - margin-top: 10px; - margin-bottom: 10px; - border-radius: 10px; - overflow-wrap: break-word; - overflow: hidden; +.post, +.self, +.status { + padding: 1%; + color: var(--text-color); + width: 50%; + margin-left: 25%; + margin-right: 25%; + margin-top: 10px; + margin-bottom: 10px; + border-radius: 10px; + overflow-wrap: break-word; + overflow: hidden; } .ovfl-bw { - overflow-wrap: break-word; - overflow: hidden; - background-color: var(--bg-color); - padding: 1%; + overflow-wrap: break-word; + overflow: hidden; + background-color: var(--bg-color); + padding: 1%; } -#post-text, button { - color: var(--text-color); - border-radius: 5px; - resize: none; - overflow-wrap: break-word; - overflow: hidden; +#post-text, +button { + color: var(--text-color); + border-radius: 5px; + resize: none; + overflow-wrap: break-word; + overflow: hidden; } .channelTab { - color: var(--text-color); - background-color: var(--fg-color); - text-align: center; - float: left; - margin-left: 20px; - margin-right: 20px; + color: var(--text-color); + background-color: var(--fg-color); + text-align: center; + float: left; + margin-left: 20px; + margin-right: 20px; } .channel { - padding: 10px; + padding: 10px; } #scriptonly { - margin: auto; + margin: auto; } diff --git a/css/search.css b/css/search.css index 55e5081..3588c27 100644 --- a/css/search.css +++ b/css/search.css @@ -4,5 +4,5 @@ body { } .form_div { - text-align: center; + text-align: center; } diff --git a/css/style.css b/css/style.css index b3eedcc..cd04628 100644 --- a/css/style.css +++ b/css/style.css @@ -5,7 +5,7 @@ body { } h1 { - color: white; + color: white; } button { @@ -13,29 +13,30 @@ button { margin: 10px; } -::placeholder{ - color: white; +::placeholder { + color: white; } -#bio { - color:black; - font-size: 20px; - background-color: black; - border: 0px solid black; - border-radius: 7px; +#bio { + color: black; + font-size: 20px; + background-color: black; + border: 0px solid black; + border-radius: 7px; } .bio { - color:black; - font-size: 20px; + color: black; + font-size: 20px; } main { -display: flex; -/* align-items: center; */ -justify-content: center; -height: 75vh; -width: 100%; -background: url(https://upload.wikimedia.org/wikipedia/commons/thumb/0/0b/Mountains-1412683.svg/1280px-Mountains-1412683.svg.png) no-repeat center center; -background-size: cover; + display: flex; + /* align-items: center; */ + justify-content: center; + height: 75vh; + width: 100%; + background: url(https://upload.wikimedia.org/wikipedia/commons/thumb/0/0b/Mountains-1412683.svg/1280px-Mountains-1412683.svg.png) + no-repeat center center; + background-size: cover; } diff --git a/docker-compose.yml b/docker-compose.yml index ac1ca98..eaa7802 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -1,35 +1,35 @@ services: - app: - build: . - ports: - - "23080:80" - environment: - - MYSQL_HOST=db - - MYSQL_USER=ipost - - MYSQL_PASSWORD=ipost_password - - MYSQL_DATABASE=ipost - depends_on: - - db - volumes: - - ./logs:/app/logs - - ./server_config.json:/app/server_config.json - - ./cookiesecret.txt:/app/cookiesecret.txt - - ./mysql_password.txt:/app/mysql_password.txt - restart: unless-stopped + app: + build: . + ports: + - '23080:80' + environment: + - MYSQL_HOST=db + - MYSQL_USER=ipost + - MYSQL_PASSWORD=ipost_password + - MYSQL_DATABASE=ipost + depends_on: + - db + volumes: + - ./logs:/app/logs + - ./server_config.json:/app/server_config.json + - ./cookiesecret.txt:/app/cookiesecret.txt + - ./mysql_password.txt:/app/mysql_password.txt + restart: unless-stopped - db: - image: mysql:8.0 - environment: - - MYSQL_ROOT_PASSWORD=root_password - - MYSQL_DATABASE=ipost - - MYSQL_USER=ipost - - MYSQL_PASSWORD=ipost_password - volumes: - - mysql_data:/var/lib/mysql - - ./createSchema.sql:/docker-entrypoint-initdb.d/createSchema.sql - ports: - - "3306:3306" - restart: unless-stopped + db: + image: mysql:8.0 + environment: + - MYSQL_ROOT_PASSWORD=root_password + - MYSQL_DATABASE=ipost + - MYSQL_USER=ipost + - MYSQL_PASSWORD=ipost_password + volumes: + - mysql_data:/var/lib/mysql + - ./createSchema.sql:/docker-entrypoint-initdb.d/createSchema.sql + ports: + - '3306:3306' + restart: unless-stopped volumes: - mysql_data: \ No newline at end of file + mysql_data: diff --git a/extra_modules/SHA.js b/extra_modules/SHA.js index 14ddeca..07599f2 100644 --- a/extra_modules/SHA.js +++ b/extra_modules/SHA.js @@ -1,12 +1,9 @@ -import crypto from "crypto"; +import crypto from 'crypto' let SHA256_cache = {} function _SHA256(str) { - return crypto - .createHash("sha256") - .update(str) - .digest("base64"); + return crypto.createHash('sha256').update(str).digest('base64') } /** @@ -17,25 +14,23 @@ function _SHA256(str) { * @returns {string} base64 digested hash */ function SHA256(str, salt, num) { - if (!num && num !== 0) - num = 1; - if (!str) - return; - let identifier = _SHA256(str+salt+num.toString()) - if(SHA256_cache[identifier] != undefined) { - return SHA256_cache[identifier]; + if (!num && num !== 0) num = 1 + if (!str) return + let identifier = _SHA256(str + salt + num.toString()) + if (SHA256_cache[identifier] != undefined) { + return SHA256_cache[identifier] } - let ret = str; + let ret = str for (let i = 0; i < num; i++) { ret = _SHA256(ret + salt) } - SHA256_cache[identifier] = ret; - setTimeout(()=>{ + SHA256_cache[identifier] = ret + setTimeout(() => { SHA256_cache[identifier] = undefined - },10000) //cache for 10s - return ret; + }, 10000) //cache for 10s + return ret } -export { SHA256 }; +export { SHA256 } export default { - SHA256: SHA256 -}; + SHA256: SHA256, +} diff --git a/extra_modules/ensureExists.js b/extra_modules/ensureExists.js index 0d14170..70bc021 100644 --- a/extra_modules/ensureExists.js +++ b/extra_modules/ensureExists.js @@ -1,4 +1,4 @@ -import {mkdir} from "fs" +import { mkdir } from 'fs' /** * makes sure that a given folder exists, if it doesn't it creates one for you @@ -7,23 +7,19 @@ import {mkdir} from "fs" * @param {Function} cb callback, gives null if the folder exists, otherwise gives the error * @return {undefined} see: callback */ - function ensureExists(path, mask, cb) { - if (typeof mask === 'function') { // Allow the `mask` parameter to be optional - cb = mask; - mask = 0o744; +function ensureExists(path, mask, cb) { + if (typeof mask === 'function') { + // Allow the `mask` parameter to be optional + cb = mask + mask = 0o744 } mkdir(path, mask, function (err) { if (err) { if (err.code === 'EEXIST') - cb(null); // Ignore the error if the folder already exists - else - cb(err); // Something else went wrong - } - else - cb(null); // Successfully created folder - }); + cb(null) // Ignore the error if the folder already exists + else cb(err) // Something else went wrong + } else cb(null) // Successfully created folder + }) } -export { - ensureExists -} ; \ No newline at end of file +export { ensureExists } diff --git a/extra_modules/getip.js b/extra_modules/getip.js index 7cf79bd..9c1b2bb 100644 --- a/extra_modules/getip.js +++ b/extra_modules/getip.js @@ -1,14 +1,17 @@ -import fs from "fs"; -const config = JSON.parse(fs.readFileSync("server_config.json")); +import fs from 'fs' +const config = JSON.parse(fs.readFileSync('server_config.json')) /** * gets ip of a request * @param {request} req * @returns ip of the given request, after taking preferred headers into account */ function getIP(req) { - let ip = req.socket.remoteAddress; - if (req.headers[config.preferred_ip_header] !== undefined && ip === config.only_prefer_when_ip) - ip = req.headers[config.preferred_ip_header]; - return ip; + let ip = req.socket.remoteAddress + if ( + req.headers[config.preferred_ip_header] !== undefined && + ip === config.only_prefer_when_ip + ) + ip = req.headers[config.preferred_ip_header] + return ip } -export default getIP; +export default getIP diff --git a/extra_modules/navbar.html b/extra_modules/navbar.html index 2fe1d34..1d24991 100644 --- a/extra_modules/navbar.html +++ b/extra_modules/navbar.html @@ -1,7 +1,15 @@ \ No newline at end of file +
  • Home
  • +
  • Profile
  • +
  • Posts
  • +
  • DMs
  • +
  • + settings +
  • + diff --git a/extra_modules/unsign.js b/extra_modules/unsign.js index dc98c99..b65efdb 100644 --- a/extra_modules/unsign.js +++ b/extra_modules/unsign.js @@ -1,7 +1,7 @@ -import * as signature from "cookie-signature"; -import fs from "fs"; -import getIP from "./getip.js"; -const cookiesecret = fs.readFileSync("cookiesecret.txt").toString(); +import * as signature from 'cookie-signature' +import fs from 'fs' +import getIP from './getip.js' +const cookiesecret = fs.readFileSync('cookiesecret.txt').toString() /** * usignes a string * @param {string} text text to unsign @@ -10,14 +10,14 @@ const cookiesecret = fs.readFileSync("cookiesecret.txt").toString(); * @return {string/boolean} unsigned text, or if unsigning was unsuccessful, false */ function unsign(text, req, res) { - let ip = getIP(req); - let unsigned = signature.unsign(text, cookiesecret + ip); + let ip = getIP(req) + let unsigned = signature.unsign(text, cookiesecret + ip) if (!unsigned) { - unsigned = signature.unsign(text, cookiesecret); //unsafe login? - if(!unsigned)return false; + unsigned = signature.unsign(text, cookiesecret) //unsafe login? + if (!unsigned) return false return unsigned } - return unsigned; + return unsigned } /** * unsignes the auth cookie of a request, also sends json response if auth cookie was invalid @@ -26,26 +26,25 @@ function unsign(text, req, res) { * @return {string/boolean} unsigned cookie, or if unsigning was unsuccessful, false */ function getunsigned(req, res) { - let cookie = req.cookies.AUTH_COOKIE; + let cookie = req.cookies.AUTH_COOKIE if (!cookie) { - res.status(403); - res.json({ "error": "you are not logged in! (no cookie)" }); - return; + res.status(403) + res.json({ error: 'you are not logged in! (no cookie)' }) + return } - let unsigned = unsign(cookie, req, res); + let unsigned = unsign(cookie, req, res) if (!unsigned) { try { - res.status(401); - res.json({ "error": "Bad auth cookie set" }); - } - catch (ignored) { } //sometimes it errors, gotta debug soon - return false; + res.status(401) + res.json({ error: 'Bad auth cookie set' }) + } catch (ignored) {} //sometimes it errors, gotta debug soon + return false } - return decodeURIComponent(unsigned); + return decodeURIComponent(unsigned) } -export { unsign }; -export { getunsigned }; +export { unsign } +export { getunsigned } export default { unsign: unsign, - getunsigned: getunsigned -}; + getunsigned: getunsigned, +} diff --git a/extra_modules/xor.js b/extra_modules/xor.js index 40719ac..f567a3f 100644 --- a/extra_modules/xor.js +++ b/extra_modules/xor.js @@ -1,19 +1,24 @@ function XOR_hex(a, b) { - var res = "", i = a.length, j = b.length; + var res = '', + i = a.length, + j = b.length while (i-- > 0 && j-- > 0) - res = (parseInt(a.charAt(i), 16) ^ parseInt(b.charAt(j), 16)).toString(16) + res; - return res; + res = + (parseInt(a.charAt(i), 16) ^ parseInt(b.charAt(j), 16)).toString( + 16 + ) + res + return res } function hexEncode(a) { - let hex; - let result = ""; + let hex + let result = '' for (let i = 0; i < a.length; i++) { - hex = a.charCodeAt(i).toString(16); - result += ("000" + hex).slice(-4); + hex = a.charCodeAt(i).toString(16) + result += ('000' + hex).slice(-4) } - return result; + return result } function xor(a, b) { - return XOR_hex(hexEncode(a), hexEncode(b)).toString("hex"); + return XOR_hex(hexEncode(a), hexEncode(b)).toString('hex') } -export default xor; +export default xor diff --git a/js/addnavbar.js b/js/addnavbar.js index 6a67c0c..02ef55c 100644 --- a/js/addnavbar.js +++ b/js/addnavbar.js @@ -9,7 +9,7 @@ const navbar = `