0
Fork 0
mirror of https://github.com/TryGhost/Ghost.git synced 2025-01-06 22:40:14 -05:00
ghost/core/server/config/overrides.json
Aileen Nowak 5c94151e14 Blog icon validations (#7893)
refs #7688

Adds an `uploads/icon/` endpoint to the api route to get a seperate entry point for blog icon validations. The blog icon validation will specifically check for images which have icon extensions (`.ico` & `.png`) and throw errors if:

- the icon file size is too big (>100kb)
- the icon is not a squaer
- the icon size is smaller than 32px
- the icon size is larger than 1000px
- the icon is not `.ico` or `.png` extension

TODOs for this PR:
- [X] get image dimensions
- [X] validate for image
	- [X] size
	- [X] form (must be square)
	- [X] type
	- [X] dimenstion (min 32px and max 1,000px)
- [X] return appropriate error messages
- [X] write tests

--------------------

TODOs for #7688:
- [X] Figure out, which favicon should be used (uploaded or default) -> #7713
- [ ] Serve and redirect the favicon for any browser requests, incl. redirects -> #7700 [WIP]
- [X] Upload favicon via `general/settings` and implement basic admin validations -> TryGhost/Ghost-Admin#397
- [X] Build server side validations -> this PR
2017-01-26 10:01:52 +01:00

76 lines
2.5 KiB
JSON

{
"paths": {
"appRoot": ".",
"corePath": "core/",
"clientAssets": "core/built/assets",
"imagesRelPath": "content/images",
"helperTemplates": "core/server/helpers/tpl/",
"adminViews": "core/server/views/",
"internalAppPath": "core/server/apps/",
"internalStoragePath": "core/server/storage/",
"internalSchedulingPath": "core/server/scheduling/",
"migrationPath": "core/server/data/migrations"
},
"internalApps": [
"private-blogging",
"subscribers",
"amp"
],
"routeKeywords": {
"tag": "tag",
"author": "author",
"page": "page",
"preview": "p",
"private": "private",
"subscribe": "subscribe",
"amp": "amp"
},
"slugs": {
"reserved": ["admin", "app", "apps", "archive", "archives", "categories",
"category", "dashboard", "feed", "ghost-admin", "login", "logout",
"page", "pages", "post", "posts", "public", "register", "setup",
"signin", "signout", "signup", "user", "users", "wp-admin", "wp-login"],
"protected": ["ghost", "rss", "amp"]
},
"uploads": {
"subscribers": {
"extensions": [".csv"],
"contentTypes": ["text/csv", "application/csv", "application/octet-stream"]
},
"images": {
"extensions": [".jpg", ".jpeg", ".gif", ".png", ".svg", ".svgz"],
"contentTypes": ["image/jpeg", "image/png", "image/gif", "image/svg+xml"]
},
"icons": {
"extensions": [".png", ".ico"],
"contentTypes": ["image/png", "image/x-icon", "image/vnd.microsoft.icon"]
},
"db": {
"extensions": [".json", ".zip"],
"contentTypes": ["application/octet-stream", "application/json", "application/zip", "application/x-zip-compressed"]
},
"themes": {
"extensions": [".zip"],
"contentTypes": ["application/zip", "application/x-zip-compressed", "application/octet-stream"]
}
},
"storage": {
"active": {
"themes": "local-file-store"
}
},
"times": {
"cannotScheduleAPostBeforeInMinutes": 2,
"publishAPostBySchedulerToleranceInMinutes": 2
},
"theme": {
"timezone": "Etc/UTC",
"icon": {
"type": "default",
"url": "core/shared/favicon.ico"
}
},
"maintenance": {
"enabled": false
}
}