Skip to content

Commit 9f8584d

Browse files
authored
Merge pull request #474 from dzcode-io/473-add-robottxt-to-disallow-indexing-non-production-version-of-the-website
2 parents 56ee86c + d13528a commit 9f8584d

File tree

7 files changed

+84
-15
lines changed

7 files changed

+84
-15
lines changed

.github/workflows/cd.deploy.stg.yml

Lines changed: 8 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,14 @@ jobs:
1414
node-version: [14.x]
1515
os: [ubuntu-latest]
1616

17+
env:
18+
CI: true
19+
STAGE: staging
20+
SSH_KNOWN_HOSTS: ${{ secrets.SSH_KNOWN_HOSTS }}
21+
SSH_ADDRESS_STG: ${{ secrets.SSH_ADDRESS_STG }}
22+
FIREBASE_TOKEN: ${{ secrets.FIREBASE_TOKEN }}
23+
EXPO_TOKEN: ${{ secrets.EXPO_TOKEN }}
24+
1725
steps:
1826
- name: "Git"
1927
uses: actions/checkout@v2
@@ -60,10 +68,3 @@ jobs:
6068
shell: bash
6169
run: |
6270
yarn deploy:stg
63-
64-
env:
65-
CI: true
66-
SSH_KNOWN_HOSTS: ${{ secrets.SSH_KNOWN_HOSTS }}
67-
SSH_ADDRESS_STG: ${{ secrets.SSH_ADDRESS_STG }}
68-
FIREBASE_TOKEN: ${{ secrets.FIREBASE_TOKEN }}
69-
EXPO_TOKEN: ${{ secrets.EXPO_TOKEN }}

.github/workflows/cd.deploy.yml

Lines changed: 8 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,14 @@ jobs:
1414
node-version: [14.x]
1515
os: [ubuntu-latest]
1616

17+
env:
18+
CI: true
19+
STAGE: production
20+
SSH_KNOWN_HOSTS: ${{ secrets.SSH_KNOWN_HOSTS }}
21+
SSH_ADDRESS_PRD: ${{ secrets.SSH_ADDRESS_PRD }}
22+
FIREBASE_TOKEN: ${{ secrets.FIREBASE_TOKEN }}
23+
EXPO_TOKEN: ${{ secrets.EXPO_TOKEN }}
24+
1725
steps:
1826
- name: "Git"
1927
uses: actions/checkout@v2
@@ -67,10 +75,3 @@ jobs:
6775
shell: bash
6876
run: |
6977
yarn deploy
70-
71-
env:
72-
CI: true
73-
SSH_KNOWN_HOSTS: ${{ secrets.SSH_KNOWN_HOSTS }}
74-
SSH_ADDRESS_PRD: ${{ secrets.SSH_ADDRESS_PRD }}
75-
FIREBASE_TOKEN: ${{ secrets.FIREBASE_TOKEN }}
76-
EXPO_TOKEN: ${{ secrets.EXPO_TOKEN }}

api/package.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@
1919
"dotenv": "^8.2.0",
2020
"express": "^4.17.1",
2121
"express-rate-limit": "^5.2.6",
22+
"express-robots-txt": "^1.0.0",
2223
"fs-extra": "^10.0.0",
2324
"helmet": "^4.4.1",
2425
"make-fetch-happen": "^9.0.2",

api/src/app/index.ts

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@ import { LoggerMiddleware } from "./middlewares/logger";
1919
import { SecurityMiddleware } from "./middlewares/security";
2020
import { SentryErrorHandlerMiddleware } from "./middlewares/sentry-error-handler";
2121
import { SentryRequestHandlerMiddleware } from "./middlewares/sentry-request-handler";
22+
const robots = require("express-robots-txt"); // eslint-disable-line @typescript-eslint/no-var-requires
2223

2324
// Use typedi container
2425
useContainer(Container);
@@ -59,6 +60,8 @@ const app: Application = createExpressServer(routingControllersOptions);
5960

6061
const logger = Container.get(LoggerService);
6162

63+
app.use(robots({ UserAgent: "*", Disallow: "/" }));
64+
6265
// Start it
6366
app.listen(PORT, () => {
6467
const commonConfig = fsConfig(NODE_ENV);

web/package.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -82,6 +82,7 @@
8282
"postcss-preset-env": "^7.0.1",
8383
"pug": "^3.0.0",
8484
"pug-loader": "^2.4.0",
85+
"robotstxt-webpack-plugin": "^7.0.0",
8586
"sass": "^1.30.0",
8687
"sass-loader": "^10.1.0",
8788
"sitemap": "^6.3.5",

web/webpack.config.ts

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
import { fsConfig } from "@dzcode.io/utils/dist/config";
2+
import { Environment } from "@dzcode.io/utils/dist/config/environment";
23
import CssMinimizerPlugin from "css-minimizer-webpack-plugin";
34
import { readFileSync } from "fs";
45
import glob from "glob";
@@ -10,9 +11,14 @@ import { Configuration as WPC } from "webpack";
1011
import { BundleAnalyzerPlugin } from "webpack-bundle-analyzer";
1112
import { Configuration as WPDSC } from "webpack-dev-server";
1213

14+
const RobotstxtPlugin = require("robotstxt-webpack-plugin"); // eslint-disable-line @typescript-eslint/no-var-requires
15+
16+
// @TODO-ZM: to combine isProduction and isDevelopment and stage
17+
1318
// setting up project configurations and some env variables
1419
const ANALYZE = process.env.ANALYZE === "true";
1520
const isProduction = process.env.NODE_ENV === "production" || ANALYZE;
21+
const stage = (process.env.STAGE as Environment) || "production";
1622
const isDevelopment = process.env.NODE_ENV === "development" && !ANALYZE;
1723
const { web } = fsConfig("development");
1824
const distFolder = "./bundle";
@@ -157,6 +163,15 @@ export default {
157163
new BundleAnalyzerPlugin(),
158164
]
159165
: []),
166+
new RobotstxtPlugin({
167+
policy: [
168+
{
169+
userAgent: "*",
170+
allow: stage === "production" ? "/" : undefined,
171+
disallow: stage !== "production" ? "/" : undefined,
172+
},
173+
],
174+
}),
160175
...apps.reduce<WPC["plugins"][]>(
161176
(pV, app) => [...pV, ...require(`./src/apps/${app}/entry/webpack.plugins`)],
162177
[],

yarn.lock

Lines changed: 48 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9711,6 +9711,11 @@ express-rate-limit@^5.2.6:
97119711
resolved "https://registry.yarnpkg.com/express-rate-limit/-/express-rate-limit-5.5.1.tgz#110c23f6a65dfa96ab468eda95e71697bc6987a2"
97129712
integrity sha512-MTjE2eIbHv5DyfuFz4zLYWxpqVhEhkTiwFGuB74Q9CSou2WHO52nlE5y3Zlg6SIsiYUIPj6ifFxnkPz6O3sIUg==
97139713

9714+
express-robots-txt@^1.0.0:
9715+
version "1.0.0"
9716+
resolved "https://registry.yarnpkg.com/express-robots-txt/-/express-robots-txt-1.0.0.tgz#354dde6f241c3d4ed39f74cfd0604dd92daea497"
9717+
integrity sha512-ZzXTJgvHY6N8MIPzWidIrOGngkNJ8nrSP9Ox0nztVkQxvpwcX8egJvhM6tBUojf9xDmnSc7J5RlWQJJK91N3aA==
9718+
97149719
express-session@^1.17.1:
97159720
version "1.17.2"
97169721
resolved "https://registry.yarnpkg.com/express-session/-/express-session-1.17.2.tgz#397020374f9bf7997f891b85ea338767b30d0efd"
@@ -10624,6 +10629,18 @@ gcp-metadata@^4.2.0:
1062410629
gaxios "^4.0.0"
1062510630
json-bigint "^1.0.0"
1062610631

10632+
generate-robotstxt@^8.0.0:
10633+
version "8.0.3"
10634+
resolved "https://registry.yarnpkg.com/generate-robotstxt/-/generate-robotstxt-8.0.3.tgz#83384090406e760e9d02247412b2b704562c9b58"
10635+
integrity sha512-iD//oAVKcHOCz9M0IiT3pyUiF2uN1qvL3qaTA8RGLz7NU7l0XVwyzd3rN+tzhB657DNUgrygXt9w8+0zkTMFrg==
10636+
dependencies:
10637+
cosmiconfig "^6.0.0"
10638+
fs-extra "^9.0.0"
10639+
ip-regex "^4.1.0"
10640+
is-absolute-url "^3.0.3"
10641+
meow "^7.0.1"
10642+
resolve-from "^5.0.0"
10643+
1062710644
gensync@^1.0.0-beta.1, gensync@^1.0.0-beta.2:
1062810645
version "1.0.0-beta.2"
1062910646
resolved "https://registry.yarnpkg.com/gensync/-/gensync-1.0.0-beta.2.tgz#32a6ee76c3d7f52d46b2b1ae5d93fea8580a25e0"
@@ -14569,6 +14586,23 @@ memorystream@^0.3.1:
1456914586
resolved "https://registry.yarnpkg.com/memorystream/-/memorystream-0.3.1.tgz#86d7090b30ce455d63fbae12dda51a47ddcaf9b2"
1457014587
integrity sha1-htcJCzDORV1j+64S3aUaR93K+bI=
1457114588

14589+
meow@^7.0.1:
14590+
version "7.1.1"
14591+
resolved "https://registry.yarnpkg.com/meow/-/meow-7.1.1.tgz#7c01595e3d337fcb0ec4e8eed1666ea95903d306"
14592+
integrity sha512-GWHvA5QOcS412WCo8vwKDlTelGLsCGBVevQB5Kva961rmNfun0PCbv5+xta2kUMFJyR8/oWnn7ddeKdosbAPbA==
14593+
dependencies:
14594+
"@types/minimist" "^1.2.0"
14595+
camelcase-keys "^6.2.2"
14596+
decamelize-keys "^1.1.0"
14597+
hard-rejection "^2.1.0"
14598+
minimist-options "4.1.0"
14599+
normalize-package-data "^2.5.0"
14600+
read-pkg-up "^7.0.1"
14601+
redent "^3.0.0"
14602+
trim-newlines "^3.0.0"
14603+
type-fest "^0.13.1"
14604+
yargs-parser "^18.1.3"
14605+
1457214606
meow@^8.0.0:
1457314607
version "8.1.2"
1457414608
resolved "https://registry.yarnpkg.com/meow/-/meow-8.1.2.tgz#bcbe45bda0ee1729d350c03cffc8395a36c4e897"
@@ -19338,6 +19372,14 @@ ripemd160@^2.0.0, ripemd160@^2.0.1:
1933819372
hash-base "^3.0.0"
1933919373
inherits "^2.0.1"
1934019374

19375+
robotstxt-webpack-plugin@^7.0.0:
19376+
version "7.0.0"
19377+
resolved "https://registry.yarnpkg.com/robotstxt-webpack-plugin/-/robotstxt-webpack-plugin-7.0.0.tgz#04b26c9e1cd2ad8ebc5e20918aeeb6ed5d56835e"
19378+
integrity sha512-Rk0moeHvqc3to6oE2z5lKW9GTJyQC/ysogNy465N2CT2Xvp2/DMPkix8idnpmBLfExrQjml18B8Z/HoAC/yPlg==
19379+
dependencies:
19380+
generate-robotstxt "^8.0.0"
19381+
webpack-sources "^1.4.3"
19382+
1934119383
router-ips@^1.0.0:
1934219384
version "1.0.0"
1934319385
resolved "https://registry.yarnpkg.com/router-ips/-/router-ips-1.0.0.tgz#44e00858ebebc0133d58e40b2cd8a1fbb04203f5"
@@ -21409,6 +21451,11 @@ type-fest@^0.12.0:
2140921451
resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.12.0.tgz#f57a27ab81c68d136a51fd71467eff94157fa1ee"
2141021452
integrity sha512-53RyidyjvkGpnWPMF9bQgFtWp+Sl8O2Rp13VavmJgfAP9WWG6q6TkrKU8iyJdnwnfgHI6k2hTlgqH4aSdjoTbg==
2141121453

21454+
type-fest@^0.13.1:
21455+
version "0.13.1"
21456+
resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.13.1.tgz#0172cb5bce80b0bd542ea348db50c7e21834d934"
21457+
integrity sha512-34R7HTnG0XIJcBSn5XhDd7nNFPRcXYRZrBB2O2jdKqYODldSzBAqzsWoZYYvduky73toYS/ESqxPvkDf/F0XMg==
21458+
2141221459
type-fest@^0.16.0:
2141321460
version "0.16.0"
2141421461
resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.16.0.tgz#3240b891a78b0deae910dbeb86553e552a148860"
@@ -22782,7 +22829,7 @@ yargs-parser@^13.1.2:
2278222829
camelcase "^5.0.0"
2278322830
decamelize "^1.2.0"
2278422831

22785-
yargs-parser@^18.1.2:
22832+
yargs-parser@^18.1.2, yargs-parser@^18.1.3:
2278622833
version "18.1.3"
2278722834
resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-18.1.3.tgz#be68c4975c6b2abf469236b0c870362fab09a7b0"
2278822835
integrity sha512-o50j0JeToy/4K6OZcaQmW6lyXXKhq7csREXcDwk2omFPJEwUNOVtJKvmDr9EI1fAJZUyZcRF7kxGBWmRXudrCQ==

0 commit comments

Comments
 (0)